views.py 158 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741
  1. # -*- coding: utf-8 -*-
  2. import copy
  3. import datetime
  4. import json
  5. import os
  6. import re
  7. import time
  8. import requests
  9. from django.conf.urls import url
  10. from django.contrib import auth
  11. from django.contrib.auth import authenticate
  12. from django.contrib.auth import login as auth_login
  13. from django.contrib.auth import logout
  14. from django.contrib.auth.decorators import login_required
  15. from django.contrib.auth.hashers import check_password, make_password
  16. from django.db.models import Q
  17. from django.http import HttpResponse, response
  18. from django.shortcuts import redirect, render
  19. from django.views.generic import ListView
  20. from django.views.generic.base import View
  21. from PIL import Image
  22. from requests.auth import HTTPBasicAuth
  23. from apps.AppInfoManage.models import *
  24. from apps.EquipManage.views import CJSONEncoder, equip_validation
  25. from apps.ReportManage.all_dict import api_code, insect_dict_new, qxz_dict
  26. from apps.SimInfo.views import get_siminfo, get_simsinfo
  27. from yfwlw_pro.settings import get_client_ip
  28. # 微信小程序登录:
  29. class wechat_login(View):
  30. def post(self, request):
  31. user_name = request.POST.get("username")
  32. pass_word = request.POST.get("password")
  33. #校验用户和密码
  34. if MyUser.objects.filter(username=user_name).exists():
  35. account = MyUser.objects.get(username=user_name)
  36. ret = check_password(pass_word, account.password)
  37. if ret:
  38. auth_obj = auth.authenticate(username=user_name, password=pass_word)
  39. if auth_obj:
  40. print("写入登陆状态成功")
  41. auth.login(request, auth_obj)
  42. #将当前登录的用户名写入session
  43. request.session['username'] = user_name
  44. # name1 = request.session["username"]
  45. # print("name",name1)
  46. # name2 = request.session.get("username","")
  47. # print("name2",name2)
  48. data = {"code":"0","username":user_name}
  49. else:
  50. data = {"code":"1","username":""}
  51. else:
  52. data = {"code":"2","username":""}
  53. data = json.dumps(data)
  54. return HttpResponse(data)
  55. # 退出APP登录:
  56. class wechat_logout(View):
  57. def get(self, request):
  58. # username = request.POST.get('username')
  59. del request.session["username"]
  60. data = {"code":"0"}
  61. data = json.dumps(data)
  62. return HttpResponse(data)
  63. #用户设备类型
  64. class wechat_user_equip_list(View):
  65. def post(self,request):
  66. user_name = request.POST.get("username")
  67. # user_name = request.user.username
  68. print("-------------------->>",request.user)
  69. print("username",user_name)
  70. # print("current_user",current_user)
  71. try:
  72. current_user = MyUser.objects.get(username=user_name)
  73. except:
  74. return HttpResponse("0")
  75. equip_type_list = []
  76. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  77. print("普通用户")
  78. user_equip_list = Equip.objects.filter(equip_user=current_user)
  79. for i in user_equip_list:
  80. equip_type_list.append(i.equip_type.type_id)
  81. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  82. print("代理商")
  83. user_equip_list = Equip.objects.filter(equip_agency=current_user.user_agency)
  84. for i in user_equip_list:
  85. equip_type_list.append(i.equip_type.type_id)
  86. # 新增
  87. elif current_user.is_superuser == True or current_user.is_staff == True:
  88. print("管理员")
  89. user_equip_list = Equip_type.objects.all()
  90. for i in user_equip_list:
  91. equip_type_list.append(i.type_id)
  92. else:
  93. return HttpResponse("0")
  94. equip_type_list = list(set(equip_type_list))
  95. data = {'dat':equip_type_list}
  96. data = json.dumps(data)
  97. print(data)
  98. return HttpResponse(data)
  99. # 个人信息:
  100. class wechat_user_info(View):
  101. def get(self, request):
  102. uname = request.GET.get("username")
  103. try:
  104. user_name = MyUser.objects.get(username=uname)
  105. if user_name.is_superuser == 1 and user_name.is_staff == 1:
  106. # 超级管理员
  107. role = 0
  108. elif user_name.is_superuser == 0 and user_name.is_staff == 1:
  109. # 管理员
  110. role = 1
  111. elif user_name.is_superuser == 0 and user_name.is_staff == 0:
  112. # 普通用户
  113. role = 2
  114. except Exception as e:
  115. print(e)
  116. role = 3
  117. data = {"data":role}
  118. data = json.dumps(data)
  119. return HttpResponse(data)
  120. def post(self, request):
  121. req = request.POST.get('req')
  122. name = request.POST.get('username')
  123. print("req",req)
  124. print("name","name")
  125. if req == "info":
  126. user = MyUser.objects.filter(username=name)
  127. print(user)
  128. for x in user:
  129. data = {"username": x.username,
  130. "email": x.email,
  131. "user_phone": x.user_phone,
  132. "user_pro": x.user_pro,
  133. "user_city": x.user_city,
  134. "user_area": x.user_area,
  135. "user_picture":str(x.user_picture)
  136. }
  137. data = json.dumps(data)
  138. print("data:",data)
  139. return HttpResponse(data)
  140. elif req == "change_info":
  141. user = MyUser.objects.get(username=name)
  142. user.user_phone = request.POST.get('phone')
  143. user.user_pro = request.POST.get('province')
  144. user.user_city = request.POST.get('city')
  145. user.user_area = request.POST.get('area')
  146. print("phone:", request.POST.get('phone'))
  147. print("province:", request.POST.get('province'))
  148. print("city:", request.POST.get('city'))
  149. print("area:", request.POST.get('area'))
  150. try:
  151. user.save()
  152. User_Log.objects.create(log_user=request.user.username,
  153. log_ip=request.META['REMOTE_ADDR'], log_desc='修改个人信息')
  154. data = "0"
  155. return HttpResponse(data)
  156. except:
  157. data = "1"
  158. return HttpResponse(data)
  159. # 修改头像:
  160. elif req == "change_photo":
  161. user = MyUser.objects.get(username=name)
  162. user_photo = request.FILES.get('file')
  163. print("APP修改用户头像:", user_photo)
  164. user_photo_dir = 'user_photo/'
  165. # 判断如果路径不存在,即创建路径
  166. if os.path.exists(user_photo_dir) == False:
  167. os.makedirs(user_photo_dir)
  168. img = Image.open(user_photo)
  169. img.save(user_photo_dir + name+".png")
  170. new_photo = user_photo_dir + name+".png"
  171. # 数据库关联设备,并在照片的表中存入路径:
  172. user.user_picture = new_photo
  173. user.save()
  174. data = "0"
  175. return HttpResponse(data)
  176. # 设备管理列表:
  177. class wechat_equip_list(View):
  178. def post(self, request):
  179. types = int(request.POST.get('type'))
  180. print("types:", types)
  181. page = int(request.POST.get('page'))
  182. print("page:", page)
  183. current_user = request.POST.get('username')
  184. print("current_user:", current_user)
  185. current_user = MyUser.objects.get(username=current_user)
  186. equip_id = request.POST.get("equip_id")
  187. #杀虫灯
  188. if types == 2:
  189. equips = SCDstatus
  190. #测报灯
  191. elif types == 3:
  192. equips = CBDstatus
  193. #孢子仪
  194. elif types == 7:
  195. equips = BZYstatus
  196. #气象站
  197. elif types == 5:
  198. equips = QXZstatus_New
  199. #依科曼性诱设备
  200. elif types == 8:
  201. equips = Trapstatus
  202. #智能性诱
  203. elif types == 4:
  204. equips = YBQstatus
  205. # 糖醋测报
  206. elif types == 9:
  207. equips = TCCBstatus
  208. # 测报RTU
  209. elif types == 10:
  210. equips = RTUstatus
  211. else:
  212. return HttpResponse("参数不对")
  213. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  214. print("---不是管理员")
  215. equip_list = Equip.objects.filter(equip_user=current_user,equip_type__type_id=types)
  216. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  217. print("---经销商")
  218. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency,equip_type__type_id=types)
  219. else:
  220. print("---管理员")
  221. equip_list = Equip.objects.filter(equip_type__type_id=types)
  222. if equip_id:
  223. equip_list = equip_list.filter(equip_id__contains=equip_id)
  224. nums = len(equip_list)
  225. equip_list = equip_list[(10*(page-1)):(page*10)]
  226. data = {'nums': nums, 'dat': ""}
  227. dat = []
  228. cbd_img = 0
  229. sex_type = ""
  230. iccid = ""
  231. for i in equip_list:
  232. equip_location = i.equip_location
  233. if types == 3:
  234. cbd_photo = CBDphoto.objects.filter(equip_id=i.equip_id)
  235. if cbd_photo.exists():
  236. cbd_img = 1
  237. if types == 5:
  238. qxz_status = QXZ_Base_Info.objects.filter(equip_id=i.equip_id)
  239. if qxz_status:
  240. for y in qxz_status:
  241. iccid = y.iccid
  242. sta1 = equips.objects.filter(equip_id=i.equip_id).select_related()
  243. for x in sta1:
  244. try:
  245. if types == 2:
  246. iccid = eval(x.scd_status)["iccid"]
  247. elif types == 3:
  248. iccid = eval(x.cbd_status)["iccid"]
  249. elif types == 7:
  250. iccid = eval(x.bzy_status)["iccid"]
  251. elif types == 4:
  252. iccid = eval(x.ybq_status)["iccid"]
  253. #性诱类型
  254. sex_type = x.sex_type
  255. except:
  256. iccid = ''
  257. try:
  258. sta2 = {"equip_id": x.equip_id.equip_id,
  259. "equip_user": x.equip_id.equip_user.username,
  260. "equip_name": x.equip_id.equip_name,
  261. "equip_type": types,
  262. "equip_desc":x.equip_id.equip_desc,
  263. "equip_add_time":x.upl_time,
  264. "cbd_img":cbd_img,
  265. "is_online":x.is_online,
  266. "equip_location":equip_location,
  267. "iccid":iccid,
  268. "sex_type":sex_type}
  269. except AttributeError:
  270. sta2 = {"equip_id": x.equip_id.equip_id,
  271. "equip_user": "",
  272. "equip_name": x.equip_id.equip_name,
  273. "equip_type": types,
  274. "equip_desc":x.equip_id.equip_desc,
  275. "equip_add_time":x.upl_time,
  276. "cbd_img":cbd_img,
  277. "is_online":x.is_online,
  278. "equip_location":equip_location,
  279. "iccid":"",
  280. "sex_type":""}
  281. dat.append(sta2)
  282. User_Log.objects.create(log_user=request.user.username,
  283. log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表')
  284. data['dat'] = dat
  285. data = json.dumps(data, cls=CJSONEncoder)
  286. return HttpResponse(data)
  287. #设备修改名称,修改位置
  288. class wechat_equip_set(View):
  289. def post (self,request):
  290. equip_id = request.POST.get("equip_id")
  291. ret = request.POST.get("ret")
  292. try:
  293. equip_list = Equip.objects.get(equip_id=equip_id)
  294. if ret == "name":
  295. name = request.POST.get("name")
  296. equip_list.equip_name = name
  297. equip_list.save()
  298. elif ret == "site":
  299. site = request.POST.get("site")
  300. equip_list.equip_location = site
  301. equip_list.save()
  302. data = {"code":"0"}
  303. except Exception as e:
  304. print("e")
  305. data = {"code":"1"}
  306. data = json.dumps(data)
  307. return HttpResponse(data)
  308. # #设备搜索接口(弃用)
  309. # class wechat_equip_search(View):
  310. # def post(self, request):
  311. # equip_id = request.POST.get('equip_id')
  312. # types = int(request.POST.get('type'))
  313. # current_user = request.POST.get('username')
  314. # print("current_user:", current_user)
  315. # current_user = MyUser.objects.get(username=current_user)
  316. # print("equip_id:", equip_id)
  317. # equip_list = Equip.objects.filter(equip_id__contains=equip_id,equip_type__type_id=types,equip_user=current_user)
  318. # data = {'dat': ""}
  319. # dat = []
  320. # for i in equip_list:
  321. # cbd_photo = CBDphoto.objects.filter(equip_id=i.equip_id)
  322. # if cbd_photo.exists():
  323. # cbd_img = 1
  324. # else:
  325. # cbd_img = 0
  326. # sta1 = Equip.objects.filter(equip_id=i.equip_id).select_related()
  327. # for x in sta1:
  328. # try:
  329. # sta2 = {"equip_id": x.equip_id,
  330. # "equip_user": x.equip_user.username,
  331. # "equip_name": x.equip_name,
  332. # "equip_type": x.equip_type.type_id,
  333. # "equip_desc":x.equip_desc,
  334. # "equip_add_time":x.equip_add_time,
  335. # "cbd_img":cbd_img}
  336. # except AttributeError:
  337. # sta2 = {"equip_id": x.equip_id,
  338. # "equip_user": "",
  339. # "equip_name": x.equip_name,
  340. # "equip_type": x.equip_type.type_id,
  341. # "equip_desc":x.equip_desc,
  342. # "equip_add_time":x.equip_add_time,
  343. # "cbd_img":cbd_img}
  344. # dat.append(sta2)
  345. # User_Log.objects.create(log_user=request.user.username,
  346. # log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表')
  347. # data['dat'] = dat
  348. # data = json.dumps(data, cls=CJSONEncoder)
  349. # return HttpResponse(data)
  350. # 设备管理详情:
  351. class wechat_equip_detail(View):
  352. def post(self, request):
  353. etype = request.POST.get('etype')
  354. print("etype:", etype)
  355. equip_id = request.POST.get('equip_id')
  356. print("equip_id:", equip_id)
  357. if etype == "scd":
  358. x = SCDstatus.objects.get(equip_id__equip_id=equip_id)
  359. scd = eval(x.scd_status)
  360. if x.equip_id.equip_user:
  361. user_name = x.equip_id.equip_user.username
  362. else:
  363. user_name = ""
  364. print(user_name)
  365. sta2 = {"scd_status": scd, "ds": x.ds, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"user_name":user_name,
  366. "equip_name": x.equip_id.equip_name,"equip_location":x.equip_location,
  367. "is_online": x.is_online, "off_time": x.off_time.strftime('%Y-%m-%d %H:%M:%S')}
  368. elif etype == "cbd":
  369. x = CBDstatus.objects.get(equip_id=equip_id)
  370. if x.equip_id.equip_user:
  371. user_name = x.equip_id.equip_user.username
  372. else:
  373. user_name = ""
  374. print(user_name)
  375. cbd = eval(x.cbd_status)
  376. sta2 = {"cbd_status": cbd, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"equip_location":x.equip_location,
  377. "paramconf": x.paramconf, "equip_name": x.equip_id.equip_name,"user_name":user_name,
  378. "is_online": x.is_online, "off_time": x.off_time.strftime('%Y-%m-%d %H:%M:%S')}
  379. elif etype == "qxz":
  380. qxz_list = QXZstatus_New.objects.get(equip_id=equip_id)
  381. switch = QXZswitchstatus.objects.filter(equip_id=equip_id)
  382. if switch:
  383. switch = 1
  384. else:
  385. switch = 0
  386. data = [qxz_list.e1,qxz_list.e2,qxz_list.e3,qxz_list.e4,qxz_list.e5,qxz_list.e6,qxz_list.e7,qxz_list.e8,qxz_list.e9,qxz_list.e10,
  387. qxz_list.e11,qxz_list.e12,qxz_list.e13,qxz_list.e14,
  388. qxz_list.e15,qxz_list.e16,qxz_list.e17,qxz_list.e18,
  389. qxz_list.e19,qxz_list.e20,qxz_list.e21,qxz_list.e22,
  390. qxz_list.e23,qxz_list.e24,qxz_list.e25,qxz_list.e26,
  391. qxz_list.e27,qxz_list.e28,qxz_list.e29,qxz_list.e30]
  392. test = [i for i in data if i != '']
  393. sta = []
  394. try:
  395. for i in test:
  396. qxz = i.split("#")
  397. qw = qxz_dict[qxz[1]]
  398. qxz_num = [qxz[2],qxz[0],qw]
  399. sta.append(qxz_num)
  400. except Exception as e :
  401. print(e)
  402. if qxz_list.equip_id.equip_user:
  403. user_name = qxz_list.equip_id.equip_user.username
  404. else:
  405. user_name = ""
  406. print(user_name)
  407. sta2 = {"data":sta,"qxz_picture":qxz_list.qxz_picture.name,"user_name":user_name,
  408. "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"switch":switch}
  409. elif etype == "bzy":
  410. x = BZYstatus.objects.get(equip_id=equip_id)
  411. if x.equip_id.equip_user:
  412. user_name = x.equip_id.equip_user.username
  413. else:
  414. user_name = ""
  415. print(user_name)
  416. bzy = eval(x.bzy_status)
  417. sta2 = {"bzy_status": bzy, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"user_name":user_name,
  418. "equip_name": x.equip_id.equip_name,
  419. "glass": x.glass, "liquid":x.liquid, "is_online": x.is_online,
  420. "off_time": x.off_time.strftime('%Y-%m-%d %H:%M:%S')}
  421. data = json.dumps(sta2)
  422. return HttpResponse(data)
  423. #设备时间筛选
  424. class equip_time_list(View):
  425. def post(self,request):
  426. equip_id = request.POST.get("equip_id")
  427. page = int(request.POST.get("page"))
  428. req = request.POST.get("req")
  429. start_time = request.POST.get('start_time')
  430. end_time = request.POST.get('end_time')
  431. now_time = datetime.datetime.now()
  432. print("当前日期为:",now_time)
  433. print("当前月为:",now_time.month)
  434. print("当前月为:",now_time.year)
  435. if req == "scd":
  436. equips = SCDdata
  437. elif req == "cbd":
  438. equips = CBDdata
  439. elif req == "bzy":
  440. equips = BZYdata
  441. elif req == "qxz":
  442. equips = QXZdata_New
  443. elif req == "xy":
  444. equips = Trapdata
  445. if start_time:
  446. begindate = re.findall(r"\d+\.?\d*", start_time)
  447. enddate = re.findall(r"\d+\.?\d*", end_time)
  448. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  449. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  450. print("start_date:", start_date)
  451. print("end_date:", end_date)
  452. time_list = equips.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date)).values()
  453. else:
  454. time_list = equips.objects.filter(equip_id=equip_id,upl_time__month=now_time.month,upl_time__year=now_time.year).values()
  455. date = []
  456. for i in time_list:
  457. date.append({"time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S'),"id":i["id"]})
  458. nums = len(date)
  459. dat = date[(10*(page-1)):(page*10)]
  460. data = {'dat': dat, 'nums': nums}
  461. data = json.dumps(data)
  462. return HttpResponse(data)
  463. # #杀虫灯报设备详情(弃用)
  464. # class scd_equip_details(View):
  465. # def post(self,request):
  466. # equip_id = request.POST.get("equip_id")
  467. # scd_list = SCDstatus.objects.filter(equip_id=equip_id).first()
  468. # try:
  469. # scd_data = eval(scd_list.scd_status)
  470. # imei = scd_data["imei"]
  471. # upl_time = scd_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  472. # dver = scd_data["dver"]
  473. # csq = scd_data["csq"]
  474. # ws = scd_data["ws"]
  475. # if ws == 0:
  476. # ws = "待机"
  477. # elif ws == 1:
  478. # ws = "工作"
  479. # tt = scd_data["tt"]
  480. # lps = scd_data['lps']
  481. # if lps == 0:
  482. # lps = "正常"
  483. # elif lps == 1:
  484. # lps = "保护"
  485. # else:
  486. # lps = ''
  487. # tbs = scd_data['tbs']
  488. # if tbs == 0:
  489. # tbs = "正常"
  490. # elif tbs == 1:
  491. # tbs = "保护"
  492. # else:
  493. # tbs = ''
  494. # rps= scd_data['rps']
  495. # if rps == 0:
  496. # rps = "正常"
  497. # elif rps == 1:
  498. # rps = "保护"
  499. # else:
  500. # rps = ''
  501. # tps = scd_data['tps']
  502. # if tps == 0:
  503. # tps = "正常"
  504. # elif tps == 1:
  505. # tps = "保护"
  506. # else:
  507. # tps = ''
  508. # dps = scd_data['dps']
  509. # if dps == 0:
  510. # dps = "正常"
  511. # elif dps == 1:
  512. # dps = "保护"
  513. # else:
  514. # dps = ''
  515. # data = {"imei":imei,"time":upl_time,"dver":dver,"csp":csq,
  516. # "ds":scd_list.ds,"ws":ws,"tt":tt,"lps":lps,"tbs":tbs,"rps":rps,"tps":tps,"dps":dps}
  517. # except Exception as e:
  518. # print("报错信息为:",e)
  519. # data = {"code":"1"}
  520. # data = json.dumps(data)
  521. # return HttpResponse(data)
  522. # #测报灯配置接口
  523. # class scd_equip_paramconf(View):
  524. # def post(self,request):
  525. # equip_id = request.POST.get('id')
  526. # print("equip_id:", equip_id)
  527. # # 读取当前设备的参数配置信息:
  528. # sta1 = CBDstatus.objects.filter(equip_id=equip_id)
  529. # for x in sta1:
  530. # sta2 = {"paramconf":eval(x.paramconf)}
  531. # data = json.dumps(sta2, cls=CJSONEncoder)
  532. # print("配置信息的data:", data)
  533. # return HttpResponse(data)
  534. #杀虫灯报表管理详情
  535. class scd_equip_report(View):
  536. def post(self,request):
  537. equip_id = request.POST.get("equip_id")
  538. req = request.POST.get("req")
  539. print("req",req)
  540. scd_date = SCDdata.objects.filter(equip_id=equip_id)
  541. if req == "new_time":
  542. scd_list = scd_date[:1]
  543. elif req == "time":
  544. scd_id = request.POST.get("id")
  545. scd_list = scd_date.filter(id=scd_id)
  546. elif req == "times":
  547. start_time = request.POST.get('start_time')
  548. end_time = request.POST.get('end_time')
  549. scd_list = scd_date.filter(upl_time__range=(start_time,end_time))
  550. else:
  551. return HttpResponse("参数错误")
  552. scd_status = SCDstatus.objects.filter(equip_id=equip_id)
  553. data = [] #设备数据信息
  554. date = [] # 设备状态信息
  555. for x in scd_status:
  556. print(x.scd_status)
  557. date_status = eval(x.scd_status)
  558. try:
  559. clt = date_status["clt"]
  560. except:
  561. clt = ""
  562. date.append({
  563. "iccid": date_status["iccid"],
  564. "dver": date_status["dver"],
  565. "csq": date_status["csq"],
  566. "clt":clt,
  567. "equip_location":x.equip_location,
  568. "dattim":date_status["dattim"],
  569. "lps":date_status["lps"],
  570. })
  571. try:
  572. for i in scd_list:
  573. scd_data = eval(i.scd_data)
  574. print(scd_data)
  575. imei = scd_data["imei"]
  576. tt = scd_data["tt"] #定时时长
  577. upl_time = i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  578. ds = scd_data["ds"] #设备开关
  579. if ds == 0:
  580. ds = "关机"
  581. else:
  582. ds = "开机"
  583. ws = scd_data["ws"] #工作状态
  584. if ws == 0:
  585. ws = "待机"
  586. elif ws == 1:
  587. ws = "工作"
  588. else:
  589. ws = "充电"
  590. tbs = scd_data["tbs"] #灯管状态
  591. if tbs == 0:
  592. tbs = "正常"
  593. else :
  594. tbs = "保护"
  595. lps = scd_data["lps"] #光控
  596. if lps == 0:
  597. lps = "正常"
  598. else:
  599. lps = "保护"
  600. rps = scd_data["rps"] #雨控
  601. if rps == 0:
  602. rps = "正常"
  603. else:
  604. rps = "保护"
  605. tps = scd_data['tps'] #温控
  606. if tps == 0:
  607. tps = "正常"
  608. else:
  609. tps = "保护"
  610. dps = scd_data['dps'] #倾倒
  611. if dps == 0:
  612. dps = "正常"
  613. else:
  614. dps = "保护"
  615. cv = scd_data["cv"] #充电电压
  616. bv = scd_data["bv"] #电池电压
  617. at = scd_data["at"] #环境温度
  618. ah = scd_data["ah"] #环境湿度
  619. ct = scd_data["ct"] #电击次数
  620. lng = scd_data["lng"]
  621. lat = scd_data["lat"]
  622. data.append({"imei":imei,"tt":tt,"time":upl_time,"ds":ds,"ws":ws,"tbs":tbs,
  623. "lps":lps,"rps":rps,"tps":tps,"dps":dps,"cv":cv,"bv":bv,
  624. "at":at,"ah":ah,"ct":ct,"lng":lng,"lat":lat,})
  625. except:
  626. data = ""
  627. data = {"data":data,"date":date}
  628. data = json.dumps(data)
  629. print("data",data)
  630. return HttpResponse(data)
  631. #杀虫灯折线图(24小时数据)
  632. class scd_line_chart(View):
  633. def post(self, request):
  634. equip_id = request.POST.get('equip_id')
  635. start_time = request.POST.get('start_time')
  636. end_time = request.POST.get('end_time')
  637. start_date = datetime.datetime.now() - datetime.timedelta(days=2)
  638. end_date = datetime.datetime.now()
  639. if start_time: # 时间筛选
  640. begindate = re.findall(r"\d+\.?\d*", start_time)
  641. enddate = re.findall(r"\d+\.?\d*", end_time)
  642. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  643. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  644. scd_list = SCDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date, end_date)).values()
  645. data = []
  646. for i in scd_list:
  647. scd_list = eval(i["scd_data"])
  648. data.append({"cv":scd_list["cv"],"bv":scd_list["bv"],"at":scd_list["at"],"ah":scd_list["ah"],"ct":scd_list["ct"],
  649. "time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S')})
  650. data = {"data":data}
  651. data = json.dumps(data)
  652. print("data",data)
  653. return HttpResponse(data)
  654. # #杀虫灯击杀折线图
  655. # class scd_ct_chart(View):
  656. # def post (self,request):
  657. # equip_id = request.POST.get('equip_id')
  658. # end_time = datetime.datetime.now()
  659. # start_date = end_time - datetime.timedelta(days=2)
  660. # scd_list = SCDdata.objects.filter(equip_id=equip_id)
  661. # data = []
  662. # # if ret == "day":
  663. # # start_date = datetime.datetime.now() - datetime.timedelta(days=2)
  664. # # scd_list = scd_list.filter(upl_time__range=(start_date, end_time)).values()
  665. # # elif ret == "one":
  666. # # start_date = datetime.datetime.now() - datetime.timedelta(days=1)
  667. # # scd_list = scd_list.filter(upl_time__range=(start_date, end_time)).values()
  668. # # elif ret == "month":
  669. # # scd_list = scd_list.filter(upl_time__month=end_time.month,upl_time__year=end_time.year).values()
  670. # # for i in scd_list:
  671. # # scd_list = eval(i["scd_data"])
  672. # # data.append({"ct":scd_list["ct"],"time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S')})
  673. # data = json.dumps(data)
  674. # print("data",data)
  675. # return HttpResponse(data)
  676. #杀虫灯查询最新数据,最新状态
  677. class scd_wechat_mqtt_read(View):
  678. def post(self,request):
  679. uid = request.POST.get('username')
  680. print("uid",uid)
  681. imei = request.POST.get('imei')
  682. print("imei",imei)
  683. print("下发查询")
  684. kind = request.POST.get("kind")
  685. if kind == "status" or kind == "data" or "paramconf":
  686. print("imei",imei)
  687. payload = {"cmd": "read", "ext": kind}
  688. topic = "/yfkj/scd/sub/"+imei
  689. cmd = {"topic": topic, "payload": json.dumps(
  690. payload), 'qos': 1}
  691. print(json.dumps(payload, indent=1))
  692. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  693. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  694. print("res.status_code:", type(res.status_code))
  695. if res.status_code == 200:
  696. data = api_code[0]
  697. data = json.dumps(data)
  698. print(data)
  699. return HttpResponse(data)
  700. else:
  701. data = api_code[4]
  702. data = json.dumps(data)
  703. print(data)
  704. return HttpResponse(data)
  705. else:
  706. data = api_code[1]
  707. data = json.dumps(data)
  708. print(data)
  709. return HttpResponse(data)
  710. #杀虫灯下发开关
  711. class scd_wechat_mqtt_switch(View):
  712. def post(self,request):
  713. uid = request.POST.get('username')
  714. print("uid",uid)
  715. imei = request.POST.get('imei')
  716. try:
  717. ds = int(request.POST.get('ds'))
  718. except Exception as e:
  719. print(e)
  720. data = api_code[1]
  721. if ds == 0 or ds == 1: # 控制设备开关
  722. print("下发开关!!!")
  723. payload = {"cmd": "power", "ext": {"ds": ds}}
  724. else:
  725. data = api_code[3]
  726. data = json.dumps(data)
  727. print(data)
  728. return HttpResponse(data)
  729. topic = "/yfkj/scd/sub/"+imei #[1:-1]
  730. cmd = {"topic": topic, "payload": json.dumps(
  731. payload), 'qos': 1}
  732. print(json.dumps(payload, indent=1))
  733. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  734. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  735. print("res.status_code:", type(res.status_code))
  736. print("res.status_code:", res.status_code)
  737. if res.status_code == 200:
  738. data = api_code[0]
  739. data = json.dumps(data)
  740. print(data)
  741. return HttpResponse(data)
  742. else:
  743. data = api_code[4]
  744. data = json.dumps(data)
  745. print(data)
  746. return HttpResponse(data)
  747. #杀虫灯下发控制
  748. class scd_wechat_mqtt_set(View):
  749. def post(self,request):
  750. uid = request.POST.get('username')
  751. imei = request.POST.get('imei')
  752. # 用户验证
  753. topic = "/yfkj/scd/sub/"+imei
  754. try:
  755. ts = request.POST.get('ts')
  756. except Exception as e:
  757. print(e)
  758. ts = ""
  759. # ts = timeSwitch 0光控 1时控 startBar 开始时间 stopBar 结束时间
  760. print("ts",ts)
  761. if ts == '0': # 光控
  762. try:
  763. hours = int(request.POST.get('hours'))
  764. except:
  765. data = api_code[1]
  766. data = json.dumps(data)
  767. print(data)
  768. return HttpResponse(data)
  769. if 0 <= hours < 24:
  770. payload = {"cmd": "timer", "ext": {"tt": hours}}
  771. cmd = {"topic": topic, "payload": json.dumps(
  772. payload), 'qos': 1}
  773. print(json.dumps(payload, indent=1))
  774. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  775. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  776. print("res.status_code:", type(res.status_code))
  777. if res.status_code == 200:
  778. data = api_code[0]
  779. data = json.dumps(data)
  780. print(data)
  781. return HttpResponse(data)
  782. else:
  783. data = api_code[4]
  784. data = json.dumps(data)
  785. print(data)
  786. return HttpResponse(data)
  787. else:
  788. data = api_code[3]
  789. data = json.dumps(data)
  790. print(data)
  791. return HttpResponse(data)
  792. elif ts == '1': # 时控
  793. try:
  794. begin = int(request.POST.get('begin'))
  795. end = int(request.POST.get('end'))
  796. except:
  797. data = api_code[1]
  798. data = json.dumps(data)
  799. return HttpResponse(data)
  800. if 0 <= begin <= 24 and 0 <= end <= 24:
  801. payload = {"cmd": "timeconf","ext": {"timeSwitch": int(ts),"startBar": begin,"stopBar": end}}
  802. cmd = {"topic": topic, "payload": json.dumps(
  803. payload), 'qos': 1}
  804. print(json.dumps(payload, indent=1))
  805. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  806. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  807. if res.status_code == 200:
  808. data = api_code[0]
  809. data = json.dumps(data)
  810. print(data)
  811. return HttpResponse(data)
  812. else:
  813. data = api_code[4]
  814. data = json.dumps(data)
  815. print(data)
  816. return HttpResponse(data)
  817. else:
  818. data = api_code[3]
  819. data = json.dumps(data)
  820. return HttpResponse(data)
  821. elif ts == "datt":
  822. print("下发上传时间间隔")
  823. dattim = int(request.POST.get('dattim'))
  824. payload = {"cmd":"dattim","ext":{"dattim":dattim}}
  825. cmd = {"topic": topic, "payload": json.dumps(
  826. payload), 'qos': 1}
  827. print(json.dumps(payload, indent=1))
  828. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  829. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  830. # else:
  831. # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  832. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  833. if res.status_code == 200:
  834. data = api_code[0]
  835. data = json.dumps(data)
  836. print(data)
  837. return HttpResponse(data)
  838. else:
  839. data = api_code[4]
  840. data = json.dumps(data)
  841. print(data)
  842. return HttpResponse(data)
  843. else:
  844. data = api_code[3]
  845. data = json.dumps(data)
  846. print(data)
  847. return HttpResponse(data)
  848. #测报灯配置接口
  849. class cbd_equip_paramconf(View):
  850. def post(self,request):
  851. equip_id = request.POST.get('id')
  852. print("equip_id:", equip_id)
  853. sta2 = 0
  854. # 读取当前设备的参数配置信息:
  855. sta1 = CBDstatus.objects.filter(equip_id=equip_id)
  856. for x in sta1:
  857. if x.paramconf:
  858. sta2 = {"is_online":x.is_online,"paramconf":eval(x.paramconf)}
  859. data = json.dumps(sta2, cls=CJSONEncoder)
  860. print("配置信息的data:", data)
  861. return HttpResponse(data)
  862. # #测报灯设备详情(弃用)
  863. # class cbd_equip_details(View):
  864. # def post(self,request):
  865. # equip_id = request.POST.get("equip_id")
  866. # print(equip_id)
  867. # cbd_list = CBDstatus.objects.filter(equip_id=equip_id).first()
  868. # print(cbd_list)
  869. # try:
  870. # cbd_data = eval(cbd_list.cbd_status)
  871. # imei = cbd_data["imei"]
  872. # upl_time = cbd_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  873. # dver = cbd_data["dver"]
  874. # csq = cbd_data["csq"]
  875. # iccid = cbd_data["iccid"]
  876. # is_online = cbd_list.is_online
  877. # if is_online == 0 :
  878. # is_online = "离线"
  879. # else:
  880. # is_online = "在线"
  881. # rps= cbd_data['rps']
  882. # if rps == 0:
  883. # rps = "正常"
  884. # else:
  885. # rps = "雨控"
  886. # lps = cbd_data['lps']
  887. # if lps == 0:
  888. # lps = "正常"
  889. # else:
  890. # lps = "光控"
  891. # tps = cbd_data['tps']
  892. # if tps == 0:
  893. # tps = "正常"
  894. # else:
  895. # tps = "温控"
  896. # gs = cbd_data["gs"]
  897. # if gs == 0:
  898. # gs = "排水"
  899. # else:
  900. # gs = "落虫"
  901. # upds = cbd_data['upds']
  902. # if upds == 0:
  903. # upds = "关闭"
  904. # else:
  905. # tcs = "打开"
  906. # dnds = cbd_data["dnds"]
  907. # if dnds == 0:
  908. # dnds = "关闭"
  909. # else:
  910. # dnds = "打开"
  911. # hs = cbd_data["hs"]
  912. # if hs == 0:
  913. # hs = "正常"
  914. # else:
  915. # hs = "加热"
  916. # ts = cbd_data['ts']
  917. # if ts == 0:
  918. # ts = "光控"
  919. # else:
  920. # ts = "时控"
  921. # data = {"imei":imei,"time":upl_time,"dver":dver,"csp":csq,"iccid":iccid,
  922. # "rps":rps,"lps":lps,"tps":tps,"gs":gs,"upds":upds,"dnds":dnds,
  923. # "hs":hs,"ts":ts,"is_online":is_online}
  924. # except Exception as e:
  925. # print("报错信息为:",e)
  926. # data = {"code":"1"}
  927. # data = json.dumps(data)
  928. # return HttpResponse(data)
  929. #测报灯报表管理详情页面
  930. class cbd_equip_report(View):
  931. def post(self,request):
  932. equip_id = request.POST.get("equip_id")
  933. req = request.POST.get("req")
  934. cbd_list = CBDdata.objects.filter(equip_id=equip_id)
  935. if req == "new_time":
  936. cbd_list = cbd_list[:1]
  937. elif req == "time":
  938. cbd_id = request.POST.get("id")
  939. cbd_lsit = cbd_list.filter(id=cbd_id)
  940. elif req == "times":
  941. start_time = request.POST.get('start_time')
  942. end_time = request.POST.get('end_time')
  943. begindate = re.findall(r"\d+\.?\d*", start_time)
  944. enddate = re.findall(r"\d+\.?\d*", end_time)
  945. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  946. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  947. print("start_date:", start_date)
  948. print("end_date:", end_date)
  949. cbd_list = cbd_list.filter(upl_time__range=(start_date,end_date))
  950. data = [] #设备数据信息
  951. date = [] # 设备状态信息
  952. cbd_status = CBDstatus.objects.filter(equip_id=equip_id)
  953. for x in cbd_status:
  954. if x.paramconf:
  955. data_paramconf = eval(x.paramconf)
  956. tph = data_paramconf["tph"] # 高温保护值
  957. tpl = data_paramconf["tpl"] # 低温保护值
  958. else:
  959. tph = ""
  960. tpl = ""
  961. data_status = eval(x.cbd_status)
  962. try:
  963. ws = data_status["ws"]
  964. except:
  965. ws = ""
  966. try:
  967. lamp = data_status["lamp"]
  968. except:
  969. lamp = ""
  970. print("ws",ws)
  971. date.append(
  972. {
  973. "ws":ws,
  974. "gs":data_status["gs"],
  975. "hs":data_status["hs"],
  976. "csq":data_status["csq"],
  977. "dver":data_status["dver"],
  978. "lamp":lamp,
  979. "upds":data_status["upds"],
  980. "dnds":data_status["dnds"],
  981. "tph":tph,
  982. "tpl":tpl,
  983. "equip_location":x.equip_location
  984. }
  985. )
  986. try:
  987. for i in cbd_list:
  988. cbd_data = eval(i.cbd_data)
  989. imei = cbd_data["imei"]
  990. upl_time = i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  991. at = cbd_data["at"]
  992. ah = cbd_data["ah"]
  993. hrt = cbd_data["hrt"]
  994. rps= cbd_data['rps']
  995. lng = cbd_data["lng"]
  996. lat = cbd_data["lat"]
  997. vbat = cbd_data["vbat"]
  998. # lamp = cbd_data["lamp"]
  999. if rps == 0:
  1000. rps = "正常"
  1001. else:
  1002. rps = "雨控"
  1003. lps = cbd_data['lps']
  1004. if lps == 0:
  1005. lps = "正常"
  1006. else:
  1007. lps = "光控"
  1008. tps = cbd_data['tps']
  1009. if tps == 0:
  1010. tps = "正常"
  1011. else:
  1012. tps = "温控"
  1013. data.append({"imei":imei,"time":upl_time,"at":at,"ah":ah,"vbat":vbat,
  1014. "rps":rps,"lps":lps,"tps":tps,"hrt":hrt,"lng":lng,"lat":lat})
  1015. except:
  1016. data = []
  1017. data = {"data":data,"date":date}
  1018. data = json.dumps(data)
  1019. return HttpResponse(data)
  1020. #测报灯折线图
  1021. class cbd_line_chart(View):
  1022. def post(self,request):
  1023. equip_id = request.POST.get("equip_id")
  1024. start_time = request.POST.get("start_time")
  1025. end_time = request.POST.get("end_time")
  1026. start_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
  1027. end_date = (datetime.datetime.now() + datetime.timedelta(days=1) ).strftime('%Y-%m-%d')
  1028. print("start_date",start_date)
  1029. print("end_date",end_date)
  1030. cbd_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date))
  1031. print(len(cbd_list))
  1032. if start_time:
  1033. cbd_list = CBDdata.objects.filter(equip_id=equip_id,upl_time__range=(start_time,end_time))
  1034. data = []
  1035. for i in cbd_list:
  1036. cbd_data = eval(i.cbd_data)
  1037. at = cbd_data["at"]
  1038. ah = cbd_data["ah"]
  1039. data.append({"at":at,"ah":ah,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')})
  1040. data = json.dumps(data)
  1041. print("data",data)
  1042. return HttpResponse(data)
  1043. #测报灯删除图片(查看图片列表)
  1044. class cbd_photo_list(View):
  1045. def get(self, request):
  1046. equip_id = request.GET.get("equip_id")
  1047. print("equip_id",equip_id)
  1048. page = int(request.GET.get("page"))
  1049. cbd_photo = CBDphoto.objects.filter(equip_id=equip_id).values()
  1050. data =[]
  1051. for i in cbd_photo:
  1052. data.append({"addr":i['addr'],"describe":i["describe"],"upl_time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S')})
  1053. num = cbd_photo.count()
  1054. dat = data[(10*(page-1)):(page*10)]
  1055. data = {'dat': dat, 'num': num}
  1056. data = json.dumps(data)
  1057. print("data",data)
  1058. return HttpResponse(data)
  1059. def post(self,request):
  1060. equip_id = request.POST.get("equip_id")
  1061. photo = request.POST.get("photo")
  1062. if os.path.exists(photo) == True: #删除图片路经
  1063. os.remove(photo)
  1064. try:
  1065. CBDphoto.objects.filter(addr=photo,equip_id=equip_id).delete()
  1066. data = 1
  1067. except Exception as e:
  1068. print(e)
  1069. data = 0
  1070. else:
  1071. try:
  1072. CBDphoto.objects.filter(addr=photo,equip_id=equip_id).delete()
  1073. data = 1
  1074. except Exception as e:
  1075. print(e)
  1076. data = 0
  1077. return HttpResponse(data)
  1078. #判断测报灯是否具有害虫识别功能
  1079. class cbd_pest_img_discern(View):
  1080. def get (self,request):
  1081. equip_id = request.GET.get("equip_id")
  1082. cbd_pest = RecentCBDdata.objects.get(equip_id=equip_id)
  1083. data = {"disc":cbd_pest.disc,"equip_id":cbd_pest.equip_id.equip_id}
  1084. data = json.dumps(data)
  1085. return HttpResponse(data)
  1086. #测报灯添加图片描述信息
  1087. class cbd_add_photo_describe(View):
  1088. def post(self,request):
  1089. req = request.POST.get("req")
  1090. user_name = request.POST.get("username")
  1091. # user_name = 'admin'
  1092. current_user = MyUser.objects.get(username=user_name)
  1093. # 请求害虫种类列表:
  1094. if req == "pest_list":
  1095. pest_kinds = CBDpest.objects.filter(user=current_user)
  1096. nums = len(pest_kinds)
  1097. dat = [{"pest_name": x.pest_name} for x in pest_kinds]
  1098. data = {"num":nums,"data":dat}
  1099. # 请求图片描述:
  1100. elif req == "photo_desc":
  1101. img_name = request.POST.get('addr')
  1102. descs = CBDphoto_desc.objects.filter(photo_id=CBDphoto.objects.get(addr=img_name),desc_user=current_user)
  1103. data = [{"crop_name": x.crop_name,
  1104. "pest_case": x.pest_case,
  1105. "pest_name": x.pest_name.pest_name,
  1106. "pest_num":x.pest_num} for x in descs]
  1107. # 增加害虫种类:
  1108. elif req == "add_pest":
  1109. pest = request.POST.get('pest')
  1110. print("pest:",pest)
  1111. # 如果该用户下的该害虫名称已经存在!
  1112. if CBDpest.objects.filter(user=current_user,pest_name=pest).exists():
  1113. data = '1'
  1114. try:
  1115. CBDpest.objects.create(user=current_user,pest_name=pest)
  1116. pest_kinds = CBDpest.objects.filter(user=current_user)
  1117. data = [{"pest_name": x.pest_name,} for x in pest_kinds]
  1118. except:
  1119. data = '2'
  1120. # 删除害虫种类:
  1121. elif req == "del_pest":
  1122. pests = request.POST.get('pest')
  1123. CBDpest.objects.filter(user=current_user,pest_name=pests).delete()
  1124. pest_kinds = CBDpest.objects.filter(user=current_user)
  1125. data = [{"pest_name": x.pest_name,} for x in pest_kinds]
  1126. data = json.dumps(data)
  1127. return HttpResponse(data)
  1128. #测报灯图片描述信息
  1129. class cbd_see_photo_describe(View):
  1130. def post(self,request):
  1131. req = request.POST.get('req')
  1132. user_name = request.POST.get("username")
  1133. img_name = request.POST.get('addr')
  1134. photo_time = request.POST.get('photo_time')
  1135. desc = request.POST.get('describe')
  1136. equip_id = request.POST.get("equip_id")
  1137. current_user = MyUser.objects.get(username=user_name)
  1138. desc = json.loads(desc)
  1139. # 增加描述:
  1140. if req == "add_desc":
  1141. if CBDphoto_desc.objects.filter(desc_user=current_user,
  1142. photo_id = CBDphoto.objects.get(addr=img_name),
  1143. pest_name=CBDpest.objects.get(user=current_user,
  1144. pest_name=desc['pest_name'])).exists():
  1145. data = '2'
  1146. try:
  1147. CBDphoto_desc.objects.create(
  1148. desc_user = current_user
  1149. ,photo_id = CBDphoto.objects.get(addr=img_name)
  1150. ,pest_name = CBDpest.objects.get(user=current_user,pest_name=desc['pest_name'])
  1151. ,pest_num = desc['pest_num']
  1152. ,crop_name = desc['crop_name']
  1153. ,pest_case = desc['pest_case']
  1154. ,pest_name2 = CBDpest.objects.get(user=current_user,pest_name=desc['pest_name'])
  1155. ,equip_id= equip_id
  1156. ,photo_time = photo_time)
  1157. data = "0"
  1158. except Exception as e:
  1159. print("保错信息为:",e)
  1160. data = "1"
  1161. # 修改描述:
  1162. elif req == "change_dsec":
  1163. try:
  1164. CBDphoto_desc.objects.filter(desc_user = current_user
  1165. ,photo_id = CBDphoto.objects.get(addr=img_name)
  1166. ).update(pest_num = desc['pest_num']
  1167. ,crop_name = desc['crop_name']
  1168. ,pest_case = desc['pest_case'])
  1169. data = "0"
  1170. except Exception as e:
  1171. print("保错信息为:",e)
  1172. data = "1"
  1173. # 删除描述:
  1174. elif req == "del_desc":
  1175. try:
  1176. CBDphoto_desc.objects.filter(desc_user = current_user
  1177. ,photo_id = CBDphoto.objects.get(addr=img_name)
  1178. ,pest_name = CBDpest.objects.get(user=current_user,pest_name=desc['pest_name'])
  1179. ).delete()
  1180. data = "0"
  1181. except Exception as e:
  1182. print("保错信息为:",e)
  1183. data = "1"
  1184. return HttpResponse(data)
  1185. #测报灯害虫识别统计图
  1186. class cbd_pest_report_chart(View):
  1187. def post(self,request):
  1188. equip_id = request.POST.get('equip_id')
  1189. name = request.POST.get('name')
  1190. print('equip_id:',equip_id)
  1191. sta1 = CBDphoto.objects.filter(equip_id=equip_id)
  1192. pest_kind = []
  1193. pests = []
  1194. dat = []
  1195. for x in sta1:
  1196. if x.indentify_result != None and x.indentify_result != "":
  1197. pest_reslut = x.indentify_result.split('#')
  1198. for i in pest_reslut:
  1199. i_result = i.split(',')
  1200. dat.append({"nums":i_result[0],"test":i_result[1]})
  1201. if i_result[0] not in pest_kind:
  1202. pest_kind.append(i_result[0])
  1203. #采集害虫种类
  1204. if pest_kind:
  1205. for i in pest_kind:
  1206. date = []
  1207. for x in dat:
  1208. if x["nums"] == i:
  1209. date.append(x["test"])
  1210. numbers = list(map(int, date))
  1211. nums = sum(numbers)
  1212. pests.append({"name":insect_dict_new[i],"data":nums})
  1213. data = {"nums":pests}
  1214. data = json.dumps(data, cls=CJSONEncoder)
  1215. return HttpResponse(data)
  1216. #测报灯自动统计病虫害折线图
  1217. class cbd_pest_from_chart(View):
  1218. def post(self,request):
  1219. equip_id = request.POST.get('equip_id')
  1220. tbegin = request.POST.get('tbegin')
  1221. print("tbegin",tbegin)
  1222. tend = request.POST.get('tend')
  1223. print("tend",tend)
  1224. pest = request.POST.get("pest")
  1225. print('equip_id:',equip_id)
  1226. start_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
  1227. end_date = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%Y-%m-%d')
  1228. sta1 = CBDphoto.objects.filter(equip_id=equip_id,upl_time__range=(start_date, end_date))
  1229. sta3 = CBDdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
  1230. if tbegin:
  1231. sta1 = CBDphoto.objects.filter(equip_id=equip_id, upl_time__range=(tbegin, tend))
  1232. sta3 = CBDdata.objects.filter(equip_id=equip_id, upl_time__range=(tbegin, tend))
  1233. dat = []
  1234. cbd_data = []
  1235. pest_kind = []
  1236. pests = []
  1237. for x in sta1:
  1238. if x.indentify_result != None and x.indentify_result != "":
  1239. pest_reslut = x.indentify_result.split('#')
  1240. for i in pest_reslut:
  1241. i_result = i.split(',')
  1242. if i_result[0] not in pest_kind:
  1243. pest_kind.append(i_result[0])
  1244. #采集害虫种类
  1245. if pest_kind:
  1246. for i in pest_kind:
  1247. st = {"name":insect_dict_new[i]}
  1248. pests.append(st)
  1249. for i in sta3:
  1250. sta4 = {"at":eval(i.cbd_data)["at"],"ah":eval(i.cbd_data)["ah"],"upl_time":i.upl_time}
  1251. cbd_data.append(sta4)
  1252. if pest:
  1253. for x in sta1:
  1254. if x.indentify_result != None and x.indentify_result != "":
  1255. pest_reslut = x.indentify_result.split('#')
  1256. for i in pest_reslut:
  1257. i_result = i.split(',')
  1258. if insect_dict_new[i_result[0]] == pest:
  1259. sta2 = {"time":x.upl_time,"pest":insect_dict_new[i_result[0]],"pestnum":i_result[1]}
  1260. dat.append(sta2)
  1261. data = {"kind":pests,"cbd_data":cbd_data,"dat":dat}
  1262. data = json.dumps(data, cls=CJSONEncoder)
  1263. return HttpResponse(data)
  1264. #测报灯害虫图片识别
  1265. class cbd_pest_discern(View):
  1266. def post (self,request):
  1267. img_addr = request.POST.get('img_addr')
  1268. print(img_addr)
  1269. photo_obj = CBDphoto.objects.get(addr=img_addr)
  1270. # url = 'http://60.166.14.184:9143/upload'
  1271. url = 'http://60.166.14.184:9143/upload'
  1272. imageFile = {'imageFile':('pic.jpg',open(img_addr,'rb'),'image/jpeg')}
  1273. data = {'longitude':'118.279643','latitude':'31.221456'}
  1274. print('data:',data)
  1275. res = requests.post(url,data=data,files=imageFile)
  1276. print("res:",res.text)
  1277. try:
  1278. resp = json.loads(res.text)
  1279. except Exception as e:
  1280. print(e)
  1281. print("识别失败")
  1282. data = "1"
  1283. return HttpResponse(data)
  1284. result_list = "code"
  1285. nums = "404"
  1286. date = []
  1287. try:
  1288. if resp["returnResult"]["returnString"]:
  1289. result = resp["returnResult"]["returnString"].split("#")
  1290. print("result",result)
  1291. for i in result:
  1292. res = i.split(",")
  1293. nums = res[1] #数量
  1294. results = res[0] #编号
  1295. result_list = insect_dict_new[res[0]]
  1296. date.append({
  1297. "nums":nums,"result_list":result_list
  1298. })
  1299. print("date",date)
  1300. resp = resp["returnResult"]["returnImageUrl"]
  1301. except Exception as e:
  1302. print(e)
  1303. data = {"image":resp, "result":date}
  1304. data = json.dumps(data, cls=CJSONEncoder)
  1305. return HttpResponse(data)
  1306. #测报灯下发命令
  1307. class cbd_wechat_mqtt_read(View):
  1308. def post(self,request):
  1309. uid = request.POST.get('username')
  1310. imei = request.POST.get('imei')
  1311. ret = request.POST.get("ret")
  1312. print("uid",uid)
  1313. print("imei",imei)
  1314. if ret == "read": #下发查询
  1315. kind = request.POST.get('kind')
  1316. print("kind",kind)
  1317. print("验证成功")
  1318. print("下发查询!")
  1319. try:
  1320. # 读取参数:
  1321. if kind == "status" or kind == "data" or "paramconf":
  1322. payload = {"cmd": "read", "ext": {"type": kind}}
  1323. print("payload",payload)
  1324. except Exception as e:
  1325. print(e)
  1326. data = api_code[1]
  1327. data = json.dumps(data)
  1328. print(data)
  1329. return HttpResponse(data)
  1330. elif ret == "set": #下发设置
  1331. print("下发设备设置!")
  1332. try:
  1333. ts = int(request.POST.get("ts")) # 定时模式
  1334. tt = int(request.POST.get("tt")) # 定时时长
  1335. # imgres = int(request.POST.get('imgres')) # 图片分辨率
  1336. st = int(request.POST.get('st')) # 开始时间
  1337. et = int(request.POST.get('et')) # 结束时间
  1338. collt = int(request.POST.get('collt')) # 落虫时间
  1339. htim = int(request.POST.get('htim')) # 加热时间
  1340. hst = int(request.POST.get('hst')) # 加热温度
  1341. tph = int(request.POST.get('tph')) # 加热仓温度上限
  1342. tpl = int(request.POST.get('tpl')) # 加热仓温度下限加热仓温度下限
  1343. datt = int(request.POST.get('datt')) # 数据上传时间间隔
  1344. shake_sec = int(request.POST.get('shake_sec')) # 震动时间间隔
  1345. print("定时模式ts:", ts)
  1346. # print("图片分辨率imgres:", imgres)
  1347. print("开始时间st:", st)
  1348. print("结束时间et:", et)
  1349. print("落虫时间collt:", collt)
  1350. print("加热时间htim:", htim)
  1351. print("加热温度hst:", hst)
  1352. print("加热仓温度上限tph:", tph)
  1353. print("加热仓温度下限tpl:", tpl)
  1354. print("数据上传时间间隔datt:", datt)
  1355. # 参数范围判断
  1356. if st not in range(0,25) or et not in range(0,25) or collt not in range(5,21) or htim not in range(5,21) \
  1357. or hst not in range(75,126) or tph not in range(40,71) or tpl not in range(-5,11) or datt not in range(5,61):
  1358. data = api_code[3]
  1359. data = json.dumps(data)
  1360. print(data)
  1361. return HttpResponse(data)
  1362. if shake_sec != None:
  1363. payload = {"cmd": "paramconf",
  1364. "ext": {"ts": ts, "tt": tt, "st": st, "et": et, "collt": collt,"shake_sec":shake_sec,
  1365. "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": 0}}
  1366. elif shake_sec == None:
  1367. payload = {"cmd": "paramconf",
  1368. "ext": {"ts": ts, "tt": tt, "st": st, "et": et, "collt": collt,
  1369. "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": 0}}
  1370. print("payload",payload)
  1371. except Exception as e:
  1372. print(e)
  1373. data = api_code[1]
  1374. data = json.dumps(data)
  1375. print(data)
  1376. return HttpResponse(data)
  1377. elif ret == "workmode": # 下发设备工作模式  节能(0),常规(1),加强(2) {"asleep":1,"common":0,"power":0}
  1378. print("下发设置工作模块!")
  1379. try:
  1380. work_type = int(request.POST.get('type'))
  1381. if work_type == 0:
  1382. payload = {"cmd":"workmode","ext":{"asleep":1,"common":0,"power":0}}
  1383. elif work_type == 1:
  1384. payload = {"cmd":"workmode","ext":{"asleep":0,"common":1,"power":0}}
  1385. elif work_type == 2:
  1386. payload = {"cmd":"workmode","ext":{"asleep":0,"common":0,"power":1}}
  1387. print("payload",payload)
  1388. except Exception as e:
  1389. print(e)
  1390. data = api_code[1]
  1391. data = json.dumps(data)
  1392. print(data)
  1393. return HttpResponse(data)
  1394. elif ret == "sim":
  1395. print("下发查询流量信息!")
  1396. iccid = request.POST.get('iccid')
  1397. resp = get_siminfo(iccid)
  1398. print("查询流量信息为:",resp)
  1399. return HttpResponse(resp)
  1400. topic = "/yfkj/cbd/sub/"+imei
  1401. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  1402. print(json.dumps(payload, indent=1))
  1403. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  1404. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1405. print("res.status_code:", type(res.status_code))
  1406. if res.status_code == 200:
  1407. data = api_code[0]
  1408. data = json.dumps(data)
  1409. print(data)
  1410. return HttpResponse(data)
  1411. else:
  1412. data = api_code[4]
  1413. data = json.dumps(data)
  1414. print(data)
  1415. return HttpResponse(data)
  1416. # #孢子仪设备详情接口
  1417. # class bzy_equip_details(View):
  1418. # def post(self,request):
  1419. # equip_id = request.POST.get("equip_id")
  1420. # bzy_list = BZYstatus.objects.filter(equip_id=equip_id).first()
  1421. # try:
  1422. # bzy_data = eval(bzy_list.bzy_status)
  1423. # imei = bzy_data["imei"]
  1424. # iccid = bzy_data["iccid"]
  1425. # upl_time = bzy_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  1426. # csq = bzy_data["csq"] #信号强度
  1427. # dver = bzy_data["dver"] #版本号
  1428. # v_bat = bzy_data["v_bat"] #电压
  1429. # is_online = bzy_list.is_online
  1430. # if is_online == 0 :
  1431. # is_online = "离线"
  1432. # else:
  1433. # is_online = "在线"
  1434. # on_off = bzy_data["on_off"]
  1435. # if on_off == 0: #设备开关
  1436. # on_off = "关闭"
  1437. # else:
  1438. # on_off = "开启"
  1439. # bat_sta = bzy_data["bat_sta"]
  1440. # if bat_sta == 0: #电池状态
  1441. # bat_sta = "正常"
  1442. # else:
  1443. # bat_sta = "电量过低"
  1444. # usb_sta = bzy_data["usb_sta"]
  1445. # if usb_sta == 0: #摄像头状态
  1446. # usb_sta = "正常"
  1447. # else:
  1448. # usb_sta = "异常"
  1449. # pre_temp = bzy_data["pre_temp"] #保温仓当前温度
  1450. # lat = bzy_data["lat"]
  1451. # lng = bzy_data["lng"]
  1452. # staytime = bzy_data["staytime"] #培养时间
  1453. # cul_time = bzy_data["cul_time"]
  1454. # print(cul_time)
  1455. # data = {"imei":imei,"upl_time":upl_time,"is_online":is_online,"csq":csq,"dver":dver,
  1456. # "v_bat":v_bat,"on_off":on_off,"bat_sta":bat_sta,"usb_sta":usb_sta,"pre_temp":pre_temp,
  1457. # "lat":lat,"lng":lng,"staytime":staytime,"iccid":iccid}
  1458. # except Exception as e:
  1459. # print("报错信息为:",e)
  1460. # data = {"code":"1"}
  1461. # data = json.dumps(data)
  1462. # return HttpResponse(data)
  1463. #孢子仪报表管理详情
  1464. class bzy_equip_report(View):
  1465. def post (self,request):
  1466. equip_id = request.POST.get("equip_id")
  1467. req = request.POST.get("req")
  1468. print("req",req)
  1469. bzy_list = BZYdata.objects.filter(equip_id=equip_id)
  1470. if req == "new_time":
  1471. bzy_list = bzy_list[:1]
  1472. elif req == "time":
  1473. bzy_id = request.POST.get("id")
  1474. bzy_list = bzy_list.filter(equip_id=equip_id,id=bzy_id)
  1475. elif req == "times":
  1476. start_time = request.POST.get('start_time')
  1477. end_time = request.POST.get('end_time')
  1478. begindate = re.findall(r"\d+\.?\d*", start_time)
  1479. enddate = re.findall(r"\d+\.?\d*", end_time)
  1480. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1481. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1482. bzy_list = bzy_list.filter(equip_id=equip_id,upl_time__range=(start_date,end_date))
  1483. else:
  1484. return HttpResponse("参数错误")
  1485. date = [] #设备状态信息
  1486. data = [] #设备数据信息
  1487. bzy_status = BZYstatus.objects.filter(equip_id=equip_id)
  1488. for x in bzy_status:
  1489. date.append(
  1490. {
  1491. "glass":x.glass,
  1492. "liquid":x.liquid,
  1493. }
  1494. )
  1495. try:
  1496. for i in bzy_list:
  1497. bzy_data = eval(i.bzy_data)
  1498. imei= bzy_data["imei"]
  1499. upl_time = i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  1500. # equip_location = i.netconf
  1501. on_off = bzy_data["on_off"] #设备开关
  1502. if on_off == 0 :
  1503. on_off = "关闭"
  1504. else:
  1505. on_off = "开启"
  1506. bat_sta = bzy_data["bat_sta"] #电池状态
  1507. if bat_sta == 0:
  1508. bat_sta = "正常"
  1509. else:
  1510. bat_sta = "电量过低"
  1511. usb_sta = bzy_data["usb_sta"] #摄像头状态
  1512. if usb_sta == 0:
  1513. usb_sta = "正常"
  1514. else:
  1515. usb_sta = "异常"
  1516. rps = bzy_data['rps'] #雨控
  1517. if rps == 0:
  1518. rps = "正常"
  1519. else:
  1520. rps = "雨控"
  1521. v_bat = bzy_data["v_bat"] #电压
  1522. alti = bzy_data["alti"] #海拔高度
  1523. csq = bzy_data['csq'] #信号强度
  1524. set_temp = bzy_data["set_temp"] #保温仓设定温度
  1525. dver = bzy_data["dver"] #版本号
  1526. pre_temp = bzy_data["pre_temp"] #保温仓当前温度
  1527. ah = bzy_data["ah"]
  1528. at = bzy_data['at']
  1529. lng = bzy_data['lng']
  1530. lat = bzy_data['lat']
  1531. staytime = bzy_data['staytime']
  1532. data.append({"imei":imei,"time":upl_time,"on_off":on_off,"lng":lng,"lat":lat,"staytime":staytime,
  1533. "bat_sta":bat_sta,"usb_sta":usb_sta,"rps":rps,"v_bat":v_bat,"alti":alti,
  1534. "csq":csq,"set_temp":set_temp,"dver":dver,'ah':ah,"at":at,"pre_temp":pre_temp,})
  1535. except:
  1536. data = []
  1537. # print("报错信息为:",e)
  1538. # data = {"code":"1"}
  1539. data = {"data":data,"date":date}
  1540. data = json.dumps(data)
  1541. return HttpResponse(data)
  1542. #孢子仪图片列表
  1543. class bzy_photo_list(View):
  1544. def get(self,request):
  1545. equip_id = request.GET.get("equip_id")
  1546. page = int(request.GET.get("page"))
  1547. bzy_photo = BZYphoto.objects.filter(equip_id=equip_id).values()
  1548. data =[]
  1549. for i in bzy_photo:
  1550. data.append({"addr":i['addr'],"describe":i["describe"],"upl_time":i["upl_time"].strftime('%Y-%m-%d %H:%M:%S')})
  1551. nums = len(data)
  1552. dat = data[(10*(page-1)):(page*10)]
  1553. data = {"dat":dat,"nums":nums}
  1554. data = json.dumps(data)
  1555. return HttpResponse(data)
  1556. def post(self,request):
  1557. equip_id = request.POST.get("equip_id")
  1558. photo = request.POST.get("photo")
  1559. if os.path.exists(photo) == True: #删除图片路经
  1560. os.remove(photo)
  1561. try:
  1562. BZYphoto.objects.get(addr=photo,equip_id=equip_id).delete()
  1563. data = 1
  1564. except Exception as e:
  1565. print(e)
  1566. data = 0
  1567. else:
  1568. try:
  1569. BZYphoto.objects.get(addr=photo,equip_id=equip_id).delete()
  1570. data = 1
  1571. except Exception as e:
  1572. print(e)
  1573. data = 0
  1574. return HttpResponse(data)
  1575. #孢子仪图片描述接口
  1576. class bzy_photo_desc(View):
  1577. def get(self,request):
  1578. addr = request.GET.get("addr")
  1579. try:
  1580. obj = BZYphoto.objects.get(addr=addr)
  1581. data = obj.describe
  1582. except Exception as e:
  1583. print(e)
  1584. data = ""
  1585. data = {"code":data}
  1586. # ensure_ascii=False 去除中文转义
  1587. data = json.dumps(data,ensure_ascii=False)
  1588. return HttpResponse(data)
  1589. def post(self, request):
  1590. img_name = request.POST.get('addr')
  1591. print('img_name:',img_name)
  1592. desc = request.POST.get('describe')
  1593. print("desc:",desc)
  1594. try:
  1595. obj = BZYphoto.objects.get(addr=img_name)
  1596. obj.describe = desc
  1597. obj.save()
  1598. data = "0"
  1599. except Exception as e:
  1600. print(e)
  1601. data = "1"
  1602. return HttpResponse(data)
  1603. #孢子仪折线图
  1604. class bzy_from_chart(View):
  1605. def post(self,request):
  1606. req = request.POST.get('req')
  1607. equip_id = request.POST.get('equip_id')
  1608. if req == "data":
  1609. # 获取当前日期:(这个月时间)
  1610. now_time = datetime.datetime.now()
  1611. sta1 = BZYdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month,upl_time__year=now_time.year)
  1612. elif req == "filter":
  1613. #获取指定日期
  1614. f_tbegin = request.POST.get('begin')
  1615. f_tend = request.POST.get('end')
  1616. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  1617. enddate = re.findall(r"\d+\.?\d*", f_tend)
  1618. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1619. end_date = datetime.date(int(enddate[0]), int(enddate[1] ), int(enddate[2]))
  1620. sta1 = BZYdata.objects.filter(equip_id=equip_id, upl_time__range=(start_date, end_date))
  1621. data = []
  1622. for x in sta1:
  1623. pre_temp = eval(x.bzy_data)['pre_temp']
  1624. data.append({"pre_temp": pre_temp,
  1625. "ah": eval(x.bzy_data)['ah'],
  1626. "at": eval(x.bzy_data)['at'],
  1627. "tim": x.upl_time})
  1628. data = json.dumps(data, cls=CJSONEncoder)
  1629. return HttpResponse(data)
  1630. #孢子仪配置信息接口
  1631. class bzy_equip_paramconf(View):
  1632. def post(self, request):
  1633. equip_id = request.POST.get('id')
  1634. print("请求数据的设备id:", equip_id)
  1635. # 最新数据: status
  1636. sta = BZYstatus.objects.filter(equip_id__equip_id=equip_id)
  1637. for x in sta:
  1638. new_sta = {"bzy_status":eval(x.bzy_status), "upl_time": x.upl_time,
  1639. "equip_name": x.equip_id.equip_name,
  1640. "glass": x.glass, "liquid":x.liquid, "is_online": x.is_online,
  1641. "off_time": x.off_time}
  1642. data = json.dumps(new_sta, cls=CJSONEncoder, indent=4)
  1643. print("data:",data)
  1644. return HttpResponse(data)
  1645. # 孢子仪通信接口:
  1646. class bzy_wechat_mqtt_read(ListView):
  1647. def post(self, request):
  1648. uid = request.POST.get('username')
  1649. imei = request.POST.get('imei')
  1650. ret = request.POST.get('ret')
  1651. print("ret:", ret)
  1652. print("username",uid)
  1653. print("imei",imei)
  1654. if ret == "set":
  1655. wind_sw = int(request.POST.get('wind')) # 风机开关
  1656. coll_time = request.POST.get('coll_time') # 采集孢子时间段
  1657. drop_time = int(request.POST.get('drop')) # 采集孢子时间段
  1658. set_temp = int(request.POST.get('stemp')) # 保温仓设定温度
  1659. # imgres = int(request.POST.get('imgres')) # 图片分辨率
  1660. datt = int(request.POST.get('takt')) # 数据上传时间间隔
  1661. try:
  1662. cul_time = int(request.POST.get('culTime')) # 设置培养时间
  1663. except:
  1664. cul_time = 12
  1665. print("设备ID:", imei)
  1666. print("风机开关:", wind_sw)
  1667. print("采集孢子时间段:", coll_time)
  1668. print("保温仓设定温度:", set_temp)
  1669. print("培养时间:", cul_time)
  1670. print("上传时间间隔:",datt)
  1671. coll_time = eval(coll_time)
  1672. print("采集shijain:", coll_time)
  1673. topic = "/yfkj/bzy/s2c/"+ imei # [1:-1]
  1674. print("topic:", topic)
  1675. payload = {"cmd": "paramconf","ext": {"wind_sw": wind_sw,"coll_time": coll_time,"set_temp": set_temp,"imgres": 7,"drop_time": drop_time,"datt": datt,"cul_time":cul_time}}
  1676. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  1677. print(json.dumps(payload, indent=1))
  1678. elif ret == "read":
  1679. print("下发查询!")
  1680. payload = {"cmd": "read","type": "status"}
  1681. topic = "/yfkj/bzy/s2c/"+ imei
  1682. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  1683. print(json.dumps(payload, indent=1))
  1684. elif ret == "ctrl":
  1685. print("下发控制!")
  1686. print("imei",imei)
  1687. topic = "/yfkj/bzy/s2c/"+ imei
  1688. # 读取参数:
  1689. cmd = request.POST.get('cmd')
  1690. print("cmd",cmd)
  1691. if cmd == "update" or cmd == "reboot" or cmd == "poweroff" or cmd == "poweron" or cmd == "coldoff" or cmd == "coldon":
  1692. payload = {"cmd":cmd}
  1693. elif cmd == "ctrl":
  1694. ctrl_type = request.POST.get('type')
  1695. print("type",ctrl_type)
  1696. if ctrl_type == "takephoto":
  1697. payload = {"cmd": cmd, "ext": {"type": ctrl_type}}
  1698. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  1699. print(json.dumps(payload, indent=1))
  1700. # 此项修改载玻片和培养液更换时间,只存数据库 不做下发处理!!!
  1701. elif ret == "glass":
  1702. # 获取载玻片更换时间
  1703. glass = request.POST.get('glass')
  1704. print("载玻片更换时间:", glass)
  1705. sta = BZYstatus.objects.get(equip_id__equip_id=imei)
  1706. if glass != "":
  1707. # temporary临时变量
  1708. temporary = sta.glass
  1709. sta.glass = temporary + "#" + glass
  1710. # 只保存最近五次的更换时间
  1711. if len(sta.glass)>55:
  1712. sta.glass = sta.glass[11:]
  1713. sta.save()
  1714. print("载玻片更换时间保存成功")
  1715. data = api_code[0]
  1716. data = json.dumps(data)
  1717. print(data)
  1718. return HttpResponse(data)
  1719. elif ret == "liquid":
  1720. # 获取培养液更换时间
  1721. liquid = request.POST.get('liquid')
  1722. print("培养液更换时间:", liquid)
  1723. sta = BZYstatus.objects.get(equip_id__equip_id=imei)
  1724. if liquid != "":
  1725. # temporary临时变量
  1726. temporary_1 = sta.liquid
  1727. sta.liquid = temporary_1 + "#" + liquid
  1728. # 只保存最近五次的更换时间
  1729. if len(sta.liquid)>55:
  1730. sta.liquid = sta.liquid[11:]
  1731. sta.save()
  1732. print("培养液更换时间保存成功")
  1733. data = api_code[0]
  1734. data = json.dumps(data)
  1735. print(data)
  1736. return HttpResponse(data)
  1737. # 查询sim卡信息
  1738. elif ret == "sim":
  1739. iccid = request.POST.get('iccid')
  1740. resp = get_siminfo(iccid)
  1741. print("查询流量信息为:",resp)
  1742. return HttpResponse(resp)
  1743. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  1744. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  1745. print("res.status_code:", type(res.status_code))
  1746. if res.status_code == 200:
  1747. data = api_code[0]
  1748. data = json.dumps(data)
  1749. print(data)
  1750. return HttpResponse(data)
  1751. else:
  1752. data = api_code[4]
  1753. data = json.dumps(data)
  1754. print(data)
  1755. return HttpResponse(data)
  1756. #性诱设备列表(依科曼)
  1757. class xy_equip_list(View):
  1758. def get (self,request):
  1759. page = int(request.GET.get("page"))
  1760. user_name = request.GET.get("username")
  1761. current_user = MyUser.objects.get(username=user_name)
  1762. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username
  1763. print("---不是管理员")
  1764. xy_list = Trapstatus.objects.filter(equip_id__equip_user=current_user)
  1765. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1766. print("---代理商")
  1767. xy_list = Trapstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  1768. else:
  1769. print("---管理员")
  1770. xy_list = Trapstatus.objects.all()
  1771. data = []
  1772. for x in xy_list:
  1773. data.append({"addr": x.addr, "tem": x.tem,"equip_id":x.equip_id.equip_id,
  1774. "hum": x.hum, "pest": x.pest, "equip_name": x.equip_id.equip_name,
  1775. "pestnum": x.pestnum, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S')})
  1776. num = xy_list.count()
  1777. dat = data[(10*(page-1)):(page*10)]
  1778. data = {'dat': dat, 'num': num}
  1779. data = json.dumps(data)
  1780. return HttpResponse(data)
  1781. def post(self,request):
  1782. ret = request.POST.get("ret")
  1783. equip_id = request.POST.get("equip_id")
  1784. page = int(request.POST.get("page"))
  1785. data = []
  1786. if ret == "filter": #设备信息
  1787. xy_list = Trapstatus.objects.filter(equip_id=equip_id)
  1788. elif ret == "record": #历史记录
  1789. xy_list = Trapdata.objects.filter(equip_id=equip_id)
  1790. for x in xy_list:
  1791. data.append({"addr": x.addr, "tem": x.tem,"equip_id":x.equip_id.equip_id,
  1792. "hum": x.hum, "pest": x.pest, "equip_name": x.equip_id.equip_name,
  1793. "pestnum": x.pestnum, "upl_time": x.upl_time.strftime('%Y-%m-%d %H:%M:%S')})
  1794. num = xy_list.count()
  1795. dat = data[(10*(page-1)):(page*10)]
  1796. data = {'dat': dat, 'num': num}
  1797. data = json.dumps(data)
  1798. return HttpResponse(data)
  1799. #性诱图片页面
  1800. class xy_photo_list(View):
  1801. def post(self,request):
  1802. ret = request.POST.get("ret")
  1803. equip_id = request.POST.get("equip_id")
  1804. page = int(request.POST.get("page",1))
  1805. print(equip_id)
  1806. data = []
  1807. if ret == "photo":
  1808. xy_list = Trapphoto.objects.filter(equip_id=equip_id)
  1809. if xy_list:
  1810. for x in xy_list:
  1811. data.append({"upl_time":x.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"addr":x.addr})
  1812. data = data[(10*(page-1)):(page*10)]
  1813. elif ret == "chart":
  1814. start_time = request.POST.get('start_time')
  1815. end_time = request.POST.get('end_time')
  1816. if start_time:
  1817. xy_list = Trapdata.objects.filter(equip_id=equip_id, upl_time__range=(start_time,end_time))
  1818. else:
  1819. start_date = (datetime.datetime.now() - datetime.timedelta(days=2)).strftime('%Y-%m-%d')
  1820. end_date = (datetime.datetime.now() + datetime.timedelta(days=1) ).strftime('%Y-%m-%d')
  1821. xy_list = Trapdata.objects.filter(equip_id=equip_id,upl_time__range=(start_date,end_date))
  1822. if xy_list:
  1823. for i in xy_list:
  1824. data.append({"pest":i.pest,"pestnum":i.pestnum,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"tem":i.tem,"hum":i.hum})
  1825. num = len(xy_list)
  1826. print("num",num)
  1827. data = {'dat': data, 'num': num}
  1828. data = json.dumps(data)
  1829. return HttpResponse(data)
  1830. #气象站状态数据
  1831. class qxz_status_base(View):
  1832. def post(self,request):
  1833. equip_id = request.POST.get("equip_id")
  1834. data = []
  1835. qxz_base = QXZ_Base_Info.objects.filter(equip_id=equip_id)
  1836. try:
  1837. qxz_list = QXZstatus_New.objects.get(equip_id=equip_id).is_online
  1838. except:
  1839. return HttpResponse("0")
  1840. if qxz_base:
  1841. for x in qxz_base:
  1842. data.append({
  1843. "is_online": qxz_list,
  1844. "volt": x.volt,
  1845. "rssi": x.rssi,
  1846. "equip_id": x.equip_id.equip_id
  1847. })
  1848. else:
  1849. data.append({
  1850. "is_online": qxz_list,
  1851. "volt": "",
  1852. "rssi": "",
  1853. "equip_id": equip_id
  1854. })
  1855. data = json.dumps(data)
  1856. return HttpResponse(data)
  1857. #气象站报表折线图(时间段筛选)
  1858. class qxz_line_chart(View):
  1859. def get(self,request):
  1860. imei = request.GET.get('imei')
  1861. equip_id = request.GET.get('equip_id')
  1862. qxz_list = QXZdata_New.objects.get(equip_id=imei,id=equip_id)
  1863. data = [qxz_list.e1,qxz_list.e2,qxz_list.e3,qxz_list.e4,qxz_list.e5,qxz_list.e6,qxz_list.e7,qxz_list.e8,qxz_list.e9,qxz_list.e10,
  1864. qxz_list.e11,qxz_list.e12,qxz_list.e13,qxz_list.e14,
  1865. qxz_list.e15,qxz_list.e16,qxz_list.e17,qxz_list.e18,
  1866. qxz_list.e19,qxz_list.e20,qxz_list.e21,qxz_list.e22,
  1867. qxz_list.e23,qxz_list.e24,qxz_list.e25,qxz_list.e26,
  1868. qxz_list.e27,qxz_list.e28,qxz_list.e29,qxz_list.e30]
  1869. test = [i for i in data if i != '']
  1870. sta = []
  1871. try:
  1872. for i in test:
  1873. qxz = i.split("#")
  1874. qw = qxz_dict[qxz[1]]
  1875. qxz_num = [qxz[2],qxz[0],qw]
  1876. sta.append(qxz_num)
  1877. except Exception as e :
  1878. print(e)
  1879. sta2 = {"data":sta,"upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')}
  1880. data = json.dumps(sta2)
  1881. return HttpResponse(data)
  1882. def post(self,request):
  1883. equip_id = request.POST.get("equip_id")
  1884. start_time = request.POST.get("start_time")
  1885. end_time = request.POST.get("end_time")
  1886. start_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
  1887. end_date = (datetime.datetime.now() + datetime.timedelta(days=1) ).strftime('%Y-%m-%d')
  1888. print("equip_id",equip_id)
  1889. print("start_time",start_time)
  1890. print("end_time",end_time)
  1891. qxz_list = QXZdata_New.objects.filter(
  1892. equip_id=equip_id, upl_time__range=(start_date,end_date))
  1893. if start_time:
  1894. qxz_list = QXZdata_New.objects.filter(
  1895. equip_id=equip_id, upl_time__range=(start_time,end_time))
  1896. data = []
  1897. for i in qxz_list:
  1898. data.append({"dat":[i.e1,i.e2,i.e3,i.e4,i.e5,
  1899. i.e6,i.e7,i.e8,i.e9,i.e10,
  1900. i.e11,i.e12,i.e13,i.e14,
  1901. i.e15,i.e16,i.e17,i.e18,
  1902. i.e19,i.e20,i.e21,i.e22,
  1903. i.e23,i.e24,i.e25,i.e26,
  1904. i.e27,i.e28,i.e29,i.e30],
  1905. "time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')})
  1906. sta2 = []
  1907. # print(data)
  1908. for x in data:
  1909. sta = []
  1910. test = [i for i in x["dat"] if i !='']
  1911. try:
  1912. for i in test:
  1913. qxz = i.split("#")
  1914. qxz_num = {"name":qxz[2],"num":float(qxz[0])}
  1915. sta.append(qxz_num)
  1916. except Exception as e :
  1917. print(e)
  1918. sta2.append({"data":sta,"time":x["time"]})
  1919. try:
  1920. conf = []
  1921. qxz_num = []
  1922. x = QXZ_Conf.objects.get(equip_id=equip_id)
  1923. conf.append([x.e1,x.e2,x.e3,x.e4,x.e5,
  1924. x.e6,x.e7,x.e8,x.e9,x.e10,
  1925. x.e11,x.e12,x.e13,x.e14,
  1926. x.e15,x.e16,x.e17,x.e18,
  1927. x.e19,x.e20,x.e21,x.e22,
  1928. x.e23,x.e24,x.e25,x.e26,
  1929. x.e27,x.e28,x.e29,x.e30])
  1930. conf_list = [i for i in conf[0] if i !='' ]
  1931. for i in conf_list:
  1932. qxz_conf = i.split("#")
  1933. qxz_list = {"name":qxz_conf[0],"num":qxz_conf[1]}
  1934. qxz_num.append(qxz_list)
  1935. except:
  1936. qxz_num = []
  1937. data = {"data":sta2,"conf":qxz_num}
  1938. data = json.dumps(data)
  1939. print("data",data)
  1940. return HttpResponse(data)
  1941. #气象站二十四小时最新数据
  1942. class qxz_new_data(View):
  1943. def post (self,request):
  1944. qxz_dict_1 = copy.deepcopy(qxz_dict)
  1945. start_date = (datetime.datetime.now() - datetime.timedelta(days=2)).strftime('%Y-%m-%d')
  1946. end_date = (datetime.datetime.now() + datetime.timedelta(days=1) ).strftime('%Y-%m-%d')
  1947. print("start_date:", start_date)
  1948. print("end_date:", end_date)
  1949. equip_id = request.POST.get('equip_id')
  1950. sta1 = QXZdata_New.objects.filter(equip_id=equip_id, upl_time__range=(start_date,end_date)).values()
  1951. e1 = []
  1952. e1_time = []
  1953. e2 = []
  1954. e2_time = []
  1955. e3 = []
  1956. e3_time = []
  1957. e4 = []
  1958. e4_time = []
  1959. e5 = []
  1960. e5_time = []
  1961. e6 = []
  1962. e6_time = []
  1963. e7 = []
  1964. e7_time = []
  1965. e8 = []
  1966. e8_time = []
  1967. e9 = []
  1968. e9_time = []
  1969. e10 = []
  1970. e10_time = []
  1971. e11 = []
  1972. e11_time = []
  1973. e12 = []
  1974. e12_time = []
  1975. e13 = []
  1976. e13_time = []
  1977. e14 = []
  1978. e14_time = []
  1979. e15 = []
  1980. e15_time = []
  1981. e16 = []
  1982. e16_time = []
  1983. e17 = []
  1984. e17_time = []
  1985. e18 = []
  1986. e18_time = []
  1987. e19 = []
  1988. e19_time = []
  1989. e20 = []
  1990. e20_time = []
  1991. e21 = []
  1992. e21_time = []
  1993. e22 = []
  1994. e22_time = []
  1995. e23 = []
  1996. e23_time = []
  1997. e24 = []
  1998. e24_time = []
  1999. e25 = []
  2000. e25_time = []
  2001. e26 = []
  2002. e26_time = []
  2003. e27 = []
  2004. e27_time = []
  2005. e28 = []
  2006. e28_time = []
  2007. e29 = []
  2008. e29_time = []
  2009. e30 = []
  2010. e30_time = []
  2011. for i in sta1:
  2012. if i['e1'] != "":
  2013. e1.append(i['e1'].split('#')[0])
  2014. e1_time.append(i['upl_time'])
  2015. if i['e2'] != "":
  2016. e2.append(i['e2'].split('#')[0])
  2017. e2_time.append(i['upl_time'])
  2018. if i['e3'] != "":
  2019. e3.append(i['e3'].split('#')[0])
  2020. e3_time.append(i['upl_time'])
  2021. if i['e4'] != "":
  2022. e4.append(i['e4'].split('#')[0])
  2023. e4_time.append(i['upl_time'])
  2024. if i['e5'] != "":
  2025. e5.append(i['e5'].split('#')[0])
  2026. e5_time.append(i['upl_time'])
  2027. if i['e6'] != "":
  2028. e6.append(i['e6'].split('#')[0])
  2029. e6_time.append(i['upl_time'])
  2030. if i['e7'] != "":
  2031. e7.append(i['e7'].split('#')[0])
  2032. e7_time.append(i['upl_time'])
  2033. if i['e8'] != "":
  2034. e8.append(i['e8'].split('#')[0])
  2035. e8_time.append(i['upl_time'])
  2036. if i['e9'] != "":
  2037. e9.append(i['e9'].split('#')[0])
  2038. e9_time.append(i['upl_time'])
  2039. if i['e10'] != "":
  2040. e10.append(i['e10'].split('#')[0])
  2041. e10_time.append(i['upl_time'])
  2042. if i['e11'] != "":
  2043. e11.append(i['e11'].split('#')[0])
  2044. e11_time.append(i['upl_time'])
  2045. if i['e12'] != "":
  2046. e12.append(i['e12'].split('#')[0])
  2047. e12_time.append(i['upl_time'])
  2048. if i['e13'] != "":
  2049. e13.append(i['e13'].split('#')[0])
  2050. e13_time.append(i['upl_time'])
  2051. if i['e14'] != "":
  2052. e14.append(i['e14'].split('#')[0])
  2053. e14_time.append(i['upl_time'])
  2054. if i['e15'] != "":
  2055. e15.append(i['e15'].split('#')[0])
  2056. e15_time.append(i['upl_time'])
  2057. if i['e16'] != "":
  2058. e16.append(i['e16'].split('#')[0])
  2059. e16_time.append(i['upl_time'])
  2060. if i['e17'] != "":
  2061. e17.append(i['e17'].split('#')[0])
  2062. e17_time.append(i['upl_time'])
  2063. if i['e18'] != "":
  2064. e18.append(i['e18'].split('#')[0])
  2065. e18_time.append(i['upl_time'])
  2066. if i['e19'] != "":
  2067. e19.append(i['e19'].split('#')[0])
  2068. e19_time.append(i['upl_time'])
  2069. if i['e20'] != "":
  2070. e20.append(i['e20'].split('#')[0])
  2071. e20_time.append(i['upl_time'])
  2072. if i['e21'] != "":
  2073. e21.append(i['e21'].split('#')[0])
  2074. e21_time.append(i['upl_time'])
  2075. if i['e22'] != "":
  2076. e22.append(i['e22'].split('#')[0])
  2077. e22_time.append(i['upl_time'])
  2078. if i['e23'] != "":
  2079. e23.append(i['e23'].split('#')[0])
  2080. e23_time.append(i['upl_time'])
  2081. if i['e24'] != "":
  2082. e12.append(i['e12'].split('#')[0])
  2083. e12_time.append(i['upl_time'])
  2084. if i['e25'] != "":
  2085. e25.append(i['e25'].split('#')[0])
  2086. e25_time.append(i['upl_time'])
  2087. if i['e26'] != "":
  2088. e26.append(i['e26'].split('#')[0])
  2089. e26_time.append(i['upl_time'])
  2090. if i['e27'] != "":
  2091. e27.append(i['e27'].split('#')[0])
  2092. e27_time.append(i['upl_time'])
  2093. if i['e28'] != "":
  2094. e28.append(i['e28'].split('#')[0])
  2095. e28_time.append(i['upl_time'])
  2096. if i['e29'] != "":
  2097. e29.append(i['e29'].split('#')[0])
  2098. e29_time.append(i['upl_time'])
  2099. if i['e30'] != "":
  2100. e30.append(i['e30'].split('#')[0])
  2101. e30_time.append(i['upl_time'])
  2102. data = []
  2103. try:
  2104. if e1 != []:
  2105. data.append({"max":max(e1),"maxtime":e1_time[e1.index(max(e1))],"min":min(e1),"mintime":e1_time[e1.index(min(e1))],"enum":qxz_dict_1[i['e1'].split('#')[1]],"ekey":i['e1'].split('#')[2]})
  2106. if e2 != []:
  2107. data.append({"max":max(e2),"maxtime":e2_time[e2.index(max(e2))],"min":min(e2),"mintime":e2_time[e2.index(min(e2))],"enum":qxz_dict_1[i['e2'].split('#')[1]],"ekey":i['e2'].split('#')[2]})
  2108. if e3 != []:
  2109. data.append({"max":max(e3),"maxtime":e3_time[e3.index(max(e3))],"min":min(e3),"mintime":e3_time[e3.index(min(e3))],"enum":qxz_dict_1[i['e3'].split('#')[1]],"ekey":i['e3'].split('#')[2]})
  2110. if e4 != []:
  2111. data.append({"max":max(e4),"maxtime":e4_time[e4.index(max(e4))],"min":min(e4),"mintime":e4_time[e4.index(min(e4))],"enum":qxz_dict_1[i['e4'].split('#')[1]],"ekey":i['e4'].split('#')[2]})
  2112. if e5 != []:
  2113. data.append({"max":max(e5),"maxtime":e5_time[e5.index(max(e5))],"min":min(e5),"mintime":e5_time[e5.index(min(e5))],"enum":qxz_dict_1[i['e5'].split('#')[1]],"ekey":i['e5'].split('#')[2]})
  2114. if e6 != []:
  2115. data.append({"max":max(e6),"maxtime":e6_time[e6.index(max(e6))],"min":min(e6),"mintime":e6_time[e6.index(min(e6))],"enum":qxz_dict_1[i['e6'].split('#')[1]],"ekey":i['e6'].split('#')[2]})
  2116. if e7 != []:
  2117. data.append({"max":max(e7),"maxtime":e7_time[e7.index(max(e7))],"min":min(e7),"mintime":e7_time[e7.index(min(e7))],"enum":qxz_dict_1[i['e7'].split('#')[1]],"ekey":i['e7'].split('#')[2]})
  2118. if e8 != []:
  2119. data.append({"max":max(e8),"maxtime":e8_time[e8.index(max(e8))],"min":min(e8),"mintime":e8_time[e8.index(min(e8))],"enum":qxz_dict_1[i['e8'].split('#')[1]],"ekey":i['e8'].split('#')[2]})
  2120. if e9 != []:
  2121. data.append({"max":max(e9),"maxtime":e9_time[e9.index(max(e9))],"min":min(e9),"mintime":e9_time[e9.index(min(e9))],"enum":qxz_dict_1[i['e9'].split('#')[1]],"ekey":i['e9'].split('#')[2]})
  2122. if e10 != []:
  2123. data.append({"max":max(e10),"maxtime":e10_time[e10.index(max(e10))],"min":min(e10),"mintime":e10_time[e10.index(min(e10))],"enum":qxz_dict_1[i['e10'].split('#')[1]],"ekey":i['e10'].split('#')[2]})
  2124. if e11 != []:
  2125. data.append({"max":max(e11),"maxtime":e11_time[e11.index(max(e11))],"min":min(e11),"mintime":e11_time[e11.index(min(e11))],"enum":qxz_dict_1[i['e11'].split('#')[1]],"ekey":i['e11'].split('#')[2]})
  2126. if e12 != []:
  2127. data.append({"max":max(e12),"maxtime":e12_time[e12.index(max(e12))],"min":min(e12),"mintime":e12_time[e12.index(min(e12))],"enum":qxz_dict_1[i['e12'].split('#')[1]],"ekey":i['e12'].split('#')[2]})
  2128. if e13 != []:
  2129. data.append({"max":max(e13),"maxtime":e13_time[e13.index(max(e13))],"min":min(e13),"mintime":e13_time[e13.index(min(e13))],"enum":qxz_dict_1[i['e13'].split('#')[1]],"ekey":i['e13'].split('#')[2]})
  2130. if e14 != []:
  2131. data.append({"max":max(e14),"maxtime":e14_time[e14.index(max(e14))],"min":min(e14),"mintime":e14_time[e14.index(min(e14))],"enum":qxz_dict_1[i['e14'].split('#')[1]],"ekey":i['e14'].split('#')[2]})
  2132. if e15 != []:
  2133. data.append({"max":max(e15),"maxtime":e15_time[e15.index(max(e15))],"min":min(e15),"mintime":e15_time[e15.index(min(e15))],"enum":qxz_dict_1[i['e15'].split('#')[1]],"ekey":i['e15'].split('#')[2]})
  2134. if e16 != []:
  2135. data.append({"max":max(e16),"maxtime":e16_time[e16.index(max(e16))],"min":min(e16),"mintime":e16_time[e16.index(min(e16))],"enum":qxz_dict_1[i['e16'].split('#')[1]],"ekey":i['e16'].split('#')[2]})
  2136. if e17 != []:
  2137. data.append({"max":max(e17),"maxtime":e17_time[e17.index(max(e17))],"min":min(e17),"mintime":e17_time[e17.index(min(e17))],"enum":qxz_dict_1[i['e17'].split('#')[1]],"ekey":i['e17'].split('#')[2]})
  2138. if e18 != []:
  2139. data.append({"max":max(e18),"maxtime":e18_time[e18.index(max(e18))],"min":min(e18),"mintime":e18_time[e18.index(min(e18))],"enum":qxz_dict_1[i['e18'].split('#')[1]],"ekey":i['e18'].split('#')[2]})
  2140. if e19 != []:
  2141. data.append({"max":max(e19),"maxtime":e19_time[e19.index(max(e19))],"min":min(e19),"mintime":e19_time[e19.index(min(e19))],"enum":qxz_dict_1[i['e19'].split('#')[1]],"ekey":i['e19'].split('#')[2]})
  2142. if e20 != []:
  2143. data.append({"max":max(e20),"maxtime":e20_time[e20.index(max(e20))],"min":min(e20),"mintime":e20_time[e20.index(min(e20))],"enum":qxz_dict_1[i['e20'].split('#')[1]],"ekey":i['e20'].split('#')[2]})
  2144. if e21 != []:
  2145. data.append({"max":max(e21),"maxtime":e21_time[e21.index(max(e21))],"min":min(e21),"mintime":e21_time[e21.index(min(e21))],"enum":qxz_dict_1[i['e21'].split('#')[1]],"ekey":i['e21'].split('#')[2]})
  2146. if e22 != []:
  2147. data.append({"max":max(e22),"maxtime":e22_time[e22.index(max(e22))],"min":min(e22),"mintime":e22_time[e22.index(min(e22))],"enum":qxz_dict_1[i['e22'].split('#')[1]],"ekey":i['e22'].split('#')[2]})
  2148. if e23 != []:
  2149. data.append({"max":max(e23),"maxtime":e23_time[e23.index(max(e23))],"min":min(e23),"mintime":e23_time[e23.index(min(e23))],"enum":qxz_dict_1[i['e23'].split('#')[1]],"ekey":i['e23'].split('#')[2]})
  2150. if e24 != []:
  2151. data.append({"max":max(e24),"maxtime":e24_time[e24.index(max(e24))],"min":min(e24),"mintime":e24_time[e24.index(min(e24))],"enum":qxz_dict_1[i['e24'].split('#')[1]],"ekey":i['e24'].split('#')[2]})
  2152. if e25 != []:
  2153. data.append({"max":max(e25),"maxtime":e25_time[e25.index(max(e25))],"min":min(e25),"mintime":e25_time[e25.index(min(e25))],"enum":qxz_dict_1[i['e25'].split('#')[1]],"ekey":i['e25'].split('#')[2]})
  2154. if e26 != []:
  2155. data.append({"max":max(e26),"maxtime":e26_time[e26.index(max(e26))],"min":min(e26),"mintime":e26_time[e26.index(min(e26))],"enum":qxz_dict_1[i['e26'].split('#')[1]],"ekey":i['e26'].split('#')[2]})
  2156. if e27 != []:
  2157. data.append({"max":max(e27),"maxtime":e27_time[e27.index(max(e27))],"min":min(e27),"mintime":e27_time[e27.index(min(e27))],"enum":qxz_dict_1[i['e27'].split('#')[1]],"ekey":i['e27'].split('#')[2]})
  2158. if e28 != []:
  2159. data.append({"max":max(e28),"maxtime":e28_time[e28.index(max(e28))],"min":min(e28),"mintime":e28_time[e28.index(min(e28))],"enum":qxz_dict_1[i['e28'].split('#')[1]],"ekey":i['e28'].split('#')[2]})
  2160. if e29 != []:
  2161. data.append({"max":max(e29),"maxtime":e29_time[e29.index(max(e29))],"min":min(e29),"mintime":e29_time[e29.index(min(e29))],"enum":qxz_dict_1[i['e29'].split('#')[1]],"ekey":i['e29'].split('#')[2]})
  2162. if e30 != []:
  2163. data.append({"max":max(e30),"maxtime":e30_time[e30.index(max(e30))],"min":min(e30),"mintime":e30_time[e30.index(min(e30))],"enum":qxz_dict_1[i['e30'].split('#')[1]],"ekey":i['e30'].split('#')[2]})
  2164. except Exception as e:
  2165. print("报错信息为:",e)
  2166. dat = json.dumps(data,cls=CJSONEncoder)
  2167. return HttpResponse(dat)
  2168. #气象站开关;
  2169. class qxz_wechat_switch(View):
  2170. def get(self,request):
  2171. equip_id = request.GET.get("equip_id")
  2172. qxz_switch_list = QXZswitchstatus.objects.get(equip_id=equip_id)
  2173. qxz_switch_name_list = QXZswitchdata.objects.get(equip_id=equip_id)
  2174. # print(type(qxz_switch_list.qxz_switch))
  2175. data_list = eval(qxz_switch_list.qxz_switch)
  2176. data_name_list = eval(qxz_switch_name_list.qxz_switch_data)
  2177. dat = []
  2178. da = []
  2179. name_list = []
  2180. if data_list:
  2181. for i in data_list:
  2182. da.append(i["status"])
  2183. dat.append(i['JK'])
  2184. if data_name_list:
  2185. for i in data_name_list:
  2186. name_list.append(i["name"])
  2187. data = {"status":da,"JK":dat,"name":name_list}
  2188. data = json.dumps(data)
  2189. return HttpResponse(data)
  2190. def post(self,request):
  2191. equip_id = request.POST.get('equip_id')
  2192. JK = request.POST.get('JK')
  2193. sw_name = request.POST.get('sw_name')
  2194. try:
  2195. switch_obj = QXZswitchdata.objects.get(equip_id=equip_id)
  2196. except:
  2197. return HttpResponse("1")
  2198. sw_name_list = eval(switch_obj.qxz_switch_data)
  2199. for i in sw_name_list:
  2200. if i["JK"] == int(JK):
  2201. i["name"] = sw_name
  2202. print(sw_name_list)
  2203. try:
  2204. switch_obj.qxz_switch_data = sw_name_list
  2205. switch_obj.save()
  2206. except:
  2207. return HttpResponse("1")
  2208. data = "0"
  2209. return HttpResponse(data)
  2210. # 气象站下发接口
  2211. class qxz_wechat_mqtt(ListView):
  2212. def get(self,request):
  2213. pass
  2214. def post(self,request):
  2215. req = request.POST.get('req')
  2216. imei = request.POST.get('imei')
  2217. topic = "/yfkj/qxz/sub/"+imei
  2218. if req == "read":
  2219. payload = {"ext":{"type":"status"},"cmd":"read"}
  2220. elif req == "set":
  2221. way = int(request.POST.get('way'))
  2222. switch = int(request.POST.get('switch'))
  2223. payload = {"cmd":"control","ext":{"JK":way,"status":switch}}
  2224. elif req == "conf":
  2225. payload = {"ext":{"type":"jkStatus"},"cmd":"read"}
  2226. cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0}
  2227. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2228. data=json.dumps(cmd), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2229. print("res.status_code:", type(res.status_code))
  2230. if res.status_code == 200:
  2231. data = "0"
  2232. return HttpResponse(data)
  2233. else:
  2234. data = "1"
  2235. return HttpResponse(data)
  2236. #监控设备列表页面
  2237. class jk_wechat_list(View):
  2238. def get(self,request):
  2239. equip_id = request.GET.get("equip_id")
  2240. user_name = request.GET.get("username")
  2241. current_user = MyUser.objects.get(username=user_name)
  2242. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2243. equip_list = Equip.objects.filter(equip_type=6, equip_user=current_user,equip_id=equip_id)
  2244. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2245. equip_list = Equip.objects.filter(equip_type=6, equip_agency=current_user.user_agency,equip_id=equip_id)
  2246. else:
  2247. equip_list = Equip.objects.filter(equip_type=6,equip_id=equip_id)
  2248. data = []
  2249. for x in equip_list:
  2250. data.append({"equip_name":x.equip_name, "equip_id":x.equip_id})
  2251. data = json.dumps(data)
  2252. return HttpResponse(data)
  2253. def post(self,request):
  2254. user_name = request.POST.get("username")
  2255. current_user = MyUser.objects.get(username=user_name)
  2256. page = int(request.POST.get('page'))
  2257. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2258. equip_list = Equip.objects.filter(equip_type=6, equip_user=current_user)
  2259. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2260. # 代理商
  2261. equip_list = Equip.objects.filter(equip_type=6, equip_agency=current_user.user_agency)
  2262. else:
  2263. equip_list = Equip.objects.filter(equip_type=6)
  2264. data = []
  2265. jk_token = JKtoken.objects.get(id=2)
  2266. for x in equip_list:
  2267. data.append({"equip_name":x.equip_name, "equip_id":x.equip_id + ":1","equip_token":jk_token.token})
  2268. nums = len(data)
  2269. ids = data[(10*(page-1)):(page*10)]
  2270. data = {'data': data, 'nums': nums}
  2271. data = json.dumps(data, cls=CJSONEncoder)
  2272. return HttpResponse(data)
  2273. # 获取监控播放地址视图:
  2274. class jk_equip_list(View):
  2275. def post(self, request):
  2276. equip_id = request.POST.get('equip_id')
  2277. x = JKdata.objects.get(equip_id_id=equip_id)
  2278. print(x.id)
  2279. live_list = []
  2280. # 用token和设备id获取直播地址
  2281. live_url = 'https://open.ys7.com/api/lapp/live/address/get'
  2282. live_data = {"accessToken":x.jk_token,
  2283. "source":"%s:1"%x.equip_id}
  2284. print("=================live_data:",live_data)
  2285. live_res = requests.post(live_url,data=live_data)
  2286. # print("-------------------------------:",type(live_res.text))
  2287. live_res = eval(live_res.text)
  2288. print("live_res:",live_res)
  2289. # 如果返回200 则返回直播地址
  2290. if live_res['code'] == "200":
  2291. print("token获取成功")
  2292. live_list.append(live_res)
  2293. # 如果返回其他 则调用获取token之后重新获取直播地址并返回
  2294. else:
  2295. print("token过期重新获取")
  2296. token_url = 'https://open.ys7.com/api/lapp/token/get'
  2297. token_data = {"appKey":"e8ec0d52b4b14628a3daf4b88cbcca2a",
  2298. "appSecret":"d4565abea1cd0b90b59917111dcb37bd"}
  2299. token_res = requests.post(token_url,data=token_data)
  2300. print("token_res1:",token_res.text)
  2301. token_res = eval(token_res.text)
  2302. if token_res["code"] == "200":
  2303. token_res["data"]["accessToken"]
  2304. x.jk_token = token_res["data"]["accessToken"]
  2305. x.upl_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  2306. x.save()
  2307. token = x.jk_token
  2308. print("-----------------token保存成功")
  2309. live_url = 'https://open.ys7.com/api/lapp/live/address/get'
  2310. live_data = {"accessToken":x.jk_token,
  2311. "source":"%s:1"%x.equip_id}
  2312. live_res = requests.post(live_url,data=live_data)
  2313. live_res = eval(live_res.text)
  2314. print("live_res2:",live_res)
  2315. live_list.append(live_res)
  2316. data = live_list
  2317. print("-----------============data:",data)
  2318. data = json.dumps(data, cls=CJSONEncoder)
  2319. return HttpResponse(data)
  2320. #监控图片列表
  2321. class jk_wechat_img(View):
  2322. def post(self, request):
  2323. ret = request.POST.get('ret')
  2324. if ret == "del":
  2325. imei = request.POST.get('id')
  2326. img = JKphoto.objects.filter(id=imei)
  2327. if img:
  2328. img.delete()
  2329. # jk_photo = request.POST.get('jk_photo')
  2330. # if os.path.exists(img.addr) == True:
  2331. # # 删除图片文件
  2332. # os.remove(img.addr)
  2333. data = {"code":200}
  2334. else:
  2335. data = {"code":400}
  2336. data = json.dumps(data)
  2337. return HttpResponse(data)
  2338. else:
  2339. # 获得当前页:
  2340. page = int(request.POST.get('page'))
  2341. print("page:", page)
  2342. # 从数据库中取出照片在服务器存放路径:
  2343. imei = request.POST.get('equip_id')
  2344. img = JKphoto.objects.filter(equip_id=imei)
  2345. nums = img.count()
  2346. img = img[(10*(page-1)):(page*10)]
  2347. equip_name = Equip.objects.get(equip_id=imei)
  2348. # 当前用户:返回用户,前端判断是否显示删除图片按钮
  2349. current_user = request.session.get('username')
  2350. print("current_user:", current_user)
  2351. img_dat = [{"upl_time": x.upl_time,
  2352. "addr": x.addr}for x in img]
  2353. dat = {'img':img_dat,
  2354. 'nums':nums,
  2355. 'equip_name':equip_name.equip_name,
  2356. 'equip_id':imei,
  2357. 'id':equip_name.id
  2358. }
  2359. data = json.dumps(dat, cls=CJSONEncoder, indent=4)
  2360. print("data:",data)
  2361. return HttpResponse(data)
  2362. #诱捕器设备列表
  2363. class ybq_equip_list(View):
  2364. def post(self, request):
  2365. page = int(request.POST.get('page'))
  2366. print("page:", page)
  2367. equip_name = request.POST.get("equip_name")
  2368. print("equip_name:", equip_name)
  2369. equip_id = request.POST.get("equip_id")
  2370. print("equip_id:", equip_id)
  2371. # 读取当前用户:
  2372. current_user = request.POST.get("username")
  2373. print("current_user:", current_user)
  2374. current_user = MyUser.objects.get(username=current_user)
  2375. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username
  2376. print("---不是管理员")
  2377. sta1 = YBQstatus.objects.filter(equip_id__equip_user=current_user)
  2378. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2379. print("---代理商")
  2380. sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  2381. else:
  2382. print("---管理员")
  2383. sta1 = YBQstatus.objects.all()
  2384. if equip_id or equip_name:
  2385. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2386. print("---不是管理员")
  2387. # 000:
  2388. if equip_name == "" and equip_id == "":
  2389. sta1 = YBQstatus.objects.filter(
  2390. equip_id__equip_user=current_user)
  2391. # 010:
  2392. elif equip_name == "" and equip_id != "":
  2393. sta1 = YBQstatus.objects.filter(
  2394. equip_id__equip_user=current_user, equip_id__equip_id__contains=equip_id)
  2395. # 100:
  2396. elif equip_name != "" and equip_id == "":
  2397. sta1 = YBQstatus.objects.filter(
  2398. equip_id__equip_user=current_user, equip_id__equip_name__contains=equip_name)
  2399. # 110:
  2400. elif equip_name != "" and equip_id != "":
  2401. sta1 = YBQstatus.objects.filter(
  2402. equip_id__equip_user=current_user, equip_id__equip_name__contains=equip_name, equip_id__equip_id__contains=f_id)
  2403. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2404. print("---代理商")
  2405. # 000:
  2406. if equip_name == "" and equip_id == "":
  2407. sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  2408. # 010:
  2409. elif equip_name == "" and equip_id != "":
  2410. sta1 = YBQstatus.objects.filter(
  2411. equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=equip_id)
  2412. # 100:
  2413. elif equip_name != "" and equip_id == "":
  2414. sta1 = YBQstatus.objects.filter(
  2415. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=equip_name)
  2416. # 110:
  2417. elif equip_name != "" and equip_id != "":
  2418. sta1 = YBQstatus.objects.filter(
  2419. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=equip_name, equip_id__equip_id__contains=equip_id)
  2420. else:
  2421. print("---管理员")
  2422. # 000:
  2423. if equip_name == "" and equip_id == "":
  2424. sta1 = YBQstatus.objects.all()
  2425. # 010:
  2426. elif equip_name == "" and equip_id != "":
  2427. sta1 = YBQstatus.objects.filter(
  2428. equip_id__equip_id__contains=equip_id)
  2429. # 100:
  2430. elif equip_name != "" and equip_id == "":
  2431. sta1 = YBQstatus.objects.filter(
  2432. equip_id__equip_name__contains=equip_name)
  2433. # 110:
  2434. elif equip_name != "" and equip_id != "":
  2435. sta1 = YBQstatus.objects.filter(
  2436. equip_id__equip_name__contains=equip_name, equip_id__equip_id__contains=equip_id)
  2437. dat = [{"sex_trap": eval(x.ybq_status), "upl_time": x.upl_time,
  2438. "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  2439. data = {"nums":sta1.count(),"dat":dat[(10*(page-1)):(page*10)]}
  2440. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  2441. # print("data:",data)
  2442. return HttpResponse(data)
  2443. # 诱捕器详情页面:
  2444. class ybq_equip_detail(View):
  2445. def post(self,request):
  2446. equip_id = request.POST.get("equip_id")
  2447. ret = request.POST.get("ret")
  2448. if ret == "detail": #数据详情
  2449. ybq_list = YBQstatus.objects.get(equip_id_id=equip_id)
  2450. data = {"sex_trap": eval(ybq_list.ybq_status) , "upl_time": ybq_list.upl_time,
  2451. "equip_name": ybq_list.equip_id.equip_name,"is_online": ybq_list.is_online, "off_time": ybq_list.off_time}
  2452. elif ret == "history": #历史记录
  2453. page = int(request.POST.get("page"))
  2454. ybq_list = YBQdata.objects.filter(equip_id_id=equip_id)
  2455. begin_time = request.POST.get('begin_time')
  2456. end_time = request.POST.get('end_time')
  2457. if begin_time:
  2458. #时间转换
  2459. begindate = re.findall(r"\d+\.?\d*", begin_time)
  2460. enddate = re.findall(r"\d+\.?\d*", end_time)
  2461. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  2462. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  2463. print("start_date:", start_date)
  2464. print("end_date:", end_date)
  2465. ybq_list = YBQdata.objects.filter(equip_id_id=equip_id, upl_time__range=(start_date, end_date))
  2466. nums = ybq_list.count()
  2467. dat = []
  2468. # 获得当前页:
  2469. print("page:", page)
  2470. for i in ybq_list:
  2471. dat.append({"sex_trap": i.ybq_data, "upl_time": i.upl_time})
  2472. data = {"dat":dat[(10*(page-1)):(page*10)],"nums":nums}
  2473. elif ret == "photo": #照片列表
  2474. ybq_list = YBQphoto.objects.filter(equip_id=equip_id)
  2475. page = int(request.POST.get("page"))
  2476. dat = []
  2477. for i in ybq_list:
  2478. dat.append({
  2479. "equip_id":i.equip_id,"time":i.upl_time,"addr":i.addr,"describe":i.describe
  2480. })
  2481. data = {"nums":len(dat),"dat":dat[(10*(page-1)):(page*10)]}
  2482. elif ret == "del_img": #删除图片
  2483. img_list = request.POST.get('addrlist')
  2484. if img_list:
  2485. print("img_list:",type(eval(img_list)))
  2486. print("img_list:",eval(img_list))
  2487. for i in eval(img_list):
  2488. if os.path.exists(i) == True:
  2489. # 删除图片文件
  2490. os.remove(i)
  2491. # 删除数据库照片列表中,照片路径:
  2492. try:
  2493. CBDphoto.objects.filter(equip_id=equip_id, addr=i).delete()
  2494. print("-----image delete ok!-----")
  2495. except:
  2496. print("-----image delete failed!-----")
  2497. else:
  2498. # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉
  2499. # 因此不管何时都删除数据库路径
  2500. try:
  2501. CBDphoto.objects.filter(equip_id=equip_id, addr=i).delete()
  2502. except Exception as e:
  2503. print("========>>",e)
  2504. print("-----image not exist!-----")
  2505. data = {"code":200}
  2506. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  2507. return HttpResponse(data)
  2508. # 诱捕器一型mqtt下发控制:
  2509. class ybq_equip_mqtt_v1(View):
  2510. def post(self, request):
  2511. ret = request.POST.get('ret')
  2512. imei = request.POST.get('equip_id')
  2513. # 刷新
  2514. if ret == "data":
  2515. payload = {"cmd":"read","ext":"data"}
  2516. # 查询服务器配置
  2517. elif ret == "serverconf":
  2518. payload = {"cmd":"read","ext":"serverconf"}
  2519. # 设置上传时间间隔
  2520. elif ret == "data_tim":
  2521. dat_f = request.POST.get('dat_f')
  2522. payload = {"cmd":"set","ext":{"type":"data_tim","dat_f":int(dat_f)}}
  2523. # 清网
  2524. elif ret == "clearnet":
  2525. payload = {"cmd":"ctrl","ext":"clearnet"}
  2526. # 开启时控
  2527. elif ret == "work_tim1":
  2528. st = request.POST.get('st')
  2529. et = request.POST.get('et')
  2530. payload = {"cmd":"set","ext":{"type":"work_tim","timctrl":1,"st":int(st),"et":int(et)}}
  2531. # 关闭时控
  2532. elif ret == "work_tim0":
  2533. payload = {"cmd":"set","ext":{"type":"work_tim","timctrl":0,"st":20,"et":2}}
  2534. # 关闭
  2535. elif ret == "ds0":
  2536. payload = {"cmd":"ctrl","ext":{"type":"power","ds":0}}
  2537. # 开启
  2538. elif ret == "ds1":
  2539. payload = {"cmd":"ctrl","ext":{"type":"power","ds":1}}
  2540. # 重启
  2541. elif ret == "reboot":
  2542. payload = {"cmd":"reboot"}
  2543. # 升级
  2544. elif ret == "update":
  2545. payload = {"cmd":"update"}
  2546. topic = "yfkj/xycb/s2c/"+imei
  2547. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2548. print(json.dumps(payload, indent=1))
  2549. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2550. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2551. print("res.status_code:", type(res.status_code))
  2552. # data = json.dumps(data)
  2553. return HttpResponse(res.status_code)
  2554. #诱捕器二型mqtt下发控制
  2555. class ybq_equip_mqtt_v2(View):
  2556. def post(self, request):
  2557. ret = request.POST.get('ret')
  2558. imei = request.POST.get('equip_id')
  2559. # 刷新
  2560. if ret == "data":
  2561. payload = {"cmd":"read","ext":"data"}
  2562. # 查询mqtt网络配置
  2563. elif ret == "mqttconf":
  2564. payload = {"cmd":"read","ext":"mqttconf"}
  2565. # 拍照
  2566. elif ret == "takephoto":
  2567. payload = {"cmd":"ctrl","ext":{"takephoto":"1"}}
  2568. # 卷沾虫板:
  2569. elif ret == "turn":
  2570. payload = {"cmd":"ctrl","ext":{"turn":"1"}}
  2571. # 测试性诱剂
  2572. elif ret == "move":
  2573. payload = {"cmd":"ctrl","ext":{"move":"1"}}
  2574. # 下发12V重新上电:
  2575. elif ret == "repower":
  2576. payload = {"cmd":"repower"}
  2577. # 关闭:
  2578. elif ret == "ds0":
  2579. payload = {"cmd":"ctrl","ext":{"ds":"0"}}
  2580. # 开启:
  2581. elif ret == "ds1":
  2582. payload = {"cmd":"ctrl","ext":{"ds":"1"}}
  2583. # 重启
  2584. elif ret == "reboot":
  2585. payload = {"cmd":"reboot"}
  2586. # 升级
  2587. elif ret == "update":
  2588. payload = {"cmd":"update"}
  2589. # 下发设置循环工作模式-间隔时间:
  2590. elif ret == "photoset":
  2591. pic_t = request.POST.get('pic_t')
  2592. pic_f = request.POST.get('pic_f')
  2593. payload = {"cmd":"set","ext":{"type":"photo","pic_t":pic_t,"pic_f":pic_f}}
  2594. # 设置定时卷沾虫板:
  2595. elif ret == "turnset":
  2596. turn_t = request.POST.get('turn_t')
  2597. payload = {"cmd":"set","ext":{"type":"turn","turn_t":turn_t}}
  2598. topic = "yfkj/xycb/s2c/"+imei #[1:-1]
  2599. cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1}
  2600. print(json.dumps(payload, indent=1))
  2601. res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish",
  2602. data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2603. # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish",
  2604. # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019"))
  2605. print("res.status_code:", type(res.status_code))
  2606. return HttpResponse(res.status_code)
  2607. # 诱捕器温湿度图
  2608. class ybq_line_chart(View):
  2609. def post(self, request):
  2610. begin_time = request.POST.get('begin_time')
  2611. end_time = request.POST.get('end_time')
  2612. print("begin_time:", begin_time)
  2613. print("end_time:", end_time)
  2614. equip_id = request.POST.get('e_id')
  2615. print("equip_id:", equip_id)
  2616. # 获取当前日期:
  2617. now_time = datetime.datetime.now()
  2618. print("当前日期为:",now_time)
  2619. print("当前月为:",now_time.month)
  2620. sta1 = YBQdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values()
  2621. if begin_time:
  2622. begindate = re.findall(r"\d+\.?\d*", begin_time)
  2623. enddate = re.findall(r"\d+\.?\d*", end_time)
  2624. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  2625. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  2626. print("start_date:", start_date)
  2627. print("end_date:", end_date)
  2628. sta1 = YBQdata.objects.filter(
  2629. equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
  2630. sta2 = [{"at": eval(x['ybq_data'])['at'],
  2631. "ah": eval(x['ybq_data'])['ah'],
  2632. "cpu_tmp": eval(x['ybq_data'])['cpu_tmp'],
  2633. "tim": x['upl_time']} for x in sta1]
  2634. data = json.dumps(sta2, cls=CJSONEncoder)
  2635. return HttpResponse(data)
  2636. #微信虫害识别
  2637. class wechat_insect_discern(View):
  2638. def post(self,request):
  2639. imageFile = request.FILES.get('imagefile')
  2640. imageFile = {"imageFile":imageFile}
  2641. print("imageFile",imageFile)
  2642. username = 'yunfei'
  2643. uniqueKey = '84e6eb40f3a616dd14b1fefc75425006'
  2644. url = 'http://47.99.110.100:8080/recognizationSys/api/recognization'
  2645. data = {'imageType':'1','gis':'118.279643#31.221456','username':username,'uniqueKey':uniqueKey}
  2646. res = requests.post(url,data=data,files=imageFile)
  2647. return HttpResponse(res.text)
  2648. #微信病害识别
  2649. class wechat_plant_discern(View):
  2650. def post(self,request):
  2651. imageFile = request.FILES.get('imagefile')
  2652. imageFile = {"imageFile":imageFile}
  2653. username = 'yunfei'
  2654. uniqueKey = '84e6eb40f3a616dd14b1fefc75425006'
  2655. url = 'http://47.99.110.100:8080/recognizationSys/api/recognization'
  2656. data = {'imageType':'2','gis':'118.279643#31.221456','username':username,'uniqueKey':uniqueKey}
  2657. res = requests.post(url,data=data,files=imageFile)
  2658. return HttpResponse(res.text)
  2659. #测报灯害虫短新预警设置
  2660. class wechat_pest(View):
  2661. def get(self,request):
  2662. pest_list = copy.deepcopy(insect_dict_new)
  2663. valus = list(pest_list.values())
  2664. keys = list(pest_list.keys())
  2665. data = []
  2666. for i in range(len(valus)):
  2667. dicts = {"name":"","vauls":""}
  2668. dicts["name"] = valus[i]
  2669. dicts["vauls"]= keys[i]
  2670. data.append(dicts)
  2671. data = json.dumps(data)
  2672. return HttpResponse(data)
  2673. def post (self,request):
  2674. pestCategory = request.POST.get("pestCategory")
  2675. pestCategoryNum = request.POST.get("pestCategoryNum")
  2676. appointPest = request.POST.get("appointPest")
  2677. appointPestName1 = request.POST.get("appointPestName1")
  2678. appointPestNum1 = request.POST.get("appointPestNum1")
  2679. pestTotal = request.POST.get("pestTotal")
  2680. pestTotalNum = request.POST.get("pestTotalNum")
  2681. pestWarn = request.POST.get("pestWarn")
  2682. phone = request.POST.get("phone")
  2683. print("phone",phone)
  2684. equip_id = request.POST.get("equip_id")
  2685. print("equip_id",equip_id)
  2686. mobile_pat = re.compile('^(13\d|14[5|7]|15\d|166|17\d|18\d)\d{8}$')
  2687. res = re.search(mobile_pat,phone)
  2688. if res:
  2689. if appointPestName1:
  2690. appointPestName1 = "".join(appointPestName1.split(","))[:-1]
  2691. if appointPestNum1:
  2692. appointPestNum1 = "".join(appointPestNum1.split(","))[:-1]
  2693. dat = {"pestCategory":pestCategory,"pestCategoryNum":pestCategoryNum,"appointPest":appointPest,
  2694. "appointPestName":appointPestName1,"appointPestNum":appointPestNum1,"pestTotal":pestTotal,
  2695. "pestTotalNum":pestTotalNum,"pestWarn":pestWarn,"phone":phone}
  2696. dat = json.dumps(dat)
  2697. equip_id = Equip.objects.get(equip_id=equip_id)
  2698. if Msg_Conf.objects.filter(equip_id=equip_id).exists():
  2699. msgconf = Msg_Conf.objects.get(equip_id=equip_id)
  2700. msgconf.conf = dat
  2701. msgconf.save()
  2702. else:
  2703. Msg_Conf.objects.create(equip_id=equip_id,conf=dat)
  2704. data = 0
  2705. else:
  2706. data = 1
  2707. return HttpResponse(data)
  2708. #测报灯害虫短新预警数据返现
  2709. class wechat_pest_list(View):
  2710. def post (self,request):
  2711. equip_id = request.POST.get("equip_id")
  2712. cbd_pest = Msg_Conf.objects.filter(equip_id=equip_id).values()
  2713. data = []
  2714. date = []
  2715. if cbd_pest:
  2716. for i in cbd_pest :
  2717. dat = eval(i["conf"])
  2718. appointPestName = dat["appointPestName"]
  2719. appointPestNum = dat["appointPestNum"]
  2720. if appointPestName.find("#") != -1:
  2721. pic_list = appointPestName.split("#")
  2722. for x in pic_list:
  2723. data.append(insect_dict_new[x])
  2724. else:
  2725. if appointPestName != "0" and appointPestName != '':
  2726. data.append(insect_dict_new[appointPestName])
  2727. else:
  2728. data.append(appointPestName)
  2729. if appointPestNum.find("#") != -1:
  2730. pic_list = appointPestNum.split("#")
  2731. for x in pic_list:
  2732. date.append(x)
  2733. else:
  2734. if appointPestNum != "0" and appointPestNum != '':
  2735. date.append(appointPestNum)
  2736. else:
  2737. date.append(appointPestNum)
  2738. data = {"pestCategory":dat["pestCategory"],"pestCategoryNum":dat["pestCategoryNum"],
  2739. "appointPest":dat["appointPest"],"appointPestName":data,"appointPestNum":date,
  2740. "pestTotal":dat["pestTotal"],"pestTotalNum":dat["pestTotalNum"],"pestWarn":dat["pestWarn"],"phone":dat["phone"]}
  2741. else:
  2742. data = {"data":0}
  2743. data = json.dumps(data)
  2744. return HttpResponse(data)
  2745. #sim信息
  2746. class scd_sim_list(View):
  2747. def post(self,request):
  2748. user_name = request.POST.get("username")
  2749. page = int(request.POST.get("page"))
  2750. current_user = MyUser.objects.get(username=user_name)
  2751. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2752. print("---用户")
  2753. sta = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user)
  2754. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2755. print("---代理商")
  2756. sta = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency)
  2757. else:
  2758. print("---管理员")
  2759. sta = Equip_SimInfo.objects.all()
  2760. siminfos = []
  2761. nums = len(sta)
  2762. for i in sta:
  2763. siminfos.append({
  2764. "equip_id":i.equip_id.equip_id,
  2765. "equip_name":i.equip_name,
  2766. "equip_type":i.equip_type,
  2767. "iccid":i.iccid,
  2768. "carrier":i.carrier,
  2769. "data_plan":i.data_plan,
  2770. "data_usage":i.data_usage,
  2771. "account_status":i.account_status,
  2772. "expiry_date":i.expiry_date,
  2773. "data_balance":i.data_balance
  2774. })
  2775. equip_ids=siminfos[(10*(page-1)):(page*10)]
  2776. data = {"dat":equip_ids,"nums":nums}
  2777. data = json.dumps(data,indent=4)
  2778. return HttpResponse(data)
  2779. #地图设备分布
  2780. class wechat_equip_map(View):
  2781. def post(self, request):
  2782. current_user = request.POST.get('username')
  2783. print("请求定位信息!!!")
  2784. print("current_user:", current_user)
  2785. current_user = MyUser.objects.get(username=current_user)
  2786. ret = request.POST.get('ret')
  2787. print("ret:", ret)
  2788. # page = int(request.POST.get('page'))
  2789. # print("page",page)
  2790. if ret == "cbd":
  2791. print("请求测报灯定位!")
  2792. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2793. print("---不是管理员")
  2794. sta1 = RecentCBDdata.objects.filter(equip_id__equip_user=current_user).values()
  2795. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2796. print("---代理商")
  2797. sta1 = RecentCBDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values()
  2798. else:
  2799. print("---管理员")
  2800. sta1 = RecentCBDdata.objects.all().values()
  2801. sta2 = []
  2802. for x in sta1:
  2803. try:
  2804. sta2.append({
  2805. "equip_id": x['equip_id_id'],
  2806. "equip_type": 3,
  2807. "equip_name": x['equip_name'],
  2808. "gps": eval(x['cbd_data'])['gps'],
  2809. "lng": eval(x['cbd_data'])['lng'],
  2810. "lat": eval(x['cbd_data'])['lat']
  2811. })
  2812. except:
  2813. sta2.append({
  2814. "equip_id": x['equip_id_id'],
  2815. "equip_type": 3,
  2816. "equip_name": x['equip_name'],
  2817. "gps": 2,
  2818. "lng": eval(x['cbd_data'])['lng'],
  2819. "lat": eval(x['cbd_data'])['lat']
  2820. })
  2821. # sta2 = [{
  2822. # "equip_id": x['equip_id_id'],
  2823. # "equip_type": 3,
  2824. # "equip_name": x['equip_name'],
  2825. # "lng": eval(x['cbd_data'])['lng'],
  2826. # "lat": eval(x['cbd_data'])['lat']
  2827. # } for x in sta1]
  2828. data = json.dumps(sta2)
  2829. # print("data:", data)
  2830. return HttpResponse(data)
  2831. elif ret == "scd":
  2832. print("请求杀虫灯定位!")
  2833. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2834. print("---不是管理员")
  2835. sta1 = RecentSCDdata.objects.filter(
  2836. equip_id__equip_user=current_user).values()
  2837. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2838. print("---代理商")
  2839. sta1 = RecentSCDdata.objects.filter(equip_id__equip_agency=current_user.user_agency).values()
  2840. else:
  2841. print("---管理员")
  2842. sta1 = RecentSCDdata.objects.all().values()
  2843. sta2 = []
  2844. a = datetime.datetime.now()
  2845. for x in sta1:
  2846. try:
  2847. sta2.append({
  2848. "equip_id": x['equip_id_id'],
  2849. "equip_type": 2,
  2850. "equip_name": x['equip_name'],
  2851. "gps": eval(x['scd_data'])['gps'],
  2852. "lng": eval(x['scd_data'])['lng'],
  2853. "lat": eval(x['scd_data'])['lat']
  2854. })
  2855. except:
  2856. sta2.append({
  2857. "equip_id": x['equip_id_id'],
  2858. "equip_type": 2,
  2859. "equip_name": x['equip_name'],
  2860. "gps": 2,
  2861. "lng": 113,
  2862. "lat": 34
  2863. })
  2864. print("消耗时间为",datetime.datetime.now()-a)
  2865. data = json.dumps(sta2)
  2866. # print("data:", data)
  2867. return HttpResponse(data)
  2868. elif ret == "qxz":
  2869. print("请求气象站定位!")
  2870. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2871. print("---不是管理员")
  2872. sta1 = QXZ_Base_Info.objects.filter(
  2873. equip_id__equip_user=current_user)
  2874. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2875. print("---代理商")
  2876. sta1 = QXZ_Base_Info.objects.filter(equip_id__equip_agency=current_user.user_agency)
  2877. else:
  2878. print("---管理员")
  2879. sta1 = QXZ_Base_Info.objects.all()
  2880. sta2 = [{
  2881. "equip_id": x.equip_id_id,
  2882. "equip_type": 5,
  2883. "equip_name": x.equip_id.equip_name,
  2884. "lng": x.lng,
  2885. "lat": x.lat
  2886. } for x in sta1]
  2887. data = json.dumps(sta2)
  2888. # print("data:", data)
  2889. return HttpResponse(data)
  2890. elif ret == "bzy":
  2891. print("请求孢子仪定位!")
  2892. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2893. print("---不是管理员")
  2894. sta1 = BZYstatus.objects.filter(
  2895. equip_id__equip_user=current_user)
  2896. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2897. print("---代理商")
  2898. sta1 = BZYstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  2899. else:
  2900. print("---管理员")
  2901. sta1 = BZYstatus.objects.all()
  2902. sta2 = [{
  2903. "equip_id": x.equip_id_id,
  2904. "equip_type": 7,
  2905. "equip_name": x.equip_id.equip_name,
  2906. "lng": eval(x.bzy_status)['lng'],
  2907. "lat": eval(x.bzy_status)['lat']
  2908. } for x in sta1]
  2909. data = json.dumps(sta2)
  2910. # print("data:", data)
  2911. return HttpResponse(data)
  2912. elif ret == "xyq":
  2913. print("请求性诱设备定位!")
  2914. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2915. print("---不是管理员")
  2916. sta1 = YBQstatus.objects.filter(
  2917. equip_id__equip_user=current_user)
  2918. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2919. print("---代理商")
  2920. sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  2921. else:
  2922. print("---管理员")
  2923. sta1 = YBQstatus.objects.all()
  2924. sta2 = []
  2925. for x in sta1:
  2926. try:
  2927. sta2.append({
  2928. "equip_id": x.equip_id.equip_id,
  2929. "equip_type": 4,
  2930. "equip_name": x.equip_id.equip_name,
  2931. "gps": eval(x.ybq_status)['gps'],
  2932. "lng": x.lng,
  2933. "lat": x.lat
  2934. })
  2935. except:
  2936. sta2.append({
  2937. "equip_id": x.equip_id.equip_id,
  2938. "equip_type": 4,
  2939. "equip_name": x.equip_id.equip_name,
  2940. "gps": 2,
  2941. "lng": x.lng,
  2942. "lat": x.lat
  2943. })
  2944. # sta2 = [{
  2945. # "equip_id": x.equip_id_id,
  2946. # "equip_type": 4,
  2947. # "equip_code": x.equip_code,
  2948. # "lng": eval(x.ybq_status)['lng'],
  2949. # "lat": eval(x.ybq_status)['lat']
  2950. # } for x in sta1]
  2951. data = json.dumps(sta2)
  2952. # print("data:", data)
  2953. return HttpResponse(data)
  2954. elif ret == "imei":
  2955. print("imei搜索定位!")
  2956. equip_id = request.POST.get('equip_id')
  2957. print("equip_id:", equip_id)
  2958. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  2959. # 非管理员筛选出当前用户:
  2960. scd_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2'))
  2961. cbd_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3'))
  2962. bzy_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='7'))
  2963. qxz_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='5'))
  2964. xyq_equips = Equip.objects.filter(equip_user=current_user,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='4'))
  2965. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  2966. # 代理商用户
  2967. scd_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2'))
  2968. cbd_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3'))
  2969. bzy_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='7'))
  2970. qxz_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='5'))
  2971. xyq_equips = Equip.objects.filter(equip_agency=current_user.user_agency,equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='4'))
  2972. else:
  2973. # 管理员用户
  2974. scd_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='2'))
  2975. cbd_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='3'))
  2976. bzy_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='7'))
  2977. qxz_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='5'))
  2978. xyq_equips = Equip.objects.filter(equip_id__contains=equip_id, equip_type=Equip_type.objects.get(type_id='4'))
  2979. if not scd_equips and not cbd_equips and not bzy_equips and not qxz_equips and not xyq_equips:
  2980. sta5 = 0
  2981. data = json.dumps(sta5)
  2982. return HttpResponse(data)
  2983. # print("scd_equips:", scd_equips)
  2984. # print("cbd_equips:", cbd_equips)
  2985. else:
  2986. sta2 = []
  2987. if scd_equips:
  2988. for i in scd_equips:
  2989. sta1 = SCDstatus.objects.filter(
  2990. equip_id__equip_id__contains=equip_id)
  2991. for x in sta1:
  2992. try:
  2993. sta2.append({
  2994. "equip_id": x.equip_id.equip_id,
  2995. "equip_type": x.equip_id.equip_type.type_id,
  2996. "equip_name": x.equip_id.equip_name,
  2997. "gps": eval(x.scd_status)['gps'],
  2998. "lng": x.lng,
  2999. "lat": x.lat,
  3000. "equip_location": x.equip_location
  3001. })
  3002. except:
  3003. sta2.append({
  3004. "equip_id": x.equip_id.equip_id,
  3005. "equip_type": x.equip_id.equip_type.type_id,
  3006. "equip_name": x.equip_id.equip_name,
  3007. "gps": 2,
  3008. "lng": x.lng,
  3009. "lat": x.lat,
  3010. "equip_location": x.equip_location
  3011. })
  3012. sta4 = []
  3013. if cbd_equips:
  3014. for i in cbd_equips:
  3015. sta3 = CBDstatus.objects.filter(
  3016. equip_id__equip_id__contains=equip_id)
  3017. for x in sta3:
  3018. try:
  3019. sta4.append({
  3020. "equip_id": x.equip_id.equip_id,
  3021. "equip_type": 3,
  3022. "equip_name": x.equip_id.equip_name,
  3023. "gps": eval(x.cbd_status)['gps'],
  3024. "lng": x.lng,
  3025. "lat": x.lat,
  3026. "equip_location": x.equip_location
  3027. })
  3028. except:
  3029. sta4.append({
  3030. "equip_id": x.equip_id.equip_id,
  3031. "equip_type": 3,
  3032. "equip_name": x.equip_id.equip_name,
  3033. "gps": 2,
  3034. "lng": x.lng,
  3035. "lat": x.lat,
  3036. "equip_location": x.equip_location
  3037. })
  3038. sta7 = []
  3039. if bzy_equips:
  3040. for i in bzy_equips:
  3041. sta6 = BZYstatus.objects.filter(
  3042. equip_id__equip_id__contains=equip_id)
  3043. for x in sta6:
  3044. try:
  3045. sta7.append({
  3046. "equip_id": x.equip_id.equip_id,
  3047. "equip_type": 7,
  3048. "equip_name": x.equip_id.equip_name,
  3049. "lng": eval(x.bzy_status)['lng'],
  3050. "lat": eval(x.bzy_status)['lat'],
  3051. # "equip_location": x.equip_location
  3052. })
  3053. except:
  3054. sta7.append({
  3055. "equip_id": x.equip_id.equip_id,
  3056. "equip_type": 7,
  3057. "equip_name": x.equip_id.equip_name,
  3058. "lng": 113,
  3059. "lat": 34
  3060. # "lng": eval(x.bzy_status)['lng'],
  3061. # "lat": eval(x.bzy_status)['lat'],
  3062. # "equip_location": x.equip_location
  3063. })
  3064. sta9 = []
  3065. if qxz_equips:
  3066. for i in qxz_equips:
  3067. sta8 = QXZ_Base_Info.objects.filter(
  3068. equip_id__equip_id__contains=equip_id)
  3069. for x in sta8:
  3070. try:
  3071. sta9.append({
  3072. "equip_id": x.equip_id.equip_id,
  3073. "equip_type": 5,
  3074. "equip_name": x.equip_id.equip_name,
  3075. "lng": x.lng,
  3076. "lat": x.lat,
  3077. # "equip_location": x.equip_location
  3078. })
  3079. except:
  3080. sta9.append({
  3081. "equip_id": x.equip_id.equip_id,
  3082. "equip_type": 5,
  3083. "equip_name": x.equip_id.equip_name,
  3084. "lng": x.lng,
  3085. "lat": x.lat,
  3086. # "equip_location": x.equip_location
  3087. })
  3088. sta11 = []
  3089. if xyq_equips:
  3090. for i in xyq_equips:
  3091. sta10 = YBQstatus.objects.filter(
  3092. equip_id__equip_id__contains=equip_id)
  3093. for x in sta10:
  3094. try:
  3095. sta11.append({
  3096. "equip_id": x.equip_id.equip_id,
  3097. "equip_type": 4,
  3098. "equip_name": x.equip_id.equip_name,
  3099. "gps": eval(x.ybq_status)['gps'],
  3100. "lng": x.lng,
  3101. "lat": x.lat,
  3102. "equip_location": x.equip_location
  3103. })
  3104. except:
  3105. sta11.append({
  3106. "equip_id": x.equip_id.equip_id,
  3107. "equip_type": 4,
  3108. "equip_name": x.equip_id.equip_name,
  3109. "gps": 2,
  3110. "lng": x.lng,
  3111. "lat": x.lat,
  3112. "equip_location": x.equip_location
  3113. })
  3114. # sta4 = [{
  3115. # "equip_id": x.equip_id.equip_id,
  3116. # "equip_type": x.equip_id.equip_type.type_id,
  3117. # "equip_name": x.equip_id.equip_name,
  3118. # "lng": x.lng,
  3119. # "lat": x.lat,
  3120. # "equip_location": x.equip_location
  3121. # } for x in sta3]
  3122. sta5 = sta2+sta4+sta7+sta9+sta11
  3123. data = json.dumps(sta5)
  3124. return HttpResponse(data)
  3125. #用户管理,用户页面
  3126. class wechat_user_list(View):
  3127. def post(self,request):
  3128. user_name = request.POST.get("username")
  3129. page = int(request.POST.get('page'))
  3130. print("page:", page)
  3131. ret = request.POST.get("ret")
  3132. print("user_name",user_name)
  3133. user_list = []
  3134. try:
  3135. current_user = MyUser.objects.get(username=user_name)
  3136. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  3137. pass
  3138. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  3139. print("----代理商")
  3140. # 搜索条件为空,获取所有用户
  3141. if ret == '':
  3142. user_list = MyUser.objects.filter(user_agency=current_user.user_agency)
  3143. # 搜索条件存在,根据用户名搜索用户
  3144. elif ret != '':
  3145. user_list = MyUser.objects.filter(user_agency=current_user.user_agency,username__contains=ret)
  3146. else:
  3147. print("----管理员")
  3148. # 搜索条件为空,获取所有用户
  3149. if ret == '':
  3150. user_list = MyUser.objects.all()
  3151. # 搜索条件存在,根据用户名搜索用户
  3152. elif ret != '':
  3153. user_list = MyUser.objects.filter(username__contains=ret)
  3154. except Exception as e:
  3155. print(e)
  3156. dat = []
  3157. nums = len(user_list)
  3158. for i in user_list[(10*(page-1)):(page*10)]:
  3159. sta1 = MyUser.objects.filter(username=i.username)
  3160. try:
  3161. for x in sta1:
  3162. if x.is_superuser == 1 and x.is_staff == 1:
  3163. role = "超级管理员"
  3164. elif x.is_superuser == 0 and x.is_staff == 1:
  3165. role = "管理员"
  3166. elif x.is_superuser == 0 and x.is_staff == 0:
  3167. role = "用户"
  3168. sta2 = {"userId": x.id, "user_name": x.username, "user_email": x.email,
  3169. "user_type": role}
  3170. except AttributeError:
  3171. for x in sta1:
  3172. if x.is_superuser == 1 and x.is_staff == 1:
  3173. role = "超级管理员"
  3174. elif x.is_superuser == 0 and x.is_staff == 1:
  3175. role = "管理员"
  3176. elif x.is_superuser == 0 and x.is_staff == 0:
  3177. role = "用户"
  3178. sta2 = {"userId": x.id, "user_name": x.username, "user_email": x.email,
  3179. "user_type": role}
  3180. dat.append(sta2)
  3181. data = {"nums":nums,"dat":dat}
  3182. data = json.dumps(data, cls=CJSONEncoder)
  3183. return HttpResponse(data)
  3184. #用户详情页面
  3185. class wechat_user_detail(View):
  3186. def get(self,request):
  3187. user_group_list = User_Group.objects.all().values()
  3188. data = []
  3189. for i in user_group_list:
  3190. data.append({
  3191. "id":i["id"],
  3192. "name":i["name"]
  3193. })
  3194. data = json.dumps(data)
  3195. return HttpResponse(data)
  3196. def post(self,request):
  3197. userId = request.POST.get("id")
  3198. user_name = MyUser.objects.get(id=userId)
  3199. groups = User_Group.objects.all()
  3200. group_list = []
  3201. for i in groups:
  3202. group_list.append(i.name)
  3203. group = Group.objects.filter(user=user_name)
  3204. if group.count() == 0:
  3205. group_name = ""
  3206. else:
  3207. group_name = group[0].name
  3208. try:
  3209. if user_name.is_superuser == 1 and user_name.is_staff == 1:
  3210. # 超级管理员
  3211. role = 0
  3212. elif user_name.is_superuser == 0 and user_name.is_staff == 1:
  3213. # 管理员
  3214. role = 1
  3215. elif user_name.is_superuser == 0 and user_name.is_staff == 0:
  3216. # 普通用户
  3217. role = 2
  3218. dat = {"userId":user_name.id,
  3219. "username":user_name.username,
  3220. "email":user_name.email,
  3221. "tel":user_name.user_phone,
  3222. "province":user_name.user_pro, # 省
  3223. "city":user_name.user_city, # 市
  3224. "area":user_name.user_area, # 县/区
  3225. "usertype":role,
  3226. "latestTime":user_name.last_login,
  3227. "creatTime":user_name.date_joined,
  3228. "user_groups":group_list,
  3229. "user_group":group_name,
  3230. "user_remark":user_name.user_remark,
  3231. "active":user_name.is_active}
  3232. except AttributeError:
  3233. if user_name.is_superuser == 1 and user_name.is_staff == 1:
  3234. role = 0
  3235. elif user_name.is_superuser == 0 and user_name.is_staff == 1:
  3236. role = 1
  3237. elif user_name.is_superuser == 0 and user_name.is_staff == 0:
  3238. role = 2
  3239. dat = {"userId":user_name.id,
  3240. "username":user_name.username,
  3241. "email":user_name.email,
  3242. "tel":user_name.user_phone,
  3243. "province":user_name.user_pro,
  3244. "city":user_name.user_city,
  3245. "area":user_name.user_area,
  3246. "usertype":role,
  3247. "latestTime":user_name.last_login,
  3248. "creatTime":user_name.date_joined,
  3249. "user_groups":group_list,
  3250. "user_group":group_name,
  3251. "user_remark":user_name.user_remark,
  3252. "active":user_name.is_active}
  3253. data = json.dumps(dat,cls=CJSONEncoder)
  3254. print("data:",data)
  3255. return HttpResponse(data)
  3256. #禁用用户
  3257. class wechat_user_prohibit(View):
  3258. def post(self,request):
  3259. ret = request.POST.get("ret")
  3260. current_user = request.POST.get('username')
  3261. print("current_user:", current_user)
  3262. current_user = MyUser.objects.get(username=current_user)
  3263. if ret == "state":
  3264. # 禁用和启用:
  3265. state = request.POST.get("state")
  3266. print("state:",state)
  3267. try:
  3268. current_user.is_active = state
  3269. current_user.save()
  3270. data = "0"
  3271. except:
  3272. data = "1"
  3273. return HttpResponse(data)
  3274. elif ret == "pwd":
  3275. # 重置密码:
  3276. new_pwd = request.POST.get("password")
  3277. print("new_pwd:",new_pwd)
  3278. try:
  3279. current_user.set_password(new_pwd)
  3280. current_user.save()
  3281. data = "0"
  3282. except:
  3283. data = "1"
  3284. return HttpResponse(data)
  3285. # 设备分配页面
  3286. class wechat_equip_allot(View):
  3287. def post(self,request):
  3288. uname = request.POST.get('username')
  3289. print(uname)
  3290. page = int(request.POST.get('page'))
  3291. ret = request.POST.get("ret")
  3292. print(ret)
  3293. print("page=",page)
  3294. user_list = []
  3295. if ret:
  3296. user_list = MyUser.objects.filter(username__contains=ret)
  3297. else:
  3298. # 接收当前用户
  3299. # current_user = request.session.get('username')
  3300. # print("current_user:", current_user)
  3301. current_user = MyUser.objects.get(username=uname)
  3302. # 判断是经销商还是超级管理员
  3303. if current_user.is_superuser == True or current_user.is_staff == True:
  3304. user_list = MyUser.objects.all().order_by(
  3305. "-date_joined")[(10*(page-1)):(page*10)]
  3306. elif current_user.is_agency:
  3307. user_list = MyUser.objects.filter(user_agency=current_user.user_agency).order_by(
  3308. "-date_joined")[(10*(page-1)):(page*10)]
  3309. # user_list = MyUser.objects.all()
  3310. nums = len(user_list)
  3311. user_list = user_list[(10*(page-1)):(page*10)]
  3312. dat = []
  3313. for x in user_list:
  3314. try:
  3315. sta = {"userid":x.id,"username":x.username,"email":x.email}
  3316. except AttributeError:
  3317. sta = {"userid":x.id,"username":x.username,"email":x.email}
  3318. dat.append(sta)
  3319. data = {'nums':nums,'dat':dat}
  3320. data = json.dumps(data, cls=CJSONEncoder)
  3321. User_Log.objects.create(log_user=request.user.username,
  3322. log_ip=request.META['REMOTE_ADDR'], log_desc='设备分配')
  3323. return HttpResponse(data)
  3324. # 未分配设备列表
  3325. class wechat_equip_allot_list(View):
  3326. def post(self,request):
  3327. userid = request.POST.get('userid')
  3328. print("userid:",userid)
  3329. current_user = MyUser.objects.get(id=userid)
  3330. f_id = request.POST.get('f_id')
  3331. page = int(request.POST.get('page'))
  3332. equip_list = []
  3333. print("page=",page)
  3334. print("current_user",current_user)
  3335. if f_id:
  3336. equip_list = Equip.objects.filter(
  3337. Q(equip_user=None, equip_id__contains=f_id) | Q(equip_user=current_user, equip_id__contains=f_id))
  3338. else:
  3339. # 判断是经销商还是超级管理员
  3340. if current_user.is_superuser == True or current_user.is_staff == True:
  3341. equip_list = Equip.objects.filter(
  3342. Q(equip_user=None) | Q(equip_user=current_user))
  3343. elif current_user.is_agency:
  3344. equip_list = Equip.objects.filter(
  3345. Q(equip_agency=current_user.user_agency, equip_user=None) | Q(equip_agency=current_user.user_agency,
  3346. equip_user=current_user))
  3347. # equip_list = Equip.objects.filter(
  3348. # Q(equip_user=None) | Q(equip_user=user_obj))
  3349. nums = len(equip_list)
  3350. equip_list = equip_list[(10*(page-1)):(page*10)]
  3351. dat = []
  3352. for x in equip_list:
  3353. if x.equip_user == current_user:
  3354. checked = "1"
  3355. else:
  3356. checked = "0"
  3357. try:
  3358. sta = {"checked":checked,
  3359. "equipid":x.equip_id,
  3360. "equipname":x.equip_name,
  3361. "equiptype":'%s'%x.equip_type,
  3362. "equip_add_time":x.equip_add_time,
  3363. "equip_user":'%s'%x.equip_user}
  3364. except AttributeError:
  3365. sta = {"checked":checked,
  3366. "equipid":x.equip_id,
  3367. "equipname":x.equip_name,
  3368. "equiptype":'%s'%x.equip_type,
  3369. "equip_add_time":x.equip_add_time,
  3370. "equip_user":'%s'%x.equip_user}
  3371. dat.append(sta)
  3372. data = {'nums':nums,'dat':dat}
  3373. data = json.dumps(data, cls=CJSONEncoder,sort_keys=True)# sort_keys = True 排序
  3374. return HttpResponse(data)
  3375. # 确认分配
  3376. class wechat_equip_allot_confirm(View):
  3377. def post(self,request):
  3378. userid = request.POST.get('userid')
  3379. user_obj = MyUser.objects.get(id=userid)
  3380. equip_ids = request.POST.get('equip_ids')
  3381. print("equip_ids=", equip_ids)
  3382. equip_ids = json.loads(equip_ids)
  3383. # equip_ids = equip_ids.split(',')
  3384. # print("当前页的所有设备id:equip_ids=", equip_ids)
  3385. # 获得选中的复选框:
  3386. print("user_obj",user_obj)
  3387. check_box_list = request.POST.get('check_box_list')
  3388. print('check_box_list:', check_box_list)
  3389. check_box_list = json.loads(check_box_list)
  3390. no_check_box_list = []
  3391. for i in equip_ids:
  3392. if i in check_box_list:
  3393. pass
  3394. else:
  3395. no_check_box_list.append(i)
  3396. print('no_check_box_list=', no_check_box_list)
  3397. try:
  3398. for checked_id in check_box_list:
  3399. choose_equip = Equip.objects.get(equip_id=checked_id)
  3400. print(choose_equip.equip_user)
  3401. # 如果选中的设备没有用户:即选中的设备 设备用户为None:
  3402. if choose_equip.equip_user == None: # 只有当选中的设备id对应的设备 没有用户时才分配
  3403. choose_equip.equip_user = user_obj
  3404. choose_equip.save() # 保存到数据库
  3405. # 取消分配:给当前用户取消已分配的设备;
  3406. for a in no_check_box_list:
  3407. choose_equip = Equip.objects.get(equip_id=a)
  3408. choose_equip.equip_user = None # 把设备的设备用户改为None,表示取消分配
  3409. choose_equip.save()
  3410. except Exception as e:
  3411. print(e)
  3412. data = "1"
  3413. data = "0"
  3414. User_Log.objects.create(log_user=request.user.username,
  3415. log_ip=request.META['REMOTE_ADDR'], log_desc='设备分配--分配设备')
  3416. return HttpResponse(data)
  3417. #用户反馈
  3418. class wechat_feedback(View):
  3419. def post(self,request):
  3420. name = request.POST.get("name")
  3421. phone = request.POST.get("phone")
  3422. email = request.POST.get("email")
  3423. try:
  3424. countent = request.POST.get("countent")
  3425. Fdb.objects.create(
  3426. fdb_name = name,
  3427. fdb_phone = phone,
  3428. fdb_email = email,
  3429. fdb_content = countent,
  3430. )
  3431. data = 0
  3432. except Exception as e :
  3433. print(e)
  3434. data = 1
  3435. return HttpResponse(data)
  3436. # 病虫害库
  3437. class wechat_plant(View):
  3438. def get(self,request):
  3439. data = json.dumps(insect_dict_new,ensure_ascii=False)
  3440. return HttpResponse(data)
  3441. class tests(View):
  3442. def get(self,request):
  3443. pass
  3444. def post(self,request):
  3445. try:
  3446. now_time = datetime.datetime.now().strftime('%Y%m%d')
  3447. nowtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  3448. post_list = request.body.decode()
  3449. # print("接收到的数据-------->>>>>>",post_list)
  3450. pos = json.loads(post_list)
  3451. print(pos)
  3452. if pos["payload"]["cmd"] == "data" or pos["payload"]["cmd"] == "status" or pos["StationID"] !="" :
  3453. try:
  3454. imei = pos["payload"]["ext"]["imei"]
  3455. except:
  3456. imei = pos["imei"]
  3457. else:
  3458. imei = pos["StationID"]
  3459. print(type(pos))
  3460. path = "logs/"+ imei
  3461. if os.path.exists(path) == False:
  3462. os.makedirs(path)
  3463. f = open('logs/%s/'%imei + now_time +'.txt','a')
  3464. # with open(path,"a") as file: #只需要将之前的”w"改为“a"即可,代表追加内容
  3465. f.write(post_list+"\n")
  3466. f.write(nowtime +"\r\n")
  3467. f.close()
  3468. data = 0
  3469. return HttpResponse(data)
  3470. except Exception as e:
  3471. print(e)
  3472. data = 0
  3473. return HttpResponse(data)
  3474. from apps.ReportManage.all_dict import transpont_equip_cbd,transpont_equip_qxz_li,qxz_dict_li,transpont_equip_qxz_params
  3475. # from nt import mkdir
  3476. # import xlrd, xlwt
  3477. class tbest(View):
  3478. def post(self,request):
  3479. # print(insect_dict_new)
  3480. # post_list = json.loads(request.body.decode())
  3481. imie = "235185770"
  3482. qxz_list = QXZstatus_New.objects.get(equip_id=imie)
  3483. qxz_base = QXZ_Base_Info.objects.get(equip_id=imie)
  3484. if imie in transpont_equip_qxz_li.keys():
  3485. if qxz_list.is_online == "1":
  3486. is_online = "正常"
  3487. else:
  3488. is_online = "异常"
  3489. info = {"sbid":imie,"time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"status":is_online,"type":"环境监测"}
  3490. data = [qxz_list.e1,qxz_list.e2,qxz_list.e3,qxz_list.e4,qxz_list.e5,qxz_list.e6,qxz_list.e7,qxz_list.e8,qxz_list.e9,qxz_list.e10,qxz_list.e11,qxz_list.e12,qxz_list.e13,qxz_list.e14,
  3491. qxz_list.e15,qxz_list.e16,qxz_list.e17,qxz_list.e18,
  3492. qxz_list.e19,qxz_list.e20,qxz_list.e21,qxz_list.e22,
  3493. qxz_list.e23,qxz_list.e24,qxz_list.e25,qxz_list.e26,
  3494. qxz_list.e27,qxz_list.e28,qxz_list.e29,qxz_list.e30]
  3495. test = [i for i in data if i != '']
  3496. iotdata = []
  3497. for i in test:
  3498. qxz = i.split("#")
  3499. qxz_title = qxz_dict_li[qxz[1]]
  3500. iotdata.append({
  3501. "name":qxz_title[1],"value":qxz[0],"unit":qxz_title[2],
  3502. })
  3503. iotdata.append({"name":"dl","value":qxz_base.volt,"unit":"%","name":"xhqd","value":qxz_base.rssi,"unit":""})
  3504. data = {"info":info,"iotdata":iotdata,"Params":transpont_equip_qxz_params[imie]}
  3505. data = json.dumps(data)
  3506. return HttpResponse(data)