DBServerDlg.cpp 236 KB

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