json_handle.c 249 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891
  1. #include "json_handle.h"
  2. #include "sqlite_handle.h"
  3. #include "elog.h"
  4. #include <string.h>
  5. #include <time.h>
  6. #include "common.h"
  7. #include "list.h"
  8. #include "file.h"
  9. #include "sys.h"
  10. #include "lock.h"
  11. #include "cascade.h"
  12. #include "netswitch.h"
  13. #define TOTAL_COUNT 60 //计数长度
  14. static const uint8_t base64_enc_map[64] =
  15. {
  16. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
  17. 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
  18. 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
  19. 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
  20. 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
  21. 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
  22. '8', '9', '+', '/'
  23. };
  24. static int base64_len(int n)
  25. {
  26. return ((n / 3) + (n % 3 ? 1 : 0)) * 4 + 1;
  27. }
  28. static int base64_encode(uint8_t *src, size_t slen, uint8_t *dst, size_t dlen)
  29. {
  30. size_t i, n;
  31. int C1, C2, C3;
  32. uint8_t *p;
  33. if( slen == 0 ){
  34. return -1;
  35. }
  36. n = (slen / 3 + ( slen % 3 != 0 )) * 4;
  37. if( ( dlen < n + 1 ) || ( NULL == dst ) ) {
  38. return -1;
  39. }
  40. n = ( slen / 3 ) * 3;
  41. for( i = 0, p = dst; i < n; i += 3 ) {
  42. C1 = *src++;
  43. C2 = *src++;
  44. C3 = *src++;
  45. *p++ = base64_enc_map[(C1 >> 2) & 0x3F];
  46. *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F];
  47. *p++ = base64_enc_map[(((C2 & 15) << 2) + (C3 >> 6)) & 0x3F];
  48. *p++ = base64_enc_map[C3 & 0x3F];
  49. }
  50. if( i < slen ) {
  51. C1 = *src++;
  52. C2 = ( ( i + 1 ) < slen ) ? *src++ : 0;
  53. *p++ = base64_enc_map[(C1 >> 2) & 0x3F];
  54. *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F];
  55. if( ( i + 1 ) < slen )
  56. *p++ = base64_enc_map[((C2 & 15) << 2) & 0x3F];
  57. else *p++ = '=';
  58. *p++ = '=';
  59. }
  60. *p = 0;
  61. return (p - dst);
  62. }
  63. static int image_to_base64(char *path, buf_t *buf)
  64. {
  65. int r=0,blen;
  66. buf_t fbuf;
  67. r = file_load(path, &fbuf);
  68. if(r) {
  69. return -1;
  70. }
  71. blen = base64_len(fbuf.dlen)+100;
  72. buf->buf = malloc(blen);
  73. if(buf->buf) {
  74. buf->blen = blen;
  75. buf->dlen = 0;
  76. strcpy(buf->buf, "data:image/png;base64,");
  77. int slen = strlen(buf->buf);
  78. buf->dlen = base64_encode((uint8_t*)fbuf.buf, fbuf.blen, (uint8_t*)buf->buf+slen, buf->blen)+slen;
  79. }
  80. else {
  81. r = -1;
  82. }
  83. free(fbuf.buf);
  84. return r;
  85. }
  86. static int get_base64(buf_t *logo, buf_t *qrcode)
  87. {
  88. char path[200],temp[200];
  89. sys_get_path(path, IMAGE_FOLDER);
  90. if(logo) {
  91. sprintf(temp, "%s/%s", path, LOGO_FILE);
  92. image_to_base64(temp, logo);
  93. }
  94. if (qrcode) {
  95. sprintf(temp, "%s/%s", path, QRCODE_FILE);
  96. image_to_base64(temp, qrcode);
  97. }
  98. return 0;
  99. }
  100. //如果是在一个程序的循环中不断调用这个函数,那么是没有效果的
  101. //虽然也是使用的系统的时间函数来初始化随机数发生器,但程序的
  102. //执行速度太快了,可能执行1000次循环返回的秒数都是一样的
  103. //time返回时间戳
  104. void get_rand_str(char* s,int num)
  105. {
  106. //定义随机生成字符串表
  107. char *str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,./;\"'<>?";
  108. int i,lstr;
  109. char ss[2] = {0};
  110. lstr = strlen(str);//计算字符串长度
  111. srand((unsigned int)time((time_t *)NULL));//使用系统时间来初始化随机数发生器
  112. for(i = 1; i <= num; i++)
  113. {//按指定大小返回相应的字符串
  114. sprintf(ss,"%c",str[(rand()%lstr)]);//rand()%lstr 可随机返回0-71之间的整数, str[0-71]可随机得到其中的字符
  115. strcat(s,ss);//将随机生成的字符串连接到指定数组后面
  116. }
  117. }
  118. /// @brief 返回登录信息
  119. /// @param token
  120. /// @return
  121. char* log_info_to_json(const char* token)
  122. {
  123. char* str = NULL;
  124. // 创建 JSON 对象
  125. cJSON* root = cJSON_CreateObject();
  126. // 添加基本键值对
  127. cJSON_AddNumberToObject(root, "code", 200);
  128. //添加结果
  129. cJSON_AddStringToObject(root, "token", token);
  130. //添加结果
  131. cJSON_AddStringToObject(root, "msg", "操作成功");
  132. //转换
  133. str = cJSON_Print(root);
  134. //释放资源
  135. cJSON_Delete(root);
  136. return str;
  137. }
  138. /// @brief 返回登录信息
  139. /// @param token
  140. /// @return
  141. char* log_LoginFailedinfo_to_json()
  142. {
  143. char* str = NULL;
  144. // 创建 JSON 对象
  145. cJSON* root = cJSON_CreateObject();
  146. // 添加基本键值对
  147. cJSON_AddNumberToObject(root, "code", 201);
  148. //添加结果
  149. cJSON_AddStringToObject(root, "msg", "用户名或者登录密码不正确!");
  150. //转换
  151. str = cJSON_Print(root);
  152. //释放资源
  153. cJSON_Delete(root);
  154. return str;
  155. }
  156. /// @brief 返回授权错误信息
  157. /// @param token
  158. /// @return
  159. char* log_AthFailedinfo_to_json()
  160. {
  161. char* str = NULL;
  162. // 创建 JSON 对象
  163. cJSON* root = cJSON_CreateObject();
  164. // 添加基本键值对
  165. cJSON_AddNumberToObject(root, "code", 401);
  166. //添加结果
  167. cJSON_AddStringToObject(root, "msg", "获取用户账户异常");
  168. //转换
  169. str = cJSON_Print(root);
  170. //释放资源
  171. cJSON_Delete(root);
  172. return str;
  173. }
  174. /// @brief 返回用户信息
  175. /// @return
  176. char* user_info_to_json(void)
  177. {
  178. char* str = NULL;
  179. // 创建 JSON 对象
  180. cJSON* root = cJSON_CreateObject();
  181. //添加结果
  182. cJSON_AddStringToObject(root, "msg", "操作成功");
  183. // 添加基本键值对
  184. cJSON_AddNumberToObject(root, "code", 200);
  185. //添加permissions 数组
  186. cJSON* data_permissions_array = cJSON_CreateArray();
  187. cJSON_AddStringToObject(data_permissions_array,"*:*","*:*");
  188. cJSON_AddItemToObject(root, "permissions", data_permissions_array);
  189. //添加roles 数组
  190. cJSON* data_roles_array = cJSON_CreateArray();
  191. cJSON_AddStringToObject(data_roles_array,"admin","admin");
  192. cJSON_AddItemToObject(root, "roles", data_roles_array);
  193. //添加user信息 子对象
  194. cJSON* user_data_filed = cJSON_CreateObject();
  195. cJSON_AddStringToObject(user_data_filed,"createBy","admin");
  196. cJSON_AddStringToObject(user_data_filed,"createTime","2024-01-23 22:15:10");
  197. cJSON_AddStringToObject(user_data_filed,"updateBy","");
  198. cJSON_AddStringToObject(user_data_filed,"updateTime","");
  199. cJSON_AddStringToObject(user_data_filed,"remark",language_root_name[__globalDeviceManage._globalDevInfo.product.language]);
  200. //添加参数信息
  201. cJSON* param_data_filed = cJSON_CreateObject();
  202. cJSON_AddStringToObject(param_data_filed,"@type","java.util.HashMap");
  203. cJSON_AddItemToObject(user_data_filed, "params", param_data_filed);
  204. //添加信息
  205. cJSON_AddNumberToObject(user_data_filed,"userId",_GlobalUserInfoNew.userID);
  206. cJSON_AddStringToObject(user_data_filed,"userName",_GlobalUserInfoNew.userName);
  207. cJSON_AddStringToObject(user_data_filed,"nickName",_GlobalUserInfoNew.nickName);
  208. cJSON_AddStringToObject(user_data_filed,"email","ry@163.com");
  209. cJSON_AddStringToObject(user_data_filed,"phonenumber","15888888888");
  210. cJSON_AddStringToObject(user_data_filed,"avatar","");
  211. cJSON_AddStringToObject(user_data_filed,"password",_GlobalUserInfoNew.userPW);
  212. cJSON_AddStringToObject(user_data_filed,"status","0");
  213. cJSON_AddStringToObject(user_data_filed,"delFlag","0");
  214. cJSON_AddStringToObject(user_data_filed,"loginIp","127.0.0.1");
  215. cJSON_AddStringToObject(user_data_filed,"loginDate","2024-02-19T22:31:48.000+08:00");
  216. //添加角色信息 数组
  217. cJSON* user_role_array = cJSON_CreateArray();
  218. cJSON* role_data_filed = cJSON_CreateObject();
  219. cJSON_AddStringToObject(role_data_filed,"createBy","");
  220. cJSON_AddStringToObject(role_data_filed,"createTime","");
  221. cJSON_AddStringToObject(role_data_filed,"updateBy","");
  222. cJSON_AddStringToObject(role_data_filed,"updateTime","");
  223. cJSON_AddStringToObject(role_data_filed,"remark","");
  224. //添加参数信息
  225. cJSON* role_param_data_filed = cJSON_CreateObject();
  226. cJSON_AddStringToObject(role_param_data_filed,"@type","java.util.HashMap");
  227. cJSON_AddItemToObject(role_data_filed, "params", role_param_data_filed);
  228. //添加信息
  229. cJSON_AddNumberToObject(role_data_filed,"roleId",_GlobalUserInfoNew.roleID);
  230. cJSON_AddStringToObject(role_data_filed,"roleName",language_root_name[__globalDeviceManage._globalDevInfo.product.language]);
  231. cJSON_AddStringToObject(role_data_filed,"roleKey","admin");
  232. cJSON_AddNumberToObject(role_data_filed,"roleSort",1);
  233. cJSON_AddStringToObject(role_data_filed,"dataScope","1");
  234. cJSON_AddBoolToObject(role_data_filed,"menuCheckStrictly",false);
  235. cJSON_AddBoolToObject(role_data_filed,"deptCheckStrictly",false);
  236. cJSON_AddStringToObject(role_data_filed,"status","0");
  237. cJSON_AddStringToObject(role_data_filed,"delFlag","");
  238. cJSON_AddBoolToObject(role_data_filed,"flag",false);
  239. cJSON_AddStringToObject(role_data_filed,"menuIds","");
  240. cJSON_AddStringToObject(role_data_filed,"deptIds","");
  241. cJSON_AddStringToObject(role_data_filed,"permissions","");
  242. cJSON_AddBoolToObject(role_data_filed,"admin",true);
  243. cJSON_AddItemToObject(user_role_array, "roles", role_data_filed);
  244. cJSON_AddItemToObject(user_data_filed, "roles", user_role_array);
  245. //添加信息
  246. //数组外添加信息
  247. cJSON_AddStringToObject(user_data_filed,"roleIds","");
  248. cJSON_AddStringToObject(user_data_filed,"postIds","");
  249. cJSON_AddStringToObject(user_data_filed,"roleId","");
  250. cJSON_AddStringToObject(user_data_filed,"token",_GlobalUserToken);
  251. cJSON_AddBoolToObject(user_data_filed,"admin",true);
  252. cJSON_AddItemToObject(root, "user", user_data_filed);
  253. //转换
  254. str = cJSON_Print(root);
  255. cJSON_Delete(root);
  256. return str;
  257. }
  258. //获取菜单信息
  259. char* user_routers_info_to_json(void)
  260. {
  261. char *str=NULL;
  262. cJSON *tmp,*tmp1,*tmp2,*tmp3;
  263. // 创建 JSON 对象
  264. cJSON* root = cJSON_CreateObject();
  265. //添加结果
  266. cJSON_AddStringToObject(root, "msg", "操作成功");
  267. // 添加基本键值对
  268. cJSON_AddNumberToObject(root, "code", 200);
  269. //data区
  270. cJSON* data_array = cJSON_CreateArray();
  271. //第一块 电源监控
  272. cJSON* data1_filed = cJSON_CreateObject();
  273. cJSON_AddStringToObject(data1_filed,"name","Power");
  274. cJSON_AddStringToObject(data1_filed,"path","/power");
  275. cJSON_AddBoolToObject(data1_filed,"hidden",false);
  276. cJSON_AddStringToObject(data1_filed,"redirect","noRedirect");
  277. cJSON_AddStringToObject(data1_filed,"component","Layout");
  278. cJSON_AddBoolToObject(data1_filed,"alwaysShow",true);
  279. //meta
  280. cJSON* meta_data1_filed = cJSON_CreateObject();
  281. cJSON_AddStringToObject(meta_data1_filed,"title",language_power_monitor[__globalDeviceManage._globalDevInfo.product.language]);
  282. cJSON_AddStringToObject(meta_data1_filed,"icon","monitor");
  283. cJSON_AddBoolToObject(meta_data1_filed,"noCache",false);
  284. cJSON_AddStringToObject(meta_data1_filed,"link","");
  285. cJSON_AddItemToObject(data1_filed, "meta", meta_data1_filed);
  286. //children
  287. cJSON* children1_data_array = cJSON_CreateArray();
  288. cJSON* children1_data1_filed = cJSON_CreateObject();
  289. cJSON_AddStringToObject(children1_data1_filed,"name","Monitorall");
  290. cJSON_AddStringToObject(children1_data1_filed,"path","monitorall");
  291. cJSON_AddBoolToObject(children1_data1_filed,"hidden",false);
  292. cJSON_AddStringToObject(children1_data1_filed,"component","power/monitorall/index");
  293. cJSON* children1_meta1_data1_filed = cJSON_CreateObject();
  294. cJSON_AddStringToObject(children1_meta1_data1_filed,"title",language_power_sts_monitor[__globalDeviceManage._globalDevInfo.product.language]);
  295. cJSON_AddStringToObject(children1_meta1_data1_filed,"icon","monitor");
  296. cJSON_AddBoolToObject(children1_meta1_data1_filed,"noCache",false);
  297. cJSON_AddStringToObject(children1_meta1_data1_filed,"link","");
  298. cJSON_AddItemToObject(children1_data1_filed, "meta", children1_meta1_data1_filed);
  299. if( _GlobalMenuAuthority.MonitorallEnabled)cJSON_AddItemToObject(children1_data_array, "children", children1_data1_filed);
  300. cJSON* children1_data2_filed = cJSON_CreateObject();
  301. cJSON_AddStringToObject(children1_data2_filed,"name","Channelstatus");
  302. cJSON_AddStringToObject(children1_data2_filed,"path","channelstatus");
  303. cJSON_AddBoolToObject(children1_data2_filed,"hidden",false);
  304. cJSON_AddStringToObject(children1_data2_filed,"component","power/channelstatus/index");
  305. cJSON* children1_meta1_data2_filed = cJSON_CreateObject();
  306. cJSON_AddStringToObject(children1_meta1_data2_filed,"title",language_power_channel_sts_monitor[__globalDeviceManage._globalDevInfo.product.language]);
  307. cJSON_AddStringToObject(children1_meta1_data2_filed,"icon","server");
  308. cJSON_AddBoolToObject(children1_meta1_data2_filed,"noCache",false);
  309. cJSON_AddStringToObject(children1_meta1_data2_filed,"link","");
  310. cJSON_AddItemToObject(children1_data2_filed, "meta", children1_meta1_data2_filed);
  311. if(_GlobalMenuAuthority.ChannelstatusEnabled ) cJSON_AddItemToObject(children1_data_array, "children", children1_data2_filed);
  312. cJSON* children1_data2_1_filed = cJSON_CreateObject();
  313. cJSON_AddStringToObject(children1_data2_1_filed,"name","Switchtatus");
  314. cJSON_AddStringToObject(children1_data2_1_filed,"path","switchtatus");
  315. cJSON_AddBoolToObject(children1_data2_1_filed,"hidden",false);
  316. cJSON_AddStringToObject(children1_data2_1_filed,"component","power/switchtatus/index");
  317. cJSON* children1_meta1_data2_1_filed = cJSON_CreateObject();
  318. cJSON_AddStringToObject(children1_meta1_data2_1_filed,"title",language_power_switch_sts_monitor[__globalDeviceManage._globalDevInfo.product.language]);
  319. cJSON_AddStringToObject(children1_meta1_data2_1_filed,"icon","switch");
  320. cJSON_AddBoolToObject(children1_meta1_data2_1_filed,"noCache",false);
  321. cJSON_AddStringToObject(children1_meta1_data2_1_filed,"link","");
  322. cJSON_AddItemToObject(children1_data2_1_filed, "meta", children1_meta1_data2_1_filed);
  323. if( _GlobalMenuAuthority.SwitchtatusEnabled)cJSON_AddItemToObject(children1_data_array, "children", children1_data2_1_filed);
  324. cJSON* children1_data3_filed = cJSON_CreateObject();
  325. cJSON_AddStringToObject(children1_data3_filed,"name","Monitorhistory");
  326. cJSON_AddStringToObject(children1_data3_filed,"path","monitorhistory");
  327. cJSON_AddBoolToObject(children1_data3_filed,"hidden",false);
  328. cJSON_AddStringToObject(children1_data3_filed,"component","power/monitorhistory/index");
  329. cJSON* children1_meta1_data3_filed = cJSON_CreateObject();
  330. cJSON_AddStringToObject(children1_meta1_data3_filed,"title",language_power_history_search[__globalDeviceManage._globalDevInfo.product.language]);
  331. cJSON_AddStringToObject(children1_meta1_data3_filed,"icon","chart");
  332. cJSON_AddBoolToObject(children1_meta1_data3_filed,"noCache",false);
  333. cJSON_AddStringToObject(children1_meta1_data3_filed,"link","");
  334. cJSON_AddItemToObject(children1_data3_filed, "meta", children1_meta1_data3_filed);
  335. if(_GlobalMenuAuthority.MonitorhistoryEnabled)cJSON_AddItemToObject(children1_data_array, "children", children1_data3_filed);
  336. cJSON_AddItemToObject(data1_filed, "children", children1_data_array);
  337. if ( _GlobalMenuAuthority.PowerEnabled) cJSON_AddItemToObject(data_array, "data", data1_filed);
  338. //第二块 传感器监控
  339. cJSON* data2_filed = cJSON_CreateObject();
  340. cJSON_AddStringToObject(data2_filed,"name","Sensor");
  341. cJSON_AddStringToObject(data2_filed,"path","/sensor");
  342. cJSON_AddBoolToObject(data2_filed,"hidden",false);
  343. cJSON_AddStringToObject(data2_filed,"redirect","noRedirect");
  344. cJSON_AddStringToObject(data2_filed,"component","Layout");
  345. cJSON_AddBoolToObject(data2_filed,"alwaysShow",true);
  346. cJSON* meta_data2_filed = cJSON_CreateObject();
  347. cJSON_AddStringToObject(meta_data2_filed,"title",language_sensor_monitoring[__globalDeviceManage._globalDevInfo.product.language]);
  348. cJSON_AddStringToObject(meta_data2_filed,"icon","slider");
  349. cJSON_AddBoolToObject(meta_data2_filed,"noCache",false);
  350. cJSON_AddStringToObject(meta_data2_filed,"link","");
  351. cJSON_AddItemToObject(data2_filed, "meta", meta_data2_filed);
  352. //children
  353. cJSON* children2_data_array = cJSON_CreateArray();
  354. cJSON* children2_data1_filed = cJSON_CreateObject();
  355. cJSON_AddStringToObject(children2_data1_filed,"name","SensorStatus");
  356. cJSON_AddStringToObject(children2_data1_filed,"path","sensorStatus");
  357. cJSON_AddBoolToObject(children2_data1_filed,"hidden",false);
  358. cJSON_AddStringToObject(children2_data1_filed,"component","sensor/sensorStatus/index");
  359. cJSON* children2_meta1_data1_filed = cJSON_CreateObject();
  360. cJSON_AddStringToObject(children2_meta1_data1_filed,"title",language_sensor_status_monitoring[__globalDeviceManage._globalDevInfo.product.language]);
  361. cJSON_AddStringToObject(children2_meta1_data1_filed,"icon","monitor");
  362. cJSON_AddBoolToObject(children2_meta1_data1_filed,"noCache",false);
  363. cJSON_AddStringToObject(children2_meta1_data1_filed,"link","");
  364. cJSON_AddItemToObject(children2_data1_filed, "meta", children2_meta1_data1_filed);
  365. if(_GlobalMenuAuthority.SensorStatusEnabled)cJSON_AddItemToObject(children2_data_array, "children", children2_data1_filed);
  366. cJSON* children2_data2_filed = cJSON_CreateObject();
  367. cJSON_AddStringToObject(children2_data2_filed,"name","SensorHistory");
  368. cJSON_AddStringToObject(children2_data2_filed,"path","sensorHistory");
  369. cJSON_AddBoolToObject(children2_data2_filed,"hidden",false);
  370. cJSON_AddStringToObject(children2_data2_filed,"component","sensor/sensorHistory/index");
  371. cJSON* children2_meta2_data2_filed = cJSON_CreateObject();
  372. cJSON_AddStringToObject(children2_meta2_data2_filed,"title",language_sensor_history_search[__globalDeviceManage._globalDevInfo.product.language]);
  373. cJSON_AddStringToObject(children2_meta2_data2_filed,"icon","chart");
  374. cJSON_AddBoolToObject(children2_meta2_data2_filed,"noCache",false);
  375. cJSON_AddStringToObject(children2_meta2_data2_filed,"link","");
  376. cJSON_AddItemToObject(children2_data2_filed, "meta", children2_meta2_data2_filed);
  377. if(_GlobalMenuAuthority.SensorHistorylEnabled)cJSON_AddItemToObject(children2_data_array, "children", children2_data2_filed);
  378. cJSON_AddItemToObject(data2_filed, "children", children2_data_array);
  379. if(_GlobalMenuAuthority.SensorEnabled)cJSON_AddItemToObject(data_array, "data", data2_filed);
  380. //第三块 告警保护
  381. cJSON* data3_filed = cJSON_CreateObject();
  382. cJSON_AddStringToObject(data3_filed,"name","Jgbh");
  383. cJSON_AddStringToObject(data3_filed,"path","/jgbh");
  384. cJSON_AddBoolToObject(data3_filed,"hidden",false);
  385. cJSON_AddStringToObject(data3_filed,"redirect","noRedirect");
  386. cJSON_AddStringToObject(data3_filed,"component","Layout");
  387. cJSON_AddBoolToObject(data3_filed,"alwaysShow",true);
  388. cJSON* meta_data3_filed = cJSON_CreateObject();
  389. cJSON_AddStringToObject(meta_data3_filed,"title",language_Alarm_protection[__globalDeviceManage._globalDevInfo.product.language]);
  390. cJSON_AddStringToObject(meta_data3_filed,"icon","bug");
  391. cJSON_AddBoolToObject(meta_data3_filed,"noCache",false);
  392. cJSON_AddStringToObject(meta_data3_filed,"link","");
  393. cJSON_AddItemToObject(data3_filed, "meta", meta_data3_filed);
  394. //children
  395. cJSON* children3_data_array = cJSON_CreateArray();
  396. cJSON* children3_data1_filed = cJSON_CreateObject();
  397. cJSON_AddStringToObject(children3_data1_filed,"name","Xtjg");
  398. cJSON_AddStringToObject(children3_data1_filed,"path","xtjg");
  399. cJSON_AddBoolToObject(children3_data1_filed,"hidden",false);
  400. cJSON_AddStringToObject(children3_data1_filed,"component","jgbh/xtjg/index");
  401. cJSON* children3_meta1_data1_filed = cJSON_CreateObject();
  402. cJSON_AddStringToObject(children3_meta1_data1_filed,"title",language_Alarm_System[__globalDeviceManage._globalDevInfo.product.language]);
  403. cJSON_AddStringToObject(children3_meta1_data1_filed,"icon","list");
  404. cJSON_AddBoolToObject(children3_meta1_data1_filed,"noCache",false);
  405. cJSON_AddStringToObject(children3_meta1_data1_filed,"link","");
  406. cJSON_AddItemToObject(children3_data1_filed, "meta", children3_meta1_data1_filed);
  407. if(_GlobalMenuAuthority.XtjgEnabled)cJSON_AddItemToObject(children3_data_array, "children", children3_data1_filed);
  408. cJSON* children3_data2_filed = cJSON_CreateObject();
  409. cJSON_AddStringToObject(children3_data2_filed,"name","Fzsz");
  410. cJSON_AddStringToObject(children3_data2_filed,"path","fzsz");
  411. cJSON_AddBoolToObject(children3_data2_filed,"hidden",false);
  412. cJSON_AddStringToObject(children3_data2_filed,"component","jgbh/fzsz/index");
  413. cJSON* children3_meta2_data1_filed = cJSON_CreateObject();
  414. cJSON_AddStringToObject(children3_meta2_data1_filed,"title",language_Alarm_Threshold_rule[__globalDeviceManage._globalDevInfo.product.language]);
  415. cJSON_AddStringToObject(children3_meta2_data1_filed,"icon","build");
  416. cJSON_AddBoolToObject(children3_meta2_data1_filed,"noCache",false);
  417. cJSON_AddStringToObject(children3_meta2_data1_filed,"link","");
  418. cJSON_AddItemToObject(children3_data2_filed, "meta", children3_meta2_data1_filed);
  419. if(_GlobalMenuAuthority.YzszEnabled)cJSON_AddItemToObject(children3_data_array, "children", children3_data2_filed);
  420. cJSON_AddItemToObject(data3_filed, "children", children3_data_array);
  421. if(_GlobalMenuAuthority.AlarmEnabled)cJSON_AddItemToObject(data_array, "data", data3_filed);
  422. //第四块 日志信息
  423. cJSON* data4_filed = cJSON_CreateObject();
  424. cJSON_AddStringToObject(data4_filed,"name","Rzxx");
  425. cJSON_AddStringToObject(data4_filed,"path","/rzxx");
  426. cJSON_AddBoolToObject(data4_filed,"hidden",false);
  427. cJSON_AddStringToObject(data4_filed,"redirect","noRedirect");
  428. cJSON_AddStringToObject(data4_filed,"component","Layout");
  429. cJSON_AddBoolToObject(data4_filed,"alwaysShow",true);
  430. cJSON* meta_data4_filed = cJSON_CreateObject();
  431. cJSON_AddStringToObject(meta_data4_filed,"title",language_log_information[__globalDeviceManage._globalDevInfo.product.language]);
  432. cJSON_AddStringToObject(meta_data4_filed,"icon","log");
  433. cJSON_AddBoolToObject(meta_data4_filed,"noCache",false);
  434. cJSON_AddStringToObject(meta_data4_filed,"link","");
  435. cJSON_AddItemToObject(data4_filed, "meta", meta_data4_filed);
  436. //children
  437. cJSON* children4_data_array = cJSON_CreateArray();
  438. //cJSON* children4_data1_filed = cJSON_CreateObject();
  439. // cJSON_AddStringToObject(children4_data1_filed,"name","Gjrz");
  440. // cJSON_AddStringToObject(children4_data1_filed,"path","gjrz");
  441. // cJSON_AddBoolToObject(children4_data1_filed,"hidden",false);
  442. // cJSON_AddStringToObject(children4_data1_filed,"component","rzxx/gjrz/index");
  443. // cJSON* children4_meta1_data1_filed = cJSON_CreateObject();
  444. // cJSON_AddStringToObject(children4_meta1_data1_filed,"title",language_log_Alarm[__globalDeviceManage._globalDevInfo.product.language]);
  445. // cJSON_AddStringToObject(children4_meta1_data1_filed,"icon","#");
  446. // cJSON_AddBoolToObject(children4_meta1_data1_filed,"noCache",false);
  447. // cJSON_AddStringToObject(children4_meta1_data1_filed,"link","");
  448. // cJSON_AddItemToObject(children4_data1_filed, "meta", children4_meta1_data1_filed);
  449. // cJSON_AddItemToObject(children4_data_array, "children", children4_data1_filed);
  450. cJSON* children4_data2_filed = cJSON_CreateObject();
  451. cJSON_AddStringToObject(children4_data2_filed,"name","Czrz");
  452. cJSON_AddStringToObject(children4_data2_filed,"path","czrz");
  453. cJSON_AddBoolToObject(children4_data2_filed,"hidden",false);
  454. cJSON_AddStringToObject(children4_data2_filed,"component","rzxx/czrz/index");
  455. cJSON* children4_meta2_data1_filed = cJSON_CreateObject();
  456. cJSON_AddStringToObject(children4_meta2_data1_filed,"title",language_log_operation[__globalDeviceManage._globalDevInfo.product.language]);
  457. cJSON_AddStringToObject(children4_meta2_data1_filed,"icon","chart");
  458. cJSON_AddBoolToObject(children4_meta2_data1_filed,"noCache",false);
  459. cJSON_AddStringToObject(children4_meta2_data1_filed,"link","");
  460. cJSON_AddItemToObject(children4_data2_filed, "meta", children4_meta2_data1_filed);
  461. if( _GlobalMenuAuthority.CzrzEnabled) cJSON_AddItemToObject(children4_data_array, "children", children4_data2_filed);
  462. cJSON* children4_data3_filed = cJSON_CreateObject();
  463. cJSON_AddStringToObject(children4_data3_filed,"name","Yxrz");
  464. cJSON_AddStringToObject(children4_data3_filed,"path","yxrz");
  465. cJSON_AddBoolToObject(children4_data3_filed,"hidden",false);
  466. cJSON_AddStringToObject(children4_data3_filed,"component","rzxx/yxrz/index");
  467. cJSON* children4_meta3_data1_filed = cJSON_CreateObject();
  468. cJSON_AddStringToObject(children4_meta3_data1_filed,"title",language_log_running[__globalDeviceManage._globalDevInfo.product.language]);
  469. cJSON_AddStringToObject(children4_meta3_data1_filed,"icon","documentation");
  470. cJSON_AddBoolToObject(children4_meta3_data1_filed,"noCache",false);
  471. cJSON_AddStringToObject(children4_meta3_data1_filed,"link","");
  472. cJSON_AddItemToObject(children4_data3_filed, "meta", children4_meta3_data1_filed);
  473. if(_GlobalMenuAuthority.YxrzEnabled)cJSON_AddItemToObject(children4_data_array, "children", children4_data3_filed);
  474. cJSON_AddItemToObject(data4_filed, "children", children4_data_array);
  475. if(_GlobalMenuAuthority.LogEnabled)cJSON_AddItemToObject(data_array, "data", data4_filed);
  476. //第五块 用户管理
  477. cJSON* data_filed = cJSON_CreateObject();
  478. cJSON_AddStringToObject(data_filed,"name","System");
  479. cJSON_AddStringToObject(data_filed,"path","/system");
  480. cJSON_AddBoolToObject(data_filed,"hidden",false);
  481. cJSON_AddStringToObject(data_filed,"redirect","noRedirect");
  482. cJSON_AddStringToObject(data_filed,"component","Layout");
  483. cJSON_AddBoolToObject(data_filed,"alwaysShow",true);
  484. //meta
  485. cJSON* meta_data_filed = cJSON_CreateObject();
  486. cJSON_AddStringToObject(meta_data_filed,"title",language_user_manage[__globalDeviceManage._globalDevInfo.product.language]);
  487. cJSON_AddStringToObject(meta_data_filed,"icon","system");
  488. cJSON_AddBoolToObject(meta_data_filed,"noCache",false);
  489. cJSON_AddStringToObject(meta_data_filed,"link","");
  490. cJSON_AddItemToObject(data_filed, "meta", meta_data_filed);
  491. //children
  492. cJSON* children_data_array = cJSON_CreateArray();
  493. cJSON* children_data_filed = cJSON_CreateObject();
  494. cJSON_AddStringToObject(children_data_filed,"name","User");
  495. cJSON_AddStringToObject(children_data_filed,"path","user");
  496. cJSON_AddBoolToObject(children_data_filed,"hidden",false);
  497. cJSON_AddStringToObject(children_data_filed,"component","system/user/index");
  498. cJSON* children_meta_data_filed = cJSON_CreateObject();
  499. cJSON_AddStringToObject(children_meta_data_filed,"title",language_user_manage[__globalDeviceManage._globalDevInfo.product.language]);
  500. cJSON_AddStringToObject(children_meta_data_filed,"icon","user");
  501. cJSON_AddBoolToObject(children_meta_data_filed,"noCache",false);
  502. cJSON_AddStringToObject(children_meta_data_filed,"link","");
  503. cJSON_AddItemToObject(children_data_filed, "meta", children_meta_data_filed);
  504. if(_GlobalMenuAuthority.UserEnabled)cJSON_AddItemToObject(children_data_array, "meta", children_data_filed);
  505. cJSON* children1_data_filed = cJSON_CreateObject();
  506. cJSON_AddStringToObject(children1_data_filed,"name","Role");
  507. cJSON_AddStringToObject(children1_data_filed,"path","role");
  508. cJSON_AddBoolToObject(children1_data_filed,"hidden",false);
  509. cJSON_AddStringToObject(children1_data_filed,"component","system/role/index");
  510. cJSON* children_meta1_data_filed = cJSON_CreateObject();
  511. cJSON_AddStringToObject(children_meta1_data_filed,"title",language_role_manage[__globalDeviceManage._globalDevInfo.product.language]);
  512. cJSON_AddStringToObject(children_meta1_data_filed,"icon","peoples");
  513. cJSON_AddBoolToObject(children_meta1_data_filed,"noCache",false);
  514. cJSON_AddStringToObject(children_meta1_data_filed,"link","");
  515. cJSON_AddItemToObject(children1_data_filed, "meta", children_meta1_data_filed);
  516. if(_GlobalMenuAuthority.RoleEnabled)cJSON_AddItemToObject(children_data_array, "meta", children1_data_filed);
  517. cJSON* children2_data_filed = cJSON_CreateObject();
  518. cJSON_AddStringToObject(children2_data_filed,"name","Menu");
  519. cJSON_AddStringToObject(children2_data_filed,"path","menu");
  520. cJSON_AddBoolToObject(children2_data_filed,"hidden",false);
  521. cJSON_AddStringToObject(children2_data_filed,"component","system/menu/index");
  522. cJSON* children_meta2_data_filed = cJSON_CreateObject();
  523. cJSON_AddStringToObject(children_meta2_data_filed,"title",language_menu_manage[__globalDeviceManage._globalDevInfo.product.language]);
  524. cJSON_AddStringToObject(children_meta2_data_filed,"icon","tree-table");
  525. cJSON_AddBoolToObject(children_meta2_data_filed,"noCache",false);
  526. cJSON_AddStringToObject(children_meta2_data_filed,"link","");
  527. cJSON_AddItemToObject(children2_data_filed, "meta", children_meta2_data_filed);
  528. if(_GlobalMenuAuthority.MenuEnabled)cJSON_AddItemToObject(children_data_array, "meta", children2_data_filed);
  529. cJSON_AddItemToObject(data_filed, "children", children_data_array);
  530. if(_GlobalMenuAuthority.UserInfoEnabled)cJSON_AddItemToObject(data_array, "data", data_filed);
  531. //第六块 通信管理
  532. cJSON* data5_filed = cJSON_CreateObject();
  533. cJSON_AddStringToObject(data5_filed,"name","Txgl");
  534. cJSON_AddStringToObject(data5_filed,"path","/txgl");
  535. cJSON_AddBoolToObject(data5_filed,"hidden",false);
  536. cJSON_AddStringToObject(data5_filed,"redirect","noRedirect");
  537. cJSON_AddStringToObject(data5_filed,"component","Layout");
  538. cJSON_AddBoolToObject(data5_filed,"alwaysShow",true);
  539. cJSON* meta_data5_filed = cJSON_CreateObject();
  540. cJSON_AddStringToObject(meta_data5_filed,"title",language_communication_management[__globalDeviceManage._globalDevInfo.product.language]);
  541. cJSON_AddStringToObject(meta_data5_filed,"icon","message");
  542. cJSON_AddBoolToObject(meta_data5_filed,"noCache",false);
  543. cJSON_AddStringToObject(meta_data5_filed,"link","");
  544. cJSON_AddItemToObject(data5_filed, "meta", meta_data5_filed);
  545. //children
  546. cJSON* children5_data_array = cJSON_CreateArray();
  547. cJSON* children5_data1_filed = cJSON_CreateObject();
  548. cJSON_AddStringToObject(children5_data1_filed,"name","Wksz");
  549. cJSON_AddStringToObject(children5_data1_filed,"path","wksz");
  550. cJSON_AddBoolToObject(children5_data1_filed,"hidden",false);
  551. cJSON_AddStringToObject(children5_data1_filed,"component","txgl/wksz/index");
  552. cJSON* children5_meta1_data1_filed = cJSON_CreateObject();
  553. cJSON_AddStringToObject(children5_meta1_data1_filed,"title",language_net_install[__globalDeviceManage._globalDevInfo.product.language]);
  554. cJSON_AddStringToObject(children5_meta1_data1_filed,"icon","input");
  555. cJSON_AddBoolToObject(children5_meta1_data1_filed,"noCache",false);
  556. cJSON_AddStringToObject(children5_meta1_data1_filed,"link","");
  557. cJSON_AddItemToObject(children5_data1_filed, "meta", children5_meta1_data1_filed);
  558. if( _GlobalMenuAuthority.WkszEnabled) cJSON_AddItemToObject(children5_data_array, "children", children5_data1_filed);
  559. cJSON* children5_data2_filed = cJSON_CreateObject();
  560. cJSON_AddStringToObject(children5_data2_filed,"name","Rssz");
  561. cJSON_AddStringToObject(children5_data2_filed,"path","rssz");
  562. cJSON_AddBoolToObject(children5_data2_filed,"hidden",false);
  563. cJSON_AddStringToObject(children5_data2_filed,"component","txgl/rssz/index");
  564. cJSON* children5_meta2_data1_filed = cJSON_CreateObject();
  565. cJSON_AddStringToObject(children5_meta2_data1_filed,"title",language_RS485_install[__globalDeviceManage._globalDevInfo.product.language]);
  566. cJSON_AddStringToObject(children5_meta2_data1_filed,"icon","build");
  567. cJSON_AddBoolToObject(children5_meta2_data1_filed,"noCache",false);
  568. cJSON_AddStringToObject(children5_meta2_data1_filed,"link","");
  569. cJSON_AddItemToObject(children5_data2_filed, "meta", children5_meta2_data1_filed);
  570. if(_GlobalMenuAuthority.RsszEnabled)cJSON_AddItemToObject(children5_data_array, "children", children5_data2_filed);
  571. cJSON_AddItemToObject(data5_filed, "children", children5_data_array);
  572. if(_GlobalMenuAuthority.CommEnabled)cJSON_AddItemToObject(data_array, "data", data5_filed);
  573. //第七块 服务管理
  574. cJSON* data6_filed = cJSON_CreateObject();
  575. cJSON_AddStringToObject(data6_filed,"name","Fwgl");
  576. cJSON_AddStringToObject(data6_filed,"path","/fwgl");
  577. cJSON_AddBoolToObject(data6_filed,"hidden",false);
  578. cJSON_AddStringToObject(data6_filed,"redirect","noRedirect");
  579. cJSON_AddStringToObject(data6_filed,"component","Layout");
  580. cJSON_AddBoolToObject(data6_filed,"alwaysShow",true);
  581. cJSON* meta_data6_filed = cJSON_CreateObject();
  582. cJSON_AddStringToObject(meta_data6_filed,"title",language_serve_manage[__globalDeviceManage._globalDevInfo.product.language]);
  583. cJSON_AddStringToObject(meta_data6_filed,"icon","server");
  584. cJSON_AddBoolToObject(meta_data6_filed,"noCache",false);
  585. cJSON_AddStringToObject(meta_data6_filed,"link","");
  586. cJSON_AddItemToObject(data6_filed, "meta", meta_data6_filed);
  587. //children
  588. cJSON* children6_data_array = cJSON_CreateArray();
  589. cJSON* children6_data1_filed = cJSON_CreateObject();
  590. cJSON_AddStringToObject(children6_data1_filed,"name","Smtpsz");
  591. cJSON_AddStringToObject(children6_data1_filed,"path","smtpsz");
  592. cJSON_AddBoolToObject(children6_data1_filed,"hidden",false);
  593. cJSON_AddStringToObject(children6_data1_filed,"component","fwgl/smtpsz/index");
  594. cJSON* children6_meta1_data1_filed = cJSON_CreateObject();
  595. cJSON_AddStringToObject(children6_meta1_data1_filed,"title",language_SMTP_install[__globalDeviceManage._globalDevInfo.product.language]);
  596. cJSON_AddStringToObject(children6_meta1_data1_filed,"icon","edit");
  597. cJSON_AddBoolToObject(children6_meta1_data1_filed,"noCache",false);
  598. cJSON_AddStringToObject(children6_meta1_data1_filed,"link","");
  599. cJSON_AddItemToObject(children6_data1_filed, "meta", children6_meta1_data1_filed);
  600. if(_GlobalMenuAuthority.SmtpszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data1_filed);
  601. cJSON* children6_data2_filed = cJSON_CreateObject();
  602. cJSON_AddStringToObject(children6_data2_filed,"name","Snmpsz");
  603. cJSON_AddStringToObject(children6_data2_filed,"path","snmpsz");
  604. cJSON_AddBoolToObject(children6_data2_filed,"hidden",false);
  605. cJSON_AddStringToObject(children6_data2_filed,"component","fwgl/snmpsz/index");
  606. cJSON* children6_meta2_data1_filed = cJSON_CreateObject();
  607. cJSON_AddStringToObject(children6_meta2_data1_filed,"title",language_SNMP_install[__globalDeviceManage._globalDevInfo.product.language]);
  608. cJSON_AddStringToObject(children6_meta2_data1_filed,"icon","date-range");
  609. cJSON_AddBoolToObject(children6_meta2_data1_filed,"noCache",false);
  610. cJSON_AddStringToObject(children6_meta2_data1_filed,"link","");
  611. cJSON_AddItemToObject(children6_data2_filed, "meta", children6_meta2_data1_filed);
  612. if( _GlobalMenuAuthority.SnmpszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data2_filed);
  613. //cJSON* children6_data3_filed = cJSON_CreateObject();
  614. // cJSON_AddStringToObject(children6_data3_filed,"name","Stsz");
  615. // cJSON_AddStringToObject(children6_data3_filed,"path","stsz");
  616. // cJSON_AddBoolToObject(children6_data3_filed,"hidden",false);
  617. // cJSON_AddStringToObject(children6_data3_filed,"component","fwgl/stsz/index");
  618. // cJSON* children6_meta3_data1_filed = cJSON_CreateObject();
  619. // cJSON_AddStringToObject(children6_meta3_data1_filed,"title",language_SNMP_TRAP_install[__globalDeviceManage._globalDevInfo.product.language]);
  620. // cJSON_AddStringToObject(children6_meta3_data1_filed,"icon","#");
  621. // cJSON_AddBoolToObject(children6_meta3_data1_filed,"noCache",false);
  622. // cJSON_AddStringToObject(children6_meta3_data1_filed,"link","");
  623. // cJSON_AddItemToObject(children6_data3_filed, "meta", children6_meta3_data1_filed);
  624. // cJSON_AddItemToObject(children6_data_array, "children", children6_data3_filed);
  625. cJSON* children6_data4_filed = cJSON_CreateObject();
  626. cJSON_AddStringToObject(children6_data4_filed,"name","Mqsz");
  627. cJSON_AddStringToObject(children6_data4_filed,"path","mqsz");
  628. cJSON_AddBoolToObject(children6_data4_filed,"hidden",false);
  629. cJSON_AddStringToObject(children6_data4_filed,"component","fwgl/mqsz/index");
  630. cJSON* children6_meta4_data1_filed = cJSON_CreateObject();
  631. cJSON_AddStringToObject(children6_meta4_data1_filed,"title",language_MQTT_iot_install[__globalDeviceManage._globalDevInfo.product.language]);
  632. cJSON_AddStringToObject(children6_meta4_data1_filed,"icon","dashboard");
  633. cJSON_AddBoolToObject(children6_meta4_data1_filed,"noCache",false);
  634. cJSON_AddStringToObject(children6_meta4_data1_filed,"link","");
  635. cJSON_AddItemToObject(children6_data4_filed, "meta", children6_meta4_data1_filed);
  636. if(_GlobalMenuAuthority.MqszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data4_filed);
  637. cJSON* children6_data5_filed = cJSON_CreateObject();
  638. cJSON_AddStringToObject(children6_data5_filed,"name","Ntpsz");
  639. cJSON_AddStringToObject(children6_data5_filed,"path","ntpsz");
  640. cJSON_AddBoolToObject(children6_data5_filed,"hidden",false);
  641. cJSON_AddStringToObject(children6_data5_filed,"component","fwgl/ntpsz/index");
  642. cJSON* children6_meta5_data1_filed = cJSON_CreateObject();
  643. cJSON_AddStringToObject(children6_meta5_data1_filed,"title",language_NTP_install[__globalDeviceManage._globalDevInfo.product.language]);
  644. cJSON_AddStringToObject(children6_meta5_data1_filed,"icon","date-range");
  645. cJSON_AddBoolToObject(children6_meta5_data1_filed,"noCache",false);
  646. cJSON_AddStringToObject(children6_meta5_data1_filed,"link","");
  647. cJSON_AddItemToObject(children6_data5_filed, "meta", children6_meta5_data1_filed);
  648. if(_GlobalMenuAuthority.NtpszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data5_filed);
  649. cJSON* children6_data6_filed = cJSON_CreateObject();
  650. cJSON_AddStringToObject(children6_data6_filed,"name","Dssz");
  651. cJSON_AddStringToObject(children6_data6_filed,"path","dssz");
  652. cJSON_AddBoolToObject(children6_data6_filed,"hidden",false);
  653. cJSON_AddStringToObject(children6_data6_filed,"component","fwgl/dssz/index");
  654. cJSON* children6_meta6_data1_filed = cJSON_CreateObject();
  655. cJSON_AddStringToObject(children6_meta6_data1_filed,"title",language_Timing_install[__globalDeviceManage._globalDevInfo.product.language]);
  656. cJSON_AddStringToObject(children6_meta6_data1_filed,"icon","date");
  657. cJSON_AddBoolToObject(children6_meta6_data1_filed,"noCache",false);
  658. cJSON_AddStringToObject(children6_meta6_data1_filed,"link","");
  659. cJSON_AddItemToObject(children6_data6_filed, "meta", children6_meta6_data1_filed);
  660. if(_GlobalMenuAuthority.DsszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data6_filed);
  661. cJSON* children6_data7_filed = cJSON_CreateObject();
  662. cJSON_AddStringToObject(children6_data7_filed,"name","Sxsz");
  663. cJSON_AddStringToObject(children6_data7_filed,"path","sxsz");
  664. cJSON_AddBoolToObject(children6_data7_filed,"hidden",false);
  665. cJSON_AddStringToObject(children6_data7_filed,"component","fwgl/sxsz/index");
  666. cJSON* children6_meta7_data1_filed = cJSON_CreateObject();
  667. cJSON_AddStringToObject(children6_meta7_data1_filed,"title",language_Sequential_setting[__globalDeviceManage._globalDevInfo.product.language]);
  668. cJSON_AddStringToObject(children6_meta7_data1_filed,"icon","drag");
  669. cJSON_AddBoolToObject(children6_meta7_data1_filed,"noCache",false);
  670. cJSON_AddStringToObject(children6_meta7_data1_filed,"link","");
  671. cJSON_AddItemToObject(children6_data7_filed, "meta", children6_meta7_data1_filed);
  672. if(_GlobalMenuAuthority.SxszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data7_filed);
  673. cJSON* children6_data8_filed = cJSON_CreateObject();
  674. cJSON_AddStringToObject(children6_data8_filed,"name","Fzsz");
  675. cJSON_AddStringToObject(children6_data8_filed,"path","fzsz");
  676. cJSON_AddBoolToObject(children6_data8_filed,"hidden",false);
  677. cJSON_AddStringToObject(children6_data8_filed,"component","fwgl/fzsz/index");
  678. cJSON* children6_meta8_data1_filed = cJSON_CreateObject();
  679. cJSON_AddStringToObject(children6_meta8_data1_filed,"title",language_Group_setting[__globalDeviceManage._globalDevInfo.product.language]);
  680. cJSON_AddStringToObject(children6_meta8_data1_filed,"icon","education");
  681. cJSON_AddBoolToObject(children6_meta8_data1_filed,"noCache",false);
  682. cJSON_AddStringToObject(children6_meta8_data1_filed,"link","");
  683. cJSON_AddItemToObject(children6_data8_filed, "meta", children6_meta8_data1_filed);
  684. if(_GlobalMenuAuthority.FzszEnabled)cJSON_AddItemToObject(children6_data_array, "children", children6_data8_filed);
  685. cJSON_AddItemToObject(data6_filed, "children", children6_data_array);
  686. if(_GlobalMenuAuthority.ServiceEnabled)cJSON_AddItemToObject(data_array, "data", data6_filed);
  687. //第八块 设备维护
  688. cJSON* data7_filed = cJSON_CreateObject();
  689. cJSON_AddStringToObject(data7_filed,"name","Sbwh");
  690. cJSON_AddStringToObject(data7_filed,"path","/sbwh");
  691. cJSON_AddBoolToObject(data7_filed,"hidden",false);
  692. cJSON_AddStringToObject(data7_filed,"redirect","noRedirect");
  693. cJSON_AddStringToObject(data7_filed,"component","Layout");
  694. cJSON_AddBoolToObject(data7_filed,"alwaysShow",true);
  695. cJSON* meta_data7_filed = cJSON_CreateObject();
  696. cJSON_AddStringToObject(meta_data7_filed,"title",language_maintenance_equipment[__globalDeviceManage._globalDevInfo.product.language]);
  697. cJSON_AddStringToObject(meta_data7_filed,"icon","upload");
  698. cJSON_AddBoolToObject(meta_data7_filed,"noCache",false);
  699. cJSON_AddStringToObject(meta_data7_filed,"link","");
  700. cJSON_AddItemToObject(data7_filed, "meta", meta_data7_filed);
  701. //children
  702. cJSON* children7_data_array = cJSON_CreateArray();
  703. cJSON* children7_data1_filed = cJSON_CreateObject();
  704. cJSON_AddStringToObject(children7_data1_filed,"name","Sbcq");
  705. cJSON_AddStringToObject(children7_data1_filed,"path","sbcq");
  706. cJSON_AddBoolToObject(children7_data1_filed,"hidden",false);
  707. cJSON_AddStringToObject(children7_data1_filed,"component","sbwh/sbcq/index");
  708. cJSON* children7_meta1_data1_filed = cJSON_CreateObject();
  709. cJSON_AddStringToObject(children7_meta1_data1_filed,"title",language_Device_restart[__globalDeviceManage._globalDevInfo.product.language]);
  710. cJSON_AddStringToObject(children7_meta1_data1_filed,"icon","button");
  711. cJSON_AddBoolToObject(children7_meta1_data1_filed,"noCache",false);
  712. cJSON_AddStringToObject(children7_meta1_data1_filed,"link","");
  713. cJSON_AddItemToObject(children7_data1_filed, "meta", children7_meta1_data1_filed);
  714. if(_GlobalMenuAuthority.SbcqEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data1_filed);
  715. cJSON* children7_data2_filed = cJSON_CreateObject();
  716. cJSON_AddStringToObject(children7_data2_filed,"name","Gjsj");
  717. cJSON_AddStringToObject(children7_data2_filed,"path","gjsj");
  718. cJSON_AddBoolToObject(children7_data2_filed,"hidden",false);
  719. cJSON_AddStringToObject(children7_data2_filed,"component","sbwh/gjsj/index");
  720. cJSON* children7_meta2_data1_filed = cJSON_CreateObject();
  721. cJSON_AddStringToObject(children7_meta2_data1_filed,"title",language_firmware_upgrade[__globalDeviceManage._globalDevInfo.product.language]);
  722. cJSON_AddStringToObject(children7_meta2_data1_filed,"icon","redis-list");
  723. cJSON_AddBoolToObject(children7_meta2_data1_filed,"noCache",false);
  724. cJSON_AddStringToObject(children7_meta2_data1_filed,"link","");
  725. cJSON_AddItemToObject(children7_data2_filed, "meta", children7_meta2_data1_filed);
  726. if(_GlobalMenuAuthority.GjsjEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data2_filed);
  727. #ifdef USE_BOARD_UPGRADE
  728. tmp = cJSON_CreateObject();
  729. cJSON_AddStringToObject(tmp,"name","Kzbsj");
  730. cJSON_AddStringToObject(tmp,"path","kzbsj");
  731. cJSON_AddBoolToObject(tmp,"hidden",false);
  732. cJSON_AddStringToObject(tmp,"component","sbwh/kzbsj/index");
  733. tmp1 = cJSON_CreateObject();
  734. cJSON_AddStringToObject(tmp1,"title",language_ctrlboard_upgrade[__globalDeviceManage._globalDevInfo.product.language]);
  735. cJSON_AddStringToObject(tmp1,"icon","redis-list");
  736. cJSON_AddBoolToObject(tmp1,"noCache",false);
  737. cJSON_AddStringToObject(tmp1,"link","");
  738. cJSON_AddItemToObject(tmp, "meta", tmp1);
  739. if(_GlobalMenuAuthority.KzbsjEnabled)cJSON_AddItemToObject(children7_data_array, "children", tmp);
  740. #endif
  741. cJSON* children7_data3_filed = cJSON_CreateObject();
  742. cJSON_AddStringToObject(children7_data3_filed,"name","Hhccsz");
  743. cJSON_AddStringToObject(children7_data3_filed,"path","hhccsz");
  744. cJSON_AddBoolToObject(children7_data3_filed,"hidden",false);
  745. cJSON_AddStringToObject(children7_data3_filed,"component","sbwh/hhccsz/index");
  746. cJSON* children7_meta3_data1_filed = cJSON_CreateObject();
  747. cJSON_AddStringToObject(children7_meta3_data1_filed,"title",language_back_factor_upgrade[__globalDeviceManage._globalDevInfo.product.language]);
  748. cJSON_AddStringToObject(children7_meta3_data1_filed,"icon","server");
  749. cJSON_AddBoolToObject(children7_meta3_data1_filed,"noCache",false);
  750. cJSON_AddStringToObject(children7_meta3_data1_filed,"link","");
  751. cJSON_AddItemToObject(children7_data3_filed, "meta", children7_meta3_data1_filed);
  752. if(_GlobalMenuAuthority.HhccszEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data3_filed);
  753. cJSON* children7_data4_filed = cJSON_CreateObject();
  754. cJSON_AddStringToObject(children7_data4_filed,"name","Pzdrdc");
  755. cJSON_AddStringToObject(children7_data4_filed,"path","pzdrdc");
  756. cJSON_AddBoolToObject(children7_data4_filed,"hidden",false);
  757. cJSON_AddStringToObject(children7_data4_filed,"component","sbwh/pzdrdc/index");
  758. cJSON* children7_meta4_data1_filed = cJSON_CreateObject();
  759. cJSON_AddStringToObject(children7_meta4_data1_filed,"title",language_Configure_inport_export[__globalDeviceManage._globalDevInfo.product.language]);
  760. cJSON_AddStringToObject(children7_meta4_data1_filed,"icon","upload");
  761. cJSON_AddBoolToObject(children7_meta4_data1_filed,"noCache",false);
  762. cJSON_AddStringToObject(children7_meta4_data1_filed,"link","");
  763. cJSON_AddItemToObject(children7_data4_filed, "meta", children7_meta4_data1_filed);
  764. if(_GlobalMenuAuthority.PzdrdcEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data4_filed);
  765. cJSON* children7_data5_filed = cJSON_CreateObject();
  766. cJSON_AddStringToObject(children7_data5_filed,"name","Shfw");
  767. cJSON_AddStringToObject(children7_data5_filed,"path","shfw");
  768. cJSON_AddBoolToObject(children7_data5_filed,"hidden",false);
  769. cJSON_AddStringToObject(children7_data5_filed,"component","sbwh/shfw/index");
  770. cJSON* children7_meta5_data1_filed = cJSON_CreateObject();
  771. cJSON_AddStringToObject(children7_meta5_data1_filed,"title",language_after_sales_service[__globalDeviceManage._globalDevInfo.product.language]);
  772. cJSON_AddStringToObject(children7_meta5_data1_filed,"icon","peoples");
  773. cJSON_AddBoolToObject(children7_meta5_data1_filed,"noCache",false);
  774. cJSON_AddStringToObject(children7_meta5_data1_filed,"link","");
  775. cJSON_AddItemToObject(children7_data5_filed, "meta", children7_meta5_data1_filed);
  776. if(_GlobalMenuAuthority.ShfwEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data5_filed);
  777. cJSON* children7_data6_filed = cJSON_CreateObject();
  778. cJSON_AddStringToObject(children7_data6_filed,"name","Gysb");
  779. cJSON_AddStringToObject(children7_data6_filed,"path","gysb");
  780. cJSON_AddBoolToObject(children7_data6_filed,"hidden",false);
  781. cJSON_AddStringToObject(children7_data6_filed,"component","sbwh/gysb/index");
  782. cJSON* children7_meta6_data1_filed = cJSON_CreateObject();
  783. cJSON_AddStringToObject(children7_meta6_data1_filed,"title",language_about_Equipment[__globalDeviceManage._globalDevInfo.product.language]);
  784. cJSON_AddStringToObject(children7_meta6_data1_filed,"icon","table");
  785. cJSON_AddBoolToObject(children7_meta6_data1_filed,"noCache",false);
  786. cJSON_AddStringToObject(children7_meta6_data1_filed,"link","");
  787. cJSON_AddItemToObject(children7_data6_filed, "meta", children7_meta6_data1_filed);
  788. if(_GlobalMenuAuthority.GysbEnabled)cJSON_AddItemToObject(children7_data_array, "children", children7_data6_filed);
  789. cJSON_AddItemToObject(data7_filed, "children", children7_data_array);
  790. if(_GlobalMenuAuthority.MaintenanceEnabled)cJSON_AddItemToObject(data_array, "data", data7_filed);
  791. //主
  792. cJSON_AddItemToObject(root, "data", data_array);
  793. //转换
  794. str = cJSON_Print(root);
  795. cJSON_Delete(root);
  796. return str;
  797. }
  798. /// @brief 获取请求的token信息
  799. /// @param str
  800. /// @param
  801. /// @param
  802. /// @return
  803. char* json_to_Token_info(const char* strHead)
  804. {
  805. if (strHead==NULL)
  806. {
  807. return NULL;
  808. }
  809. const char *Token_start = strstr(strHead, "Authorization:");
  810. if (Token_start == NULL)
  811. {
  812. // 如果没有找到Authorization头部,则返回NULL
  813. return NULL;
  814. }
  815. // 跳过"Authorization:"和可能存在的空格
  816. Token_start += 14; // 14是"Authorization:"的长度
  817. while (*Token_start == ' ' || *Token_start == '\t')
  818. {
  819. Token_start++;
  820. }
  821. const char *auth_start = strstr(Token_start, "Bearer");
  822. if (auth_start == NULL)
  823. {
  824. // 如果没有找到Bearer头部,则返回NULL
  825. return NULL;
  826. }
  827. // 跳过"Bearer"和可能存在的空格
  828. auth_start += 6; //6是"Bearer"的长度
  829. while (*auth_start == ' ' || *auth_start == '\t')
  830. {
  831. auth_start++;
  832. }
  833. // 找到头部的结束位置(即下一个"\r\n")
  834. const char *auth_end = strstr(auth_start, "\r\n");
  835. if (auth_end == NULL)
  836. {
  837. // 如果没有找到头部结束,则可能是格式不正确的HTTP请求
  838. // 这里简单返回NULL,但实际应用中可能需要更复杂的错误处理
  839. return NULL;
  840. }
  841. // 计算需要复制的字节数(不包括"\r\n")
  842. size_t auth_len = auth_end - auth_start;
  843. if (auth_len>=64 || auth_len<0 )
  844. {
  845. // 长度超过64字节,则认为格式不正确,返回NULL
  846. return NULL;
  847. }
  848. // 分配内存并复制Authorization头部的值
  849. char* auth_value = (char*)malloc(auth_len + 1); // 加1是为了'\0'
  850. if (auth_value != NULL) {
  851. memcpy(auth_value, auth_start, auth_len);
  852. auth_value[auth_len] = '\0'; // 添加字符串结束符
  853. }
  854. return auth_value;
  855. }
  856. /// @brief 获取登录用户信息
  857. /// @param str
  858. /// @param _over_all_sts_
  859. /// @param
  860. /// @return
  861. int json_to_User_login_info(const char* str,_User_Log* _newUserLogin)
  862. {
  863. cJSON* cjson = NULL;
  864. cjson = cJSON_Parse(str);
  865. if(cjson==NULL)
  866. {
  867. log_e("Invalid JSON!");
  868. return -1;
  869. }
  870. cJSON *cjson_username = cJSON_GetObjectItem(cjson, "username");
  871. if (cjson_username != NULL)
  872. strcpy(_newUserLogin->user_name,cjson_username->valuestring);
  873. cJSON *cjson_password = cJSON_GetObjectItem(cjson, "password");
  874. if (cjson_password != NULL)
  875. strcpy(_newUserLogin->user_password,cjson_password->valuestring);
  876. cJSON *cjson_uuid = cJSON_GetObjectItem(cjson, "uuid");
  877. if (cjson_uuid != NULL)
  878. strcpy(_newUserLogin->user_uuid,cjson_uuid->valuestring);
  879. cJSON_Delete(cjson);
  880. return 0 ;
  881. }
  882. /// @brief 获取注销用户信息
  883. /// @param str
  884. /// @param _over_all_sts_
  885. /// @param
  886. /// @return
  887. int json_to_User_loginOut_info(const char* str,char** _UserLoginOutToken)
  888. {
  889. cJSON* cjson = NULL;
  890. cjson = cJSON_Parse(str);
  891. if(cjson==NULL)
  892. {
  893. log_e("Invalid JSON!");
  894. return -1;
  895. }
  896. cJSON *cjson_token= cJSON_GetObjectItem(cjson, "token");
  897. if (cjson_token != NULL && _UserLoginOutToken!=NULL) {
  898. int len=strlen(cjson_token->valuestring);
  899. char *p = (char*)malloc(len+2);
  900. if(p) {
  901. strcpy(p, cjson_token->valuestring);
  902. }
  903. *_UserLoginOutToken = p;
  904. }
  905. cJSON_Delete(cjson);
  906. return 0 ;
  907. }
  908. /// @brief 获取设备总体信息
  909. /// @param str
  910. /// @param _over_all_sts_
  911. /// @param
  912. /// @return
  913. cJSON* json_to_overall_status_monitor(const char* str,_Over_All_Sts_Monitor* _over_all_sts_monitor)
  914. {
  915. cJSON* cjson = NULL;
  916. cjson = cJSON_Parse(str);
  917. if(cjson==NULL)
  918. {
  919. log_e("Invalid JSON!");
  920. return NULL;
  921. }
  922. cJSON *cjson_token = cJSON_GetObjectItem(cjson, "token");
  923. if (cjson_token != NULL)
  924. _over_all_sts_monitor->user_token = cjson_token->valuestring;
  925. cJSON *cjson_type = cJSON_GetObjectItem(cjson, "type");
  926. if (cjson_type != NULL)
  927. _over_all_sts_monitor->type = cjson_type->valuestring;
  928. cJSON *cjson_ltype = cJSON_GetObjectItem(cjson, "lType");
  929. cJSON *cjson_productPhOrder = cJSON_GetObjectItem(cjson, "productPhOrder");
  930. if (cjson_ltype != NULL)
  931. _over_all_sts_monitor->lType = cjson_ltype->valuestring;
  932. else if (cjson_productPhOrder!=NULL)
  933. {
  934. _over_all_sts_monitor->lType = cjson_productPhOrder->valuestring;
  935. }
  936. cJSON *cjson_productName = cJSON_GetObjectItem(cjson, "productName");
  937. if (cjson_productName != NULL)
  938. _over_all_sts_monitor->product_name = cjson_productName->valuestring;
  939. cJSON *cjson_product_id = cJSON_GetObjectItem(cjson, "productId");
  940. if (cjson_product_id != NULL)
  941. _over_all_sts_monitor->product_id = atoi(cjson_product_id->valuestring);
  942. cJSON *cjson_productNumber = cJSON_GetObjectItem(cjson, "productNumber");
  943. if (cjson_productNumber != NULL)
  944. _over_all_sts_monitor->product_number = cjson_productNumber->valuestring;
  945. cJSON *cjson_start_time = cJSON_GetObjectItem(cjson, "startTime");
  946. if (cjson_start_time != NULL)
  947. _over_all_sts_monitor->start_time = cjson_start_time->valuestring;
  948. cJSON *cjson_end_time = cJSON_GetObjectItem(cjson, "endTime");
  949. if (cjson_end_time != NULL)
  950. _over_all_sts_monitor->end_time = cjson_end_time->valuestring;
  951. cJSON *cjson_page_num = cJSON_GetObjectItem(cjson, "pageNum");
  952. if (cjson_page_num != NULL)
  953. _over_all_sts_monitor->page_num = cjson_page_num->valuestring;
  954. cJSON *cjson_page_size = cJSON_GetObjectItem(cjson, "pageSize");
  955. if (cjson_page_size != NULL)
  956. _over_all_sts_monitor->page_size = cjson_page_size->valuestring;
  957. cJSON *cjson_product_type = cJSON_GetObjectItem(cjson, "productType");
  958. if (cjson_product_type != NULL)
  959. _over_all_sts_monitor->product_pwr_type = atoi(cjson_product_type->valuestring);
  960. else _over_all_sts_monitor->product_pwr_type = -1;
  961. cJSON *cjson_PhOrder = cJSON_GetObjectItem(cjson, "productPhOrder");
  962. if (cjson_PhOrder != NULL)
  963. _over_all_sts_monitor->product_phOrder = cjson_PhOrder->valuestring;
  964. return cjson ;
  965. }
  966. /// @brief 获取设备维护信息
  967. /// @param str
  968. /// @param _over_equipment_mintenance
  969. /// @return
  970. cJSON* json_to_over_equipment_mintenance(const char* str,_Equipment_Mintenance* _over_equipment_mintenance)
  971. {
  972. cJSON* cjson = NULL;
  973. cjson = cJSON_Parse(str);
  974. if(cjson==NULL)
  975. {
  976. log_e("Invalid JSON!");
  977. return NULL;
  978. }
  979. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  980. if(cjson_token!=NULL)
  981. _over_equipment_mintenance->user_token = cjson_token->valuestring;
  982. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  983. if(cjson_type!=NULL)
  984. _over_equipment_mintenance->type = cjson_type->valuestring;
  985. if(strcmp(_over_equipment_mintenance->type,"switchSave") == 0)
  986. {
  987. cJSON* cjson_cjfs = cJSON_GetObjectItem(cjson,"cjfs");
  988. if(cjson_cjfs!=NULL)
  989. _over_equipment_mintenance->cjfs = cjson_cjfs->valuestring;
  990. cJSON* cjson_comkh = cJSON_GetObjectItem(cjson,"comkh");
  991. if(cjson_comkh!=NULL)
  992. _over_equipment_mintenance->comkh = cjson_comkh->valuestring;
  993. cJSON* cjson_cjdz = cJSON_GetObjectItem(cjson,"cjdz");
  994. if(cjson_cjdz!=NULL)
  995. _over_equipment_mintenance->cjdz = cjson_cjdz->valuestring;
  996. cJSON* cjson_jdh = cJSON_GetObjectItem(cjson,"jdh");
  997. if(cjson_jdh!=NULL)
  998. _over_equipment_mintenance->jdh = cjson_jdh->valuestring;
  999. cJSON* cjson_productChIds = cJSON_GetObjectItem(cjson,"productChIds");
  1000. if(cjson_productChIds!=NULL)
  1001. _over_equipment_mintenance->productChids = cjson_productChIds->valuestring;
  1002. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1003. if(cjson_productId!=NULL)
  1004. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1005. // cJSON* cjson_jdh = cJSON_GetObjectItem(cjson,"jdh");
  1006. // if(cjson_jdh!=NULL)
  1007. // _over_equipment_mintenance->jdh = cjson_jdh->valuestring;
  1008. } else if(strcmp(_over_equipment_mintenance->type,"switchUpdate") == 0){
  1009. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1010. if(cjson_productId!=NULL)
  1011. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1012. cJSON* cjson_productChIds = cJSON_GetObjectItem(cjson,"productChIds");
  1013. if(cjson_productChIds!=NULL)
  1014. _over_equipment_mintenance->productChids = cjson_productChIds->valuestring;
  1015. cJSON* cjson_switchId = cJSON_GetObjectItem(cjson,"switchId");
  1016. if(cjson_switchId!=NULL)
  1017. _over_equipment_mintenance->switchId = cjson_switchId->valueint;
  1018. cJSON* cjson_switchName = cJSON_GetObjectItem(cjson,"switchName");
  1019. if(cjson_switchName != NULL)
  1020. _over_equipment_mintenance->switchName = cjson_switchName->valuestring;
  1021. }else if (strcmp(_over_equipment_mintenance->type,"switchDelete") == 0){
  1022. cJSON* cjson_switchId = cJSON_GetObjectItem(cjson,"switchId");
  1023. if(cjson_switchId!=NULL)
  1024. _over_equipment_mintenance->switchId = cjson_switchId->valueint;
  1025. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1026. if(cjson_productId!=NULL)
  1027. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1028. }else if(strcmp(_over_equipment_mintenance->type,"listSwitchtatusQuery") == 0)
  1029. {
  1030. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1031. if(cjson_productId!=NULL)
  1032. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1033. }else if (strcmp(_over_equipment_mintenance->type,"cleanUp") == 0)
  1034. {
  1035. cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
  1036. if(cjson_productId!=NULL)
  1037. _over_equipment_mintenance->product_id = cjson_productId->valuestring;
  1038. cJSON* cjson_cleanSelect = cJSON_GetObjectItem(cjson,"cleanSelect");
  1039. if(cjson_cleanSelect!=NULL)
  1040. _over_equipment_mintenance->cleanSelectItem = cjson_cleanSelect->valuestring;
  1041. }
  1042. else
  1043. {
  1044. cJSON* cjson_productName = cJSON_GetObjectItem(cjson,"productName");
  1045. if(cjson_productName!=NULL)
  1046. _over_equipment_mintenance->product_name = cjson_productName->valuestring;
  1047. cJSON* cjson_productNumber = cJSON_GetObjectItem(cjson,"productNumber");
  1048. if(cjson_productNumber!=NULL)
  1049. _over_equipment_mintenance->product_number = cjson_productNumber->valuestring;
  1050. }
  1051. return cjson;
  1052. }
  1053. /// @brief 返回系统信息
  1054. /// @return
  1055. char* json_to_system_config_info(int tls)
  1056. {
  1057. char* str = NULL;
  1058. buf_t logo={NULL,0,0};
  1059. // 创建 JSON 对象
  1060. cJSON* root = cJSON_CreateObject();
  1061. // 添加基本键值对
  1062. cJSON_AddNumberToObject(root, "code", 200);
  1063. cJSON* data_field = cJSON_CreateObject();
  1064. // 添加基本键值对
  1065. int nLanguageID=__globalDeviceManage._globalDevInfo.product.language+1;
  1066. cJSON_AddNumberToObject(data_field, "systemLanguage", nLanguageID);
  1067. //返回websockt
  1068. char strIPInfo[64] = "ws://192.168.1.132:6785/websocket/";
  1069. if(tls) {
  1070. sprintf(strIPInfo,"wss://%s:6786/websocket/", getLocalIpAddress("eth0"));
  1071. }
  1072. else {
  1073. sprintf(strIPInfo,"ws://%s:6785/websocket/", getLocalIpAddress("eth0"));
  1074. }
  1075. cJSON_AddStringToObject(data_field,"webSocket",strIPInfo);
  1076. get_base64(&logo, NULL);
  1077. cJSON_AddStringToObject(data_field,"logo",logo.buf?logo.buf:"");
  1078. if(logo.buf) free(logo.buf);
  1079. cJSON_AddItemToObject(root,"data",data_field);
  1080. cJSON_AddStringToObject(root, "msg", "操作成功");
  1081. str = cJSON_Print(root);
  1082. cJSON_Delete(root);
  1083. return str;
  1084. }
  1085. /// @brief 多语言切换
  1086. /// @param str
  1087. /// @return
  1088. int json_to_switch_language(const char* str)
  1089. {
  1090. cJSON* cjson = NULL;
  1091. cjson = cJSON_Parse(str);
  1092. if(cjson==NULL)
  1093. {
  1094. log_e("Invalid JSON!");
  1095. return -1;
  1096. }
  1097. cJSON* cjson_language = cJSON_GetObjectItem(cjson,"lang");
  1098. if(cjson_language!=NULL)
  1099. {
  1100. log_d(cjson_language->valuestring);
  1101. if(strcmp(cjson_language->valuestring,"zh-CN")==0)
  1102. {
  1103. __globalDeviceManage._globalDevInfo.product.language = 0 ;
  1104. }
  1105. else if(strcmp(cjson_language->valuestring,"en-US")==0)
  1106. {
  1107. __globalDeviceManage._globalDevInfo.product.language = 1 ;
  1108. }
  1109. else if(strcmp(cjson_language->valuestring,"ru-RU")==0)
  1110. {
  1111. __globalDeviceManage._globalDevInfo.product.language = 2 ;
  1112. }
  1113. else
  1114. __globalDeviceManage._globalDevInfo.product.language = 0 ;
  1115. }
  1116. cJSON_Delete(cjson);
  1117. return 0;
  1118. }
  1119. /// @brief 返回监控总信息
  1120. /// @param _over_back_sts_info
  1121. /// @return
  1122. char* over_all_monitor_to_json(_OverBackStsInfo* _over_back_sts_info)
  1123. {
  1124. char* str = NULL;
  1125. // 创建 JSON 对象
  1126. cJSON* root = cJSON_CreateObject();
  1127. // 添加基本键值对
  1128. cJSON_AddNumberToObject(root, "code", 200);
  1129. //创建数据
  1130. cJSON* data_root_array = cJSON_CreateArray();
  1131. //添加第一条记录
  1132. cJSON* data_filed = cJSON_CreateObject();
  1133. cJSON_AddStringToObject(data_filed,"productName",_over_back_sts_info->product_name);
  1134. cJSON_AddStringToObject(data_filed,"productNumber",_over_back_sts_info->product_number);
  1135. cJSON_AddNumberToObject(data_filed,"productId",_over_back_sts_info->product_id);
  1136. char temp[32] = {0};
  1137. sprintf(temp,"%d",_over_back_sts_info->product_type_id);
  1138. cJSON_AddStringToObject(data_filed,"productType",temp);
  1139. //cJSON_AddNumberToObject(data_filed,"productType",_over_back_sts_info->product_type_id);
  1140. cJSON_AddStringToObject(data_filed,"productPwrType",_over_back_sts_info->productPwrType);
  1141. cJSON_AddStringToObject(data_filed,"productVersion",_over_back_sts_info->productVersion);
  1142. // cJSON_AddStringToObject(data_filed,"productConsumption",_over_back_sts_info->productConsumption);
  1143. cJSON_AddNumberToObject(data_filed,"productMemory",_over_back_sts_info->productMemory);
  1144. cJSON_AddStringToObject(data_filed,"occupancyRate",_over_back_sts_info->occupancyRate);
  1145. cJSON_AddStringToObject(data_filed,"productAddr",_over_back_sts_info->productAddr);
  1146. cJSON_AddNumberToObject(data_filed,"productCount",_over_back_sts_info->productCount);
  1147. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1148. //第二条记录
  1149. cJSON_AddItemToObject(root, "data", data_root_array);
  1150. //添加结果
  1151. cJSON_AddStringToObject(root, "msg", "操作成功");
  1152. //转换
  1153. str = cJSON_Print(root);
  1154. //释放资源
  1155. cJSON_Delete(root);
  1156. return str;
  1157. }
  1158. /// @brief return breaker device list information
  1159. /// @param _over_back_sts_info
  1160. /// @return
  1161. char* over_breaker_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackBreakerInfo* _over_back_sts_info,bool curFlag)
  1162. {
  1163. int i,r;
  1164. char* str = NULL;
  1165. dev_list_t dl;
  1166. char temp[100] = {0};
  1167. // 创建 JSON 对象
  1168. cJSON* root = cJSON_CreateObject();
  1169. if(root) {
  1170. cJSON_AddNumberToObject(root, "code", 200);
  1171. cJSON* root_array = cJSON_CreateArray();
  1172. if(root_array) {
  1173. r = cascade_get_dlist(&dl);
  1174. if(r==0) {
  1175. for(i=0; i<dl.cnt; i++) {
  1176. cJSON* data_filed = cJSON_CreateObject();
  1177. if(data_filed) {
  1178. if(dl.slave[i].addr==0) {
  1179. sprintf(temp, "%s", _over_back_sts_info->product_name);
  1180. }
  1181. else{
  1182. sprintf(temp, "%s %d", _over_back_sts_info->product_name, dl.slave[i].addr);
  1183. }
  1184. cJSON_AddStringToObject(data_filed, "productName", temp);
  1185. sprintf(temp, "%d", dl.slave[i].addr);
  1186. cJSON_AddStringToObject(data_filed, "productId", temp);
  1187. //cJSON_AddNumberToObject(data_filed, "productId", dl.slave[i].addr);
  1188. cJSON_AddStringToObject(data_filed, "productNumber", _over_back_sts_info->product_number);
  1189. cJSON_AddNumberToObject(data_filed, "productType", _over_back_sts_info->product_type);
  1190. cJSON_AddItemToArray(root_array, data_filed);
  1191. }
  1192. //如果是listSbWhQuery请求,只推送当前PDU信息
  1193. if (curFlag)
  1194. {
  1195. break;
  1196. }
  1197. }
  1198. cascade_free_dlist(&dl);
  1199. }
  1200. cJSON_AddItemToObject(root, "data", root_array);
  1201. }
  1202. cJSON_AddStringToObject(root, "msg", "操作成功");
  1203. str = cJSON_Print(root);
  1204. cJSON_Delete(root);
  1205. }
  1206. return str;
  1207. }
  1208. /// @brief 返回设备列表
  1209. /// @param _over_back_sts_info
  1210. /// @return
  1211. char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo* _over_back_sts_info,bool curFlag)
  1212. {
  1213. int i,r;
  1214. char* str = NULL;
  1215. dev_list_t dl;
  1216. char temp[100] = {0};
  1217. // 创建 JSON 对象
  1218. cJSON* root = cJSON_CreateObject();
  1219. if(root) {
  1220. cJSON_AddNumberToObject(root, "code", 200);
  1221. cJSON* root_array = cJSON_CreateArray();
  1222. if(root_array) {
  1223. r = cascade_get_dlist(&dl);
  1224. if(r==0) {
  1225. for(i=0; i<dl.cnt; i++) {
  1226. cJSON* data_filed = cJSON_CreateObject();
  1227. if(data_filed) {
  1228. if(dl.slave[i].addr==0) {
  1229. sprintf(temp, "%s", _over_back_sts_info->product_name);
  1230. }
  1231. else{
  1232. sprintf(temp, "%s %d", _over_back_sts_info->product_name, dl.slave[i].addr);
  1233. }
  1234. cJSON_AddStringToObject(data_filed, "productName", temp);
  1235. sprintf(temp, "%d", dl.slave[i].addr);
  1236. cJSON_AddStringToObject(data_filed, "productId", temp);
  1237. //cJSON_AddNumberToObject(data_filed, "productId", dl.slave[i].addr);
  1238. cJSON_AddStringToObject(data_filed, "productNumber", _over_back_sts_info->product_number);
  1239. cJSON_AddStringToObject(data_filed, "productCode", _over_back_sts_info->product_Code);
  1240. cJSON_AddStringToObject(data_filed, "productModel", _over_back_sts_info->product_type);
  1241. if(dl.slave[i].addr==0) {
  1242. cJSON_AddStringToObject(data_filed, "productVersion", VERSION);
  1243. cJSON_AddStringToObject(data_filed, "productTypeName", _over_back_sts_info->product_type);
  1244. cJSON_AddStringToObject(data_filed, "systemTime", _over_back_sts_info->product_sysTime);
  1245. get_bldtime(temp, sizeof(temp));
  1246. cJSON_AddStringToObject(data_filed, "firmwareDate", temp);
  1247. cJSON_AddStringToObject(data_filed, "runTime", _over_back_sts_info->product_runTime);
  1248. cJSON_AddStringToObject(data_filed, "IPadress", _over_back_sts_info->productAddr);
  1249. cJSON_AddStringToObject(data_filed, "MACadress", _over_back_sts_info->product_mac);
  1250. sprintf(temp, "%d", _over_back_sts_info->product_RS485Addr);
  1251. cJSON_AddStringToObject(data_filed, "RSadress", temp);
  1252. }
  1253. else {
  1254. cJSON_AddStringToObject(data_filed, "productVersion", "");
  1255. cJSON_AddStringToObject(data_filed, "firmwareDate", "");
  1256. cJSON_AddStringToObject(data_filed, "runTime", "");
  1257. cJSON_AddStringToObject(data_filed, "IPadress", "");
  1258. cJSON_AddStringToObject(data_filed, "MACadress", "");
  1259. sprintf(temp, "%d", dl.slave[i].addr);
  1260. cJSON_AddStringToObject(data_filed, "RSadress", temp);
  1261. }
  1262. if(_over_back_sts_info->product_type_id==SmartPDU_Tree_AC_One_B||_over_back_sts_info->product_type_id==SmartPDU_Tree_AC_One)
  1263. {
  1264. sprintf(temp, "%d", 4);
  1265. }else{
  1266. sprintf(temp, "%d", _over_back_sts_info->product_type_id);
  1267. }
  1268. cJSON_AddStringToObject(data_filed, "productType", temp);
  1269. if(dl.slave[i].addr==0 && curFlag==0) {
  1270. WebcfgInfo_t *wc=&dm->_globalDevInfo.webcfg;
  1271. sprintf(temp, "%d", wc->monway);
  1272. cJSON_AddStringToObject(data_filed, "jkfs", temp); //监控方式 (1,2,3)
  1273. sprintf(temp, "%d", wc->netsw);
  1274. cJSON_AddStringToObject(data_filed, "dwkjk", temp); //电网口监测 (0,1)
  1275. sprintf(temp, "%d", wc->nwire);
  1276. cJSON_AddStringToObject(data_filed, "lxkz", temp); //零线控制 (0,1)
  1277. sprintf(temp, "%d", wc->ipv4);
  1278. cJSON_AddStringToObject(data_filed, "ip4sz", temp); //ipv4设置 (0,1)
  1279. sprintf(temp, "%d", wc->ipv6);
  1280. cJSON_AddStringToObject(data_filed, "ip6sz", temp); //ipv6设置 (0,1)
  1281. }
  1282. cJSON_AddStringToObject(data_filed, "productStatus", "online");
  1283. cJSON_AddItemToArray(root_array, data_filed);
  1284. }
  1285. //如果是listSbWhQuery请求,只推送当前PDU信息
  1286. if (curFlag)
  1287. {
  1288. break;
  1289. }
  1290. }
  1291. cascade_free_dlist(&dl);
  1292. }
  1293. cJSON_AddItemToObject(root, "data", root_array);
  1294. }
  1295. cJSON_AddStringToObject(root, "msg", "操作成功");
  1296. str = cJSON_Print(root);
  1297. cJSON_Delete(root);
  1298. }
  1299. return str;
  1300. }
  1301. static int get_cnt(char *buf, char c)
  1302. {
  1303. int cnt=0;
  1304. while(*buf) {
  1305. if((*buf)==c) {
  1306. cnt++;
  1307. }
  1308. buf++;
  1309. }
  1310. return cnt;
  1311. }
  1312. static char* get_changes(char *path)
  1313. {
  1314. char tok='\n';
  1315. char *p=NULL,*src,*dst;
  1316. char *fbuf=file_load2(path, 1);
  1317. #define BR_REPLACE
  1318. if(fbuf) {
  1319. #ifdef BR_REPLACE
  1320. int len=strlen(fbuf);
  1321. int cnt=get_cnt(fbuf, tok);
  1322. p = malloc(len+cnt*5);
  1323. if(p) {
  1324. dst = p;
  1325. src = fbuf;
  1326. while(*src) {
  1327. if((*src)==tok) {
  1328. memcpy(dst, "<br>", 4);
  1329. dst += 4;
  1330. }
  1331. else {
  1332. *dst = *src;
  1333. dst++;
  1334. }
  1335. src++;
  1336. }
  1337. *dst = 0;
  1338. }
  1339. free(fbuf);
  1340. #else
  1341. p = fbuf;
  1342. #endif
  1343. }
  1344. return p;
  1345. }
  1346. char* upgrade_to_json(void)
  1347. {
  1348. char* str = NULL;
  1349. char *p,temp[200];
  1350. GlobalDeviceManager *dm=&__globalDeviceManage;
  1351. // 创建 JSON 对象
  1352. cJSON* root = cJSON_CreateObject();
  1353. // 添加基本键值对
  1354. cJSON_AddNumberToObject(root, "code", 200);
  1355. cJSON* array = cJSON_CreateArray();
  1356. cJSON* data_field = cJSON_CreateObject();
  1357. sprintf(temp,"%d",dm->_globalDevInfo.product.id);
  1358. cJSON_AddStringToObject(data_field,"productId",temp);
  1359. cJSON_AddStringToObject(data_field,"productVersion",VERSION);
  1360. get_bldtime(temp, sizeof(temp));
  1361. cJSON_AddStringToObject(data_field,"versionDate",temp);
  1362. sys_get_path(temp, CHANGES_NAME);
  1363. p = file_load2(temp, 1);
  1364. if(p) {
  1365. cJSON_AddStringToObject(data_field,"updateContent", p);
  1366. free(p);
  1367. }
  1368. cJSON_AddItemToArray(array, data_field);
  1369. cJSON_AddItemToObject(root, "data", array);
  1370. cJSON_AddStringToObject(root, "msg", language_Operation_Tips_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1371. //转换
  1372. str = cJSON_Print(root);
  1373. //释放资源
  1374. cJSON_Delete(root);
  1375. return str;
  1376. }
  1377. static int add_item(handle_t l, node_t *node, node_t *xd, void *arg, int *act)
  1378. {
  1379. char temp[100];
  1380. cJSON* tmp,*array=(cJSON*)arg;
  1381. board_info_t *info=(board_info_t*)xd->buf;
  1382. tmp = cJSON_CreateObject();
  1383. cJSON_AddStringToObject(tmp,"productName", info->name);
  1384. sprintf(temp, "%d", info->addr);
  1385. cJSON_AddStringToObject(tmp,"productId", temp);
  1386. sprintf(temp, "%08x",info->brd_id);
  1387. cJSON_AddStringToObject(tmp,"productNumber",temp);
  1388. sprintf(temp, "%d", info->channels);
  1389. cJSON_AddStringToObject(tmp,"productChNumber", temp);
  1390. cJSON_AddStringToObject(tmp,"productVersion", info->ver);
  1391. cJSON_AddStringToObject(tmp,"upgradeDate", info->date);
  1392. sprintf(temp, "%d", info->status);
  1393. cJSON_AddStringToObject(tmp,"status",temp);
  1394. cJSON_AddItemToArray(array, tmp);
  1395. return 0;
  1396. }
  1397. char* board_to_json(handle_t l, int is_ws)
  1398. {
  1399. int i;
  1400. cJSON* tmp;
  1401. char* str=NULL;
  1402. char *p,temp[100];
  1403. cJSON* root = cJSON_CreateObject();
  1404. cJSON_AddNumberToObject(root, "code", 200);
  1405. cJSON* array = cJSON_CreateArray();
  1406. xlist_iterator(l, NULL, add_item, array);
  1407. if(is_ws) {
  1408. cJSON* data = cJSON_CreateObject();
  1409. cJSON_AddItemToObject(data, "data", array);
  1410. cJSON_AddItemToObject(root, "data", data);
  1411. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  1412. cJSON_AddStringToObject(root, "type", "controlBoardUpgrade");
  1413. cJSON_AddStringToObject(root, "message", "操作成功");
  1414. cJSON_AddBoolToObject(root, "success",true);
  1415. }
  1416. else {
  1417. cJSON_AddItemToObject(root, "data", array);
  1418. }
  1419. str = cJSON_Print(root);
  1420. cJSON_Delete(root);
  1421. return str;
  1422. }
  1423. #include "upg.h"
  1424. char *upg_chk_to_json(int r)
  1425. {
  1426. char* str = NULL;
  1427. int code=200;
  1428. cJSON* root = cJSON_CreateObject();
  1429. int lang_id=__globalDeviceManage._globalDevInfo.product.language;
  1430. if(r==UPG_OK) {
  1431. return NULL;
  1432. }
  1433. if(r>UPG_OK) {
  1434. if(r==UPG_BUSYING) {
  1435. cJSON_AddStringToObject(root, "msg", language_upgrade_busying[lang_id]);
  1436. }
  1437. else if(r==UPG_HDR_FAIL || r==UPG_MD5_FAIL) {
  1438. cJSON_AddStringToObject(root, "msg", language_upgrade_invalid[lang_id]);
  1439. }
  1440. }
  1441. else {
  1442. cJSON_AddStringToObject(root, "msg", language_upgrade_error[lang_id]);
  1443. }
  1444. cJSON_AddNumberToObject(root, "code", 500);
  1445. str = cJSON_Print(root);
  1446. cJSON_Delete(root);
  1447. return str;
  1448. }
  1449. char* vendor_info_to_json(GlobalDeviceInfo *dev)
  1450. {
  1451. char* str = NULL;
  1452. char temp[100];
  1453. buf_t logo={NULL,0,0},qrcode={NULL,0,0};
  1454. char *ptmp=NULL;
  1455. //prod_info_t info={0};
  1456. cJSON* root = cJSON_CreateObject();
  1457. cJSON_AddNumberToObject(root, "code", 200);
  1458. cJSON* root_array = cJSON_CreateArray();
  1459. if(root_array) {
  1460. cJSON* data_field = cJSON_CreateObject();
  1461. if(data_field && dev) {
  1462. cJSON_AddStringToObject(data_field, "productName", dev->product.name);
  1463. sprintf(temp, "%d", dev->product.id);
  1464. cJSON_AddStringToObject(data_field,"productId", temp);
  1465. cJSON_AddStringToObject(data_field,"productNumber", dev->product.number);
  1466. cJSON_AddStringToObject(data_field,"productVersion", dev->product.version);
  1467. get_base64(&logo, &qrcode);
  1468. cJSON_AddStringToObject(data_field,"logo", logo.buf?logo.buf:""); //base64
  1469. cJSON_AddStringToObject(data_field,"sensorAddr", dev->service.addr);
  1470. cJSON_AddStringToObject(data_field,"website", dev->service.site);
  1471. cJSON_AddStringToObject(data_field,"serviceTel", dev->service.tele);
  1472. cJSON_AddStringToObject(data_field,"mailbox", dev->service.mail);
  1473. cJSON_AddStringToObject(data_field,"qrCode",qrcode.buf?qrcode.buf:""); //base64
  1474. cJSON_AddItemToArray(root_array, data_field);
  1475. if(logo.buf) free(logo.buf);
  1476. if(qrcode.buf) free(qrcode.buf);
  1477. }
  1478. cJSON_AddItemToObject(root,"data",root_array);
  1479. }
  1480. cJSON_AddStringToObject(root, "msg", "操作成功");
  1481. str = cJSON_Print(root);
  1482. cJSON_Delete(root);
  1483. return str;
  1484. }
  1485. /// @brief 获取设备电源总体请求信息
  1486. /// @param str
  1487. /// @param _over_all_sts_
  1488. /// @param
  1489. /// @return
  1490. cJSON* json_to_overall_pwr_status_monitor(const char* str,_OverAllPwrRequest* _over_all_pwr_request)
  1491. {
  1492. cJSON* cjson = NULL;
  1493. cjson = cJSON_Parse(str);
  1494. if(cjson==NULL)
  1495. {
  1496. log_e("Invalid JSON!");
  1497. return NULL;
  1498. }
  1499. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  1500. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  1501. cJSON* cjson_name = cJSON_GetObjectItem(cjson,"productName");
  1502. cJSON* cjson_number = cJSON_GetObjectItem(cjson,"productNumber");
  1503. _over_all_pwr_request->user_token = cjson_token->valuestring;
  1504. _over_all_pwr_request->type = cjson_type->valuestring;
  1505. _over_all_pwr_request->product_name = cjson_name->valuestring;
  1506. _over_all_pwr_request->product_number = cjson_number->valuestring;
  1507. return cjson;
  1508. }
  1509. /// @brief 获取设备通道电源总体请求信息
  1510. /// @param str
  1511. /// @param _over_all_sts_
  1512. /// @param
  1513. /// @return
  1514. cJSON* json_to_chn_pwr_status_monitor(const char* str,_OverChnPwrRequest* _over_chn_pwr_request)
  1515. {
  1516. int temp = 0 ;
  1517. cJSON* cjson = NULL;
  1518. cjson = cJSON_Parse(str);
  1519. if(cjson==NULL)
  1520. {
  1521. log_e("Invalid JSON!");
  1522. return NULL;
  1523. }
  1524. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  1525. if(cjson_token!=NULL)
  1526. _over_chn_pwr_request->user_token = cjson_token->valuestring;
  1527. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  1528. if(cjson_type!=NULL)
  1529. _over_chn_pwr_request->type = cjson_type->valuestring;
  1530. cJSON* cjson_Zerotype = cJSON_GetObjectItem(cjson,"Zerotype");
  1531. if(cjson_Zerotype!=NULL)
  1532. _over_chn_pwr_request->Zerotype = cjson_Zerotype->valuestring;
  1533. cJSON* cjson_product_id = cJSON_GetObjectItem(cjson,"productId");
  1534. if(cjson_product_id!=NULL) //通道
  1535. {
  1536. if (cjson_product_id->valuestring)
  1537. {
  1538. _over_chn_pwr_request->product_id = atoi(cjson_product_id->valuestring);
  1539. }
  1540. else _over_chn_pwr_request->product_id = cjson_product_id->valueint;
  1541. }
  1542. cJSON* cjson_chn_id = cJSON_GetObjectItem(cjson,"productChId");
  1543. if(cjson_chn_id!=NULL) //通道
  1544. {
  1545. _over_chn_pwr_request->productChId = atoi(cjson_chn_id->valuestring);
  1546. }
  1547. cJSON* cjson_lType = cJSON_GetObjectItem(cjson,"lType");
  1548. if(cjson_lType!=NULL) //通道
  1549. {
  1550. _over_chn_pwr_request->lType = cjson_lType->valuestring;
  1551. }
  1552. cJSON* cjson_product_name = cJSON_GetObjectItem(cjson,"productName");
  1553. if(cjson_product_name!=NULL) //通道
  1554. _over_chn_pwr_request->product_name = cjson_product_name->valuestring ;
  1555. cJSON* cjson_productChName = cJSON_GetObjectItem(cjson,"productChName");
  1556. if(cjson_productChName!=NULL) //通道
  1557. _over_chn_pwr_request->productChName = cjson_productChName->valuestring ;
  1558. cJSON* cjson_start_time = cJSON_GetObjectItem(cjson,"startTime");
  1559. if(cjson_start_time!=NULL) //通道
  1560. _over_chn_pwr_request->start_time = cjson_start_time->valuestring ;
  1561. cJSON* cjson_end_time = cJSON_GetObjectItem(cjson,"endTime");
  1562. if(cjson_end_time!=NULL) //通道
  1563. _over_chn_pwr_request->end_time = cjson_end_time->valuestring ;
  1564. cJSON* cjson_pageNum = cJSON_GetObjectItem(cjson,"pageNum");
  1565. if(cjson_pageNum!=NULL) //通道
  1566. _over_chn_pwr_request->pageNum = cjson_pageNum->valuestring ;
  1567. cJSON* cjson_pageSize = cJSON_GetObjectItem(cjson,"pageSize");
  1568. if(cjson_pageSize!=NULL) //通道
  1569. _over_chn_pwr_request->pageSize = cjson_pageSize->valuestring ;
  1570. cJSON* cjson_ChannelLoadType= cJSON_GetObjectItem(cjson,"ChannelLoadType");
  1571. if(cjson_ChannelLoadType!=NULL) //通道
  1572. _over_chn_pwr_request->ChannelLoadType = cjson_ChannelLoadType->valuestring ;
  1573. cJSON* cjson_productPhOrder= cJSON_GetObjectItem(cjson,"productPhOrder");
  1574. if (cjson_productPhOrder)
  1575. {
  1576. _over_chn_pwr_request->productPhOrder = cjson_productPhOrder->valuestring;
  1577. }
  1578. cJSON* cjson_outputType= cJSON_GetObjectItem(cjson,"outputType");
  1579. if (cjson_outputType)
  1580. {
  1581. _over_chn_pwr_request->outputType = atoi(cjson_outputType->valuestring);
  1582. }
  1583. cJSON* cjson_ProductChIds= cJSON_GetObjectItem(cjson,"productChIds");
  1584. if (cjson_ProductChIds)
  1585. {
  1586. _over_chn_pwr_request->strProductChIds = cjson_ProductChIds->valuestring;
  1587. }
  1588. return cjson;
  1589. }
  1590. /// @brief 返回基于控制的应答
  1591. /// @param
  1592. /// @return
  1593. char* ctrl_sts_ack_to_json(void)
  1594. {
  1595. char* str = NULL;
  1596. // 创建 JSON 对象
  1597. cJSON* root = cJSON_CreateObject();
  1598. // 添加基本键值对
  1599. cJSON_AddNumberToObject(root, "code", 200);
  1600. //添加结果
  1601. cJSON_AddStringToObject(root, "msg", language_Operation_Tips_Success[__globalDeviceManage._globalDevInfo.product.language]);
  1602. //转换
  1603. str = cJSON_Print(root);
  1604. //释放资源
  1605. cJSON_Delete(root);
  1606. return str;
  1607. }
  1608. char* ctrl_breaker_err_ack_to_json(char *string)
  1609. {
  1610. char* str = NULL;
  1611. // 创建 JSON 对象
  1612. cJSON* root = cJSON_CreateObject();
  1613. // 添加基本键值对
  1614. cJSON_AddNumberToObject(root, "code", 201);
  1615. //添加结果
  1616. cJSON_AddStringToObject(root, "msg", string);
  1617. //转换
  1618. str = cJSON_Print(root);
  1619. //释放资源
  1620. cJSON_Delete(root);
  1621. return str;
  1622. }
  1623. /// @brief 返回历史信息
  1624. /// @param _globalPowerInfo
  1625. /// @param _globalDeviceInfo
  1626. /// @return
  1627. char* overall_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,GlobalDeviceInfo* _globalDeviceInfo)
  1628. {
  1629. GlobalPowerInfo* __globalPowerInfoTemp;
  1630. char* str = NULL;
  1631. char temp[32] = {0};
  1632. cJSON* root = cJSON_CreateObject();
  1633. // 添加基本键值对
  1634. cJSON_AddNumberToObject(root, "code", 200);
  1635. //创建数据
  1636. cJSON* data_root_array = cJSON_CreateArray();
  1637. list_for_each_entry(__globalPowerInfoTemp, &_globalPowerInfo->list, list)
  1638. {
  1639. //添加第一条记录
  1640. cJSON* data_filed = cJSON_CreateObject();
  1641. cJSON_AddStringToObject(data_filed,"productName",_globalDeviceInfo->product.name);
  1642. cJSON_AddStringToObject(data_filed,"productNumber",_globalDeviceInfo->product.number);
  1643. cJSON_AddNumberToObject(data_filed,"productId",_globalDeviceInfo->product.id);
  1644. sprintf(temp,"%0.3f", __globalPowerInfoTemp->_power_info.voltage);
  1645. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  1646. sprintf(temp,"%0.3f", __globalPowerInfoTemp->_power_info.current);
  1647. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  1648. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.power);
  1649. cJSON_AddStringToObject(data_filed,"productPower",temp);
  1650. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.freq);
  1651. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  1652. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.consumption);
  1653. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  1654. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.factor);
  1655. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  1656. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1657. }
  1658. //添加汇总
  1659. cJSON_AddItemToObject(root, "data", data_root_array);
  1660. //添加结果
  1661. cJSON_AddStringToObject(root, "msg", "操作成功");
  1662. //转换
  1663. str = cJSON_Print(root);
  1664. //释放资源
  1665. cJSON_Delete(root);
  1666. return str;
  1667. }
  1668. /// @brief 返回通道历史信息
  1669. /// @param _globalPowerInfo
  1670. /// @param _globalDeviceInfo
  1671. /// @return
  1672. char* over_channel_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,GlobalDeviceInfo* _globalDeviceInfo,char* chn_name,char chn)
  1673. {
  1674. GlobalPowerInfo* __globalPowerInfoTemp;
  1675. char* str = NULL;
  1676. char temp[32] = {0};
  1677. GlobalPowerManger *iterator = NULL;
  1678. cJSON* root = cJSON_CreateObject();
  1679. // 添加基本键值对
  1680. cJSON_AddNumberToObject(root, "code", 200);
  1681. //创建数据
  1682. cJSON* data_root_array = cJSON_CreateArray();
  1683. list_for_each_entry(__globalPowerInfoTemp, &_globalPowerInfo->list, list)
  1684. {
  1685. //添加第一条记录
  1686. cJSON* data_filed = cJSON_CreateObject();
  1687. cJSON_AddStringToObject(data_filed,"productName",_globalDeviceInfo->product.name);
  1688. cJSON_AddStringToObject(data_filed,"productNumber",_globalDeviceInfo->product.number);
  1689. cJSON_AddNumberToObject(data_filed,"productId",_globalDeviceInfo->product.id);
  1690. cJSON_AddStringToObject(data_filed,"productChName",chn_name);
  1691. sprintf(temp,"%d",__globalPowerInfoTemp->product_ch_id);
  1692. cJSON_AddStringToObject(data_filed,"productChId",temp);
  1693. sprintf(temp,"%0.3f", __globalPowerInfoTemp->_power_info.voltage);
  1694. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  1695. sprintf(temp,"%0.3f", __globalPowerInfoTemp->_power_info.current);
  1696. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  1697. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.power);
  1698. cJSON_AddStringToObject(data_filed,"productPower",temp);
  1699. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.freq);
  1700. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  1701. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.consumption);
  1702. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  1703. sprintf(temp,"%0.3f",__globalPowerInfoTemp->_power_info.factor);
  1704. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  1705. cJSON_AddNumberToObject(data_filed,"productChStatus",_globalDeviceInfo->product.id);
  1706. list_for_each_entry(iterator, &__globalDeviceManage._globalPowerManger.list, list)
  1707. {
  1708. if (iterator->product_id == __globalPowerInfoTemp->product_id && iterator->product_ch_id == __globalPowerInfoTemp->product_ch_id)
  1709. {
  1710. cJSON_AddNumberToObject(data_filed,"firingInterval", iterator->product_ch_start_delay / 1000);
  1711. cJSON_AddNumberToObject(data_filed,"closeInterval", iterator->product_ch_stop_delay / 1000);
  1712. break;
  1713. }
  1714. }
  1715. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1716. }
  1717. //添加汇总
  1718. cJSON_AddItemToObject(root, "data", data_root_array);
  1719. //添加结果
  1720. cJSON_AddStringToObject(root, "msg", "操作成功");
  1721. //转换
  1722. str = cJSON_Print(root);
  1723. //释放资源
  1724. cJSON_Delete(root);
  1725. return str;
  1726. }
  1727. /// @brief 返回监控总信息
  1728. /// @param _over_back_sts_info
  1729. /// @return
  1730. char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info_L1,_OverAllPwrAckInfo* _over_all_pwr_back_info_L2,_OverAllPwrAckInfo* _over_all_pwr_back_info_L3)
  1731. {
  1732. char* str = NULL;
  1733. char temp[64] = {0};
  1734. GlobalDeviceManager *dm=&__globalDeviceManage;
  1735. // 创建 JSON 对象
  1736. cJSON* root = cJSON_CreateObject();
  1737. cJSON* sdata_filed = cJSON_CreateObject();
  1738. // 添加基本键值对
  1739. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  1740. //创建数据
  1741. cJSON* data_root_array = cJSON_CreateArray();
  1742. //添加第一条记录
  1743. cJSON* data_filed = cJSON_CreateObject();
  1744. if (_over_all_pwr_back_info_L1->product_id == 0) {
  1745. sprintf(temp, "%s", _over_all_pwr_back_info_L1->product_name);
  1746. }
  1747. else {
  1748. sprintf(temp, "%s %d", _over_all_pwr_back_info_L1->product_name, _over_all_pwr_back_info_L1->product_id);
  1749. }
  1750. cJSON_AddStringToObject(data_filed,"productName",temp);
  1751. //cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info_L1->product_number);
  1752. cJSON_AddStringToObject(data_filed,"productNumber","Smart PDU");
  1753. sprintf(temp,"%d",_over_all_pwr_back_info_L1->product_id);
  1754. cJSON_AddStringToObject(data_filed,"productId",temp);
  1755. cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
  1756. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->voltage);
  1757. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  1758. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  1759. cJSON_AddStringToObject(data_filed,"productVoltageMaximum",temp);
  1760. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->current);
  1761. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  1762. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  1763. cJSON_AddStringToObject(data_filed,"productCurrentMaximum",temp);
  1764. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->power/1000);
  1765. cJSON_AddStringToObject(data_filed,"productPower",temp);
  1766. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  1767. cJSON_AddStringToObject(data_filed,"productPowerMaximum",temp);
  1768. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->freq);
  1769. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  1770. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->consumption);
  1771. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  1772. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->factor);
  1773. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  1774. sprintf(temp,"%0.3f",1.0);
  1775. cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
  1776. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1777. //第二条记录
  1778. cJSON* data_filed1= cJSON_CreateObject();
  1779. if (_over_all_pwr_back_info_L1->product_id == 0) {
  1780. sprintf(temp, "%s", _over_all_pwr_back_info_L2->product_name);
  1781. }
  1782. else {
  1783. sprintf(temp, "%s %d", _over_all_pwr_back_info_L2->product_name, _over_all_pwr_back_info_L2->product_id);
  1784. }
  1785. cJSON_AddStringToObject(data_filed1,"productName",temp);
  1786. // cJSON_AddStringToObject(data_filed1,"productNumber",_over_all_pwr_back_info_L2->product_number);
  1787. cJSON_AddStringToObject(data_filed1,"productNumber","Smart PDU");
  1788. sprintf(temp,"%d",_over_all_pwr_back_info_L2->product_id);
  1789. cJSON_AddStringToObject(data_filed1,"productId",temp);
  1790. cJSON_AddStringToObject(data_filed1,"productPhOrder","L2");
  1791. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->voltage);
  1792. cJSON_AddStringToObject(data_filed1,"productVoltage",temp);
  1793. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  1794. cJSON_AddStringToObject(data_filed1,"productVoltageMaximum",temp);
  1795. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->current);
  1796. cJSON_AddStringToObject(data_filed1,"productCurrent",temp);
  1797. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  1798. cJSON_AddStringToObject(data_filed1,"productCurrentMaximum",temp);
  1799. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->power/1000);
  1800. cJSON_AddStringToObject(data_filed1,"productPower",temp);
  1801. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  1802. cJSON_AddStringToObject(data_filed1,"productPowerMaximum",temp);
  1803. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->freq);
  1804. cJSON_AddStringToObject(data_filed1,"productPowerFreq",temp);
  1805. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->consumption);
  1806. cJSON_AddStringToObject(data_filed1,"productConsumption",temp);
  1807. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->factor);
  1808. cJSON_AddStringToObject(data_filed1,"productPowerFactor",temp);
  1809. sprintf(temp,"%0.3f",1.0);
  1810. cJSON_AddStringToObject(data_filed1,"productPowerFactorMaximum",temp);
  1811. cJSON_AddItemToObject(data_root_array, "data", data_filed1);
  1812. //第三条记录
  1813. cJSON* data_filed2= cJSON_CreateObject();
  1814. if (_over_all_pwr_back_info_L1->product_id == 0) {
  1815. sprintf(temp, "%s", _over_all_pwr_back_info_L2->product_name);
  1816. }
  1817. else {
  1818. sprintf(temp, "%s %d", _over_all_pwr_back_info_L2->product_name, _over_all_pwr_back_info_L2->product_id);
  1819. }
  1820. cJSON_AddStringToObject(data_filed2,"productName",temp);
  1821. //cJSON_AddStringToObject(data_filed2,"productNumber",_over_all_pwr_back_info_L3->product_number);
  1822. cJSON_AddStringToObject(data_filed2,"productNumber","Smart PDU");
  1823. sprintf(temp,"%d",_over_all_pwr_back_info_L3->product_id);
  1824. cJSON_AddStringToObject(data_filed2,"productId",temp);
  1825. cJSON_AddStringToObject(data_filed2,"productPhOrder","L3");
  1826. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->voltage);
  1827. cJSON_AddStringToObject(data_filed2,"productVoltage",temp);
  1828. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  1829. cJSON_AddStringToObject(data_filed2,"productVoltageMaximum",temp);
  1830. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->current);
  1831. cJSON_AddStringToObject(data_filed2,"productCurrent",temp);
  1832. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  1833. cJSON_AddStringToObject(data_filed2,"productCurrentMaximum",temp);
  1834. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->power/1000);
  1835. cJSON_AddStringToObject(data_filed2,"productPower",temp);
  1836. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  1837. cJSON_AddStringToObject(data_filed2,"productPowerMaximum",temp);
  1838. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->freq);
  1839. cJSON_AddStringToObject(data_filed2,"productPowerFreq",temp);
  1840. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->consumption);
  1841. cJSON_AddStringToObject(data_filed2,"productConsumption",temp);
  1842. sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->factor);
  1843. cJSON_AddStringToObject(data_filed2,"productPowerFactor",temp);
  1844. sprintf(temp,"%0.3f",1.0);
  1845. cJSON_AddStringToObject(data_filed2,"productPowerFactorMaximum",temp);
  1846. cJSON_AddItemToObject(data_root_array, "data", data_filed2);
  1847. //添加汇总
  1848. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  1849. cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
  1850. //添加汇总
  1851. cJSON_AddItemToObject(root, "data", sdata_filed);
  1852. //添加结果
  1853. cJSON_AddStringToObject(root, "msg", "操作成功");
  1854. //添加内容
  1855. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  1856. cJSON_AddBoolToObject(root, "success",true);
  1857. cJSON_AddStringToObject(root, "type", "overallStatusMonitoring");
  1858. //转换
  1859. str = cJSON_Print(root);
  1860. //释放资源
  1861. cJSON_Delete(root);
  1862. return str;
  1863. }
  1864. /// @brief 返回监控总信息
  1865. /// @param _over_back_sts_info
  1866. /// @return
  1867. char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_pwr_back_info)
  1868. {
  1869. char* str = NULL;
  1870. char temp[32] = {0};
  1871. GlobalDeviceManager *dm=&__globalDeviceManage;
  1872. // 创建 JSON 对象
  1873. cJSON* root = cJSON_CreateObject();
  1874. // 添加基本键值对
  1875. cJSON_AddNumberToObject(root, "code", 200);
  1876. //创建数据
  1877. cJSON* data_root_array = cJSON_CreateArray();
  1878. //添加第一条记录
  1879. cJSON* data_filed = cJSON_CreateObject();
  1880. // log_i(_over_all_pwr_back_info->product_name);
  1881. // log_i(_over_all_pwr_back_info->product_number);
  1882. cJSON_AddStringToObject(data_filed,"productName",_over_all_pwr_back_info->product_name);
  1883. //cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info->product_number);
  1884. cJSON_AddStringToObject(data_filed,"productNumber","Smart PDU");
  1885. sprintf(temp,"%d",_over_all_pwr_back_info->product_id);
  1886. cJSON_AddStringToObject(data_filed,"productId",temp);
  1887. if (phaseType==0)
  1888. {
  1889. cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
  1890. }
  1891. else if (phaseType==1)
  1892. {
  1893. cJSON_AddStringToObject(data_filed,"productPhOrder","L2");
  1894. }
  1895. else if (phaseType==2)
  1896. {
  1897. cJSON_AddStringToObject(data_filed,"productPhOrder","L3");
  1898. }
  1899. else
  1900. {
  1901. cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
  1902. }
  1903. sprintf(temp,"%0.3f",_over_all_pwr_back_info->voltage);
  1904. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  1905. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  1906. cJSON_AddStringToObject(data_filed,"productVoltageMaximum",temp);
  1907. sprintf(temp,"%0.3f",_over_all_pwr_back_info->current);
  1908. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  1909. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  1910. cJSON_AddStringToObject(data_filed,"productCurrentMaximum",temp);
  1911. sprintf(temp,"%0.3f",_over_all_pwr_back_info->power/1000.0);
  1912. cJSON_AddStringToObject(data_filed,"productPower",temp);
  1913. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  1914. cJSON_AddStringToObject(data_filed,"productPowerMaximum",temp);
  1915. sprintf(temp,"%0.3f",_over_all_pwr_back_info->freq);
  1916. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  1917. sprintf(temp,"%0.3f",_over_all_pwr_back_info->consumption);
  1918. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  1919. sprintf(temp,"%0.3f",_over_all_pwr_back_info->factor);
  1920. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  1921. sprintf(temp,"%0.3f",1.0);
  1922. cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
  1923. // cJSON_AddNumberToObject(data_filed,"productVoltage",_over_all_pwr_back_info->voltage);
  1924. // cJSON_AddNumberToObject(data_filed,"productCurrent",_over_all_pwr_back_info->current);
  1925. // cJSON_AddNumberToObject(data_filed,"productPower",_over_all_pwr_back_info->power);
  1926. // cJSON_AddNumberToObject(data_filed,"productPowerFreq",_over_all_pwr_back_info->freq);
  1927. // cJSON_AddNumberToObject(data_filed,"productConsumption",_over_all_pwr_back_info->consumption);
  1928. // cJSON_AddNumberToObject(data_filed,"productPowerFactor",_over_all_pwr_back_info->factor);
  1929. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  1930. //第二条记录
  1931. //添加汇总
  1932. cJSON_AddItemToObject(root, "data", data_root_array);
  1933. //添加结果
  1934. cJSON_AddStringToObject(root, "msg", "操作成功");
  1935. //转换
  1936. str = cJSON_Print(root);
  1937. //释放资源
  1938. cJSON_Delete(root);
  1939. return str;
  1940. }
  1941. /// @brief 返回总体统计信息
  1942. /// @param _over_back_sts_info
  1943. /// @return
  1944. char* over_all_total_info_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info, int total_type)
  1945. {
  1946. char* str = NULL;
  1947. char temp[32] = {0};
  1948. char buffer[2500] = {0};
  1949. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  1950. // 创建 JSON 对象
  1951. cJSON* date_total_info = cJSON_CreateObject();
  1952. // 添加基本键值对
  1953. cJSON_AddNumberToObject(date_total_info, "code", 200);
  1954. //添加一个嵌套的Json data表
  1955. cJSON* cjson_data = cJSON_CreateObject();
  1956. //创建数据表
  1957. cJSON* date_total_xAxis_array = cJSON_CreateArray();
  1958. cJSON* date_total_ydata_array = NULL ;
  1959. //添加电压统计信息
  1960. if(total_type == TOTAL_VOLTAGE_TYPE)
  1961. {
  1962. for(int i=0;i< TOTAL_COUNT;i++)
  1963. {
  1964. cJSON_AddStringToObject(date_total_xAxis_array,"",_over_all_pwr_back_info->_total_voltage.xAxis[i]);
  1965. //log_d("%s",_over_all_pwr_back_info->_total_voltage.xAxis[i]);
  1966. }
  1967. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_voltage.ydata,TOTAL_COUNT);
  1968. }
  1969. //添加电流统计信息
  1970. else if(total_type == TOTAL_CURRENT_TYPE)
  1971. {
  1972. for(int i=0;i< TOTAL_COUNT;i++)
  1973. {
  1974. cJSON_AddStringToObject(date_total_xAxis_array,"",_over_all_pwr_back_info->_total_current.xAxis[i]);
  1975. }
  1976. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_current.ydata,TOTAL_COUNT);
  1977. }
  1978. //添加功率统计信息
  1979. else if(total_type == TOTAL_POWER_TYPE)
  1980. {
  1981. for(int i=0;i< TOTAL_COUNT;i++)
  1982. {
  1983. cJSON_AddStringToObject(date_total_xAxis_array,"",_over_all_pwr_back_info->_total_power.xAxis[i]);
  1984. }
  1985. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_power.ydata,TOTAL_COUNT);
  1986. }
  1987. //添加耗电量统计信息
  1988. else if(total_type == TOTAL_POWER_CONS_TYPE)
  1989. {
  1990. for(int i=0;i< TOTAL_COUNT;i++)
  1991. {
  1992. cJSON_AddStringToObject(date_total_xAxis_array,"",_over_all_pwr_back_info->_total_consumption.xAxis[i]);
  1993. }
  1994. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_consumption.ydata,TOTAL_COUNT);
  1995. }
  1996. //添加表数据
  1997. cJSON_AddItemToObject(cjson_data,"xAxis",date_total_xAxis_array);
  1998. cJSON_AddItemToObject(cjson_data,"ydata",date_total_ydata_array);
  1999. //添加汇总
  2000. cJSON_AddItemToObject(date_total_info, "data", cjson_data);
  2001. //添加结果
  2002. cJSON_AddStringToObject(date_total_info, "msg", "操作成功");
  2003. //转换
  2004. str = cJSON_Print(date_total_info);
  2005. //log_d(str);
  2006. //释放资源
  2007. cJSON_Delete(date_total_info);
  2008. return str;
  2009. }
  2010. /// @brief 返回总体统计信息(三相)
  2011. /// @param _over_back_sts_info
  2012. /// @return
  2013. void over_all_total_info_t_ac_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info,cJSON* dataJson,cJSON* AxisJson, int total_type)
  2014. {
  2015. char* str = NULL;
  2016. char temp[32] = {0};
  2017. char buffer[2500] = {0};
  2018. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  2019. //添加一个嵌套的Json data表
  2020. cJSON* cjson_data = dataJson;
  2021. //创建数据表
  2022. cJSON* date_total_xAxis_array = AxisJson;
  2023. //date_total_xAxis_array = cJSON_CreateArray();
  2024. cJSON* date_total_ydata_array = NULL;
  2025. //添加电压统计信息
  2026. if(total_type == TOTAL_VOLTAGE_TYPE)
  2027. {
  2028. if (date_total_xAxis_array)
  2029. {
  2030. for (int i = 0; i < TOTAL_COUNT; i++)
  2031. {
  2032. cJSON_AddItemToArray(date_total_xAxis_array, cJSON_CreateString(_over_all_pwr_back_info->_total_voltage.xAxis[i]));
  2033. //cJSON_AddStringToObject(date_total_xAxis_array, "", _over_all_pwr_back_info->_total_voltage.xAxis[i]);
  2034. // log_d("%s",_over_all_pwr_back_info->_total_voltage.xAxis[i]);
  2035. }
  2036. }
  2037. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_voltage.ydata,TOTAL_COUNT);
  2038. }
  2039. //添加电流统计信息
  2040. else if(total_type == TOTAL_CURRENT_TYPE)
  2041. {
  2042. if (date_total_xAxis_array)
  2043. {
  2044. for (int i = 0; i < TOTAL_COUNT; i++)
  2045. {
  2046. cJSON_AddItemToArray(date_total_xAxis_array, cJSON_CreateString(_over_all_pwr_back_info->_total_voltage.xAxis[i]));
  2047. //cJSON_AddStringToObject(date_total_xAxis_array, "", _over_all_pwr_back_info->_total_current.xAxis[i]);
  2048. }
  2049. }
  2050. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_current.ydata,TOTAL_COUNT);
  2051. }
  2052. // 添加功率统计信息
  2053. else if (total_type == TOTAL_POWER_TYPE)
  2054. {
  2055. if (date_total_xAxis_array)
  2056. {
  2057. for (int i = 0; i < TOTAL_COUNT; i++)
  2058. {
  2059. cJSON_AddItemToArray(date_total_xAxis_array, cJSON_CreateString(_over_all_pwr_back_info->_total_voltage.xAxis[i]));
  2060. //cJSON_AddStringToObject(date_total_xAxis_array, "", _over_all_pwr_back_info->_total_power.xAxis[i]);
  2061. }
  2062. }
  2063. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_power.ydata, TOTAL_COUNT);
  2064. }
  2065. // 添加耗电量统计信息
  2066. else if (total_type == TOTAL_POWER_CONS_TYPE)
  2067. {
  2068. if (date_total_xAxis_array)
  2069. {
  2070. for (int i = 0; i < TOTAL_COUNT; i++)
  2071. {
  2072. cJSON_AddItemToArray(date_total_xAxis_array, cJSON_CreateString(_over_all_pwr_back_info->_total_voltage.xAxis[i]));
  2073. //cJSON_AddStringToObject(date_total_xAxis_array, "", _over_all_pwr_back_info->_total_consumption.xAxis[i]);
  2074. }
  2075. }
  2076. date_total_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_total_consumption.ydata, TOTAL_COUNT);
  2077. }
  2078. cJSON_AddItemToObject(cjson_data,"ydata",date_total_ydata_array);
  2079. //添加表数据
  2080. //if (date_total_xAxis_array)
  2081. //{
  2082. // cJSON_AddItemToObject(cjson_data, "xAxis", date_total_xAxis_array);
  2083. //}
  2084. }
  2085. /// @brief 初始化总体统计信息(三相)
  2086. /// @cJSON* pAllJson 总json
  2087. /// @cJSON* dataJson 三相数据json
  2088. /// @return
  2089. int over_init_data_t_ac_to_json(cJSON* pAllJson,cJSON* dataJson[],cJSON* AxisJson, int total_type)
  2090. {
  2091. char* str = NULL;
  2092. char temp[32] = {0};
  2093. char buffer[2500] = {0};
  2094. //cJSON *yAxisData;
  2095. //_OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  2096. // 创建 JSON 对象
  2097. cJSON* date_total_info = pAllJson;
  2098. // 添加基本键值对
  2099. cJSON_AddNumberToObject(date_total_info, "code", 200);
  2100. //添加一个嵌套的Json data表
  2101. cJSON* cjson_data = cJSON_CreateObject();
  2102. //创建数据表
  2103. //cJSON* date_total_xAxis_array = AxisJson;
  2104. cJSON* date_total_ydata_array = cJSON_CreateArray();
  2105. //三相
  2106. for (size_t i = 0; i < 3; i++)
  2107. {
  2108. char charAddr[]="L1";
  2109. charAddr[1]='1'+i;
  2110. cJSON_AddStringToObject(dataJson[i], "id", charAddr);
  2111. //插入json数组
  2112. cJSON_AddItemToArray(date_total_ydata_array, dataJson[i]);
  2113. }
  2114. cJSON_AddItemToObject(cjson_data,"typeData",date_total_ydata_array);
  2115. //添加表数据
  2116. cJSON_AddItemToObject(cjson_data,"xAxis",AxisJson);
  2117. //添加汇总
  2118. cJSON_AddItemToObject(date_total_info, "data", cjson_data);
  2119. //添加结果
  2120. cJSON_AddStringToObject(date_total_info, "msg", "操作成功");
  2121. //释放资源
  2122. //cJSON_Delete(date_total_info);
  2123. return 0;
  2124. }
  2125. /// @brief 总体统计信息(三相)
  2126. /// @cJSON* pAllJson 总json
  2127. /// @cJSON* dataJson 三相数据json
  2128. /// @return json字符串
  2129. char *over_all_data_t_ac_to_json(_OverAllPwrAckInfo *_over_all_pwr_back_info,_Over_All_Sts_Monitor* _over_all_sts_monitor, int total_type)
  2130. {
  2131. // 申请电压统计信息参数
  2132. GlobalPowerInfo __globalPowerInfo;
  2133. // 清0
  2134. memset(&__globalPowerInfo, 0, sizeof(GlobalPowerInfo));
  2135. // 创建 JSON 对象
  2136. cJSON *date_total_info = cJSON_CreateObject();
  2137. cJSON *date_Data_info[3];
  2138. cJSON *date_Axis = cJSON_CreateArray();
  2139. for (size_t i = 0; i < 3; i++)
  2140. {
  2141. date_Data_info[i] = cJSON_CreateObject();
  2142. // 查询数据库总电源信息 传给所申请的参数结构体
  2143. if (dev_search_time_t_ac_power_info(__globalDeviceManage.db, __globalDeviceManage._globalDevInfo.product.id, 0,i,total_type, &__globalPowerInfo,_over_all_sts_monitor->start_time,_over_all_sts_monitor->end_time) != 0)
  2144. {
  2145. log_e("serach total voltage err.");
  2146. continue;
  2147. }
  2148. switch (total_type)
  2149. {
  2150. case TOTAL_VOLTAGE_TYPE:
  2151. for (int i = 0; i < TOTAL_COUNT; i++)
  2152. {
  2153. strcpy(_over_all_pwr_back_info->_total_voltage.xAxis[i], __globalPowerInfo._total_voltage.xAxis[i]);
  2154. _over_all_pwr_back_info->_total_voltage.ydata[i] = __globalPowerInfo._total_voltage.ydata[i];
  2155. }
  2156. break;
  2157. case TOTAL_CURRENT_TYPE:
  2158. for (int i = 0; i < TOTAL_COUNT; i++)
  2159. {
  2160. strcpy(_over_all_pwr_back_info->_total_current.xAxis[i], __globalPowerInfo._total_current.xAxis[i]);
  2161. _over_all_pwr_back_info->_total_current.ydata[i] = __globalPowerInfo._total_current.ydata[i];
  2162. }
  2163. break;
  2164. case TOTAL_POWER_TYPE:
  2165. for (int i = 0; i < TOTAL_COUNT; i++)
  2166. {
  2167. strcpy(_over_all_pwr_back_info->_total_power.xAxis[i], __globalPowerInfo._total_power.xAxis[i]);
  2168. _over_all_pwr_back_info->_total_power.ydata[i] = __globalPowerInfo._total_power.ydata[i];
  2169. }
  2170. break;
  2171. case TOTAL_POWER_CONS_TYPE:
  2172. for (int i = 0; i < TOTAL_COUNT; i++)
  2173. {
  2174. strcpy(_over_all_pwr_back_info->_total_consumption.xAxis[i], __globalPowerInfo._total_consumption.xAxis[i]);
  2175. _over_all_pwr_back_info->_total_consumption.ydata[i] = __globalPowerInfo._total_consumption.ydata[i];
  2176. }
  2177. break;
  2178. default:
  2179. break;
  2180. }
  2181. // 返回电压统计
  2182. if (i == 0)
  2183. {
  2184. over_all_total_info_t_ac_to_json(_over_all_pwr_back_info, date_Data_info[i], date_Axis, total_type);
  2185. }
  2186. else
  2187. {
  2188. over_all_total_info_t_ac_to_json(_over_all_pwr_back_info, date_Data_info[i], NULL, total_type);
  2189. }
  2190. }
  2191. over_init_data_t_ac_to_json(date_total_info, date_Data_info, date_Axis, total_type);
  2192. // 转换
  2193. char *ack_str = cJSON_Print(date_total_info);
  2194. cJSON_Delete(date_total_info);
  2195. return ack_str;
  2196. }
  2197. /// @brief 返回系统总数
  2198. /// @param _over_back_sts_info
  2199. /// @return
  2200. char* over_system_total_monitor_to_json(_OverBackStsInfo* _over_back_system_info)
  2201. {
  2202. char* str = NULL;
  2203. char temp[32] = {0};
  2204. // 创建 JSON 对象
  2205. cJSON* root = cJSON_CreateObject();
  2206. // 添加基本键值对
  2207. cJSON_AddNumberToObject(root, "code", 200);
  2208. cJSON* data_field = cJSON_CreateObject();
  2209. sprintf(temp,"%d",_over_back_system_info->system_total.channel_total);
  2210. cJSON_AddStringToObject(data_field,"channelTotal",temp);
  2211. sprintf(temp,"%d",_over_back_system_info->system_total.warn_total);
  2212. cJSON_AddStringToObject(data_field,"gjztTotal",temp);
  2213. sprintf(temp,"%d",_over_back_system_info->system_total.sensor_total);
  2214. cJSON_AddStringToObject(data_field,"sensorTotal",temp);
  2215. sprintf(temp,"%d",_over_back_system_info->system_total.log_total);
  2216. cJSON_AddStringToObject(data_field,"yxrzTotal",temp);
  2217. //添加汇总
  2218. cJSON_AddItemToObject(root, "data", data_field);
  2219. //添加结果
  2220. cJSON_AddStringToObject(root, "msg", "操作成功");
  2221. //转换
  2222. str = cJSON_Print(root);
  2223. //释放资源
  2224. cJSON_Delete(root);
  2225. return str;
  2226. }
  2227. /// @brief 返回功率趋势统计统计信息
  2228. /// @param _over_back_sts_info
  2229. /// @return
  2230. char* over_power_trend_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info)
  2231. {
  2232. char* str = NULL;
  2233. char temp[32] = {0};
  2234. char buffer[2500] = {0};
  2235. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  2236. // 创建 JSON 对象
  2237. cJSON* date_trend_info = cJSON_CreateObject();
  2238. // 添加基本键值对
  2239. cJSON_AddNumberToObject(date_trend_info, "code", 200);
  2240. //添加一个嵌套的Json data表
  2241. cJSON* cjson_data = cJSON_CreateObject();
  2242. //创建数据表
  2243. cJSON* cjson_typedata = cJSON_CreateArray();
  2244. cJSON* cjson_data_1 = cJSON_CreateObject();
  2245. cJSON* cjson_data_2 = cJSON_CreateObject();
  2246. cJSON* cjson_data_3 = cJSON_CreateObject();
  2247. cJSON* date_time_xAxis_array = cJSON_CreateArray();
  2248. cJSON* date_meritorious_ydata_array = NULL ;
  2249. cJSON* date_reactive_ydata_array = NULL ;
  2250. cJSON* date_apparent_ydata_array = NULL ;
  2251. cJSON_AddStringToObject(cjson_data_1, "id", "1");
  2252. cJSON_AddStringToObject(cjson_data_2, "id", "2");
  2253. cJSON_AddStringToObject(cjson_data_3, "id", "3");
  2254. //添加有功、无功以及视在功率统计信息
  2255. date_meritorious_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_Power_Trend_Info.ydata[POWER_MERITORIOUS_TYPE],TOTAL_COUNT);
  2256. cJSON_AddItemToObject(cjson_data_1,"ydata",date_meritorious_ydata_array);
  2257. cJSON_AddItemToArray(cjson_typedata,cjson_data_1);
  2258. date_reactive_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_Power_Trend_Info.ydata[POWER_REACTIVE_TYPE],TOTAL_COUNT);
  2259. cJSON_AddItemToObject(cjson_data_2,"ydata",date_reactive_ydata_array);
  2260. cJSON_AddItemToArray(cjson_typedata,cjson_data_2);
  2261. date_apparent_ydata_array = cJSON_CreateFloatArray(_over_all_pwr_back_info->_Power_Trend_Info.ydata[POWER_APPARENT_TYPE],TOTAL_COUNT);
  2262. cJSON_AddItemToObject(cjson_data_3,"ydata",date_apparent_ydata_array);
  2263. cJSON_AddItemToArray(cjson_typedata,cjson_data_3);
  2264. for(int i=0;i< TOTAL_COUNT;i++)
  2265. {
  2266. cJSON_AddStringToObject(date_time_xAxis_array,"",_over_all_pwr_back_info->_Power_Trend_Info.xAxis[i]);
  2267. }
  2268. //添加表数据
  2269. cJSON_AddItemToObject(cjson_typedata,"xAxis",date_time_xAxis_array);
  2270. cJSON_AddItemToObject(cjson_data,"typeData",cjson_typedata);
  2271. //添加汇总
  2272. cJSON_AddItemToObject(date_trend_info, "data", cjson_data);
  2273. //添加结果
  2274. cJSON_AddStringToObject(date_trend_info, "msg", "操作成功");
  2275. //转换
  2276. str = cJSON_Print(date_trend_info);
  2277. //log_d(str);
  2278. //释放资源
  2279. cJSON_Delete(date_trend_info);
  2280. return str;
  2281. }
  2282. /// @brief 返回监控总信息
  2283. /// @param _over_back_sts_info
  2284. /// @return
  2285. char* over_chn_pwr_monitor_to_json(_OverChnPwrAckInfo* _over_chn_pwr_back_info)
  2286. {
  2287. char* str = NULL;
  2288. char temp[32] = {0};
  2289. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  2290. // 创建 JSON 对象
  2291. cJSON* root = cJSON_CreateObject();
  2292. // 添加基本键值对
  2293. cJSON_AddNumberToObject(root, "code", 200);
  2294. //创建数据
  2295. cJSON* data_root_array = cJSON_CreateArray();
  2296. //添加记录
  2297. list_for_each_entry(_chnPwrTemp, &_over_chn_pwr_back_info->list, list)
  2298. {
  2299. //添加第一条记录
  2300. cJSON* data_filed = cJSON_CreateObject();
  2301. cJSON_AddStringToObject(data_filed,"productName",_chnPwrTemp->product_name);
  2302. cJSON_AddStringToObject(data_filed,"productNumber",_chnPwrTemp->product_number);
  2303. sprintf(temp,"%d",_chnPwrTemp->product_id);
  2304. cJSON_AddStringToObject(data_filed,"productId",temp);
  2305. cJSON_AddStringToObject(data_filed,"productChName",_chnPwrTemp->productChName);
  2306. sprintf(temp,"%d",_chnPwrTemp->productChId);
  2307. cJSON_AddStringToObject(data_filed,"productChId",temp);
  2308. sprintf(temp,"%0.3f",_chnPwrTemp->voltage);
  2309. cJSON_AddStringToObject(data_filed,"productChVoltage",temp);
  2310. sprintf(temp,"%0.3f",_chnPwrTemp->current);
  2311. cJSON_AddStringToObject(data_filed,"productChCurrent",temp);
  2312. sprintf(temp,"%0.3f",_chnPwrTemp->power);
  2313. cJSON_AddStringToObject(data_filed,"productChPower",temp);
  2314. sprintf(temp,"%0.3f",_chnPwrTemp->freq);
  2315. cJSON_AddStringToObject(data_filed,"productChPowerFreq",temp);
  2316. sprintf(temp,"%0.3f",_chnPwrTemp->consumption);
  2317. cJSON_AddStringToObject(data_filed,"productChConsumption",temp);
  2318. sprintf(temp,"%0.3f",_chnPwrTemp->factor);
  2319. cJSON_AddStringToObject(data_filed,"productChPowerFactor",temp);
  2320. sprintf(temp,"%d",_chnPwrTemp->product_ch_start_delay/1000);
  2321. cJSON_AddStringToObject(data_filed,"firingInterval",temp);
  2322. sprintf(temp,"%d",_chnPwrTemp->product_ch_stop_delay/1000);
  2323. cJSON_AddStringToObject(data_filed,"closeInterval",temp);
  2324. if (_chnPwrTemp->product_type==TREE_AC_TYPE||__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B)
  2325. {
  2326. if (_chnPwrTemp->product_phType>=0&&_chnPwrTemp->product_phType<3)
  2327. {
  2328. cJSON_AddStringToObject(data_filed, "productPhOrder", g_product_t_ac_type_str[_chnPwrTemp->product_phType]);
  2329. sprintf(temp, "%0.3f", _chnPwrTemp->ph_voltage);
  2330. cJSON_AddStringToObject(data_filed, "productPhOrderDy", temp);
  2331. sprintf(temp, "%0.3f", _chnPwrTemp->ph_current);
  2332. cJSON_AddStringToObject(data_filed, "productPhOrderDl", temp);
  2333. sprintf(temp, "%0.3f", _chnPwrTemp->ph_power);
  2334. cJSON_AddStringToObject(data_filed, "productPhOrderGl", temp);
  2335. sprintf(temp, "%0.3f", _chnPwrTemp->ph_consumption);
  2336. cJSON_AddStringToObject(data_filed, "productPhOrderHdl", temp);
  2337. sprintf(temp, "%d", _chnPwrTemp->ph_outputType);
  2338. cJSON_AddStringToObject(data_filed, "outputType", temp);
  2339. sprintf(temp, "%d", _chnPwrTemp->ph_outputStatus);
  2340. cJSON_AddStringToObject(data_filed, "outputStatus", temp);
  2341. }
  2342. }
  2343. //
  2344. // cJSON_AddNumberToObject(data_filed,"productChVoltage",_over_chn_pwr_back_info->voltage);
  2345. // cJSON_AddNumberToObject(data_filed,"productChCurrent",_over_chn_pwr_back_info->current);
  2346. // cJSON_AddNumberToObject(data_filed,"productChPower",_over_chn_pwr_back_info->power);
  2347. // cJSON_AddNumberToObject(data_filed,"productChPowerFreq",_over_chn_pwr_back_info->freq);
  2348. // cJSON_AddNumberToObject(data_filed,"productChConsumption",_over_chn_pwr_back_info->consumption);
  2349. // cJSON_AddNumberToObject(data_filed,"productChPowerFactor",_over_chn_pwr_back_info->factor);
  2350. sprintf(temp, "%d", _chnPwrTemp->status);
  2351. cJSON_AddStringToObject(data_filed, "productChStatus", temp);
  2352. sprintf(temp, "%d", _chnPwrTemp->NF_status);
  2353. cJSON_AddStringToObject(data_filed, "productChZeroStatus", temp);
  2354. #ifdef USE_NETSWITCH
  2355. cJSON_AddStringToObject(data_filed, "MACadress",_chnPwrTemp->mac_addr);
  2356. cJSON_AddStringToObject(data_filed, "IPadress", _chnPwrTemp->ip_addr);
  2357. #endif
  2358. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2359. }
  2360. //添加汇总
  2361. cJSON_AddItemToObject(root, "data", data_root_array);
  2362. //添加结果
  2363. cJSON_AddStringToObject(root, "msg", "操作成功");
  2364. //转换
  2365. str = cJSON_Print(root);
  2366. //释放资源
  2367. cJSON_Delete(root);
  2368. return str;
  2369. }
  2370. /// @brief 传感器总体信息请求
  2371. /// @param str
  2372. /// @param _over_all_sensor_request
  2373. /// @return
  2374. cJSON* json_to_sensor_manage(const char* str,_OverSensorRequest* _overSensorRequest)
  2375. {
  2376. cJSON* cjson = NULL;
  2377. cjson = cJSON_Parse(str);
  2378. if(cjson==NULL)
  2379. {
  2380. //log_e("Invalid JSON!");
  2381. return NULL;
  2382. }
  2383. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  2384. if(cjson_token!=NULL)
  2385. _overSensorRequest->user_token = cjson_token->valuestring;
  2386. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  2387. if(cjson_type!=NULL)
  2388. _overSensorRequest->type = cjson_type->valuestring;
  2389. cJSON* cjson_productName = cJSON_GetObjectItem(cjson,"productName");
  2390. if(cjson_productName!=NULL)
  2391. _overSensorRequest->productName = cjson_productName->valuestring;
  2392. cJSON* cjson_productChName = cJSON_GetObjectItem(cjson,"productChName");
  2393. if(cjson_productChName!=NULL)
  2394. _overSensorRequest->productChName = cjson_productChName->valuestring;
  2395. cJSON* cjson_productChId = cJSON_GetObjectItem(cjson,"productChId");
  2396. if(cjson_productChId!=NULL)
  2397. _overSensorRequest->productChId = cjson_productChId->valuestring;
  2398. cJSON* cjson_startTime = cJSON_GetObjectItem(cjson,"startTime");
  2399. if(cjson_startTime!=NULL)
  2400. _overSensorRequest->startTime = cjson_startTime->valuestring;
  2401. cJSON* cjson_endTime = cJSON_GetObjectItem(cjson,"endTime");
  2402. if(cjson_endTime!=NULL)
  2403. _overSensorRequest->endTime = cjson_endTime->valuestring;
  2404. cJSON* cjson_sensorId = cJSON_GetObjectItem(cjson,"sensorId");
  2405. if(cjson_sensorId!=NULL)
  2406. _overSensorRequest->sensorId =atoi(cjson_sensorId->valuestring);
  2407. cJSON* cjson_sensorType = cJSON_GetObjectItem(cjson,"sensorType");
  2408. if(cjson_sensorType!=NULL)
  2409. _overSensorRequest->sensorType = cjson_sensorType->valuestring;
  2410. cJSON* cjson_sensorName = cJSON_GetObjectItem(cjson,"sensorName");
  2411. if(cjson_sensorName!=NULL)
  2412. _overSensorRequest->sensorName = cjson_sensorName->valuestring;
  2413. cJSON* cjson_comSlogan = cJSON_GetObjectItem(cjson,"comSlogan");
  2414. if(cjson_comSlogan!=NULL)
  2415. _overSensorRequest->comSlogan = cjson_comSlogan->valuestring;
  2416. cJSON* cjson_cgqtd = cJSON_GetObjectItem(cjson,"cgqtd");
  2417. if(cjson_cgqtd!=NULL)
  2418. _overSensorRequest->cgqtd = cjson_cgqtd->valuestring;
  2419. cJSON* cjson_sensorAddr = cJSON_GetObjectItem(cjson,"sensorAddr");
  2420. if(cjson_sensorAddr!=NULL)
  2421. _overSensorRequest->sensorAddr = cjson_sensorAddr->valuestring;
  2422. cJSON* cjson_sensorBaud = cJSON_GetObjectItem(cjson,"sensorBaud");
  2423. if(cjson_sensorBaud!=NULL)
  2424. _overSensorRequest->sensorBaud = cjson_sensorBaud->valuestring;
  2425. cJSON* cjson_connectionStatus = cJSON_GetObjectItem(cjson,"connectionStatus");
  2426. if(cjson_connectionStatus!=NULL)
  2427. _overSensorRequest->connectionStatus = cjson_connectionStatus->valuestring;
  2428. return cjson;
  2429. }
  2430. /// @brief return breaker chn information
  2431. /// @param _over_all_pwr_back_info
  2432. /// @return
  2433. char* over_all_breaker_chn_info_to_json(_OverBreakerChnInfo* _over_all_breaker_back_info,int nWSType)
  2434. {
  2435. char* str = NULL;
  2436. struct list_head *pos;
  2437. _OverBreakerChnInfo* _temp = NULL;
  2438. char temp_buf[16] = {0};
  2439. // 创建 JSON 对象
  2440. cJSON* root = cJSON_CreateObject();
  2441. // 添加基本键值对
  2442. // 添加基本键值对
  2443. cJSON* sdata_filed = cJSON_CreateObject();
  2444. // 创建数据
  2445. cJSON *data_root_array = cJSON_CreateArray();
  2446. if (nWSType)
  2447. {
  2448. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  2449. }
  2450. else
  2451. {
  2452. cJSON_AddNumberToObject(root, "code", 200);
  2453. }
  2454. list_for_each_entry(_temp, &_over_all_breaker_back_info->list, list)
  2455. {
  2456. char temp[32] = {0};
  2457. cJSON* data_filed = cJSON_CreateObject();
  2458. cJSON_AddStringToObject(data_filed, "productName",_temp->product_name);
  2459. cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
  2460. cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_name);
  2461. cJSON_AddStringToObject(data_filed, "productChName",_temp->product_ch_name);
  2462. sprintf(temp,"%d",_temp->product_ch_id);
  2463. cJSON_AddStringToObject(data_filed,"productChId",temp);
  2464. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2465. }
  2466. if (nWSType)
  2467. {
  2468. // 添加汇总
  2469. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  2470. // 添加结果
  2471. cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
  2472. cJSON_AddItemToObject(root, "data", sdata_filed);
  2473. // 添加内容
  2474. cJSON_AddStringToObject(root, "message", "操作成功");
  2475. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  2476. cJSON_AddBoolToObject(root, "success", true);
  2477. cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");
  2478. }else
  2479. {
  2480. cJSON_AddItemToObject(root, "data", data_root_array);
  2481. // 添加内容
  2482. cJSON_AddStringToObject(root, "message", "操作成功");
  2483. }
  2484. //转换
  2485. str = cJSON_Print(root);
  2486. //释放资源
  2487. cJSON_Delete(root);
  2488. return str;
  2489. }
  2490. /// @brief return breaker switch information
  2491. /// @param _over_all_pwr_back_info
  2492. /// @return
  2493. char* over_all_breaker_switch_info_to_json(_OverBreakerSwitchInfo* _over_all_breaker_switch_info,int nWSType)
  2494. {
  2495. char* str = NULL;
  2496. struct list_head *pos;
  2497. _OverBreakerSwitchInfo* _temp = NULL;
  2498. char temp_buf[16] = {0};
  2499. // 创建 JSON 对象
  2500. cJSON* root = cJSON_CreateObject();
  2501. // 添加基本键值对
  2502. // 添加基本键值对
  2503. cJSON* sdata_filed = cJSON_CreateObject();
  2504. // 创建数据
  2505. cJSON *data_root_array = cJSON_CreateArray();
  2506. if (nWSType)
  2507. {
  2508. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  2509. }
  2510. else
  2511. {
  2512. cJSON_AddNumberToObject(root, "code", 200);
  2513. }
  2514. list_for_each_entry(_temp, &_over_all_breaker_switch_info->list, list)
  2515. {
  2516. char temp[32] = {0};
  2517. cJSON* data_filed = cJSON_CreateObject();
  2518. cJSON_AddStringToObject(data_filed, "productName",_temp->productName);
  2519. cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
  2520. cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_number);
  2521. cJSON_AddStringToObject(data_filed, "productChNames",_temp->product_ch_name);
  2522. cJSON_AddStringToObject(data_filed,"productChIds",_temp->productChids);
  2523. cJSON_AddNumberToObject(data_filed,"switchId",_temp->switch_id);
  2524. cJSON_AddNumberToObject(data_filed, "switchStatus",_temp->status);
  2525. cJSON_AddStringToObject(data_filed, "switchName",_temp->switch_name);
  2526. cJSON_AddStringToObject(data_filed,"cjfs",_temp->cjfs);
  2527. cJSON_AddStringToObject(data_filed,"comkh",_temp->comkh);
  2528. cJSON_AddStringToObject(data_filed,"cjdz",_temp->cjdz);
  2529. cJSON_AddStringToObject(data_filed,"jdh",_temp->jdh);
  2530. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2531. }
  2532. if(list_empty(&_over_all_breaker_switch_info->list))
  2533. {
  2534. cJSON* data_filed = cJSON_CreateObject();
  2535. // cJSON_AddStringToObject(data_filed, "productName",_temp->productName);
  2536. // cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
  2537. // cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_number);
  2538. // cJSON_AddStringToObject(data_filed, "productChNames",_temp->product_ch_name);
  2539. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2540. }
  2541. if (nWSType)
  2542. {
  2543. // 添加汇总
  2544. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  2545. // 添加结果
  2546. cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
  2547. cJSON_AddItemToObject(root, "data", sdata_filed);
  2548. // 添加内容
  2549. cJSON_AddStringToObject(root, "message", "提示信息");
  2550. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  2551. cJSON_AddBoolToObject(root, "success", true);
  2552. cJSON_AddStringToObject(root, "type", "switchEquipmentMintenance");
  2553. }else
  2554. {
  2555. cJSON_AddItemToObject(root, "data", data_root_array);
  2556. // 添加内容
  2557. cJSON_AddStringToObject(root, "message", "操作成功");
  2558. }
  2559. //转换
  2560. str = cJSON_Print(root);
  2561. //释放资源
  2562. cJSON_Delete(root);
  2563. return str;
  2564. }
  2565. /// @brief 返回传感器信息
  2566. /// @param _over_all_pwr_back_info
  2567. /// @return
  2568. char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_info,int nWSType)
  2569. {
  2570. char* str = NULL;
  2571. struct list_head *pos;
  2572. _OverSensorBackInfo* _temp;
  2573. char temp_buf[16] = {0};
  2574. // 创建 JSON 对象
  2575. cJSON* root = cJSON_CreateObject();
  2576. // 添加基本键值对
  2577. // 添加基本键值对
  2578. cJSON* sdata_filed = cJSON_CreateObject();
  2579. // 创建数据
  2580. cJSON *data_root_array = cJSON_CreateArray();
  2581. if (nWSType)
  2582. {
  2583. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  2584. }
  2585. else
  2586. {
  2587. cJSON_AddNumberToObject(root, "code", 200);
  2588. }
  2589. //循环添加数据
  2590. list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
  2591. {
  2592. //log_d("sensor_name:%s", _temp->sensorName);
  2593. char temp[32] = {0};
  2594. cJSON* data_filed = cJSON_CreateObject();
  2595. sprintf(temp,"%d",_temp->accessControlStatus);
  2596. cJSON_AddStringToObject(data_filed, "accessControlStatus",temp);
  2597. cJSON_AddNumberToObject(data_filed,"sensorAddr",_temp->sensorAddr);
  2598. cJSON_AddStringToObject(data_filed,"cgqtd",_temp->sensorvaluech);
  2599. cJSON_AddNumberToObject(data_filed,"airPressureValue",_temp->airPressureValue);
  2600. cJSON_AddStringToObject(data_filed,"productName",__globalDeviceManage._globalDevInfo.product.name);
  2601. cJSON_AddNumberToObject(data_filed,"productId",__globalDeviceManage._globalDevInfo.product.id);
  2602. sprintf(temp,"%0.2f",_temp->airflowValue);
  2603. cJSON_AddStringToObject(data_filed,"airflowValue",temp);
  2604. cJSON_AddNumberToObject(data_filed,"alarmStatus",_temp->alarmStatus);
  2605. cJSON_AddNumberToObject(data_filed,"sensorBaud",_temp->sensorBaud);
  2606. cJSON_AddStringToObject(data_filed,"comSlogan",_temp->comSlogan);
  2607. if (_temp->connectionStatus >= 0)
  2608. {
  2609. sprintf(temp, "%d", _temp->connectionStatus);
  2610. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  2611. }
  2612. else
  2613. {
  2614. cJSON_AddStringToObject(data_filed, "connectionStatus", "");
  2615. }
  2616. sprintf(temp,"%0.2f",_temp->gasConcentration);
  2617. cJSON_AddStringToObject(data_filed,"gasConcentration",temp);
  2618. sprintf(temp,"%0.2f",_temp->humidityValue);
  2619. cJSON_AddStringToObject(data_filed,"humidityValue",temp);
  2620. cJSON_AddStringToObject(data_filed,"sensorName",_temp->sensorName);
  2621. sprintf(temp, "%d", _temp->sensorId);
  2622. cJSON_AddStringToObject(data_filed,"sensorId",temp);
  2623. sprintf(temp_buf,"%d",_temp->sensorType);
  2624. cJSON_AddStringToObject(data_filed,"sensorType",temp_buf);
  2625. //cJSON_AddNumberToObject(data_filed,"sensorType",_temp->sensorType);
  2626. cJSON_AddNumberToObject(data_filed,"jdh",_temp->nodeNumber);
  2627. sprintf(temp,"%0.2f",_temp->temperatureValue);
  2628. cJSON_AddStringToObject(data_filed,"temperatureValue",temp);
  2629. sprintf(temp,"%0.2f",_temp->temperatureValue2);
  2630. cJSON_AddStringToObject(data_filed,"temperatureValue2",temp);
  2631. //add leak sensor
  2632. //sprintf(temp,"%d",_temp->leakStatus);
  2633. //cJSON_AddStringToObject(data_filed,"leakStatus",temp);
  2634. cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
  2635. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2636. }
  2637. if (nWSType)
  2638. {
  2639. // 添加汇总
  2640. cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
  2641. // 添加结果
  2642. cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
  2643. cJSON_AddItemToObject(root, "data", sdata_filed);
  2644. // 添加内容
  2645. cJSON_AddStringToObject(root, "message", "操作成功");
  2646. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  2647. cJSON_AddBoolToObject(root, "success", true);
  2648. cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");
  2649. }else
  2650. {
  2651. cJSON_AddItemToObject(root, "data", data_root_array);
  2652. // 添加内容
  2653. cJSON_AddStringToObject(root, "message", "操作成功");
  2654. }
  2655. //转换
  2656. str = cJSON_Print(root);
  2657. //释放资源
  2658. cJSON_Delete(root);
  2659. return str;
  2660. }
  2661. char *breaker_status_ack_to_json(GlobalDeviceManager *gm,int slave)
  2662. {
  2663. char *strRet = NULL;
  2664. GlobalBreakerManager *_globalbreakerManger = &gm->g_new_global_breaker;
  2665. GlobalBreakerManager* temp = NULL;
  2666. _OverBreakerSwitchInfo _over_breaker_switch_info;
  2667. INIT_LIST_HEAD(&_over_breaker_switch_info.list);
  2668. lock_s_hold(LOCK_ID_BREAKER);
  2669. list_for_each_entry(temp, &_globalbreakerManger->list, list)
  2670. {
  2671. char buff[120] = {0};
  2672. // printf("get listSwitchtatusQuery infomation!!!\n");
  2673. _OverBreakerSwitchInfo *info = (_OverBreakerSwitchInfo *)
  2674. malloc(sizeof(_OverBreakerSwitchInfo));
  2675. memset(info,0,sizeof(_OverBreakerSwitchInfo));
  2676. info->product_id = temp->product_id;
  2677. sprintf(buff,"Breaker_%d",temp->breaker_id);
  2678. strcpy(info->product_ch_name,buff);
  2679. if(slave)
  2680. {
  2681. sprintf(buff,"%s %d",__globalDeviceManage._globalDevInfo.product.name, slave);
  2682. strcpy(info->productName,buff);
  2683. }else
  2684. strcpy(info->productName,__globalDeviceManage._globalDevInfo.product.name);
  2685. strcpy(info->product_number,__globalDeviceManage._globalDevInfo.product.number);
  2686. strcpy(info->productChids,temp->breaker_chns_name);
  2687. info->switch_id = temp->breaker_id;
  2688. info->status = temp->breaker_status;
  2689. strcpy(info->cjfs,temp->breaker_gather_type);
  2690. strcpy(info->switch_name,temp->breaker_switch_name);
  2691. strcpy(info->comkh,temp->breaker_com);
  2692. sprintf(buff,"%d",temp->breaker_gather_addr);
  2693. strcpy(info->cjdz,buff);
  2694. sprintf(buff,"%d",temp->breaker_chn);
  2695. strcpy(info->jdh,buff);
  2696. //printf("push %s %d %d %s %s %s %s\n",info->productChids,info->switch_id,info->status,info->cjfs,info->comkh,info->cjdz,info->jdh);
  2697. list_add_tail(&info->list,&_over_breaker_switch_info.list);
  2698. }
  2699. lock_s_release(LOCK_ID_BREAKER);
  2700. strRet = over_all_breaker_switch_info_to_json(&_over_breaker_switch_info,1);
  2701. //释放资源
  2702. _OverBreakerSwitchInfo* node;
  2703. _OverBreakerSwitchInfo* next;
  2704. list_for_each_entry_safe(node, next, &_over_breaker_switch_info.list, list)
  2705. {
  2706. list_del(&node->list);
  2707. free(node);
  2708. }
  2709. return strRet;
  2710. }
  2711. /**
  2712. * @brief 将传感器状态应答转换为 JSON 字符串
  2713. *
  2714. * 将给定的传感器状态应答结构体转换为 JSON 格式的字符串。
  2715. *
  2716. * @param _over_all_sensor_back_info 传感器状态应答结构体指针
  2717. *
  2718. * @return 转换后的 JSON 字符串,若转换失败则返回 nullptr
  2719. */
  2720. char *ws_sensor_status_ack_to_json(GlobalSensorManger *_globalSensorManger)
  2721. {
  2722. char *strRet = NULL;
  2723. _OverSensorBackInfo _over_all_sensor_back_info;
  2724. INIT_LIST_HEAD(&_over_all_sensor_back_info.list);
  2725. // 获取传感器当前的最新值
  2726. GlobalSensorInfo _globalSensorInfo;
  2727. GlobalSensorManger *_globalSensorManagerTemp = NULL;
  2728. if(!list_empty(&_globalSensorManger->list)) {
  2729. list_for_each_entry(_globalSensorManagerTemp, &_globalSensorManger->list, list)
  2730. {
  2731. _OverSensorBackInfo *_overSensorBackInfoTemp = (_OverSensorBackInfo *)malloc(sizeof(_OverSensorBackInfo));
  2732. if (_overSensorBackInfoTemp == NULL)
  2733. log_e("_OverSensorBackInfo malloc error.");
  2734. memset(_overSensorBackInfoTemp, 0, sizeof(_OverSensorBackInfo));
  2735. // 基本信息
  2736. _overSensorBackInfoTemp->sensorId = _globalSensorManagerTemp->sensor_id;
  2737. // strcpy(_overSensorBackInfoTemp->sensorName,language_sensor_name[__globalDeviceManage._globalDevInfo.product.language][(int)_globalSensorManagerTemp->sensor_type]);
  2738. strcpy(_overSensorBackInfoTemp->sensorName,_globalSensorManagerTemp->sensor_name);
  2739. _overSensorBackInfoTemp->sensorType = _globalSensorManagerTemp->sensor_type;
  2740. memcpy(&_overSensorBackInfoTemp->comSlogan, &_globalSensorManagerTemp->sensor_port_name, sizeof(_overSensorBackInfoTemp->comSlogan));
  2741. // strcpy(_overSensorBackInfoTemp->comSlogan,_globalSensorManagerTemp->sensor_port_name);
  2742. // 485独有
  2743. _overSensorBackInfoTemp->connectionStatus = _globalSensorManagerTemp->sensor_status;
  2744. _overSensorBackInfoTemp->nodeNumber = __globalDeviceManage._globalSensorManger.sensor_node_number;
  2745. if (_globalSensorManagerTemp->sensor_interface_type == 1)
  2746. {
  2747. _overSensorBackInfoTemp->sensorAddr = _globalSensorManagerTemp->sensor_addr;
  2748. _overSensorBackInfoTemp->sensorBaud = _globalSensorManagerTemp->sensor_baud;
  2749. strcpy(_overSensorBackInfoTemp->sensorvaluech, "RS485");
  2750. }
  2751. else
  2752. {
  2753. //_overSensorBackInfoTemp->connectionStatus = -1;
  2754. strcpy(_overSensorBackInfoTemp->sensorvaluech, _overSensorBackInfoTemp->comSlogan);
  2755. _overSensorBackInfoTemp->nodeNumber = _globalSensorManagerTemp->sensor_addr;
  2756. }
  2757. // 拿数据
  2758. memset(&_globalSensorInfo, 0, sizeof(_globalSensorInfo));
  2759. switch (_globalSensorManagerTemp->sensor_type)
  2760. {
  2761. case SENSOR_TYPE_TEMP_HUMI: // 温湿度传感器 2个值
  2762. {
  2763. _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
  2764. _overSensorBackInfoTemp->humidityValue = _globalSensorManagerTemp->Cur_sensor_info.val2;
  2765. }
  2766. break;
  2767. case SENSOR_TYPE_SMOKE: // 烟雾传感器 1个值
  2768. {
  2769. _overSensorBackInfoTemp->alarmStatus = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
  2770. }
  2771. break;
  2772. case SENSOR_TYPE_WATER: // 水浸传感器 1个值 c
  2773. {
  2774. _overSensorBackInfoTemp->waterImmersionState = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
  2775. }
  2776. break;
  2777. case SENSOR_TYPE_ACCESS: // 门禁传感器
  2778. {
  2779. _overSensorBackInfoTemp->accessControlStatus = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
  2780. }
  2781. break;
  2782. case SENSOR_TYPE_GAS: // 气体传感器 1个值
  2783. {
  2784. _overSensorBackInfoTemp->gasConcentration = _globalSensorManagerTemp->Cur_sensor_info.val1; // 气体浓度
  2785. }
  2786. break;
  2787. case SENSOR_TYPE_AIR_PRESS: // 气压气流传感器 2个值
  2788. {
  2789. _overSensorBackInfoTemp->airPressureValue = _globalSensorManagerTemp->Cur_sensor_info.val1; // 气压
  2790. _overSensorBackInfoTemp->airflowValue = _globalSensorManagerTemp->Cur_sensor_info.val2; // 气流
  2791. };
  2792. break;
  2793. case SENSOR_TYPE_AIR_COND: // 空调遥控器 没有值
  2794. {
  2795. }
  2796. break;
  2797. case SENSOR_TYPE_TEMP_DOUBLE:
  2798. {
  2799. _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
  2800. _overSensorBackInfoTemp->temperatureValue2 = _globalSensorManagerTemp->Cur_sensor_info.val2;
  2801. }
  2802. case SENSOR_TYPE_TEMP:
  2803. {
  2804. _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
  2805. }
  2806. break;
  2807. case SENSOR_TYPE_LEAK:
  2808. {
  2809. _overSensorBackInfoTemp->leakStatus = _globalSensorManagerTemp->Cur_sensor_info.val1;
  2810. }
  2811. break;
  2812. }
  2813. // 入队
  2814. list_add_tail(&_overSensorBackInfoTemp->list, &_over_all_sensor_back_info.list);
  2815. }
  2816. // 转换
  2817. strRet = over_all_sensor_info_to_json(&_over_all_sensor_back_info, 1);
  2818. // 释放资源
  2819. _OverSensorBackInfo *node;
  2820. _OverSensorBackInfo *next;
  2821. list_for_each_entry_safe(node, next, &_over_all_sensor_back_info.list, list)
  2822. {
  2823. list_del(&node->list);
  2824. free(node);
  2825. }
  2826. }
  2827. return strRet;
  2828. }
  2829. /// @brief 返回传感器历史信息
  2830. /// @param _over_all_pwr_back_info
  2831. /// @return
  2832. char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_info, int sensor_type)
  2833. {
  2834. char* str = NULL;
  2835. struct list_head *pos;
  2836. _OverSensorBackInfo* _temp;
  2837. char temp[32] = {0};
  2838. // 创建 JSON 对象
  2839. cJSON* root = cJSON_CreateObject();
  2840. if(sensor_type == SENSOR_TYPE_VALUE)
  2841. {
  2842. cJSON_AddStringToObject(root, "msg", "操作成功");
  2843. cJSON_AddNumberToObject(root, "code", 200);
  2844. cJSON* data_root_array = cJSON_CreateArray();
  2845. list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
  2846. {
  2847. cJSON* data = cJSON_CreateObject();
  2848. cJSON* date_time_xAxis_array = cJSON_CreateArray();
  2849. if(_temp->sensorType == SENSOR_TYPE_TEMP_HUMI||
  2850. _temp->sensorType == SENSOR_TYPE_TEMP_DOUBLE||
  2851. _temp->sensorType == SENSOR_TYPE_TEMP)
  2852. {
  2853. for(int i=0;i< TOTAL_COUNT;i++)
  2854. {
  2855. cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->temp_humi_sensor.xAxis[i]);
  2856. }
  2857. cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
  2858. cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
  2859. cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
  2860. cJSON* type_data_array = cJSON_CreateArray();
  2861. cJSON* type_data_temp = cJSON_CreateObject();
  2862. cJSON_AddStringToObject(type_data_temp,"typeName",language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
  2863. cJSON* ydate_temp_array = cJSON_CreateFloatArray(_temp->temp_humi_sensor.ydata[0],TOTAL_COUNT);
  2864. cJSON_AddItemToObject(type_data_temp,"ydata",ydate_temp_array);
  2865. cJSON_AddStringToObject(type_data_temp,"type","0");
  2866. cJSON_AddItemToArray(type_data_array,type_data_temp);
  2867. cJSON* type_data_humi = cJSON_CreateObject();
  2868. if (_temp->sensorType == SENSOR_TYPE_TEMP_DOUBLE)
  2869. {
  2870. cJSON_AddStringToObject(type_data_humi, "typeName", language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
  2871. }
  2872. else
  2873. {
  2874. cJSON_AddStringToObject(type_data_humi, "typeName", language_humidity[__globalDeviceManage._globalDevInfo.product.language]);
  2875. }
  2876. cJSON* ydate_humi_array = cJSON_CreateFloatArray(_temp->temp_humi_sensor.ydata[1],TOTAL_COUNT);
  2877. cJSON_AddItemToObject(type_data_humi,"ydata",ydate_humi_array);
  2878. cJSON_AddStringToObject(type_data_humi,"type","1");
  2879. cJSON_AddItemToArray(type_data_array,type_data_humi);
  2880. //cJSON_AddArrayToObject(data,type_data_array);
  2881. cJSON_AddItemToObject(data,"typeData",type_data_array);
  2882. }
  2883. else if(_temp->sensorType == SENSOR_TYPE_GAS)
  2884. {
  2885. for(int i=0;i< TOTAL_COUNT;i++)
  2886. {
  2887. cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->gas_sensor.xAxis[i]);
  2888. }
  2889. cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
  2890. cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
  2891. cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
  2892. cJSON* type_data_array = cJSON_CreateArray();
  2893. cJSON* type_data_gas = cJSON_CreateObject();
  2894. cJSON_AddStringToObject(type_data_gas,"typeName",language_atmosphere_gas[__globalDeviceManage._globalDevInfo.product.language]);
  2895. cJSON* ydate_gas_array = cJSON_CreateFloatArray(_temp->gas_sensor.ydata,TOTAL_COUNT);
  2896. cJSON_AddItemToObject(type_data_gas,"ydata",ydate_gas_array);
  2897. cJSON_AddStringToObject(type_data_gas,"type","0");
  2898. cJSON_AddItemToArray(type_data_array,type_data_gas);
  2899. //cJSON_AddArrayToObject(data,type_data_array);
  2900. cJSON_AddItemToObject(data,"typeData",type_data_array);
  2901. }
  2902. else if(_temp->sensorType == SENSOR_TYPE_AIR_PRESS)
  2903. {
  2904. for(int i=0;i< TOTAL_COUNT;i++)
  2905. {
  2906. cJSON_AddStringToObject(date_time_xAxis_array,"",_temp->air_press_sensor.xAxis[i]);
  2907. }
  2908. cJSON_AddItemToObject(data,"xAxis",date_time_xAxis_array);
  2909. cJSON_AddStringToObject(data,"sensorName",_temp->sensorName);
  2910. cJSON_AddNumberToObject(data,"sensorType",_temp->sensorType);
  2911. cJSON* type_data_array = cJSON_CreateArray();
  2912. cJSON* type_data_air = cJSON_CreateObject();
  2913. cJSON_AddStringToObject(type_data_air,"typeName",language_atmosphere_airflow[__globalDeviceManage._globalDevInfo.product.language]);
  2914. cJSON* ydate_air_array = cJSON_CreateFloatArray(_temp->air_press_sensor.ydata[0],TOTAL_COUNT);
  2915. cJSON_AddItemToObject(type_data_air,"ydata",ydate_air_array);
  2916. cJSON_AddStringToObject(type_data_air,"type","0");
  2917. cJSON_AddItemToArray(type_data_array,type_data_air);
  2918. cJSON* type_data_press = cJSON_CreateObject();
  2919. cJSON_AddStringToObject(type_data_press,"typeName",language_atmosphere_pressure[__globalDeviceManage._globalDevInfo.product.language]);
  2920. cJSON* ydate_press_array = cJSON_CreateFloatArray(_temp->air_press_sensor.ydata[1],TOTAL_COUNT);
  2921. cJSON_AddItemToObject(type_data_press,"ydata",ydate_press_array);
  2922. cJSON_AddStringToObject(type_data_press,"type","1");
  2923. cJSON_AddItemToArray(type_data_array,type_data_press);
  2924. //cJSON_AddArrayToObject(data,type_data_array);
  2925. cJSON_AddItemToObject(data,"typeData",type_data_array);
  2926. }
  2927. sprintf(temp, "%d", _temp->sensorId);
  2928. cJSON_AddStringToObject(data,"sensorId",(const char*)temp);
  2929. //cJSON_AddArrayToObject(data_root_array,data);
  2930. cJSON_AddItemToArray(data_root_array,data);
  2931. }
  2932. //添加汇总
  2933. cJSON_AddItemToObject(root, "data", data_root_array);
  2934. }
  2935. else if(sensor_type == SENSOR_TYPE_LIST)
  2936. {
  2937. // 添加基本键值对
  2938. cJSON_AddNumberToObject(root, "code", 200);
  2939. cJSON_AddNumberToObject(root, "total", 3);
  2940. //创建数据
  2941. cJSON* data_root_array = cJSON_CreateArray();
  2942. //循环添加数据
  2943. list_for_each_entry(_temp, &_over_all_sensor_back_info->list, list)
  2944. {
  2945. log_d("sensor_name:%s", _temp->sensorName);
  2946. cJSON* data_filed = cJSON_CreateObject();
  2947. cJSON_AddNumberToObject(data_filed, "accessControlStatus",_temp->accessControlStatus);
  2948. cJSON_AddNumberToObject(data_filed,"sensorAddr",_temp->sensorAddr);
  2949. cJSON_AddStringToObject(data_filed,"productName",__globalDeviceManage._globalDevInfo.product.name);
  2950. cJSON_AddStringToObject(data_filed,"productNumber",__globalDeviceManage._globalDevInfo.product.number);
  2951. cJSON_AddNumberToObject(data_filed, "alarmStatus",_temp->alarmStatus);
  2952. cJSON_AddNumberToObject(data_filed,"sensorBaud",_temp->sensorBaud);
  2953. cJSON_AddStringToObject(data_filed,"comSlogan",_temp->comSlogan);
  2954. cJSON_AddNumberToObject(data_filed, "connectionStatus",_temp->connectionStatus);
  2955. cJSON_AddStringToObject(data_filed,"sensorName",_temp->sensorName);
  2956. sprintf(temp, "%d", _temp->sensorId);
  2957. cJSON_AddStringToObject(data_filed,"sensorId",temp);
  2958. cJSON_AddNumberToObject(data_filed,"sensorType",_temp->sensorType);
  2959. cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
  2960. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  2961. }
  2962. //添加汇总
  2963. cJSON_AddItemToObject(root, "data", data_root_array);
  2964. //添加结果
  2965. cJSON_AddStringToObject(root, "msg", "操作成功");
  2966. }
  2967. //转换
  2968. str = cJSON_Print(root);
  2969. //释放资源
  2970. cJSON_Delete(root);
  2971. return str;
  2972. }
  2973. /// @brief 返回告警日志
  2974. /// @param _alarm_ack_info
  2975. /// @return
  2976. char* alarm_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAllNumber)
  2977. {
  2978. char* str = NULL;
  2979. char temp[8] = {0};
  2980. struct list_head *pos;
  2981. _AlarmAckInfo* _temp;
  2982. // 创建 JSON 对象
  2983. cJSON* root = cJSON_CreateObject();
  2984. // 添加基本键值对
  2985. cJSON_AddNumberToObject(root, "code", 200);
  2986. //创建数据
  2987. cJSON* data_root_array = cJSON_CreateArray();
  2988. //循环添加数据
  2989. list_for_each_entry(_temp, &_alarm_ack_info->list, list)
  2990. {
  2991. cJSON* data_filed = cJSON_CreateObject();
  2992. cJSON_AddStringToObject(data_filed,"alarmNumber",_temp->alarmNumber);
  2993. cJSON_AddStringToObject(data_filed,"alarmDate",_temp->alarmDate);
  2994. if (_temp->alarmType==0)
  2995. {
  2996. cJSON_AddStringToObject(data_filed,"alarmType",language_alarm_Type_Power[__globalDeviceManage._globalDevInfo.product.language]);
  2997. }
  2998. else if (_temp->alarmType==1)
  2999. {
  3000. cJSON_AddStringToObject(data_filed,"alarmType",language_alarm_Type_Sensor[__globalDeviceManage._globalDevInfo.product.language]);
  3001. }
  3002. else if (_temp->alarmType==2)
  3003. {
  3004. cJSON_AddStringToObject(data_filed,"alarmType",language_alarm_Type_Network[__globalDeviceManage._globalDevInfo.product.language]);
  3005. }
  3006. else cJSON_AddStringToObject(data_filed,"alarmType","Unknown");
  3007. cJSON_AddStringToObject(data_filed,"deviceNumber",_temp->deviceNumber);
  3008. cJSON_AddStringToObject(data_filed,"deviceName",_temp->deviceName);
  3009. replace_sequences(_temp->alarmContent, __globalDeviceManage.alarmTab);
  3010. cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);
  3011. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3012. }
  3013. //数据总数
  3014. cJSON_AddNumberToObject(root, "total", nAllNumber);
  3015. //添加汇总
  3016. cJSON_AddItemToObject(root, "data", data_root_array);
  3017. //添加结果
  3018. cJSON_AddStringToObject(root, "msg", "操作成功");
  3019. //转换
  3020. str = cJSON_Print(root);
  3021. //释放资源
  3022. cJSON_Delete(root);
  3023. return str;
  3024. }
  3025. /// @brief 返回告警日志
  3026. /// @param _alarm_ack_info
  3027. /// @return
  3028. char* alarm_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAlarmNum)
  3029. {
  3030. char* str = NULL;
  3031. char temp[8] = {0};
  3032. struct list_head *pos;
  3033. _AlarmAckInfo* _temp;
  3034. // 创建 JSON 对象
  3035. cJSON* root = cJSON_CreateObject();
  3036. // 添加基本键值对
  3037. cJSON_AddNumberToObject(root, "code", 200);
  3038. //创建数据
  3039. cJSON* data_root_array = cJSON_CreateArray();
  3040. //循环添加数据
  3041. list_for_each_entry(_temp, &_alarm_ack_info->list, list)
  3042. {
  3043. cJSON* data_filed = cJSON_CreateObject();
  3044. cJSON_AddStringToObject(data_filed,"alarmNumber",_temp->alarmNumber);
  3045. cJSON_AddStringToObject(data_filed,"alarmDate",_temp->alarmDate);
  3046. // sprintf(temp,"%d",_temp->alarmType);
  3047. // cJSON_AddStringToObject(data_filed,"alarmType",temp);
  3048. switch (_temp->alarmType)
  3049. {
  3050. case 0:cJSON_AddStringToObject(data_filed,"alarmType",language_log_Power[__globalDeviceManage._globalDevInfo.product.language]);break;
  3051. case 3:cJSON_AddStringToObject(data_filed,"alarmType",language_opera_log_operation[__globalDeviceManage._globalDevInfo.product.language]);break;
  3052. case 4:cJSON_AddStringToObject(data_filed,"type",language_run_log_running[__globalDeviceManage._globalDevInfo.product.language]);break;
  3053. }
  3054. cJSON_AddStringToObject(data_filed,"deviceNumber",_temp->deviceNumber);
  3055. cJSON_AddStringToObject(data_filed,"deviceName",_temp->deviceName);
  3056. replace_sequences(_temp->alarmContent,__globalDeviceManage.alarmTab);
  3057. switch (_temp->alarmType)
  3058. {
  3059. case 0:cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);break;
  3060. case 3:cJSON_AddStringToObject(data_filed,"operLocation",_temp->alarmContent);break;
  3061. case 4:cJSON_AddStringToObject(data_filed,"content",_temp->alarmContent);break;
  3062. }
  3063. //cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);
  3064. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3065. //total_number++;
  3066. }
  3067. //数据总数
  3068. cJSON_AddNumberToObject(root, "total", nAlarmNum);
  3069. //添加汇总
  3070. cJSON_AddItemToObject(root, "data", data_root_array);
  3071. //添加结果
  3072. cJSON_AddStringToObject(root, "msg", "操作成功");
  3073. //转换
  3074. str = cJSON_Print(root);
  3075. //释放资源
  3076. cJSON_Delete(root);
  3077. return str;
  3078. }
  3079. /// @brief 返回操作日志
  3080. /// @param _alarm_ack_info
  3081. /// @return
  3082. char* alarm_ctrl_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAlarmNum)
  3083. {
  3084. char* str = NULL;
  3085. char temp[8] = {0};
  3086. struct list_head *pos;
  3087. _AlarmAckInfo* _temp;
  3088. // 创建 JSON 对象
  3089. cJSON* root = cJSON_CreateObject();
  3090. // 添加基本键值对
  3091. cJSON_AddNumberToObject(root, "code", 200);
  3092. //创建数据
  3093. cJSON* data_root_array = cJSON_CreateArray();
  3094. //循环添加数据
  3095. list_for_each_entry(_temp, &_alarm_ack_info->list, list)
  3096. {
  3097. cJSON* data_filed = cJSON_CreateObject();
  3098. cJSON_AddStringToObject(data_filed,"title",_temp->alarmNumber);
  3099. cJSON_AddStringToObject(data_filed,"operName","");
  3100. replace_sequences(_temp->alarmContent,__globalDeviceManage.alarmTab);
  3101. cJSON_AddStringToObject(data_filed,"operLocation",_temp->alarmContent);
  3102. cJSON_AddStringToObject(data_filed,"operTime",_temp->alarmDate);
  3103. // sprintf(temp,"%d",_temp->alarmType);
  3104. // cJSON_AddStringToObject(data_filed,"alarmType",temp);
  3105. //switch (_temp->alarmType)
  3106. //{
  3107. // case 0:cJSON_AddStringToObject(data_filed,"alarmType",language_log_Power[__globalDeviceManage._globalDevInfo.product.language]);break;
  3108. // case 3:cJSON_AddStringToObject(data_filed,"alarmType",language_opera_log_operation[__globalDeviceManage._globalDevInfo.product.language]);break;
  3109. // case 4:cJSON_AddStringToObject(data_filed,"alarmType",language_run_log_running[__globalDeviceManage._globalDevInfo.product.language]);break;
  3110. //}
  3111. //cJSON_AddStringToObject(data_filed,"deviceNumber",_temp->deviceNumber);
  3112. //cJSON_AddStringToObject(data_filed,"deviceName",_temp->deviceName);
  3113. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3114. }
  3115. //数据总数
  3116. cJSON_AddNumberToObject(root, "total", nAlarmNum);
  3117. //添加汇总
  3118. cJSON_AddItemToObject(root, "data", data_root_array);
  3119. //添加结果
  3120. cJSON_AddStringToObject(root, "msg", "操作成功");
  3121. //转换
  3122. str = cJSON_Print(root);
  3123. //释放资源
  3124. cJSON_Delete(root);
  3125. return str;
  3126. }
  3127. /// @brief 返回阈值
  3128. /// @param _globalPowerManger
  3129. /// @return
  3130. char* alarm_power_threshold_to_json(GlobalPowerManger* _globalPowerManger)
  3131. {
  3132. char* str = NULL;
  3133. GlobalPowerManger* _globalPowerMangerTemp = NULL ;
  3134. // 创建 JSON 对象
  3135. cJSON* root = cJSON_CreateObject();
  3136. // 添加基本键值对
  3137. cJSON_AddNumberToObject(root, "code", 200);
  3138. //创建数据
  3139. cJSON* data_root_array = cJSON_CreateArray();
  3140. char temp[32] = {0};
  3141. char Closetemp[32] = {0};
  3142. char Alarmtemp[32] = {0};
  3143. sprintf(Closetemp, "%d", ALARM_CTRL_CLOSE_CH);
  3144. sprintf(Alarmtemp, "%d", ALARM_CTRL_ALARM_ONLY);
  3145. // language_alarm_ctrl_Alarm[__globalDeviceManage._globalDevInfo.product.language]
  3146. // language_alarm_ctrl_CloseCH[__globalDeviceManage._globalDevInfo.product.language]
  3147. list_for_each_entry(_globalPowerMangerTemp, &_globalPowerManger->list, list)
  3148. {
  3149. cJSON* data_filed = cJSON_CreateObject();
  3150. cJSON_AddStringToObject(data_filed,"productChName",_globalPowerMangerTemp->product_ch_name);
  3151. sprintf(temp,"%d",_globalPowerMangerTemp->product_ch_id);
  3152. cJSON_AddStringToObject(data_filed,"productChId",temp);
  3153. //cJSON_AddNumberToObject(data_filed,"dyType",_globalPowerMangerTemp->product_ch_id);
  3154. cJSON_AddNumberToObject(data_filed,"dyType",1);
  3155. sprintf(temp, "%d", _globalPowerMangerTemp->_PowerInfo.status);
  3156. cJSON_AddStringToObject(data_filed,"productChStatus",temp);
  3157. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_cur_upper_threshold);
  3158. cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
  3159. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_vol_upper_threshold);
  3160. cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
  3161. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_vol_lower_threshold);
  3162. cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
  3163. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_pwr_upper_threshold);
  3164. cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
  3165. sprintf(temp,"%0.2f",_globalPowerMangerTemp->global_over_manager.product_pwrcon_upper_threshold);
  3166. cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
  3167. if (_globalPowerMangerTemp->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3168. {
  3169. cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
  3170. }
  3171. else
  3172. cJSON_AddStringToObject(data_filed, "currentUpperAction", Alarmtemp);
  3173. if (_globalPowerMangerTemp->global_over_manager.product_vol_over_upper_threshold_ctrl ==ALARM_CTRL_CLOSE_CH)
  3174. {
  3175. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
  3176. }
  3177. else
  3178. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
  3179. if (_globalPowerMangerTemp->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3180. {
  3181. cJSON_AddStringToObject(data_filed, "voltageDownAction",Closetemp );
  3182. }
  3183. else
  3184. cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
  3185. if (_globalPowerMangerTemp->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3186. {
  3187. cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
  3188. }
  3189. else
  3190. cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
  3191. if (_globalPowerMangerTemp->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3192. {
  3193. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Closetemp);
  3194. }
  3195. else
  3196. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
  3197. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3198. }
  3199. cJSON* data_filed = cJSON_CreateObject();
  3200. cJSON_AddStringToObject(data_filed,"productChName",_globalPowerManger->product_ch_name);
  3201. sprintf(temp,"%d",_globalPowerMangerTemp->product_ch_id);
  3202. cJSON_AddStringToObject(data_filed,"productChId",temp);
  3203. cJSON_AddNumberToObject(data_filed,"dyType",_globalPowerManger->product_ch_id);
  3204. //sprintf(temp,"%d",_globalPowerMangerTemp->_PowerInfo.status);
  3205. cJSON_AddStringToObject(data_filed,"productChStatus","-1");//总通道状态不显示
  3206. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_cur_upper_threshold);
  3207. cJSON_AddStringToObject(data_filed,"currentUpperValue",temp);
  3208. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_vol_upper_threshold);
  3209. cJSON_AddStringToObject(data_filed,"voltageUpperValue",temp);
  3210. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_vol_lower_threshold);
  3211. cJSON_AddStringToObject(data_filed,"voltageDownValue",temp);
  3212. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_pwr_upper_threshold);
  3213. cJSON_AddStringToObject(data_filed,"powerUpperValue",temp);
  3214. sprintf(temp,"%0.2f",_globalPowerManger->global_over_manager.product_pwrcon_upper_threshold);
  3215. cJSON_AddStringToObject(data_filed,"alarmContentUpperValue",temp);
  3216. if (_globalPowerManger->global_over_manager.product_cur_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3217. {
  3218. cJSON_AddStringToObject(data_filed, "currentUpperAction",Closetemp);
  3219. }
  3220. else
  3221. cJSON_AddStringToObject(data_filed, "currentUpperAction",Alarmtemp);
  3222. if (_globalPowerManger->global_over_manager.product_vol_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3223. {
  3224. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Closetemp);
  3225. }
  3226. else
  3227. cJSON_AddStringToObject(data_filed, "voltageUpperAction", Alarmtemp);
  3228. if (_globalPowerManger->global_over_manager.product_vol_over_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3229. {
  3230. cJSON_AddStringToObject(data_filed, "voltageDownAction", Closetemp);
  3231. }
  3232. else
  3233. cJSON_AddStringToObject(data_filed, "voltageDownAction", Alarmtemp);
  3234. if (_globalPowerManger->global_over_manager.product_pwr_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3235. {
  3236. cJSON_AddStringToObject(data_filed, "powerUpperAction", Closetemp);
  3237. }
  3238. else
  3239. cJSON_AddStringToObject(data_filed, "powerUpperAction", Alarmtemp);
  3240. if (_globalPowerManger->global_over_manager.product_pwrcon_over_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3241. {
  3242. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction",Closetemp);
  3243. }
  3244. else
  3245. cJSON_AddStringToObject(data_filed, "alarmContentUpperAction", Alarmtemp);
  3246. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3247. //添加汇总
  3248. cJSON_AddItemToObject(root, "data", data_root_array);
  3249. //添加结果
  3250. cJSON_AddStringToObject(root, "msg", "操作成功");
  3251. //转换
  3252. str = cJSON_Print(root);
  3253. //释放资源
  3254. cJSON_Delete(root);
  3255. return str;
  3256. }
  3257. /// @brief 传感器阈值查询
  3258. /// @param _globalSensorManger
  3259. /// @return
  3260. char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
  3261. {
  3262. char* str = NULL;
  3263. GlobalSensorManger* _globalSensorMangerTemp = NULL ;
  3264. char temp[64] = {0};
  3265. char subTemp[1024] = {0};
  3266. // 创建 JSON 对象
  3267. cJSON* root = cJSON_CreateObject();
  3268. cJSON *data_filed = NULL;
  3269. // 添加基本键值对
  3270. cJSON_AddNumberToObject(root, "code", 200);
  3271. //创建数据
  3272. cJSON* data_root_array = cJSON_CreateArray();
  3273. char Closetemp[32] = {0};
  3274. char Alarmtemp[32] = {0};
  3275. sprintf(Closetemp, "%d", ALARM_CTRL_CLOSE_CH);
  3276. sprintf(Alarmtemp, "%d", ALARM_CTRL_ALARM_ONLY);
  3277. // language_alarm_ctrl_Alarm[__globalDeviceManage._globalDevInfo.product.language]
  3278. // language_alarm_ctrl_CloseCH[__globalDeviceManage._globalDevInfo.product.language]
  3279. int langID=__globalDeviceManage._globalDevInfo.product.language;
  3280. list_for_each_entry(_globalSensorMangerTemp, &_globalSensorManger->list, list)
  3281. {
  3282. switch (_globalSensorMangerTemp->sensor_type)
  3283. {
  3284. case SENSOR_TYPE_TEMP_HUMI:
  3285. case SENSOR_TYPE_TEMP_DOUBLE:
  3286. case SENSOR_TYPE_TEMP:
  3287. {
  3288. data_filed = cJSON_CreateObject();
  3289. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
  3290. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  3291. cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
  3292. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3293. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3294. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3295. if (SENSOR_TYPE_TEMP_DOUBLE == _globalSensorMangerTemp->sensor_type)
  3296. {
  3297. sprintf(temp, "%s%d", language_temperature[__globalDeviceManage._globalDevInfo.product.language], 1);
  3298. cJSON_AddStringToObject(data_filed, "thresholdType", temp);
  3299. }
  3300. else
  3301. {
  3302. cJSON_AddStringToObject(data_filed, "thresholdType", language_temperature[__globalDeviceManage._globalDevInfo.product.language]);
  3303. }
  3304. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold);
  3305. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3306. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold);
  3307. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3308. if (_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3309. {
  3310. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3311. }
  3312. else
  3313. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3314. if (_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3315. {
  3316. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3317. }
  3318. else
  3319. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3320. char *pCHlist;
  3321. char *pCHListSave;
  3322. char sensor_para[512];
  3323. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para) > 0)
  3324. {
  3325. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3326. cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3327. memset(subTemp, 0, sizeof(subTemp));
  3328. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3329. // 其他版本功能
  3330. while (pCHlist != NULL)
  3331. {
  3332. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3333. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3334. {
  3335. if (_globalPowerMangerTemp == NULL)
  3336. break;
  3337. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3338. {
  3339. if (strlen(subTemp) <= 0)
  3340. {
  3341. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3342. }
  3343. else
  3344. {
  3345. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3346. }
  3347. strcat(subTemp, temp);
  3348. break;
  3349. }
  3350. }
  3351. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3352. }
  3353. cJSON_AddStringToObject(data_filed, "thresholdUpperChanelName", subTemp);
  3354. }
  3355. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para) > 0)
  3356. {
  3357. cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3358. memset(subTemp, 0, sizeof(subTemp));
  3359. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3360. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3361. // 其他版本功能
  3362. while (pCHlist != NULL)
  3363. {
  3364. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3365. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3366. {
  3367. if (_globalPowerMangerTemp == NULL)
  3368. break;
  3369. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3370. {
  3371. if (strlen(subTemp) <= 0)
  3372. {
  3373. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3374. }
  3375. else
  3376. {
  3377. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3378. }
  3379. strcat(subTemp, temp);
  3380. break;
  3381. }
  3382. }
  3383. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3384. }
  3385. cJSON_AddStringToObject(data_filed, "thresholdDownChanelName", subTemp);
  3386. }
  3387. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3388. data_filed = cJSON_CreateObject();
  3389. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
  3390. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  3391. cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
  3392. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3393. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3394. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3395. if (SENSOR_TYPE_TEMP_DOUBLE == _globalSensorMangerTemp->sensor_type)
  3396. {
  3397. sprintf(temp, "%s%d", language_temperature[__globalDeviceManage._globalDevInfo.product.language], 2);
  3398. cJSON_AddStringToObject(data_filed, "thresholdType", temp);
  3399. }
  3400. else
  3401. {
  3402. cJSON_AddStringToObject(data_filed, "thresholdType", language_humidity[__globalDeviceManage._globalDevInfo.product.language]);
  3403. }
  3404. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold);
  3405. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3406. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold);
  3407. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3408. if (_globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3409. {
  3410. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3411. }
  3412. else
  3413. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3414. if (_globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3415. {
  3416. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3417. }
  3418. else
  3419. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3420. char *pCHlist1;
  3421. char *pCHListSave1;
  3422. char sensor_para1[512];
  3423. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold_ctrl_para) > 0)
  3424. {
  3425. strcpy(sensor_para1, _globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold_ctrl_para);
  3426. cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager.sensor_val2_upper_threshold_ctrl_para);
  3427. memset(subTemp, 0, sizeof(subTemp));
  3428. pCHlist1 = strtok_r(sensor_para1, ",", &pCHListSave1);
  3429. // 其他版本功能
  3430. while (pCHlist1 != NULL)
  3431. {
  3432. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3433. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3434. {
  3435. if (_globalPowerMangerTemp == NULL)
  3436. break;
  3437. if (atoi(pCHlist1) == _globalPowerMangerTemp->product_ch_id)
  3438. {
  3439. if (strlen(subTemp) <= 0)
  3440. {
  3441. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3442. }
  3443. else
  3444. {
  3445. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3446. }
  3447. strcat(subTemp, temp);
  3448. break;
  3449. }
  3450. }
  3451. pCHlist1 = strtok_r(NULL, ",", &pCHListSave1);
  3452. }
  3453. cJSON_AddStringToObject(data_filed, "thresholdUpperChanelName", subTemp);
  3454. }
  3455. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold_ctrl_para) > 0)
  3456. {
  3457. cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold_ctrl_para);
  3458. memset(subTemp, 0, sizeof(subTemp));
  3459. strcpy(sensor_para1, _globalSensorMangerTemp->over_manager.sensor_val2_lower_threshold_ctrl_para);
  3460. pCHlist1 = strtok_r(sensor_para1, ",", &pCHListSave1);
  3461. // 其他版本功能
  3462. while (pCHlist1 != NULL)
  3463. {
  3464. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3465. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3466. {
  3467. if (_globalPowerMangerTemp == NULL)
  3468. break;
  3469. if (atoi(pCHlist1) == _globalPowerMangerTemp->product_ch_id)
  3470. {
  3471. if (strlen(subTemp) <= 0)
  3472. {
  3473. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3474. }
  3475. else
  3476. {
  3477. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3478. }
  3479. strcat(subTemp, temp);
  3480. break;
  3481. }
  3482. }
  3483. pCHlist1 = strtok_r(NULL, ",", &pCHListSave1);
  3484. }
  3485. cJSON_AddStringToObject(data_filed, "thresholdDownChanelName", subTemp);
  3486. }
  3487. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3488. }
  3489. break;
  3490. case SENSOR_TYPE_SMOKE:
  3491. case SENSOR_TYPE_WATER:
  3492. case SENSOR_TYPE_ACCESS:
  3493. case SENSOR_TYPE_LEAK:
  3494. data_filed = cJSON_CreateObject();
  3495. cJSON_AddStringToObject(data_filed, "connectionStatus", "");
  3496. cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
  3497. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3498. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3499. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3500. cJSON_AddStringToObject(data_filed, "thresholdType", "");
  3501. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", "");
  3502. cJSON_AddStringToObject(data_filed, "thresholdDownValue", "");
  3503. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3504. break;
  3505. case SENSOR_TYPE_GAS:
  3506. {
  3507. data_filed = cJSON_CreateObject();
  3508. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
  3509. cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
  3510. cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
  3511. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3512. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3513. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3514. cJSON_AddStringToObject(data_filed, "thresholdType", language_atmosphere_gas[__globalDeviceManage._globalDevInfo.product.language]);
  3515. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold);
  3516. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3517. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold);
  3518. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3519. if (_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3520. {
  3521. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3522. }
  3523. else
  3524. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3525. if (_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3526. {
  3527. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3528. }
  3529. else
  3530. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3531. char *pCHlist;
  3532. char *pCHListSave;
  3533. char sensor_para[512];
  3534. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para) > 0)
  3535. {
  3536. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3537. cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para);
  3538. memset(subTemp, 0, sizeof(subTemp));
  3539. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3540. // 其他版本功能
  3541. while (pCHlist != NULL)
  3542. {
  3543. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3544. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3545. {
  3546. if (_globalPowerMangerTemp == NULL)
  3547. break;
  3548. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3549. {
  3550. if (strlen(subTemp) <= 0)
  3551. {
  3552. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3553. }
  3554. else
  3555. {
  3556. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3557. }
  3558. strcat(subTemp, temp);
  3559. break;
  3560. }
  3561. }
  3562. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3563. }
  3564. cJSON_AddStringToObject(data_filed, "thresholdUpperChanelName", subTemp);
  3565. }
  3566. if (strlen(_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para) > 0)
  3567. {
  3568. cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3569. memset(subTemp, 0, sizeof(subTemp));
  3570. strcpy(sensor_para, _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para);
  3571. pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
  3572. // 其他版本功能
  3573. while (pCHlist != NULL)
  3574. {
  3575. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  3576. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  3577. {
  3578. if (_globalPowerMangerTemp == NULL)
  3579. break;
  3580. if (atoi(pCHlist) == _globalPowerMangerTemp->product_ch_id)
  3581. {
  3582. if (strlen(subTemp) <= 0)
  3583. {
  3584. sprintf(temp, "%s", _globalPowerMangerTemp->product_ch_name);
  3585. }
  3586. else
  3587. {
  3588. sprintf(temp, ",%s", _globalPowerMangerTemp->product_ch_name);
  3589. }
  3590. strcat(subTemp, temp);
  3591. break;
  3592. }
  3593. }
  3594. pCHlist = strtok_r(NULL, ",", &pCHListSave);
  3595. }
  3596. cJSON_AddStringToObject(data_filed, "thresholdDownChanelName", subTemp);
  3597. }
  3598. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3599. }
  3600. break;
  3601. case SENSOR_TYPE_AIR_PRESS:
  3602. default:
  3603. data_filed = cJSON_CreateObject();
  3604. cJSON_AddNumberToObject(data_filed, "connectionStatus", _globalSensorMangerTemp->sensor_status);
  3605. // cJSON_AddNumberToObject(data_filed,"connectionStatus",_globalSensorMangerTemp->sensor_status);
  3606. cJSON_AddStringToObject(data_filed, "sensorName", language_sensor_name[langID][(int)_globalSensorMangerTemp->sensor_type]);
  3607. sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
  3608. cJSON_AddStringToObject(data_filed, "sensorId", temp);
  3609. cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
  3610. cJSON_AddStringToObject(data_filed, "thresholdType", "");
  3611. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold);
  3612. cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
  3613. sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold);
  3614. cJSON_AddStringToObject(data_filed, "thresholdDownValue", temp);
  3615. if (_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3616. {
  3617. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Closetemp);
  3618. }
  3619. else
  3620. cJSON_AddStringToObject(data_filed, "thresholdUpperAction", Alarmtemp);
  3621. if (_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl == ALARM_CTRL_CLOSE_CH)
  3622. {
  3623. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Closetemp);
  3624. }
  3625. else
  3626. cJSON_AddStringToObject(data_filed, "thresholdDownAction", Alarmtemp);
  3627. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3628. break;
  3629. }
  3630. }
  3631. //添加汇总
  3632. cJSON_AddItemToObject(root, "data", data_root_array);
  3633. //添加结果
  3634. cJSON_AddStringToObject(root, "msg", "操作成功");
  3635. //转换
  3636. str = cJSON_Print(root);
  3637. //释放资源
  3638. cJSON_Delete(root);
  3639. return str;
  3640. }
  3641. /// @brief 返回ws请求
  3642. /// @param type
  3643. /// @return
  3644. char* ws_over_status_ack_to_json(int type,_OverAllPwrAckInfo* _over_all_pwr_back_info)
  3645. {
  3646. char* str = NULL;
  3647. char temp[32] = {0};
  3648. GlobalDeviceManager *dm=&__globalDeviceManage;
  3649. // 创建 JSON 对象
  3650. cJSON* root = cJSON_CreateObject();
  3651. // 添加基本键值对
  3652. cJSON* sdata_filed = cJSON_CreateObject();
  3653. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  3654. cJSON* sub_data_root_array = cJSON_CreateArray();
  3655. cJSON* data_filed = cJSON_CreateObject();
  3656. if (_over_all_pwr_back_info->product_id == 0)
  3657. {
  3658. sprintf(temp, "%s", _over_all_pwr_back_info->product_name);
  3659. }
  3660. else
  3661. {
  3662. sprintf(temp, "%s %d", _over_all_pwr_back_info->product_name, _over_all_pwr_back_info->product_id);
  3663. }
  3664. cJSON_AddStringToObject(data_filed,"productName",temp);
  3665. // cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info->product_number);
  3666. cJSON_AddStringToObject(data_filed,"productNumber","Smart PDU");
  3667. sprintf(temp,"%d",_over_all_pwr_back_info->product_id);
  3668. cJSON_AddStringToObject(data_filed,"productId",temp);
  3669. sprintf(temp,"%0.3f",_over_all_pwr_back_info->voltage);
  3670. cJSON_AddStringToObject(data_filed,"productVoltage",temp);
  3671. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.voltage);
  3672. cJSON_AddStringToObject(data_filed,"productVoltageMaximum",temp);
  3673. sprintf(temp,"%0.3f",_over_all_pwr_back_info->current);
  3674. cJSON_AddStringToObject(data_filed,"productCurrent",temp);
  3675. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.current);
  3676. cJSON_AddStringToObject(data_filed,"productCurrentMaximum",temp);
  3677. sprintf(temp,"%0.3f",_over_all_pwr_back_info->power/1000);
  3678. cJSON_AddStringToObject(data_filed,"productPower",temp);
  3679. sprintf(temp,"%d",dm->_globalDevInfo.ptotal.power);
  3680. cJSON_AddStringToObject(data_filed,"productPowerMaximum",temp);
  3681. sprintf(temp,"%0.3f",_over_all_pwr_back_info->freq);
  3682. cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
  3683. sprintf(temp,"%0.3f",_over_all_pwr_back_info->consumption);
  3684. cJSON_AddStringToObject(data_filed,"productConsumption",temp);
  3685. sprintf(temp,"%0.3f",_over_all_pwr_back_info->factor);
  3686. cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
  3687. sprintf(temp,"%0.3f",1.0);
  3688. cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
  3689. cJSON_AddItemToObject(sub_data_root_array, "data", data_filed);
  3690. //添加汇总
  3691. cJSON_AddItemToObject(sdata_filed, "data", sub_data_root_array);
  3692. //添加结果
  3693. cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
  3694. //添加汇总
  3695. cJSON_AddItemToObject(root, "data", sdata_filed);
  3696. //添加内容
  3697. cJSON_AddStringToObject(root, "message", "操作成功");
  3698. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  3699. cJSON_AddBoolToObject(root, "success",true);
  3700. switch (type)
  3701. {
  3702. case 0:cJSON_AddStringToObject(root, "type", "overallStatusMonitoring");break;
  3703. case 1:cJSON_AddStringToObject(root, "type", "channelStatusMonitoring");break;
  3704. case 2:cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");break;
  3705. }
  3706. //转换
  3707. str = cJSON_Print(root);
  3708. //释放资源
  3709. cJSON_Delete(root);
  3710. return str;
  3711. }
  3712. /// @brief 返回通道电压信息
  3713. /// @param type
  3714. /// @param _over_chn_pwr_back_info
  3715. /// @return
  3716. char* ws_chn_status_ack_to_json(int type,_OverChnPwrAckInfo* _over_chn_pwr_back_info, GlobalDeviceManager *gdm)
  3717. {
  3718. char* str = NULL;
  3719. char temp[32] = {0};
  3720. _OverChnPwrAckInfo* _chnPwrTemp = NULL ;
  3721. // 创建 JSON 对象
  3722. cJSON* root = cJSON_CreateObject();
  3723. // 添加基本键值对
  3724. cJSON* sdata_filed = cJSON_CreateObject();
  3725. cJSON_AddNumberToObject(sdata_filed, "code", 200);
  3726. cJSON* sub_data_root_array = cJSON_CreateArray();
  3727. //添加记录
  3728. list_for_each_entry(_chnPwrTemp, &_over_chn_pwr_back_info->list, list)
  3729. {
  3730. //添加第一条记录
  3731. cJSON* data_filed = cJSON_CreateObject();
  3732. if(_chnPwrTemp->product_id==0) {
  3733. sprintf(temp,"%s",_chnPwrTemp->product_name);
  3734. }
  3735. else {
  3736. sprintf(temp,"%s %d",_chnPwrTemp->product_name, _chnPwrTemp->product_id);
  3737. }
  3738. cJSON_AddStringToObject(data_filed,"productName",temp);
  3739. cJSON_AddStringToObject(data_filed,"productNumber",_chnPwrTemp->product_number);
  3740. sprintf(temp,"%d",_chnPwrTemp->product_id);
  3741. cJSON_AddStringToObject(data_filed,"productId",temp);
  3742. cJSON_AddStringToObject(data_filed,"productChName",_chnPwrTemp->productChName);
  3743. sprintf(temp, "%d", _chnPwrTemp->productChId);
  3744. cJSON_AddStringToObject(data_filed, "productChId", temp);
  3745. sprintf(temp,"%0.3f",_chnPwrTemp->voltage);
  3746. cJSON_AddStringToObject(data_filed,"productChVoltage",temp);
  3747. sprintf(temp,"%0.3f",_chnPwrTemp->current);
  3748. cJSON_AddStringToObject(data_filed,"productChCurrent",temp);
  3749. sprintf(temp,"%0.3f",_chnPwrTemp->power);
  3750. cJSON_AddStringToObject(data_filed,"productChPower",temp);
  3751. sprintf(temp,"%0.3f",_chnPwrTemp->freq);
  3752. cJSON_AddStringToObject(data_filed,"productChPowerFreq",temp);
  3753. sprintf(temp,"%0.3f",_chnPwrTemp->consumption);
  3754. cJSON_AddStringToObject(data_filed,"productChConsumption",temp);
  3755. sprintf(temp,"%0.3f",_chnPwrTemp->factor);
  3756. cJSON_AddStringToObject(data_filed,"productChPowerFactor",temp);
  3757. sprintf(temp,"%d",_chnPwrTemp->product_ch_start_delay/1000);
  3758. cJSON_AddStringToObject(data_filed,"firingInterval",temp);
  3759. sprintf(temp,"%d",_chnPwrTemp->product_ch_stop_delay/1000);
  3760. cJSON_AddStringToObject(data_filed,"closeInterval",temp);
  3761. sprintf(temp, "%d", _chnPwrTemp->status);
  3762. cJSON_AddStringToObject(data_filed,"productChStatus",temp);
  3763. sprintf(temp, "%d", _chnPwrTemp->NF_status);
  3764. cJSON_AddStringToObject(data_filed,"productChZeroStatus",temp);
  3765. #ifdef USE_NETSWITCH
  3766. cJSON_AddStringToObject(data_filed, "MACadress",_chnPwrTemp->mac_addr);
  3767. cJSON_AddStringToObject(data_filed, "IPadress",_chnPwrTemp->ip_addr);
  3768. #endif
  3769. if (_chnPwrTemp->product_type == TREE_AC_TYPE||gdm->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_One_B)
  3770. {
  3771. if (_chnPwrTemp->product_phType >= 0 && _chnPwrTemp->product_phType < 3)
  3772. {
  3773. cJSON_AddStringToObject(data_filed, "productPhOrder", g_product_t_ac_type_str[_chnPwrTemp->product_phType]);
  3774. sprintf(temp, "%0.3f", _chnPwrTemp->ph_voltage);
  3775. cJSON_AddStringToObject(data_filed, "productPhOrderDy", temp);
  3776. sprintf(temp, "%0.3f", _chnPwrTemp->ph_current);
  3777. cJSON_AddStringToObject(data_filed, "productPhOrderDl", temp);
  3778. sprintf(temp, "%0.3f", _chnPwrTemp->ph_power);
  3779. cJSON_AddStringToObject(data_filed, "productPhOrderGl", temp);
  3780. sprintf(temp, "%0.3f", _chnPwrTemp->ph_consumption);
  3781. cJSON_AddStringToObject(data_filed, "productPhOrderHdl", temp);
  3782. sprintf(temp, "%d", _chnPwrTemp->ph_outputType);
  3783. cJSON_AddStringToObject(data_filed, "outputType", temp);
  3784. sprintf(temp, "%d", _chnPwrTemp->ph_outputStatus);
  3785. cJSON_AddStringToObject(data_filed, "outputStatus", temp);
  3786. }
  3787. }
  3788. cJSON_AddItemToObject(sub_data_root_array, "data", data_filed);
  3789. }
  3790. //添加汇总
  3791. cJSON_AddItemToObject(sdata_filed, "data", sub_data_root_array);
  3792. //添加结果
  3793. cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
  3794. //添加汇总
  3795. cJSON_AddItemToObject(root, "data", sdata_filed);
  3796. //添加内容
  3797. cJSON_AddStringToObject(root, "message", "操作成功");
  3798. cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
  3799. cJSON_AddBoolToObject(root, "success",true);
  3800. switch (type)
  3801. {
  3802. case 0:cJSON_AddStringToObject(root, "type", "overallStatusMonitoring");break;
  3803. case 1:cJSON_AddStringToObject(root, "type", "channelStatusMonitoring");break;
  3804. case 2:cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");break;
  3805. }
  3806. //转换
  3807. str = cJSON_Print(root);
  3808. //释放资源
  3809. cJSON_Delete(root);
  3810. return str;
  3811. }
  3812. /// @brief 返回网络信息
  3813. /// @param _networkInfo_t
  3814. /// @return
  3815. char* communication_net_ack_to_json(NetworkInfo_t* _networkInfo_t)
  3816. {
  3817. char* str = NULL;
  3818. char tmp[10];
  3819. // 创建 JSON 对象
  3820. cJSON* root = cJSON_CreateObject();
  3821. // 添加基本键值对
  3822. cJSON_AddNumberToObject(root, "code", 200);
  3823. //创建数据
  3824. cJSON* data_root_array = cJSON_CreateObject();
  3825. sprintf(tmp, "%d", _networkInfo_t->mode);
  3826. cJSON_AddStringToObject(data_root_array, "mode", tmp);
  3827. cJSON_AddStringToObject(data_root_array, "ipaddress", _networkInfo_t->ip_address);
  3828. cJSON_AddStringToObject(data_root_array, "mask", _networkInfo_t->mask);
  3829. cJSON_AddStringToObject(data_root_array, "gateway", _networkInfo_t->gateway);
  3830. cJSON_AddStringToObject(data_root_array, "dns1", _networkInfo_t->dns1);
  3831. cJSON_AddStringToObject(data_root_array, "dns2", _networkInfo_t->dns2);
  3832. //添加汇总
  3833. cJSON_AddItemToObject(root, "data", data_root_array);
  3834. //添加结果
  3835. cJSON_AddStringToObject(root, "msg", "操作成功");
  3836. //转换
  3837. str = cJSON_Print(root);
  3838. //释放资源
  3839. cJSON_Delete(root);
  3840. return str;
  3841. }
  3842. /// @brief 返回RS485信息
  3843. /// @param _networkInfo_t
  3844. /// @return
  3845. char* communication_rs_ack_to_json(ModbusInfo_t* _modbusInfo_t)
  3846. {
  3847. char temp[32] = {0};
  3848. char* str = NULL;
  3849. // 创建 JSON 对象
  3850. cJSON* root = cJSON_CreateObject();
  3851. // 添加基本键值对
  3852. cJSON_AddNumberToObject(root, "code", 200);
  3853. //创建数据
  3854. memset(temp, 0, sizeof(temp));
  3855. cJSON* data_root_array = cJSON_CreateObject();
  3856. if ( !_modbusInfo_t->mode)
  3857. {
  3858. sprintf(temp,language_alarm_RS485_master[__globalDeviceManage._globalDevInfo.product.language]);
  3859. }
  3860. else
  3861. {
  3862. sprintf(temp,language_alarm_RS485_slave[__globalDeviceManage._globalDevInfo.product.language]);
  3863. }
  3864. cJSON_AddStringToObject(data_root_array, "mode", temp);
  3865. memset(temp, 0, sizeof(temp));
  3866. sprintf(temp,"%d",_modbusInfo_t->addr);
  3867. cJSON_AddStringToObject(data_root_array, "ipaddress", temp);
  3868. memset(temp, 0, sizeof(temp));
  3869. sprintf(temp,"%d",_modbusInfo_t->baudrate);
  3870. cJSON_AddStringToObject(data_root_array, "sensorBaud", temp);
  3871. //添加汇总
  3872. cJSON_AddItemToObject(root, "data", data_root_array);
  3873. //添加结果
  3874. cJSON_AddStringToObject(root, "msg", "操作成功");
  3875. //转换
  3876. str = cJSON_Print(root);
  3877. //释放资源
  3878. cJSON_Delete(root);
  3879. return str;
  3880. }
  3881. /// @brief 返回定时设置
  3882. /// @param chn_name
  3883. /// @param chn_id
  3884. /// @param __powerDSManage_t
  3885. /// @return
  3886. char* service_ds_ack_to_json(char* chn_name,char* chn_id,_PowerDSManage_t* __powerDSManage_t)
  3887. {
  3888. if (!__powerDSManage_t)
  3889. {
  3890. return NULL;
  3891. }
  3892. char* str = NULL;
  3893. char datetemp[32]={0};
  3894. _PowerDSManage_t* _powerDsManageTemp = NULL ;
  3895. // 创建 JSON 对象
  3896. cJSON* root = cJSON_CreateObject();
  3897. // 添加基本键值对
  3898. cJSON_AddNumberToObject(root, "code", 200);
  3899. //创建数据
  3900. cJSON* data_root_array = cJSON_CreateArray();
  3901. //循环添加数据
  3902. list_for_each_entry(_powerDsManageTemp, &__powerDSManage_t->list, list)
  3903. {
  3904. cJSON* data_filed = cJSON_CreateObject();
  3905. cJSON_AddStringToObject(data_filed,"productChName",chn_name);
  3906. cJSON_AddStringToObject(data_filed,"productChId",chn_id);
  3907. cJSON_AddStringToObject(data_filed,"setDate", _powerDsManageTemp->set_date);
  3908. strcpy(datetemp,_powerDsManageTemp->ds_date);
  3909. strcat(datetemp,_powerDsManageTemp->ds_time);
  3910. cJSON_AddStringToObject(data_filed,"setTime",datetemp);
  3911. cJSON_AddNumberToObject(data_filed,"setStatus",_powerDsManageTemp->set_stats);
  3912. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3913. }
  3914. //添加汇总
  3915. cJSON_AddItemToObject(root, "data", data_root_array);
  3916. //添加结果
  3917. cJSON_AddStringToObject(root, "msg", "操作成功");
  3918. //转换
  3919. str = cJSON_Print(root);
  3920. //释放资源
  3921. cJSON_Delete(root);
  3922. return str;
  3923. }
  3924. /// @brief 返回所有定时设置
  3925. /// @param chn_name
  3926. /// @param chn_id
  3927. /// @param __powerDSManage_t
  3928. /// @return
  3929. char* service_ds_all_ack_to_json(char* pDate,char* strName,char* strchID,GlobalPowerManger* _powerAll)
  3930. {
  3931. if (!_powerAll)
  3932. {
  3933. return NULL;
  3934. }
  3935. char* str = NULL;
  3936. int nchID=0;
  3937. char datetemp[32]={0};
  3938. char temp[64]={0};
  3939. _PowerDSManage_t* _powerDsManageTemp = NULL ;
  3940. // 创建 JSON 对象
  3941. cJSON* root = cJSON_CreateObject();
  3942. // 添加基本键值对
  3943. cJSON_AddNumberToObject(root, "code", 200);
  3944. //创建数据
  3945. cJSON* data_root_array = cJSON_CreateArray();
  3946. GlobalPowerManger* _globalPowerMangerTemp=NULL;
  3947. list_for_each_entry(_globalPowerMangerTemp, &_powerAll->list, list)
  3948. {
  3949. if (!(strchID == NULL || *strchID == '\0'))//ID号
  3950. {
  3951. nchID=atoi(strchID);
  3952. if (nchID>0)
  3953. {
  3954. if (nchID != _globalPowerMangerTemp->product_ch_id)
  3955. {
  3956. continue;
  3957. }
  3958. }
  3959. }
  3960. if (!(strName == NULL || *strName == '\0'))//名称
  3961. {
  3962. if (strcmp(_globalPowerMangerTemp->product_ch_name, strName) != 0)
  3963. {
  3964. continue;
  3965. }
  3966. }
  3967. // 循环添加数据s
  3968. _powerDsManageTemp=NULL;
  3969. list_for_each_entry(_powerDsManageTemp, &_globalPowerMangerTemp->list_DS,list)
  3970. {
  3971. if (!(pDate == NULL || *pDate == '\0'))
  3972. {
  3973. if (strcmp(_powerDsManageTemp->ds_date, pDate) != 0)
  3974. {
  3975. continue;
  3976. }
  3977. }
  3978. cJSON *data_filed = cJSON_CreateObject();
  3979. sprintf(temp,"%d %s %s",_globalPowerMangerTemp->product_ch_id,_powerDsManageTemp->ds_date,_powerDsManageTemp->ds_time);
  3980. cJSON_AddStringToObject(data_filed, "idx", temp);
  3981. cJSON_AddStringToObject(data_filed, "productChName", _globalPowerMangerTemp->product_ch_name);
  3982. sprintf(temp,"%d",_globalPowerMangerTemp->product_ch_id);
  3983. cJSON_AddStringToObject(data_filed, "productChId", temp);
  3984. cJSON_AddStringToObject(data_filed, "setDate", _powerDsManageTemp->ds_date);
  3985. cJSON_AddStringToObject(data_filed, "setTime", _powerDsManageTemp->ds_time);
  3986. cJSON_AddNumberToObject(data_filed, "setStatus", _powerDsManageTemp->set_stats);
  3987. cJSON_AddNumberToObject(data_filed, "triggerStatus", _powerDsManageTemp->ds_is_triggered);
  3988. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  3989. }
  3990. }
  3991. //添加汇总
  3992. cJSON_AddItemToObject(root, "data", data_root_array);
  3993. //添加结果
  3994. cJSON_AddStringToObject(root, "msg", "操作成功");
  3995. //转换
  3996. str = cJSON_Print(root);
  3997. //释放资源
  3998. cJSON_Delete(root);
  3999. return str;
  4000. }
  4001. /// @brief 告警信息请求
  4002. /// @param str
  4003. /// @param _over_all_sensor_request
  4004. /// @return
  4005. cJSON* json_to_alarm_manage(const char* str,_AlarmRequestInfo* _alarm_request_info)
  4006. {
  4007. cJSON* cjson = NULL;
  4008. cjson = cJSON_Parse(str);
  4009. if(cjson==NULL)
  4010. {
  4011. //log_e("Invalid JSON!");
  4012. return NULL;
  4013. }
  4014. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4015. if(cjson_token!=NULL)
  4016. _alarm_request_info->user_token = cjson_token->valuestring;
  4017. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4018. if(cjson_type!=NULL)
  4019. _alarm_request_info->type = cjson_type->valuestring ;
  4020. cJSON* cjson_pagenum = cJSON_GetObjectItem(cjson,"pageNum");
  4021. if(cjson_pagenum!=NULL)
  4022. _alarm_request_info->pagenum = cjson_pagenum->valueint ;
  4023. cJSON* cjson_pagesize = cJSON_GetObjectItem(cjson,"pageSize");
  4024. if(cjson_pagesize!=NULL)
  4025. _alarm_request_info->pagesize = cjson_pagesize->valueint ;
  4026. cJSON* cjson_start_time = cJSON_GetObjectItem(cjson,"startTime");
  4027. if(cjson_start_time!=NULL)
  4028. _alarm_request_info->startTime = cjson_start_time->valuestring ;
  4029. cJSON* cjson_end_time = cJSON_GetObjectItem(cjson,"endTime");
  4030. if(cjson_end_time!=NULL)
  4031. _alarm_request_info->endTime = cjson_end_time->valuestring ;
  4032. _alarm_request_info->_pwr_info.bUpdatealarmContentUpperValue = false;
  4033. cJSON* cjson_alarmContentUpperValue = cJSON_GetObjectItem(cjson,"alarmContentUpperValue");
  4034. if(cjson_alarmContentUpperValue!=NULL)
  4035. {
  4036. if (cjson_alarmContentUpperValue->valuestring)
  4037. {
  4038. _alarm_request_info->_pwr_info.alarmContentUpperValue = cjson_alarmContentUpperValue->valuestring;
  4039. _alarm_request_info->_pwr_info.bUpdatealarmContentUpperValue = true;
  4040. }
  4041. else _alarm_request_info->_pwr_info.bUpdatealarmContentUpperValue = false;
  4042. }
  4043. _alarm_request_info->_pwr_info.bUpdatecurrentUpperValue = false;
  4044. cJSON* cjson_currentUpperValue = cJSON_GetObjectItem(cjson,"currentUpperValue");
  4045. if(cjson_currentUpperValue!=NULL)
  4046. {
  4047. if (cjson_currentUpperValue->valuestring)
  4048. {
  4049. _alarm_request_info->_pwr_info.currentUpperValue = cjson_currentUpperValue->valuestring ;
  4050. _alarm_request_info->_pwr_info.bUpdatecurrentUpperValue = true;
  4051. }
  4052. else _alarm_request_info->_pwr_info.bUpdatecurrentUpperValue = false;
  4053. }
  4054. _alarm_request_info->_pwr_info.bUpdatepowerUpperValue = false;
  4055. cJSON* cjson_powerUpperValue = cJSON_GetObjectItem(cjson,"powerUpperValue");
  4056. if(cjson_powerUpperValue!=NULL)
  4057. {
  4058. if (cjson_powerUpperValue->valuestring)
  4059. {
  4060. _alarm_request_info->_pwr_info.powerUpperValue = cjson_powerUpperValue->valuestring;
  4061. _alarm_request_info->_pwr_info.bUpdatepowerUpperValue = true;
  4062. }
  4063. else _alarm_request_info->_pwr_info.bUpdatepowerUpperValue = false;
  4064. }
  4065. cJSON* cjson_productChId = cJSON_GetObjectItem(cjson,"productChId");
  4066. if(cjson_productChId!=NULL)
  4067. _alarm_request_info->_pwr_info.productChId = atoi(cjson_productChId->valuestring) ;
  4068. cJSON* cjson_productChName = cJSON_GetObjectItem(cjson,"productChName");
  4069. if(cjson_productChName!=NULL)
  4070. _alarm_request_info->_pwr_info.productChName = cjson_productChName->valuestring ;
  4071. _alarm_request_info->_pwr_info.bUpdatevoltageDownValue = false;
  4072. cJSON* cjson_voltageDownValue = cJSON_GetObjectItem(cjson,"voltageDownValue");
  4073. if(cjson_voltageDownValue!=NULL)
  4074. {
  4075. if (cjson_voltageDownValue->valuestring)
  4076. {
  4077. _alarm_request_info->_pwr_info.voltageDownValue = cjson_voltageDownValue->valuestring;
  4078. _alarm_request_info->_pwr_info.bUpdatevoltageDownValue = true;
  4079. }
  4080. else _alarm_request_info->_pwr_info.bUpdatevoltageDownValue = false;
  4081. }
  4082. _alarm_request_info->_pwr_info.bUpdatevoltageUpperValue = false;
  4083. cJSON* cjson_voltageUpperValue = cJSON_GetObjectItem(cjson,"voltageUpperValue");
  4084. if(cjson_voltageUpperValue!=NULL)
  4085. {
  4086. if (cjson_voltageUpperValue->valuestring)
  4087. {
  4088. _alarm_request_info->_pwr_info.voltageUpperValue = cjson_voltageUpperValue->valuestring ;
  4089. _alarm_request_info->_pwr_info.bUpdatevoltageUpperValue = true;
  4090. }
  4091. else _alarm_request_info->_pwr_info.bUpdatevoltageUpperValue = false;
  4092. }
  4093. cJSON* cjson_connectionStatus = cJSON_GetObjectItem(cjson,"connectionStatus");
  4094. if(cjson_connectionStatus!=NULL)
  4095. _alarm_request_info->_sensor_info.connectionStatus = cjson_connectionStatus->valuestring ;
  4096. cJSON* cjson_sensorId = cJSON_GetObjectItem(cjson,"sensorId");
  4097. if(cjson_sensorId!=NULL)
  4098. {
  4099. if (cjson_sensorId->valuestring)
  4100. {
  4101. _alarm_request_info->_sensor_info.sensorId = atoi(cjson_sensorId->valuestring);
  4102. }else{
  4103. _alarm_request_info->_sensor_info.sensorId = cjson_sensorId->valueint ;
  4104. }
  4105. }
  4106. cJSON* cjson_sensorName = cJSON_GetObjectItem(cjson,"sensorName");
  4107. if(cjson_sensorName!=NULL)
  4108. _alarm_request_info->_sensor_info.sensorName = cjson_sensorName->valuestring ;
  4109. cJSON* cjson_sensorType = cJSON_GetObjectItem(cjson,"sensorType");
  4110. if(cjson_sensorType!=NULL)
  4111. _alarm_request_info->_sensor_info.sensorType = cjson_sensorType->valuestring ;
  4112. cJSON* cjson_thresholdType = cJSON_GetObjectItem(cjson,"thresholdType");
  4113. if(cjson_thresholdType!=NULL)
  4114. _alarm_request_info->_sensor_info.thresholdType = cjson_thresholdType->valuestring ;
  4115. cJSON* cjson_thresholdDownValue = cJSON_GetObjectItem(cjson,"thresholdDownValue");
  4116. if(cjson_thresholdDownValue!=NULL)
  4117. _alarm_request_info->_sensor_info.thresholdDownValue = cjson_thresholdDownValue->valuestring ;
  4118. cJSON* cjson_thresholdUpperValue = cJSON_GetObjectItem(cjson,"thresholdUpperValue");
  4119. if(cjson_thresholdUpperValue!=NULL)
  4120. _alarm_request_info->_sensor_info.thresholdUpperValue = cjson_thresholdUpperValue->valuestring ;
  4121. cJSON* cjson_currentUpperAction = cJSON_GetObjectItem(cjson,"currentUpperAction");
  4122. if(cjson_currentUpperAction!=NULL)
  4123. _alarm_request_info->_pwr_info.currentUpperAction = cjson_currentUpperAction->valuestring ;
  4124. cJSON* cjson_voltageUpperAction = cJSON_GetObjectItem(cjson,"voltageUpperAction");
  4125. if(cjson_voltageUpperAction!=NULL)
  4126. _alarm_request_info->_pwr_info.voltageUpperAction = cjson_voltageUpperAction->valuestring ;
  4127. cJSON* cjson_voltageDownAction = cJSON_GetObjectItem(cjson,"voltageDownAction");
  4128. if(cjson_voltageDownAction!=NULL)
  4129. _alarm_request_info->_pwr_info.voltageDownAction = cjson_voltageDownAction->valuestring ;
  4130. cJSON* cjson_powerUpperAction = cJSON_GetObjectItem(cjson,"powerUpperAction");
  4131. if(cjson_powerUpperAction!=NULL)
  4132. _alarm_request_info->_pwr_info.powerUpperAction = cjson_powerUpperAction->valuestring ;
  4133. cJSON* cjson_alarmContentUpperAction = cJSON_GetObjectItem(cjson,"alarmContentUpperAction");
  4134. if(cjson_alarmContentUpperAction!=NULL)
  4135. _alarm_request_info->_pwr_info.alarmContentUpperAction = cjson_alarmContentUpperAction->valuestring ;
  4136. cJSON* cjson_thresholdDownAction = cJSON_GetObjectItem(cjson,"thresholdDownAction");
  4137. if(cjson_thresholdDownAction!=NULL)
  4138. _alarm_request_info->_sensor_info.thresholdDownAction = cjson_thresholdDownAction->valuestring ;
  4139. cJSON* cjson_thresholdUpperAction= cJSON_GetObjectItem(cjson,"thresholdUpperAction");
  4140. if(cjson_thresholdUpperAction!=NULL)
  4141. _alarm_request_info->_sensor_info.thresholdUpperAction = cjson_thresholdUpperAction->valuestring ;
  4142. cJSON *cjson_thresholdDownChanel = cJSON_GetObjectItem(cjson, "thresholdDownChanel");
  4143. if (cjson_thresholdDownChanel != NULL)
  4144. _alarm_request_info->_sensor_info.thresholdDownChanel = cjson_thresholdDownChanel->valuestring;
  4145. cJSON *cjson_thresholdUpperChanel = cJSON_GetObjectItem(cjson, "thresholdUpperChanel");
  4146. if (cjson_thresholdUpperChanel != NULL)
  4147. _alarm_request_info->_sensor_info.thresholdUpperChanel = cjson_thresholdUpperChanel->valuestring;
  4148. cJSON *cjson_productChIds = cJSON_GetObjectItem(cjson, "productChIds");
  4149. if (cjson_productChIds != NULL)
  4150. _alarm_request_info->strProductChIds = cjson_productChIds->valuestring;
  4151. return cjson;
  4152. }
  4153. /// @brief 日志信息查询
  4154. /// @param str
  4155. /// @param _logInformationRequestInfo
  4156. /// @return
  4157. cJSON* json_to_loginformation_manage(const char* str,_LogInformationRequestInfo* _logInformationRequestInfo)
  4158. {
  4159. cJSON* cjson = NULL;
  4160. cjson = cJSON_Parse(str);
  4161. if(cjson==NULL)
  4162. {
  4163. //log_e("Invalid JSON!");
  4164. return NULL;
  4165. }
  4166. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4167. if(cjson_token!=NULL)
  4168. _logInformationRequestInfo->user_token = cjson_token->valuestring;
  4169. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4170. if(cjson_type!=NULL)
  4171. _logInformationRequestInfo->type = cjson_type->valuestring ;
  4172. cJSON* cjson_alarm_type = cJSON_GetObjectItem(cjson,"alarmType");
  4173. if(cjson_alarm_type!=NULL)
  4174. _logInformationRequestInfo->alarmType = cjson_alarm_type->valuestring ;
  4175. cJSON *cjson_begin_time = cJSON_GetObjectItem(cjson, "startTime");
  4176. if (cjson_begin_time != NULL)
  4177. _logInformationRequestInfo->startTime = cjson_begin_time->valuestring;
  4178. cJSON *cjson_end_time = cJSON_GetObjectItem(cjson, "endTime");
  4179. if (cjson_end_time != NULL)
  4180. _logInformationRequestInfo->endtime = cjson_end_time->valuestring;
  4181. cJSON* cjson_pagenum = cJSON_GetObjectItem(cjson,"pageNum");
  4182. if(cjson_pagenum!=NULL)
  4183. _logInformationRequestInfo->pagenum = cjson_pagenum->valueint ;
  4184. cJSON* cjson_pagesize = cJSON_GetObjectItem(cjson,"pageSize");
  4185. if(cjson_pagesize!=NULL)
  4186. _logInformationRequestInfo->pagesize = cjson_pagesize->valueint ;
  4187. cJSON* cjson_openName = cJSON_GetObjectItem(cjson,"operName");
  4188. if(cjson_openName!=NULL)
  4189. _logInformationRequestInfo->openName = cjson_openName->valuestring ;
  4190. return cjson;
  4191. }
  4192. /// @brief 通信管理
  4193. /// @param str
  4194. /// @param _communicationRequestInfo
  4195. /// @return
  4196. cJSON* json_to_communication_manage(const char* str,_CommunicationManageRequestInfo* _communicationRequestInfo)
  4197. {
  4198. cJSON* cjson = NULL;
  4199. cjson = cJSON_Parse(str);
  4200. if(cjson==NULL)
  4201. {
  4202. //log_e("Invalid JSON!");
  4203. return NULL;
  4204. }
  4205. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4206. if(cjson_token!=NULL)
  4207. _communicationRequestInfo->user_token = cjson_token->valuestring;
  4208. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4209. if(cjson_type!=NULL)
  4210. _communicationRequestInfo->type = cjson_type->valuestring ;
  4211. //网络配置上传参数
  4212. if(strcmp(_communicationRequestInfo->type,"WkIPV4Save")==0 ||
  4213. strcmp(_communicationRequestInfo->type,"WkIPV6Save")==0)
  4214. {
  4215. cJSON* cjson_net_mode = cJSON_GetObjectItem(cjson,"mode");
  4216. cJSON* cjson_net_ipaddr = cJSON_GetObjectItem(cjson,"ipaddress");
  4217. cJSON* cjson_net_mask = cJSON_GetObjectItem(cjson,"mask");
  4218. cJSON* cjson_net_gateway = cJSON_GetObjectItem(cjson,"gateway");
  4219. cJSON* cjson_net_dns1 = cJSON_GetObjectItem(cjson,"dns1");
  4220. cJSON* cjson_net_dns2 = cJSON_GetObjectItem(cjson,"dns2");
  4221. cJSON* cjson_net_mac = cJSON_GetObjectItem(cjson,"mac");
  4222. if(cjson_net_mode!=NULL)
  4223. _communicationRequestInfo->_net_info.mode = cjson_net_mode->valuestring ;
  4224. if(cjson_net_ipaddr!=NULL)
  4225. _communicationRequestInfo->_net_info.ipaddr = cjson_net_ipaddr->valuestring ;
  4226. if(cjson_net_mask!=NULL)
  4227. _communicationRequestInfo->_net_info.maskaddr = cjson_net_mask->valuestring ;
  4228. if(cjson_net_gateway!=NULL)
  4229. _communicationRequestInfo->_net_info.gateway = cjson_net_gateway->valuestring ;
  4230. if(cjson_net_dns1!=NULL)
  4231. _communicationRequestInfo->_net_info.dns1 = cjson_net_dns1->valuestring ;
  4232. if(cjson_net_dns2!=NULL)
  4233. _communicationRequestInfo->_net_info.dns2 = cjson_net_dns2->valuestring ;
  4234. }
  4235. //RS485配置
  4236. if(strcmp(_communicationRequestInfo->type,"RsSave")==0)
  4237. {
  4238. cJSON* cjson_rs_mode = cJSON_GetObjectItem(cjson,"mode");
  4239. cJSON* cjson_rs_baud = cJSON_GetObjectItem(cjson,"sensorBaud");
  4240. cJSON* cjson_rs_addr = cJSON_GetObjectItem(cjson,"ipaddress");
  4241. if(cjson_rs_mode!=NULL)
  4242. _communicationRequestInfo->_rs_info.mode = cjson_rs_mode->valuestring ;
  4243. if(cjson_rs_baud!=NULL)
  4244. _communicationRequestInfo->_rs_info.baud = cjson_rs_baud->valuestring ;
  4245. if(cjson_rs_addr!=NULL)
  4246. _communicationRequestInfo->_rs_info.addr = cjson_rs_addr->valuestring ;
  4247. }
  4248. return cjson;
  4249. }
  4250. /// @brief JSON服务参数获取
  4251. /// @param str
  4252. /// @param _serviceManageRequestInfo
  4253. /// @return
  4254. cJSON* json_to_service_manage(const char* str,_ServiceManageRequestInfo* _serviceManageRequestInfo)
  4255. {
  4256. cJSON* cjson = NULL;
  4257. cjson = cJSON_Parse(str);
  4258. if(cjson==NULL)
  4259. {
  4260. //log_e("Invalid JSON!");
  4261. return NULL;
  4262. }
  4263. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4264. if(cjson_token!=NULL)
  4265. _serviceManageRequestInfo->user_token = cjson_token->valuestring;
  4266. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4267. if(cjson_type!=NULL)
  4268. _serviceManageRequestInfo->type = cjson_type->valuestring ;
  4269. ///SMTP上传参数
  4270. if(strcmp(_serviceManageRequestInfo->type,"SmtpSave")==0)
  4271. {
  4272. _MAIL_ServerRequestInfo *info=&_serviceManageRequestInfo->_smtp_info;
  4273. cJSON* cjson_mode = cJSON_GetObjectItem(cjson,"mode");
  4274. cJSON* cjson_account = cJSON_GetObjectItem(cjson,"zh");
  4275. cJSON* cjson_passwd = cJSON_GetObjectItem(cjson,"mm");
  4276. cJSON* cjson_server = cJSON_GetObjectItem(cjson,"server");
  4277. cJSON* cjson_port = cJSON_GetObjectItem(cjson,"port");
  4278. cJSON* cjson_auth = cJSON_GetObjectItem(cjson,"rzfs");
  4279. cJSON* cjson_recv_account = cJSON_GetObjectItem(cjson,"receiveAccountList");
  4280. if(cjson_mode!=NULL)
  4281. info->mode = cjson_mode->valuestring ;
  4282. if(cjson_account!=NULL)
  4283. info->account = cjson_account->valuestring ;
  4284. if(cjson_passwd!=NULL)
  4285. info->password = cjson_passwd->valuestring ;
  4286. if(cjson_server!=NULL)
  4287. info->server = cjson_server->valuestring ;
  4288. if(cjson_port!=NULL)
  4289. info->port = cjson_port->valuestring ;
  4290. if(cjson_auth!=NULL)
  4291. info->auth = cjson_auth->valuestring ;
  4292. if(cjson_recv_account!=NULL) {
  4293. cJSON *node=cjson_recv_account->child;
  4294. while(node) {
  4295. cJSON *cjson_id=cJSON_GetObjectItem(node, "idx");
  4296. cJSON *cjson_acc=cJSON_GetObjectItem(node, "receiveAccount");
  4297. if (cjson_id && cjson_acc){
  4298. info->recvAccount[cjson_id->valueint] = cjson_acc->valuestring;
  4299. }
  4300. node = node->next;
  4301. }
  4302. }
  4303. }
  4304. else if(strcmp(_serviceManageRequestInfo->type,"mqttSave")==0)
  4305. {
  4306. cJSON *tmp;
  4307. _MQTT_ServerRequestInfo *info=&_serviceManageRequestInfo->_mqtt_info;
  4308. tmp = cJSON_GetObjectItem(cjson, "idx");
  4309. if(tmp) {
  4310. info->idx = atoi(tmp->valuestring);
  4311. }
  4312. tmp = cJSON_GetObjectItem(cjson, "serverName");
  4313. if(tmp) {
  4314. info->name = tmp->valuestring;
  4315. }
  4316. tmp = cJSON_GetObjectItem(cjson, "ip");
  4317. if(tmp) {
  4318. info->server = tmp->valuestring;
  4319. }
  4320. tmp = cJSON_GetObjectItem(cjson, "port");
  4321. if(tmp) {
  4322. info->port = tmp->valuestring;
  4323. }
  4324. tmp = cJSON_GetObjectItem(cjson, "kfdId");
  4325. if(tmp) {
  4326. info->cid = tmp->valuestring;
  4327. }
  4328. tmp = cJSON_GetObjectItem(cjson, "yhm");
  4329. if(tmp) {
  4330. info->user = tmp->valuestring;
  4331. }
  4332. tmp = cJSON_GetObjectItem(cjson, "mm");
  4333. if(tmp) {
  4334. info->password = tmp->valuestring;
  4335. }
  4336. tmp = cJSON_GetObjectItem(cjson, "ljzt");
  4337. if(tmp) {
  4338. info->status = tmp->valuestring;
  4339. }
  4340. }
  4341. else if(strcmp(_serviceManageRequestInfo->type,"mqttOpen")==0)
  4342. {
  4343. _MQTT_ServerRequestInfo *info=&_serviceManageRequestInfo->_mqtt_info;
  4344. cJSON *tmp=cJSON_GetObjectItem(cjson, "idx");
  4345. if(tmp) {
  4346. info->idx = atoi(tmp->valuestring);
  4347. }
  4348. info->mode = 1;
  4349. }
  4350. else if(strcmp(_serviceManageRequestInfo->type,"mqttClose")==0)
  4351. {
  4352. _MQTT_ServerRequestInfo *info=&_serviceManageRequestInfo->_mqtt_info;
  4353. cJSON *tmp=cJSON_GetObjectItem(cjson, "idx");
  4354. if(tmp) {
  4355. info->idx = atoi(tmp->valuestring);
  4356. }
  4357. info->mode = 0;
  4358. }
  4359. else if(strcmp(_serviceManageRequestInfo->type,"mqttZtSave")==0)
  4360. {
  4361. _MQTT_ServerRequestInfo *info=&_serviceManageRequestInfo->_mqtt_info;
  4362. cJSON *tmp=cJSON_GetObjectItem(cjson, "mode");
  4363. if(tmp) {
  4364. //info->mode = atoi(tmp->valuestring);
  4365. }
  4366. }
  4367. //SNMP上传参数
  4368. else if(strcmp(_serviceManageRequestInfo->type,"SnmpSave")==0)
  4369. {
  4370. cJSON* tmp=NULL;
  4371. tmp = cJSON_GetObjectItem(cjson,"mode");
  4372. if(tmp!=NULL)
  4373. _serviceManageRequestInfo->_snmp_info.mode = tmp->valuestring ;
  4374. tmp = cJSON_GetObjectItem(cjson,"snmpVersion");
  4375. if(tmp!=NULL)
  4376. _serviceManageRequestInfo->_snmp_info.version = tmp->valuestring ;
  4377. tmp = cJSON_GetObjectItem(cjson,"public");
  4378. if(tmp!=NULL)
  4379. _serviceManageRequestInfo->_snmp_info.public = tmp->valuestring ;
  4380. tmp = cJSON_GetObjectItem(cjson,"trapMode");
  4381. if(tmp!=NULL)
  4382. _serviceManageRequestInfo->_snmp_info.trapmode = tmp->valuestring ;
  4383. tmp = cJSON_GetObjectItem(cjson,"yhm");
  4384. if(tmp!=NULL)
  4385. _serviceManageRequestInfo->_snmp_info.user = tmp->valuestring;
  4386. tmp = cJSON_GetObjectItem(cjson,"rzxy");
  4387. if(tmp!=NULL)
  4388. _serviceManageRequestInfo->_snmp_info.auth_alg = tmp->valuestring;
  4389. tmp = cJSON_GetObjectItem(cjson,"rzmm");
  4390. if(tmp!=NULL)
  4391. _serviceManageRequestInfo->_snmp_info.auth_passwd = tmp->valuestring;
  4392. tmp = cJSON_GetObjectItem(cjson,"jmxy");
  4393. if(tmp!=NULL)
  4394. _serviceManageRequestInfo->_snmp_info.priv_alg = tmp->valuestring;
  4395. tmp = cJSON_GetObjectItem(cjson,"jmmm");
  4396. if(tmp!=NULL)
  4397. _serviceManageRequestInfo->_snmp_info.priv_passwd = tmp->valuestring;
  4398. tmp = cJSON_GetObjectItem(cjson,"nmsId");
  4399. if(tmp!=NULL)
  4400. _serviceManageRequestInfo->_snmp_info.nms_IP = tmp->valuestring;
  4401. }
  4402. //SNMP TRAP参数
  4403. else if(strcmp(_serviceManageRequestInfo->type,"StSave")==0)
  4404. {
  4405. cJSON* cjson_snmp_trap_mode = cJSON_GetObjectItem(cjson,"mode");
  4406. cJSON* cjson_snmp_trap_stType = cJSON_GetObjectItem(cjson,"stType");
  4407. if(cjson_snmp_trap_mode!=NULL)
  4408. _serviceManageRequestInfo->_snmp_trap_info.mode = cjson_snmp_trap_mode->valuestring ;
  4409. if(cjson_snmp_trap_mode!=NULL)
  4410. _serviceManageRequestInfo->_snmp_trap_info.stType = cjson_snmp_trap_mode->valuestring ;
  4411. }
  4412. //NTP参数
  4413. else if(strcmp(_serviceManageRequestInfo->type,"NtpSave")==0)
  4414. {
  4415. cJSON* cjson_ntp_mode = cJSON_GetObjectItem(cjson,"mode");
  4416. cJSON* cjson_ntp_name = cJSON_GetObjectItem(cjson,"ntpName");
  4417. cJSON* cjson_ntp_address = cJSON_GetObjectItem(cjson,"ntpadress");
  4418. cJSON* cjson_ntp_port = cJSON_GetObjectItem(cjson,"port");
  4419. cJSON* cjson_ntp_datetime = cJSON_GetObjectItem(cjson,"time");
  4420. cJSON* cjson_ntp_timezone = cJSON_GetObjectItem(cjson,"sq");
  4421. cJSON* cjson_ntp_weekday = cJSON_GetObjectItem(cjson,"week");
  4422. if(cjson_ntp_mode!=NULL)
  4423. {
  4424. if (cjson_ntp_mode->type == cJSON_String) _serviceManageRequestInfo->_ntp_info.mode = cjson_ntp_mode->valuestring;
  4425. if (cjson_ntp_mode->type == cJSON_Number)
  4426. {
  4427. _serviceManageRequestInfo->_ntp_info.mode = malloc(10);
  4428. sprintf(_serviceManageRequestInfo->_ntp_info.mode, "%d", cjson_ntp_mode->valueint);
  4429. }
  4430. }
  4431. if(cjson_ntp_name!=NULL)
  4432. _serviceManageRequestInfo->_ntp_info.ntpName = cjson_ntp_name->valuestring ;
  4433. if(cjson_ntp_address!=NULL)
  4434. _serviceManageRequestInfo->_ntp_info.ntpaddress = cjson_ntp_address->valuestring ;
  4435. if(cjson_ntp_port!=NULL)
  4436. {
  4437. if (cjson_ntp_mode->type == cJSON_String) _serviceManageRequestInfo->_ntp_info.port = cjson_ntp_port->valuestring;
  4438. if (cjson_ntp_mode->type == cJSON_Number)
  4439. {
  4440. _serviceManageRequestInfo->_ntp_info.port = malloc(10);
  4441. sprintf(_serviceManageRequestInfo->_ntp_info.port, "%d", cjson_ntp_port->valueint);
  4442. }
  4443. }
  4444. if(cjson_ntp_datetime!=NULL)
  4445. _serviceManageRequestInfo->_ntp_info.time = cjson_ntp_datetime->valuestring ;
  4446. if(cjson_ntp_timezone!=NULL)
  4447. {
  4448. if (cjson_ntp_timezone->type == cJSON_String) _serviceManageRequestInfo->_ntp_info.tzone = cjson_ntp_timezone->valuestring;
  4449. if (cjson_ntp_timezone->type == cJSON_Number)
  4450. {
  4451. _serviceManageRequestInfo->_ntp_info.tzone = malloc(10);
  4452. sprintf(_serviceManageRequestInfo->_ntp_info.tzone, "%d", cjson_ntp_timezone->valueint);
  4453. }
  4454. }
  4455. if(cjson_ntp_weekday!=NULL)
  4456. {
  4457. if (cjson_ntp_weekday->type == cJSON_String) _serviceManageRequestInfo->_ntp_info.weekday = cjson_ntp_weekday->valuestring;
  4458. if (cjson_ntp_weekday->type == cJSON_Number)
  4459. {
  4460. _serviceManageRequestInfo->_ntp_info.weekday = malloc(10);
  4461. sprintf(_serviceManageRequestInfo->_ntp_info.weekday, "%d", cjson_ntp_weekday->valueint);
  4462. }
  4463. }
  4464. }
  4465. //定时
  4466. else if(strcmp(_serviceManageRequestInfo->type,"listDsQuery")==0)
  4467. {
  4468. cJSON* cjson_ds_ch_name = cJSON_GetObjectItem(cjson,"productChName");
  4469. cJSON* cjson_ds_ch_id = cJSON_GetObjectItem(cjson,"productChId");
  4470. cJSON* cjson_ds_ch_date = cJSON_GetObjectItem(cjson,"setDate");
  4471. if (cjson_ds_ch_name != NULL)
  4472. {
  4473. _serviceManageRequestInfo->_ds_info.productChName = cjson_ds_ch_name->valuestring;
  4474. }
  4475. if (cjson_ds_ch_id != NULL)
  4476. {
  4477. _serviceManageRequestInfo->_ds_info.productChId = cjson_ds_ch_id->valuestring;
  4478. }
  4479. if (cjson_ds_ch_date != NULL)
  4480. {
  4481. _serviceManageRequestInfo->_ds_info.channelDate = cjson_ds_ch_date->valuestring;
  4482. }else{
  4483. _serviceManageRequestInfo->_ds_info.channelDate =NULL;
  4484. }
  4485. }
  4486. else if(strcmp(_serviceManageRequestInfo->type,"listSxQuery")==0)
  4487. {
  4488. cJSON* cjson_sx_product_id = cJSON_GetObjectItem(cjson,"productId");
  4489. if(cjson_sx_product_id != NULL)
  4490. {
  4491. if (cjson_sx_product_id->type == cJSON_String) _serviceManageRequestInfo->_posix_info.productId = cjson_sx_product_id->valuestring;
  4492. if (cjson_sx_product_id->type == cJSON_Number)
  4493. {
  4494. _serviceManageRequestInfo->_posix_info.productId = malloc(10);
  4495. sprintf(_serviceManageRequestInfo->_posix_info.productId, "%d", cjson_sx_product_id->valueint);
  4496. }
  4497. }
  4498. }
  4499. else if(strcmp(_serviceManageRequestInfo->type,"dsSave")==0)
  4500. {
  4501. cJSON* cjson_ds_ch_name = cJSON_GetObjectItem(cjson,"productChName");
  4502. cJSON* cjson_ds_ch_id = cJSON_GetObjectItem(cjson,"productChId");
  4503. cJSON* cjson_ds_dateS = cJSON_GetObjectItem(cjson,"startDate");
  4504. cJSON* cjson_ds_dateE = cJSON_GetObjectItem(cjson,"endDate");
  4505. cJSON* cjson_ds_time = cJSON_GetObjectItem(cjson,"channelTime");
  4506. cJSON* cjson_ds_sts = cJSON_GetObjectItem(cjson,"setStatus");
  4507. if(cjson_ds_ch_name!=NULL)
  4508. _serviceManageRequestInfo->_ds_info.productChName = cjson_ds_ch_name->valuestring ;
  4509. if(cjson_ds_ch_id!=NULL)
  4510. {
  4511. memset(_serviceManageRequestInfo->_ds_info.productChIds,-1,sizeof(_serviceManageRequestInfo->_ds_info.productChIds));
  4512. int nIndex =0;
  4513. for (cJSON* cjson_ds_ch_id_child = cjson_ds_ch_id->child; cjson_ds_ch_id_child != NULL; cjson_ds_ch_id_child = cjson_ds_ch_id_child->next,nIndex++)
  4514. {
  4515. _serviceManageRequestInfo->_ds_info.productChIds[nIndex]=atoi(cjson_ds_ch_id_child->valuestring);
  4516. }
  4517. }
  4518. if (cjson_ds_dateS != NULL)
  4519. _serviceManageRequestInfo->_ds_info.StartDate = cjson_ds_dateS->valuestring;
  4520. if (cjson_ds_dateE != NULL)
  4521. _serviceManageRequestInfo->_ds_info.Enddate = cjson_ds_dateE->valuestring;
  4522. if (cjson_ds_time != NULL)
  4523. _serviceManageRequestInfo->_ds_info.channelTime = cjson_ds_time->valuestring;
  4524. if (cjson_ds_sts != NULL)
  4525. _serviceManageRequestInfo->_ds_info.setStatus = cjson_ds_sts->valuestring ;
  4526. }
  4527. else if(strcmp(_serviceManageRequestInfo->type,"deleteDs")==0)
  4528. {
  4529. cJSON *cjson_ds_ch_id = cJSON_GetObjectItem(cjson, "idx");
  4530. if (cjson_ds_ch_id != NULL)
  4531. {
  4532. memset(_serviceManageRequestInfo->_ds_info.idx, '\0', sizeof(_serviceManageRequestInfo->_ds_info.idx));
  4533. int nIndex = 0;
  4534. for (cJSON *cjson_ds_ch_id_child = cjson_ds_ch_id->child; cjson_ds_ch_id_child != NULL&&nIndex<64; cjson_ds_ch_id_child = cjson_ds_ch_id_child->next, nIndex++)
  4535. {
  4536. _serviceManageRequestInfo->_ds_info.idx[nIndex] = cjson_ds_ch_id_child->valuestring;
  4537. }
  4538. }
  4539. }
  4540. else if(strcmp(_serviceManageRequestInfo->type,"sXTimeSave")==0)
  4541. {
  4542. cJSON* cjson_sx_ch_name = cJSON_GetObjectItem(cjson,"productChName");
  4543. cJSON* cjson_sx_ch_id = cJSON_GetObjectItem(cjson,"productChId");
  4544. cJSON* cjson_sx_product_id = cJSON_GetObjectItem(cjson,"productId");
  4545. cJSON* cjson_sx_start_delay = cJSON_GetObjectItem(cjson,"firingInterval");
  4546. cJSON* cjson_sx_stop_delay = cJSON_GetObjectItem(cjson,"closeInterval");
  4547. if(cjson_sx_ch_name!=NULL)
  4548. _serviceManageRequestInfo->_posix_info.productChName = cjson_sx_ch_name->valuestring ;
  4549. if(cjson_sx_ch_id != NULL)
  4550. {
  4551. if (cjson_sx_ch_id->type == cJSON_String) _serviceManageRequestInfo->_posix_info.productChId = cjson_sx_ch_id->valuestring;
  4552. if (cjson_sx_ch_id->type == cJSON_Number)
  4553. {
  4554. _serviceManageRequestInfo->_posix_info.productChId = malloc(10);
  4555. sprintf(_serviceManageRequestInfo->_posix_info.productChId, "%s", cjson_sx_ch_id->valuestring);
  4556. }
  4557. }
  4558. if(cjson_sx_product_id != NULL)
  4559. {
  4560. if (cjson_sx_product_id->type == cJSON_String) _serviceManageRequestInfo->_posix_info.productId = cjson_sx_product_id->valuestring;
  4561. if (cjson_sx_product_id->type == cJSON_Number)
  4562. {
  4563. _serviceManageRequestInfo->_posix_info.productId = malloc(10);
  4564. sprintf(_serviceManageRequestInfo->_posix_info.productId, "%d", cjson_sx_product_id->valueint);
  4565. }
  4566. }
  4567. if(cjson_sx_start_delay!=NULL)
  4568. {
  4569. if (cjson_sx_start_delay->type == cJSON_String) _serviceManageRequestInfo->_posix_info.firingInterval = cjson_sx_start_delay->valuestring;
  4570. if (cjson_sx_start_delay->type == cJSON_Number)
  4571. {
  4572. _serviceManageRequestInfo->_posix_info.firingInterval = malloc(10);
  4573. sprintf(_serviceManageRequestInfo->_posix_info.firingInterval, "%d", cjson_sx_start_delay->valueint);
  4574. }
  4575. int value = atoi(_serviceManageRequestInfo->_posix_info.firingInterval);
  4576. value *= 1000;
  4577. sprintf(_serviceManageRequestInfo->_posix_info.firingInterval, "%d", value);
  4578. }
  4579. if(cjson_sx_stop_delay!=NULL)
  4580. {
  4581. if (cjson_sx_stop_delay->type == cJSON_String) _serviceManageRequestInfo->_posix_info.closeInterval = cjson_sx_stop_delay->valuestring;
  4582. if (cjson_sx_stop_delay->type == cJSON_Number)
  4583. {
  4584. _serviceManageRequestInfo->_posix_info.closeInterval = malloc(10);
  4585. sprintf(_serviceManageRequestInfo->_posix_info.closeInterval, "%d", cjson_sx_stop_delay->valueint);
  4586. }
  4587. int value = atoi(_serviceManageRequestInfo->_posix_info.closeInterval);
  4588. value *= 1000;
  4589. sprintf(_serviceManageRequestInfo->_posix_info.closeInterval, "%d", value);
  4590. }
  4591. }
  4592. //分组管理
  4593. else if(strcmp(_serviceManageRequestInfo->type,"fzSave")==0)
  4594. {
  4595. cJSON* cjson_Group_mode = cJSON_GetObjectItem(cjson,"mode");
  4596. //cJSON* cjson_Group_modeid = cJSON_GetObjectItem(cjson_Group_mode,"id");
  4597. cJSON* cjson_Group_xlnumber = cJSON_GetObjectItem(cjson,"xlnumber");
  4598. cJSON* cjson_Group_jgnumber = cJSON_GetObjectItem(cjson,"jgnumber");
  4599. // if (cjson_Group_modeid->type == cJSON_String) _serviceManageRequestInfo->_group_info.mode = atoi(cjson_Group_modeid->valuestring);
  4600. // if (cjson_Group_modeid->type == cJSON_Number) _serviceManageRequestInfo->_group_info.mode = cjson_Group_modeid->valueint;
  4601. if(cjson_Group_mode!=NULL)
  4602. _serviceManageRequestInfo->_group_info.mode = cjson_Group_mode->valuestring;
  4603. if(cjson_Group_xlnumber!=NULL)
  4604. _serviceManageRequestInfo->_group_info.xlnumber = cjson_Group_xlnumber->valuestring;
  4605. if(cjson_Group_jgnumber!=NULL)
  4606. _serviceManageRequestInfo->_group_info.jgnumber = cjson_Group_jgnumber->valuestring;
  4607. }
  4608. else if (strcmp(_serviceManageRequestInfo->type, "fzOpen") == 0)
  4609. {
  4610. cJSON *cjson_Group_fzh = cJSON_GetObjectItem(cjson, "fzh");
  4611. if (cjson_Group_fzh != NULL)
  4612. {
  4613. _serviceManageRequestInfo->_group_info.opergroupid = cjson_Group_fzh->valuestring;
  4614. }
  4615. }
  4616. else if (strcmp(_serviceManageRequestInfo->type, "fzClose") == 0)
  4617. {
  4618. cJSON *cjson_Group_fzh = cJSON_GetObjectItem(cjson, "fzh");
  4619. if (cjson_Group_fzh != NULL)
  4620. {
  4621. _serviceManageRequestInfo->_group_info.opergroupid = cjson_Group_fzh->valuestring;
  4622. }
  4623. }
  4624. else if (strcmp(_serviceManageRequestInfo->type, "updateFz") == 0)
  4625. {
  4626. cJSON *cjson_Group_fzh = cJSON_GetObjectItem(cjson, "fzh");
  4627. if (cjson_Group_fzh != NULL)
  4628. {
  4629. _serviceManageRequestInfo->_group_info.opergroupid = cjson_Group_fzh->valuestring;
  4630. }
  4631. cJSON *cjson_Group_fzmc = cJSON_GetObjectItem(cjson, "fzmc");
  4632. if (cjson_Group_fzmc != NULL)
  4633. {
  4634. _serviceManageRequestInfo->_group_info.updategroupName = cjson_Group_fzmc->valuestring;
  4635. }
  4636. }
  4637. else if (strcmp(_serviceManageRequestInfo->type, "gysbSave") == 0)
  4638. {
  4639. cJSON *cjson_productName = cJSON_GetObjectItem(cjson, "productName");
  4640. if (cjson_productName != NULL)
  4641. {
  4642. _serviceManageRequestInfo->productName = cjson_productName->valuestring;
  4643. }
  4644. }
  4645. return cjson;
  4646. }
  4647. /// @brief 用户角色管理
  4648. /// @param str
  4649. /// @param json_to_user_manage
  4650. /// @return
  4651. cJSON* json_to_user_manage(const char* str,_UserRoleManageInfo* _UserRoleManageRequestInfo)
  4652. {
  4653. cJSON* cjson = NULL;
  4654. cjson = cJSON_Parse(str);
  4655. if(cjson==NULL)
  4656. {
  4657. //log_e("Invalid JSON!");
  4658. return NULL;
  4659. }
  4660. cJSON* cjson_token = cJSON_GetObjectItem(cjson,"token");
  4661. if(cjson_token!=NULL)
  4662. _UserRoleManageRequestInfo->user_token = cjson_token->valuestring;
  4663. cJSON* cjson_type = cJSON_GetObjectItem(cjson,"type");
  4664. if(cjson_type!=NULL)
  4665. _UserRoleManageRequestInfo->type = cjson_type->valuestring ;
  4666. //获取角色接口
  4667. if(strcmp(_UserRoleManageRequestInfo->type,"getUser")==0)
  4668. {
  4669. }
  4670. //查询用户接口
  4671. if(strcmp(_UserRoleManageRequestInfo->type,"listUserQuery")==0)
  4672. {
  4673. cJSON* cjson_user_userName = cJSON_GetObjectItem(cjson,"userName");
  4674. if(cjson_user_userName!=NULL)
  4675. _UserRoleManageRequestInfo->userName =cjson_user_userName->valuestring ;
  4676. else _UserRoleManageRequestInfo->userName =NULL ;
  4677. cJSON *cjson_pagenum = cJSON_GetObjectItem(cjson, "pageNum");
  4678. if (cjson_pagenum != NULL)
  4679. _UserRoleManageRequestInfo->pagenum = cjson_pagenum->valueint;
  4680. cJSON *cjson_pagesize = cJSON_GetObjectItem(cjson, "pageSize");
  4681. if (cjson_pagesize != NULL)
  4682. _UserRoleManageRequestInfo->pagesize = cjson_pagesize->valueint;
  4683. }
  4684. //删除用户
  4685. if(strcmp(_UserRoleManageRequestInfo->type,"deleteUser")==0)
  4686. {
  4687. cJSON* cjson_user_userIds = cJSON_GetObjectItem(cjson,"userIds");
  4688. if(cjson_user_userIds!=NULL)
  4689. _UserRoleManageRequestInfo->userIds = cjson_user_userIds->valueint ;
  4690. }
  4691. //新增及更新用户
  4692. if(strcmp(_UserRoleManageRequestInfo->type,"addUser")==0 || strcmp(_UserRoleManageRequestInfo->type,"updateUser")==0)
  4693. {
  4694. cJSON* cjson_user_userId = cJSON_GetObjectItem(cjson,"userId");
  4695. cJSON* cjson_user_userName = cJSON_GetObjectItem(cjson,"userName");
  4696. cJSON* cjson_user_nickName = cJSON_GetObjectItem(cjson,"nickName");
  4697. cJSON* cjson_user_delFlag = cJSON_GetObjectItem(cjson,"delFlag");
  4698. cJSON* cjson_user_roleId = cJSON_GetObjectItem(cjson,"roleId");
  4699. cJSON* cjson_user_roleName = cJSON_GetObjectItem(cjson,"roleName");
  4700. cJSON* cjson_user_password = cJSON_GetObjectItem(cjson,"password");
  4701. cJSON* cjson_user_createtime = cJSON_GetObjectItem(cjson,"createTime");
  4702. if (cjson_user_userId != NULL)
  4703. _UserRoleManageRequestInfo->userId = cjson_user_userId->valueint;
  4704. if (cjson_user_userName != NULL)
  4705. _UserRoleManageRequestInfo->userName = cjson_user_userName->valuestring;
  4706. if (cjson_user_nickName != NULL)
  4707. _UserRoleManageRequestInfo->nickName = cjson_user_nickName->valuestring;
  4708. if (cjson_user_delFlag != NULL)
  4709. _UserRoleManageRequestInfo->delFlag = cjson_user_delFlag->valueint;
  4710. if (cjson_user_roleId != NULL)
  4711. _UserRoleManageRequestInfo->roleId = atoi(cjson_user_roleId->valuestring);
  4712. if (cjson_user_roleName != NULL)
  4713. _UserRoleManageRequestInfo->roleName = cjson_user_roleName->valuestring;
  4714. if (cjson_user_password != NULL)
  4715. _UserRoleManageRequestInfo->password = cjson_user_password->valuestring;
  4716. if (cjson_user_createtime != NULL)
  4717. _UserRoleManageRequestInfo->createTime = cjson_user_createtime->valuestring;
  4718. }
  4719. return cjson;
  4720. }
  4721. /// @brief 返回时序设置
  4722. /// @param __PowerManage_t
  4723. /// @return
  4724. char* service_sx_ack_to_json(int product_id, GlobalPowerManger * __PowerManage_t)
  4725. {
  4726. char* str = NULL;
  4727. char datetemp[32]={0};
  4728. GlobalPowerManger* _powerSxManagerTemp = NULL;
  4729. // 创建 JSON 对象
  4730. cJSON* root = cJSON_CreateObject();
  4731. // 添加基本键值对
  4732. cJSON_AddNumberToObject(root, "code", 200);
  4733. //创建数据
  4734. cJSON* data_root_array = cJSON_CreateArray();
  4735. char temp[64]={0};
  4736. //循环添加数据
  4737. list_for_each_entry(_powerSxManagerTemp, &__PowerManage_t->list, list)
  4738. {
  4739. if (product_id == _powerSxManagerTemp->product_id && _powerSxManagerTemp->product_ch_id)
  4740. {
  4741. cJSON* data_filed = cJSON_CreateObject();
  4742. cJSON_AddStringToObject(data_filed,"productName", __globalDeviceManage._globalDevInfo.product.name);
  4743. cJSON_AddNumberToObject(data_filed,"productId", __globalDeviceManage._globalDevInfo.product.id);
  4744. cJSON_AddStringToObject(data_filed,"productChName", _powerSxManagerTemp->product_ch_name);
  4745. sprintf(temp, "%d", _powerSxManagerTemp->product_ch_id);
  4746. cJSON_AddStringToObject(data_filed, "productChId", temp);
  4747. if (_powerSxManagerTemp->_PowerSXManage)
  4748. {
  4749. cJSON_AddNumberToObject(data_filed,"firingSortno", _powerSxManagerTemp->_PowerSXManage->firingSortno);
  4750. cJSON_AddNumberToObject(data_filed,"closeSortno",_powerSxManagerTemp->_PowerSXManage->closeSortno);
  4751. }
  4752. cJSON_AddNumberToObject(data_filed,"firingInterval",_powerSxManagerTemp->product_ch_start_delay / 1000);
  4753. cJSON_AddNumberToObject(data_filed,"closeInterval",_powerSxManagerTemp->product_ch_stop_delay / 1000);
  4754. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  4755. }
  4756. }
  4757. //添加汇总
  4758. cJSON_AddItemToObject(root, "data", data_root_array);
  4759. //添加结果
  4760. cJSON_AddStringToObject(root, "msg", "操作成功");
  4761. //转换
  4762. str = cJSON_Print(root);
  4763. //释放资源
  4764. cJSON_Delete(root);
  4765. return str;
  4766. }
  4767. char* service_ntp_ack_to_json(NTPManager* __NTPManager_t)
  4768. {
  4769. char* str = NULL;
  4770. char datetemp[32]={0};
  4771. // 创建 JSON 对象
  4772. cJSON* root = cJSON_CreateObject();
  4773. // 添加基本键值对
  4774. cJSON_AddNumberToObject(root, "code", 200);
  4775. cJSON* data_filed = cJSON_CreateObject();
  4776. char buf[30];
  4777. memset(buf, 0, sizeof(buf));
  4778. sprintf(buf, "%d", __NTPManager_t->mode);
  4779. cJSON_AddStringToObject(data_filed,"mode", buf);
  4780. cJSON_AddStringToObject(data_filed,"ntpName", __NTPManager_t->ntpName);
  4781. cJSON_AddStringToObject(data_filed,"ntpadress", __NTPManager_t->ntpaddress);
  4782. memset(buf, 0, sizeof(buf));
  4783. sprintf(buf, "%d", __NTPManager_t->port);
  4784. cJSON_AddStringToObject(data_filed,"port", buf);
  4785. memset(buf, 0, sizeof(buf));
  4786. if (__NTPManager_t->tzone >= 0) sprintf(buf, "GMT/UTC+%d", __NTPManager_t->tzone);
  4787. else sprintf(buf, "GMT/UTC%d", __NTPManager_t->tzone);
  4788. cJSON_AddStringToObject(data_filed,"sq", buf);
  4789. cJSON_AddStringToObject(data_filed,"time", __NTPManager_t->time);
  4790. memset(buf, 0, sizeof(buf));
  4791. sprintf(buf, "%d", __NTPManager_t->weekday);
  4792. cJSON_AddStringToObject(data_filed,"week", buf);
  4793. cJSON_AddItemToObject(root, "data", data_filed);
  4794. //添加结果
  4795. cJSON_AddStringToObject(root, "msg", "操作成功");
  4796. //转换
  4797. str = cJSON_Print(root);
  4798. //释放资源
  4799. cJSON_Delete(root);
  4800. return str;
  4801. }
  4802. char* service_snmp_ack_to_json(SNMPManager* sm)
  4803. {
  4804. char* str=NULL;
  4805. char buf[30];
  4806. // 创建 JSON 对象
  4807. cJSON* root = cJSON_CreateObject();
  4808. // 添加基本键值对
  4809. cJSON_AddNumberToObject(root, "code", 200);
  4810. //创建数据
  4811. cJSON* data_filed = cJSON_CreateObject();
  4812. //创建数据
  4813. memset(buf, 0, sizeof(buf));
  4814. sprintf(buf, "%d", sm->mode);
  4815. cJSON_AddStringToObject(data_filed, "mode", buf);//data_mode_array);
  4816. memset(buf, 0, sizeof(buf));
  4817. if (sm->version==0)
  4818. {
  4819. sprintf(buf, "SNMP V1");
  4820. }
  4821. else if (sm->version==1)
  4822. {
  4823. sprintf(buf, "SNMP V2c");
  4824. }
  4825. else if (sm->version==2)
  4826. {
  4827. sprintf(buf, "SNMP V3");
  4828. }
  4829. else
  4830. {
  4831. sprintf(buf, "null");
  4832. }
  4833. cJSON_AddStringToObject(data_filed,"snmpVersion", buf);
  4834. cJSON_AddStringToObject(data_filed,"public", sm->public);
  4835. memset(buf, 0, sizeof(buf));
  4836. sprintf(buf, "%d", sm->trapmode);
  4837. cJSON_AddStringToObject(data_filed, "trapMode", buf);//data_trapmode_array);
  4838. crypt_t *pc=&sm->crypt;
  4839. cJSON_AddStringToObject(data_filed, "yhm", pc->user);
  4840. cJSON_AddStringToObject(data_filed, "rzxy", pc->auth.alg);
  4841. cJSON_AddStringToObject(data_filed, "rzmm", pc->auth.passwd);
  4842. cJSON_AddStringToObject(data_filed, "jmxy", pc->priv.alg);
  4843. cJSON_AddStringToObject(data_filed, "jmmm", pc->priv.passwd);
  4844. cJSON_AddStringToObject(data_filed, "nmsId", sm->nmsIP);
  4845. //添加汇总
  4846. cJSON_AddItemToObject(root, "data", data_filed);
  4847. //添加结果
  4848. cJSON_AddStringToObject(root, "msg", "操作成功");
  4849. //转换
  4850. str = cJSON_Print(root);
  4851. //释放资源
  4852. cJSON_Delete(root);
  4853. return str;
  4854. }
  4855. char* service_mail_ack_to_json(mail_info_t* info)
  4856. {
  4857. int idx=0;
  4858. char* str = NULL;
  4859. mail_send_t *send=&info->send;
  4860. mail_recv_t *recv=info->recv;
  4861. // 创建 JSON 对象
  4862. cJSON* root = cJSON_CreateObject();
  4863. // 添加基本键值对
  4864. cJSON_AddNumberToObject(root, "code", 200);
  4865. cJSON* data_filed = cJSON_CreateObject();
  4866. char buf[30];
  4867. memset(buf, 0, sizeof(buf));
  4868. sprintf(buf, "%d", send->mode);
  4869. cJSON_AddStringToObject(data_filed,"mode", buf);
  4870. cJSON_AddStringToObject(data_filed,"server", send->server);
  4871. cJSON_AddStringToObject(data_filed,"port", send->port);
  4872. cJSON_AddStringToObject(data_filed,"zh", send->account);
  4873. cJSON_AddStringToObject(data_filed,"mm", send->password);
  4874. cJSON_AddStringToObject(data_filed,"rzfs", send->auth);
  4875. cJSON* array=NULL;
  4876. for(int i=0; i<MAIL_RECV_MAX; i++) {
  4877. if(recv[i].use) {
  4878. cJSON* tmp = cJSON_CreateObject();
  4879. if(tmp) {
  4880. cJSON_AddStringToObject(tmp,"receiveAccount", recv[i].account);
  4881. cJSON_AddNumberToObject(tmp,"idx", idx++);
  4882. if(array==NULL) {
  4883. array = cJSON_CreateArray();
  4884. }
  4885. if(array) {
  4886. cJSON_AddItemToArray(array, tmp);
  4887. }
  4888. }
  4889. }
  4890. }
  4891. if(array) {
  4892. cJSON_AddItemToObject(data_filed, "receiveAccountList", array);
  4893. }
  4894. //添加汇总
  4895. cJSON_AddItemToObject(root, "data", data_filed);
  4896. //添加结果
  4897. cJSON_AddStringToObject(root, "msg", "操作成功");
  4898. //转换
  4899. str = cJSON_Print(root);
  4900. //释放资源
  4901. cJSON_Delete(root);
  4902. return str;
  4903. }
  4904. char* service_mqtt_ack_to_json(mqtt_info_t* info)
  4905. {
  4906. int idx=0;
  4907. char buf[30];
  4908. char* str = NULL;
  4909. cJSON* root = cJSON_CreateObject();
  4910. cJSON_AddNumberToObject(root, "code", 200);
  4911. #if 1
  4912. cJSON *tmp,*array=cJSON_CreateArray();
  4913. if(array) {
  4914. for(int i=0; i<MQTT_SER_MAX; i++) {
  4915. mqtt_server_t *ser=&info->ser[i];
  4916. cJSON *tmp=cJSON_CreateObject();
  4917. if(tmp && (ser->id==i)) {
  4918. sprintf(buf, "%d", ser->id);
  4919. cJSON_AddStringToObject(tmp,"idx", buf);
  4920. sprintf(buf, "%d", ser->mode);
  4921. cJSON_AddStringToObject(tmp,"mode", buf);
  4922. cJSON_AddStringToObject(tmp,"serverName", ser->name);
  4923. cJSON_AddStringToObject(tmp,"ip", ser->server);
  4924. cJSON_AddStringToObject(tmp,"port", ser->port);
  4925. cJSON_AddStringToObject(tmp,"yhm", ser->user);
  4926. cJSON_AddStringToObject(tmp,"mm", ser->password);
  4927. cJSON_AddStringToObject(tmp,"kfdId", ser->cid);
  4928. if(strlen(ser->cert)>0) {
  4929. strcpy(buf, "CERT");
  4930. }
  4931. else {
  4932. strcpy(buf, "");
  4933. }
  4934. cJSON_AddStringToObject(tmp,"zs", buf);
  4935. sprintf(buf, "%d", ser->status?1:2);
  4936. cJSON_AddStringToObject(tmp,"ljzt", buf);
  4937. cJSON_AddItemToArray(array, tmp);
  4938. }
  4939. }
  4940. cJSON_AddItemToObject(root, "data", array);
  4941. }
  4942. #endif
  4943. cJSON_AddStringToObject(root, "msg", "操作成功");
  4944. str = cJSON_Print(root);
  4945. cJSON_Delete(root);
  4946. return str;
  4947. }
  4948. char* mqtt_status_to_json(int mode)
  4949. {
  4950. char* str = NULL;
  4951. char buf[20];
  4952. cJSON* root = cJSON_CreateObject();
  4953. cJSON_AddNumberToObject(root, "code", 200);
  4954. cJSON* data_filed = cJSON_CreateObject();
  4955. sprintf(buf, "%d", mode);
  4956. cJSON_AddStringToObject(data_filed, "mode", buf);
  4957. cJSON_AddItemToObject(root, "data", data_filed);
  4958. cJSON_AddStringToObject(root, "msg", "操作成功");
  4959. //转换
  4960. str = cJSON_Print(root);
  4961. //释放资源
  4962. cJSON_Delete(root);
  4963. return str;
  4964. }
  4965. // @brief 返回分组设置
  4966. char* service_group_ack_to_json(GroupInfo* _globalgroupInfo)
  4967. {
  4968. if (!_globalgroupInfo)
  4969. {
  4970. return NULL;
  4971. }
  4972. char* str = NULL;
  4973. char buffer[50];
  4974. GroupInfo* _GroupInfoTemp = NULL ;
  4975. // 创建 JSON 对象
  4976. cJSON* root = cJSON_CreateObject();
  4977. // 添加基本键值对
  4978. cJSON_AddNumberToObject(root, "code", 200);
  4979. //创建数据
  4980. cJSON* data_root_array = cJSON_CreateArray();
  4981. //循环添加数据
  4982. list_for_each_entry(_GroupInfoTemp, &_globalgroupInfo->list, list)
  4983. {
  4984. cJSON* data_filed = cJSON_CreateObject();
  4985. sprintf(buffer, "%d",_GroupInfoTemp->GroupID);
  4986. cJSON_AddStringToObject(data_filed,"fzh",buffer);
  4987. cJSON_AddStringToObject(data_filed,"fzmc",_GroupInfoTemp->GroupName);
  4988. cJSON_AddStringToObject(data_filed,"tdhs",_GroupInfoTemp->GroupChList);
  4989. char nGroupNameList[3300];
  4990. memset(nGroupNameList, 0, sizeof(nGroupNameList));
  4991. char *pCHlist;
  4992. pCHlist = strtok(_GroupInfoTemp->GroupChList, ",");
  4993. // 直流版本功能
  4994. while (pCHlist)
  4995. {
  4996. GlobalPowerManger *_globalPowerMangerTemp = NULL;
  4997. list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
  4998. {
  4999. if (_globalPowerMangerTemp == NULL)
  5000. break;
  5001. int nChId=atoi(pCHlist) ;
  5002. if (nChId== _globalPowerMangerTemp->product_ch_id)
  5003. {
  5004. char chTemp[64];
  5005. sprintf(chTemp, "%s,", _globalPowerMangerTemp->product_ch_name);
  5006. strcat(nGroupNameList, chTemp);
  5007. break;
  5008. }
  5009. }
  5010. pCHlist = strtok(NULL, ",");
  5011. }
  5012. cJSON_AddStringToObject(data_filed,"tdmcs",nGroupNameList);
  5013. cJSON_AddItemToObject(data_root_array, "data", data_filed);
  5014. }
  5015. //添加汇总
  5016. cJSON_AddItemToObject(root, "data", data_root_array);
  5017. //添加结果
  5018. cJSON_AddStringToObject(root, "msg", "操作成功");
  5019. //转换
  5020. str = cJSON_Print(root);
  5021. //释放资源
  5022. cJSON_Delete(root);
  5023. return str;
  5024. }
  5025. int GetRoleIDByUserName(char* _userName,UserInfo* __UserInfo_t)
  5026. {
  5027. int nRole = -1;
  5028. if (_userName==NULL || __UserInfo_t==NULL)
  5029. {
  5030. return nRole;
  5031. }
  5032. UserInfo *_UserInfoTemp = NULL;
  5033. list_for_each_entry(_UserInfoTemp, &__UserInfo_t->list, list)
  5034. {
  5035. if (_UserInfoTemp == NULL)
  5036. break;
  5037. if (strcmp(_UserInfoTemp->userName, _userName) == 0)
  5038. {
  5039. nRole = _UserInfoTemp->roleID;
  5040. break;
  5041. }
  5042. }
  5043. return nRole;
  5044. }
  5045. int GetRoleLevelByID(int _RoleID,RoleInfo* __RoleInfo_t)
  5046. {
  5047. int nlevel = -1;
  5048. if ( __RoleInfo_t==NULL)
  5049. {
  5050. return nlevel;
  5051. }
  5052. RoleInfo *_RoleInfoTemp = NULL;
  5053. list_for_each_entry(_RoleInfoTemp, &__RoleInfo_t->list, list)
  5054. {
  5055. if (_RoleInfoTemp == NULL)
  5056. break;
  5057. if (_RoleInfoTemp->roleID == _RoleID)
  5058. {
  5059. nlevel = _RoleInfoTemp->roleLevel;
  5060. break;
  5061. }
  5062. }
  5063. return nlevel;
  5064. }
  5065. char* GetRoleNameByID(int _RoleID,RoleInfo* __RoleInfo_t)
  5066. {
  5067. char* nname=NULL;
  5068. if (__RoleInfo_t == NULL)
  5069. {
  5070. return nname;
  5071. }
  5072. RoleInfo *_RoleInfoTemp = NULL;
  5073. list_for_each_entry(_RoleInfoTemp, &__RoleInfo_t->list, list)
  5074. {
  5075. if (_RoleInfoTemp == NULL)
  5076. break;
  5077. if (_RoleInfoTemp->roleID == _RoleID)
  5078. {
  5079. // nname = _RoleInfoTemp->roleName;
  5080. nname = malloc(64);
  5081. if (nname != NULL)
  5082. {
  5083. if (_RoleID == 1)
  5084. {
  5085. strcpy(nname, language_Role_Super_Admin[__globalDeviceManage._globalDevInfo.product.language]);
  5086. }
  5087. else if (_RoleID == 2)
  5088. {
  5089. strcpy(nname, language_Role_Admin[__globalDeviceManage._globalDevInfo.product.language]);
  5090. }
  5091. else if (_RoleID == 3)
  5092. {
  5093. strcpy(nname, language_Role_User[__globalDeviceManage._globalDevInfo.product.language]);
  5094. }
  5095. }
  5096. break;
  5097. }
  5098. }
  5099. return nname;
  5100. }
  5101. int GetRoleIDByName(char* _RoleName,RoleInfo* __RoleInfo_t)
  5102. {
  5103. int nID = -1;
  5104. if ( __RoleInfo_t==NULL)
  5105. {
  5106. return nID;
  5107. }
  5108. RoleInfo *_RoleInfoTemp = NULL;
  5109. list_for_each_entry(_RoleInfoTemp, &__RoleInfo_t->list, list)
  5110. {
  5111. if (_RoleInfoTemp == NULL)
  5112. break;
  5113. if (strcmp(_RoleInfoTemp->roleName, _RoleName) == 0)
  5114. {
  5115. nID = _RoleInfoTemp->roleID;
  5116. break;
  5117. }
  5118. }
  5119. return nID;
  5120. }
  5121. char* service_userQuery_ack_to_json(char* _userName,UserInfo* __UserInfo_t,RoleInfo* __RoleInfo_t,char* _SelName,int pagenum,int pagesize)
  5122. {
  5123. char* str = NULL;
  5124. int nRoleID = GetRoleIDByUserName(_userName,__UserInfo_t);
  5125. int nlevel = GetRoleLevelByID(nRoleID,__RoleInfo_t);
  5126. //根据登录的账号筛选查询的范围
  5127. UserInfo SelUser_list;
  5128. INIT_LIST_HEAD(&SelUser_list.list);
  5129. UserInfo *_UserInfoTemp = NULL;
  5130. list_for_each_entry(_UserInfoTemp, &__UserInfo_t->list, list)
  5131. {
  5132. if (_UserInfoTemp == NULL)
  5133. break;
  5134. int nRoleTemp = GetRoleIDByUserName(_UserInfoTemp->userName,__UserInfo_t);
  5135. int nlevelTemp = GetRoleLevelByID(nRoleTemp,__RoleInfo_t);
  5136. if (nlevelTemp>=nlevel)
  5137. {
  5138. if (_SelName && strcmp(_SelName, "") != 0)
  5139. {
  5140. if (strstr(_UserInfoTemp->userName, _SelName) !=NULL)
  5141. {
  5142. UserInfo *new_user = (UserInfo *)malloc(sizeof(UserInfo));
  5143. memcpy(new_user, _UserInfoTemp, sizeof(UserInfo));
  5144. list_add_tail(&new_user->list, &SelUser_list.list);
  5145. }
  5146. }
  5147. else
  5148. {
  5149. UserInfo *new_user = (UserInfo *)malloc(sizeof(UserInfo));
  5150. memcpy(new_user, _UserInfoTemp, sizeof(UserInfo));
  5151. list_add_tail(&new_user->list, &SelUser_list.list);
  5152. }
  5153. }
  5154. }
  5155. int nTotalUserNum=0;
  5156. int nSelUserNum = 0;
  5157. // 创建 JSON 对象
  5158. cJSON* root = cJSON_CreateObject();
  5159. //创建数据
  5160. char buffer[50];
  5161. cJSON* data_root_array = cJSON_CreateArray();
  5162. UserInfo *_UserInfoTemp1 = NULL;
  5163. list_for_each_entry(_UserInfoTemp1, &SelUser_list.list, list)
  5164. {
  5165. if (_UserInfoTemp1 == NULL)
  5166. break;
  5167. if (nTotalUserNum>=(pagenum-1)*pagesize && nTotalUserNum< pagenum*pagesize)
  5168. {
  5169. // 创建数据
  5170. cJSON *data_filed = cJSON_CreateObject();
  5171. cJSON_AddStringToObject(data_filed, "createTime", _UserInfoTemp1->createTime);
  5172. cJSON_AddNumberToObject(data_filed, "userId", _UserInfoTemp1->userID);
  5173. cJSON_AddStringToObject(data_filed, "userName", _UserInfoTemp1->userName);
  5174. cJSON_AddStringToObject(data_filed, "nickName", _UserInfoTemp1->nickName);
  5175. cJSON_AddStringToObject(data_filed, "delFlag", "1");
  5176. memset(buffer, 0, sizeof(buffer));
  5177. sprintf(buffer, "%d", _UserInfoTemp1->roleID);
  5178. cJSON_AddStringToObject(data_filed, "roleId", buffer);
  5179. char *nroleName = GetRoleNameByID(_UserInfoTemp1->roleID, __RoleInfo_t);
  5180. if (nroleName != NULL)
  5181. {
  5182. cJSON_AddStringToObject(data_filed, "roleName", nroleName);
  5183. free(nroleName);
  5184. }
  5185. else
  5186. cJSON_AddStringToObject(data_filed, "roleName", "");
  5187. cJSON_AddItemToObject(data_root_array, "rows", data_filed);
  5188. nSelUserNum++;
  5189. }
  5190. nTotalUserNum++;
  5191. }
  5192. cJSON_AddNumberToObject(root,"total", nTotalUserNum);
  5193. //添加汇总
  5194. cJSON_AddItemToObject(root, "rows", data_root_array);
  5195. // 添加基本键值对
  5196. cJSON_AddNumberToObject(root, "code", 200);
  5197. //添加结果
  5198. cJSON_AddStringToObject(root, "msg", "操作成功");
  5199. //转换
  5200. str = cJSON_Print(root);
  5201. //释放资源
  5202. cJSON_Delete(root);
  5203. return str;
  5204. }
  5205. char* service_userRole_ack_to_json(char* _userName,UserInfo* __UserInfo_t,RoleInfo* __RoleInfo_t)
  5206. {
  5207. char* str = NULL;
  5208. int nRoleID = GetRoleIDByUserName(_userName,__UserInfo_t);
  5209. int nlevel = GetRoleLevelByID(nRoleID,__RoleInfo_t);
  5210. //根据登录的账号筛选查询的范围
  5211. RoleInfo SelRole_list;
  5212. INIT_LIST_HEAD(&SelRole_list.list);
  5213. RoleInfo *_RoleInfoTemp = NULL;
  5214. list_for_each_entry(_RoleInfoTemp, &__RoleInfo_t->list, list)
  5215. {
  5216. if (_RoleInfoTemp == NULL)
  5217. break;
  5218. if (_RoleInfoTemp->roleLevel >= nlevel)
  5219. {
  5220. RoleInfo *new_Role = (RoleInfo *)malloc(sizeof(RoleInfo));
  5221. memcpy(new_Role,_RoleInfoTemp,sizeof(RoleInfo));
  5222. list_add_tail(&new_Role->list, &SelRole_list.list);
  5223. }
  5224. }
  5225. // 创建 JSON 对象
  5226. cJSON* root = cJSON_CreateObject();
  5227. char buffer[50];
  5228. //创建数据
  5229. cJSON* data_root_array = cJSON_CreateArray();
  5230. RoleInfo *_RoleInfoTemp1 = NULL;
  5231. list_for_each_entry(_RoleInfoTemp1, &SelRole_list.list, list)
  5232. {
  5233. if (_RoleInfoTemp1 == NULL)
  5234. break;
  5235. //创建数据
  5236. cJSON* data_filed = cJSON_CreateObject();
  5237. cJSON_AddStringToObject(data_filed,"createTime",_RoleInfoTemp1->createTime);
  5238. cJSON_AddStringToObject(data_filed, "status", "1");
  5239. memset(buffer, 0, sizeof(buffer));
  5240. sprintf(buffer, "%d",_RoleInfoTemp1->roleID);
  5241. cJSON_AddStringToObject(data_filed, "roleId", buffer);
  5242. if (_RoleInfoTemp1->roleID==1)
  5243. {
  5244. cJSON_AddStringToObject(data_filed,"roleName",language_Role_Super_Admin[__globalDeviceManage._globalDevInfo.product.language]);
  5245. }
  5246. else if (_RoleInfoTemp1->roleID==2)
  5247. {
  5248. cJSON_AddStringToObject(data_filed,"roleName",language_Role_Admin[__globalDeviceManage._globalDevInfo.product.language]);
  5249. }
  5250. else
  5251. {
  5252. cJSON_AddStringToObject(data_filed,"roleName",language_Role_User[__globalDeviceManage._globalDevInfo.product.language]);
  5253. }
  5254. //cJSON_AddStringToObject(data_filed,"roleName",_RoleInfoTemp1->roleName);
  5255. cJSON_AddItemToObject(data_root_array, "roles", data_filed);
  5256. }
  5257. //添加汇总
  5258. cJSON_AddItemToObject(root, "roles", data_root_array);
  5259. // 添加基本键值对
  5260. cJSON_AddNumberToObject(root, "code", 200);
  5261. //添加结果
  5262. cJSON_AddStringToObject(root, "msg", "操作成功");
  5263. //转换
  5264. str = cJSON_Print(root);
  5265. //释放资源
  5266. cJSON_Delete(root);
  5267. return str;
  5268. }