DBServerDlg改转历史前.cpp 199 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328
  1. /****************************************************************/
  2. /* */
  3. /* ApplicationDlg.cpp */
  4. /* */
  5. /* Implementation of the CDBServerDlg class. */
  6. /* This class is a part of the Date Server. */
  7. /* */
  8. /* Programmed by LYFZ van der Meer */
  9. /* Copyright LYFZ Software Solutions 2002 */
  10. /* http://www.LYFZvandermeer.nl */
  11. /* */
  12. /* Last updated: 10 july 2002 */
  13. /* */
  14. /****************************************************************/
  15. //在ApplicationDlg.cpp文件中实现主窗口界面的设计。及其主窗口相应控件的功能和参数的映射。
  16. #include "stdafx.h"
  17. #include "DBServer.h"
  18. #include "theDBServer.h"
  19. #include "DBServerDlg.h"
  20. #include "UserAccountsDlg.h"
  21. #include "WizardPages.h"
  22. #include "AboutDlg.h"
  23. #include <afxpriv.h>
  24. #include <process.h>
  25. #include "Shlwapi.h"
  26. #include "MyLock.h"
  27. #include "mysqldata.h"
  28. //#include "./helper/ffsco.h"
  29. #include <tlhelp32.h>
  30. #include "my32.h"
  31. #include "SoftKey.h"
  32. #include "DogTimeOutDlg.h"
  33. #include "InputAuthDlg.h"
  34. #include <lm.h>
  35. #include "ConnectThread.h"
  36. #pragma comment(lib, "NETAPI32.LIB ")
  37. #ifdef _DEBUG
  38. #define new DEBUG_NEW
  39. #undef THIS_FILE
  40. static char THIS_FILE[] = __FILE__;
  41. #endif
  42. #define LIMITCOUNT 1 //历史数据每次转10个 autorun
  43. extern BOOL g_bConvertHisAll;
  44. extern CDBServer theApp;
  45. extern CtheDBServer theServer;
  46. CString g_bakdate;
  47. #define WM_ICON_NOTIFY WM_USER+12
  48. CDBServerDlg *g_pMainWnd=NULL;
  49. #define IPC_CUSTOM_MSG2 _T("{D4F876E2-w78F-22D5-q98A-Y0B0D07B847C}")
  50. UINT g_wmClose = RegisterWindowMessage(IPC_CUSTOM_MSG2);
  51. BOOL g_bCheckAll=0;
  52. BYTE *g_pSkinData=NULL;
  53. DWORD g_SkinLeng;
  54. BOOL g_bAutoRun=0;
  55. CStringArray g_filedatearray;
  56. extern BOOL EncryptFile2(BYTE *buffer, DWORD leng, PCHAR szPassword);
  57. extern CStringArray g_conniparray;
  58. CArray<CDatabase*,CDatabase*>g_pHistoryDBarray[200];
  59. CDatabase *g_pDB[200];
  60. CConnectThread *g_pThreadPt[200];
  61. int g_nDBCount=0;
  62. /////////////////////////////////////////////////////////////////////////////
  63. // CDBServerDlg dialog
  64. #pragma comment(lib, "Shlwapi.lib")
  65. extern DWORD g_nSendCode;
  66. extern BOOL g_bReturned;
  67. CString GetPathFromNetShareName(CString name)
  68. {
  69. NET_API_STATUS res;
  70. SHARE_INFO_502 * psi = NULL;
  71. WCHAR wszShareName[255];
  72. CString sPathName;
  73. TCHAR szPathName[255];
  74. TCHAR path[255];
  75. memset(path, 0, 255);
  76. //转换成宽字符
  77. MultiByteToWideChar(CP_ACP, 0, name, -1, wszShareName, 255);
  78. res = NetShareGetInfo( NULL,(char *)wszShareName,502,(LPBYTE *)&psi);
  79. if(res == NERR_Success)
  80. {
  81. wsprintf((char*)szPathName, "%S ", psi->shi502_path);
  82. sPathName = szPathName;
  83. sPathName.TrimRight ();
  84. }
  85. else
  86. {
  87. ::WriteLogin ("转换路径失败");
  88. }
  89. //释放缓冲
  90. NetApiBufferFree(psi);
  91. return sPathName;
  92. }
  93. CString GetModifyTime2(CString path)
  94. {
  95. try
  96. {
  97. CFileFind finder;
  98. BOOL bWorking = finder.FindFile(path);
  99. if(bWorking)
  100. {
  101. finder.FindNextFile( );
  102. CTime tm;
  103. finder.GetLastWriteTime(tm);
  104. CString stime;
  105. stime.Format ("%d%02d%02d", tm.GetYear (),tm.GetMonth (),tm.GetDay ());
  106. return stime;
  107. }
  108. return "";
  109. }
  110. catch(...)
  111. {
  112. WriteLogin("出错");
  113. }
  114. /* HANDLE hFile;
  115. WIN32_FIND_DATA wfd;
  116. SYSTEMTIME systime;
  117. FILETIME localtime;
  118. CString stime; //输出时间
  119. memset(&wfd, 0, sizeof(wfd));
  120. if((hFile=FindFirstFile(path, &wfd))==INVALID_HANDLE_VALUE)
  121. return "";
  122. //ok,转换时间
  123. FileTimeToLocalFileTime(&wfd.ftCreationTime,&localtime);
  124. FileTimeToSystemTime(&localtime,&systime);
  125. stime.Format("%4d%02d%02d",
  126. systime.wYear,systime.wMonth,systime.wDay);
  127. return stime;*/
  128. }
  129. DWORD GetLastDirTime(CString dir)
  130. {
  131. try
  132. {
  133. CString path=dir;
  134. path.TrimRight ("\\");
  135. path+="\\";
  136. path+="modifytime";
  137. CStdioFile fp;
  138. if(::PathFileExists (path))
  139. {
  140. fp.Open (path,CFile::modeRead);
  141. fp.ReadString (path);
  142. fp.Close ();
  143. path.TrimLeft ();path.TrimRight ();
  144. path.Replace ("-", "");
  145. return atoi(path);
  146. }
  147. else
  148. {
  149. using namespace helper_coffs;
  150. ffsco o;
  151. o.dirs(1);
  152. o.find(LPCSTR(dir), LPCSTR("*.jpg"));
  153. ffsco::typeT coo;
  154. ffsco::typeT::iterator it;
  155. coo = o.co_file();
  156. CString path;
  157. DWORD maxdate=0;
  158. for (it = coo.begin();
  159. coo.end() != it;
  160. it ++)
  161. {
  162. if(g_pMainWnd->m_bTerminate2)return 99999999;
  163. path=(*it).c_str();
  164. maxdate=max(maxdate, atol(GetModifyTime2(path)));
  165. }
  166. return maxdate;
  167. }
  168. }
  169. catch(...)
  170. {
  171. WriteLogin("出错");
  172. }
  173. }
  174. CString GetModifyTime(CString path)
  175. {
  176. try
  177. {
  178. HANDLE hFile;
  179. WIN32_FIND_DATA wfd;
  180. // SYSTEMTIME systime;
  181. FILETIME localtime;
  182. CString stime; //输出时间
  183. memset(&wfd, 0, sizeof(wfd));
  184. if((hFile=FindFirstFile(path, &wfd))==INVALID_HANDLE_VALUE)
  185. return "";
  186. //ok,转换时间
  187. FileTimeToLocalFileTime(&wfd.ftLastWriteTime,&localtime);
  188. stime.Format ("%16d%16d", localtime.dwHighDateTime , localtime.dwLowDateTime);
  189. /* FileTimeToSystemTime(&localtime,&systime);
  190. stime.Format("%4d-%02d-%02d %02d:%02d:%02d",
  191. systime.wYear,systime.wMonth,systime.wDay,systime.wHour,
  192. systime.wMinute,systime.wSecond);*/
  193. return stime;
  194. }
  195. catch(...)
  196. {
  197. WriteLogin("出错");
  198. }
  199. }
  200. static UINT auIDStatusBar[] =
  201. {
  202. ID_SEPARATOR,
  203. ID_INDICATOR_DATA_RECEIVED,
  204. ID_INDICATOR_DATA_SEND,
  205. ID_INDICATOR_ONLINELED,
  206. ID_INDICATOR_OFFLINELED
  207. };
  208. /********************************************************************/
  209. /* */
  210. /* Function name : CDBServerDlg::CDBServerDlg */
  211. /* Description : Constructor */
  212. /* */
  213. /********************************************************************/
  214. CDBServerDlg::CDBServerDlg(CWnd* pParent /*=NULL*/)
  215. : CDialog(CDBServerDlg::IDD, pParent)
  216. {
  217. //{{AFX_DATA_INIT(CDBServerDlg)
  218. //}}AFX_DATA_INIT
  219. m_hIcon = AfxGetApp()->LoadIcon(IDI_DBServer);
  220. m_bTerminate=false;
  221. m_bRunning=false;
  222. m_hThread = NULL;
  223. m_bTerminate2=false;
  224. m_bRunning2=false;
  225. m_hThread2 = NULL;
  226. hInst=NULL;
  227. CString version = _T ("Version 1.0");
  228. g_bAutoRun=AfxGetApp()->GetProfileInt (version, "brun", 0);
  229. for(int i=0; i<200; i++)
  230. {
  231. g_pDB[i]=NULL;
  232. g_pThreadPt[i]=NULL;
  233. }
  234. }
  235. /********************************************************************/
  236. /* */
  237. /* Function name : CDBServerDlg::~CDBServerDlg */
  238. /* Description : Destructor */
  239. /* */
  240. /********************************************************************/
  241. CDBServerDlg::~CDBServerDlg()
  242. {
  243. for(int i=0; i<200; i++)
  244. {
  245. CDatabase *db=g_pDB[i];
  246. if(db)
  247. {
  248. db->Close ();
  249. delete db;
  250. }
  251. for(int j=0; j<g_pHistoryDBarray[i].GetSize (); j++)
  252. {
  253. CDatabase *db=g_pHistoryDBarray[i].ElementAt (j);
  254. if(db)
  255. {
  256. db->Close ();
  257. delete db;
  258. }
  259. }
  260. g_pHistoryDBarray[i].RemoveAll ();
  261. }
  262. }
  263. /********************************************************************/
  264. /* */
  265. /* Function name : CDBServerDlg::DoDataExchange */
  266. /* Description : Called by the framework to exchange and validate */
  267. /* dialog data. */
  268. /* */
  269. /********************************************************************/
  270. void CDBServerDlg::DoDataExchange(CDataExchange* pDX)
  271. {
  272. CDialog::DoDataExchange(pDX);
  273. //{{AFX_DATA_MAP(CDBServerDlg)
  274. DDX_Control(pDX, IDC_INFOBAR, m_InfobarCtrl);
  275. DDX_Control(pDX, IDC_OUTLOOKBAR, m_OutlookBar);
  276. //}}AFX_DATA_MAP
  277. }
  278. BEGIN_MESSAGE_MAP(CDBServerDlg, CDialog)
  279. //{{AFX_MSG_MAP(CDBServerDlg)
  280. ON_WM_DESTROY()
  281. ON_COMMAND(ID_SERVER_START, OnServerStart)
  282. ON_UPDATE_COMMAND_UI(ID_SERVER_START, OnUpdateServerStart)
  283. ON_COMMAND(ID_SERVER_STOP, OnServerStop)
  284. ON_UPDATE_COMMAND_UI(ID_SERVER_STOP, OnUpdateServerStop)
  285. ON_COMMAND(ID_SERVER_EXIT, OnServerExit)
  286. ON_NOTIFY(NM_CLICK, IDC_OUTLOOKBAR, OnClickOutlookBar)
  287. ON_NOTIFY(LVN_KEYDOWN, IDC_OUTLOOKBAR, OnKeydownOutlookBar)
  288. ON_COMMAND(ID_USER_ACCOUNTS, OnUserAccounts)
  289. ON_WM_CLOSE()
  290. ON_COMMAND(IDC_VIEW_TRACE, OnViewTrace)
  291. ON_COMMAND(IDC_VIEW_ONLINE_USERS, OnViewOnlineUsers)
  292. ON_COMMAND(IDC_VIEW_CONFIGURATION, OnViewConfiguration)
  293. ON_UPDATE_COMMAND_UI(IDC_VIEW_TRACE, OnUpdateViewTrace)
  294. ON_UPDATE_COMMAND_UI(IDC_VIEW_ONLINE_USERS, OnUpdateViewOnlineUsers)
  295. ON_UPDATE_COMMAND_UI(IDC_VIEW_CONFIGURATION, OnUpdateViewConfiguration)
  296. ON_COMMAND(IDC_VIEW_STATISTICS, OnViewStatistics)
  297. ON_UPDATE_COMMAND_UI(IDC_VIEW_STATISTICS, OnUpdateViewStatistics)
  298. ON_COMMAND(IDC_VIEW_SECURITY, OnViewSecurity)
  299. ON_UPDATE_COMMAND_UI(IDC_VIEW_SECURITY, OnUpdateViewSecurity)
  300. ON_COMMAND(ID_ACCOUNT_WIZARD, OnAccountWizard)
  301. ON_WM_TIMER()
  302. ON_COMMAND(IDM_OPEN, OnOpen)
  303. ON_COMMAND(IDM_EXIT, OnExit)
  304. ON_COMMAND(IDM_AUTORUN, OnAutorun)
  305. //}}AFX_MSG_MAP
  306. ON_MESSAGE(WM_ICON_NOTIFY, OnTrayNotification)
  307. ON_REGISTERED_MESSAGE(g_wmClose, OnAbortClose)
  308. END_MESSAGE_MAP()
  309. LRESULT CDBServerDlg::OnAbortClose(WPARAM wParam, LPARAM lParam)
  310. {
  311. if(wParam==1)
  312. {
  313. // OnButton2();
  314. // OnButton1();
  315. }
  316. else if(wParam==2)
  317. {
  318. WriteLogin("连接失败,服务将重启");
  319. OnExit2();
  320. }
  321. else if(wParam==3)//更新分店
  322. {
  323. LoadBranchInfo();
  324. }
  325. return 1;
  326. }
  327. CString g_localip;
  328. void MyGetIPByName(CString &name)
  329. {
  330. CString strIP=name;
  331. name.Empty ();
  332. DWORD dwServerIP=0;
  333. HOSTENT *host = gethostbyname(strIP);
  334. struct in_addr addr;
  335. if (host != NULL)
  336. {
  337. for(int i = 0; host-> h_addr_list[i] != NULL; i ++)
  338. {
  339. memset(&addr, 0, sizeof(addr));
  340. memcpy(&addr.S_un.S_addr, host-> h_addr_list[i], host-> h_length);
  341. dwServerIP = ntohl(addr.S_un.S_addr);
  342. }
  343. BYTE* pIP = (BYTE*)&dwServerIP;
  344. name.Format(_T("%d.%d.%d.%d"), pIP[3], pIP[2], pIP[1], pIP[0]);
  345. }
  346. }
  347. BOOL CDBServerDlg::OnInitDialog()
  348. {
  349. g_pMainWnd=this;
  350. CDialog::OnInitDialog();
  351. char server[50];
  352. DWORD leng=50;
  353. ::GetComputerName (server, &leng);
  354. g_localip=server ;
  355. MyGetIPByName(g_localip);
  356. // setup listview ctrl, so that it looks like the outbar control
  357. SetupOutlookBar();
  358. // Add statusbar to the dialog
  359. CreateStatusbar();
  360. CRect rect;
  361. GetDlgItem(IDC_STATIC1)->GetWindowRect(rect);
  362. ScreenToClient(rect);
  363. rect.right+=4;
  364. GetDlgItem(IDC_STATIC1)->MoveWindow(rect);
  365. // create property pages
  366. m_TracePage.Create(IDD_PROPPAGE_TRACE, this);
  367. m_OnlineUsersPage.Create(IDD_PROPPAGE_ONLINE, this);
  368. m_ConfigurationPage.Create(IDD_PROPPAGE_CONFIGURATION, this);
  369. m_StatisticsPage.Create(IDD_PROPPAGE_STATISTICS, this);
  370. m_SecurityPage.Create(IDD_PROPPAGE_SECURITY, this);
  371. // activate main page
  372. ActivatePage(0);
  373. // Set the icon for this dialog.
  374. SetIcon(m_hIcon, TRUE); // Set big icon
  375. SetIcon(m_hIcon, FALSE); // Set small icon
  376. // get registry values
  377. ENCODE_START
  378. #ifndef _DEBUG
  379. #ifdef TIMEDOG_VERSION
  380. try
  381. {
  382. CheckRegCode();
  383. DWORD id;
  384. TCHAR HKey[20]="ffffffff",LKey[20]="ffffffff";
  385. TCHAR OutTime[50];
  386. TCHAR DevicePath[ 260];
  387. if(FindPort(0,DevicePath)!=0)
  388. exit(1);
  389. //LIBC.LIB,libcp.lib,msvcprt.lib
  390. TCHAR year[10],month[10],day[10],hour[10],minute[10],second[10];
  391. ReadTimeAuthFromEprom(HKey,LKey, OutTime, &id, 30128, HKey, LKey, DevicePath);
  392. CString str=OutTime;
  393. CString temp="年";
  394. int pos=str.Find (temp);
  395. temp=str.Left (pos);
  396. str=str.Right (str.GetLength ()-pos-2);
  397. strcpy(year, temp.GetBuffer (0));temp.ReleaseBuffer ();
  398. temp="月";
  399. pos=str.Find (temp);
  400. temp=str.Left (pos);
  401. str=str.Right (str.GetLength ()-pos-2);
  402. strcpy(month, temp.GetBuffer (0));temp.ReleaseBuffer ();
  403. temp="日";
  404. pos=str.Find (temp);
  405. temp=str.Left (pos);
  406. str=str.Right (str.GetLength ()-pos-2);
  407. strcpy(day, temp.GetBuffer (0));temp.ReleaseBuffer ();
  408. temp="小时";
  409. pos=str.Find (temp);
  410. temp=str.Left (pos);
  411. str=str.Right (str.GetLength ()-pos-4);
  412. strcpy(hour, temp.GetBuffer (0));temp.ReleaseBuffer ();
  413. temp="分钟";
  414. pos=str.Find (temp);
  415. temp=str.Left (pos);
  416. str=str.Right (str.GetLength ()-pos-4);
  417. strcpy(minute, temp.GetBuffer (0));temp.ReleaseBuffer ();
  418. temp="0";
  419. strcpy(second, temp.GetBuffer (0));temp.ReleaseBuffer ();
  420. long time1=ConvertStringToTimerReal(year, month, day, hour, minute, second);
  421. GetRunTimer(year, month, day, hour, minute, second, DevicePath);
  422. long time2=ConvertStringToTimerReal(year, month, day, hour, minute, second);
  423. if( (time1-time2) <0)
  424. {
  425. AfxMessageBox("加密锁已过期, 请与经销商联系!!!");
  426. InputAuthDlg authdlg;
  427. authdlg.m_id=id;
  428. authdlg.m_time1=time1;
  429. authdlg.m_time2=time2;
  430. if(authdlg.DoModal ()!=IDOK)
  431. {
  432. CDialog::OnCancel ();
  433. return false;
  434. }
  435. }
  436. else if((time1-time2) <360000)//10天=10*10*3600=360000 能用天数小于10天.
  437. {
  438. DogTimeOutDlg dlg;
  439. dlg.hour=(time1-time2)/3600;
  440. if(dlg.DoModal ()==IDOK)
  441. {
  442. InputAuthDlg authdlg;
  443. authdlg.m_id=id;
  444. authdlg.m_time1=time1;
  445. authdlg.m_time2=time2;
  446. authdlg.DoModal ();
  447. }
  448. }
  449. BOOL bOK=1;
  450. long d[8];double f[8];
  451. char s0[50]="",s1[50]="",s2[50]="",s3[50]="",s4[50]="",s5[50]="",s6[50]="",s7[50]="";
  452. //运行自定义函数
  453. SoftKey ytSoftKey;
  454. int ret=ytSoftKey.Ini();
  455. ret=ytSoftKey.checktime(&d[0],&d[1],&d[2],&d[3],&d[4],&d[5],&d[6],&d[7],
  456. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  457. s0,s1,s2,s3,s4,s5,s6,s7);
  458. if(ret!=0 && ret!=-43)
  459. {
  460. bOK=0;
  461. }
  462. ////////////////////////写申请码
  463. if(bOK)
  464. {
  465. str=GetRegCode(id, time1, time2);
  466. char path[MAX_PATH];
  467. ::GetSystemDirectory (path, MAX_PATH);
  468. CString sysdir=path;
  469. sysdir+="\\regcode.txt";
  470. CStdioFile fp;
  471. if(fp.Open (sysdir, CFile::modeWrite|CFile::modeCreate))
  472. {
  473. fp.WriteString (str);
  474. fp.Close ();
  475. }
  476. }
  477. /////////////////////////
  478. }
  479. catch(...)
  480. {
  481. }
  482. #endif
  483. #endif
  484. g_curdb=&g_db;
  485. ENCODE_END
  486. OnButton1();
  487. GetFileDate();
  488. LoadDB();
  489. int aaaa=30;
  490. while(aaaa--)AddOneConn();
  491. SetTimer(2, 10, NULL);
  492. SetTimer (1, 2*60*1000, NULL);
  493. SetTimer (4, 1000*60*2, NULL);
  494. SetTimer (7, 1000*60*60*1, NULL);
  495. SetTimer (8, 3000, NULL);
  496. CheckBakState();
  497. hInst = LoadLibrary( "SENSAPI.DLL"); //加载动态库
  498. if(hInst)
  499. {
  500. typedef BOOL (WINAPI *MYFUNC)(LPDWORD);
  501. MYFUNC IsNetworkConnect = NULL;
  502. //取得IsNetworkAlive函数指针
  503. IsNetworkConnect=(MYFUNC)GetProcAddress(hInst, "IsNetworkAlive");
  504. if(IsNetworkConnect)
  505. {
  506. DWORD dwActiveWan=1;
  507. if(IsNetworkConnect(&dwActiveWan))
  508. m_bNetWorkOK=1;
  509. else
  510. m_bNetWorkOK=0;
  511. SetTimer(5, 10000, NULL);
  512. }
  513. else
  514. m_bNetWorkOK=0;
  515. }
  516. else
  517. m_bNetWorkOK=0;
  518. return TRUE;
  519. }
  520. /********************************************************************/
  521. /* */
  522. /* Function name : OnDestroy */
  523. /* Description : Handle WM_DESTROY message */
  524. /* */
  525. /********************************************************************/
  526. void CDBServerDlg::OnDestroy()
  527. {
  528. OnServerStop();
  529. KillTimer(1);
  530. KillTimer(2);
  531. KillTimer(3);
  532. KillTimer(4);
  533. KillTimer(5);
  534. KillTimer(6);
  535. KillTimer(7);
  536. KillTimer(8);
  537. CDialog::OnDestroy();
  538. }
  539. /********************************************************************/
  540. /* */
  541. /* Function name : OnServerStart */
  542. /* Description : Start Date Server -> start listening on port 21 */
  543. /* */
  544. /********************************************************************/
  545. //启动数据服务器,使其在21号端口侦听
  546. void CDBServerDlg::OnServerStart()
  547. {
  548. ServerStart();
  549. }
  550. BOOL CDBServerDlg::ServerStart()
  551. {
  552. if (theServer.Start())
  553. {
  554. m_wndStatusBar.SetPaneText(0, "数据服务已启动", TRUE);
  555. SetOnlineLed(TRUE);
  556. SetOfflineLed(FALSE); WriteLogin("启动成功");
  557. return 1;
  558. }
  559. else
  560. {
  561. WriteLogin("启动失败");
  562. CDialog::OnCancel ();
  563. return 0;
  564. }
  565. }
  566. /********************************************************************/
  567. /* */
  568. /* Function name : OnUpdateServerStart */
  569. /* Description : Update 'Start' status */
  570. /* */
  571. /********************************************************************/
  572. void CDBServerDlg::OnUpdateServerStart(CCmdUI* pCmdUI)
  573. {
  574. pCmdUI->Enable(!theServer.IsActive());
  575. }
  576. /********************************************************************/
  577. /* */
  578. /* Function name : OnServerStop */
  579. /* Description : Stop Date Server */
  580. /* */
  581. /********************************************************************/
  582. //停止服务器
  583. void CDBServerDlg::OnServerStop()
  584. {
  585. theServer.Stop();
  586. m_wndStatusBar.SetPaneText(0, "数据服务已停止", TRUE);
  587. SetOnlineLed(FALSE);
  588. SetOfflineLed(TRUE);
  589. }
  590. /********************************************************************/
  591. /* */
  592. /* Function name : OnUpdateServerStop */
  593. /* Description : Update 'Stop' status */
  594. /* */
  595. /********************************************************************/
  596. void CDBServerDlg::OnUpdateServerStop(CCmdUI* pCmdUI)
  597. {
  598. pCmdUI->Enable(theServer.IsActive());
  599. }
  600. /********************************************************************/
  601. /* */
  602. /* Function name : OnServerExit */
  603. /* Description : Let's get out of here... */
  604. /* */
  605. /********************************************************************/
  606. void CDBServerDlg::OnServerExit()
  607. {
  608. OnCancel();
  609. }
  610. /********************************************************************/
  611. /* */
  612. /* Function name : CDBServerDlg::SetupOutlookBar */
  613. /* Description : Initialize listview, change color/iconspacing to */
  614. /* make it look a little bit like the outlook bar. */
  615. /* */
  616. /********************************************************************/
  617. void CDBServerDlg::SetupOutlookBar()
  618. {
  619. // create Imagelist
  620. m_ImageList.Create(32, 32, ILC_COLOR16|ILC_MASK,1, 4);
  621. HICON hIcon = ::LoadIcon (AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_LOG));
  622. m_ImageList.Add(hIcon);
  623. hIcon = ::LoadIcon (AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ONLINE_USERS));
  624. m_ImageList.Add(hIcon);
  625. hIcon = ::LoadIcon (AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_CONFIGURATION));
  626. m_ImageList.Add(hIcon);
  627. hIcon = ::LoadIcon (AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_SECURITY));
  628. m_ImageList.Add(hIcon);
  629. hIcon = ::LoadIcon (AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_STATISTICS));
  630. m_ImageList.Add(hIcon);
  631. m_OutlookBar.SetImageList(&m_ImageList, LVSIL_NORMAL);
  632. CRect rc;
  633. m_OutlookBar.GetClientRect(rc);
  634. // set new icon spacing
  635. m_OutlookBar.SetIconSpacing(rc.Width(), 64);
  636. // change colors
  637. m_OutlookBar.SetTextColor(RGB(255,255,255));
  638. m_OutlookBar.SetTextBkColor(RGB(128,128,128));
  639. m_OutlookBar.SetBkColor(RGB(128,128,128));
  640. // insert items
  641. m_OutlookBar.InsertColumn(0, "OutlookBar");
  642. m_OutlookBar.InsertItem(0, "服务器日志", 0);
  643. m_OutlookBar.InsertItem(1, "在线用户", 1);
  644. m_OutlookBar.InsertItem(2, "关于", 2);
  645. m_OutlookBar.InsertItem(3, "功能区", 3);
  646. /* m_OutlookBar.InsertItem(4, "Security", 4);*/
  647. // m_OutlookBar.SetExtendedStyle(LVS_EX_TRACKSELECT);
  648. }
  649. /********************************************************************/
  650. /* */
  651. /* Function name : CDBServerDlg::MoveChilds */
  652. /* Description : Move child windows into place holder area. */
  653. /* */
  654. /********************************************************************/
  655. void CDBServerDlg::MoveChilds()
  656. {
  657. // position property pages
  658. CRect rcDlgs;
  659. // get dialog area rect
  660. GetDlgItem(IDC_DIALOG_AREA)->GetWindowRect(rcDlgs);
  661. ScreenToClient(rcDlgs);
  662. m_ConfigurationPage.MoveWindow(rcDlgs);
  663. m_TracePage.MoveWindow(rcDlgs);
  664. m_OnlineUsersPage.MoveWindow(rcDlgs);
  665. m_StatisticsPage.MoveWindow(rcDlgs);
  666. m_SecurityPage.MoveWindow(rcDlgs);
  667. }
  668. /********************************************************************/
  669. /* */
  670. /* Function name : CDBServerDlg::ActivatePage */
  671. /* Description : Called when an icon on the outlookbar is pressed.*/
  672. /* */
  673. /********************************************************************/
  674. void CDBServerDlg::ActivatePage(int nIndex)
  675. {
  676. switch(nIndex)
  677. {
  678. case 0:
  679. m_OnlineUsersPage.ShowWindow(SW_HIDE);
  680. m_ConfigurationPage.ShowWindow(SW_HIDE);
  681. m_StatisticsPage.ShowWindow(SW_HIDE);
  682. m_SecurityPage.ShowWindow(SW_HIDE);
  683. m_TracePage.ShowWindow(SW_SHOW);
  684. m_InfobarCtrl.SetText("服务器日志");
  685. break;
  686. case 1:
  687. m_TracePage.ShowWindow(SW_HIDE);
  688. m_ConfigurationPage.ShowWindow(SW_HIDE);
  689. m_StatisticsPage.ShowWindow(SW_HIDE);
  690. m_SecurityPage.ShowWindow(SW_HIDE);
  691. m_OnlineUsersPage.RefreshData();
  692. m_OnlineUsersPage.ShowWindow(SW_SHOW);
  693. m_InfobarCtrl.SetText("在线用户");
  694. break;
  695. case 2:
  696. m_OnlineUsersPage.ShowWindow(SW_HIDE);
  697. m_TracePage.ShowWindow(SW_HIDE);
  698. m_StatisticsPage.ShowWindow(SW_HIDE);
  699. m_SecurityPage.ShowWindow(SW_HIDE);
  700. m_ConfigurationPage.ShowWindow(SW_SHOW);
  701. m_InfobarCtrl.SetText("关于");
  702. break;
  703. case 4:
  704. m_OnlineUsersPage.ShowWindow(SW_HIDE);
  705. m_TracePage.ShowWindow(SW_HIDE);
  706. m_ConfigurationPage.ShowWindow(SW_HIDE);
  707. m_SecurityPage.ShowWindow(SW_HIDE);
  708. m_StatisticsPage.ShowWindow(SW_SHOW);
  709. m_InfobarCtrl.SetText("Statistics");
  710. break;
  711. case 3:
  712. m_OnlineUsersPage.ShowWindow(SW_HIDE);
  713. m_TracePage.ShowWindow(SW_HIDE);
  714. m_ConfigurationPage.ShowWindow(SW_HIDE);
  715. m_SecurityPage.ShowWindow(SW_SHOW);
  716. m_StatisticsPage.ShowWindow(SW_HIDE);
  717. m_InfobarCtrl.SetText("功能区");
  718. break;
  719. default:
  720. break;
  721. }
  722. MoveChilds();
  723. }
  724. /********************************************************************/
  725. /* */
  726. /* Function name : CDBServerDlg::OnClickOutlookBar */
  727. /* Description : User clicked on our listview -> activate page. */
  728. /* */
  729. /********************************************************************/
  730. void CDBServerDlg::OnClickOutlookBar(NMHDR* pNMHDR, LRESULT* pResult)
  731. {
  732. // get index of selected item
  733. int nIndex = m_OutlookBar.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
  734. if(nIndex == -1)
  735. return;
  736. ActivatePage(nIndex);
  737. *pResult = 0;
  738. }
  739. /********************************************************************/
  740. /* */
  741. /* Function name : CDBServerDlg::OnKeydownOutlookBar */
  742. /* Description : User pressed a key -> activate page. */
  743. /* */
  744. /********************************************************************/
  745. void CDBServerDlg::OnKeydownOutlookBar(NMHDR* pNMHDR, LRESULT* pResult)
  746. {
  747. LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
  748. // get index of selected item
  749. int nIndex = m_OutlookBar.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
  750. if(nIndex == -1)
  751. return;
  752. if (pLVKeyDow->wVKey == VK_DOWN)
  753. {
  754. if (m_OutlookBar.GetItemCount()-1 > nIndex)
  755. {
  756. ActivatePage(nIndex+1);
  757. }
  758. }
  759. else
  760. if (pLVKeyDow->wVKey == VK_UP)
  761. {
  762. if (nIndex > 0)
  763. {
  764. ActivatePage(nIndex-1);
  765. }
  766. }
  767. else
  768. if (pLVKeyDow->wVKey == VK_NEXT)
  769. {
  770. ActivatePage(m_OutlookBar.GetItemCount()-1);
  771. }
  772. else
  773. if (pLVKeyDow->wVKey == VK_PRIOR)
  774. {
  775. ActivatePage(0);
  776. }
  777. *pResult = 0;
  778. }
  779. /********************************************************************/
  780. /* */
  781. /* Function name : CreateStatusbar */
  782. /* Description : This function creates a statusbar on a dialogbox.*/
  783. /* */
  784. /********************************************************************/
  785. BOOL CDBServerDlg::CreateStatusbar()
  786. {
  787. // Create the Toolbar and attach the resource
  788. if(!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
  789. {
  790. TRACE0("Failed to Create Dialog Toolbar\n");
  791. return FALSE;
  792. }
  793. m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY);
  794. // Make it flat.
  795. m_wndToolBar.ModifyStyle(0, m_wndToolBar.GetStyle()|TBSTYLE_FLAT);
  796. // Create status bar at the bottom of the dialog window
  797. if (m_wndStatusBar.Create(this))
  798. {
  799. m_wndStatusBar.SetIndicators(auIDStatusBar, sizeof(auIDStatusBar)/sizeof(UINT));
  800. m_wndStatusBar.SetPaneText(0, "Date Server is offline", TRUE);
  801. // Make a sunken or recessed border around the first pane
  802. m_wndStatusBar.SetPaneInfo(0, m_wndStatusBar.GetItemID(0), SBPS_STRETCH, NULL );
  803. SetOnlineLed(FALSE);
  804. SetOfflineLed(FALSE);
  805. m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_INDICATOR_ONLINELED),ID_INDICATOR_ONLINELED, SBPS_NOBORDERS, 14);
  806. // m_wndStatusBar.GetStatusBarCtrl().SetTipText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_ONLINELED), "This status light is green when the server is online");
  807. m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_INDICATOR_OFFLINELED),ID_INDICATOR_OFFLINELED, SBPS_NOBORDERS, 14);
  808. // m_wndStatusBar.GetStatusBarCtrl().SetTipText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_OFFLINELED), "This status light is green when the server is online");
  809. }
  810. // We need to resize the dialog to make room for control bars.
  811. // First, figure out how big the control bars are.
  812. CRect rcClientStart;
  813. CRect rcClientNow;
  814. GetClientRect(rcClientStart);
  815. RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, reposQuery, rcClientNow);
  816. // Now move all the controls so they are in the same relative
  817. // position within the remaining client area as they would be
  818. // with no control bars.
  819. CPoint ptOffset(rcClientNow.left - rcClientStart.left, rcClientNow.top - rcClientStart.top);
  820. CRect rcChild;
  821. CWnd* pwndChild = GetWindow(GW_CHILD);
  822. while (pwndChild)
  823. {
  824. pwndChild->GetWindowRect(rcChild);
  825. ScreenToClient(rcChild);
  826. rcChild.OffsetRect(ptOffset);
  827. pwndChild->MoveWindow(rcChild, FALSE);
  828. pwndChild = pwndChild->GetNextWindow();
  829. }
  830. // Adjust the dialog window dimensions
  831. CRect rcWindow;
  832. GetWindowRect(rcWindow);
  833. rcWindow.right += rcClientStart.Width() - rcClientNow.Width();
  834. rcWindow.bottom += rcClientStart.Height() - rcClientNow.Height();
  835. MoveWindow(rcWindow, FALSE);
  836. // And position the control bars
  837. RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
  838. return TRUE;
  839. }
  840. /********************************************************************/
  841. /* */
  842. /* Function name : OnUserAccounts */
  843. /* Description : Show user accounts. */
  844. /* */
  845. /********************************************************************/
  846. void CDBServerDlg::OnUserAccounts()
  847. {
  848. CUserAccountsDlg dlg;
  849. theServer.m_UserManager.GetUserList(dlg.m_UserArray);
  850. if (dlg.DoModal() == IDOK)
  851. {
  852. theServer.m_UserManager.UpdateUserList(dlg.m_UserArray);
  853. }
  854. }
  855. /********************************************************************/
  856. /* */
  857. /* Function name : OnFTPUserConnected */
  858. /* Description : A user has connected to our server. */
  859. /* */
  860. /********************************************************************/
  861. void CDBServerDlg::OnFTPUserConnected(DWORD nThreadID, LPCTSTR lpszUser, LPCSTR lpszAddress)
  862. {
  863. m_OnlineUsersPage.AddUser(nThreadID, lpszUser, lpszAddress);
  864. }
  865. /********************************************************************/
  866. /* */
  867. /* Function name : OnFTPUserDisconnected */
  868. /* Description : A user has disconnected from our server. */
  869. /* */
  870. /********************************************************************/
  871. void CDBServerDlg::OnFTPUserDisconnected(DWORD nThreadID, LPCTSTR lpszUser)
  872. {
  873. m_OnlineUsersPage.RemoveUser(nThreadID);
  874. }
  875. /********************************************************************/
  876. /* */
  877. /* Function name : OnFTPStatusChange */
  878. /* Description : FTP Status changed. */
  879. /* */
  880. /********************************************************************/
  881. void CDBServerDlg::OnFTPStatusChange(int nType, LPCTSTR lpszText)
  882. {
  883. m_TracePage.AddTraceLine(nType, lpszText);
  884. switch(nType)
  885. {
  886. case 3:
  887. theApp.m_LogFile << error_lvl << date << time << lpszText << endl;
  888. break;
  889. default:
  890. theApp.m_LogFile << trace_lvl << date << time << lpszText << endl;
  891. break;
  892. }
  893. }
  894. /********************************************************************/
  895. /* */
  896. /* Function name : OnFTPReceivedBytesChange */
  897. /* Description : Number of received bytes has changed. */
  898. /* */
  899. /********************************************************************/
  900. void CDBServerDlg::OnFTPReceivedBytesChange(int nBytes)
  901. {
  902. m_StatisticsPage.SetValue(6, FormatSize(nBytes, 0));
  903. CString strStatus;
  904. strStatus.Format("%s received", FormatSize(nBytes, 0));
  905. m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_DATA_RECEIVED), strStatus, TRUE);
  906. CClientDC dc(this);
  907. CSize size = dc.GetTextExtent(strStatus);
  908. m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_INDICATOR_DATA_RECEIVED), ID_INDICATOR_DATA_RECEIVED, SBPS_NORMAL, size.cx);
  909. }
  910. /********************************************************************/
  911. /* */
  912. /* Function name : OnFTPSentBytesChange */
  913. /* Description : Number of sent bytes has changed. */
  914. /* */
  915. /********************************************************************/
  916. void CDBServerDlg::OnFTPSentBytesChange(int nBytes)
  917. {
  918. m_StatisticsPage.SetValue(7, FormatSize(nBytes, 0));
  919. CString strStatus;
  920. strStatus.Format("%s sent", FormatSize(nBytes, 0));
  921. m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_DATA_SEND), strStatus, TRUE);
  922. CClientDC dc(this);
  923. CSize size = dc.GetTextExtent(strStatus);
  924. m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_INDICATOR_DATA_SEND), ID_INDICATOR_DATA_SEND, SBPS_NORMAL, size.cx);
  925. }
  926. /********************************************************************/
  927. /* */
  928. /* Function name : OnViewTrace */
  929. /* Description : Handle menu selection. */
  930. /* */
  931. /********************************************************************/
  932. void CDBServerDlg::OnViewTrace()
  933. {
  934. ActivatePage(0);
  935. }
  936. /********************************************************************/
  937. /* */
  938. /* Function name : OnViewOnlineUsers */
  939. /* Description : Handle menu selection. */
  940. /* */
  941. /********************************************************************/
  942. void CDBServerDlg::OnViewOnlineUsers()
  943. {
  944. ActivatePage(1);
  945. }
  946. /********************************************************************/
  947. /* */
  948. /* Function name : OnViewConfiguration */
  949. /* Description : Handle menu selection. */
  950. /* */
  951. /********************************************************************/
  952. void CDBServerDlg::OnViewConfiguration()
  953. {
  954. ActivatePage(2);
  955. }
  956. /********************************************************************/
  957. /* */
  958. /* Function name : OnViewStatistics */
  959. /* Description : Handle menu selection. */
  960. /* */
  961. /********************************************************************/
  962. void CDBServerDlg::OnViewStatistics()
  963. {
  964. ActivatePage(3);
  965. }
  966. /********************************************************************/
  967. /* */
  968. /* Function name : OnViewSecurity */
  969. /* Description : Handle menu selection. */
  970. /* */
  971. /********************************************************************/
  972. void CDBServerDlg::OnViewSecurity()
  973. {
  974. ActivatePage(4);
  975. }
  976. /********************************************************************/
  977. /* */
  978. /* Function name : OnUpdateViewTrace */
  979. /* Description : Update menu state of Trace item. */
  980. /* */
  981. /********************************************************************/
  982. void CDBServerDlg::OnUpdateViewTrace(CCmdUI* pCmdUI)
  983. {
  984. pCmdUI->SetRadio(m_TracePage.IsWindowVisible());
  985. }
  986. /********************************************************************/
  987. /* */
  988. /* Function name : OnUpdateViewOnlineUsers */
  989. /* Description : Update menu state of Online Users item. */
  990. /* */
  991. /********************************************************************/
  992. void CDBServerDlg::OnUpdateViewOnlineUsers(CCmdUI* pCmdUI)
  993. {
  994. pCmdUI->SetRadio(m_OnlineUsersPage.IsWindowVisible());
  995. }
  996. /********************************************************************/
  997. /* */
  998. /* Function name : OnUpdateViewConfiguration */
  999. /* Description : Update menu state of Configuration item. */
  1000. /* */
  1001. /********************************************************************/
  1002. void CDBServerDlg::OnUpdateViewConfiguration(CCmdUI* pCmdUI)
  1003. {
  1004. pCmdUI->SetRadio(m_ConfigurationPage.IsWindowVisible());
  1005. }
  1006. /********************************************************************/
  1007. /* */
  1008. /* Function name : OnUpdateViewStatistics */
  1009. /* Description : Update menu state of Statistics item. */
  1010. /* */
  1011. /********************************************************************/
  1012. void CDBServerDlg::OnUpdateViewStatistics(CCmdUI* pCmdUI)
  1013. {
  1014. pCmdUI->SetRadio(m_StatisticsPage.IsWindowVisible());
  1015. }
  1016. /********************************************************************/
  1017. /* */
  1018. /* Function name : OnUpdateViewSecurity */
  1019. /* Description : Update menu state of Security item. */
  1020. /* */
  1021. /********************************************************************/
  1022. void CDBServerDlg::OnUpdateViewSecurity(CCmdUI* pCmdUI)
  1023. {
  1024. pCmdUI->SetRadio(m_SecurityPage.IsWindowVisible());
  1025. }
  1026. /********************************************************************/
  1027. /* */
  1028. /* Function name : SetOnlineLed */
  1029. /* Description : Turn online LED on/off. */
  1030. /* */
  1031. /********************************************************************/
  1032. void CDBServerDlg::SetOnlineLed(BOOL bOnline)
  1033. {
  1034. HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(),
  1035. bOnline ? MAKEINTRESOURCE(IDI_LED_GREEN) : MAKEINTRESOURCE(IDI_LED_OFF),
  1036. IMAGE_ICON, 16, 16, LR_SHARED);
  1037. m_wndStatusBar.GetStatusBarCtrl().SetIcon(m_wndStatusBar.CommandToIndex(ID_INDICATOR_ONLINELED), hIcon);
  1038. m_wndStatusBar.GetStatusBarCtrl().Invalidate();
  1039. m_wndStatusBar.GetStatusBarCtrl().UpdateWindow();
  1040. DestroyIcon(hIcon);
  1041. }
  1042. /********************************************************************/
  1043. /* */
  1044. /* Function name : SetOfflineLed */
  1045. /* Description : Turn offline LED on/off. */
  1046. /* */
  1047. /********************************************************************/
  1048. void CDBServerDlg::SetOfflineLed(BOOL bOffline)
  1049. {
  1050. HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(),
  1051. bOffline ? MAKEINTRESOURCE(IDI_LED_RED) : MAKEINTRESOURCE(IDI_LED_OFF),
  1052. IMAGE_ICON, 16, 16, LR_SHARED);
  1053. m_wndStatusBar.GetStatusBarCtrl().SetIcon(m_wndStatusBar.CommandToIndex(ID_INDICATOR_OFFLINELED), hIcon);
  1054. m_wndStatusBar.GetStatusBarCtrl().Invalidate();
  1055. m_wndStatusBar.GetStatusBarCtrl().UpdateWindow();
  1056. DestroyIcon(hIcon);
  1057. }
  1058. void CDBServerDlg::OnFTPStatisticChange(int nType, int nValue)
  1059. {
  1060. m_StatisticsPage.SetValue(nType, nValue);
  1061. }
  1062. /********************************************************************/
  1063. /* */
  1064. /* Function name : FormatSize */
  1065. /* Description : Format size, the way explorer diplays it */
  1066. /* */
  1067. /********************************************************************/
  1068. char* CDBServerDlg::FormatSize(DWORD dwSizeLow, DWORD dwSizeHigh)
  1069. {
  1070. static char szBuff[100];
  1071. unsigned __int64 nFileSize = ((unsigned __int64)(((DWORD)(dwSizeLow)) |
  1072. ((unsigned __int64)((DWORD)(dwSizeHigh))) << 32));
  1073. unsigned __int64 kb = 0;
  1074. if (nFileSize > 1024)
  1075. {
  1076. kb = nFileSize / 1024;
  1077. if (nFileSize % 1024)
  1078. kb++;
  1079. }
  1080. // make it a string
  1081. _ui64tot(kb, szBuff, 10);
  1082. // add thousand seperators
  1083. int nLength = lstrlen(szBuff);
  1084. if (nLength > 3)
  1085. {
  1086. LPCTSTR ptr = szBuff;
  1087. ptr += (nLength-1);
  1088. char szTemp[100];
  1089. LPTSTR ptrTemp = szTemp;
  1090. for(int i=0; i<nLength; i++)
  1091. {
  1092. if (i && ((i % 3) == 0))
  1093. {
  1094. if (*ptrTemp != ',')
  1095. {
  1096. *ptrTemp = ',';
  1097. ptrTemp = _tcsinc(ptrTemp);
  1098. }
  1099. }
  1100. *ptrTemp = *ptr;
  1101. ptrTemp = _tcsinc(ptrTemp);
  1102. ptr = _tcsdec(szBuff, ptr);
  1103. }
  1104. // terminate string
  1105. *ptrTemp = '\0';
  1106. // reverse string
  1107. _tcsrev(szTemp);
  1108. lstrcpy(szBuff, szTemp);
  1109. }
  1110. // add 'KB' to it
  1111. lstrcat(szBuff, " KB");
  1112. return szBuff;
  1113. }
  1114. /********************************************************************/
  1115. /* */
  1116. /* Function name : OnAccountWizard */
  1117. /* Description : Launch New Account Wizard */
  1118. /* */
  1119. /********************************************************************/
  1120. void CDBServerDlg::OnAccountWizard()
  1121. {
  1122. CBitmap bmpHeader, bmpWatermark;
  1123. VERIFY(bmpHeader.LoadBitmap(IDB_BANNER));
  1124. VERIFY(bmpWatermark.LoadBitmap(IDB_WATERMARK));
  1125. // show windows 2000-like wizard
  1126. CWizardSheet wizSheet("New Account Wizard", this, 0, bmpWatermark, NULL, bmpHeader);
  1127. wizSheet.m_psh.hInstance = ::GetModuleHandle(NULL);
  1128. if (wizSheet.DoModal() == ID_WIZFINISH)
  1129. {
  1130. CArray<CUser, CUser&> m_UserArray;
  1131. theServer.m_UserManager.GetUserList(m_UserArray);
  1132. int nIndex = -1;
  1133. for (int i=0; i<m_UserArray.GetSize(); i++)
  1134. {
  1135. // if it already exists -> update it
  1136. if (m_UserArray[i].m_strName.CompareNoCase(wizSheet.m_Page1.m_strAccountName) == 0)
  1137. {
  1138. nIndex = i;
  1139. break;
  1140. }
  1141. }
  1142. // add new account ?
  1143. if (nIndex == -1)
  1144. {
  1145. CUser user;
  1146. nIndex = m_UserArray.Add(user);
  1147. }
  1148. m_UserArray[nIndex].m_bAccountDisabled = FALSE;
  1149. m_UserArray[nIndex].m_strName = wizSheet.m_Page1.m_strAccountName;
  1150. m_UserArray[nIndex].m_strPassword = wizSheet.m_Page2.m_strPassword;
  1151. // add home directory
  1152. CDirectory directory;
  1153. directory.m_strDir = wizSheet.m_Page3.m_strHomeDirectory;
  1154. directory.m_strAlias = "";
  1155. directory.m_bIsHomeDir = TRUE;
  1156. directory.m_bAllowCreateDirectory = wizSheet.m_Page4.m_bAllowCreateDirectory;
  1157. directory.m_bAllowDelete = wizSheet.m_Page4.m_bAllowDelete;
  1158. directory.m_bAllowDownload = wizSheet.m_Page4.m_bAllowDownload;
  1159. directory.m_bAllowRename = wizSheet.m_Page4.m_bAllowRename;
  1160. directory.m_bAllowUpload = wizSheet.m_Page4.m_bAllowUpload;
  1161. directory.m_strAlias = "";
  1162. m_UserArray[nIndex].m_DirectoryArray.Add(directory);
  1163. // update
  1164. theServer.m_UserManager.UpdateUserList(m_UserArray);
  1165. }
  1166. }
  1167. void CDBServerDlg::OnCancel()
  1168. {
  1169. // TODO: Add extra cleanup here
  1170. }
  1171. void CDBServerDlg::OnOK()
  1172. {
  1173. // TODO: Add extra validation here
  1174. }
  1175. void CDBServerDlg::OnButton1()
  1176. {
  1177. // TODO: Add your control notification handler code here
  1178. try
  1179. {
  1180. theServer.Initialize(this);
  1181. if(ServerStart()==0)return;
  1182. if(g_pSkinData==NULL)InitLia();
  1183. /////////////////////
  1184. CString logdays;
  1185. MyLock lock("dbaccessxiao");
  1186. CRecordset myset(&g_db);
  1187. CString sql="select logdays from version";
  1188. myset.Open (CRecordset::forwardOnly, sql);
  1189. myset.GetFieldValue ("logdays", logdays);
  1190. myset.Close();
  1191. int days=180;
  1192. if(logdays=="1个月")
  1193. days=31;
  1194. else if(logdays=="2个月")
  1195. days=61;
  1196. else if(logdays=="3个月")
  1197. days=92;
  1198. else
  1199. days=183;
  1200. CTime tm=CTime::GetCurrentTime ();
  1201. CTimeSpan dt(days, 0, 0, 0);
  1202. tm-=dt;
  1203. CString date=tm.Format ("%Y-%m-%d");
  1204. sql="delete from [log] where [date]<'"+date+"'";
  1205. g_db.ExecuteSQL (sql);
  1206. ///////////////////
  1207. tm=CTime::GetCurrentTime ();
  1208. CTimeSpan dt2(183, 0, 0, 0);
  1209. tm-=dt2;
  1210. date=tm.Format ("%Y%m%d%H%M%S");
  1211. sql="delete from sendreg where [status]='OK' and [timestamp]<'"+date+"'";
  1212. g_db.ExecuteSQL (sql);
  1213. //////////////////////////////////
  1214. sql="select version from version";
  1215. myset.Open (CRecordset::forwardOnly, sql);
  1216. myset.GetFieldValue ("version", sql);
  1217. myset.Close();
  1218. m_ConfigurationPage.m_versionno ="00"+sql;
  1219. m_ConfigurationPage.UpdateData (0);
  1220. /////////////////////
  1221. }
  1222. catch(...)
  1223. {
  1224. WriteLogin("出错1");
  1225. }
  1226. }
  1227. void CDBServerDlg::OnClose()
  1228. {
  1229. // TODO: Add your message handler code here and/or call default
  1230. m_TrayIcon.Create(this,WM_ICON_NOTIFY,"影楼管理系统服务器" ,m_hIcon,IDR_MENUtray); //构造
  1231. ShowWindow(SW_HIDE); //隐藏窗口
  1232. }
  1233. LRESULT CDBServerDlg::OnTrayNotification(WPARAM wParam,LPARAM lParam)
  1234. {
  1235. return m_TrayIcon.OnTrayNotification(wParam,lParam);
  1236. }
  1237. void CDBServerDlg::OnOpen()
  1238. {
  1239. // TODO: Add your command handler code here
  1240. ShowWindow(SW_SHOW);
  1241. }
  1242. DWORD FindAppProcessID(CString path)
  1243. {
  1244. try
  1245. {
  1246. HANDLE handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  1247. PROCESSENTRY32 Info;
  1248. Info.dwSize = sizeof(PROCESSENTRY32);
  1249. path.MakeLower ();
  1250. if(::Process32First(handle,&Info))
  1251. {
  1252. do
  1253. {
  1254. CString ss=Info.szExeFile;
  1255. ss.MakeLower ();
  1256. if(ss==path)
  1257. {
  1258. ::CloseHandle(handle);
  1259. return Info.th32ProcessID;
  1260. }
  1261. }
  1262. while(::Process32Next(handle,&Info));
  1263. ::CloseHandle(handle);
  1264. }
  1265. return -1;
  1266. }
  1267. catch(...)
  1268. {
  1269. }
  1270. }
  1271. void CDBServerDlg::OnExit2()
  1272. {
  1273. try
  1274. {
  1275. // TODO: Add your command handler code here
  1276. TerminateThread();
  1277. TerminateThread2();
  1278. m_TrayIcon.RemoveIcon();
  1279. if(g_pSkinData)delete []g_pSkinData;g_pSkinData=NULL;
  1280. g_db.Close ();
  1281. for(int i=0;i<dbarray.GetSize (); i++)
  1282. {
  1283. dbarray.ElementAt (i)->Close ();
  1284. delete dbarray.ElementAt (i);
  1285. }
  1286. ReleaseBranchDB();
  1287. }
  1288. catch(...)
  1289. {
  1290. WriteLogin("出错在函数OnExit2中");
  1291. }
  1292. CDialog::OnCancel ();
  1293. }
  1294. void CDBServerDlg::OnExit()
  1295. {
  1296. try
  1297. {
  1298. // TODO: Add your command handler code here
  1299. TerminateThread();
  1300. TerminateThread2();
  1301. DWORD id=FindAppProcessID("AutoRun.exe");
  1302. if(id!=-1)
  1303. {
  1304. HANDLE ProcessHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id);
  1305. if(ProcessHandle)TerminateProcess(ProcessHandle,0);
  1306. }
  1307. m_TrayIcon.RemoveIcon();
  1308. if(g_pSkinData)delete []g_pSkinData;g_pSkinData=NULL;
  1309. g_db.Close ();
  1310. for(int i=0;i<dbarray.GetSize (); i++)
  1311. {
  1312. dbarray.ElementAt (i)->Close ();
  1313. delete dbarray.ElementAt (i);
  1314. }
  1315. ReleaseBranchDB();
  1316. }
  1317. catch(...)
  1318. {
  1319. WriteLogin("出错在函数OnExit中");
  1320. }
  1321. CDialog::OnCancel ();
  1322. }
  1323. void CDBServerDlg::OnTimer(UINT nIDEvent)
  1324. {
  1325. // TODO: Add your message handler code here and/or call default
  1326. try
  1327. {
  1328. if(nIDEvent==1)
  1329. {
  1330. KillTimer(nIDEvent);
  1331. LoadThumbImages();
  1332. }
  1333. else if(nIDEvent==2)
  1334. {
  1335. KillTimer(nIDEvent);
  1336. OnClose();
  1337. try
  1338. {
  1339. CheckHistoryData();
  1340. LoadBranchInfo2();
  1341. }
  1342. catch(...)
  1343. {
  1344. }
  1345. }
  1346. else if(nIDEvent==3)
  1347. {
  1348. }
  1349. else if(nIDEvent==4)
  1350. {
  1351. UpdateDate();
  1352. CheckMemberMsg();
  1353. BakPhoto();
  1354. }
  1355. else if(nIDEvent==5)
  1356. {
  1357. typedef BOOL (WINAPI *MYFUNC)(LPDWORD);
  1358. MYFUNC IsNetworkConnect = NULL;
  1359. //取得IsNetworkAlive函数指针
  1360. IsNetworkConnect=(MYFUNC)GetProcAddress(hInst, "IsNetworkAlive");
  1361. if(IsNetworkConnect)
  1362. {
  1363. DWORD dwActiveWan=1;
  1364. BOOL state;
  1365. if(IsNetworkConnect(&dwActiveWan))
  1366. state=1;
  1367. else
  1368. state=0;
  1369. if(m_bNetWorkOK!=state)
  1370. {
  1371. KillTimer(nIDEvent);
  1372. WriteLogin("网络断开");
  1373. OnExit2();
  1374. }
  1375. }
  1376. }
  1377. else if(nIDEvent==6)
  1378. {
  1379. KillTimer(nIDEvent);
  1380. ShutDown();
  1381. }
  1382. else if(nIDEvent==7)
  1383. {
  1384. CheckBakState();
  1385. GenUPhoneData();
  1386. }
  1387. else if(nIDEvent==8)
  1388. {
  1389. CheckConnCount();
  1390. }
  1391. }
  1392. catch(...)
  1393. {
  1394. WriteLogin("出错在函数Timer中");
  1395. }
  1396. }
  1397. void LoadImageFromBuf(Image **img, BYTE *pData, DWORD leng)
  1398. {
  1399. try
  1400. {
  1401. if(pData==NULL)return;
  1402. if(*img)delete *img;
  1403. *img=NULL;
  1404. // Allocate global memory on which to create stream
  1405. HGLOBAL m_hMem = GlobalAlloc(GMEM_MOVEABLE, leng);
  1406. if(m_hMem==NULL)return;
  1407. BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
  1408. memcpy(pmem,pData,leng);
  1409. IStream* pstm;
  1410. CreateStreamOnHGlobal(m_hMem,TRUE,&pstm);
  1411. // load from stream
  1412. *img=Gdiplus::Image::FromStream(pstm);
  1413. // free/release stuff
  1414. GlobalUnlock(m_hMem);
  1415. pstm->Release();
  1416. }
  1417. catch(...)
  1418. {
  1419. }
  1420. }
  1421. void LoadImageFromBuf(Image **img, CString path)
  1422. {
  1423. try
  1424. {
  1425. CFile fp;
  1426. if(fp.Open (path, CFile::modeRead))
  1427. {
  1428. DWORD leng=fp.GetLength ();
  1429. BYTE *pData=new BYTE[leng];
  1430. fp.Read (pData, leng);
  1431. fp.Close ();
  1432. LoadImageFromBuf(img, pData, leng);
  1433. delete []pData;
  1434. }
  1435. }
  1436. catch(...)
  1437. {
  1438. }
  1439. }
  1440. void LoadImageFromRes(Image **img, LPCTSTR lpszResourceName, LPCTSTR ResourceType)
  1441. {
  1442. try
  1443. {
  1444. HGLOBAL hGlobal = NULL;
  1445. HRSRC hSource = NULL;
  1446. LPVOID lpVoid = NULL;
  1447. int nSize = 0;
  1448. BOOL bResult=FALSE;
  1449. hSource = FindResource(NULL, lpszResourceName, ResourceType);
  1450. if(hSource == NULL)return;
  1451. hGlobal = LoadResource(NULL, hSource);
  1452. if(hGlobal == NULL)return;
  1453. lpVoid = LockResource(hGlobal);
  1454. if(lpVoid == NULL)return;
  1455. nSize = (UINT)SizeofResource(NULL, hSource);
  1456. LoadImageFromBuf(img, (BYTE*)hGlobal, nSize);
  1457. UnlockResource(hGlobal); // 16Bit Windows Needs This
  1458. FreeResource(hGlobal); // 16Bit Windows Needs This (32Bit - Automatic Release)
  1459. }
  1460. catch(...)
  1461. {
  1462. }
  1463. }
  1464. extern void RectFitDes(int width, int height, CRect &rc);
  1465. extern void SaveImageToFile(Image *img, CString path);
  1466. void GenSPhoto(CString dir)
  1467. {
  1468. using namespace helper_coffs;
  1469. ffsco o;
  1470. o.dirs(1);
  1471. o.find(LPCSTR(dir), LPCSTR("*.jpg"));
  1472. ffsco::typeT coo;
  1473. ffsco::typeT::iterator it;
  1474. coo = o.co_file();
  1475. CString path,temp,spath;
  1476. for (it = coo.begin();
  1477. coo.end() != it;
  1478. it ++)
  1479. {
  1480. try
  1481. {
  1482. if(g_pMainWnd->m_bTerminate)return;
  1483. path=(*it).c_str();
  1484. spath=path.Left (path.ReverseFind ('\\')+1);
  1485. spath+="s";
  1486. temp=path.Right (path.GetLength ()-path.ReverseFind ('\\')-1);
  1487. if(temp.GetAt (0)=='s')continue;
  1488. spath+=path.Right (path.GetLength ()-path.ReverseFind ('\\')-1);
  1489. if(!CheckFileExist (spath))
  1490. {
  1491. Image *pImg=NULL;
  1492. ::LoadImageFromBuf(&pImg, path);
  1493. if(pImg->GetWidth()==0)continue;
  1494. CRect rc(0,0,100,90);
  1495. RectFitDes(pImg->GetWidth(), pImg->GetHeight(), rc);
  1496. Image *simg=pImg->GetThumbnailImage(rc.Width (), rc.Height (), NULL, NULL);
  1497. Graphics graphic(simg);//防止GetThumbnailImage影响质量
  1498. graphic.Clear(Color(255,255,255,255));
  1499. graphic.DrawImage(pImg, 0,0,simg->GetWidth(), simg->GetHeight() );
  1500. ///////////////////////////////
  1501. UINT totalBufferSize;
  1502. UINT numProperties;
  1503. pImg->GetPropertySize(&totalBufferSize, &numProperties);
  1504. // Allocate the buffer that will receive the property items.
  1505. PropertyItem* pAllItems = (PropertyItem*)malloc(totalBufferSize);
  1506. // Fill the buffer.
  1507. pImg->GetAllPropertyItems(totalBufferSize, numProperties, pAllItems);
  1508. // Print the id data member of each property item.
  1509. for(UINT j = 0; j < numProperties; ++j)
  1510. {
  1511. if(PropertyTagOrientation==pAllItems[j].id)
  1512. {
  1513. short* ptrLong = (short*)(pAllItems[j].value);
  1514. int ret=(int)*ptrLong;
  1515. if(ret==8)
  1516. simg->RotateFlip( Rotate270FlipNone );
  1517. else if(ret==6)
  1518. simg->RotateFlip( Rotate90FlipNone );
  1519. break;
  1520. }
  1521. }
  1522. free(pAllItems);
  1523. ///////////////////////////////
  1524. ::SaveImageToFile (simg, spath);
  1525. delete simg;
  1526. delete pImg;
  1527. }
  1528. }
  1529. catch(...)
  1530. {
  1531. WriteLogin("出错在函数GenSPhoto中");
  1532. }
  1533. }
  1534. try
  1535. {
  1536. int oldsize=coo.size ();
  1537. {
  1538. ffsco o;
  1539. o.dirs(1);
  1540. o.find(LPCSTR(dir), LPCSTR("*.jpg"));
  1541. ffsco::typeT coo;
  1542. ffsco::typeT::iterator it;
  1543. coo = o.co_file();
  1544. int newsize=coo.size ();
  1545. if(oldsize==newsize)
  1546. {
  1547. path=dir+"\\ok";
  1548. CFile fp;
  1549. fp.Open (path, CFile::modeCreate|CFile::modeWrite);
  1550. fp.Close ();
  1551. }
  1552. }
  1553. }
  1554. catch(...)
  1555. {
  1556. WriteLogin("出错在函数GenSPhoto2中");
  1557. }
  1558. }
  1559. CString g_bakinfo;
  1560. CString g_bakphoto;
  1561. BOOL BakAllPhoto(CString dir, CString desdir, CString g_path1, CString g_path2, CString g_path3, CString g_path4)
  1562. {
  1563. try
  1564. {
  1565. CString childdir;
  1566. CString srcdir=dir;
  1567. srcdir.MakeLower ();
  1568. if(srcdir.Find (g_path1)!=-1)
  1569. childdir=srcdir.Right (srcdir.GetLength ()-g_path1.GetLength ());
  1570. else if(srcdir.Find (g_path2)!=-1)
  1571. childdir=srcdir.Right (srcdir.GetLength ()-g_path2.GetLength ());
  1572. else if(srcdir.Find (g_path3)!=-1)
  1573. childdir=srcdir.Right (srcdir.GetLength ()-g_path3.GetLength ());
  1574. else if(srcdir.Find (g_path4)!=-1)
  1575. childdir=srcdir.Right (srcdir.GetLength ()-g_path4.GetLength ());
  1576. else
  1577. {
  1578. WriteLogin("备份出错-目录未找到!");
  1579. return 0;
  1580. }
  1581. /* srcdir.TrimLeft ("\\");
  1582. srcdir.Delete (srcdir.Find ('\\'));
  1583. if(srcdir.Find ('\\')==-1)
  1584. childdir="";
  1585. else
  1586. childdir=srcdir.Right (srcdir.GetLength ()-srcdir.Find ('\\'));*/
  1587. childdir.TrimLeft ("\\");
  1588. childdir.TrimRight ("\\");
  1589. while(childdir.Find ('\\')!=-1)
  1590. {
  1591. desdir+="\\";
  1592. desdir+=childdir.Left (childdir.Find ('\\'));
  1593. //if(CheckFolderFileExist (desdir)==0)
  1594. {
  1595. // if(!
  1596. CreateDirectory (desdir, NULL);//)return;
  1597. }
  1598. childdir=childdir.Right (childdir.GetLength ()-childdir.Find ('\\')-1);
  1599. }
  1600. desdir+="\\";
  1601. desdir+=childdir;
  1602. //if(CheckFolderFileExist (desdir)==0)
  1603. {
  1604. // if(!
  1605. CreateDirectory (desdir, NULL);//)return;
  1606. }
  1607. desdir+="\\";
  1608. using namespace helper_coffs;
  1609. ffsco o;
  1610. o.dirs(0);
  1611. o.find(LPCSTR(dir), LPCSTR("*.*"));
  1612. ffsco::typeT coo;
  1613. ffsco::typeT::iterator it;
  1614. coo = o.co_file();
  1615. CString path,temp,despath;
  1616. for (it = coo.begin();
  1617. coo.end() != it;
  1618. it ++)
  1619. {
  1620. try
  1621. {
  1622. if(g_pMainWnd->m_bTerminate2)return 0;
  1623. path=(*it).c_str();
  1624. temp=path.Right (path.GetLength ()-path.ReverseFind ('\\')-1);
  1625. if(temp.GetAt (0)=='s')continue;
  1626. despath=desdir+path.Right (path.GetLength ()-path.ReverseFind ('\\')-1);
  1627. if(CheckFileExist (despath))
  1628. {
  1629. /* HANDLE hFile=CreateFile(path,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
  1630. HANDLE hFile2=CreateFile(despath,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
  1631. FILETIME ftWrite,ftWrite2;
  1632. if(GetFileTime(hFile, NULL, NULL, &ftWrite)==0)
  1633. {
  1634. CloseHandle(hFile);
  1635. CloseHandle(hFile2);
  1636. return;
  1637. }
  1638. if(GetFileTime(hFile2, NULL, NULL, &ftWrite2)==0)
  1639. {
  1640. CloseHandle(hFile);
  1641. CloseHandle(hFile2);
  1642. return;
  1643. }
  1644. CloseHandle(hFile);
  1645. CloseHandle(hFile2);
  1646. if(ftWrite.dwHighDateTime!=ftWrite2.dwHighDateTime || ftWrite.dwLowDateTime!=ftWrite2.dwLowDateTime)
  1647. {*/
  1648. if(::CopyFile (path, despath, 0))
  1649. g_bakphoto="照片备份成功";
  1650. // }
  1651. }
  1652. else
  1653. {
  1654. if(::CopyFile (path, despath, 0))
  1655. g_bakphoto="照片备份成功";
  1656. }
  1657. }
  1658. catch(...)
  1659. {
  1660. }
  1661. }
  1662. }
  1663. catch(...)
  1664. {
  1665. WriteLogin("出错在函数BakAllPhoto中");
  1666. return 0;
  1667. }
  1668. return 1;
  1669. }
  1670. int FindArray(CStringArray *pArray, CString Str)
  1671. {
  1672. for(int i=0; i<pArray->GetSize (); i++)
  1673. {
  1674. if(pArray->ElementAt (i)==Str)
  1675. return i;
  1676. }
  1677. return -1;
  1678. }
  1679. unsigned __stdcall LoadThumbNail(LPVOID lpParam)
  1680. {
  1681. CDBServerDlg *pDlg=(CDBServerDlg*)lpParam;
  1682. try
  1683. {
  1684. CString g_path1;
  1685. CString g_path2;
  1686. CString g_path3;
  1687. CString g_path4;
  1688. char server[50];
  1689. DWORD leng=50;
  1690. ::GetComputerName (server, &leng);
  1691. g_path1=g_path2=g_path3=g_path4=server;
  1692. if(g_path2.IsEmpty ())return 0;
  1693. g_path1="\\\\"+g_path1+"\\客户原片(管理软件)$";
  1694. g_path2="\\\\"+g_path2+"\\修好的片(管理软件)$";
  1695. g_path3="\\\\"+g_path3+"\\设计好的片(管理软件)$";
  1696. g_path4="\\\\"+g_path4+"\\精修好的片(管理软件)$";
  1697. g_path1=GetPathFromNetShareName("客户原片(管理软件)$");
  1698. g_path2=GetPathFromNetShareName("修好的片(管理软件)$");
  1699. g_path3=GetPathFromNetShareName("设计好的片(管理软件)$");
  1700. g_path4=GetPathFromNetShareName("精修好的片(管理软件)$");
  1701. CStringArray dirarray;
  1702. CString path,path2;
  1703. using namespace helper_coffs;
  1704. CString patharray[4]={g_path1,g_path2,g_path3,g_path4};
  1705. for(int i=0; i<4; i++)
  1706. {
  1707. if(pDlg->m_bTerminate)
  1708. {
  1709. break;
  1710. }
  1711. ffsco o;
  1712. o.dirs(1);
  1713. o.find(LPCSTR(patharray[i]), LPCSTR("*.*"));
  1714. ffsco::typeT coo;
  1715. ffsco::typeT::iterator it;
  1716. coo = o.co_dir();
  1717. it = coo.begin();
  1718. it ++;
  1719. for (;
  1720. coo.end() != it;
  1721. it ++)
  1722. {
  1723. if(pDlg->m_bTerminate)
  1724. {
  1725. break;
  1726. }
  1727. path=(*it).c_str();
  1728. path.TrimRight ("\\");
  1729. path2=path;
  1730. path2+="\\ok2";
  1731. path+="\\ok";
  1732. if(CheckFileExist (path2) && path2.Find (".ly.com")==-1)
  1733. {
  1734. ::DeleteFile (path);::DeleteFile (path2);
  1735. }
  1736. if(g_bCheckAll)
  1737. {
  1738. if(FindArray(&dirarray, (*it).c_str())==-1)
  1739. dirarray.Add ((*it).c_str());
  1740. }
  1741. else if(CheckFileExist (path)==0)
  1742. {
  1743. if(FindArray(&dirarray, (*it).c_str())==-1)
  1744. dirarray.Add ((*it).c_str());
  1745. }
  1746. }
  1747. }
  1748. for( i=0; i<dirarray.GetSize (); i++)
  1749. {
  1750. if(pDlg->m_bTerminate)
  1751. {
  1752. break;
  1753. }
  1754. GenSPhoto(dirarray.ElementAt (i));
  1755. }
  1756. }
  1757. catch(...)
  1758. {
  1759. WriteLogin("出错在函数GenThumb中");
  1760. }
  1761. pDlg->m_bRunning=false;
  1762. pDlg->m_bTerminate=false;
  1763. pDlg-> SetTimer (1, 60*1000, NULL);
  1764. _endthreadex( 0 );
  1765. return 0;
  1766. }
  1767. BOOL isInnerIP( DWORD a_ip )
  1768. {
  1769. BOOL bValid = 0;
  1770. if( (a_ip>>24 == 0xa) || (a_ip>>16 == 0xc0a8) || (a_ip>>22 == 0x2b0) )
  1771. {
  1772. bValid = 1;
  1773. }
  1774. return bValid;
  1775. }
  1776. BOOL CompareIP(CString name1, CString name2)
  1777. {
  1778. CStringArray g_serverarray1;
  1779. CStringArray g_serverarray2;
  1780. CString strIP=name1;
  1781. DWORD dwServerIP=0;
  1782. HOSTENT *host = gethostbyname(strIP);
  1783. struct in_addr addr;
  1784. if (host != NULL)
  1785. {
  1786. for(int i = 0; host-> h_addr_list[i] != NULL; i ++)
  1787. {
  1788. memset(&addr, 0, sizeof(addr));
  1789. memcpy(&addr.S_un.S_addr, host-> h_addr_list[i], host-> h_length);
  1790. dwServerIP = ntohl(addr.S_un.S_addr);
  1791. BYTE* pIP = (BYTE*)&dwServerIP;
  1792. strIP.Format(_T("%d.%d.%d.%d"), pIP[3], pIP[2], pIP[1], pIP[0]);
  1793. g_serverarray1.Add (strIP);
  1794. }
  1795. }
  1796. while(g_serverarray1.GetSize ()>1)
  1797. {
  1798. CString name;
  1799. BOOL bFind=0;
  1800. for(int i=0; i<g_serverarray1.GetSize (); i++)
  1801. {
  1802. DWORD dwServerIP=inet_addr(g_serverarray1.ElementAt (i));
  1803. dwServerIP=htonl(dwServerIP);//加了才正确
  1804. if( isInnerIP(dwServerIP)==0 )
  1805. {
  1806. g_serverarray1.RemoveAt (i);
  1807. bFind=1;
  1808. break;
  1809. }
  1810. }
  1811. if(bFind==0)
  1812. {
  1813. break;
  1814. }
  1815. }
  1816. //////////
  1817. {
  1818. CString strIP=name2;
  1819. DWORD dwServerIP=0;
  1820. HOSTENT *host = gethostbyname(strIP);
  1821. struct in_addr addr;
  1822. if (host != NULL)
  1823. {
  1824. for(int i = 0; host-> h_addr_list[i] != NULL; i ++)
  1825. {
  1826. memset(&addr, 0, sizeof(addr));
  1827. memcpy(&addr.S_un.S_addr, host-> h_addr_list[i], host-> h_length);
  1828. dwServerIP = ntohl(addr.S_un.S_addr);
  1829. BYTE* pIP = (BYTE*)&dwServerIP;
  1830. strIP.Format(_T("%d.%d.%d.%d"), pIP[3], pIP[2], pIP[1], pIP[0]);
  1831. g_serverarray2.Add (strIP);
  1832. }
  1833. }
  1834. while(g_serverarray2.GetSize ()>1)
  1835. {
  1836. CString name;
  1837. BOOL bFind=0;
  1838. for(int i=0; i<g_serverarray2.GetSize (); i++)
  1839. {
  1840. DWORD dwServerIP=inet_addr(g_serverarray2.ElementAt (i));
  1841. dwServerIP=htonl(dwServerIP);//加了才正确
  1842. if( isInnerIP(dwServerIP)==0 )
  1843. {
  1844. g_serverarray2.RemoveAt (i);
  1845. bFind=1;
  1846. break;
  1847. }
  1848. }
  1849. if(bFind==0)
  1850. {
  1851. break;
  1852. }
  1853. }
  1854. }
  1855. if(g_serverarray1.GetSize ()==0 || g_serverarray2.GetSize ()==0)return 1;
  1856. for(int i=0; i<g_serverarray1.GetSize (); i++)
  1857. {
  1858. for(int j=0; j<g_serverarray2.GetSize (); j++)
  1859. {
  1860. if(g_serverarray1.ElementAt (i)==g_serverarray2.ElementAt (j))return 0;
  1861. }
  1862. }
  1863. return 1;
  1864. }
  1865. DWORD g_tisks=0;
  1866. unsigned __stdcall LoadThumbNail2(LPVOID lpParam)//备份
  1867. {
  1868. CDBServerDlg *pDlg=(CDBServerDlg*)lpParam;
  1869. int step=1;
  1870. try
  1871. {
  1872. g_tisks=::GetTickCount ();
  1873. WriteLogin("开始备份照片");
  1874. g_curdb=&g_db;
  1875. // CRstPath rsSt;
  1876. CString g_path1;
  1877. CString g_path2;
  1878. CString g_path3;
  1879. CString g_path4;
  1880. g_path1=g_path2=g_path3=g_path4=g_localname;
  1881. CString localname=g_localname;
  1882. g_path1="\\\\"+g_path1+"\\客户原片(管理软件)$";
  1883. g_path2="\\\\"+g_path2+"\\修好的片(管理软件)$";
  1884. g_path3="\\\\"+g_path3+"\\设计好的片(管理软件)$";
  1885. g_path4="\\\\"+g_path4+"\\精修好的片(管理软件)$";
  1886. g_path1=GetPathFromNetShareName("客户原片(管理软件)$");
  1887. g_path2=GetPathFromNetShareName("修好的片(管理软件)$");
  1888. g_path3=GetPathFromNetShareName("设计好的片(管理软件)$");
  1889. g_path4=GetPathFromNetShareName("精修好的片(管理软件)$");
  1890. step=2;
  1891. g_path1.MakeLower ();
  1892. g_path2.MakeLower ();
  1893. g_path3.MakeLower ();
  1894. g_path4.MakeLower ();
  1895. CString m_bak1,m_bak2,m_bak3,m_bak4;
  1896. CString m_bak11,m_bak22,m_bak33,m_bak44;
  1897. CString m_bakserver1,m_bakserver2,m_bakserver3,m_bakserver4;
  1898. {
  1899. MyLock lock("dbaccessxiao");
  1900. CRstversion rsSt;
  1901. rsSt.Open();
  1902. if(!rsSt.IsEOF())
  1903. {
  1904. m_bak1=rsSt.m_bak1;
  1905. m_bak2=rsSt.m_bak2;
  1906. m_bak3=rsSt.m_bak3;
  1907. m_bak4=rsSt.m_bak4;
  1908. m_bakserver1=rsSt.m_bakserver1;
  1909. m_bakserver2=rsSt.m_bakserver2;
  1910. m_bakserver3=rsSt.m_bakserver3;
  1911. m_bakserver4=rsSt.m_bakserver4;
  1912. m_bak11=rsSt.bak11;
  1913. m_bak22=rsSt.bak22;
  1914. m_bak33=rsSt.bak33;
  1915. m_bak44=rsSt.bak44;
  1916. }
  1917. rsSt.Close();
  1918. step=3;
  1919. }
  1920. #ifdef CHILD_VERSION
  1921. if((localname.CompareNoCase (m_bakserver1)==0 || CompareIP(localname, m_bakserver1)==0) && CheckFolderFileExist("\\\\"+m_bakserver1+"\\客户原片备份(儿童管理软件)$"))
  1922. m_bakserver1=GetPathFromNetShareName("客户原片备份(儿童管理软件)$");
  1923. else
  1924. m_bakserver1="\\\\"+m_bakserver1+"\\客户原片备份(儿童管理软件)$";
  1925. if((localname.CompareNoCase (m_bakserver2)==0 || CompareIP(localname, m_bakserver2)==0) && CheckFolderFileExist("\\\\"+m_bakserver1+"\\修好的片备份(儿童管理软件)$"))
  1926. m_bakserver2=GetPathFromNetShareName("修好的片备份(儿童管理软件)$");
  1927. else
  1928. m_bakserver2="\\\\"+m_bakserver2+"\\修好的片备份(儿童管理软件)$";
  1929. if((localname.CompareNoCase (m_bakserver3)==0 || CompareIP(localname, m_bakserver3)==0) && CheckFolderFileExist("\\\\"+m_bakserver1+"\\精修好的片备份(儿童管理软件)$"))
  1930. m_bakserver3=GetPathFromNetShareName("精修好的片备份(儿童管理软件)$");
  1931. else
  1932. m_bakserver3="\\\\"+m_bakserver3+"\\精修好的片备份(儿童管理软件)$";
  1933. if((localname.CompareNoCase (m_bakserver4)==0 || CompareIP(localname, m_bakserver4)==0) && CheckFolderFileExist("\\\\"+m_bakserver1+"\\设计好的片备份(儿童管理软件)$"))
  1934. m_bakserver4=GetPathFromNetShareName("设计好的片备份(儿童管理软件)$");
  1935. else
  1936. m_bakserver4="\\\\"+m_bakserver4+"\\设计好的片备份(儿童管理软件)$";
  1937. #else
  1938. if((localname.CompareNoCase (m_bakserver1)==0 || CompareIP(localname, m_bakserver1)==0) && CheckFolderFileExist("\\\\"+m_bakserver1+"\\客户原片备份(管理软件)$"))
  1939. m_bakserver1=GetPathFromNetShareName("客户原片备份(管理软件)$");
  1940. else
  1941. m_bakserver1="\\\\"+m_bakserver1+"\\客户原片备份(管理软件)$";
  1942. if((localname.CompareNoCase (m_bakserver2)==0 || CompareIP(localname, m_bakserver2)==0) && CheckFolderFileExist("\\\\"+m_bakserver1+"\\修好的片备份(管理软件)$"))
  1943. m_bakserver2=GetPathFromNetShareName("修好的片备份(管理软件)$");
  1944. else
  1945. m_bakserver2="\\\\"+m_bakserver2+"\\修好的片备份(管理软件)$";
  1946. if((localname.CompareNoCase (m_bakserver3)==0 || CompareIP(localname, m_bakserver3)==0) && CheckFolderFileExist("\\\\"+m_bakserver1+"\\精修好的片备份(管理软件)$"))
  1947. m_bakserver3=GetPathFromNetShareName("精修好的片备份(管理软件)$");
  1948. else
  1949. m_bakserver3="\\\\"+m_bakserver3+"\\精修好的片备份(管理软件)$";
  1950. if((localname.CompareNoCase (m_bakserver4)==0 || CompareIP(localname, m_bakserver4)==0) && CheckFolderFileExist("\\\\"+m_bakserver1+"\\设计好的片备份(管理软件)$"))
  1951. m_bakserver4=GetPathFromNetShareName("设计好的片备份(管理软件)$");
  1952. else
  1953. m_bakserver4="\\\\"+m_bakserver4+"\\设计好的片备份(管理软件)$";
  1954. #endif
  1955. step=4;
  1956. CStringArray dirarray;
  1957. CString str,path;
  1958. using namespace helper_coffs;
  1959. BOOL bcheck1=atoi(m_bak1);
  1960. BOOL bcheck2=atoi(m_bak2);
  1961. BOOL bcheck3=atoi(m_bak3);
  1962. BOOL bcheck4=atoi(m_bak4);
  1963. BOOL bcheck11=atoi(m_bak11);
  1964. BOOL bcheck22=atoi(m_bak22);
  1965. BOOL bcheck33=atoi(m_bak33);
  1966. BOOL bcheck44=atoi(m_bak44);
  1967. CString patharray[4]={g_path1,g_path2,g_path4,g_path3};
  1968. BOOL bcheck[4]={bcheck1,bcheck2,bcheck3,bcheck4};
  1969. BOOL bcheckbranch[4]={bcheck11,bcheck22,bcheck33,bcheck44};
  1970. CString patharray2[4]={m_bakserver1,m_bakserver2,m_bakserver3,m_bakserver4};
  1971. CArray<int,int>posarray;
  1972. for(int i=0; i<4; i++)
  1973. {
  1974. if(pDlg->m_bTerminate2)
  1975. {
  1976. break;
  1977. }
  1978. // if(!CheckFolderFileExist (patharray[i]))continue;
  1979. // if(!CheckFolderFileExist (patharray2[i]))continue;
  1980. if(bcheck[i]==0)continue;
  1981. if(!::CheckFolderFileExist (patharray2[i]))continue;
  1982. if(!::CheckFolderFileExist (patharray[i]))continue;
  1983. ffsco o;
  1984. o.dirs(1);
  1985. o.find(LPCSTR(patharray[i]), LPCSTR("*.*"));
  1986. ffsco::typeT coo;
  1987. ffsco::typeT::iterator it;
  1988. coo = o.co_dir();
  1989. it = coo.begin();
  1990. it ++;
  1991. for (;
  1992. coo.end() != it;
  1993. it ++)
  1994. {
  1995. if(pDlg->m_bTerminate2)
  1996. {
  1997. break;
  1998. }
  1999. str=(*it).c_str();
  2000. if(str.Find (".ly.com")!=-1 && bcheckbranch[i]==0)continue;
  2001. if(FindArray(&dirarray, str)==-1)
  2002. {
  2003. dirarray.Add (str);
  2004. posarray.Add (i);
  2005. }
  2006. }
  2007. }
  2008. step=5;
  2009. BOOL bError=0;
  2010. for( i=0; i<dirarray.GetSize (); i++)
  2011. {
  2012. if(pDlg->m_bTerminate2)break;
  2013. CTime tm=CTime::GetCurrentTime ();
  2014. tm-=CTimeSpan(10, 0, 0, 0);
  2015. CString date=tm.Format ("%Y%m%d");
  2016. DWORD dirdate=GetLastDirTime(dirarray.ElementAt (i));
  2017. if(pDlg->m_bTerminate2)break;
  2018. CString ss;
  2019. if(dirdate>atol(date))
  2020. {
  2021. // ss.Format ("%d>%d", dirdate, atol(date));
  2022. // WriteLogin(ss);
  2023. // WriteLogin(dirarray.ElementAt (i));
  2024. step=6;
  2025. if(0==BakAllPhoto(dirarray.ElementAt (i), patharray2[posarray.ElementAt (i)], g_path1, g_path2, g_path3, g_path4))
  2026. bError=1;
  2027. CString path=dirarray.ElementAt (i);
  2028. path.TrimRight ("\\");path+="\\";
  2029. path+="modifytime";
  2030. CStdioFile fp;
  2031. if(!::PathFileExists (path))
  2032. {
  2033. fp.Open (path,CFile::modeCreate|CFile::modeWrite);
  2034. fp.WriteString (CTime::GetCurrentTime ().Format ("%Y-%m-%d"));
  2035. fp.Close ();
  2036. }
  2037. }
  2038. else
  2039. {
  2040. step=7;
  2041. CString path=dirarray.ElementAt (i);
  2042. path.TrimRight ("\\");path+="\\";
  2043. path+="modifytime";
  2044. CStdioFile fp;
  2045. if(!::PathFileExists (path))
  2046. {
  2047. step=8;
  2048. fp.Open (path,CFile::modeCreate|CFile::modeWrite);
  2049. fp.WriteString (CTime::GetCurrentTime ().Format ("%Y-%m-%d"));
  2050. fp.Close ();
  2051. }
  2052. }
  2053. }
  2054. if(bError)
  2055. g_bakphoto="照片备份失败";
  2056. else
  2057. g_bakphoto="照片备份成功";
  2058. step=9;
  2059. }
  2060. catch(...)
  2061. {
  2062. CString ss;
  2063. ss.Format ("出错在函数备份照片中-step:%d", step);
  2064. WriteLogin(ss);
  2065. g_bakphoto="照片备份出错";
  2066. }
  2067. pDlg-> SetTimer (6, 3000, NULL);
  2068. pDlg->m_bRunning2=false;
  2069. pDlg->m_bTerminate2=false;
  2070. _endthreadex( 0 );
  2071. return 0;
  2072. }
  2073. void CDBServerDlg::LoadThumbImages()
  2074. {
  2075. if(m_bRunning)return;
  2076. TerminateThread();
  2077. m_bRunning=true;
  2078. m_hThread = (HANDLE)_beginthreadex(NULL,0, LoadThumbNail,(LPVOID)this,0/* CREATE_SUSPENDED*/,&m_dwThreadID);
  2079. }
  2080. void CDBServerDlg::LoadThumbImages2()
  2081. {
  2082. if(m_bRunning2)return;
  2083. TerminateThread2();
  2084. m_bRunning2=true;
  2085. m_hThread2 = (HANDLE)_beginthreadex(NULL,0, LoadThumbNail2,(LPVOID)this,0/* CREATE_SUSPENDED*/,&m_dwThreadID2);
  2086. }
  2087. BOOL CDBServerDlg::TerminateThread()
  2088. {
  2089. try
  2090. {
  2091. if ( !m_bRunning )
  2092. return TRUE;
  2093. m_bTerminate=true;
  2094. for( ; ; )
  2095. {
  2096. if ( ::WaitForSingleObject(m_hThread, 0) == WAIT_OBJECT_0 )
  2097. break;
  2098. MSG msg;
  2099. while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
  2100. {
  2101. if (!AfxGetApp()->PumpMessage())
  2102. break;
  2103. }
  2104. }
  2105. ::CloseHandle(m_hThread);
  2106. m_bRunning=false;
  2107. return TRUE;
  2108. }
  2109. catch(...)
  2110. {
  2111. WriteLogin("出错在函数TerminateThread中");
  2112. }
  2113. }
  2114. BOOL CDBServerDlg::TerminateThread2()
  2115. {
  2116. try
  2117. {
  2118. if ( !m_bRunning2 )
  2119. return TRUE;
  2120. m_bTerminate2=true;
  2121. for( ; ; )
  2122. {
  2123. if ( ::WaitForSingleObject(m_hThread2, 0) == WAIT_OBJECT_0 )
  2124. break;
  2125. MSG msg;
  2126. while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
  2127. {
  2128. if (!AfxGetApp()->PumpMessage())
  2129. break;
  2130. }
  2131. }
  2132. ::CloseHandle(m_hThread2);
  2133. m_bRunning2=false;
  2134. return TRUE;
  2135. }
  2136. catch(...)
  2137. {
  2138. WriteLogin("出错在函数TerminateThread2中");
  2139. }
  2140. }
  2141. typedef struct tagresdata2
  2142. {
  2143. BOOL bHasBk;
  2144. int nPicCount;
  2145. int nPicCount2;
  2146. DWORD nPicBmpCount[50];
  2147. CRect rect[50];
  2148. }RESDATA2;
  2149. void DeCodePicCount(long &value1, long &value2)
  2150. {
  2151. SoftKey ytSoftKey;
  2152. int ret=ytSoftKey.Ini();
  2153. if (ret!=0 )
  2154. {
  2155. return;
  2156. }
  2157. long d[8];double f[8];
  2158. TCHAR s0[50]=_T(""),s1[50]=_T(""),s2[50]=_T(""),s3[50]=_T(""),s4[50]=_T(""),s5[50]=_T(""),s6[50]=_T(""),s7[50]=_T("");
  2159. //运行自定义函数
  2160. ret=ytSoftKey.decryptpiccount(&value1,&value2,&d[2],&d[3],&d[4],&d[5],&d[6],&d[7],
  2161. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  2162. s0,s1,s2,s3,s4,s5,s6,s7);
  2163. if(ret!=0 && ret!=-43)
  2164. {
  2165. exit(0);
  2166. }
  2167. }
  2168. void DeCodelong1(long &value1, long &value2, long &value3, long &value4, long &value5, long &value6, long &value7, long &value8)
  2169. {
  2170. SoftKey ytSoftKey;
  2171. int ret=ytSoftKey.Ini();
  2172. if (ret!=0 )
  2173. {
  2174. return;
  2175. }
  2176. double f[8];
  2177. TCHAR s0[50]=_T(""),s1[50]=_T(""),s2[50]=_T(""),s3[50]=_T(""),s4[50]=_T(""),s5[50]=_T(""),s6[50]=_T(""),s7[50]=_T("");
  2178. //运行自定义函数
  2179. ret=ytSoftKey.decryptlong1(&value1,&value2,&value3,&value4,&value5,&value6,&value7,&value8,
  2180. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  2181. s0,s1,s2,s3,s4,s5,s6,s7);
  2182. if(ret!=0 && ret!=-43)
  2183. {
  2184. exit(0);
  2185. }
  2186. }
  2187. void DeCodelong2(long &value1, long &value2, long &value3, long &value4, long &value5, long &value6, long &value7, long &value8)
  2188. {
  2189. SoftKey ytSoftKey;
  2190. int ret=ytSoftKey.Ini();
  2191. if (ret!=0 )
  2192. {
  2193. return;
  2194. }
  2195. double f[8];
  2196. TCHAR s0[50]=_T(""),s1[50]=_T(""),s2[50]=_T(""),s3[50]=_T(""),s4[50]=_T(""),s5[50]=_T(""),s6[50]=_T(""),s7[50]=_T("");
  2197. //运行自定义函数
  2198. ret=ytSoftKey.decryptlong2(&value1,&value2,&value3,&value4,&value5,&value6,&value7,&value8,
  2199. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  2200. s0,s1,s2,s3,s4,s5,s6,s7);
  2201. if(ret!=0 && ret!=-43)
  2202. {
  2203. exit(0);
  2204. }
  2205. }
  2206. void DeCodelong3(long &value1, long &value2, long &value3, long &value4, long &value5, long &value6, long &value7, long &value8)
  2207. {
  2208. SoftKey ytSoftKey;
  2209. int ret=ytSoftKey.Ini();
  2210. if (ret!=0 )
  2211. {
  2212. return;
  2213. }
  2214. double f[8];
  2215. TCHAR s0[50]=_T(""),s1[50]=_T(""),s2[50]=_T(""),s3[50]=_T(""),s4[50]=_T(""),s5[50]=_T(""),s6[50]=_T(""),s7[50]=_T("");
  2216. //运行自定义函数
  2217. ret=ytSoftKey.decryptlong3(&value1,&value2,&value3,&value4,&value5,&value6,&value7,&value8,
  2218. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  2219. s0,s1,s2,s3,s4,s5,s6,s7);
  2220. if(ret!=0 && ret!=-43)
  2221. {
  2222. exit(0);
  2223. }
  2224. }
  2225. void DeCodelong4(long &value1, long &value2, long &value3, long &value4, long &value5, long &value6, long &value7, long &value8)
  2226. {
  2227. SoftKey ytSoftKey;
  2228. int ret=ytSoftKey.Ini();
  2229. if (ret!=0 )
  2230. {
  2231. exit(0);
  2232. }
  2233. double f[8];
  2234. TCHAR s0[50]=_T(""),s1[50]=_T(""),s2[50]=_T(""),s3[50]=_T(""),s4[50]=_T(""),s5[50]=_T(""),s6[50]=_T(""),s7[50]=_T("");
  2235. //运行自定义函数
  2236. ret=ytSoftKey.decryptlong4(&value1,&value2,&value3,&value4,&value5,&value6,&value7,&value8,
  2237. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  2238. s0,s1,s2,s3,s4,s5,s6,s7);
  2239. if(ret!=0 && ret!=-43)
  2240. {
  2241. exit(0);
  2242. }
  2243. }
  2244. void CDBServerDlg::InitLia()
  2245. {
  2246. try
  2247. {
  2248. BYTE *g_pData=NULL;DWORD g_nLeng; DWORD count2;
  2249. BYTE code=104;
  2250. CConnectSocket consock;
  2251. consock.m_pConndb =&g_db;
  2252. consock.GetDataFromCode(code, &g_pData, g_nLeng, count2, "");
  2253. if(g_nLeng==0)return ;
  2254. DWORD readbytes=0;
  2255. CArray<DWORD,DWORD>g_lengarray;
  2256. CArray<DWORD,DWORD>g_btnlengarray;
  2257. BYTE *g_pointerarray=NULL;
  2258. DWORD pointleng;
  2259. DWORD leng;
  2260. memcpy(&leng, g_pData+readbytes, sizeof(DWORD) );
  2261. readbytes+=sizeof(DWORD);
  2262. BYTE *pFtData = new BYTE[leng];
  2263. memcpy(pFtData, g_pData+readbytes, leng);
  2264. readbytes+=leng;
  2265. CMemFile memfile;
  2266. memfile.Attach (pFtData, leng);
  2267. CArchive ar(&memfile, CArchive::load);
  2268. g_lengarray.Serialize (ar);
  2269. ar.Close();
  2270. memfile.Detach ();
  2271. memcpy(&leng, g_pData+readbytes, sizeof(DWORD) );
  2272. readbytes+=sizeof(DWORD);
  2273. BYTE *pFtData2 = new BYTE[leng];
  2274. memcpy(pFtData2, g_pData+readbytes, leng);
  2275. readbytes+=leng;
  2276. CMemFile memfile2;
  2277. memfile2.Attach (pFtData2, leng);
  2278. CArchive ar2(&memfile2, CArchive::load);
  2279. g_btnlengarray.Serialize (ar2);
  2280. ar2.Close();
  2281. memfile2.Detach ();
  2282. delete []pFtData;
  2283. delete []pFtData2;
  2284. DWORD count;
  2285. memcpy(&count, g_pData+readbytes, sizeof(DWORD) );
  2286. readbytes+=sizeof(DWORD);
  2287. pointleng=count*sizeof(RESDATA2);
  2288. g_pointerarray=new BYTE[pointleng];
  2289. for(int i=0; i<count; i++)
  2290. {
  2291. memcpy(g_pointerarray+i*sizeof(RESDATA2), g_pData+readbytes, sizeof(RESDATA2));
  2292. readbytes+=sizeof(RESDATA2);
  2293. }
  2294. for( i=0; i<g_lengarray.GetSize (); i+=8)
  2295. {
  2296. DWORD leng1,leng2,leng3,leng4,leng5,leng6,leng7,leng8;
  2297. leng1=g_lengarray.ElementAt (i);
  2298. leng2=g_lengarray.ElementAt (i+1);
  2299. leng3=g_lengarray.ElementAt (i+2);
  2300. leng4=g_lengarray.ElementAt (i+3);
  2301. leng5=g_lengarray.ElementAt (i+4);
  2302. leng6=g_lengarray.ElementAt (i+5);
  2303. leng7=g_lengarray.ElementAt (i+6);
  2304. leng8=g_lengarray.ElementAt (i+7);
  2305. if(i%4==0)
  2306. DeCodelong1( (long&)leng1, (long&)leng2, (long&)leng3, (long&)leng4, (long&)leng5, (long&)leng6, (long&)leng7, (long&)leng8 );
  2307. else if(i%4==1)
  2308. DeCodelong2( (long&)leng1, (long&)leng2, (long&)leng3, (long&)leng4, (long&)leng5, (long&)leng6, (long&)leng7, (long&)leng8 );
  2309. else if(i%4==2)
  2310. DeCodelong3( (long&)leng1, (long&)leng2, (long&)leng3, (long&)leng4, (long&)leng5, (long&)leng6, (long&)leng7, (long&)leng8 );
  2311. else
  2312. DeCodelong4( (long&)leng1, (long&)leng2, (long&)leng3, (long&)leng4, (long&)leng5, (long&)leng6, (long&)leng7, (long&)leng8 );
  2313. g_lengarray.SetAt (i, leng1);
  2314. g_lengarray.SetAt (i+1, leng2);
  2315. g_lengarray.SetAt (i+2, leng3);
  2316. g_lengarray.SetAt (i+3, leng4);
  2317. g_lengarray.SetAt (i+4, leng5);
  2318. g_lengarray.SetAt (i+5, leng6);
  2319. g_lengarray.SetAt (i+6, leng7);
  2320. g_lengarray.SetAt (i+7, leng8);
  2321. }
  2322. delete []g_pData;
  2323. if(g_pSkinData)delete []g_pSkinData;g_pSkinData=NULL;
  2324. DWORD length;
  2325. BYTE *pData;
  2326. DWORD length2;
  2327. BYTE *pData2;
  2328. {
  2329. CMemFile memfile;
  2330. CArchive ar(&memfile, CArchive::store);
  2331. g_lengarray.Serialize (ar);
  2332. ar.Close();
  2333. length=memfile.GetLength ();
  2334. pData = memfile.Detach();
  2335. }
  2336. {
  2337. CMemFile memfile;
  2338. CArchive ar(&memfile, CArchive::store);
  2339. g_btnlengarray.Serialize (ar);
  2340. ar.Close();
  2341. length2=memfile.GetLength ();
  2342. pData2 = memfile.Detach();
  2343. }
  2344. g_SkinLeng=length+length2+pointleng+3*sizeof(DWORD);
  2345. g_pSkinData=new BYTE[g_SkinLeng];
  2346. readbytes=0;
  2347. memcpy(g_pSkinData+readbytes, &length, sizeof(DWORD));
  2348. readbytes+=sizeof(DWORD);
  2349. memcpy(g_pSkinData+readbytes, pData, length);
  2350. readbytes+=length;
  2351. memcpy(g_pSkinData+readbytes, &length2, sizeof(DWORD));
  2352. readbytes+=sizeof(DWORD);
  2353. memcpy(g_pSkinData+readbytes, pData2, length2);
  2354. readbytes+=length2;
  2355. memcpy(g_pSkinData+readbytes, &pointleng, sizeof(DWORD));
  2356. readbytes+=sizeof(DWORD);
  2357. memcpy(g_pSkinData+readbytes, g_pointerarray, pointleng);
  2358. readbytes+=pointleng;
  2359. delete []g_pointerarray;
  2360. }
  2361. catch(...)
  2362. {
  2363. WriteLogin("出错在函数InitLia中");
  2364. }
  2365. }
  2366. void CDBServerDlg::CheckHistoryData()
  2367. {
  2368. try
  2369. {
  2370. if(g_bConvertHisAll)
  2371. {
  2372. DWORD id=FindAppProcessID("AutoRun.exe");
  2373. if(id!=-1)
  2374. {
  2375. HANDLE ProcessHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id);
  2376. if(ProcessHandle)TerminateProcess(ProcessHandle,0);
  2377. }
  2378. ShowWindow(SW_HIDE);
  2379. }
  2380. CString sql;
  2381. g_curdb=&g_db;
  2382. CTime tm=CTime::GetCurrentTime ();
  2383. int lastyear=tm.GetYear ()-1;
  2384. CString strdate,strdate2;
  2385. strdate.Format ("%04d-%02d-%02d", lastyear, 1, 1);
  2386. strdate2.Format ("%04d-%02d-%02d", lastyear, 12, 31);
  2387. CString filter="time1>='"+strdate+"' and time1<='"+strdate2+"' and status3='OK'";
  2388. DWORD ii=0;
  2389. CArray<CStringArray, CStringArray>g_List1array;
  2390. {
  2391. CRecordset myset(g_curdb);
  2392. CString sql="select count(*) as cot from dindan";if(!filter.IsEmpty ())sql+=" where "+filter;
  2393. myset.Open (CRecordset::forwardOnly, sql);
  2394. myset.GetFieldValue ("cot", sql);
  2395. myset.Close();
  2396. int count=atol(sql);
  2397. g_List1array.SetSize(count , 1 );
  2398. CRstDindanForm rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2399. rsSt.Open();
  2400. ii=0;
  2401. while(!rsSt.IsEOF())
  2402. {
  2403. g_List1array.ElementAt (ii).RemoveAll ();
  2404. g_List1array.ElementAt (ii).Add(rsSt.id) ;
  2405. ii++;
  2406. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2407. }
  2408. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2409. }
  2410. CDatabase *pdb2=GetDB(lastyear);
  2411. if(pdb2==NULL)CheckYear(lastyear);
  2412. CDatabase *pdb1=&g_db;
  2413. pdb2=GetDB(lastyear);
  2414. if(pdb2==NULL)return;
  2415. for(int i=0; i<g_List1array.GetSize (); i++)
  2416. {
  2417. int ret=TransDinDan(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0));
  2418. if(ret==1)
  2419. {
  2420. {
  2421. sql= "delete from dindan where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2422. MyExecuteSQL(&g_db, sql);
  2423. sql= "delete from dindansp where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2424. MyExecuteSQL(&g_db, sql);
  2425. sql= "delete from photoprint where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2426. MyExecuteSQL(&g_db, sql);
  2427. sql= "delete from dindanbukuan where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2428. MyExecuteSQL(&g_db, sql);
  2429. sql= "delete from dindanbukuan2 where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2430. MyExecuteSQL(&g_db, sql);
  2431. sql= "delete from client where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2432. MyExecuteSQL(&g_db, sql);
  2433. sql= "delete from burncdreg where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2434. MyExecuteSQL(&g_db, sql);
  2435. sql= "delete from digitalwork where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2436. MyExecuteSQL(&g_db, sql);
  2437. sql= "delete from mywork where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2438. MyExecuteSQL(&g_db, sql);
  2439. sql= "delete from dindanjd where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2440. MyExecuteSQL(&g_db, sql);
  2441. sql= "delete from dindansp2 where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2442. MyExecuteSQL(&g_db, sql);
  2443. sql= "delete from dindansp3 where id='"+g_List1array.ElementAt (i).ElementAt (0)+"'";
  2444. MyExecuteSQL(&g_db, sql);
  2445. }
  2446. }
  2447. else
  2448. {
  2449. sql.Format("ret:%d", ret);
  2450. WriteLogin("转历史失败"+g_List1array.ElementAt (i).ElementAt (0)+sql);
  2451. }
  2452. #ifdef LIMITCOUNT
  2453. if(g_bConvertHisAll==0)
  2454. {
  2455. if(i>10)break;
  2456. }
  2457. #endif
  2458. }
  2459. ////////////////////////////支出
  2460. strdate.Format ("%04d-%02d-%02d", lastyear, 1, 1);
  2461. strdate2.Format ("%04d-%02d-%02d", lastyear, 12, 31);
  2462. filter="dat>='"+strdate+"' and dat<='"+strdate2+"'";
  2463. {
  2464. g_List1array.RemoveAll ();
  2465. CRecordset myset(g_curdb);
  2466. CString sql="select count(*) as cot from gudingfeiyong";if(!filter.IsEmpty ())sql+=" where "+filter;
  2467. myset.Open (CRecordset::forwardOnly, sql);
  2468. myset.GetFieldValue ("cot", sql);
  2469. myset.Close();
  2470. int count=atol(sql);
  2471. g_List1array.SetSize(count , 1 );
  2472. CRstPayOutInput rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2473. rsSt.Open();
  2474. ii=0;
  2475. while(!rsSt.IsEOF())
  2476. {
  2477. g_List1array.ElementAt (ii).RemoveAll ();
  2478. g_List1array.ElementAt (ii).Add(rsSt.id) ;
  2479. ii++;
  2480. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2481. }
  2482. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2483. }
  2484. for( i=0; i<g_List1array.GetSize (); i++)
  2485. {
  2486. if(TransPayOut(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2487. {
  2488. {
  2489. sql.Format ("delete from gudingfeiyong where id=%d", atol(g_List1array.ElementAt (i).ElementAt (0) ));
  2490. MyExecuteSQL(&g_db, sql);
  2491. }
  2492. }
  2493. #ifdef LIMITCOUNT
  2494. if(g_bConvertHisAll==0)
  2495. {
  2496. if(i>10)break;
  2497. }
  2498. #endif
  2499. }
  2500. ////////////////////////////其它收入
  2501. strdate.Format ("%04d-%02d-%02d", lastyear, 1, 1);
  2502. strdate2.Format ("%04d-%02d-%02d", lastyear, 12, 31);
  2503. filter="dat>='"+strdate+"' and dat<='"+strdate2+"'";
  2504. {
  2505. g_List1array.RemoveAll ();
  2506. CRecordset myset(g_curdb);
  2507. CString sql="select count(*) as cot from singleincome";if(!filter.IsEmpty ())sql+=" where "+filter;
  2508. myset.Open (CRecordset::forwardOnly, sql);
  2509. myset.GetFieldValue ("cot", sql);
  2510. myset.Close();
  2511. int count=atol(sql);
  2512. g_List1array.SetSize(count , 1 );
  2513. CRstIncomeInput rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2514. rsSt.Open();
  2515. ii=0;
  2516. while(!rsSt.IsEOF())
  2517. {
  2518. g_List1array.ElementAt (ii).RemoveAll ();
  2519. if(atoi(rsSt.balance)==0)
  2520. g_List1array.ElementAt (ii).Add(rsSt.id) ;
  2521. else
  2522. {rsSt.MoveNext();continue;
  2523. }
  2524. ii++;
  2525. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2526. }
  2527. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2528. }
  2529. for( i=0; i<g_List1array.GetSize (); i++)
  2530. {
  2531. if(TransIncome(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2532. {
  2533. {
  2534. sql.Format ("delete from singleincome where id=%d", atol(g_List1array.ElementAt (i).ElementAt (0) ));
  2535. MyExecuteSQL(&g_db, sql);
  2536. sql.Format ("delete from singleincomemoney where [id]='%s'", g_List1array.ElementAt (i).ElementAt (0));
  2537. MyExecuteSQL(&g_db, sql);
  2538. }
  2539. }
  2540. #ifdef LIMITCOUNT
  2541. if(g_bConvertHisAll==0)
  2542. {
  2543. if(i>10)break;
  2544. }
  2545. #endif
  2546. }
  2547. ////////////////////////////其它二销收款
  2548. filter="id not in(select id from singleincome)";
  2549. {
  2550. g_List1array.RemoveAll ();
  2551. CRecordset myset(g_curdb);
  2552. CString sql="select count(*) as cot from singleincomemoney";if(!filter.IsEmpty ())sql+=" where "+filter;
  2553. myset.Open (CRecordset::forwardOnly, sql);
  2554. myset.GetFieldValue ("cot", sql);
  2555. myset.Close();
  2556. int count=atol(sql);
  2557. g_List1array.SetSize(count , 1 );
  2558. CRstsingleincomemoney rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2559. rsSt.Open();
  2560. ii=0;
  2561. while(!rsSt.IsEOF())
  2562. {
  2563. g_List1array.ElementAt (ii).RemoveAll ();
  2564. g_List1array.ElementAt (ii).Add(rsSt.id) ;
  2565. ii++;
  2566. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2567. }
  2568. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2569. }
  2570. ////////////////////////////其它二销收款
  2571. for( i=0; i<g_List1array.GetSize (); i++)
  2572. {
  2573. if(TransIncomeMoney(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2574. {
  2575. {
  2576. sql.Format ("delete from singleincomemoney where [id]='%s'", g_List1array.ElementAt (i).ElementAt (0));
  2577. MyExecuteSQL(&g_db, sql);
  2578. }
  2579. }
  2580. #ifdef LIMITCOUNT
  2581. if(i>20)break;
  2582. #endif
  2583. }
  2584. ///1/////////////////////////client2phonerecord 2010-08-09 16:22:16
  2585. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2586. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2587. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2588. {
  2589. g_List1array.RemoveAll ();
  2590. CRecordset myset(g_curdb);
  2591. CString sql="select count(*) as cot from client2phonerecord";if(!filter.IsEmpty ())sql+=" where "+filter;
  2592. myset.Open (CRecordset::forwardOnly, sql);
  2593. myset.GetFieldValue ("cot", sql);
  2594. myset.Close();
  2595. int count=atol(sql);
  2596. g_List1array.SetSize(count , 1 );
  2597. CRstclient2phonerecord rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2598. rsSt.Open();
  2599. ii=0;
  2600. while(!rsSt.IsEOF())
  2601. {
  2602. g_List1array.ElementAt (ii).RemoveAll ();
  2603. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2604. ii++;
  2605. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2606. }
  2607. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2608. }
  2609. for( i=0; i<g_List1array.GetSize (); i++)
  2610. {
  2611. if(Transclient2phonerecord(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2612. {
  2613. {
  2614. sql.Format ("delete from client2phonerecord where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2615. MyExecuteSQL(&g_db, sql);
  2616. }
  2617. }
  2618. #ifdef LIMITCOUNT
  2619. if(g_bConvertHisAll==0)
  2620. {
  2621. if(i>10)break;
  2622. }
  2623. #endif
  2624. }
  2625. ///////////////////////////
  2626. ////////////////////////////client2phonerecordout 2010-08-09 16:22:16
  2627. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2628. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2629. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2630. {
  2631. g_List1array.RemoveAll ();
  2632. CRecordset myset(g_curdb);
  2633. CString sql="select count(*) as cot from client2phonerecordout";if(!filter.IsEmpty ())sql+=" where "+filter;
  2634. myset.Open (CRecordset::forwardOnly, sql);
  2635. myset.GetFieldValue ("cot", sql);
  2636. myset.Close();
  2637. int count=atol(sql);
  2638. g_List1array.SetSize(count , 1 );
  2639. CRstclient2phonerecordout rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2640. rsSt.Open();
  2641. ii=0;
  2642. while(!rsSt.IsEOF())
  2643. {
  2644. g_List1array.ElementAt (ii).RemoveAll ();
  2645. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2646. ii++;
  2647. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2648. }
  2649. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2650. }
  2651. for( i=0; i<g_List1array.GetSize (); i++)
  2652. {
  2653. if(Transclient2phonerecordout(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2654. {
  2655. {
  2656. sql.Format ("delete from client2phonerecordout where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2657. MyExecuteSQL(&g_db, sql);
  2658. }
  2659. }
  2660. #ifdef LIMITCOUNT
  2661. if(g_bConvertHisAll==0)
  2662. {
  2663. if(i>10)break;
  2664. }
  2665. #endif
  2666. }
  2667. ///1/////////////////////////client3phonerecord 2010-08-09 16:22:16
  2668. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2669. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2670. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2671. {
  2672. g_List1array.RemoveAll ();
  2673. CRecordset myset(g_curdb);
  2674. CString sql="select count(*) as cot from client3phonerecord";if(!filter.IsEmpty ())sql+=" where "+filter;
  2675. myset.Open (CRecordset::forwardOnly, sql);
  2676. myset.GetFieldValue ("cot", sql);
  2677. myset.Close();
  2678. int count=atol(sql);
  2679. g_List1array.SetSize(count , 1 );
  2680. CRstclient3phonerecord rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2681. rsSt.Open();
  2682. ii=0;
  2683. while(!rsSt.IsEOF())
  2684. {
  2685. g_List1array.ElementAt (ii).RemoveAll ();
  2686. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2687. ii++;
  2688. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2689. }
  2690. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2691. }
  2692. for( i=0; i<g_List1array.GetSize (); i++)
  2693. {
  2694. if(Transclient3phonerecord(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2695. {
  2696. {
  2697. sql.Format ("delete from client3phonerecord where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2698. MyExecuteSQL(&g_db, sql);
  2699. }
  2700. }
  2701. #ifdef LIMITCOUNT
  2702. if(g_bConvertHisAll==0)
  2703. {
  2704. if(i>10)break;
  2705. }
  2706. #endif
  2707. }
  2708. ///////////////////////////
  2709. ////////////////////////////client3phonerecordout 2010-08-09 16:22:16
  2710. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2711. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2712. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2713. {
  2714. g_List1array.RemoveAll ();
  2715. CRecordset myset(g_curdb);
  2716. CString sql="select count(*) as cot from client3phonerecordout";if(!filter.IsEmpty ())sql+=" where "+filter;
  2717. myset.Open (CRecordset::forwardOnly, sql);
  2718. myset.GetFieldValue ("cot", sql);
  2719. myset.Close();
  2720. int count=atol(sql);
  2721. g_List1array.SetSize(count , 1 );
  2722. CRstclient3phonerecordout rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2723. rsSt.Open();
  2724. ii=0;
  2725. while(!rsSt.IsEOF())
  2726. {
  2727. g_List1array.ElementAt (ii).RemoveAll ();
  2728. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2729. ii++;
  2730. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2731. }
  2732. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2733. }
  2734. for( i=0; i<g_List1array.GetSize (); i++)
  2735. {
  2736. if(Transclient3phonerecordout(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2737. {
  2738. {
  2739. sql.Format ("delete from client3phonerecordout where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2740. MyExecuteSQL(&g_db, sql);
  2741. }
  2742. }
  2743. #ifdef LIMITCOUNT
  2744. if(g_bConvertHisAll==0)
  2745. {
  2746. if(i>10)break;
  2747. }
  2748. #endif
  2749. }
  2750. ///////////////////////////
  2751. ////////////////////////////employeephonerecord 2010-08-09 16:22:16
  2752. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2753. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2754. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2755. {
  2756. g_List1array.RemoveAll ();
  2757. CRecordset myset(g_curdb);
  2758. CString sql="select count(*) as cot from employeephonerecord";if(!filter.IsEmpty ())sql+=" where "+filter;
  2759. myset.Open (CRecordset::forwardOnly, sql);
  2760. myset.GetFieldValue ("cot", sql);
  2761. myset.Close();
  2762. int count=atol(sql);
  2763. g_List1array.SetSize(count , 1 );
  2764. CRstemployeephonerecord rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2765. rsSt.Open();
  2766. ii=0;
  2767. while(!rsSt.IsEOF())
  2768. {
  2769. g_List1array.ElementAt (ii).RemoveAll ();
  2770. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2771. ii++;
  2772. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2773. }
  2774. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2775. }
  2776. for( i=0; i<g_List1array.GetSize (); i++)
  2777. {
  2778. if(Transemployeephonerecord(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2779. {
  2780. {
  2781. sql.Format ("delete from employeephonerecord where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2782. MyExecuteSQL(&g_db, sql);
  2783. }
  2784. }
  2785. #ifdef LIMITCOUNT
  2786. if(g_bConvertHisAll==0)
  2787. {
  2788. if(i>10)break;
  2789. }
  2790. #endif
  2791. }
  2792. ///////////////////////////
  2793. ////////////////////////////employeephonerecordout 2010-08-09 16:22:16
  2794. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2795. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2796. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2797. {
  2798. g_List1array.RemoveAll ();
  2799. CRecordset myset(g_curdb);
  2800. CString sql="select count(*) as cot from employeephonerecordout";if(!filter.IsEmpty ())sql+=" where "+filter;
  2801. myset.Open (CRecordset::forwardOnly, sql);
  2802. myset.GetFieldValue ("cot", sql);
  2803. myset.Close();
  2804. int count=atol(sql);
  2805. g_List1array.SetSize(count , 1 );
  2806. CRstemployeephonerecordout rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2807. rsSt.Open();
  2808. ii=0;
  2809. while(!rsSt.IsEOF())
  2810. {
  2811. g_List1array.ElementAt (ii).RemoveAll ();
  2812. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2813. ii++;
  2814. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2815. }
  2816. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2817. }
  2818. for( i=0; i<g_List1array.GetSize (); i++)
  2819. {
  2820. if(Transemployeephonerecordout(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2821. {
  2822. {
  2823. sql.Format ("delete from employeephonerecordout where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2824. MyExecuteSQL(&g_db, sql);
  2825. }
  2826. }
  2827. #ifdef LIMITCOUNT
  2828. if(g_bConvertHisAll==0)
  2829. {
  2830. if(i>10)break;
  2831. }
  2832. #endif
  2833. }
  2834. ///////////////////////////
  2835. ////////////////////////////phonerecord 2010-08-09 16:22:16
  2836. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2837. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2838. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2839. {
  2840. g_List1array.RemoveAll ();
  2841. CRecordset myset(g_curdb);
  2842. CString sql="select count(*) as cot from phonerecord";if(!filter.IsEmpty ())sql+=" where "+filter;
  2843. myset.Open (CRecordset::forwardOnly, sql);
  2844. myset.GetFieldValue ("cot", sql);
  2845. myset.Close();
  2846. int count=atol(sql);
  2847. g_List1array.SetSize(count , 1 );
  2848. CRstphonerecord rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2849. rsSt.Open();
  2850. ii=0;
  2851. while(!rsSt.IsEOF())
  2852. {
  2853. g_List1array.ElementAt (ii).RemoveAll ();
  2854. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2855. ii++;
  2856. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2857. }
  2858. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2859. }
  2860. for( i=0; i<g_List1array.GetSize (); i++)
  2861. {
  2862. if(Transphonerecord(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2863. {
  2864. {
  2865. sql.Format ("delete from phonerecord where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2866. MyExecuteSQL(&g_db, sql);
  2867. }
  2868. }
  2869. #ifdef LIMITCOUNT
  2870. if(g_bConvertHisAll==0)
  2871. {
  2872. if(i>10)break;
  2873. }
  2874. #endif
  2875. }
  2876. ///////////////////////////
  2877. ////////////////////////////phonerecordout 2010-08-09 16:22:16
  2878. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2879. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2880. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2881. {
  2882. g_List1array.RemoveAll ();
  2883. CRecordset myset(g_curdb);
  2884. CString sql="select count(*) as cot from phonerecordout";if(!filter.IsEmpty ())sql+=" where "+filter;
  2885. myset.Open (CRecordset::forwardOnly, sql);
  2886. myset.GetFieldValue ("cot", sql);
  2887. myset.Close();
  2888. int count=atol(sql);
  2889. g_List1array.SetSize(count , 1 );
  2890. CRstphonerecordout rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2891. rsSt.Open();
  2892. ii=0;
  2893. while(!rsSt.IsEOF())
  2894. {
  2895. g_List1array.ElementAt (ii).RemoveAll ();
  2896. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2897. ii++;
  2898. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2899. }
  2900. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2901. }
  2902. for( i=0; i<g_List1array.GetSize (); i++)
  2903. {
  2904. if(Transphonerecordout(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2905. {
  2906. {
  2907. sql.Format ("delete from phonerecordout where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2908. MyExecuteSQL(&g_db, sql);
  2909. }
  2910. }
  2911. #ifdef LIMITCOUNT
  2912. if(g_bConvertHisAll==0)
  2913. {
  2914. if(i>10)break;
  2915. }
  2916. #endif
  2917. }
  2918. ///////////////////////////
  2919. ////////////////////////////unknownphonerecord 2010-08-09 16:22:16
  2920. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2921. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2922. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2923. {
  2924. g_List1array.RemoveAll ();
  2925. CRecordset myset(g_curdb);
  2926. CString sql="select count(*) as cot from unknownphonerecord";if(!filter.IsEmpty ())sql+=" where "+filter;
  2927. myset.Open (CRecordset::forwardOnly, sql);
  2928. myset.GetFieldValue ("cot", sql);
  2929. myset.Close();
  2930. int count=atol(sql);
  2931. g_List1array.SetSize(count , 1 );
  2932. CRstunknownphonerecord rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2933. rsSt.Open();
  2934. ii=0;
  2935. while(!rsSt.IsEOF())
  2936. {
  2937. g_List1array.ElementAt (ii).RemoveAll ();
  2938. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2939. ii++;
  2940. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2941. }
  2942. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2943. }
  2944. for( i=0; i<g_List1array.GetSize (); i++)
  2945. {
  2946. if(Transunknownphonerecord(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2947. {
  2948. {
  2949. sql.Format ("delete from unknownphonerecord where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2950. MyExecuteSQL(&g_db, sql);
  2951. }
  2952. }
  2953. #ifdef LIMITCOUNT
  2954. if(g_bConvertHisAll==0)
  2955. {
  2956. if(i>10)break;
  2957. }
  2958. #endif
  2959. }
  2960. ///////////////////////////
  2961. ////////////////////////////unknownphonerecordout 2010-08-09 16:22:16
  2962. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  2963. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  2964. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  2965. {
  2966. g_List1array.RemoveAll ();
  2967. CRecordset myset(g_curdb);
  2968. CString sql="select count(*) as cot from unknownphonerecordout";if(!filter.IsEmpty ())sql+=" where "+filter;
  2969. myset.Open (CRecordset::forwardOnly, sql);
  2970. myset.GetFieldValue ("cot", sql);
  2971. myset.Close();
  2972. int count=atol(sql);
  2973. g_List1array.SetSize(count , 1 );
  2974. CRstunknownphonerecordout rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  2975. rsSt.Open();
  2976. ii=0;
  2977. while(!rsSt.IsEOF())
  2978. {
  2979. g_List1array.ElementAt (ii).RemoveAll ();
  2980. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  2981. ii++;
  2982. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  2983. }
  2984. rsSt.Close();g_List1array.SetSize(ii , 1 );
  2985. }
  2986. for( i=0; i<g_List1array.GetSize (); i++)
  2987. {
  2988. if(Transunknownphonerecordout(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  2989. {
  2990. {
  2991. sql.Format ("delete from unknownphonerecordout where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  2992. MyExecuteSQL(&g_db, sql);
  2993. }
  2994. }
  2995. #ifdef LIMITCOUNT
  2996. if(g_bConvertHisAll==0)
  2997. {
  2998. if(i>10)break;
  2999. }
  3000. #endif
  3001. }
  3002. ///////////////////////////
  3003. ////////////////////////////misscallrecord 2010-08-09 16:22:16
  3004. strdate.Format ("%04d-%02d-%02d 00:00:00", lastyear, 1, 1);
  3005. strdate2.Format ("%04d-%02d-%02d 99:99:99", lastyear, 12, 31);
  3006. filter="datetime>='"+strdate+"' and datetime<='"+strdate2+"'";
  3007. {
  3008. g_List1array.RemoveAll ();
  3009. CRecordset myset(g_curdb);
  3010. CString sql="select count(*) as cot from misscallrecord";if(!filter.IsEmpty ())sql+=" where "+filter;
  3011. myset.Open (CRecordset::forwardOnly, sql);
  3012. myset.GetFieldValue ("cot", sql);
  3013. myset.Close();
  3014. int count=atol(sql);
  3015. g_List1array.SetSize(count , 1 );
  3016. CRstmisscallrecord rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  3017. rsSt.Open();
  3018. ii=0;
  3019. while(!rsSt.IsEOF())
  3020. {
  3021. g_List1array.ElementAt (ii).RemoveAll ();
  3022. g_List1array.ElementAt (ii).Add(rsSt.datetime) ;
  3023. ii++;
  3024. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  3025. }
  3026. rsSt.Close();g_List1array.SetSize(ii , 1 );
  3027. }
  3028. for( i=0; i<g_List1array.GetSize (); i++)
  3029. {
  3030. if(Transmisscallrecord(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  3031. {
  3032. {
  3033. sql.Format ("delete from misscallrecord where datetime='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  3034. MyExecuteSQL(&g_db, sql);
  3035. }
  3036. }
  3037. #ifdef LIMITCOUNT
  3038. if(g_bConvertHisAll==0)
  3039. {
  3040. if(i>10)break;
  3041. }
  3042. #endif
  3043. }
  3044. ///////////////////////////
  3045. ////////////////////////////sendreg
  3046. strdate.Format ("%04d%02d%02d000000", lastyear, 1, 1);
  3047. strdate2.Format ("%04d%02d%02d999999", lastyear, 12, 31);
  3048. filter="timestamp>='"+strdate+"' and timestamp<='"+strdate2+"' and issended='OK'";
  3049. {
  3050. g_List1array.RemoveAll ();
  3051. CRecordset myset(g_curdb);
  3052. CString sql="select count(*) as cot from sendreg";if(!filter.IsEmpty ())sql+=" where "+filter;
  3053. myset.Open (CRecordset::forwardOnly, sql);
  3054. myset.GetFieldValue ("cot", sql);
  3055. myset.Close();
  3056. int count=atol(sql);
  3057. g_List1array.SetSize(count , 1 );
  3058. RstSendReg rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  3059. rsSt.Open();
  3060. ii=0;
  3061. while(!rsSt.IsEOF())
  3062. {
  3063. g_List1array.ElementAt (ii).RemoveAll ();
  3064. g_List1array.ElementAt (ii).Add(rsSt.m_timestamp) ;
  3065. ii++;
  3066. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  3067. }
  3068. rsSt.Close();g_List1array.SetSize(ii , 1 );
  3069. }
  3070. for( i=0; i<g_List1array.GetSize (); i++)
  3071. {
  3072. if(TransSendReg(pdb1, pdb2, g_List1array.ElementAt (i).ElementAt (0)))
  3073. {
  3074. {
  3075. sql.Format ("delete from sendreg where [timestamp]='%s'", g_List1array.ElementAt (i).ElementAt (0) );
  3076. MyExecuteSQL(&g_db, sql);
  3077. }
  3078. }
  3079. #ifdef LIMITCOUNT
  3080. if(g_bConvertHisAll==0)
  3081. {
  3082. if(i>10)break;
  3083. }
  3084. #endif
  3085. }
  3086. ///////////////////////////
  3087. }
  3088. catch(...)
  3089. {
  3090. WriteLogin("出错在函数TransHisData中");
  3091. }
  3092. g_bConvertHisAll=0;
  3093. /////////////////////////生成来电精灵数据
  3094. //return;
  3095. /* g_sendhead.code[0]=80;
  3096. g_sendhead.code[1]=90;
  3097. g_sendhead.code[2]=11;
  3098. g_sendhead.code[3]=138;
  3099. g_sendhead.code[4]=24;
  3100. g_sendhead.code[0]=181;
  3101. g_sendhead.code[0]=65;
  3102. g_sendhead.code[0]=56;*/
  3103. MyLock lock("processChatMessageRequestxiao");
  3104. CArray<int,int>codearray;
  3105. codearray.Add (80);
  3106. codearray.Add (90);
  3107. codearray.Add (11);
  3108. codearray.Add (138);
  3109. codearray.Add (24);
  3110. codearray.Add (181);
  3111. codearray.Add (65);
  3112. codearray.Add (56);
  3113. codearray.Add (179);
  3114. codearray.Add (53);
  3115. CFile fp;
  3116. CString savepath,g_path1;
  3117. g_path1=GetPathFromNetShareName("电话录音(管理软件)$");
  3118. if(g_path1.IsEmpty ())return;
  3119. try
  3120. {
  3121. CArray<CDatabase*,CDatabase*>dbarraytemp;
  3122. dbarraytemp.Copy(dbarray);
  3123. dbarraytemp.InsertAt(0, &g_db);
  3124. for(int aa=0; aa<dbarraytemp.GetSize (); aa++)
  3125. {
  3126. g_curdb=dbarraytemp.ElementAt (aa);
  3127. savepath.Format ("%s\\uphonedata%d.dat", g_path1, aa);
  3128. ::DeleteFile (savepath);
  3129. if(fp.Open (savepath, CFile::modeCreate|CFile::modeWrite)==0)
  3130. {
  3131. WriteLogin("更新电精灵数据出错");
  3132. return;
  3133. }
  3134. CConnectSocket consock;
  3135. consock.m_pConndb =g_curdb;
  3136. for(int i=0; i<codearray.GetSize (); i++)
  3137. {
  3138. BYTE code=codearray.ElementAt (i);
  3139. DWORD length,arraysize;
  3140. BYTE *pReturn=NULL;
  3141. consock.GetDataFromCode(code, &pReturn, length, arraysize, "");
  3142. fp.Write (&code, sizeof(BYTE));
  3143. fp.Write (&length, sizeof(DWORD));
  3144. fp.Write (&arraysize, sizeof(DWORD));
  3145. fp.Write (pReturn, length);
  3146. }
  3147. fp.Close ();
  3148. }
  3149. g_curdb=&g_db;
  3150. }
  3151. catch(...)
  3152. {
  3153. WriteLogin("获取来电精灵数据出错");
  3154. }
  3155. }
  3156. void CDBServerDlg::CheckYear(int year)
  3157. {
  3158. try
  3159. {
  3160. #ifdef SQLSERVER_VERSION
  3161. CString path,path2,sql;
  3162. path.Format ("%s\\数据\\%d.mdf", g_mainpath, year);
  3163. path2.Format ("%s\\数据\\%d_log.LDF", g_mainpath, year);
  3164. {
  3165. CString nulldb=g_mainpath+"\\数据\\dbnull.mdf";
  3166. if(::PathFileExists (nulldb)==0)
  3167. {
  3168. WriteLogin("空数据库丢失!");
  3169. return;
  3170. }
  3171. ::CopyFile (nulldb, path, 1);
  3172. if(::PathFileExists(path)==0 )
  3173. {
  3174. WriteLogin("拷贝数据库文件失败!");
  3175. return;
  3176. }
  3177. BOOL bLog=0;
  3178. if( ::PathFileExists(path2))
  3179. {
  3180. bLog=1;
  3181. }
  3182. CString sql;
  3183. if(bLog)
  3184. sql.Format("exec sp_attach_db '%d',@filename1='%s',@filename2='%s'", year, path, path2);
  3185. else
  3186. sql.Format("exec sp_attach_db '%d',@filename1='%s'", year, path);
  3187. g_db.SetQueryTimeout(600);
  3188. try
  3189. {
  3190. g_db.ExecuteSQL (sql);
  3191. }
  3192. catch(CDBException * e)
  3193. {
  3194. WriteLogin(e->m_strError);
  3195. WriteLogin("历史数据库初始化失败!");
  3196. }
  3197. g_db.SetQueryTimeout(100);
  3198. CDatabase *db=new CDatabase;
  3199. try
  3200. {
  3201. CString strCon;
  3202. strCon.Format(_T("driver={SQL Server};Server=%s\\SQLEXPRESS;DATABASE=%d;UID=sa;PWD=ly1234;"), g_localname, year);
  3203. db->OpenEx(strCon,CDatabase::noOdbcDialog);
  3204. yeararray.Add (year);
  3205. dbarray.Add (db);
  3206. sql.Format ("insert into [historydb]([year])values('%d')", year);
  3207. MyExecuteSQL(&g_db, sql);
  3208. }
  3209. catch(CDBException * e)
  3210. {
  3211. delete db;
  3212. WriteLogin(e->m_strError);
  3213. WriteLogin("历史数据库打开失败!");
  3214. }
  3215. }
  3216. #else
  3217. CString path,sql;
  3218. path.Format ("%s\\数据\\%d.mdb", g_mainpath, year);
  3219. if(::PathFileExists (path)==0)
  3220. {
  3221. CString nulldb=g_mainpath+"\\数据\\dbnull.mdb";
  3222. ::CopyFile (nulldb, path, 1);
  3223. CDatabase *db=new CDatabase;
  3224. CString strCon;
  3225. strCon.Format("DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=%s;PWD=lijialyfz",path);
  3226. if(db->OpenEx(strCon,CDatabase::noOdbcDialog))
  3227. {
  3228. yeararray.Add (year);
  3229. dbarray.Add (db);
  3230. sql.Format ("insert into historydb([year])values('%d')", year);
  3231. MyExecuteSQL(&g_db, sql);
  3232. }
  3233. else
  3234. delete db;
  3235. }
  3236. #endif
  3237. }
  3238. catch(...)
  3239. {
  3240. WriteLogin("出错在函数CheckYear中");
  3241. }
  3242. }
  3243. CDatabase* CDBServerDlg::GetDB(int year)
  3244. {
  3245. try
  3246. {
  3247. for(int i=0; i<yeararray.GetSize (); i++)
  3248. {
  3249. if(yeararray.ElementAt (i)==year)
  3250. {
  3251. return dbarray.ElementAt (i);
  3252. }
  3253. }
  3254. return NULL;
  3255. }
  3256. catch(...)
  3257. {
  3258. WriteLogin("出错在函数GetDB中");
  3259. }
  3260. }
  3261. BOOL CDBServerDlg::CheckDinDanExist(CDatabase *pdb1, CDatabase *pdb2, CString id, CStringArray *pretarray)
  3262. {
  3263. try
  3264. {
  3265. pretarray->RemoveAll();
  3266. int count1=0;
  3267. int count2=0;
  3268. CString sql;
  3269. {
  3270. CRecordset myset(pdb1);
  3271. sql="select count(*) as cot from dindan where id='"+id+"'";
  3272. myset.Open (CRecordset::forwardOnly, sql);
  3273. myset.GetFieldValue ("cot", sql);
  3274. myset.Close();
  3275. count1=atoi(sql);
  3276. }
  3277. {
  3278. CRecordset myset(pdb2);
  3279. sql="select count(*) as cot from dindan where id='"+id+"'";
  3280. myset.Open (CRecordset::forwardOnly, sql);
  3281. myset.GetFieldValue ("cot", sql);
  3282. myset.Close();
  3283. count2=atoi(sql);
  3284. }
  3285. if(count1>count2)
  3286. pretarray->Add ("0");
  3287. else
  3288. pretarray->Add ("1");
  3289. {
  3290. CRecordset myset(pdb1);
  3291. sql="select count(*) as cot from dindansp where id='"+id+"'";
  3292. myset.Open (CRecordset::forwardOnly, sql);
  3293. myset.GetFieldValue ("cot", sql);
  3294. myset.Close();
  3295. count1=atoi(sql);
  3296. }
  3297. {
  3298. CRecordset myset(pdb2);
  3299. sql="select count(*) as cot from dindansp where id='"+id+"'";
  3300. myset.Open (CRecordset::forwardOnly, sql);
  3301. myset.GetFieldValue ("cot", sql);
  3302. myset.Close();
  3303. count2=atoi(sql);
  3304. }
  3305. if(count1>count2)
  3306. pretarray->Add ("0");
  3307. else
  3308. pretarray->Add ("1");
  3309. {
  3310. CRecordset myset(pdb1);
  3311. sql="select count(*) as cot from dindanbukuan where id='"+id+"'";
  3312. myset.Open (CRecordset::forwardOnly, sql);
  3313. myset.GetFieldValue ("cot", sql);
  3314. myset.Close();
  3315. count1=atoi(sql);
  3316. }
  3317. {
  3318. CRecordset myset(pdb2);
  3319. sql="select count(*) as cot from dindanbukuan where id='"+id+"'";
  3320. myset.Open (CRecordset::forwardOnly, sql);
  3321. myset.GetFieldValue ("cot", sql);
  3322. myset.Close();
  3323. count2=atoi(sql);
  3324. }
  3325. if(count1>count2)
  3326. pretarray->Add ("0");
  3327. else
  3328. pretarray->Add ("1");
  3329. {
  3330. CRecordset myset(pdb1);
  3331. sql="select count(*) as cot from dindanbukuan2 where id='"+id+"'";
  3332. myset.Open (CRecordset::forwardOnly, sql);
  3333. myset.GetFieldValue ("cot", sql);
  3334. myset.Close();
  3335. count1=atoi(sql);
  3336. }
  3337. {
  3338. CRecordset myset(pdb2);
  3339. sql="select count(*) as cot from dindanbukuan2 where id='"+id+"'";
  3340. myset.Open (CRecordset::forwardOnly, sql);
  3341. myset.GetFieldValue ("cot", sql);
  3342. myset.Close();
  3343. count2=atoi(sql);
  3344. }
  3345. if(count1>count2)
  3346. pretarray->Add ("0");
  3347. else
  3348. pretarray->Add ("1");
  3349. {
  3350. CRecordset myset(pdb1);
  3351. sql="select count(*) as cot from photoprint where id='"+id+"'";
  3352. myset.Open (CRecordset::forwardOnly, sql);
  3353. myset.GetFieldValue ("cot", sql);
  3354. myset.Close();
  3355. count1=atoi(sql);
  3356. }
  3357. {
  3358. CRecordset myset(pdb2);
  3359. sql="select count(*) as cot from photoprint where id='"+id+"'";
  3360. myset.Open (CRecordset::forwardOnly, sql);
  3361. myset.GetFieldValue ("cot", sql);
  3362. myset.Close();
  3363. count2=atoi(sql);
  3364. }
  3365. if(count1>count2)
  3366. pretarray->Add ("0");
  3367. else
  3368. pretarray->Add ("1");
  3369. {
  3370. CRecordset myset(pdb1);
  3371. sql="select count(*) as cot from client where id='"+id+"'";
  3372. myset.Open (CRecordset::forwardOnly, sql);
  3373. myset.GetFieldValue ("cot", sql);
  3374. myset.Close();
  3375. count1=atoi(sql);
  3376. }
  3377. {
  3378. CRecordset myset(pdb2);
  3379. sql="select count(*) as cot from client where id='"+id+"'";
  3380. myset.Open (CRecordset::forwardOnly, sql);
  3381. myset.GetFieldValue ("cot", sql);
  3382. myset.Close();
  3383. count2=atoi(sql);
  3384. }
  3385. if(count1>count2)
  3386. pretarray->Add ("0");
  3387. else
  3388. pretarray->Add ("1");
  3389. {
  3390. CRecordset myset(pdb1);
  3391. sql="select count(*) as cot from burncdreg where id='"+id+"'";
  3392. myset.Open (CRecordset::forwardOnly, sql);
  3393. myset.GetFieldValue ("cot", sql);
  3394. myset.Close();
  3395. count1=atoi(sql);
  3396. }
  3397. {
  3398. CRecordset myset(pdb2);
  3399. sql="select count(*) as cot from burncdreg where id='"+id+"'";
  3400. myset.Open (CRecordset::forwardOnly, sql);
  3401. myset.GetFieldValue ("cot", sql);
  3402. myset.Close();
  3403. count2=atoi(sql);
  3404. }
  3405. if(count1>count2)
  3406. pretarray->Add ("0");
  3407. else
  3408. pretarray->Add ("1");
  3409. {
  3410. CRecordset myset(pdb1);
  3411. sql="select count(*) as cot from digitalwork where id='"+id+"'";
  3412. myset.Open (CRecordset::forwardOnly, sql);
  3413. myset.GetFieldValue ("cot", sql);
  3414. myset.Close();
  3415. count1=atoi(sql);
  3416. }
  3417. {
  3418. CRecordset myset(pdb2);
  3419. sql="select count(*) as cot from digitalwork where id='"+id+"'";
  3420. myset.Open (CRecordset::forwardOnly, sql);
  3421. myset.GetFieldValue ("cot", sql);
  3422. myset.Close();
  3423. count2=atoi(sql);
  3424. }
  3425. if(count1>count2)
  3426. pretarray->Add ("0");
  3427. else
  3428. pretarray->Add ("1");
  3429. {
  3430. CRecordset myset(pdb1);
  3431. sql="select count(*) as cot from mywork where id='"+id+"'";
  3432. myset.Open (CRecordset::forwardOnly, sql);
  3433. myset.GetFieldValue ("cot", sql);
  3434. myset.Close();
  3435. count1=atoi(sql);
  3436. }
  3437. {
  3438. CRecordset myset(pdb2);
  3439. sql="select count(*) as cot from mywork where id='"+id+"'";
  3440. myset.Open (CRecordset::forwardOnly, sql);
  3441. myset.GetFieldValue ("cot", sql);
  3442. myset.Close();
  3443. count2=atoi(sql);
  3444. }
  3445. if(count1>count2)
  3446. pretarray->Add ("0");
  3447. else
  3448. pretarray->Add ("1");
  3449. {
  3450. CRecordset myset(pdb1);
  3451. sql="select count(*) as cot from dindanjd where id='"+id+"'";
  3452. myset.Open (CRecordset::forwardOnly, sql);
  3453. myset.GetFieldValue ("cot", sql);
  3454. myset.Close();
  3455. count1=atoi(sql);
  3456. }
  3457. {
  3458. CRecordset myset(pdb2);
  3459. sql="select count(*) as cot from dindanjd where id='"+id+"'";
  3460. myset.Open (CRecordset::forwardOnly, sql);
  3461. myset.GetFieldValue ("cot", sql);
  3462. myset.Close();
  3463. count2=atoi(sql);
  3464. }
  3465. if(count1>count2)
  3466. pretarray->Add ("0");
  3467. else
  3468. pretarray->Add ("1");
  3469. {
  3470. CRecordset myset(pdb1);
  3471. sql="select count(*) as cot from dindansp2 where id='"+id+"'";
  3472. myset.Open (CRecordset::forwardOnly, sql);
  3473. myset.GetFieldValue ("cot", sql);
  3474. myset.Close();
  3475. count1=atoi(sql);
  3476. }
  3477. {
  3478. CRecordset myset(pdb2);
  3479. sql="select count(*) as cot from dindansp2 where id='"+id+"'";
  3480. myset.Open (CRecordset::forwardOnly, sql);
  3481. myset.GetFieldValue ("cot", sql);
  3482. myset.Close();
  3483. count2=atoi(sql);
  3484. }
  3485. if(count1>count2)
  3486. pretarray->Add ("0");
  3487. else
  3488. pretarray->Add ("1");
  3489. {
  3490. CRecordset myset(pdb1);
  3491. sql="select count(*) as cot from dindansp3 where id='"+id+"'";
  3492. myset.Open (CRecordset::forwardOnly, sql);
  3493. myset.GetFieldValue ("cot", sql);
  3494. myset.Close();
  3495. count1=atoi(sql);
  3496. }
  3497. {
  3498. CRecordset myset(pdb2);
  3499. sql="select count(*) as cot from dindansp3 where id='"+id+"'";
  3500. myset.Open (CRecordset::forwardOnly, sql);
  3501. myset.GetFieldValue ("cot", sql);
  3502. myset.Close();
  3503. count2=atoi(sql);
  3504. }
  3505. if(count1>count2)
  3506. pretarray->Add ("0");
  3507. else
  3508. pretarray->Add ("1");
  3509. for(int i=0; i<pretarray->GetSize (); i++)
  3510. {
  3511. if(pretarray->ElementAt (i)=="0")return 0;
  3512. }
  3513. return 1;
  3514. }
  3515. catch(...)
  3516. {
  3517. WriteLogin("出错在函数check1中");
  3518. }
  3519. return 0;
  3520. }
  3521. BOOL CDBServerDlg::CheckPayOutExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  3522. {
  3523. try
  3524. {
  3525. int count1=0;
  3526. int count2=0;
  3527. CString sql;
  3528. {
  3529. CRecordset myset(pdb1);
  3530. sql.Format("select count(*) as cot from gudingfeiyong where [id]=%d", atol(id));
  3531. myset.Open (CRecordset::forwardOnly, sql);
  3532. myset.GetFieldValue ("cot", sql);
  3533. myset.Close();
  3534. count1=atoi(sql);
  3535. }
  3536. {
  3537. CRecordset myset(pdb2);
  3538. sql="select count(*) as cot from gudingfeiyong where [id]='"+id+"'";
  3539. myset.Open (CRecordset::forwardOnly, sql);
  3540. myset.GetFieldValue ("cot", sql);
  3541. myset.Close();
  3542. count2=atoi(sql);
  3543. }
  3544. if(count1>count2)return 0;
  3545. return 1;
  3546. }
  3547. catch(...)
  3548. {
  3549. WriteLogin("出错在函数check2中");
  3550. }
  3551. return 0;
  3552. }
  3553. BOOL CDBServerDlg::CheckIncomeExist(CDatabase *pdb1, CDatabase *pdb2, CString id, CStringArray *pretarray)
  3554. {
  3555. try
  3556. {
  3557. pretarray->RemoveAll();
  3558. int count1=0;
  3559. int count2=0;
  3560. CString sql;
  3561. {
  3562. CRecordset myset(pdb1);
  3563. sql.Format("select count(*) as cot from singleincome where [id]=%d", atol(id));
  3564. myset.Open (CRecordset::forwardOnly, sql);
  3565. myset.GetFieldValue ("cot", sql);
  3566. myset.Close();
  3567. count1=atoi(sql);
  3568. }
  3569. {
  3570. CRecordset myset(pdb2);
  3571. sql="select count(*) as cot from singleincome where [id]='"+id+"'";
  3572. myset.Open (CRecordset::forwardOnly, sql);
  3573. myset.GetFieldValue ("cot", sql);
  3574. myset.Close();
  3575. count2=atoi(sql);
  3576. }
  3577. if(count1>count2)
  3578. pretarray->Add ("0");
  3579. else
  3580. pretarray->Add ("1");
  3581. {
  3582. CRecordset myset(pdb1);
  3583. sql.Format("select count(*) as cot from singleincomemoney where [id]='%s'", id);
  3584. myset.Open (CRecordset::forwardOnly, sql);
  3585. myset.GetFieldValue ("cot", sql);
  3586. myset.Close();
  3587. count1=atoi(sql);
  3588. }
  3589. {
  3590. CRecordset myset(pdb2);
  3591. sql.Format("select count(*) as cot from singleincomemoney where [id]='%s'", id);
  3592. myset.Open (CRecordset::forwardOnly, sql);
  3593. myset.GetFieldValue ("cot", sql);
  3594. myset.Close();
  3595. count2=atoi(sql);
  3596. }
  3597. if(count1>count2)
  3598. pretarray->Add ("0");
  3599. else
  3600. pretarray->Add ("1");
  3601. for(int i=0; i<pretarray->GetSize (); i++)
  3602. {
  3603. if(pretarray->ElementAt (i)=="0")return 0;
  3604. }
  3605. return 1;
  3606. }
  3607. catch(...)
  3608. {
  3609. WriteLogin("出错在函数check3中");
  3610. }
  3611. return 0;
  3612. }
  3613. BOOL CDBServerDlg::CheckIncomeMoneyExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  3614. {
  3615. try
  3616. {
  3617. int count1=0;
  3618. int count2=0;
  3619. CString sql;
  3620. {
  3621. CRecordset myset(pdb1);
  3622. sql.Format("select count(*) as cot from singleincomemoney where [id]='%s'", id);
  3623. myset.Open (CRecordset::forwardOnly, sql);
  3624. myset.GetFieldValue ("cot", sql);
  3625. myset.Close();
  3626. count1=atoi(sql);
  3627. }
  3628. {
  3629. CRecordset myset(pdb2);
  3630. sql.Format("select count(*) as cot from singleincomemoney where [id]='%s'", id);
  3631. myset.Open (CRecordset::forwardOnly, sql);
  3632. myset.GetFieldValue ("cot", sql);
  3633. myset.Close();
  3634. count2=atoi(sql);
  3635. }
  3636. if(count1>count2)return 0;
  3637. return 1;
  3638. }
  3639. catch(...)
  3640. {
  3641. WriteLogin("出错在函数check3中");
  3642. }
  3643. return 0;
  3644. }
  3645. int CDBServerDlg::TransDinDan(CDatabase *pdb1, CDatabase *pdb2, CString id)
  3646. {
  3647. int step=0;
  3648. CStringArray retarray;
  3649. try
  3650. {
  3651. CString sql,str;
  3652. if(CheckDinDanExist(pdb1, pdb2, id, &retarray))return 1;
  3653. step=1;
  3654. int i;CString temp;
  3655. int colcount;
  3656. CODBCFieldInfo fieldinfo;
  3657. int ret=1;
  3658. CRecordset myset(pdb1);
  3659. try
  3660. {
  3661. if(retarray.ElementAt (0)=="0")
  3662. {
  3663. sql="select * from dindan where id='"+id+"'";
  3664. myset.Open (CRecordset::forwardOnly, sql);
  3665. while(!myset.IsEOF ())
  3666. {
  3667. colcount=myset.GetODBCFieldCount ();
  3668. sql="insert into dindan(";
  3669. for( i=0; i<colcount; i++)
  3670. {
  3671. myset.GetODBCFieldInfo(i, fieldinfo);
  3672. sql+="["+fieldinfo.m_strName+"],";
  3673. }
  3674. sql.TrimRight (",");
  3675. sql+=")values(";
  3676. for( i=0; i<colcount; i++)
  3677. {
  3678. temp="";
  3679. myset.GetFieldValue((short)i, temp);
  3680. /* CDBVariant varField;
  3681. myset.GetFieldValue((short)i, varField);
  3682. if(varField.m_dwType== DBVT_STRING)
  3683. temp=*(varField.m_pstring);*/
  3684. sql+="'"+temp+"',";
  3685. }
  3686. sql.TrimRight (",");
  3687. sql+=")";
  3688. // WriteLogin(sql);
  3689. MyExecuteSQL(pdb2, sql);
  3690. myset.MoveNext ();
  3691. }
  3692. myset.Close();
  3693. }
  3694. }
  3695. catch(CDBException * e)
  3696. {
  3697. WriteLogin("step2"+e->m_strError);
  3698. ret=2;
  3699. }
  3700. step=2;
  3701. try
  3702. {
  3703. if(retarray.ElementAt (1)=="0")
  3704. {
  3705. sql="select * from dindansp where id='"+id+"'";
  3706. myset.Open (CRecordset::forwardOnly, sql);
  3707. while(!myset.IsEOF ())
  3708. {
  3709. colcount=myset.GetODBCFieldCount ();
  3710. sql="insert into dindansp(";
  3711. for( i=0; i<colcount; i++)
  3712. {
  3713. myset.GetODBCFieldInfo(i, fieldinfo);
  3714. sql+="["+fieldinfo.m_strName+"],";
  3715. }
  3716. sql.TrimRight (",");
  3717. sql+=")values(";
  3718. for( i=0; i<colcount; i++)
  3719. {
  3720. myset.GetFieldValue(i, temp);
  3721. sql+="'"+temp+"',";
  3722. }
  3723. sql.TrimRight (",");
  3724. sql+=")";
  3725. MyExecuteSQL(pdb2, sql);
  3726. myset.MoveNext ();
  3727. }
  3728. myset.Close();
  3729. }
  3730. }
  3731. catch(CDBException * e)
  3732. {
  3733. WriteLogin("step3"+e->m_strError);
  3734. ret=3;
  3735. }
  3736. step=3;
  3737. try
  3738. {
  3739. if(retarray.ElementAt (2)=="0")
  3740. {
  3741. sql="select * from dindanbukuan where id='"+id+"'";
  3742. myset.Open (CRecordset::forwardOnly, sql);
  3743. while(!myset.IsEOF ())
  3744. {
  3745. colcount=myset.GetODBCFieldCount ();
  3746. sql="insert into dindanbukuan(";
  3747. for( i=0; i<colcount; i++)
  3748. {
  3749. myset.GetODBCFieldInfo(i, fieldinfo);
  3750. sql+="["+fieldinfo.m_strName+"],";
  3751. }
  3752. sql.TrimRight (",");
  3753. sql+=")values(";
  3754. for( i=0; i<colcount; i++)
  3755. {
  3756. myset.GetFieldValue(i, temp);
  3757. sql+="'"+temp+"',";
  3758. }
  3759. sql.TrimRight (",");
  3760. sql+=")";
  3761. MyExecuteSQL(pdb2, sql);
  3762. myset.MoveNext ();
  3763. }
  3764. myset.Close();
  3765. }
  3766. }
  3767. catch(CDBException * e)
  3768. {
  3769. WriteLogin("step4"+e->m_strError);
  3770. ret=4;
  3771. }
  3772. step=4;
  3773. try
  3774. {
  3775. if(retarray.ElementAt (3)=="0")
  3776. {
  3777. sql="select * from dindanbukuan2 where id='"+id+"'";
  3778. myset.Open (CRecordset::forwardOnly, sql);
  3779. while(!myset.IsEOF ())
  3780. {
  3781. colcount=myset.GetODBCFieldCount ();
  3782. sql="insert into dindanbukuan2(";
  3783. for( i=0; i<colcount; i++)
  3784. {
  3785. myset.GetODBCFieldInfo(i, fieldinfo);
  3786. sql+="["+fieldinfo.m_strName+"],";
  3787. }
  3788. sql.TrimRight (",");
  3789. sql+=")values(";
  3790. for( i=0; i<colcount; i++)
  3791. {
  3792. myset.GetFieldValue(i, temp);
  3793. sql+="'"+temp+"',";
  3794. }
  3795. sql.TrimRight (",");
  3796. sql+=")";
  3797. MyExecuteSQL(pdb2, sql);
  3798. myset.MoveNext ();
  3799. }
  3800. myset.Close();
  3801. }
  3802. }
  3803. catch(CDBException * e)
  3804. {
  3805. WriteLogin("step5"+e->m_strError);
  3806. ret=5;
  3807. }
  3808. step=5;
  3809. try
  3810. {
  3811. if(retarray.ElementAt (4)=="0")
  3812. {
  3813. sql="select * from photoprint where id='"+id+"'";
  3814. myset.Open (CRecordset::forwardOnly, sql);
  3815. while(!myset.IsEOF ())
  3816. {
  3817. colcount=myset.GetODBCFieldCount ();
  3818. sql="insert into photoprint(";
  3819. for( i=0; i<colcount; i++)
  3820. {
  3821. myset.GetODBCFieldInfo(i, fieldinfo);
  3822. sql+="["+fieldinfo.m_strName+"],";
  3823. }
  3824. sql.TrimRight (",");
  3825. sql+=")values(";
  3826. for( i=0; i<colcount; i++)
  3827. {
  3828. myset.GetFieldValue(i, temp);
  3829. sql+="'"+temp+"',";
  3830. }
  3831. sql.TrimRight (",");
  3832. sql+=")";
  3833. MyExecuteSQL(pdb2, sql);
  3834. myset.MoveNext ();
  3835. }
  3836. myset.Close();
  3837. }
  3838. }
  3839. catch(CDBException * e)
  3840. {
  3841. WriteLogin("step6"+e->m_strError);
  3842. ret=6;
  3843. }
  3844. step=6;
  3845. try
  3846. {
  3847. if(retarray.ElementAt (5)=="0")
  3848. {
  3849. sql="select * from client where id='"+id+"'";
  3850. myset.Open (CRecordset::forwardOnly, sql);
  3851. while(!myset.IsEOF ())
  3852. {
  3853. colcount=myset.GetODBCFieldCount ();
  3854. sql="insert into client(";
  3855. for( i=0; i<colcount; i++)
  3856. {
  3857. myset.GetODBCFieldInfo(i, fieldinfo);
  3858. sql+="["+fieldinfo.m_strName+"],";
  3859. }
  3860. sql.TrimRight (",");
  3861. sql+=")values(";
  3862. for( i=0; i<colcount; i++)
  3863. {
  3864. myset.GetFieldValue(i, temp);
  3865. sql+="'"+temp+"',";
  3866. }
  3867. sql.TrimRight (",");
  3868. sql+=")";
  3869. MyExecuteSQL(pdb2, sql);
  3870. myset.MoveNext ();
  3871. }
  3872. myset.Close();
  3873. }
  3874. }
  3875. catch(CDBException * e)
  3876. {
  3877. WriteLogin("step7"+e->m_strError);
  3878. ret=7;
  3879. }
  3880. step=7;
  3881. try
  3882. {
  3883. if(retarray.ElementAt (6)=="0")
  3884. {
  3885. sql="select * from burncdreg where id='"+id+"'";
  3886. myset.Open (CRecordset::forwardOnly, sql);
  3887. while(!myset.IsEOF ())
  3888. {
  3889. colcount=myset.GetODBCFieldCount ();
  3890. sql="insert into burncdreg(";
  3891. for( i=0; i<colcount; i++)
  3892. {
  3893. myset.GetODBCFieldInfo(i, fieldinfo);
  3894. sql+="["+fieldinfo.m_strName+"],";
  3895. }
  3896. sql.TrimRight (",");
  3897. sql+=")values(";
  3898. for( i=0; i<colcount; i++)
  3899. {
  3900. myset.GetFieldValue(i, temp);
  3901. sql+="'"+temp+"',";
  3902. }
  3903. sql.TrimRight (",");
  3904. sql+=")";
  3905. MyExecuteSQL(pdb2, sql);
  3906. myset.MoveNext ();
  3907. }
  3908. myset.Close();
  3909. }
  3910. }
  3911. catch(CDBException * e)
  3912. {
  3913. WriteLogin("step8"+e->m_strError);
  3914. ret=8;
  3915. }
  3916. step=8;
  3917. try
  3918. {
  3919. if(retarray.ElementAt (7)=="0")
  3920. {
  3921. sql="select * from digitalwork where id='"+id+"'";
  3922. myset.Open (CRecordset::forwardOnly, sql);
  3923. while(!myset.IsEOF ())
  3924. {
  3925. colcount=myset.GetODBCFieldCount ();
  3926. sql="insert into digitalwork(";
  3927. for( i=0; i<colcount; i++)
  3928. {
  3929. myset.GetODBCFieldInfo(i, fieldinfo);
  3930. sql+="["+fieldinfo.m_strName+"],";
  3931. }
  3932. sql.TrimRight (",");
  3933. sql+=")values(";
  3934. for( i=0; i<colcount; i++)
  3935. {
  3936. myset.GetFieldValue(i, temp);
  3937. sql+="'"+temp+"',";
  3938. }
  3939. sql.TrimRight (",");
  3940. sql+=")";
  3941. MyExecuteSQL(pdb2, sql);
  3942. myset.MoveNext ();
  3943. }
  3944. myset.Close();
  3945. }
  3946. }
  3947. catch(CDBException * e)
  3948. {
  3949. WriteLogin("step9"+e->m_strError);
  3950. ret=9;
  3951. }
  3952. step=9;
  3953. try
  3954. {
  3955. if(retarray.ElementAt (8)=="0")
  3956. {
  3957. sql="select * from mywork where id='"+id+"'";
  3958. myset.Open (CRecordset::forwardOnly, sql);
  3959. while(!myset.IsEOF ())
  3960. {
  3961. colcount=myset.GetODBCFieldCount ();
  3962. sql="insert into mywork(";
  3963. for( i=0; i<colcount; i++)
  3964. {
  3965. myset.GetODBCFieldInfo(i, fieldinfo);
  3966. sql+="["+fieldinfo.m_strName+"],";
  3967. }
  3968. sql.TrimRight (",");
  3969. sql+=")values(";
  3970. for( i=0; i<colcount; i++)
  3971. {
  3972. myset.GetFieldValue(i, temp);
  3973. sql+="'"+temp+"',";
  3974. }
  3975. sql.TrimRight (",");
  3976. sql+=")";
  3977. MyExecuteSQL(pdb2, sql);
  3978. myset.MoveNext ();
  3979. }
  3980. myset.Close();
  3981. }
  3982. }
  3983. catch(CDBException * e)
  3984. {
  3985. WriteLogin("step10"+e->m_strError);
  3986. ret=10;
  3987. }
  3988. step=10;
  3989. try
  3990. {
  3991. if(retarray.ElementAt (9)=="0")
  3992. {
  3993. sql="select * from dindanjd where id='"+id+"'";
  3994. myset.Open (CRecordset::forwardOnly, sql);
  3995. while(!myset.IsEOF ())
  3996. {
  3997. colcount=myset.GetODBCFieldCount ();
  3998. sql="insert into dindanjd(";
  3999. for( i=0; i<colcount; i++)
  4000. {
  4001. myset.GetODBCFieldInfo(i, fieldinfo);
  4002. sql+="["+fieldinfo.m_strName+"],";
  4003. }
  4004. sql.TrimRight (",");
  4005. sql+=")values(";
  4006. for( i=0; i<colcount; i++)
  4007. {
  4008. myset.GetFieldValue(i, temp);
  4009. sql+="'"+temp+"',";
  4010. }
  4011. sql.TrimRight (",");
  4012. sql+=")";
  4013. MyExecuteSQL(pdb2, sql);
  4014. myset.MoveNext ();
  4015. }
  4016. myset.Close();
  4017. }
  4018. }
  4019. catch(CDBException * e)
  4020. {
  4021. WriteLogin("step11"+e->m_strError);
  4022. ret=11;
  4023. }
  4024. step=11;
  4025. try
  4026. {
  4027. if(retarray.ElementAt (10)=="0")
  4028. {
  4029. sql="select * from dindansp2 where id='"+id+"'";
  4030. myset.Open (CRecordset::forwardOnly, sql);
  4031. while(!myset.IsEOF ())
  4032. {
  4033. colcount=myset.GetODBCFieldCount ();
  4034. sql="insert into dindansp2(";
  4035. for( i=0; i<colcount; i++)
  4036. {
  4037. myset.GetODBCFieldInfo(i, fieldinfo);
  4038. sql+="["+fieldinfo.m_strName+"],";
  4039. }
  4040. sql.TrimRight (",");
  4041. sql+=")values(";
  4042. for( i=0; i<colcount; i++)
  4043. {
  4044. myset.GetFieldValue(i, temp);
  4045. sql+="'"+temp+"',";
  4046. }
  4047. sql.TrimRight (",");
  4048. sql+=")";
  4049. MyExecuteSQL(pdb2, sql);
  4050. myset.MoveNext ();
  4051. }
  4052. myset.Close();
  4053. }
  4054. }
  4055. catch(CDBException * e)
  4056. {
  4057. WriteLogin("step12"+e->m_strError);
  4058. ret=12;
  4059. }
  4060. step=12;
  4061. try
  4062. {
  4063. if(retarray.ElementAt (11)=="0")
  4064. {
  4065. sql="select * from dindansp3 where id='"+id+"'";
  4066. myset.Open (CRecordset::forwardOnly, sql);
  4067. while(!myset.IsEOF ())
  4068. {
  4069. colcount=myset.GetODBCFieldCount ();
  4070. sql="insert into dindansp3(";
  4071. for( i=0; i<colcount; i++)
  4072. {
  4073. myset.GetODBCFieldInfo(i, fieldinfo);
  4074. sql+="["+fieldinfo.m_strName+"],";
  4075. }
  4076. sql.TrimRight (",");
  4077. sql+=")values(";
  4078. for( i=0; i<colcount; i++)
  4079. {
  4080. myset.GetFieldValue(i, temp);
  4081. sql+="'"+temp+"',";
  4082. }
  4083. sql.TrimRight (",");
  4084. sql+=")";
  4085. MyExecuteSQL(pdb2, sql);
  4086. myset.MoveNext ();
  4087. }
  4088. myset.Close();
  4089. }
  4090. }
  4091. catch(CDBException * e)
  4092. {
  4093. WriteLogin("step13"+e->m_strError);
  4094. ret=13;
  4095. }
  4096. if(ret!=1)return ret;
  4097. return CheckDinDanExist(pdb1, pdb2, id, &retarray);
  4098. }
  4099. catch(...)
  4100. {
  4101. CString str;
  4102. str.Format("%d size:%d", step, retarray.GetSize());
  4103. WriteLogin("出错在函数trans1中-"+str);
  4104. }
  4105. return 0;
  4106. }
  4107. BOOL CDBServerDlg::TransPayOut(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4108. {
  4109. try
  4110. {
  4111. CString sql;
  4112. if(CheckPayOutExist(pdb1, pdb2, id))return 1;
  4113. int i;CString temp;
  4114. int colcount;
  4115. CODBCFieldInfo fieldinfo;
  4116. BOOL ret=1;
  4117. CRecordset myset(pdb1);
  4118. try
  4119. {
  4120. sql.Format("select * from gudingfeiyong where [id]=%d", atol(id));
  4121. myset.Open (CRecordset::forwardOnly, sql);
  4122. while(!myset.IsEOF ())
  4123. {
  4124. colcount=myset.GetODBCFieldCount ();
  4125. sql="insert into gudingfeiyong(";
  4126. for( i=0; i<colcount; i++)
  4127. {
  4128. myset.GetODBCFieldInfo(i, fieldinfo);
  4129. sql+="["+fieldinfo.m_strName+"],";
  4130. }
  4131. sql.TrimRight (",");
  4132. sql+=")values(";
  4133. for( i=0; i<colcount; i++)
  4134. {
  4135. myset.GetFieldValue(i, temp);
  4136. sql+="'"+temp+"',";
  4137. }
  4138. sql.TrimRight (",");
  4139. sql+=")";
  4140. MyExecuteSQL(pdb2, sql);
  4141. myset.MoveNext ();
  4142. }
  4143. myset.Close();
  4144. }
  4145. catch(CDBException * e)
  4146. {
  4147. WriteLogin(e->m_strError);
  4148. ret=0;
  4149. }
  4150. if(ret==0)return 0;
  4151. return CheckPayOutExist(pdb1, pdb2, id);
  4152. }
  4153. catch(...)
  4154. {
  4155. WriteLogin("出错在函数trans2中");
  4156. }
  4157. return 0;
  4158. }
  4159. //singleincome
  4160. BOOL CDBServerDlg::TransIncome(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4161. {
  4162. try
  4163. {
  4164. CString sql;
  4165. CStringArray retarray;
  4166. if(CheckIncomeExist(pdb1, pdb2, id, &retarray))return 1;
  4167. int i;CString temp;
  4168. int colcount;
  4169. CODBCFieldInfo fieldinfo;
  4170. BOOL ret=1;
  4171. CRecordset myset(pdb1);
  4172. try
  4173. {
  4174. if(retarray.ElementAt (0)=="0")
  4175. {
  4176. sql.Format("select * from singleincome where [id]=%d", atol(id));
  4177. myset.Open (CRecordset::forwardOnly, sql);
  4178. while(!myset.IsEOF ())
  4179. {
  4180. colcount=myset.GetODBCFieldCount ();
  4181. sql="insert into singleincome(";
  4182. for( i=0; i<colcount; i++)
  4183. {
  4184. myset.GetODBCFieldInfo(i, fieldinfo);
  4185. sql+="["+fieldinfo.m_strName+"],";
  4186. }
  4187. sql.TrimRight (",");
  4188. sql+=")values(";
  4189. for( i=0; i<colcount; i++)
  4190. {
  4191. myset.GetFieldValue(i, temp);
  4192. sql+="'"+temp+"',";
  4193. }
  4194. sql.TrimRight (",");
  4195. sql+=")";
  4196. MyExecuteSQL(pdb2, sql);
  4197. myset.MoveNext ();
  4198. }
  4199. myset.Close();
  4200. }
  4201. }
  4202. catch(...)
  4203. {
  4204. ret=0;
  4205. }
  4206. try
  4207. {
  4208. if(retarray.ElementAt (1)=="0")
  4209. {
  4210. sql.Format("select * from singleincomemoney where [id]='%s'", id);
  4211. myset.Open (CRecordset::forwardOnly, sql);
  4212. while(!myset.IsEOF ())
  4213. {
  4214. colcount=myset.GetODBCFieldCount ();
  4215. sql="insert into singleincomemoney(";
  4216. for( i=0; i<colcount; i++)
  4217. {
  4218. myset.GetODBCFieldInfo(i, fieldinfo);
  4219. sql+="["+fieldinfo.m_strName+"],";
  4220. }
  4221. sql.TrimRight (",");
  4222. sql+=")values(";
  4223. for( i=0; i<colcount; i++)
  4224. {
  4225. myset.GetFieldValue(i, temp);
  4226. sql+="'"+temp+"',";
  4227. }
  4228. sql.TrimRight (",");
  4229. sql+=")";
  4230. MyExecuteSQL(pdb2, sql);
  4231. myset.MoveNext ();
  4232. }
  4233. myset.Close();
  4234. }
  4235. }
  4236. catch(CDBException * e)
  4237. {
  4238. WriteLogin(e->m_strError);
  4239. ret=0;
  4240. }
  4241. if(ret==0)return 0;
  4242. return CheckIncomeExist(pdb1, pdb2, id, &retarray);
  4243. }
  4244. catch(...)
  4245. {
  4246. WriteLogin("出错在函数trans3中");
  4247. }
  4248. return 0;
  4249. }
  4250. BOOL CDBServerDlg::TransIncomeMoney(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4251. {
  4252. try
  4253. {
  4254. CString sql;
  4255. if(CheckIncomeMoneyExist(pdb1, pdb2, id))return 1;
  4256. int i;CString temp;
  4257. int colcount;
  4258. CODBCFieldInfo fieldinfo;
  4259. BOOL ret=1;
  4260. CRecordset myset(pdb1);
  4261. try
  4262. {
  4263. sql.Format("select * from singleincomemoney where [id]='%s'", id);
  4264. myset.Open (CRecordset::forwardOnly, sql);
  4265. while(!myset.IsEOF ())
  4266. {
  4267. colcount=myset.GetODBCFieldCount ();
  4268. sql="insert into singleincomemoney(";
  4269. for( i=0; i<colcount; i++)
  4270. {
  4271. myset.GetODBCFieldInfo(i, fieldinfo);
  4272. sql+="["+fieldinfo.m_strName+"],";
  4273. }
  4274. sql.TrimRight (",");
  4275. sql+=")values(";
  4276. for( i=0; i<colcount; i++)
  4277. {
  4278. myset.GetFieldValue(i, temp);
  4279. sql+="'"+temp+"',";
  4280. }
  4281. sql.TrimRight (",");
  4282. sql+=")";
  4283. MyExecuteSQL(pdb2, sql);
  4284. myset.MoveNext ();
  4285. }
  4286. myset.Close();
  4287. }
  4288. catch(CDBException * e)
  4289. {
  4290. WriteLogin(e->m_strError);
  4291. ret=0;
  4292. }
  4293. if(ret==0)return 0;
  4294. return CheckIncomeMoneyExist(pdb1, pdb2, id);
  4295. }
  4296. catch(...)
  4297. {
  4298. WriteLogin("出错在函数trans3中");
  4299. }
  4300. return 0;
  4301. }
  4302. BOOL CDBServerDlg::Checkclient2phonerecordExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4303. {
  4304. try
  4305. {
  4306. int count1=0;
  4307. int count2=0;
  4308. CString sql;
  4309. {
  4310. CRecordset myset(pdb1);
  4311. sql="select count(*) as cot from client2phonerecord where [datetime]='"+id+"'";
  4312. myset.Open (CRecordset::forwardOnly, sql);
  4313. myset.GetFieldValue ("cot", sql);
  4314. myset.Close();
  4315. count1=atoi(sql);
  4316. }
  4317. {
  4318. CRecordset myset(pdb2);
  4319. sql="select count(*) as cot from client2phonerecord where [datetime]='"+id+"'";
  4320. myset.Open (CRecordset::forwardOnly, sql);
  4321. myset.GetFieldValue ("cot", sql);
  4322. myset.Close();
  4323. count2=atoi(sql);
  4324. }
  4325. if(count1>count2)return 0;
  4326. return 1;
  4327. }
  4328. catch(...)
  4329. {
  4330. WriteLogin("出错在函数check3中");
  4331. }
  4332. return 0;
  4333. }
  4334. BOOL CDBServerDlg::Transclient2phonerecord(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4335. {
  4336. try
  4337. {
  4338. CString sql;
  4339. if(Checkclient2phonerecordExist(pdb1, pdb2, id))return 1;
  4340. int i;CString temp;
  4341. int colcount;
  4342. CODBCFieldInfo fieldinfo;
  4343. BOOL ret=1;
  4344. CRecordset myset(pdb1);
  4345. try
  4346. {
  4347. sql.Format("select * from client2phonerecord where [datetime]='%s'", id );
  4348. myset.Open (CRecordset::forwardOnly, sql);
  4349. while(!myset.IsEOF ())
  4350. {
  4351. colcount=myset.GetODBCFieldCount ();
  4352. sql="insert into client2phonerecord(";
  4353. for( i=0; i<colcount; i++)
  4354. {
  4355. myset.GetODBCFieldInfo(i, fieldinfo);
  4356. sql+="["+fieldinfo.m_strName+"],";
  4357. }
  4358. sql.TrimRight (",");
  4359. sql+=")values(";
  4360. for( i=0; i<colcount; i++)
  4361. {
  4362. myset.GetFieldValue(i, temp);
  4363. sql+="'"+temp+"',";
  4364. }
  4365. sql.TrimRight (",");
  4366. sql+=")";
  4367. MyExecuteSQL(pdb2, sql);
  4368. myset.MoveNext ();
  4369. }
  4370. myset.Close();
  4371. }
  4372. catch(...)
  4373. {
  4374. ret=0;
  4375. }
  4376. if(ret==0)return 0;
  4377. return Checkclient2phonerecordExist(pdb1, pdb2, id);
  4378. }
  4379. catch(...)
  4380. {
  4381. WriteLogin("出错在函数trans3中");
  4382. }
  4383. return 0;
  4384. }
  4385. BOOL CDBServerDlg::Checkclient3phonerecordExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4386. {
  4387. try
  4388. {
  4389. int count1=0;
  4390. int count2=0;
  4391. CString sql;
  4392. {
  4393. CRecordset myset(pdb1);
  4394. sql="select count(*) as cot from client3phonerecord where [datetime]='"+id+"'";
  4395. myset.Open (CRecordset::forwardOnly, sql);
  4396. myset.GetFieldValue ("cot", sql);
  4397. myset.Close();
  4398. count1=atoi(sql);
  4399. }
  4400. {
  4401. CRecordset myset(pdb2);
  4402. sql="select count(*) as cot from client3phonerecord where [datetime]='"+id+"'";
  4403. myset.Open (CRecordset::forwardOnly, sql);
  4404. myset.GetFieldValue ("cot", sql);
  4405. myset.Close();
  4406. count2=atoi(sql);
  4407. }
  4408. if(count1>count2)return 0;
  4409. return 1;
  4410. }
  4411. catch(...)
  4412. {
  4413. WriteLogin("出错在函数check3中");
  4414. }
  4415. return 0;
  4416. }
  4417. BOOL CDBServerDlg::Transclient3phonerecord(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4418. {
  4419. try
  4420. {
  4421. CString sql;
  4422. if(Checkclient3phonerecordExist(pdb1, pdb2, id))return 1;
  4423. int i;CString temp;
  4424. int colcount;
  4425. CODBCFieldInfo fieldinfo;
  4426. BOOL ret=1;
  4427. CRecordset myset(pdb1);
  4428. try
  4429. {
  4430. sql.Format("select * from client3phonerecord where [datetime]='%s'", id );
  4431. myset.Open (CRecordset::forwardOnly, sql);
  4432. while(!myset.IsEOF ())
  4433. {
  4434. colcount=myset.GetODBCFieldCount ();
  4435. sql="insert into client3phonerecord(";
  4436. for( i=0; i<colcount; i++)
  4437. {
  4438. myset.GetODBCFieldInfo(i, fieldinfo);
  4439. sql+="["+fieldinfo.m_strName+"],";
  4440. }
  4441. sql.TrimRight (",");
  4442. sql+=")values(";
  4443. for( i=0; i<colcount; i++)
  4444. {
  4445. myset.GetFieldValue(i, temp);
  4446. sql+="'"+temp+"',";
  4447. }
  4448. sql.TrimRight (",");
  4449. sql+=")";
  4450. MyExecuteSQL(pdb2, sql);
  4451. myset.MoveNext ();
  4452. }
  4453. myset.Close();
  4454. }
  4455. catch(...)
  4456. {
  4457. ret=0;
  4458. }
  4459. if(ret==0)return 0;
  4460. return Checkclient3phonerecordExist(pdb1, pdb2, id);
  4461. }
  4462. catch(...)
  4463. {
  4464. WriteLogin("出错在函数trans3中");
  4465. }
  4466. return 0;
  4467. }
  4468. BOOL CDBServerDlg::Checkclient2phonerecordoutExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4469. {
  4470. try
  4471. {
  4472. int count1=0;
  4473. int count2=0;
  4474. CString sql;
  4475. {
  4476. CRecordset myset(pdb1);
  4477. sql="select count(*) as cot from client2phonerecordout where [datetime]='"+id+"'";
  4478. myset.Open (CRecordset::forwardOnly, sql);
  4479. myset.GetFieldValue ("cot", sql);
  4480. myset.Close();
  4481. count1=atoi(sql);
  4482. }
  4483. {
  4484. CRecordset myset(pdb2);
  4485. sql="select count(*) as cot from client2phonerecordout where [datetime]='"+id+"'";
  4486. myset.Open (CRecordset::forwardOnly, sql);
  4487. myset.GetFieldValue ("cot", sql);
  4488. myset.Close();
  4489. count2=atoi(sql);
  4490. }
  4491. if(count1>count2)return 0;
  4492. return 1;
  4493. }
  4494. catch(...)
  4495. {
  4496. WriteLogin("出错在函数check3中");
  4497. }
  4498. return 0;
  4499. }
  4500. BOOL CDBServerDlg::Transclient2phonerecordout(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4501. {
  4502. try
  4503. {
  4504. CString sql;
  4505. if(Checkclient2phonerecordoutExist(pdb1, pdb2, id))return 1;
  4506. int i;CString temp;
  4507. int colcount;
  4508. CODBCFieldInfo fieldinfo;
  4509. BOOL ret=1;
  4510. CRecordset myset(pdb1);
  4511. try
  4512. {
  4513. sql.Format("select * from client2phonerecordout where [datetime]='%s'", id );
  4514. myset.Open (CRecordset::forwardOnly, sql);
  4515. while(!myset.IsEOF ())
  4516. {
  4517. colcount=myset.GetODBCFieldCount ();
  4518. sql="insert into client2phonerecordout(";
  4519. for( i=0; i<colcount; i++)
  4520. {
  4521. myset.GetODBCFieldInfo(i, fieldinfo);
  4522. sql+="["+fieldinfo.m_strName+"],";
  4523. }
  4524. sql.TrimRight (",");
  4525. sql+=")values(";
  4526. for( i=0; i<colcount; i++)
  4527. {
  4528. myset.GetFieldValue(i, temp);
  4529. sql+="'"+temp+"',";
  4530. }
  4531. sql.TrimRight (",");
  4532. sql+=")";
  4533. MyExecuteSQL(pdb2, sql);
  4534. myset.MoveNext ();
  4535. }
  4536. myset.Close();
  4537. }
  4538. catch(...)
  4539. {
  4540. ret=0;
  4541. }
  4542. if(ret==0)return 0;
  4543. return Checkclient2phonerecordoutExist(pdb1, pdb2, id);
  4544. }
  4545. catch(...)
  4546. {
  4547. WriteLogin("出错在函数trans3中");
  4548. }
  4549. return 0;
  4550. }
  4551. BOOL CDBServerDlg::Checkclient3phonerecordoutExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4552. {
  4553. try
  4554. {
  4555. int count1=0;
  4556. int count2=0;
  4557. CString sql;
  4558. {
  4559. CRecordset myset(pdb1);
  4560. sql="select count(*) as cot from client3phonerecordout where [datetime]='"+id+"'";
  4561. myset.Open (CRecordset::forwardOnly, sql);
  4562. myset.GetFieldValue ("cot", sql);
  4563. myset.Close();
  4564. count1=atoi(sql);
  4565. }
  4566. {
  4567. CRecordset myset(pdb2);
  4568. sql="select count(*) as cot from client3phonerecordout where [datetime]='"+id+"'";
  4569. myset.Open (CRecordset::forwardOnly, sql);
  4570. myset.GetFieldValue ("cot", sql);
  4571. myset.Close();
  4572. count2=atoi(sql);
  4573. }
  4574. if(count1>count2)return 0;
  4575. return 1;
  4576. }
  4577. catch(...)
  4578. {
  4579. WriteLogin("出错在函数check3中");
  4580. }
  4581. return 0;
  4582. }
  4583. BOOL CDBServerDlg::Transclient3phonerecordout(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4584. {
  4585. try
  4586. {
  4587. CString sql;
  4588. if(Checkclient3phonerecordoutExist(pdb1, pdb2, id))return 1;
  4589. int i;CString temp;
  4590. int colcount;
  4591. CODBCFieldInfo fieldinfo;
  4592. BOOL ret=1;
  4593. CRecordset myset(pdb1);
  4594. try
  4595. {
  4596. sql.Format("select * from client3phonerecordout where [datetime]='%s'", id );
  4597. myset.Open (CRecordset::forwardOnly, sql);
  4598. while(!myset.IsEOF ())
  4599. {
  4600. colcount=myset.GetODBCFieldCount ();
  4601. sql="insert into client3phonerecordout(";
  4602. for( i=0; i<colcount; i++)
  4603. {
  4604. myset.GetODBCFieldInfo(i, fieldinfo);
  4605. sql+="["+fieldinfo.m_strName+"],";
  4606. }
  4607. sql.TrimRight (",");
  4608. sql+=")values(";
  4609. for( i=0; i<colcount; i++)
  4610. {
  4611. myset.GetFieldValue(i, temp);
  4612. sql+="'"+temp+"',";
  4613. }
  4614. sql.TrimRight (",");
  4615. sql+=")";
  4616. MyExecuteSQL(pdb2, sql);
  4617. myset.MoveNext ();
  4618. }
  4619. myset.Close();
  4620. }
  4621. catch(...)
  4622. {
  4623. ret=0;
  4624. }
  4625. if(ret==0)return 0;
  4626. return Checkclient3phonerecordoutExist(pdb1, pdb2, id);
  4627. }
  4628. catch(...)
  4629. {
  4630. WriteLogin("出错在函数trans3中");
  4631. }
  4632. return 0;
  4633. }
  4634. BOOL CDBServerDlg::CheckemployeephonerecordExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4635. {
  4636. try
  4637. {
  4638. int count1=0;
  4639. int count2=0;
  4640. CString sql;
  4641. {
  4642. CRecordset myset(pdb1);
  4643. sql="select count(*) as cot from employeephonerecord where [datetime]='"+id+"'";
  4644. myset.Open (CRecordset::forwardOnly, sql);
  4645. myset.GetFieldValue ("cot", sql);
  4646. myset.Close();
  4647. count1=atoi(sql);
  4648. }
  4649. {
  4650. CRecordset myset(pdb2);
  4651. sql="select count(*) as cot from employeephonerecord where [datetime]='"+id+"'";
  4652. myset.Open (CRecordset::forwardOnly, sql);
  4653. myset.GetFieldValue ("cot", sql);
  4654. myset.Close();
  4655. count2=atoi(sql);
  4656. }
  4657. if(count1>count2)return 0;
  4658. return 1;
  4659. }
  4660. catch(...)
  4661. {
  4662. WriteLogin("出错在函数check3中");
  4663. }
  4664. return 0;
  4665. }
  4666. BOOL CDBServerDlg::Transemployeephonerecord(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4667. {
  4668. try
  4669. {
  4670. CString sql;
  4671. if(CheckemployeephonerecordExist(pdb1, pdb2, id))return 1;
  4672. int i;CString temp;
  4673. int colcount;
  4674. CODBCFieldInfo fieldinfo;
  4675. BOOL ret=1;
  4676. CRecordset myset(pdb1);
  4677. try
  4678. {
  4679. sql.Format("select * from employeephonerecord where [datetime]='%s'", id );
  4680. myset.Open (CRecordset::forwardOnly, sql);
  4681. while(!myset.IsEOF ())
  4682. {
  4683. colcount=myset.GetODBCFieldCount ();
  4684. sql="insert into employeephonerecord(";
  4685. for( i=0; i<colcount; i++)
  4686. {
  4687. myset.GetODBCFieldInfo(i, fieldinfo);
  4688. sql+="["+fieldinfo.m_strName+"],";
  4689. }
  4690. sql.TrimRight (",");
  4691. sql+=")values(";
  4692. for( i=0; i<colcount; i++)
  4693. {
  4694. myset.GetFieldValue(i, temp);
  4695. sql+="'"+temp+"',";
  4696. }
  4697. sql.TrimRight (",");
  4698. sql+=")";
  4699. MyExecuteSQL(pdb2, sql);
  4700. myset.MoveNext ();
  4701. }
  4702. myset.Close();
  4703. }
  4704. catch(...)
  4705. {
  4706. ret=0;
  4707. }
  4708. if(ret==0)return 0;
  4709. return CheckemployeephonerecordExist(pdb1, pdb2, id);
  4710. }
  4711. catch(...)
  4712. {
  4713. WriteLogin("出错在函数trans3中");
  4714. }
  4715. return 0;
  4716. }
  4717. BOOL CDBServerDlg::CheckemployeephonerecordoutExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4718. {
  4719. try
  4720. {
  4721. int count1=0;
  4722. int count2=0;
  4723. CString sql;
  4724. {
  4725. CRecordset myset(pdb1);
  4726. sql="select count(*) as cot from employeephonerecordout where [datetime]='"+id+"'";
  4727. myset.Open (CRecordset::forwardOnly, sql);
  4728. myset.GetFieldValue ("cot", sql);
  4729. myset.Close();
  4730. count1=atoi(sql);
  4731. }
  4732. {
  4733. CRecordset myset(pdb2);
  4734. sql="select count(*) as cot from employeephonerecordout where [datetime]='"+id+"'";
  4735. myset.Open (CRecordset::forwardOnly, sql);
  4736. myset.GetFieldValue ("cot", sql);
  4737. myset.Close();
  4738. count2=atoi(sql);
  4739. }
  4740. if(count1>count2)return 0;
  4741. return 1;
  4742. }
  4743. catch(...)
  4744. {
  4745. WriteLogin("出错在函数check3中");
  4746. }
  4747. return 0;
  4748. }
  4749. BOOL CDBServerDlg::Transemployeephonerecordout(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4750. {
  4751. try
  4752. {
  4753. CString sql;
  4754. if(CheckemployeephonerecordoutExist(pdb1, pdb2, id))return 1;
  4755. int i;CString temp;
  4756. int colcount;
  4757. CODBCFieldInfo fieldinfo;
  4758. BOOL ret=1;
  4759. CRecordset myset(pdb1);
  4760. try
  4761. {
  4762. sql.Format("select * from employeephonerecordout where [datetime]='%s'", id );
  4763. myset.Open (CRecordset::forwardOnly, sql);
  4764. while(!myset.IsEOF ())
  4765. {
  4766. colcount=myset.GetODBCFieldCount ();
  4767. sql="insert into employeephonerecordout(";
  4768. for( i=0; i<colcount; i++)
  4769. {
  4770. myset.GetODBCFieldInfo(i, fieldinfo);
  4771. sql+="["+fieldinfo.m_strName+"],";
  4772. }
  4773. sql.TrimRight (",");
  4774. sql+=")values(";
  4775. for( i=0; i<colcount; i++)
  4776. {
  4777. myset.GetFieldValue(i, temp);
  4778. sql+="'"+temp+"',";
  4779. }
  4780. sql.TrimRight (",");
  4781. sql+=")";
  4782. MyExecuteSQL(pdb2, sql);
  4783. myset.MoveNext ();
  4784. }
  4785. myset.Close();
  4786. }
  4787. catch(...)
  4788. {
  4789. ret=0;
  4790. }
  4791. if(ret==0)return 0;
  4792. return CheckemployeephonerecordoutExist(pdb1, pdb2, id);
  4793. }
  4794. catch(...)
  4795. {
  4796. WriteLogin("出错在函数trans3中");
  4797. }
  4798. return 0;
  4799. }
  4800. BOOL CDBServerDlg::CheckphonerecordExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4801. {
  4802. try
  4803. {
  4804. int count1=0;
  4805. int count2=0;
  4806. CString sql;
  4807. {
  4808. CRecordset myset(pdb1);
  4809. sql="select count(*) as cot from phonerecord where [datetime]='"+id+"'";
  4810. myset.Open (CRecordset::forwardOnly, sql);
  4811. myset.GetFieldValue ("cot", sql);
  4812. myset.Close();
  4813. count1=atoi(sql);
  4814. }
  4815. {
  4816. CRecordset myset(pdb2);
  4817. sql="select count(*) as cot from phonerecord where [datetime]='"+id+"'";
  4818. myset.Open (CRecordset::forwardOnly, sql);
  4819. myset.GetFieldValue ("cot", sql);
  4820. myset.Close();
  4821. count2=atoi(sql);
  4822. }
  4823. if(count1>count2)return 0;
  4824. return 1;
  4825. }
  4826. catch(...)
  4827. {
  4828. WriteLogin("出错在函数check3中");
  4829. }
  4830. return 0;
  4831. }
  4832. BOOL CDBServerDlg::Transphonerecord(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4833. {
  4834. try
  4835. {
  4836. CString sql;
  4837. if(CheckphonerecordExist(pdb1, pdb2, id))return 1;
  4838. int i;CString temp;
  4839. int colcount;
  4840. CODBCFieldInfo fieldinfo;
  4841. BOOL ret=1;
  4842. CRecordset myset(pdb1);
  4843. try
  4844. {
  4845. sql.Format("select * from phonerecord where [datetime]='%s'", id );
  4846. myset.Open (CRecordset::forwardOnly, sql);
  4847. while(!myset.IsEOF ())
  4848. {
  4849. colcount=myset.GetODBCFieldCount ();
  4850. sql="insert into phonerecord(";
  4851. for( i=0; i<colcount; i++)
  4852. {
  4853. myset.GetODBCFieldInfo(i, fieldinfo);
  4854. sql+="["+fieldinfo.m_strName+"],";
  4855. }
  4856. sql.TrimRight (",");
  4857. sql+=")values(";
  4858. for( i=0; i<colcount; i++)
  4859. {
  4860. myset.GetFieldValue(i, temp);
  4861. sql+="'"+temp+"',";
  4862. }
  4863. sql.TrimRight (",");
  4864. sql+=")";
  4865. MyExecuteSQL(pdb2, sql);
  4866. myset.MoveNext ();
  4867. }
  4868. myset.Close();
  4869. }
  4870. catch(...)
  4871. {
  4872. ret=0;
  4873. }
  4874. if(ret==0)return 0;
  4875. return CheckphonerecordExist(pdb1, pdb2, id);
  4876. }
  4877. catch(...)
  4878. {
  4879. WriteLogin("出错在函数trans3中");
  4880. }
  4881. return 0;
  4882. }
  4883. BOOL CDBServerDlg::CheckphonerecordoutExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4884. {
  4885. try
  4886. {
  4887. int count1=0;
  4888. int count2=0;
  4889. CString sql;
  4890. {
  4891. CRecordset myset(pdb1);
  4892. sql="select count(*) as cot from phonerecordout where [datetime]='"+id+"'";
  4893. myset.Open (CRecordset::forwardOnly, sql);
  4894. myset.GetFieldValue ("cot", sql);
  4895. myset.Close();
  4896. count1=atoi(sql);
  4897. }
  4898. {
  4899. CRecordset myset(pdb2);
  4900. sql="select count(*) as cot from phonerecordout where [datetime]='"+id+"'";
  4901. myset.Open (CRecordset::forwardOnly, sql);
  4902. myset.GetFieldValue ("cot", sql);
  4903. myset.Close();
  4904. count2=atoi(sql);
  4905. }
  4906. if(count1>count2)return 0;
  4907. return 1;
  4908. }
  4909. catch(...)
  4910. {
  4911. WriteLogin("出错在函数check3中");
  4912. }
  4913. return 0;
  4914. }
  4915. BOOL CDBServerDlg::Transphonerecordout(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4916. {
  4917. try
  4918. {
  4919. CString sql;
  4920. if(CheckphonerecordoutExist(pdb1, pdb2, id))return 1;
  4921. int i;CString temp;
  4922. int colcount;
  4923. CODBCFieldInfo fieldinfo;
  4924. BOOL ret=1;
  4925. CRecordset myset(pdb1);
  4926. try
  4927. {
  4928. sql.Format("select * from phonerecordout where [datetime]='%s'", id );
  4929. myset.Open (CRecordset::forwardOnly, sql);
  4930. while(!myset.IsEOF ())
  4931. {
  4932. colcount=myset.GetODBCFieldCount ();
  4933. sql="insert into phonerecordout(";
  4934. for( i=0; i<colcount; i++)
  4935. {
  4936. myset.GetODBCFieldInfo(i, fieldinfo);
  4937. sql+="["+fieldinfo.m_strName+"],";
  4938. }
  4939. sql.TrimRight (",");
  4940. sql+=")values(";
  4941. for( i=0; i<colcount; i++)
  4942. {
  4943. myset.GetFieldValue(i, temp);
  4944. sql+="'"+temp+"',";
  4945. }
  4946. sql.TrimRight (",");
  4947. sql+=")";
  4948. MyExecuteSQL(pdb2, sql);
  4949. myset.MoveNext ();
  4950. }
  4951. myset.Close();
  4952. }
  4953. catch(...)
  4954. {
  4955. ret=0;
  4956. }
  4957. if(ret==0)return 0;
  4958. return CheckphonerecordoutExist(pdb1, pdb2, id);
  4959. }
  4960. catch(...)
  4961. {
  4962. WriteLogin("出错在函数trans3中");
  4963. }
  4964. return 0;
  4965. }
  4966. BOOL CDBServerDlg::CheckunknownphonerecordExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4967. {
  4968. try
  4969. {
  4970. int count1=0;
  4971. int count2=0;
  4972. CString sql;
  4973. {
  4974. CRecordset myset(pdb1);
  4975. sql="select count(*) as cot from unknownphonerecord where [datetime]='"+id+"'";
  4976. myset.Open (CRecordset::forwardOnly, sql);
  4977. myset.GetFieldValue ("cot", sql);
  4978. myset.Close();
  4979. count1=atoi(sql);
  4980. }
  4981. {
  4982. CRecordset myset(pdb2);
  4983. sql="select count(*) as cot from unknownphonerecord where [datetime]='"+id+"'";
  4984. myset.Open (CRecordset::forwardOnly, sql);
  4985. myset.GetFieldValue ("cot", sql);
  4986. myset.Close();
  4987. count2=atoi(sql);
  4988. }
  4989. if(count1>count2)return 0;
  4990. return 1;
  4991. }
  4992. catch(...)
  4993. {
  4994. WriteLogin("出错在函数check3中");
  4995. }
  4996. return 0;
  4997. }
  4998. BOOL CDBServerDlg::Transunknownphonerecord(CDatabase *pdb1, CDatabase *pdb2, CString id)
  4999. {
  5000. try
  5001. {
  5002. CString sql;
  5003. if(CheckunknownphonerecordExist(pdb1, pdb2, id))return 1;
  5004. int i;CString temp;
  5005. int colcount;
  5006. CODBCFieldInfo fieldinfo;
  5007. BOOL ret=1;
  5008. CRecordset myset(pdb1);
  5009. try
  5010. {
  5011. sql.Format("select * from unknownphonerecord where [datetime]='%s'", id );
  5012. myset.Open (CRecordset::forwardOnly, sql);
  5013. while(!myset.IsEOF ())
  5014. {
  5015. colcount=myset.GetODBCFieldCount ();
  5016. sql="insert into unknownphonerecord(";
  5017. for( i=0; i<colcount; i++)
  5018. {
  5019. myset.GetODBCFieldInfo(i, fieldinfo);
  5020. sql+="["+fieldinfo.m_strName+"],";
  5021. }
  5022. sql.TrimRight (",");
  5023. sql+=")values(";
  5024. for( i=0; i<colcount; i++)
  5025. {
  5026. myset.GetFieldValue(i, temp);
  5027. sql+="'"+temp+"',";
  5028. }
  5029. sql.TrimRight (",");
  5030. sql+=")";
  5031. MyExecuteSQL(pdb2, sql);
  5032. myset.MoveNext ();
  5033. }
  5034. myset.Close();
  5035. }
  5036. catch(...)
  5037. {
  5038. ret=0;
  5039. }
  5040. if(ret==0)return 0;
  5041. return CheckunknownphonerecordExist(pdb1, pdb2, id);
  5042. }
  5043. catch(...)
  5044. {
  5045. WriteLogin("出错在函数trans3中");
  5046. }
  5047. return 0;
  5048. }
  5049. BOOL CDBServerDlg::CheckunknownphonerecordoutExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  5050. {
  5051. try
  5052. {
  5053. int count1=0;
  5054. int count2=0;
  5055. CString sql;
  5056. {
  5057. CRecordset myset(pdb1);
  5058. sql="select count(*) as cot from unknownphonerecordout where [datetime]='"+id+"'";
  5059. myset.Open (CRecordset::forwardOnly, sql);
  5060. myset.GetFieldValue ("cot", sql);
  5061. myset.Close();
  5062. count1=atoi(sql);
  5063. }
  5064. {
  5065. CRecordset myset(pdb2);
  5066. sql="select count(*) as cot from unknownphonerecordout where [datetime]='"+id+"'";
  5067. myset.Open (CRecordset::forwardOnly, sql);
  5068. myset.GetFieldValue ("cot", sql);
  5069. myset.Close();
  5070. count2=atoi(sql);
  5071. }
  5072. if(count1>count2)return 0;
  5073. return 1;
  5074. }
  5075. catch(...)
  5076. {
  5077. WriteLogin("出错在函数check3中");
  5078. }
  5079. return 0;
  5080. }
  5081. BOOL CDBServerDlg::Transunknownphonerecordout(CDatabase *pdb1, CDatabase *pdb2, CString id)
  5082. {
  5083. try
  5084. {
  5085. CString sql;
  5086. if(CheckunknownphonerecordoutExist(pdb1, pdb2, id))return 1;
  5087. int i;CString temp;
  5088. int colcount;
  5089. CODBCFieldInfo fieldinfo;
  5090. BOOL ret=1;
  5091. CRecordset myset(pdb1);
  5092. try
  5093. {
  5094. sql.Format("select * from unknownphonerecordout where [datetime]='%s'", id );
  5095. myset.Open (CRecordset::forwardOnly, sql);
  5096. while(!myset.IsEOF ())
  5097. {
  5098. colcount=myset.GetODBCFieldCount ();
  5099. sql="insert into unknownphonerecordout(";
  5100. for( i=0; i<colcount; i++)
  5101. {
  5102. myset.GetODBCFieldInfo(i, fieldinfo);
  5103. sql+="["+fieldinfo.m_strName+"],";
  5104. }
  5105. sql.TrimRight (",");
  5106. sql+=")values(";
  5107. for( i=0; i<colcount; i++)
  5108. {
  5109. myset.GetFieldValue(i, temp);
  5110. sql+="'"+temp+"',";
  5111. }
  5112. sql.TrimRight (",");
  5113. sql+=")";
  5114. MyExecuteSQL(pdb2, sql);
  5115. myset.MoveNext ();
  5116. }
  5117. myset.Close();
  5118. }
  5119. catch(...)
  5120. {
  5121. ret=0;
  5122. }
  5123. if(ret==0)return 0;
  5124. return CheckunknownphonerecordoutExist(pdb1, pdb2, id);
  5125. }
  5126. catch(...)
  5127. {
  5128. WriteLogin("出错在函数trans3中");
  5129. }
  5130. return 0;
  5131. }
  5132. BOOL CDBServerDlg::CheckmisscallrecordExist(CDatabase *pdb1, CDatabase *pdb2, CString id)
  5133. {
  5134. try
  5135. {
  5136. int count1=0;
  5137. int count2=0;
  5138. CString sql;
  5139. {
  5140. CRecordset myset(pdb1);
  5141. sql="select count(*) as cot from misscallrecord where [datetime]='"+id+"'";
  5142. myset.Open (CRecordset::forwardOnly, sql);
  5143. myset.GetFieldValue ("cot", sql);
  5144. myset.Close();
  5145. count1=atoi(sql);
  5146. }
  5147. {
  5148. CRecordset myset(pdb2);
  5149. sql="select count(*) as cot from misscallrecord where [datetime]='"+id+"'";
  5150. myset.Open (CRecordset::forwardOnly, sql);
  5151. myset.GetFieldValue ("cot", sql);
  5152. myset.Close();
  5153. count2=atoi(sql);
  5154. }
  5155. if(count1>count2)return 0;
  5156. return 1;
  5157. }
  5158. catch(...)
  5159. {
  5160. WriteLogin("出错在函数check3中");
  5161. }
  5162. return 0;
  5163. }
  5164. BOOL CDBServerDlg::Transmisscallrecord(CDatabase *pdb1, CDatabase *pdb2, CString id)
  5165. {
  5166. try
  5167. {
  5168. CString sql;
  5169. if(CheckmisscallrecordExist(pdb1, pdb2, id))return 1;
  5170. int i;CString temp;
  5171. int colcount;
  5172. CODBCFieldInfo fieldinfo;
  5173. BOOL ret=1;
  5174. CRecordset myset(pdb1);
  5175. try
  5176. {
  5177. sql.Format("select * from misscallrecord where [datetime]='%s'", id );
  5178. myset.Open (CRecordset::forwardOnly, sql);
  5179. while(!myset.IsEOF ())
  5180. {
  5181. colcount=myset.GetODBCFieldCount ();
  5182. sql="insert into misscallrecord(";
  5183. for( i=0; i<colcount; i++)
  5184. {
  5185. myset.GetODBCFieldInfo(i, fieldinfo);
  5186. sql+="["+fieldinfo.m_strName+"],";
  5187. }
  5188. sql.TrimRight (",");
  5189. sql+=")values(";
  5190. for( i=0; i<colcount; i++)
  5191. {
  5192. myset.GetFieldValue(i, temp);
  5193. sql+="'"+temp+"',";
  5194. }
  5195. sql.TrimRight (",");
  5196. sql+=")";
  5197. MyExecuteSQL(pdb2, sql);
  5198. myset.MoveNext ();
  5199. }
  5200. myset.Close();
  5201. }
  5202. catch(...)
  5203. {
  5204. ret=0;
  5205. }
  5206. if(ret==0)return 0;
  5207. return CheckmisscallrecordExist(pdb1, pdb2, id);
  5208. }
  5209. catch(...)
  5210. {
  5211. WriteLogin("出错在函数trans3中");
  5212. }
  5213. return 0;
  5214. }
  5215. BOOL CDBServerDlg::CheckSendReg(CDatabase *pdb1, CDatabase *pdb2, CString id)
  5216. {
  5217. try
  5218. {
  5219. int count1=0;
  5220. int count2=0;
  5221. CString sql;
  5222. {
  5223. CRecordset myset(pdb1);
  5224. sql.Format("select count(*) as cot from sendreg where [timestamp]='%s'", id );
  5225. myset.Open (CRecordset::forwardOnly, sql);
  5226. myset.GetFieldValue ("cot", sql);
  5227. myset.Close();
  5228. count1=atoi(sql);
  5229. }
  5230. {
  5231. CRecordset myset(pdb2);
  5232. sql.Format("select count(*) as cot from sendreg where [timestamp]='%s'", id );
  5233. myset.Open (CRecordset::forwardOnly, sql);
  5234. myset.GetFieldValue ("cot", sql);
  5235. myset.Close();
  5236. count2=atoi(sql);
  5237. }
  5238. if(count1>count2)return 0;
  5239. return 1;
  5240. }
  5241. catch(...)
  5242. {
  5243. WriteLogin("出错在函数check3中");
  5244. }
  5245. return 0;
  5246. }
  5247. BOOL CDBServerDlg::TransSendReg(CDatabase *pdb1, CDatabase *pdb2, CString id)
  5248. {
  5249. try
  5250. {
  5251. CString sql;
  5252. if(CheckSendReg(pdb1, pdb2, id))return 1;
  5253. int i;CString temp;
  5254. int colcount;
  5255. CODBCFieldInfo fieldinfo;
  5256. BOOL ret=1;
  5257. CRecordset myset(pdb1);
  5258. try
  5259. {
  5260. sql.Format("select * from sendreg where [timestamp]='%s'", id );
  5261. myset.Open (CRecordset::forwardOnly, sql);
  5262. int autoidpos=0;
  5263. while(!myset.IsEOF ())
  5264. {
  5265. colcount=myset.GetODBCFieldCount ();
  5266. sql="insert into sendreg(";
  5267. for( i=0; i<colcount; i++)
  5268. {
  5269. myset.GetODBCFieldInfo(i, fieldinfo);
  5270. if(fieldinfo.m_strName=="autoid")
  5271. {
  5272. autoidpos=i;
  5273. continue;
  5274. }
  5275. sql+="["+fieldinfo.m_strName+"],";
  5276. }
  5277. sql.TrimRight (",");
  5278. sql+=")values(";
  5279. for( i=0; i<colcount; i++)
  5280. {
  5281. if(autoidpos==i)continue;
  5282. myset.GetFieldValue(i, temp);
  5283. sql+="'"+temp+"',";
  5284. }
  5285. sql.TrimRight (",");
  5286. sql+=")";
  5287. MyExecuteSQL(pdb2, sql);
  5288. myset.MoveNext ();
  5289. }
  5290. myset.Close();
  5291. }
  5292. catch(...)
  5293. {
  5294. ret=0;
  5295. }
  5296. if(ret==0)return 0;
  5297. return CheckSendReg(pdb1, pdb2, id);
  5298. }
  5299. catch(...)
  5300. {
  5301. WriteLogin("出错在函数trans3中");
  5302. }
  5303. return 0;
  5304. }
  5305. void CDBServerDlg::MyExecuteSQL(CDatabase* pdb, CString sql)
  5306. {
  5307. try
  5308. {
  5309. MyLock lock("dbaccessxiao");
  5310. pdb->ExecuteSQL (sql);
  5311. }
  5312. catch(...)
  5313. {
  5314. // WriteLogin("出错在函数executesql中");
  5315. }
  5316. }
  5317. void CDBServerDlg::UpdateDate()
  5318. {
  5319. try
  5320. {
  5321. /* CString tm,sql;
  5322. tm=CTime::GetCurrentTime ().Format ("%Y-%m-%d");
  5323. sql.Format ("update version set curdate='%s'",tm);
  5324. MyExecuteSQL(&g_db, sql);
  5325. */
  5326. /* CTime tm2=CTime::GetCurrentTime ();
  5327. CTimeSpan dt2(365, 0, 0, 0);
  5328. tm2-=dt2;
  5329. tm=tm2.Format ("%Y%m%d%H%M%S");
  5330. sql.Format ("delete from sendreg where timestamp<'%s'",tm);
  5331. MyExecuteSQL(&g_db, sql);*/
  5332. HWND hwnd=::FindWindow (NULL, "AutoRun.exe - 应用程序错误");
  5333. if(hwnd)
  5334. {
  5335. HWND child=::FindWindowEx(hwnd, 0, NULL, "确定");
  5336. CWnd *pWnd = CWnd::FromHandle( child );
  5337. ::PostMessage( hwnd, WM_COMMAND, pWnd->GetDlgCtrlID(), (LPARAM) child );
  5338. }
  5339. CString autorunpath=g_mainpath+"\\AutoRun.exe";
  5340. if(0==g_bConvertHisAll)
  5341. ShellExecute(NULL, _T("open"), autorunpath, NULL, NULL, SW_HIDE);
  5342. autorunpath=g_mainpath+"\\MsgServer.exe";
  5343. ShellExecute(NULL, _T("open"), autorunpath, NULL, NULL, SW_HIDE);
  5344. #ifdef ENTERPRISE_VERSION
  5345. autorunpath=g_mainpath+"\\DataSyncReceive.exe";
  5346. ShellExecute(NULL, _T("open"), autorunpath, NULL, NULL, SW_HIDE);
  5347. autorunpath=g_mainpath+"\\DataSyncSend.exe";
  5348. ShellExecute(NULL, _T("open"), autorunpath, NULL, NULL, SW_HIDE);
  5349. autorunpath=g_mainpath+"\\CPhotoFTPReceive.exe";
  5350. ShellExecute(NULL, _T("open"), autorunpath, NULL, NULL, SW_HIDE);
  5351. autorunpath=g_mainpath+"\\CPhotoFTPSend.exe";
  5352. ShellExecute(NULL, _T("open"), autorunpath, NULL, NULL, SW_HIDE);
  5353. #endif
  5354. }
  5355. catch(...)
  5356. {
  5357. WriteLogin("出错在函数UpdateDate中");
  5358. }
  5359. }
  5360. void WriteLogin(CString str)
  5361. {
  5362. MyLock lock("CDBServerDlgWriteLogin");
  5363. try
  5364. {
  5365. CStdioFile fp;
  5366. CString path=g_mainpath+"\\日志.txt";
  5367. if(CheckFileExist (path))
  5368. {
  5369. fp.Open (path, CFile::modeWrite);
  5370. int length=fp.GetLength ();
  5371. if(length>5*1024*1024)
  5372. {
  5373. fp.Close ();
  5374. ::DeleteFile (path);
  5375. return;
  5376. }
  5377. fp.SeekToEnd ();
  5378. }
  5379. else
  5380. fp.Open (path, CFile::modeCreate|CFile::modeWrite);
  5381. fp.WriteString (CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S")+" "+str+"\n" );
  5382. fp.Close ();
  5383. }
  5384. catch(...)
  5385. {
  5386. }
  5387. }
  5388. BOOL CheckDateOK(CString str)
  5389. {
  5390. try
  5391. {
  5392. CString tip;
  5393. int i;
  5394. CString demo=CTime::GetCurrentTime ().Format ("%Y-%m-%d");
  5395. if(str.GetLength ()!=demo.GetLength ())
  5396. goto ll;
  5397. //2009-01-01
  5398. if(str.GetAt (4)!='-')
  5399. goto ll;
  5400. if(str.GetAt (7)!='-')
  5401. goto ll;
  5402. for( i=0; i<str.GetLength (); i++)
  5403. {
  5404. if(i==4 || i==7)continue;
  5405. if(str.GetAt (i)<'0' || str.GetAt (i)>'9')
  5406. goto ll;
  5407. }
  5408. return 1;
  5409. ll:
  5410. return 0;
  5411. }
  5412. catch(...)
  5413. {
  5414. WriteLogin("出错");
  5415. }
  5416. }
  5417. void CDBServerDlg::AutoDelPhoto()
  5418. {
  5419. try
  5420. {
  5421. g_curdb=&g_db;
  5422. CString m_check1,m_check2,m_check3,m_check4;
  5423. CString m_edit1,m_edit2,m_edit3,m_edit4;
  5424. CString m_bakserver1,m_bakserver2,m_bakserver3,m_bakserver4;
  5425. {
  5426. CRstversion rsSt;
  5427. rsSt.Open();
  5428. if(!rsSt.IsEOF())
  5429. {
  5430. m_check1=rsSt.m_check1;
  5431. m_check2=rsSt.m_check2;
  5432. m_check3=rsSt.m_check3;
  5433. m_check4=rsSt.m_check4;
  5434. m_edit1=rsSt.m_edit1;
  5435. m_edit2=rsSt.m_edit2;
  5436. m_edit3=rsSt.m_edit3;
  5437. m_edit4=rsSt.m_edit4;
  5438. m_bakserver1=rsSt.m_bakserver1;
  5439. m_bakserver2=rsSt.m_bakserver2;
  5440. m_bakserver3=rsSt.m_bakserver3;
  5441. m_bakserver4=rsSt.m_bakserver4;
  5442. m_bakserver5=rsSt.m_bakserver5;
  5443. }
  5444. rsSt.Close();
  5445. }
  5446. g_bakinfo="资料未备份";
  5447. g_bakphoto="照片未备份";
  5448. WriteLogin("开始备份资料");
  5449. if(!m_bakserver5.IsEmpty())
  5450. {
  5451. CString bakpath,localname;
  5452. localname=g_localname;
  5453. #ifdef CHILD_VERSION
  5454. if(localname.CompareNoCase (m_bakserver5)==0 || CompareIP(localname, m_bakserver5)==0)
  5455. bakpath=GetPathFromNetShareName("数据备份(儿童管理软件)$");
  5456. else
  5457. bakpath="\\\\"+m_bakserver5+"\\数据备份(儿童管理软件)$";
  5458. #else
  5459. if(localname.CompareNoCase (m_bakserver5)==0 || CompareIP(localname, m_bakserver5)==0)
  5460. bakpath=GetPathFromNetShareName("数据备份(管理软件)$");
  5461. else
  5462. bakpath="\\\\"+m_bakserver5+"\\数据备份(管理软件)$";
  5463. #endif
  5464. if(::CheckFolderFileExist (bakpath))
  5465. BakData(bakpath, 1, 1);
  5466. }
  5467. WriteLogin("资料备份完成");
  5468. BOOL bcheck1=atoi(m_check1);
  5469. BOOL bcheck2=atoi(m_check2);
  5470. BOOL bcheck3=atoi(m_check3);
  5471. BOOL bcheck4=atoi(m_check4);
  5472. if( !(bcheck1 || bcheck2 || bcheck3 || bcheck4) )
  5473. {
  5474. return;
  5475. }
  5476. int edit1=atoi(m_edit1);
  5477. int edit2=atoi(m_edit2);
  5478. int edit3=atoi(m_edit3);
  5479. int edit4=atoi(m_edit4);
  5480. //path
  5481. CStringArray patharray;
  5482. {
  5483. char server[50];
  5484. DWORD leng=50;
  5485. ::GetComputerName (server, &leng);
  5486. CString spathserver=server;
  5487. CString g_path1;
  5488. CString g_path2;
  5489. CString g_path3;
  5490. CString g_path4;
  5491. g_path1=GetPathFromNetShareName("客户原片(管理软件)$");
  5492. g_path2=GetPathFromNetShareName("修好的片(管理软件)$");
  5493. g_path3=GetPathFromNetShareName("设计好的片(管理软件)$");
  5494. g_path4=GetPathFromNetShareName("精修好的片(管理软件)$");
  5495. patharray.Add(g_path1) ;
  5496. patharray.Add(g_path2) ;
  5497. patharray.Add(g_path4) ;
  5498. patharray.Add(g_path3) ;
  5499. /* patharray.Add("\\\\"+spathserver+"\\客户原片(管理软件)$") ;
  5500. patharray.Add("\\\\"+spathserver+"\\修好的片(管理软件)$") ;
  5501. patharray.Add("\\\\"+spathserver+"\\精修好的片(管理软件)$") ;
  5502. patharray.Add("\\\\"+spathserver+"\\设计好的片(管理软件)$") ;*/
  5503. }
  5504. if(patharray.GetSize ()==0)return;
  5505. CArray<CDatabase*,CDatabase*>dbarray2;
  5506. dbarray2.Copy(dbarray);
  5507. dbarray2.InsertAt(0, &g_db);
  5508. WriteLogin("开始删除取件后照片");
  5509. for(int n=0; n<min(2,dbarray2.GetSize ()); n++)
  5510. {
  5511. g_curdb=dbarray2.ElementAt (n);
  5512. DWORD ii=0;
  5513. CArray<CStringArray, CStringArray>g_List1array;
  5514. {
  5515. CString filter="status3='OK' and time5 is not null and time5<>''";
  5516. CRecordset myset(g_curdb);
  5517. CString sql="select count(*) as cot from dindan";if(!filter.IsEmpty ())sql+=" where "+filter;
  5518. myset.Open (CRecordset::forwardOnly, sql);
  5519. myset.GetFieldValue ("cot", sql);
  5520. myset.Close();
  5521. int count=atol(sql);
  5522. if(count==0)continue;
  5523. g_List1array.SetSize(count , 1 );
  5524. CRstDindanForm rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  5525. rsSt.Open();
  5526. ii=0;
  5527. while(!rsSt.IsEOF())
  5528. {
  5529. g_List1array.ElementAt (ii).RemoveAll ();
  5530. g_List1array.ElementAt (ii).Add(rsSt.id) ;
  5531. g_List1array.ElementAt (ii).Add(rsSt.time5) ;
  5532. ii++;
  5533. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  5534. }
  5535. rsSt.Close();
  5536. g_List1array.SetSize(ii , 1 );
  5537. CString time5,id;
  5538. CTime curtm=CTime::GetCurrentTime ();
  5539. CString strtime;
  5540. for(int i=0; i<g_List1array.GetSize (); i++)
  5541. {
  5542. id=g_List1array.ElementAt (i).ElementAt (0);
  5543. time5=g_List1array.ElementAt (i).ElementAt (1);
  5544. if(bcheck1)//原片
  5545. {
  5546. CTimeSpan sp(edit1*30, 0, 0, 0);
  5547. CTime tm=curtm-sp;
  5548. strtime=tm.Format ("%Y-%m-%d");
  5549. if(strtime>time5)
  5550. {
  5551. DelPhoto1(patharray.ElementAt (0),g_List1array.ElementAt (i).ElementAt (0));
  5552. // DelPhoto1(patharray2.ElementAt (0),g_List1array.ElementAt (i).ElementAt (0));
  5553. }
  5554. }
  5555. if(bcheck2)
  5556. {
  5557. CTimeSpan sp(edit2*30, 0, 0, 0);
  5558. CTime tm=curtm-sp;
  5559. strtime=tm.Format ("%Y-%m-%d");
  5560. if(strtime>time5)
  5561. {
  5562. DelPhoto1(patharray.ElementAt (1),g_List1array.ElementAt (i).ElementAt (0));
  5563. // DelPhoto1(patharray2.ElementAt (2),g_List1array.ElementAt (i).ElementAt (0));
  5564. }
  5565. }
  5566. if(bcheck3)
  5567. {
  5568. CTimeSpan sp(edit3*30, 0, 0, 0);
  5569. CTime tm=curtm-sp;
  5570. strtime=tm.Format ("%Y-%m-%d");
  5571. if(strtime>time5)
  5572. {
  5573. DelPhoto1(patharray.ElementAt (2),g_List1array.ElementAt (i).ElementAt (0));
  5574. // DelPhoto1(patharray2.ElementAt (2),g_List1array.ElementAt (i).ElementAt (0));
  5575. }
  5576. }
  5577. if(bcheck4)
  5578. {
  5579. CTimeSpan sp(edit4*30, 0, 0, 0);
  5580. CTime tm=curtm-sp;
  5581. strtime=tm.Format ("%Y-%m-%d");
  5582. if(strtime>time5)
  5583. {
  5584. DelPhoto1(patharray.ElementAt (3),g_List1array.ElementAt (i).ElementAt (0));
  5585. }
  5586. }
  5587. }
  5588. }
  5589. }
  5590. g_curdb=&g_db;
  5591. #ifdef ENTERPRISE_VERSION
  5592. WriteLogin("本店查完,开始检查分店");
  5593. CString g_domain;
  5594. for( n=0; n<g_branchdbarray.GetSize(); n++)
  5595. {
  5596. g_curdb=g_branchdbarray.ElementAt (n);
  5597. if(g_curdb==NULL)continue;
  5598. if(g_branchdomainarray.ElementAt (n)=="")continue;
  5599. g_domain="\\"+g_branchdomainarray.ElementAt (n);
  5600. DWORD ii=0;
  5601. CArray<CStringArray, CStringArray>g_List1array;
  5602. {
  5603. CString filter="status3='OK' and time5 is not null and time5<>''";
  5604. CRecordset myset(g_curdb);
  5605. CString sql="select count(*) as cot from dindan";if(!filter.IsEmpty ())sql+=" where "+filter;
  5606. myset.Open (CRecordset::forwardOnly, sql);
  5607. myset.GetFieldValue ("cot", sql);
  5608. myset.Close();
  5609. int count=atol(sql);
  5610. if(count==0)continue;
  5611. g_List1array.SetSize(count , 1 );
  5612. CRstDindanForm rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  5613. rsSt.Open();
  5614. ii=0;
  5615. while(!rsSt.IsEOF())
  5616. {
  5617. g_List1array.ElementAt (ii).RemoveAll ();
  5618. g_List1array.ElementAt (ii).Add(rsSt.id) ;
  5619. g_List1array.ElementAt (ii).Add(rsSt.time5) ;
  5620. ii++;
  5621. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  5622. }
  5623. rsSt.Close();
  5624. g_List1array.SetSize(ii , 1 );
  5625. CString time5,id;
  5626. CTime curtm=CTime::GetCurrentTime ();
  5627. CString strtime;
  5628. for(int i=0; i<g_List1array.GetSize (); i++)
  5629. {
  5630. id=g_List1array.ElementAt (i).ElementAt (0);
  5631. time5=g_List1array.ElementAt (i).ElementAt (1);
  5632. if(bcheck1)//原片
  5633. {
  5634. CTimeSpan sp(edit1*30, 0, 0, 0);
  5635. CTime tm=curtm-sp;
  5636. strtime=tm.Format ("%Y-%m-%d");
  5637. if(strtime>time5)
  5638. {
  5639. DelPhoto1(patharray.ElementAt (0)+g_domain,g_List1array.ElementAt (i).ElementAt (0));
  5640. }
  5641. }
  5642. if(bcheck2)
  5643. {
  5644. CTimeSpan sp(edit2*30, 0, 0, 0);
  5645. CTime tm=curtm-sp;
  5646. strtime=tm.Format ("%Y-%m-%d");
  5647. if(strtime>time5)
  5648. {
  5649. DelPhoto1(patharray.ElementAt (1)+g_domain,g_List1array.ElementAt (i).ElementAt (0));
  5650. // DelPhoto1(patharray2.ElementAt (2),g_List1array.ElementAt (i).ElementAt (0));
  5651. }
  5652. }
  5653. if(bcheck3)
  5654. {
  5655. CTimeSpan sp(edit3*30, 0, 0, 0);
  5656. CTime tm=curtm-sp;
  5657. strtime=tm.Format ("%Y-%m-%d");
  5658. if(strtime>time5)
  5659. {
  5660. DelPhoto1(patharray.ElementAt (2)+g_domain,g_List1array.ElementAt (i).ElementAt (0));
  5661. // DelPhoto1(patharray2.ElementAt (2),g_List1array.ElementAt (i).ElementAt (0));
  5662. }
  5663. }
  5664. if(bcheck4)
  5665. {
  5666. CTimeSpan sp(edit4*30, 0, 0, 0);
  5667. CTime tm=curtm-sp;
  5668. strtime=tm.Format ("%Y-%m-%d");
  5669. if(strtime>time5)
  5670. {
  5671. DelPhoto1(patharray.ElementAt (3)+g_domain,g_List1array.ElementAt (i).ElementAt (0));
  5672. }
  5673. }
  5674. }
  5675. }
  5676. }
  5677. g_curdb=&g_db;
  5678. #endif
  5679. WriteLogin("检查删除照片完成");
  5680. }
  5681. catch(...)
  5682. {
  5683. WriteLogin("出错在函数AutoDelPhoto中");
  5684. }
  5685. g_curdb=&g_db;
  5686. }
  5687. void DeleteDirectory(CString strDir)
  5688. {
  5689. try
  5690. {
  5691. // 首先删除文件及子文件夹
  5692. CFileFind ff;
  5693. BOOL bFound = ff.FindFile(strDir+"\\*", 0);
  5694. while(bFound)
  5695. {
  5696. bFound = ff.FindNextFile();
  5697. if(ff.GetFileName()=="."||ff.GetFileName()=="..")
  5698. continue;
  5699. // 去掉文件(夹)只读等属性
  5700. SetFileAttributes(ff.GetFilePath(), FILE_ATTRIBUTE_NORMAL);
  5701. if(ff.IsDirectory()) { // 递归删除子文件夹
  5702. DeleteDirectory(ff.GetFilePath());
  5703. RemoveDirectory(ff.GetFilePath());
  5704. }
  5705. else {
  5706. DeleteFile(ff.GetFilePath()); // 删除文件
  5707. }
  5708. }
  5709. ff.Close();
  5710. // 然后删除该文件夹
  5711. RemoveDirectory(strDir);
  5712. }
  5713. catch(...)
  5714. {
  5715. WriteLogin("出错在函数deldir中");
  5716. }
  5717. // int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp );
  5718. }
  5719. void CDBServerDlg::DelPhoto1(CString path, CString id)
  5720. {
  5721. if(::CheckFolderFileExist (path+"\\"+id))
  5722. {
  5723. DeleteDirectory(path+"\\"+id);
  5724. }
  5725. }
  5726. extern void ConvertToPrice(CString &str);
  5727. int GetLengthEx(CString str)
  5728. {
  5729. wchar_t wstr[500];
  5730. int k = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, strlen(str), wstr, 500);
  5731. return k;
  5732. /* try
  5733. {
  5734. int leng=0;
  5735. TBYTE ucHigh, ucLow;
  5736. for (int i=0; i<str.GetLength(); i++)
  5737. {
  5738. if ( (TBYTE)str[i] < 0x80 )
  5739. {
  5740. leng++;
  5741. continue;
  5742. }
  5743. ucHigh = (TBYTE)str[i];
  5744. if(i+1==str.GetLength())
  5745. {
  5746. leng++;
  5747. break;
  5748. }
  5749. ucLow = (TBYTE)str[i+1];
  5750. if ( ucHigh < 0xa1 || ucLow < 0xa1)
  5751. {
  5752. leng++;
  5753. continue;
  5754. }
  5755. leng++;
  5756. i++;
  5757. }
  5758. return leng;
  5759. }
  5760. catch(...)
  5761. {
  5762. WriteLogin("出错");
  5763. }*/
  5764. }
  5765. void CDBServerDlg::BakPhoto()
  5766. {
  5767. try
  5768. {
  5769. g_curdb=&g_db;
  5770. CString m_bak1,m_bak2,m_bak3,m_bak4,m_bak6,m_baktime;
  5771. CString m_bakserver1,m_bakserver2,m_bakserver3,m_bakserver4;
  5772. CString msgcheck4,msgtime,msgphones,msgphones2,msgcompanyname;
  5773. CString balance,msgaccount;
  5774. {
  5775. MyLock lock("dbaccessxiao");
  5776. CRstversion rsSt;
  5777. rsSt.Open();
  5778. if(!rsSt.IsEOF())
  5779. {
  5780. m_bak1=rsSt.m_bak1;
  5781. m_bak2=rsSt.m_bak2;
  5782. m_bak3=rsSt.m_bak3;
  5783. m_bak4=rsSt.m_bak4;
  5784. m_bakserver1=rsSt.m_bakserver1;
  5785. m_bakserver2=rsSt.m_bakserver2;
  5786. m_bakserver3=rsSt.m_bakserver3;
  5787. m_bakserver4=rsSt.m_bakserver4;
  5788. m_bak6=rsSt.m_bak6;
  5789. m_baktime=rsSt.m_baktime;
  5790. msgcheck4=rsSt.msgcheck4;
  5791. msgtime=rsSt.msgtime;
  5792. msgphones=rsSt.msgphones;
  5793. msgphones2=rsSt.msgphones2;
  5794. msgcompanyname=rsSt.msgcompanyname;
  5795. balance=rsSt.msgbalance;
  5796. msgaccount=rsSt.msgaccount;
  5797. }
  5798. rsSt.Close();
  5799. }
  5800. /////////////检测发短信回财务
  5801. if(msgphones2.IsEmpty ()==0)
  5802. {
  5803. MyLock lock("dbaccessxiao");
  5804. CStringArray array,timearray;
  5805. CString timestamp;
  5806. timestamp=CTime::GetCurrentTime ().Format ("%Y-%m-%d");
  5807. timestamp+="%";
  5808. CRecordset myset(g_curdb);
  5809. CString sql="select * from sendregreceive where [timestamp] like '"+timestamp+"' and [content]='001' and [status]='OK'";
  5810. myset.Open (CRecordset::forwardOnly, sql);
  5811. CString phones;
  5812. while(!myset.IsEOF())
  5813. {
  5814. myset.GetFieldValue ("phones", phones);
  5815. myset.GetFieldValue ("timestamp", timestamp);
  5816. if(msgphones2.Find (phones)!=-1)
  5817. {
  5818. array.Add(phones ) ;
  5819. timearray.Add (timestamp );
  5820. }
  5821. myset.MoveNext();
  5822. }
  5823. myset.Close();
  5824. if(array.GetSize ())
  5825. {
  5826. CString sql;
  5827. for(int i=0; i<array.GetSize (); i++)
  5828. {
  5829. sql="update sendregreceive set [status]='' where [timestamp]='"+timearray.ElementAt (i)+"'";
  5830. MyExecuteSQL (&g_db, sql);
  5831. }
  5832. CArray<CStringArray, CStringArray>List11array;
  5833. CArray<CStringArray, CStringArray>List2array;
  5834. CArray<CStringArray, CStringArray>List3array;
  5835. CArray<CStringArray, CStringArray>other2salearray;
  5836. CString strdate=CTime::GetCurrentTime ().Format ("%Y-%m-%d");
  5837. CString filter="[dat]='"+strdate+"'";
  5838. filter="[dat]='"+strdate+"' and ([sale2type] is null or [sale2type]='')";
  5839. {
  5840. CRecordset myset(g_curdb);
  5841. CString sql="select count(*) as cot from singleincome";if(!filter.IsEmpty ())sql+=" where "+filter;
  5842. myset.Open (CRecordset::forwardOnly, sql);
  5843. myset.GetFieldValue ("cot", sql);
  5844. myset.Close();
  5845. int count=atol(sql);
  5846. List2array.SetSize(count , 1 );
  5847. CRstIncomeInput rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  5848. rsSt.Open();
  5849. int ii=0;
  5850. while(!rsSt.IsEOF())
  5851. {
  5852. List2array.ElementAt (ii).RemoveAll ();
  5853. List2array.ElementAt (ii).Add(rsSt.id) ;
  5854. List2array.ElementAt (ii).Add(rsSt.name) ;
  5855. List2array.ElementAt (ii).Add(rsSt.money) ;
  5856. List2array.ElementAt (ii).Add(rsSt.date) ;
  5857. List2array.ElementAt (ii).Add(rsSt.renyuan1) ;
  5858. List2array.ElementAt (ii).Add(rsSt.renyuan2) ;
  5859. List2array.ElementAt (ii).Add(rsSt.renyuan3) ;
  5860. List2array.ElementAt (ii).Add(rsSt.bz) ;
  5861. List2array.ElementAt (ii).Add(rsSt.sale2type) ;
  5862. ii++;
  5863. rsSt.MoveNext();if(List2array.GetSize ()<=ii)break;
  5864. }
  5865. rsSt.Close();List2array.SetSize(ii , 1 );
  5866. }
  5867. filter="[dat]='"+strdate+"'";
  5868. {
  5869. CRecordset myset(g_curdb);
  5870. CString sql="select count(*) as cot from gudingfeiyong";if(!filter.IsEmpty ())sql+=" where "+filter;
  5871. myset.Open (CRecordset::forwardOnly, sql);
  5872. myset.GetFieldValue ("cot", sql);
  5873. myset.Close();
  5874. int count=atol(sql);
  5875. List3array.SetSize(count , 1 );
  5876. CRstPayOutInput rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  5877. rsSt.Open();
  5878. int ii=0;
  5879. while(!rsSt.IsEOF())
  5880. {
  5881. List3array.ElementAt (ii).RemoveAll ();
  5882. List3array.ElementAt (ii).Add(rsSt.id) ;
  5883. List3array.ElementAt (ii).Add(rsSt.name) ;
  5884. List3array.ElementAt (ii).Add(rsSt.money) ;
  5885. List3array.ElementAt (ii).Add(rsSt.date) ;
  5886. List3array.ElementAt (ii).Add(rsSt.renyuan1) ;
  5887. List3array.ElementAt (ii).Add(rsSt.renyuan2) ;
  5888. List3array.ElementAt (ii).Add(rsSt.bz) ;
  5889. ii++;
  5890. rsSt.MoveNext();if(List3array.GetSize ()<=ii)break;
  5891. }
  5892. rsSt.Close();List3array.SetSize(ii , 1 );
  5893. }
  5894. filter="[date]='"+strdate+"'";
  5895. {
  5896. {
  5897. CRecordset myset(g_curdb);
  5898. CString sql="select count(*) as cot from dindanbukuan";if(!filter.IsEmpty ())sql+=" where "+filter;
  5899. myset.Open (CRecordset::forwardOnly, sql);
  5900. myset.GetFieldValue ("cot", sql);
  5901. myset.Close();
  5902. int count=atol(sql);
  5903. List11array.SetSize(count , 1 );
  5904. CRstBuKuan rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  5905. rsSt.Open();
  5906. int ii=0;
  5907. while(!rsSt.IsEOF())
  5908. {
  5909. List11array.ElementAt (ii).RemoveAll ();
  5910. List11array.ElementAt (ii).Add(rsSt.m_id) ;
  5911. List11array.ElementAt (ii).Add(rsSt.m_ren) ;
  5912. List11array.ElementAt (ii).Add(rsSt.m_money) ;
  5913. List11array.ElementAt (ii).Add(rsSt.m_bz) ;
  5914. List11array.ElementAt (ii).Add(rsSt.m_kind) ;
  5915. List11array.ElementAt (ii).Add(rsSt.m_date) ;
  5916. ii++;
  5917. rsSt.MoveNext();if(List11array.GetSize ()<=ii)break;
  5918. }
  5919. rsSt.Close();List11array.SetSize(ii , 1 );
  5920. }
  5921. }
  5922. filter="[date]='"+strdate+"'";
  5923. {
  5924. CRecordset myset(g_curdb);
  5925. CString sql="select count(*) as cot from singleincomemoneyview";if(!filter.IsEmpty ())sql+=" where "+filter;
  5926. myset.Open (CRecordset::forwardOnly, sql);
  5927. myset.GetFieldValue ("cot", sql);
  5928. myset.Close();
  5929. int count=atol(sql);
  5930. other2salearray.SetSize(count , 1 );
  5931. CRstsingleincomemoneyview rsSt; rsSt.m_pDatabase=g_curdb;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  5932. rsSt.Open();
  5933. int ii=0;
  5934. while(!rsSt.IsEOF())
  5935. {
  5936. other2salearray.ElementAt (ii).RemoveAll ();
  5937. other2salearray.ElementAt (ii).Add(rsSt.name) ;
  5938. other2salearray.ElementAt (ii).Add(rsSt.renyuan1) ;
  5939. other2salearray.ElementAt (ii).Add(rsSt.renyuan3) ;
  5940. other2salearray.ElementAt (ii).Add(rsSt.sale2type) ;
  5941. other2salearray.ElementAt (ii).Add(rsSt.money) ;
  5942. other2salearray.ElementAt (ii).Add(rsSt.date) ;
  5943. other2salearray.ElementAt (ii).Add(rsSt.clerk) ;
  5944. other2salearray.ElementAt (ii).Add(rsSt.paytype) ;
  5945. other2salearray.ElementAt (ii).Add(rsSt.autoid) ;
  5946. other2salearray.ElementAt (ii).Add(rsSt.financecheck) ;
  5947. ii++;
  5948. rsSt.MoveNext();if(other2salearray.GetSize ()<=ii)break;
  5949. }
  5950. rsSt.Close();other2salearray.SetSize(ii , 1 );
  5951. }
  5952. CString str;
  5953. int pos=0;
  5954. int dindanshu=0;
  5955. float income=0;
  5956. float incomedd=0;
  5957. float incomebk=0;
  5958. float incomehq=0;
  5959. float incomeqt=0;
  5960. float payout=0;
  5961. for( i=0; i<List11array.GetSize (); i++)
  5962. {
  5963. str=List11array.ElementAt (i).ElementAt (2);
  5964. income+=atof(str);
  5965. // income2+=atof(str);
  5966. if(List11array.ElementAt (i).ElementAt (3)=="预约收款")
  5967. {
  5968. incomedd+=atof(str);
  5969. dindanshu++;
  5970. }
  5971. else if(List11array.ElementAt (i).ElementAt (3)=="预约补款")
  5972. {
  5973. incomebk+=atof(str);
  5974. }
  5975. else
  5976. {
  5977. incomehq+=atof(str);
  5978. }
  5979. pos++;
  5980. }
  5981. for( i=0; i<List2array.GetSize (); i++)
  5982. {
  5983. str=List2array.ElementAt (i).ElementAt (2);
  5984. income+=atof(str);
  5985. /* if(List2array.ElementAt (i).ElementAt (8)!="")
  5986. {
  5987. income2+=atof(str);
  5988. }*/
  5989. if(List2array.ElementAt (i).ElementAt (8)=="")
  5990. {
  5991. incomeqt+=atof(str);
  5992. }
  5993. pos++;
  5994. }
  5995. for( i=0; i<List3array.GetSize (); i++)
  5996. {
  5997. str=List3array.ElementAt (i).ElementAt (2);
  5998. payout+=atof(str);
  5999. pos++;
  6000. }
  6001. for( i=0; i<other2salearray.GetSize (); i++)
  6002. {
  6003. str=other2salearray.ElementAt (i).ElementAt (4);
  6004. income+=atof(str);
  6005. incomehq+=atof(str);
  6006. pos++;
  6007. }
  6008. CTime tm=CTime::GetCurrentTime ();
  6009. CString content=msgcompanyname+tm.Format ("%Y-%m-%d");
  6010. content+="财报:";
  6011. str.Format ("%d", (int)income);
  6012. ::ConvertToPrice (str);
  6013. content+="收:"+str;
  6014. str.Format ("%d", (int)incomedd);
  6015. ::ConvertToPrice (str);
  6016. content+="定:"+str;
  6017. str.Format ("%d", (int)incomebk);
  6018. ::ConvertToPrice (str);
  6019. content+="补:"+str;
  6020. str.Format ("%d", (int)incomehq);
  6021. ::ConvertToPrice (str);
  6022. content+="后:"+str;
  6023. str.Format ("%d", (int)incomeqt);
  6024. ::ConvertToPrice (str);
  6025. content+="其它:"+str;
  6026. str.Format ("%d", (int)payout);
  6027. ::ConvertToPrice (str);
  6028. content+="支出:"+str;
  6029. str.Format ("%d", (int)(income-payout));
  6030. ::ConvertToPrice (str);
  6031. content+="净收:"+str;
  6032. str.Format ("%d", dindanshu);
  6033. content+="定单:"+str;
  6034. if(msgaccount!="")
  6035. {
  6036. if(atoi(balance)<200)
  6037. {
  6038. content+="您的余额小于两百条,请及时充值。联系电话4006067068";
  6039. }
  6040. else if(atoi(balance)<500)
  6041. {
  6042. content+="您的余额小于五百条,请及时充值。联系电话4006067068";
  6043. }
  6044. else if(atoi(balance)<800)
  6045. {
  6046. content+="您的余额小于八百条,请及时充值。联系电话4006067068";
  6047. }
  6048. else if(atoi(balance)<1000)
  6049. {
  6050. content+="您的余额小于一千条,请及时充值。联系电话4006067068";
  6051. }
  6052. }
  6053. int count=GetLengthEx(content)/MSG_LENGTH;
  6054. if(GetLengthEx(content)%MSG_LENGTH)
  6055. count++;
  6056. int phonenum=0;
  6057. phonenum=1;
  6058. count*=phonenum;
  6059. CString scount;
  6060. scount.Format ("%d", count);
  6061. CString timestamp=tm.Format ("%Y%m%d%H%M%S");
  6062. for( i=0; i<1; i++)
  6063. {
  6064. sql="insert into sendreg([phones],[content],[timestamp],[msgcount],[status],[issended],[isautosend],[ren]) values\
  6065. ('"+array.ElementAt (i)+"','"+content+"','"+timestamp+"','"+scount+"','0','0','0','系统自动发送')";
  6066. MyExecuteSQL (&g_db, sql);
  6067. }
  6068. }
  6069. }
  6070. /////////////
  6071. if(atoi(msgcheck4) && msgphones!="")
  6072. {//发老板短信
  6073. if(atoi(msgtime)<=CTime::GetCurrentTime ().GetHour ())
  6074. {
  6075. MyLock lock("dbaccessxiao");
  6076. CString timestamp;
  6077. timestamp=CTime::GetCurrentTime ().Format ("%Y%m%d");
  6078. timestamp+="%";
  6079. CRecordset myset(g_curdb);
  6080. CString sql="select count(*) as cot from sendreg where [timestamp] like '"+timestamp+"' and [phones]='"+msgphones+"' and [isautosend]='3'";
  6081. myset.Open (CRecordset::forwardOnly, sql);
  6082. myset.GetFieldValue ("cot", sql);
  6083. myset.Close();
  6084. int count=atol(sql);
  6085. if(count==0)
  6086. {
  6087. CArray<CStringArray, CStringArray>List11array;
  6088. CArray<CStringArray, CStringArray>List2array;
  6089. CArray<CStringArray, CStringArray>List3array;
  6090. CArray<CStringArray, CStringArray>other2salearray;
  6091. CString strdate=CTime::GetCurrentTime ().Format ("%Y-%m-%d");
  6092. CString filter="[dat]='"+strdate+"'";
  6093. filter="[dat]='"+strdate+"' and ([sale2type] is null or [sale2type]='')";
  6094. {
  6095. CRecordset myset(g_curdb);
  6096. CString sql="select count(*) as cot from singleincome";if(!filter.IsEmpty ())sql+=" where "+filter;
  6097. myset.Open (CRecordset::forwardOnly, sql);
  6098. myset.GetFieldValue ("cot", sql);
  6099. myset.Close();
  6100. int count=atol(sql);
  6101. List2array.SetSize(count , 1 );
  6102. CRstIncomeInput rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  6103. rsSt.Open();
  6104. int ii=0;
  6105. while(!rsSt.IsEOF())
  6106. {
  6107. List2array.ElementAt (ii).RemoveAll ();
  6108. List2array.ElementAt (ii).Add(rsSt.id) ;
  6109. List2array.ElementAt (ii).Add(rsSt.name) ;
  6110. List2array.ElementAt (ii).Add(rsSt.money) ;
  6111. List2array.ElementAt (ii).Add(rsSt.date) ;
  6112. List2array.ElementAt (ii).Add(rsSt.renyuan1) ;
  6113. List2array.ElementAt (ii).Add(rsSt.renyuan2) ;
  6114. List2array.ElementAt (ii).Add(rsSt.renyuan3) ;
  6115. List2array.ElementAt (ii).Add(rsSt.bz) ;
  6116. List2array.ElementAt (ii).Add(rsSt.sale2type) ;
  6117. ii++;
  6118. rsSt.MoveNext();if(List2array.GetSize ()<=ii)break;
  6119. }
  6120. rsSt.Close();List2array.SetSize(ii , 1 );
  6121. }
  6122. filter="[dat]='"+strdate+"'";
  6123. {
  6124. CRecordset myset(g_curdb);
  6125. CString sql="select count(*) as cot from gudingfeiyong";if(!filter.IsEmpty ())sql+=" where "+filter;
  6126. myset.Open (CRecordset::forwardOnly, sql);
  6127. myset.GetFieldValue ("cot", sql);
  6128. myset.Close();
  6129. int count=atol(sql);
  6130. List3array.SetSize(count , 1 );
  6131. CRstPayOutInput rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  6132. rsSt.Open();
  6133. int ii=0;
  6134. while(!rsSt.IsEOF())
  6135. {
  6136. List3array.ElementAt (ii).RemoveAll ();
  6137. List3array.ElementAt (ii).Add(rsSt.id) ;
  6138. List3array.ElementAt (ii).Add(rsSt.name) ;
  6139. List3array.ElementAt (ii).Add(rsSt.money) ;
  6140. List3array.ElementAt (ii).Add(rsSt.date) ;
  6141. List3array.ElementAt (ii).Add(rsSt.renyuan1) ;
  6142. List3array.ElementAt (ii).Add(rsSt.renyuan2) ;
  6143. List3array.ElementAt (ii).Add(rsSt.bz) ;
  6144. ii++;
  6145. rsSt.MoveNext();if(List3array.GetSize ()<=ii)break;
  6146. }
  6147. rsSt.Close();List3array.SetSize(ii , 1 );
  6148. }
  6149. filter="[date]='"+strdate+"'";
  6150. {
  6151. CRecordset myset(g_curdb);
  6152. CString sql="select count(*) as cot from dindanbukuan";if(!filter.IsEmpty ())sql+=" where "+filter;
  6153. myset.Open (CRecordset::forwardOnly, sql);
  6154. myset.GetFieldValue ("cot", sql);
  6155. myset.Close();
  6156. int count=atol(sql);
  6157. List11array.SetSize(count , 1 );
  6158. CRstBuKuan rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  6159. rsSt.Open();
  6160. int ii=0;
  6161. while(!rsSt.IsEOF())
  6162. {
  6163. List11array.ElementAt (ii).RemoveAll ();
  6164. List11array.ElementAt (ii).Add(rsSt.m_id) ;
  6165. List11array.ElementAt (ii).Add(rsSt.m_ren) ;
  6166. List11array.ElementAt (ii).Add(rsSt.m_money) ;
  6167. List11array.ElementAt (ii).Add(rsSt.m_bz) ;
  6168. List11array.ElementAt (ii).Add(rsSt.m_kind) ;
  6169. List11array.ElementAt (ii).Add(rsSt.m_date) ;
  6170. ii++;
  6171. rsSt.MoveNext();if(List11array.GetSize ()<=ii)break;
  6172. }
  6173. rsSt.Close();List11array.SetSize(ii , 1 );
  6174. }
  6175. filter="[date]='"+strdate+"'";
  6176. {
  6177. CRecordset myset(g_curdb);
  6178. CString sql="select count(*) as cot from singleincomemoneyview";if(!filter.IsEmpty ())sql+=" where "+filter;
  6179. myset.Open (CRecordset::forwardOnly, sql);
  6180. myset.GetFieldValue ("cot", sql);
  6181. myset.Close();
  6182. int count=atol(sql);
  6183. other2salearray.SetSize(count , 1 );
  6184. CRstsingleincomemoneyview rsSt; rsSt.m_pDatabase=g_curdb;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  6185. rsSt.Open();
  6186. int ii=0;
  6187. while(!rsSt.IsEOF())
  6188. {
  6189. other2salearray.ElementAt (ii).RemoveAll ();
  6190. other2salearray.ElementAt (ii).Add(rsSt.name) ;
  6191. other2salearray.ElementAt (ii).Add(rsSt.renyuan1) ;
  6192. other2salearray.ElementAt (ii).Add(rsSt.renyuan3) ;
  6193. other2salearray.ElementAt (ii).Add(rsSt.sale2type) ;
  6194. other2salearray.ElementAt (ii).Add(rsSt.money) ;
  6195. other2salearray.ElementAt (ii).Add(rsSt.date) ;
  6196. other2salearray.ElementAt (ii).Add(rsSt.clerk) ;
  6197. other2salearray.ElementAt (ii).Add(rsSt.paytype) ;
  6198. other2salearray.ElementAt (ii).Add(rsSt.autoid) ;
  6199. other2salearray.ElementAt (ii).Add(rsSt.financecheck) ;
  6200. ii++;
  6201. rsSt.MoveNext();if(other2salearray.GetSize ()<=ii)break;
  6202. }
  6203. rsSt.Close();other2salearray.SetSize(ii , 1 );
  6204. }
  6205. CString str;
  6206. int pos=0;
  6207. int dindanshu=0;
  6208. float income=0;
  6209. float incomedd=0;
  6210. float incomebk=0;
  6211. float incomehq=0;
  6212. float incomeqt=0;
  6213. float payout=0;
  6214. for(int i=0; i<List11array.GetSize (); i++)
  6215. {
  6216. str=List11array.ElementAt (i).ElementAt (2);
  6217. income+=atof(str);
  6218. // income2+=atof(str);
  6219. if(List11array.ElementAt (i).ElementAt (3)=="预约收款")
  6220. {
  6221. incomedd+=atof(str);
  6222. dindanshu++;
  6223. }
  6224. else if(List11array.ElementAt (i).ElementAt (3)=="预约补款")
  6225. {
  6226. incomebk+=atof(str);
  6227. }
  6228. else
  6229. {
  6230. incomehq+=atof(str);
  6231. }
  6232. pos++;
  6233. }
  6234. for( i=0; i<List2array.GetSize (); i++)
  6235. {
  6236. str=List2array.ElementAt (i).ElementAt (2);
  6237. income+=atof(str);
  6238. /* if(List2array.ElementAt (i).ElementAt (8)!="")
  6239. {
  6240. income2+=atof(str);
  6241. }*/
  6242. if(List2array.ElementAt (i).ElementAt (8)=="")
  6243. {
  6244. incomeqt+=atof(str);
  6245. }
  6246. pos++;
  6247. }
  6248. for( i=0; i<List3array.GetSize (); i++)
  6249. {
  6250. str=List3array.ElementAt (i).ElementAt (2);
  6251. payout+=atof(str);
  6252. pos++;
  6253. }
  6254. for( i=0; i<other2salearray.GetSize (); i++)
  6255. {
  6256. str=other2salearray.ElementAt (i).ElementAt (4);
  6257. income+=atof(str);
  6258. incomehq+=atof(str);
  6259. pos++;
  6260. }
  6261. CTime tm=CTime::GetCurrentTime ();
  6262. CString content=msgcompanyname+tm.Format ("%Y-%m-%d");
  6263. content+="财报:";
  6264. str.Format ("%d", (int)income);
  6265. ::ConvertToPrice (str);
  6266. content+="收:"+str;
  6267. str.Format ("%d", (int)incomedd);
  6268. ::ConvertToPrice (str);
  6269. content+="定:"+str;
  6270. str.Format ("%d", (int)incomebk);
  6271. ::ConvertToPrice (str);
  6272. content+="补:"+str;
  6273. str.Format ("%d", (int)incomehq);
  6274. ::ConvertToPrice (str);
  6275. content+="后:"+str;
  6276. str.Format ("%d", (int)incomeqt);
  6277. ::ConvertToPrice (str);
  6278. content+="其它:"+str;
  6279. str.Format ("%d", (int)payout);
  6280. ::ConvertToPrice (str);
  6281. content+="支出:"+str;
  6282. str.Format ("%d", (int)(income-payout));
  6283. ::ConvertToPrice (str);
  6284. content+="净收:"+str;
  6285. str.Format ("%d", dindanshu);
  6286. content+="定单:"+str;
  6287. if(msgaccount!="")
  6288. {
  6289. if(atoi(balance)<200)
  6290. {
  6291. content+="您的余额小于两百条,请及时充值。联系电话4006067068";
  6292. }
  6293. else if(atoi(balance)<500)
  6294. {
  6295. content+="您的余额小于五百条,请及时充值。联系电话4006067068";
  6296. }
  6297. else if(atoi(balance)<800)
  6298. {
  6299. content+="您的余额小于八百条,请及时充值。联系电话4006067068";
  6300. }
  6301. else if(atoi(balance)<1000)
  6302. {
  6303. content+="您的余额小于一千条,请及时充值。联系电话4006067068";
  6304. }
  6305. }
  6306. int count=GetLengthEx(content)/MSG_LENGTH;
  6307. if(GetLengthEx(content)%MSG_LENGTH)
  6308. count++;
  6309. int phonenum=0;
  6310. str=msgphones;
  6311. pos=str.Find (",");
  6312. if(pos!=-1)
  6313. {
  6314. while(pos!=-1)
  6315. {
  6316. phonenum++;
  6317. str=str.Right (str.GetLength ()-pos-1);
  6318. pos=str.Find (",");
  6319. }
  6320. phonenum++;
  6321. }
  6322. else
  6323. phonenum=1;
  6324. count*=phonenum;
  6325. CString scount;
  6326. scount.Format ("%d", count);
  6327. timestamp=tm.Format ("%Y%m%d%H%M%S");
  6328. sql="insert into sendreg([phones],[content],[timestamp],[msgcount],[status],[issended],[isautosend],[ren]) values\
  6329. ('"+msgphones+"','"+content+"','"+timestamp+"','"+scount+"','0','0','3','系统自动发送')";
  6330. MyExecuteSQL (&g_db, sql);
  6331. }
  6332. }
  6333. }
  6334. BOOL bcheck1=atoi(m_bak1);
  6335. BOOL bcheck2=atoi(m_bak2);
  6336. BOOL bcheck3=atoi(m_bak3);
  6337. BOOL bcheck4=atoi(m_bak4);
  6338. int hour;
  6339. hour=CTime::GetCurrentTime ().GetHour ();
  6340. if(atoi(m_baktime)<=hour)
  6341. {
  6342. CStdioFile fp;
  6343. if(fp.Open (g_mainpath+"\\log.txt", CFile::modeRead))
  6344. {
  6345. CString date;
  6346. fp.ReadString (date);
  6347. date.TrimRight ("\r\n");
  6348. if(date==CTime::GetCurrentTime ().Format ("%Y-%m-%d"))
  6349. {
  6350. fp.Close ();
  6351. return;
  6352. }
  6353. fp.Close ();
  6354. }
  6355. if(g_bConvertHisAll)
  6356. {
  6357. WriteLogin("转历史数据中, 备份退出");
  6358. return;
  6359. }
  6360. g_bakdate=CTime::GetCurrentTime ().Format ("%Y-%m-%d");
  6361. KillTimer(4);
  6362. WriteLogin("备份开始...");
  6363. AutoDelPhoto();
  6364. LoadThumbImages2();
  6365. }
  6366. }
  6367. catch(...)
  6368. {
  6369. WriteLogin("出错在函数bakphoto中");
  6370. }
  6371. }
  6372. void CDBServerDlg::ShutDown()
  6373. {
  6374. try
  6375. {
  6376. g_curdb=&g_db;
  6377. CString m_bak6;
  6378. {
  6379. CRecordset myset(g_curdb);
  6380. CString sql="select * from [version]";
  6381. myset.Open (CRecordset::forwardOnly, sql);
  6382. myset.GetFieldValue ("bak6", m_bak6);
  6383. myset.Close();
  6384. }
  6385. OnServerStop();
  6386. g_db.Close ();
  6387. for(int i=0;i<dbarray.GetSize (); i++)
  6388. {
  6389. dbarray.ElementAt (i)->Close ();
  6390. delete dbarray.ElementAt (i);
  6391. }
  6392. ReleaseBranchDB();
  6393. /* if(!m_bakserver5.IsEmpty())
  6394. {
  6395. #ifdef CHILD_VERSION
  6396. if(::CheckFolderFileExist ("\\\\"+m_bakserver5+"\\数据备份(儿童管理软件)$"))
  6397. BakData("\\\\"+m_bakserver5+"\\数据备份(儿童管理软件)$", 1, 1);
  6398. #else
  6399. if(::CheckFolderFileExist ("\\\\"+m_bakserver5+"\\数据备份(管理软件)$"))
  6400. BakData("\\\\"+m_bakserver5+"\\数据备份(管理软件)$", 1, 1);
  6401. #endif
  6402. }*/
  6403. WriteLogin("备份完成");
  6404. while(m_bRunning)
  6405. {
  6406. ::Sleep (1000);
  6407. }
  6408. ////////////////
  6409. g_tisks=::GetTickCount ()-g_tisks;
  6410. CString str;
  6411. str.Format ("耗时:%d分钟", g_tisks/60000);
  6412. CStdioFile fp;
  6413. fp.Open (g_mainpath+"\\log.txt", CFile::modeCreate|CFile::modeWrite);
  6414. CTime tm=CTime::GetCurrentTime ();
  6415. if(0)//tm.GetHour ()<5)
  6416. {
  6417. CTimeSpan sp(1, 0, 0, 0);
  6418. tm-=sp;
  6419. fp.WriteString (tm.Format ("%Y-%m-%d"));
  6420. fp.WriteString ("\r\n");
  6421. fp.WriteString (CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S"));
  6422. fp.WriteString (str);
  6423. }
  6424. else
  6425. {
  6426. fp.WriteString (g_bakdate);
  6427. fp.WriteString ("\r\n");
  6428. fp.WriteString (tm.Format ("%Y-%m-%d %H:%M:%S"));
  6429. fp.WriteString (str);
  6430. }
  6431. fp.WriteString ("\r\n");
  6432. fp.WriteString (g_bakinfo);
  6433. fp.WriteString ("\r\n");
  6434. fp.WriteString (g_bakphoto);
  6435. fp.Close ();
  6436. // OnButton3();
  6437. if(atoi(m_bak6))
  6438. {
  6439. // TODO: Add your command handler code here
  6440. TerminateThread();
  6441. TerminateThread2();
  6442. DWORD id=FindAppProcessID("AutoRun.exe");
  6443. if(id!=-1)
  6444. {
  6445. HANDLE ProcessHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id);
  6446. if(ProcessHandle)TerminateProcess(ProcessHandle,0);
  6447. }
  6448. m_TrayIcon.RemoveIcon();
  6449. if(g_pSkinData)delete []g_pSkinData;g_pSkinData=NULL;
  6450. MyExitWindows();
  6451. }
  6452. else//重启
  6453. {
  6454. TerminateThread();
  6455. TerminateThread2();
  6456. m_TrayIcon.RemoveIcon();
  6457. if(g_pSkinData)delete []g_pSkinData;g_pSkinData=NULL;
  6458. WriteLogin("备份完成,服务器重启");
  6459. CDialog::OnCancel ();
  6460. }
  6461. }
  6462. catch(...)
  6463. {
  6464. WriteLogin("出错在函数shutdown中");
  6465. }
  6466. }
  6467. void CDBServerDlg::MyExitWindows()
  6468. {
  6469. try
  6470. {
  6471. UINT t=EWX_SHUTDOWN|EWX_FORCE;
  6472. OSVERSIONINFO osv; //定义一个操作系统信息的结构体
  6473. osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO;
  6474. GetVersionEx(&osv); //查询当前操作系统
  6475. if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT) //判断是否是2000/NT
  6476. {
  6477. //下面为向操作系统获取权限操作
  6478. HANDLE hProcess,hToken;
  6479. TOKEN_PRIVILEGES Privileges;
  6480. LUID luid;
  6481. hProcess=GetCurrentProcess();
  6482. //下面为打开当前进程对话
  6483. OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
  6484. Privileges.PrivilegeCount=1;
  6485. LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
  6486. Privileges.Privileges[0].Luid=luid;
  6487. Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
  6488. AdjustTokenPrivileges(hToken,FALSE,&Privileges,NULL,NULL,NULL);
  6489. ExitWindowsEx(t,0);
  6490. }
  6491. else
  6492. {
  6493. ExitWindowsEx(t,0);//调用ExitWindowsEx关闭机器。
  6494. PostQuitMessage(0);
  6495. }
  6496. }
  6497. catch(...)
  6498. {
  6499. WriteLogin("出错在函数exitwindows中");
  6500. }
  6501. }
  6502. void CDBServerDlg::OnAutorun()
  6503. {
  6504. // TODO: Add your command handler code here
  6505. g_bAutoRun=!g_bAutoRun;
  6506. CString version = _T ("Version 1.0");
  6507. AfxGetApp()->WriteProfileInt (version, "brun", g_bAutoRun);
  6508. TCHAR szKey[MAX_PATH];
  6509. HKEY hKey=0;
  6510. DWORD disp=0;
  6511. lstrcpy(szKey,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
  6512. if(g_bAutoRun)
  6513. {
  6514. int lResult=RegCreateKeyEx(HKEY_LOCAL_MACHINE,szKey,0,NULL,REG_OPTION_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&disp);
  6515. if(lResult==ERROR_SUCCESS)
  6516. {
  6517. TCHAR szDir[MAX_PATH];
  6518. ::GetModuleFileName (NULL, szDir, MAX_PATH);
  6519. lResult=RegSetValueEx(hKey,"YLGLDBSERVER",0,REG_SZ,(const unsigned char*)szDir,lstrlen(szDir));
  6520. RegCloseKey(hKey);
  6521. }
  6522. }
  6523. else
  6524. {
  6525. int lResult=RegCreateKeyEx(HKEY_LOCAL_MACHINE,szKey,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&disp);
  6526. if(lResult==ERROR_SUCCESS)
  6527. {
  6528. RegDeleteValue(hKey,"YLGLDBSERVER");
  6529. RegDeleteKey (hKey,"YLGLDBSERVER");
  6530. RegCloseKey(hKey);
  6531. }
  6532. }
  6533. }
  6534. void CDBServerDlg::GetFileDate()
  6535. {
  6536. CStringArray filesarray;
  6537. filesarray.Add ("AutoUpdate.exe");
  6538. filesarray.Add ("skin\\1.lia");
  6539. filesarray.Add ("skin\\2.lia");
  6540. filesarray.Add ("skin\\3.lia");
  6541. filesarray.Add ("skin\\4.lia");
  6542. filesarray.Add ("skin\\10.lia");
  6543. filesarray.Add ("skin\\logo.jpg");
  6544. filesarray.Add ("skin\\标题-选片.jpg");
  6545. filesarray.Add ("skin\\标题-看设计.jpg");
  6546. filesarray.Add ("图片\\欢迎.jpg");
  6547. filesarray.Add ("图片\\连接.jpg");
  6548. filesarray.Add ("图片\\标题.jpg");
  6549. filesarray.Add ("图片\\背景.jpg");
  6550. for(int i=0; i<filesarray.GetSize (); i++)
  6551. {
  6552. g_filedatearray.Add (GetModifyTime(g_mainpath+"\\系统文件\\"+filesarray.ElementAt (i)));
  6553. }
  6554. }
  6555. extern CString g_sdomain;
  6556. #ifdef ENTERPRISE_VERSION
  6557. CString g_bMain;
  6558. #endif
  6559. void CDBServerDlg::LoadBranchInfo()
  6560. {
  6561. #ifdef ENTERPRISE_VERSION
  6562. try
  6563. {
  6564. ReleaseBranchDB();
  6565. CArray<CStringArray, CStringArray>g_List1array;
  6566. {
  6567. MyLock lock("savebranchinfo");
  6568. CFile fp;
  6569. CString path=g_mainpath+"\\branchinfo.dat";
  6570. if(::PathFileExists (path)==0)
  6571. {
  6572. return;
  6573. }
  6574. fp.Open (path, CFile::modeRead);
  6575. DWORD leng=fp.GetLength ();
  6576. if(leng<sizeof(DWORD)*2)
  6577. {
  6578. fp.Close ();return;
  6579. }
  6580. DWORD flag;
  6581. fp.Seek(-sizeof(DWORD),CFile::end);
  6582. fp.Read (&flag, sizeof(DWORD));
  6583. if(flag!=889900)
  6584. {
  6585. fp.Close ();return;
  6586. }
  6587. fp.SeekToBegin ();
  6588. DWORD arraysize;
  6589. fp.Read (&arraysize, sizeof(DWORD));
  6590. if(arraysize>20)
  6591. {
  6592. fp.Close ();
  6593. return;
  6594. }
  6595. BYTE *pData=new BYTE[leng-sizeof(DWORD)];
  6596. fp.Read (pData,leng-sizeof(DWORD));
  6597. fp.Close ();
  6598. CMemFile memfile;
  6599. memfile.Attach (pData,leng-sizeof(DWORD));
  6600. CArchive ar(&memfile, CArchive::load);
  6601. g_List1array.SetSize(arraysize, 1);
  6602. for(int ii=0; ii<g_List1array.GetSize (); ii++)
  6603. {
  6604. g_List1array.ElementAt (ii).Serialize (ar);
  6605. }
  6606. ar.Close();
  6607. memfile.Detach ();
  6608. delete []pData;
  6609. }
  6610. if(g_List1array.GetSize()==0)return;
  6611. SoftKey ytSoftKey;
  6612. if(ytSoftKey.Ini()==0)
  6613. {
  6614. long value[8];
  6615. double f[8];
  6616. TCHAR s0[50]=_T(""),s1[50]=_T(""),s2[50]=_T(""),s3[50]=_T(""),s4[50]=_T(""),s5[50]=_T(""),s6[50]=_T(""),s7[50]=_T("");
  6617. //运行自定义函数
  6618. int ret=ytSoftKey.getdata(&value[0],&value[1],&value[2],&value[3],&value[4],&value[5],&value[6],&value[7],
  6619. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  6620. s0,s1,s2,s3,s4,s5,s6,s7);
  6621. if(ret!=0 && ret!=-43)
  6622. {
  6623. g_sdomain="";
  6624. }
  6625. else
  6626. g_sdomain=s1;
  6627. }
  6628. CString str,str2,localname,rights;
  6629. for(int i=0; i<g_List1array.GetSize (); i++)
  6630. {
  6631. if(g_sdomain==g_List1array.ElementAt (i).ElementAt (0))
  6632. {
  6633. if(g_List1array.ElementAt (i).GetSize ()>5)
  6634. rights=g_List1array.ElementAt (i).ElementAt (5);break;
  6635. }
  6636. }
  6637. for( i=0; i<g_List1array.GetSize (); i++)
  6638. {
  6639. CString branchname=g_List1array.ElementAt (i).ElementAt (1);
  6640. CString branchip=g_List1array.ElementAt (i).ElementAt (2);
  6641. CString domain=g_List1array.ElementAt (i).ElementAt (0);
  6642. CString dir=g_mainpath+"\\数据\\"+branchname;
  6643. if(g_sdomain==g_List1array.ElementAt (i).ElementAt (0))
  6644. {
  6645. localname=branchname;
  6646. g_bMain=g_List1array.ElementAt (i).ElementAt (3);
  6647. continue;
  6648. }
  6649. CString branchname2=","+branchname+",";
  6650. if(rights.Find (branchname2)==-1)continue;
  6651. #ifdef SQLSERVER_VERSION
  6652. if(1)//::PathFileExists (dir))
  6653. {
  6654. /////////////////////////
  6655. g_branchdbarray.Add (NULL);
  6656. g_branchnamearray.Add (branchname);
  6657. g_branchdb2array.Add (NULL);
  6658. g_branchname2array.Add (branchname);
  6659. g_branchiparray.Add (branchip);
  6660. g_branchdomainarray.Add (domain);
  6661. }
  6662. #else
  6663. if(::PathFileExists (dir))
  6664. {
  6665. CString tempdir=dir+"\\temp";
  6666. if(::PathFileExists (tempdir+"\\db.mdb"))
  6667. {
  6668. for(int j=3000; j>2000; j--)
  6669. {
  6670. str.Format ("%s%d.mdb", dir+"\\", j);
  6671. ::DeleteFile (str);
  6672. str2.Format ("%s%d.mdb", tempdir+"\\", j);
  6673. ::CopyFile (str2, str, 0);
  6674. }
  6675. str.Format ("%sdb.mdb", dir+"\\");
  6676. ::DeleteFile (str);
  6677. str2.Format ("%sdb.mdb", tempdir+"\\");
  6678. ::CopyFile (str2, str, 0);
  6679. }
  6680. /////////////////////////
  6681. str.Format ("%sdb.mdb", dir+"\\");
  6682. if(::PathFileExists (str))
  6683. {
  6684. CDatabase *db=new CDatabase;
  6685. CString strCon;
  6686. strCon.Format("DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=%s;PWD=lijialyfz",str);
  6687. try
  6688. {
  6689. if(db->OpenEx(strCon,CDatabase::noOdbcDialog))
  6690. {
  6691. g_branchdbarray.Add (db);
  6692. g_branchnamearray.Add (branchname);
  6693. g_branchdb2array.Add (db);
  6694. g_branchname2array.Add (branchname);
  6695. g_branchiparray.Add (branchip);
  6696. g_branchdomainarray.Add (domain);
  6697. for(int j=3000; j>2000; j--)
  6698. {
  6699. str.Format ("%s%d.mdb", dir+"\\", j);
  6700. if(::PathFileExists (str))
  6701. {
  6702. CDatabase *db=new CDatabase;
  6703. CString strCon;
  6704. strCon.Format("DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=%s;PWD=lijialyfz",str);
  6705. if(db->OpenEx(strCon,CDatabase::noOdbcDialog))
  6706. {
  6707. g_branchdbarray.Add (db);
  6708. str.Format ("%d", j);
  6709. g_branchnamearray.Add (branchname+str);
  6710. g_branchiparray.Add (branchip);
  6711. g_branchdomainarray.Add (domain);
  6712. }
  6713. else
  6714. delete db;
  6715. }
  6716. }
  6717. }
  6718. else
  6719. delete db;
  6720. }
  6721. catch(...)
  6722. {
  6723. delete db;
  6724. }
  6725. }
  6726. }
  6727. #endif
  6728. }
  6729. g_branchdbarray.Add (NULL);
  6730. g_branchnamearray.Add (localname);
  6731. g_branchiparray.Add ("xxx");
  6732. g_branchdomainarray.Add (g_sdomain);
  6733. }
  6734. catch(...)
  6735. {
  6736. }
  6737. #endif
  6738. }
  6739. void CDBServerDlg::ReleaseBranchDB()
  6740. {
  6741. #ifdef ENTERPRISE_VERSION
  6742. try
  6743. {
  6744. for(int i=0;i<g_branchdbarray.GetSize (); i++)
  6745. {
  6746. if(g_branchdbarray.ElementAt (i))
  6747. {
  6748. g_branchdbarray.ElementAt (i)->Close ();
  6749. delete g_branchdbarray.ElementAt (i);
  6750. }
  6751. }
  6752. g_branchdbarray.RemoveAll();
  6753. g_branchdb2array.RemoveAll();
  6754. g_branchnamearray.RemoveAll();
  6755. g_branchname2array.RemoveAll();
  6756. g_branchiparray.RemoveAll();
  6757. g_branchdomainarray.RemoveAll();
  6758. }
  6759. catch(...)
  6760. {
  6761. WriteLogin("ReleaseBranchDB出错");
  6762. }
  6763. #endif
  6764. }
  6765. //savebranchinfo
  6766. void CDBServerDlg::LoadBranchInfo2()
  6767. {
  6768. #ifdef ENTERPRISE_VERSION
  6769. try
  6770. {
  6771. ReleaseBranchDB();
  6772. CArray<CStringArray, CStringArray>g_List1array;
  6773. {
  6774. MyLock lock("savebranchinfo");
  6775. CFile fp;
  6776. CString path=g_mainpath+"\\branchinfo.dat";
  6777. if(::PathFileExists (path)==0)
  6778. {
  6779. return;
  6780. }
  6781. fp.Open (path, CFile::modeRead);
  6782. DWORD leng=fp.GetLength ();
  6783. if(leng<sizeof(DWORD)*2)
  6784. {
  6785. fp.Close ();return;
  6786. }
  6787. DWORD flag;
  6788. fp.Seek(-sizeof(DWORD),CFile::end);
  6789. fp.Read (&flag, sizeof(DWORD));
  6790. if(flag!=889900)
  6791. {
  6792. fp.Close ();return;
  6793. }
  6794. fp.SeekToBegin ();
  6795. DWORD arraysize;
  6796. fp.Read (&arraysize, sizeof(DWORD));
  6797. if(arraysize>20)
  6798. {
  6799. fp.Close ();
  6800. return;
  6801. }
  6802. BYTE *pData=new BYTE[leng-sizeof(DWORD)];
  6803. fp.Read (pData,leng-sizeof(DWORD));
  6804. fp.Close ();
  6805. CMemFile memfile;
  6806. memfile.Attach (pData,leng-sizeof(DWORD));
  6807. CArchive ar(&memfile, CArchive::load);
  6808. g_List1array.SetSize(arraysize, 1);
  6809. for(int ii=0; ii<g_List1array.GetSize (); ii++)
  6810. {
  6811. g_List1array.ElementAt (ii).Serialize (ar);
  6812. }
  6813. ar.Close();
  6814. memfile.Detach ();
  6815. delete []pData;
  6816. }
  6817. if(g_List1array.GetSize()==0)return;
  6818. SoftKey ytSoftKey;
  6819. if(ytSoftKey.Ini()==0)
  6820. {
  6821. long value[8];
  6822. double f[8];
  6823. TCHAR s0[50]=_T(""),s1[50]=_T(""),s2[50]=_T(""),s3[50]=_T(""),s4[50]=_T(""),s5[50]=_T(""),s6[50]=_T(""),s7[50]=_T("");
  6824. //运行自定义函数
  6825. int ret=ytSoftKey.getdata(&value[0],&value[1],&value[2],&value[3],&value[4],&value[5],&value[6],&value[7],
  6826. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  6827. s0,s1,s2,s3,s4,s5,s6,s7);
  6828. if(ret!=0 && ret!=-43)
  6829. {
  6830. g_sdomain="";
  6831. }
  6832. else
  6833. g_sdomain=s1;
  6834. }
  6835. CString str,str2,localname,rights;
  6836. for(int i=0; i<g_List1array.GetSize (); i++)
  6837. {
  6838. if(g_sdomain==g_List1array.ElementAt (i).ElementAt (0))
  6839. {
  6840. if(g_List1array.ElementAt (i).GetSize ()>5)
  6841. rights=g_List1array.ElementAt (i).ElementAt (5);break;
  6842. }
  6843. }
  6844. for( i=0; i<g_List1array.GetSize (); i++)
  6845. {
  6846. CString branchname=g_List1array.ElementAt (i).ElementAt (1);
  6847. CString branchip=g_List1array.ElementAt (i).ElementAt (2);
  6848. CString domain=g_List1array.ElementAt (i).ElementAt (0);
  6849. CString dir=g_mainpath+"\\数据\\"+branchname;
  6850. if(g_sdomain==g_List1array.ElementAt (i).ElementAt (0))
  6851. {
  6852. localname=branchname;
  6853. g_bMain=g_List1array.ElementAt (i).ElementAt (3);
  6854. continue;
  6855. }
  6856. CString branchname2=","+branchname+",";
  6857. if(rights.Find (branchname2)==-1)continue;
  6858. #ifdef SQLSERVER_VERSION
  6859. if(1)//::PathFileExists (dir))
  6860. {
  6861. ////////////////////////
  6862. g_branchdbarray.Add (NULL);
  6863. g_branchnamearray.Add (branchname);
  6864. g_branchdb2array.Add (NULL);
  6865. g_branchname2array.Add (branchname);
  6866. g_branchiparray.Add (branchip);
  6867. g_branchdomainarray.Add (domain);
  6868. }
  6869. #else
  6870. if(::PathFileExists (dir))
  6871. {
  6872. CString tempdir=dir+"\\temp";
  6873. if(::PathFileExists (tempdir+"\\db.mdb"))
  6874. {
  6875. for(int j=3000; j>2000; j--)
  6876. {
  6877. str.Format ("%s%d.mdb", dir+"\\", j);
  6878. ::DeleteFile (str);
  6879. str2.Format ("%s%d.mdb", tempdir+"\\", j);
  6880. ::CopyFile (str2, str, 0);
  6881. }
  6882. str.Format ("%sdb.mdb", dir+"\\");
  6883. ::DeleteFile (str);
  6884. str2.Format ("%sdb.mdb", tempdir+"\\");
  6885. ::CopyFile (str2, str, 0);
  6886. }
  6887. /////////////////////////
  6888. str.Format ("%sdb.mdb", dir+"\\");
  6889. if(::PathFileExists (str))
  6890. {
  6891. CDatabase *db=new CDatabase;
  6892. CString strCon;
  6893. strCon.Format("DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=%s;PWD=lijialyfz",str);
  6894. try
  6895. {
  6896. if(db->OpenEx(strCon,CDatabase::noOdbcDialog))
  6897. {
  6898. g_branchdbarray.Add (db);
  6899. g_branchnamearray.Add (branchname);
  6900. g_branchdb2array.Add (db);
  6901. g_branchname2array.Add (branchname);
  6902. g_branchiparray.Add (branchip);
  6903. g_branchdomainarray.Add (domain);
  6904. for(int j=3000; j>2000; j--)
  6905. {
  6906. str.Format ("%s%d.mdb", dir+"\\", j);
  6907. if(::PathFileExists (str))
  6908. {
  6909. CDatabase *db=new CDatabase;
  6910. CString strCon;
  6911. strCon.Format("DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=%s;PWD=lijialyfz",str);
  6912. if(db->OpenEx(strCon,CDatabase::noOdbcDialog))
  6913. {
  6914. g_branchdbarray.Add (db);
  6915. str.Format ("%d", j);
  6916. g_branchnamearray.Add (branchname+str);
  6917. g_branchiparray.Add (branchip);
  6918. g_branchdomainarray.Add (domain);
  6919. }
  6920. else
  6921. delete db;
  6922. }
  6923. }
  6924. }
  6925. else
  6926. delete db;
  6927. }
  6928. catch(...)
  6929. {
  6930. delete db;
  6931. }
  6932. }
  6933. }
  6934. #endif
  6935. }
  6936. g_branchdbarray.Add (NULL);
  6937. g_branchnamearray.Add (localname);
  6938. g_branchiparray.Add ("xxx");
  6939. g_branchdomainarray.Add (g_sdomain);
  6940. }
  6941. catch(...)
  6942. {
  6943. }
  6944. #endif
  6945. }
  6946. void SortArray(CStringArray &datearray)
  6947. {
  6948. try
  6949. {
  6950. CString strtemp;
  6951. float ftemp;
  6952. int last = datearray.GetSize () - 1;
  6953. bool sorted = true;
  6954. do {
  6955. sorted = true;
  6956. for (int i = 0; i < last; i++)
  6957. {
  6958. if (datearray[i] < datearray[i + 1])
  6959. {
  6960. strtemp = datearray[i];
  6961. datearray[i] = datearray[i + 1];
  6962. datearray[i + 1] = strtemp;
  6963. sorted = false;
  6964. }
  6965. }
  6966. last--;
  6967. } while (!sorted);
  6968. }
  6969. catch(...)
  6970. {
  6971. WriteLogin("SortArray出错");
  6972. }
  6973. }
  6974. int CheckPhoneType(CString phoneno)//移动:0 联通:1 电信:2 小灵通:3 未知:-1
  6975. {
  6976. if(phoneno.IsEmpty ())return -1;
  6977. for(int i=0; i<phoneno.GetLength (); i++)
  6978. {
  6979. if(phoneno.GetAt (i)<'0'||phoneno.GetAt (i)>'9')return -1;
  6980. }
  6981. if(phoneno.GetAt (0)=='1')
  6982. {
  6983. if(phoneno.GetLength ()!=11)
  6984. return -1;
  6985. int mobile[]={139,138,137,136,135,134,159,158,152,151,150,157,188,187,144,182,147,183};
  6986. int unicom[]={130,131,132,155,156,186,185};
  6987. int telecom[]={133,153,189,180};
  6988. for(i=0; i<sizeof(mobile)/sizeof(int); i++)
  6989. {
  6990. if(mobile[i]==atoi(phoneno.Left (3)))
  6991. {
  6992. return 0;
  6993. }
  6994. }
  6995. for(i=0; i<sizeof(unicom)/sizeof(int); i++)
  6996. {
  6997. if(unicom[i]==atoi(phoneno.Left (3)))
  6998. {
  6999. return 1;
  7000. }
  7001. }
  7002. for(i=0; i<sizeof(telecom)/sizeof(int); i++)
  7003. {
  7004. if(telecom[i]==atoi(phoneno.Left (3)))
  7005. {
  7006. return 2;
  7007. }
  7008. }
  7009. return -1;
  7010. }
  7011. /* else if(phoneno.GetAt (0)=='0')
  7012. {
  7013. if(phoneno.GetLength ()>=10 && phoneno.GetLength ()<=12)
  7014. {
  7015. return 3;
  7016. }
  7017. }*/
  7018. return -1;
  7019. }
  7020. void CDBServerDlg::CheckMemberMsg()
  7021. {
  7022. try
  7023. {
  7024. g_curdb=&g_db;
  7025. CString sql="delete from sendreg where [log]='0/0'";
  7026. MyExecuteSQL (&g_db, sql);
  7027. int covertrate=100;
  7028. CString spoint;
  7029. {
  7030. CRecordset myset(g_curdb);
  7031. CString sql="select * from version";
  7032. myset.Open (CRecordset::forwardOnly, sql);
  7033. myset.GetFieldValue ("rate2", sql);
  7034. myset.Close();
  7035. covertrate=atoi(sql);
  7036. if(covertrate==0)covertrate=100;
  7037. }
  7038. CString filter;
  7039. CArray<CStringArray, CStringArray>rulearray;
  7040. CArray<CStringArray, CStringArray>memberarray;
  7041. {
  7042. CRecordset myset(g_curdb);
  7043. CString sql="select count(*) as cot from msgtemp2";if(!filter.IsEmpty ())sql+=" where "+filter;
  7044. myset.Open (CRecordset::forwardOnly, sql);
  7045. myset.GetFieldValue ("cot", sql);
  7046. myset.Close();
  7047. int count=atol(sql);
  7048. rulearray.SetSize(count , 1 );
  7049. CRstmsgtemp2 rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  7050. rsSt.Open();
  7051. DWORD ii=0;
  7052. while(!rsSt.IsEOF())
  7053. {
  7054. rulearray.ElementAt (ii).RemoveAll ();
  7055. rulearray.ElementAt (ii).Add(rsSt.name) ;
  7056. rulearray.ElementAt (ii).Add(rsSt.content1) ;
  7057. rulearray.ElementAt (ii).Add(rsSt.content2) ;
  7058. rulearray.ElementAt (ii).Add(rsSt.check1) ;
  7059. rulearray.ElementAt (ii).Add(rsSt.check2) ;
  7060. rulearray.ElementAt (ii).Add(rsSt.point) ;
  7061. ii++;
  7062. rsSt.MoveNext();if(rulearray.GetSize ()<=ii)break;
  7063. }
  7064. rsSt.Close();rulearray.SetSize(ii , 1 );
  7065. }
  7066. if(rulearray.GetSize()==0)return;
  7067. /////////////
  7068. {
  7069. CRecordset myset(g_curdb);
  7070. CString sql="select count(*) as cot from membermanage"; if(!filter.IsEmpty ())sql+=" where "+filter;
  7071. myset.Open (CRecordset::forwardOnly, sql);
  7072. myset.GetFieldValue ("cot", sql);
  7073. myset.Close();
  7074. memberarray.SetSize(atol(sql) , 1 );
  7075. RstMemberReg rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  7076. rsSt.Open();
  7077. DWORD ii=0;
  7078. if(covertrate!=100)
  7079. {
  7080. while(!rsSt.IsEOF())
  7081. {
  7082. memberarray.ElementAt (ii).RemoveAll ();
  7083. memberarray.ElementAt (ii).Add(rsSt.m_memberno) ;
  7084. memberarray.ElementAt (ii).Add(rsSt.m_name) ;
  7085. memberarray.ElementAt (ii).Add(rsSt.m_sex) ;
  7086. memberarray.ElementAt (ii).Add(rsSt.m_phone) ;
  7087. spoint.Format ("%d", atoi(rsSt.m_money)*covertrate/100);
  7088. memberarray.ElementAt (ii).Add(spoint) ;
  7089. memberarray.ElementAt (ii).Add(rsSt.m_sendmark1) ;
  7090. memberarray.ElementAt (ii).Add(rsSt.m_sendmark2) ;
  7091. ii++;
  7092. rsSt.MoveNext();if(memberarray.GetSize ()<=ii)break;
  7093. }
  7094. }
  7095. else
  7096. {
  7097. while(!rsSt.IsEOF())
  7098. {
  7099. memberarray.ElementAt (ii).RemoveAll ();
  7100. memberarray.ElementAt (ii).Add(rsSt.m_memberno) ;
  7101. memberarray.ElementAt (ii).Add(rsSt.m_name) ;
  7102. memberarray.ElementAt (ii).Add(rsSt.m_sex) ;
  7103. memberarray.ElementAt (ii).Add(rsSt.m_phone) ;
  7104. memberarray.ElementAt (ii).Add(rsSt.m_money) ;
  7105. memberarray.ElementAt (ii).Add(rsSt.m_sendmark1) ;
  7106. memberarray.ElementAt (ii).Add(rsSt.m_sendmark2) ;
  7107. ii++;
  7108. rsSt.MoveNext();if(memberarray.GetSize ()<=ii)break;
  7109. }
  7110. }
  7111. rsSt.Close();memberarray.SetSize(ii , 1 );
  7112. }
  7113. CString memberno,name,sex,phone,point,mark1,mark2,rulename,rulecheck1,rulecheck2,rulepoint,rulecontent1,rulecontent2;
  7114. for(int i=0; i<memberarray.GetSize(); i++)
  7115. {
  7116. memberno=memberarray.ElementAt (i).ElementAt (0);
  7117. name=memberarray.ElementAt (i).ElementAt (1);
  7118. sex=memberarray.ElementAt (i).ElementAt (2);
  7119. phone=memberarray.ElementAt (i).ElementAt (3);
  7120. point=memberarray.ElementAt (i).ElementAt (4);
  7121. mark1=","+memberarray.ElementAt (i).ElementAt (5)+",";
  7122. mark2=","+memberarray.ElementAt (i).ElementAt (6)+",";
  7123. if(atoi(point)==0)continue;
  7124. if(phone.IsEmpty ())continue;
  7125. if(-1==CheckPhoneType(phone))continue;
  7126. for(int j=0; j<rulearray.GetSize (); j++)
  7127. {
  7128. if(mark1.GetLength ()>4000)break;
  7129. rulename=","+rulearray.ElementAt (j).ElementAt (0)+",";
  7130. rulecontent1=rulearray.ElementAt (j).ElementAt (1);
  7131. rulecontent2=rulearray.ElementAt (j).ElementAt (2);
  7132. rulecheck1=rulearray.ElementAt (j).ElementAt (3);
  7133. rulecheck2=rulearray.ElementAt (j).ElementAt (4);
  7134. rulepoint=rulearray.ElementAt (j).ElementAt (5);
  7135. if(atoi(rulecheck1)==0 && atoi(rulecheck2)==0)continue;
  7136. if(atoi(rulecheck1))
  7137. {
  7138. if(rulecontent1.IsEmpty ())continue;
  7139. if(mark1.Find (rulename)!=-1)continue;
  7140. if(atoi(point)>=atoi(rulepoint))continue;
  7141. if(atoi(point)<atoi(rulepoint)*80/100)continue;
  7142. if(sex=="男")
  7143. rulecontent1.Replace ("xxx先生/女士", name+"先生");
  7144. else
  7145. rulecontent1.Replace ("xxx先生/女士", name+"女士");
  7146. int count=GetLengthEx(rulecontent1)/MSG_LENGTH;
  7147. if(GetLengthEx(rulecontent1)%MSG_LENGTH)
  7148. count++;
  7149. int phonenum=1;
  7150. count*=phonenum;
  7151. CString scount;
  7152. scount.Format ("%d", count);
  7153. CString timestamp=CTime::GetCurrentTime ().Format ("%Y%m%d%H%M%S");
  7154. CString sql;
  7155. mark1.TrimLeft (",");
  7156. mark1.TrimRight (",");
  7157. if(mark1.IsEmpty ()==0)
  7158. mark1+=",";
  7159. rulename.TrimLeft (",");
  7160. rulename.TrimRight (",");
  7161. mark1+=rulename;
  7162. sql="update membermanage set sendmark1='"+mark1+"' where memberno='"+memberno+"'";
  7163. MyExecuteSQL (&g_db, sql);
  7164. mark1=","+mark1+",";
  7165. sql="insert into sendreg([phones],[content],[timestamp],[msgcount],[status],[issended],[isautosend],[ren]) values\
  7166. ('"+phone+"','"+rulecontent1+"','"+timestamp+"','"+scount+"','0','0','0','系统自动发送')";
  7167. MyExecuteSQL (&g_db, sql);
  7168. }
  7169. }
  7170. ///////////////////
  7171. BOOL bSended=0;
  7172. for( j=0; j<rulearray.GetSize (); j++)
  7173. {
  7174. if(mark2.GetLength ()>4000)break;
  7175. if(bSended)break;
  7176. rulename=","+rulearray.ElementAt (j).ElementAt (0)+",";
  7177. rulecontent1=rulearray.ElementAt (j).ElementAt (1);
  7178. rulecontent2=rulearray.ElementAt (j).ElementAt (2);
  7179. rulecheck1=rulearray.ElementAt (j).ElementAt (3);
  7180. rulecheck2=rulearray.ElementAt (j).ElementAt (4);
  7181. rulepoint=rulearray.ElementAt (j).ElementAt (5);
  7182. if(atoi(rulecheck1)==0 && atoi(rulecheck2)==0)continue;
  7183. if(atoi(rulecheck2))
  7184. {
  7185. if(rulecontent2.IsEmpty ())continue;
  7186. if(mark2.Find (rulename)!=-1)continue;
  7187. if(atoi(point)<atoi(rulepoint))continue;
  7188. if(sex=="男")
  7189. rulecontent2.Replace ("xxx先生/女士", name+"先生");
  7190. else
  7191. rulecontent2.Replace ("xxx先生/女士", name+"女士");
  7192. int count=GetLengthEx(rulecontent2)/MSG_LENGTH;
  7193. if(GetLengthEx(rulecontent2)%MSG_LENGTH)
  7194. count++;
  7195. int phonenum=1;
  7196. count*=phonenum;
  7197. CString scount;
  7198. scount.Format ("%d", count);
  7199. CString timestamp=CTime::GetCurrentTime ().Format ("%Y%m%d%H%M%S");
  7200. CString sql;
  7201. mark2.TrimLeft (",");
  7202. mark2.TrimRight (",");
  7203. if(mark2.IsEmpty ()==0)
  7204. mark2+=",";
  7205. rulename.TrimLeft (",");
  7206. rulename.TrimRight (",");
  7207. mark2+=rulename;
  7208. sql="update membermanage set sendmark2='"+mark2+"' where memberno='"+memberno+"'";
  7209. MyExecuteSQL (&g_db, sql);
  7210. mark2=","+mark2+",";
  7211. sql="insert into sendreg([phones],[content],[timestamp],[msgcount],[status],[issended],[isautosend],[ren]) values\
  7212. ('"+phone+"','"+rulecontent2+"','"+timestamp+"','"+scount+"','0','0','0','系统自动发送')";
  7213. MyExecuteSQL (&g_db, sql);
  7214. bSended=1;
  7215. }
  7216. }
  7217. }
  7218. }
  7219. catch(...)
  7220. {
  7221. WriteLogin("出错2");
  7222. }
  7223. }
  7224. void CDBServerDlg::CheckBakState()
  7225. {
  7226. try
  7227. {
  7228. g_curdb=&g_db;
  7229. CString filter;
  7230. CArray<CStringArray, CStringArray>g_List1array;
  7231. CRecordset myset(g_curdb);
  7232. CString sql="select count(*) as cot from bakstate";if(!filter.IsEmpty ())sql+=" where "+filter;
  7233. myset.Open (CRecordset::forwardOnly, sql);
  7234. myset.GetFieldValue ("cot", sql);
  7235. myset.Close();
  7236. int count=atol(sql);
  7237. g_List1array.SetSize(count , 1 );
  7238. CRstbakstate rsSt;if(!filter.IsEmpty ())rsSt.m_strFilter =filter;
  7239. rsSt.Open();
  7240. int ii=0;
  7241. while(!rsSt.IsEOF())
  7242. {
  7243. g_List1array.ElementAt (ii).RemoveAll ();
  7244. g_List1array.ElementAt (ii).Add(rsSt.date) ;
  7245. g_List1array.ElementAt (ii).Add(rsSt.photo) ;
  7246. g_List1array.ElementAt (ii).Add(rsSt.info) ;
  7247. ii++;
  7248. rsSt.MoveNext();if(g_List1array.GetSize ()<=ii)break;
  7249. }
  7250. rsSt.Close();g_List1array.SetSize(ii , 1 );
  7251. while(g_List1array.GetSize ()>7)
  7252. {
  7253. CString sql="delete from bakstate where [date]='"+g_List1array.ElementAt (0).ElementAt (0)+"'";
  7254. MyExecuteSQL(&g_db, sql);
  7255. g_List1array.RemoveAt(0);
  7256. }
  7257. CString path;
  7258. path.Format ("%s\\log.txt", g_mainpath);
  7259. if(::PathFileExists (path))
  7260. {
  7261. CString str;
  7262. CStdioFile fp;
  7263. if(fp.Open (path, CFile::modeRead))
  7264. {
  7265. CString temp;
  7266. fp.ReadString (temp);
  7267. CString date=temp;date.TrimRight ();
  7268. while(!feof(fp.m_pStream))
  7269. {
  7270. fp.ReadString (temp);
  7271. str+=temp;
  7272. }
  7273. fp.Close ();
  7274. if(date.GetLength ()!=10)return;
  7275. BOOL bBak=0;
  7276. for(int i=0; i<g_List1array.GetSize (); i++)
  7277. {
  7278. if(date==g_List1array.ElementAt (i).ElementAt (0))
  7279. {
  7280. bBak=1;
  7281. break;
  7282. }
  7283. }
  7284. if(bBak==0)
  7285. {
  7286. CString state1="0";
  7287. CString state2="0";
  7288. if(str.Find ("照片备份成功")!=-1)state1="1";
  7289. if(str.Find ("资料备份成功")!=-1)state2="1";
  7290. sql="insert into bakstate([date],[photo],[info])values('"+date+"','"+state1+"','"+state2+"')";
  7291. MyExecuteSQL(&g_db, sql);
  7292. }
  7293. else
  7294. {
  7295. CString state1="0";
  7296. CString state2="0";
  7297. if(str.Find ("照片备份成功")!=-1)state1="1";
  7298. if(str.Find ("资料备份成功")!=-1)state2="1";
  7299. sql="update bakstate set [photo]='"+state1+"',[info]='"+state2+"' where [date]='"+date+"'";
  7300. MyExecuteSQL(&g_db, sql);
  7301. }
  7302. //判断昨天
  7303. CTime tm=CTime::GetCurrentTime ();
  7304. CTimeSpan dt(1, 0, 0, 0);
  7305. tm-=dt;
  7306. CString yesterday=tm.Format ("%Y-%m-%d");
  7307. for(i=0; i<g_List1array.GetSize (); i++)
  7308. {
  7309. if(yesterday==g_List1array.ElementAt (i).ElementAt (0))return;
  7310. }
  7311. if(yesterday==date)return;
  7312. sql="insert into bakstate([date],[photo],[info])values('"+yesterday+"','0','0')";
  7313. MyExecuteSQL(&g_db, sql);
  7314. }
  7315. else
  7316. {
  7317. CTime tm=CTime::GetCurrentTime ();
  7318. CTimeSpan dt(1, 0, 0, 0);
  7319. tm-=dt;
  7320. sql="insert into bakstate([date],[photo],[info])values('"+tm.Format ("%Y-%m-%d")+"','0','0')";
  7321. MyExecuteSQL(&g_db, sql);
  7322. }
  7323. }
  7324. else
  7325. {
  7326. CTime tm=CTime::GetCurrentTime ();
  7327. CTimeSpan dt(1, 0, 0, 0);
  7328. tm-=dt;
  7329. for(int i=0; i<g_List1array.GetSize (); i++)
  7330. {
  7331. if(tm.Format ("%Y-%m-%d")==g_List1array.ElementAt (i).ElementAt (0))return;
  7332. }
  7333. sql="insert into bakstate([date],[photo],[info])values('"+tm.Format ("%Y-%m-%d")+"','0','0')";
  7334. MyExecuteSQL(&g_db, sql);
  7335. }
  7336. }
  7337. catch(...)
  7338. {
  7339. WriteLogin("出错3");
  7340. }
  7341. }
  7342. //数据备份
  7343. CString CDBServerDlg::GetRegCode(long m_id, long m_time1, long m_time2 )
  7344. {
  7345. TCHAR DevicePath[ 260];
  7346. if(FindPort(0,DevicePath)!=0)
  7347. return "";
  7348. int version;
  7349. GetIDVersion((DWORD*)&m_id, &version, DevicePath);
  7350. long d[8];double f[8];
  7351. long idtemp=123456;
  7352. char s0[50]="",s1[50]="",s2[50]="",s3[50]="",s4[50]="",s5[50]="",s6[50]="",s7[50]="";
  7353. //运行自定义函数
  7354. SoftKey ytSoftKey;
  7355. int ret=ytSoftKey.Ini();
  7356. if (ret!=0 )
  7357. {
  7358. return "";
  7359. }
  7360. ret=ytSoftKey.timedog1(&m_id,&idtemp,&m_time1,&m_time2,&d[4],&d[5],&d[6],&d[7],
  7361. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  7362. s0,s1,s2,s3,s4,s5,s6,s7);
  7363. if(ret!=0 && ret!=-43)
  7364. {
  7365. return "";
  7366. }
  7367. CString str="";
  7368. CString temp,temp2;
  7369. /////////////////////////////////////////
  7370. temp.Format ("%d", abs(m_id));
  7371. int leng=temp.GetLength ();
  7372. if(m_id<0)
  7373. temp2="1";
  7374. else
  7375. temp2="0";
  7376. temp=temp2+temp;
  7377. temp2.Format ("%02d", leng);
  7378. temp=temp2+temp;
  7379. str+=temp;
  7380. //////////////////////////////////两位长度, 1为负, 0为正, 数据区
  7381. temp.Format ("%d", abs(m_time1));
  7382. leng=temp.GetLength ();
  7383. if(m_time1<0)
  7384. temp2="1";
  7385. else
  7386. temp2="0";
  7387. temp=temp2+temp;
  7388. temp2.Format ("%02d", leng);
  7389. temp=temp2+temp;
  7390. str+=temp;
  7391. //////////////////////////////////两位长度, 1为负, 0为正, 数据区
  7392. temp.Format ("%d", abs(m_time2));
  7393. leng=temp.GetLength ();
  7394. if(m_time2<0)
  7395. temp2="1";
  7396. else
  7397. temp2="0";
  7398. temp=temp2+temp;
  7399. temp2.Format ("%02d", leng);
  7400. temp=temp2+temp;
  7401. str+=temp;
  7402. //////////////////////////////////两位长度, 1为负, 0为正, 数据区
  7403. temp.Format ("%d", abs(idtemp));
  7404. leng=temp.GetLength ();
  7405. if(idtemp<0)
  7406. temp2="1";
  7407. else
  7408. temp2="0";
  7409. temp=temp2+temp;
  7410. temp2.Format ("%02d", leng);
  7411. temp=temp2+temp;
  7412. str+=temp;
  7413. return str;
  7414. }
  7415. int g_ndogtimes=0;
  7416. void CDBServerDlg::CheckRegCode()
  7417. {
  7418. char path[MAX_PATH];
  7419. ::GetSystemDirectory (path, MAX_PATH);
  7420. CString sysdir=path;
  7421. sysdir+="\\authcode.txt";
  7422. CStdioFile fp;
  7423. CString authcode;
  7424. if(fp.Open (sysdir, CFile::modeRead))
  7425. {
  7426. fp.ReadString (authcode);
  7427. fp.Close ();
  7428. }
  7429. ::DeleteFile (sysdir);
  7430. authcode.TrimLeft ();
  7431. authcode.TrimRight ();
  7432. authcode.Replace ("\n", "");
  7433. authcode.Replace ("\r", "");
  7434. if(authcode.GetLength ()!=240)
  7435. {
  7436. return;
  7437. }
  7438. TCHAR DevicePath[ 260];
  7439. if(FindPort(0,DevicePath)!=0)
  7440. return;
  7441. DWORD OutID;
  7442. int version;
  7443. GetIDVersion(&OutID, &version, DevicePath);
  7444. CString str1,str2,str3,str4,str5;
  7445. str1=authcode.Mid (0, 48);
  7446. str2=authcode.Mid (48, 48);
  7447. str3=authcode.Mid (96, 48);
  7448. str4=authcode.Mid (144, 48);
  7449. str5=authcode.Mid (192, 48);
  7450. SoftKey ytSoftKey;
  7451. int ret=ytSoftKey.Ini();
  7452. if (ret!=0 )
  7453. {
  7454. return ;
  7455. }
  7456. long d[8];double f[8];
  7457. char s0[50]="",s1[50]="",s2[50]="",s3[50]="",s4[50]="",s5[50]="",s6[50]="",s7[50]="";
  7458. //运行自定义函数
  7459. sprintf(s0, "%s", str1);
  7460. sprintf(s1, "%s", str2);
  7461. sprintf(s2, "%s", str3);
  7462. sprintf(s3, "%s", str4);
  7463. sprintf(s4, "%s", str5);
  7464. //运行自定义函数
  7465. ret=ytSoftKey.timedog2(&d[0],&d[1],&d[2],&d[3],&d[4],&d[5],&d[6],&d[7],
  7466. &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],
  7467. s0,s1,s2,s3,s4,s5,s6,s7);
  7468. if(ret!=0 && ret!=-43)
  7469. {
  7470. return;
  7471. }
  7472. str1=s0;
  7473. str2=s1;
  7474. str3=s2;
  7475. str4=s3;
  7476. str5=s4;
  7477. authcode=str1;
  7478. authcode+=str2;
  7479. authcode+=str3;
  7480. authcode+=str4;
  7481. authcode+=str5;
  7482. str1+=str2;
  7483. str3+=str4;
  7484. DWORD id=atoi(str5.Right (8));
  7485. str5=str5.Left (12);
  7486. if(id!=OutID)
  7487. {
  7488. return;
  7489. }
  7490. TCHAR HKey[20]="ffffffff",LKey[20]="ffffffff";
  7491. TCHAR WHKey[41]="0",WLKey[41]="0";
  7492. TCHAR year[10],month[10],day[10],hour[10],minute[10],second[10];
  7493. sprintf(WHKey, "%s", str1);
  7494. sprintf(WLKey, "%s", str3);
  7495. CString temp;
  7496. temp=str5.Left (4);
  7497. str5=str5.Right (8);
  7498. sprintf(year, "%s", temp);
  7499. temp=str5.Left (2);
  7500. str5=str5.Right (6);
  7501. sprintf(month, "%s", temp);
  7502. temp=str5.Left (2);
  7503. str5=str5.Right (4);
  7504. sprintf(day, "%s", temp);
  7505. temp=str5.Left (2);
  7506. str5=str5.Right (2);
  7507. sprintf(hour, "%s", temp);
  7508. sprintf(minute, "%s", str5);
  7509. sprintf(second, "%s", "0");
  7510. ret=WriteTimeAuthToEprom(30128, HKey, LKey, WHKey, WLKey, id,year,month,day,hour,minute,DevicePath);
  7511. if(ret==0)
  7512. {
  7513. TCHAR year2[10],month2[10],day2[10],hour2[10],minute2[10],second2[10];
  7514. GetRunTimer(year2, month2, day2, hour2, minute2, second2, DevicePath);
  7515. DWORD time1,time2;
  7516. time1=ConvertStringToTimerReal(year, month, day, hour, minute, second);
  7517. sprintf(second2, "%s", "0");
  7518. time2=ConvertStringToTimerReal(year2, month2, day2, hour2, minute2, second2);
  7519. if(time1>time2)
  7520. ConvertTimerToStringReal(time1-time2, year, month, day, hour, minute, second);
  7521. else
  7522. {
  7523. sprintf(year, "%s", "0");
  7524. sprintf(month, "%s", "0");
  7525. sprintf(day, "%s", "0");
  7526. sprintf(hour, "%s", "0");
  7527. sprintf(minute, "%s", "0");
  7528. }
  7529. g_ndogtimes++;
  7530. // str1.Format ("写入%d次 %d 年 %d 月 %d 日 %d 小时 %d 分", g_ndogtimes, atoi(year), atoi(month), atoi(day), atoi(hour), atoi(minute));
  7531. // WriteLogin(str1);
  7532. // AfxMessageBox((str1));
  7533. }
  7534. else
  7535. {
  7536. // AfxMessageBox(("授权申请码错误, 请重新向经销商索取!"));
  7537. return;
  7538. }
  7539. }
  7540. //singleincome
  7541. BOOL CDBServerDlg::PreTranslateMessage(MSG* pMsg)
  7542. {
  7543. if(pMsg->message==WM_KEYDOWN)
  7544. {
  7545. switch (pMsg->wParam)
  7546. {
  7547. case 67:
  7548. AfxMessageBox("c");
  7549. break;
  7550. case VK_F1:
  7551. CString str;
  7552. if(g_conniparray.GetSize()==0)str="当前无客户端连接至服务器!";
  7553. for(int i=0; i<g_conniparray.GetSize(); i++)
  7554. {
  7555. str+="\r\n连接ip:"+g_conniparray.ElementAt(i);
  7556. }
  7557. AfxMessageBox(str);
  7558. #ifdef CONNCOUNT_VERSION
  7559. // CStringArray g_conniparray;
  7560. #endif
  7561. return 1;
  7562. }
  7563. }
  7564. return CDialog::PreTranslateMessage(pMsg);
  7565. }
  7566. void CDBServerDlg::GenUPhoneData()
  7567. {
  7568. MyLock lock("processChatMessageRequestxiao");
  7569. CArray<int,int>codearray;
  7570. codearray.Add (80);
  7571. codearray.Add (90);
  7572. codearray.Add (11);
  7573. codearray.Add (138);
  7574. codearray.Add (24);
  7575. codearray.Add (181);
  7576. codearray.Add (65);
  7577. codearray.Add (56);
  7578. codearray.Add (179);
  7579. codearray.Add (53);
  7580. CFile fp;
  7581. CString savepath,g_path1;
  7582. g_path1=GetPathFromNetShareName("电话录音(管理软件)$");
  7583. if(g_path1.IsEmpty ())return;
  7584. try
  7585. {
  7586. int aa=0;
  7587. g_curdb=&g_db;
  7588. savepath.Format ("%s\\uphonedata%d.dat", g_path1, aa);
  7589. ::DeleteFile (savepath);
  7590. if(fp.Open (savepath, CFile::modeCreate|CFile::modeWrite)==0)
  7591. {
  7592. WriteLogin("更新电精灵数据出错");
  7593. return;
  7594. }
  7595. CConnectSocket consock;
  7596. consock.m_pConndb =&g_db;
  7597. for(int i=0; i<codearray.GetSize (); i++)
  7598. {
  7599. BYTE code=codearray.ElementAt (i);
  7600. DWORD length,arraysize;
  7601. BYTE *pReturn=NULL;
  7602. consock.GetDataFromCode(code, &pReturn, length, arraysize, "");
  7603. fp.Write (&code, sizeof(BYTE));
  7604. fp.Write (&length, sizeof(DWORD));
  7605. fp.Write (&arraysize, sizeof(DWORD));
  7606. fp.Write (pReturn, length);
  7607. }
  7608. fp.Close ();
  7609. }
  7610. catch(...)
  7611. {
  7612. WriteLogin("获取来电精灵数据出错");
  7613. }
  7614. }
  7615. //initlia
  7616. void CDBServerDlg::LoadDB()
  7617. {
  7618. CString path;
  7619. CString sql;
  7620. sql="delete from historydb";
  7621. MyExecuteSQL(&g_db, sql);
  7622. CDatabase g_masterdb;
  7623. try
  7624. {
  7625. CString strCon;
  7626. strCon.Format(_T("driver={SQL Server};Server=%s\\SQLEXPRESS;DATABASE=master;UID=sa;PWD=ly1234;"), g_localname);
  7627. g_masterdb.OpenEx(strCon,CDatabase::noOdbcDialog);
  7628. }
  7629. catch(CDBException * e)
  7630. {
  7631. }
  7632. for(int i=CTime::GetCurrentTime ().GetYear ()-1; i>=2009; i--)
  7633. {
  7634. CDatabase *db=new CDatabase;
  7635. try
  7636. {
  7637. CString strCon;
  7638. strCon.Format(_T("driver={SQL Server};Server=%s\\SQLEXPRESS;DATABASE=%d;UID=sa;PWD=ly1234;"), g_localname, i);
  7639. db->OpenEx(strCon,CDatabase::noOdbcDialog);
  7640. yeararray.Add (i);
  7641. dbarray.Add (db);
  7642. sql.Format ("insert into [historydb]([year])values('%d')", i);
  7643. MyExecuteSQL(&g_db, sql);
  7644. }
  7645. catch(CDBException * e)
  7646. {
  7647. CString path,path2,sql;
  7648. path.Format ("%s\\数据\\%d.mdf", g_mainpath, i);
  7649. path2.Format ("%s\\数据\\%d_log.LDF", g_mainpath, i);
  7650. if(::PathFileExists (path))
  7651. {
  7652. BOOL bLog=0;
  7653. if( ::PathFileExists(path2))
  7654. {
  7655. bLog=1;
  7656. }
  7657. g_masterdb.SetQueryTimeout(600);
  7658. if(bLog)
  7659. sql.Format("exec sp_attach_db '%d',@filename1='%s',@filename2='%s'", i, path, path2);
  7660. else
  7661. sql.Format("exec sp_attach_db '%d',@filename1='%s'", i, path);
  7662. try
  7663. {
  7664. g_masterdb.ExecuteSQL (sql);
  7665. }
  7666. catch(CDBException * e)
  7667. {
  7668. WriteLogin(e->m_strError);
  7669. WriteLogin("历史数据库初始化失败!!");
  7670. g_masterdb.SetQueryTimeout(10);
  7671. break;
  7672. }
  7673. g_masterdb.SetQueryTimeout(10);
  7674. CString strCon;
  7675. strCon.Format(_T("driver={SQL Server};Server=%s\\SQLEXPRESS;DATABASE=%d;UID=sa;PWD=ly1234;"), g_localname, i);
  7676. db->OpenEx(strCon,CDatabase::noOdbcDialog);
  7677. yeararray.Add (i);
  7678. dbarray.Add (db);
  7679. sql.Format ("insert into [historydb]([year])values('%d')", i);
  7680. MyExecuteSQL(&g_db, sql);
  7681. }
  7682. else
  7683. break;
  7684. }
  7685. }
  7686. g_masterdb.Close ();
  7687. }
  7688. void CDBServerDlg::AddOneConn()
  7689. {
  7690. try
  7691. {
  7692. MyLock lock("AddOneConnxiao");
  7693. if(g_nDBCount>=200)
  7694. {
  7695. WriteLogin("连接超数!");return;
  7696. }
  7697. CDatabase *db=new CDatabase;
  7698. if(AddConn(db, "db")==0)
  7699. {
  7700. return;
  7701. }
  7702. g_pDB[g_nDBCount]=db;
  7703. CString dbname;
  7704. for(int i=0; i<yeararray.GetSize (); i++)
  7705. {
  7706. dbname.Format ("%d", yeararray.ElementAt (i));
  7707. CDatabase *db=new CDatabase;
  7708. AddConn(db, dbname);
  7709. g_pHistoryDBarray[g_nDBCount].Add (db);
  7710. }
  7711. g_nDBCount++;
  7712. }
  7713. catch(...)
  7714. {
  7715. WriteLogin("AddOneConn error");
  7716. }
  7717. }
  7718. void GetOneConn(CDatabase **m_pdb, CArray<CDatabase*,CDatabase*>*m_dbarray, CConnectThread *pThread)
  7719. {
  7720. MyLock lock("GetOneConnxiao");
  7721. ll: for(int i=0; i<200; i++)
  7722. {
  7723. if(g_pDB[i]!=NULL && g_pThreadPt[i]==NULL)
  7724. {
  7725. *m_pdb=g_pDB[i];
  7726. m_dbarray->Copy(g_pHistoryDBarray[i]);
  7727. g_pThreadPt[i]=pThread;
  7728. return;
  7729. }
  7730. }
  7731. if(g_nDBCount>=200)
  7732. {
  7733. WriteLogin("连接超数2!");
  7734. *m_pdb=&g_db;
  7735. m_dbarray->Copy(dbarray);
  7736. return;
  7737. }
  7738. // g_pMainWnd->AddOneConn();
  7739. ::Sleep(1000);
  7740. goto ll;
  7741. }
  7742. void CDBServerDlg::CheckConnCount()
  7743. {
  7744. int count=0;
  7745. for(int i=0; i<200; i++)
  7746. {
  7747. if(g_pDB[i]!=NULL && g_pThreadPt[i]==NULL)
  7748. {
  7749. count++;
  7750. if(count>9)return;
  7751. }
  7752. }
  7753. AddOneConn();
  7754. }
  7755. //delete from singleincome