SAPDataLogic.cs 287 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.ServiceModel.Security;
  6. using Dongke.IBOSS.PRD.Basics.BaseResources;
  7. using Dongke.IBOSS.PRD.Basics.DataAccess;
  8. using Dongke.IBOSS.PRD.Basics.Library;
  9. using Dongke.IBOSS.PRD.Service.DataModels;
  10. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService.HGSAPDK_ZPPFM008;
  11. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService.HGSAPDK_ZPPFM010;
  12. using Dongke.IBOSS.PRD.WCF.DataModels;
  13. using Oracle.ManagedDataAccess.Client;
  14. using Newtonsoft.Json.Linq;
  15. using Newtonsoft.Json;
  16. using System.Linq;
  17. namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
  18. {
  19. public partial class SAPDataLogic
  20. {
  21. /// <summary>
  22. /// 获取同步最后一次同步成功的日期
  23. /// </summary>
  24. /// <returns></returns>
  25. public static ServiceResultEntity GetLastDateByCode(string dataCode)
  26. {
  27. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  28. ServiceResultEntity sre = new ServiceResultEntity();
  29. try
  30. {
  31. string sqlString =
  32. "select max(t.yyyymmdd) yyyymmdd\n" +
  33. " from tsap_hegii_datalog t\n" +
  34. " where t.logtype = '2'\n" +
  35. " and t.datastuts = 'S'\n" +
  36. " and t.datacode = :dataCode";
  37. OracleParameter[] oracleParameter = new OracleParameter[]
  38. {
  39. new OracleParameter(":dataCode",OracleDbType.Varchar2, dataCode, ParameterDirection.Input),
  40. };
  41. string lastDate = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  42. sre.Result = lastDate;
  43. return sre;
  44. }
  45. catch (Exception ex)
  46. {
  47. throw ex;
  48. }
  49. }
  50. /// <summary>
  51. /// 获取成品交接同步数据
  52. /// </summary>
  53. /// <returns></returns>
  54. public static ServiceResultEntity GetWorkData60(DateTime date)
  55. {
  56. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  57. ServiceResultEntity sre = new ServiceResultEntity();
  58. try
  59. {
  60. string yyyymmdd = date.ToString("yyyyMMdd");
  61. //string sqlString =
  62. // "select t.logid\n" +
  63. // " from tsap_hegii_datalog t\n" +
  64. // " where t.logtype = '2'\n" +
  65. // " and t.datastuts = 'S'\n" +
  66. // " and t.yyyymmdd = :yyyymmdd\n" +
  67. // " and t.datacode = '60'";
  68. //OracleParameter[] oracleParameter = new OracleParameter[]
  69. //{
  70. // new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  71. //};
  72. //string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  73. //if (!string.IsNullOrEmpty(logid))
  74. //{
  75. // sqlString = "select t.yyyymmdd\n" +
  76. // " ,t.goodscode\n" +
  77. // " ,t.sapcode\n" +
  78. // " ,t.usercode\n" +
  79. // " ,t.ordercode\n" +
  80. // " ,t.orderitem\n" +
  81. // " ,t.outputnum\n" +
  82. // " ,t.recoverynum\n" +
  83. // " ,t.createtime\n" +
  84. // " ,t.ztype\n" +
  85. // " ,t.zmsg\n" +
  86. // " ,t.ZTIME\n" +
  87. // " from tsap_hegii_workdata t\n" +
  88. // //" where t.yyyymmdd = :yyyymmdd\n" +
  89. // //" and t.datacode = '60'\n" +
  90. // " where t.logid = :logid\n" +
  91. // " order by t.goodscode,t.sapcode,t.usercode,t.ordercode,t.orderitem";
  92. // oracleParameter = new OracleParameter[]
  93. // {
  94. // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  95. // };
  96. // sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  97. // sre.Result = 1;
  98. // return sre;
  99. //}
  100. string sqlString =
  101. "select :yyyymmdd yyyymmdd, sysdate createtime\n" +
  102. " ,tt.GoodsCode\n" +
  103. " ,tt.SAPCode\n" +
  104. " ,tt.usercode\n" +
  105. " ,tt.ordercode\n" +
  106. " ,tt.orderitem\n" +
  107. " ,to_char(tt.OutputNum) OutputNum\n" +
  108. " ,to_char(tt.RecoveryNum) RecoveryNum\n" +
  109. " from (\n" +
  110. "select t.GoodsCode\n" +
  111. " ,t.SAPCode\n" +
  112. " ,t.usercode\n" +
  113. " ,t.ordercode\n" +
  114. " ,t.orderitem\n" +
  115. " ,sum(decode(t.RecyclingFlag\n" +
  116. " ,'1'\n" +
  117. " ,0\n" +
  118. " ,decode(t.DataType, 51, 1, -1))) OutputNum\n" +
  119. " ,sum(decode(t.RecyclingFlag\n" +
  120. " ,'0'\n" +
  121. " ,0\n" +
  122. " ,decode(t.DataType, 51, 1, -1))) RecoveryNum\n" +
  123. " from ( select gh.GoodsCode,gh.SAPCode,u.usercode,o.orderno,gdd.RecyclingFlag,gh.DataType \n" +
  124. " ,case\n" +
  125. " when o.orderid is null or o.orderno like 'HEGII%' then\n" +
  126. " ' '\n" +
  127. " when instr(o.orderno, '/') = 0 then\n" +
  128. " to_char(o.orderno)\n" +
  129. " else\n" +
  130. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  131. " end ordercode -- 销售凭证\n" +
  132. " ,case\n" +
  133. " when o.orderid is null or o.orderno like 'HEGII%' or\n" +
  134. " instr(o.orderno, '/') = 0 then\n" +
  135. " '0'\n" +
  136. " when instr(o.orderno, '#') = 0 then\n" +
  137. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  138. " else\n" +
  139. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1, instr(o.orderno, '#')-instr(o.orderno, '/')-1))\n" +
  140. " end orderitem -- 销售凭证项目\n" +
  141. " from (\n" +
  142. " select gch.GoodsCode,gch.SAPCode,decode(gch.DataType,53,51,gch.DataType) DataType,gch.userid,gch.groutingdailydetailid,gch.OTHERID from tp_pm_goodschangehistory gch\n" +
  143. " where gch.createtime >= :datebegin\n" +
  144. " and gch.createtime < :dateend\n" +
  145. " and gch.DataType in (51, 52, 53)\n" +
  146. " union all\n" +
  147. " select gch.GoodsCode,gch.SAPCode,52 DataType,gch.userid,gch.groutingdailydetailid,gch.GoodsIDAfter from tp_pm_goodschangehistory gch\n" +
  148. " where gch.createtime >= :datebegin\n" +
  149. " and gch.createtime < :dateend\n" +
  150. " and gch.DataType =53\n" +
  151. " ) gh\n" +
  152. " inner join tp_mst_user u\n" +
  153. " on u.userid = gh.userid\n" +
  154. " inner join tp_pm_groutingdailydetail gdd\n" +
  155. " on gdd.groutingdailydetailid = gh.groutingdailydetailid\n" +
  156. " and gdd.issync is null\n" +
  157. //" inner join tp_pm_finishedproduct fp\n" +
  158. //" on fp.barcode = gdd.barcode\n" +
  159. " left join tp_pm_order o\n" +
  160. //" on o.orderid = fp.fhorderid\n" +
  161. " on o.orderid = gh.OTHERID\n" +
  162. //" where gh.createtime >= :datebegin\n" +
  163. //" and gh.createtime < :dateend\n" +
  164. //" and gh.DataType in (51, 52)\n" +
  165. " ) t \n" +
  166. //" group by gh.GoodsCode, gh.SAPCode, u.usercode, o.orderno";
  167. " group by t.GoodsCode, t.SAPCode, t.usercode, t.ordercode, t.orderitem\n" +
  168. " ) tt where tt.OutputNum <> 0 or tt.RecoveryNum <> 0 \n" +
  169. " order by tt.GoodsCode, tt.SAPCode, tt.usercode, tt.ordercode, tt.orderitem\n";
  170. // TODO 订单变更
  171. DateTime datebegin = date.Date;
  172. DateTime dateend = date.Date.AddDays(1);
  173. OracleParameter[] oracleParameter = new OracleParameter[]
  174. {
  175. new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  176. new OracleParameter(":datebegin",OracleDbType.Date, datebegin, ParameterDirection.Input),
  177. new OracleParameter(":dateend",OracleDbType.Date, dateend, ParameterDirection.Input),
  178. };
  179. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  180. sre.Result = 0;
  181. return sre;
  182. }
  183. catch (Exception ex)
  184. {
  185. throw ex;
  186. }
  187. }
  188. /// <summary>
  189. /// 同步成品交接数据(手动)
  190. /// </summary>
  191. /// <returns></returns>
  192. public static ServiceResultEntity SetWorkData60(DateTime date, DataTable workData, int userid)
  193. {
  194. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  195. ServiceResultEntity sre = new ServiceResultEntity();
  196. try
  197. {
  198. string yyyymmdd = date.ToString("yyyyMMdd");
  199. string sqlString =
  200. "select t.logid\n" +
  201. " from tsap_hegii_datalog t\n" +
  202. " where t.logtype = '2'\n" +
  203. " and t.datastuts = 'S'\n" +
  204. " and t.yyyymmdd = :yyyymmdd\n" +
  205. " and t.datacode = '60'";
  206. OracleParameter[] oracleParameter = new OracleParameter[]
  207. {
  208. new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  209. };
  210. string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  211. if (!string.IsNullOrEmpty(logid))
  212. {
  213. sre.Status = Constant.ServiceResultStatus.Other;
  214. sre.Message = "日期【" + yyyymmdd + "】的数据已经同步过,不能重复同步。";
  215. return sre;
  216. }
  217. sqlString = "select workcode from tp_mst_account where rownum = 1";
  218. string workcode = oracleConn.GetSqlResultToStr(sqlString);
  219. DateTime datebegin = date.Date;
  220. DateTime dateend = date.Date.AddDays(1);
  221. logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  222. string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" +
  223. dateend.ToString("yyyyMMdd-HHmm");
  224. sqlString = "insert into tsap_hegii_datalog\n" +
  225. " (LogID\n" +
  226. " ,LogType\n" +
  227. " ,BeginTime\n" +
  228. " ,YYYYMMDD\n" +
  229. " ,WorkCode\n" +
  230. " ,DataCode\n" +
  231. " ,DataStuts\n" +
  232. " ,DataMSG\n" +
  233. " ,CreateUserID\n" +
  234. " ,DataLogID)\n" +
  235. "values\n" +
  236. " (:LogID\n" +
  237. " ,'2'\n" +
  238. " ,sysdate\n" +
  239. " ,:YYYYMMDD\n" +
  240. " ,:WorkCode\n" +
  241. " ,'60'\n" +
  242. " ,'S'\n" +
  243. " ,:DataMSG\n" +
  244. " ,:CreateUserID\n" +
  245. " ,:LogID)";
  246. oracleParameter = new OracleParameter[]
  247. {
  248. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  249. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  250. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  251. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  252. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  253. };
  254. int r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  255. //r = oracleConn.ExecuteNonQuery("savepoint datalog");
  256. //oracleConn.SavePoint("datalog");
  257. Zppfm008 sapParameter = new Zppfm008();
  258. if (workData != null && workData.Rows.Count > 0)
  259. {
  260. sapParameter.ZSUM = workData.Rows.Count;
  261. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  262. sqlString = "insert into TSAP_HEGII_WorkData\n" +
  263. " (YYYYMMDD\n" +
  264. " ,WorkCode\n" +
  265. " ,DataCode\n" +
  266. " ,GoodsCode\n" +
  267. " ,SAPCode\n" +
  268. " ,UserCode\n" +
  269. " ,OutputNum\n" +
  270. " ,RECOVERYNUM\n" +
  271. " ,ORDERCODE\n" +
  272. " ,ORDERITEM\n" +
  273. " ,LogID,createtime)\n" +
  274. "values\n" +
  275. " ('" + yyyymmdd + "'\n" +
  276. " ,'" + workcode + "'\n" +
  277. " ,'60'\n" +
  278. " ,:GoodsCode\n" +
  279. " ,:SAPCode\n" +
  280. " ,:UserCode\n" +
  281. " ,:OutputNum\n" +
  282. " ,:RECOVERYNUM\n" +
  283. " ,:ORDERCODE\n" +
  284. " ,:ORDERITEM\n" +
  285. " ," + logid + ",:createtime)";
  286. int index = 0;
  287. foreach (DataRow item in workData.Rows)
  288. {
  289. ZSPP100 info100 = new ZSPP100();
  290. // 工厂
  291. info100.WERKS = workcode;
  292. // 型号
  293. info100.GROES = item["GoodsCode"].ToString();
  294. // 物料编号
  295. info100.MATNR = item["SAPCode"].ToString();
  296. // 生产工号
  297. info100.ZGHNU = item["UserCode"].ToString();
  298. // 数据节点
  299. info100.ZJDNU = "60";
  300. // 时间戳
  301. info100.ZSCNU = yyyymmdd;
  302. // 销售凭证
  303. info100.VBELN = item["ORDERCODE"].ToString().Trim();
  304. // 销售凭证项目
  305. info100.POSNR = item["ORDERITEM"].ToString();
  306. // 产量
  307. info100.ZCLNG = item["OutputNum"].ToString();
  308. // 损坯
  309. info100.ZSPNG = "0";
  310. // 清除
  311. info100.ZQCNG = "0";
  312. // 回收
  313. info100.ZHSNG = item["RECOVERYNUM"].ToString();
  314. // 干补
  315. info100.ZGBNG = "0";
  316. info100.ZKSSJ = "000000";
  317. info100.ZJSRQ = Convert.ToDecimal(yyyymmdd) + 1;
  318. oracleParameter = new OracleParameter[]
  319. {
  320. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item["GoodsCode"], ParameterDirection.Input),
  321. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item["SAPCode"], ParameterDirection.Input),
  322. new OracleParameter(":UserCode",OracleDbType.Varchar2, item["UserCode"], ParameterDirection.Input),
  323. new OracleParameter(":OutputNum",OracleDbType.Varchar2, item["OutputNum"], ParameterDirection.Input),
  324. new OracleParameter(":RECOVERYNUM",OracleDbType.Varchar2, item["RECOVERYNUM"], ParameterDirection.Input),
  325. new OracleParameter(":ORDERCODE",OracleDbType.Varchar2, item["ORDERCODE"], ParameterDirection.Input),
  326. new OracleParameter(":ORDERITEM",OracleDbType.Varchar2, item["ORDERITEM"], ParameterDirection.Input),
  327. new OracleParameter(":createtime",OracleDbType.Date, item["createtime"], ParameterDirection.Input),
  328. };
  329. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  330. sapParameter.TABLE_IN[index++] = info100;
  331. }
  332. }
  333. else
  334. {
  335. sapParameter.ZSUM = 0;
  336. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  337. }
  338. ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60");
  339. //if (result.Ztype == "E")
  340. //{
  341. // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
  342. // oracleParameter = new OracleParameter[]
  343. // {
  344. // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  345. // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  346. // };
  347. // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  348. //}
  349. //else
  350. {
  351. if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  352. {
  353. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  354. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  355. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  356. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  357. foreach (ZSPP100 item in result.TABLE_OUT)
  358. {
  359. string posnr = item.POSNR.TrimStart('0');
  360. oracleParameter = new OracleParameter[]
  361. {
  362. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  363. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  364. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  365. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  366. new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  367. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  368. new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input),
  369. };
  370. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  371. }
  372. }
  373. //:msg||chr(13)||DataMSG
  374. result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  375. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  376. oracleParameter = new OracleParameter[]
  377. {
  378. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  379. new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  380. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  381. };
  382. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  383. }
  384. oracleConn.Commit();
  385. sre.Message = result.ZMSG;
  386. sre.Result = result.ZTYPE;
  387. return sre;
  388. }
  389. catch (Exception ex)
  390. {
  391. throw ex;
  392. }
  393. finally
  394. {
  395. if (oracleConn != null &&
  396. oracleConn.ConnState == ConnectionState.Open)
  397. {
  398. oracleConn.Disconnect();
  399. }
  400. }
  401. }
  402. /// <summary>
  403. /// 查询同步日志
  404. /// </summary>
  405. /// <param name="cre"></param>
  406. /// <param name="userInfo"></param>
  407. /// <returns></returns>
  408. public static ServiceResultEntity GetDataLog(ClientRequestEntity cre)
  409. {
  410. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  411. ServiceResultEntity sre = new ServiceResultEntity();
  412. try
  413. {
  414. string sqlString =
  415. "select dl.logid\n" +
  416. " ,dl.logtype\n" +
  417. " ,dl.begintime\n" +
  418. " ,dl.endtime\n" +
  419. " ,dl.yyyymmdd\n" +
  420. " ,dl.workcode\n" +
  421. " ,dl.datacode\n" +
  422. " ,dc.datacodename\n" +
  423. " ,dl.datastuts\n" +
  424. " ,dl.datamsg\n" +
  425. " ,dl.datalogid\n" +
  426. " ,dl.executedatebegin\n" +
  427. " ,dl.executedateend\n" +
  428. " ,u.usercode synusercode\n" +
  429. " from tsap_hegii_datalog dl\n" +
  430. " inner join tsap_hegii_datacode dc\n" +
  431. " on dc.datacode = dl.datacode\n" +
  432. " left join tp_mst_user u\n" +
  433. " on u.userid = dl.createuserid\n" +
  434. " where dl.logtype IN('2','3')\n" +
  435. " and dl.yyyymmdd >= :datebegin\n" +
  436. " and dl.yyyymmdd <= :dateend\n";
  437. OracleParameter[] oracleParameter = new OracleParameter[]
  438. {
  439. new OracleParameter(":datebegin",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input),
  440. new OracleParameter(":dateend",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input),
  441. };
  442. string datastuts = cre.Properties["datastuts"] + "";
  443. if (!string.IsNullOrEmpty(datastuts))
  444. {
  445. sqlString += " and dl.datastuts in (" + datastuts + ")\n";
  446. }
  447. string datacode = cre.Properties["datacode"] + "";
  448. if (!string.IsNullOrEmpty(datacode))
  449. {
  450. sqlString += " and dl.datacode = '" + datacode + "'\n";
  451. //sqlString += " and dl.datacode in (" + datacode + ")\n";
  452. }
  453. sqlString += " order by dl.datacode, dl.endtime desc";
  454. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  455. return sre;
  456. }
  457. catch (Exception ex)
  458. {
  459. throw ex;
  460. }
  461. }
  462. /// <summary>
  463. /// 查询产量同步明细
  464. /// </summary>
  465. /// <param name="logid"></param>
  466. /// <param name="userInfo"></param>
  467. /// <returns></returns>
  468. public static ServiceResultEntity GetWorkDataByDataLog(int logid)
  469. {
  470. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  471. ServiceResultEntity sre = new ServiceResultEntity();
  472. try
  473. {
  474. string sqlString = "\n" +
  475. "select wd.yyyymmdd\n" +
  476. " ,wd.workcode\n" +
  477. " ,wd.datacode\n" +
  478. " ,dc.datacodename\n" +
  479. " ,wd.goodscode\n" +
  480. " ,wd.sapcode\n" +
  481. " ,wd.usercode\n" +
  482. " ,wd.ordercode\n" +
  483. " ,wd.orderitem\n" +
  484. " ,to_number(wd.outputnum) outputnum\n" +
  485. " ,to_number(wd.scrapnum) scrapnum\n" +
  486. " ,to_number(wd.cleanupnum) cleanupnum\n" +
  487. " ,to_number(wd.recoverynum) recoverynum\n" +
  488. " ,to_number(wd.repairnum) repairnum\n" +
  489. " ,wd.createtime\n" +
  490. " ,wd.ztype\n" +
  491. " ,wd.zmsg\n" +
  492. " ,wd.ztime\n" +
  493. " ,wd.testmouldflag\n" +
  494. " ,wd.zscs\n" +
  495. " ,wd.logid\n" +
  496. " from tsap_hegii_workdata wd\n" +
  497. " inner join tsap_hegii_datacode dc\n" +
  498. " on dc.datacode = wd.datacode\n" +
  499. " where wd.logid = :logid \n" +
  500. " order by wd.goodscode,wd.sapcode,wd.usercode,wd.ordercode,wd.outputnum \n";
  501. OracleParameter[] oracleParameter = new OracleParameter[]
  502. {
  503. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  504. };
  505. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  506. //sqlString = "\n" +
  507. //"select wd.logid\n" +
  508. //" ,wd.goodscode\n" +
  509. //" ,wd.sapcode\n" +
  510. //" ,wd.procedureName\n" +
  511. //" ,wd.scrapnum\n" +
  512. //" ,wd.unscrapnum\n" +
  513. //" ,wd.scrapnum-wd.unscrapnum num\n" +
  514. //" from TSAP_HEGII_WORKDATA_SNum wd\n" +
  515. ////" inner join tsap_hegii_datacode dc\n" +
  516. ////" on dc.datacode = wd.datacode\n" +
  517. //" where wd.logid = :logid \n" +
  518. //" order by wd.goodscode,wd.sapcode,wd.procedureName \n";
  519. sqlString = "select decode(gid\n" +
  520. " ,3\n" +
  521. " ,'合计'\n" +
  522. " ,1\n" +
  523. " ,'小计[' || procedureName || ']'\n" +
  524. " ,procedureName) procedureName\n" +
  525. " ,decode(gid, 0, goodscode, '--') goodscode\n" +
  526. " ,decode(gid, 0, sapcode, '--') sapcode\n" +
  527. " ,decode(gid, 0, usercode, '--') usercode\n" +
  528. " ,scrapnum\n" +
  529. " ,unscrapnum\n" +
  530. " ,scrapnum - unscrapnum scrapsum\n" +
  531. " ,cleanupnum\n" +
  532. " ,uncleanupnum\n" +
  533. " ,cleanupnum - uncleanupnum cleanupsum\n" +
  534. " ,repairnum\n" +
  535. " ,recoverynum\n" +
  536. " from (select grouping_id(wd.procedureName, wd.goodscode) gid\n" +
  537. " ,wd.procedureName\n" +
  538. " ,wd.goodscode\n" +
  539. " ,wd.sapcode\n" +
  540. " ,wd.usercode\n" +
  541. " ,sum(wd.scrapnum) scrapnum\n" +
  542. " ,sum(wd.unscrapnum) unscrapnum\n" +
  543. " ,sum(wd.cleanupnum) cleanupnum\n" +
  544. " ,sum(wd.uncleanupnum) uncleanupnum\n" +
  545. " ,sum(wd.repairnum) repairnum\n" +
  546. " ,sum(wd.recoverynum) recoverynum\n" +
  547. " from TSAP_HEGII_WORKDATA_SNum wd\n" +
  548. " where wd.logid = :logid \n" +
  549. " group by grouping sets((wd.procedureName, wd.goodscode, wd.sapcode,wd.usercode),(wd.procedureName),())\n" +
  550. " order by wd.procedureName, wd.goodscode, wd.sapcode)";
  551. sre.Data.Tables.Add(oracleConn.GetSqlResultToDt(sqlString, oracleParameter));
  552. return sre;
  553. }
  554. catch (Exception ex)
  555. {
  556. throw ex;
  557. }
  558. }
  559. /// <summary>
  560. /// 查询SAP同步工序损坯明细
  561. /// </summary>
  562. /// <param name="logid"></param>
  563. /// <param name="userInfo"></param>
  564. /// <returns></returns>
  565. public static ServiceResultEntity GetWorkDataSPSumByDate(ClientRequestEntity cre)
  566. {
  567. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  568. ServiceResultEntity sre = new ServiceResultEntity();
  569. try
  570. {
  571. string sqlString = "select decode(gid\n" +
  572. " ,3\n" +
  573. " ,'合计'\n" +
  574. " ,1\n" +
  575. " ,'小计[' || procedureName || ']'\n" +
  576. " ,procedureName) procedureName\n" +
  577. " ,decode(gid, 0, goodscode, '--') goodscode\n" +
  578. " ,decode(gid, 0, sapcode, '--') sapcode\n" +
  579. " ,decode(gid, 0, usercode, '--') usercode\n" +
  580. " ,scrapnum\n" +
  581. " ,unscrapnum\n" +
  582. " ,scrapnum - unscrapnum scrapsum\n" +
  583. " ,cleanupnum\n" +
  584. " ,uncleanupnum\n" +
  585. " ,cleanupnum - uncleanupnum cleanupsum\n" +
  586. " ,repairnum\n" +
  587. " ,recoverynum\n" +
  588. " from (select grouping_id(wd.procedureName, wd.goodscode) gid\n" +
  589. " ,wd.procedureName\n" +
  590. " ,wd.goodscode\n" +
  591. " ,wd.sapcode\n" +
  592. " ,wd.usercode\n" +
  593. " ,sum(wd.scrapnum) scrapnum\n" +
  594. " ,sum(wd.unscrapnum) unscrapnum\n" +
  595. " ,sum(wd.cleanupnum) cleanupnum\n" +
  596. " ,sum(wd.uncleanupnum) uncleanupnum\n" +
  597. " ,sum(wd.repairnum) repairnum\n" +
  598. " ,sum(wd.recoverynum) recoverynum\n" +
  599. " from TSAP_HEGII_DATALOG dl\n" +
  600. " inner join TSAP_HEGII_WORKDATA_SNum wd\n" +
  601. " on wd.logid = dl.logid \n" +
  602. " where dl.logtype = '1' \n" +
  603. " and dl.yyyymmdd >= :datebegin\n" +
  604. " and dl.yyyymmdd <= :dateend\n" +
  605. " group by grouping sets((wd.procedureName, wd.goodscode, wd.sapcode,wd.usercode),(wd.procedureName),())\n" +
  606. " order by wd.procedureName, wd.goodscode, wd.sapcode)";
  607. OracleParameter[] oracleParameter = new OracleParameter[]
  608. {
  609. new OracleParameter(":datebegin",OracleDbType.Varchar2, cre.Properties["datebegin"], ParameterDirection.Input),
  610. new OracleParameter(":dateend",OracleDbType.Varchar2, cre.Properties["dateend"], ParameterDirection.Input),
  611. };
  612. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  613. return sre;
  614. }
  615. catch (Exception ex)
  616. {
  617. throw ex;
  618. }
  619. }
  620. /// <summary>
  621. /// 查询成品条码同步明细
  622. /// </summary>
  623. /// <param name="logid"></param>
  624. /// <param name="userInfo"></param>
  625. /// <returns></returns>
  626. public static ServiceResultEntity GetFinishedProductByDataLog(int logid)
  627. {
  628. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  629. ServiceResultEntity sre = new ServiceResultEntity();
  630. try
  631. {
  632. string sqlString =
  633. "select fp.yyyymmdd\n" +
  634. " ,fp.workcode\n" +
  635. " ,fp.barcode\n" +
  636. " ,fp.outcode\n" +
  637. " ,fp.goodscode\n" +
  638. " ,fp.sapcode\n" +
  639. " ,fp.sapflbatchno\n" +
  640. " ,fp.sapfhundoflag\n" +
  641. " ,fp.createtime\n" +
  642. " ,fp.ztype\n" +
  643. " ,fp.zmsg\n" +
  644. " ,fp.ztime\n" +
  645. " ,fp.logid\n" +
  646. " ,fp.ordercode\n" +
  647. " ,fp.orderitem\n" +
  648. " ,fp.securitycode\n" + //2021年12月9日10:31:42 by fy modify 增加防伪码
  649. " from tsap_hegii_finishedproduct fp\n" +
  650. " where fp.logid = :logid\n" +
  651. " order by fp.ztime, fp.barcode\n";
  652. OracleParameter[] oracleParameter = new OracleParameter[]
  653. {
  654. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  655. };
  656. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  657. return sre;
  658. }
  659. catch (Exception ex)
  660. {
  661. throw ex;
  662. }
  663. }
  664. /// <summary>
  665. /// 同步产量报工(手动)
  666. /// </summary>
  667. /// <param name="date"></param>
  668. /// <param name="datacode"></param>
  669. /// <param name="userid"></param>
  670. /// <returns></returns>
  671. public static ServiceResultEntity SetWorkData10_50(DateTime date, string datacode, int userid)
  672. {
  673. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  674. ServiceResultEntity sre = new ServiceResultEntity();
  675. try
  676. {
  677. string yyyymmdd = date.ToString("yyyyMMdd");
  678. string sqlString =
  679. "select t.logid\n" +
  680. " from tsap_hegii_datalog t\n" +
  681. " where t.logtype = '2'\n" +
  682. " and t.datastuts = 'S'\n" +
  683. " and t.yyyymmdd = :yyyymmdd\n" +
  684. " and t.datacode = :datacode";
  685. OracleParameter[] oracleParameter = new OracleParameter[]
  686. {
  687. new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  688. new OracleParameter(":datacode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  689. };
  690. string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  691. if (!string.IsNullOrEmpty(logid))
  692. {
  693. sre.Status = Constant.ServiceResultStatus.Other;
  694. sre.Message = "日期【" + yyyymmdd + "】的数据已经同步过,不能重复同步。";
  695. return sre;
  696. }
  697. sqlString =
  698. "select t.logid\n" +
  699. " from tsap_hegii_datalog t\n" +
  700. " where t.logtype = '1'\n" +
  701. " and t.datastuts = 'S'\n" +
  702. " and t.yyyymmdd = :yyyymmdd\n" +
  703. " and t.datacode = :datacode" +
  704. " and t.createuserid is null for update";
  705. string datalogid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  706. sqlString = "select workcode from tp_mst_account where rownum = 1";
  707. string workcode = oracleConn.GetSqlResultToStr(sqlString);
  708. //DateTime datebegin = date.Date;
  709. //DateTime dateend = date.Date.AddDays(1);
  710. logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  711. string msg = null;
  712. //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" +
  713. // dateend.ToString("yyyyMMdd-HHmm");
  714. sqlString = "insert into tsap_hegii_datalog\n" +
  715. " (LogID\n" +
  716. " ,LogType\n" +
  717. " ,BeginTime\n" +
  718. " ,YYYYMMDD\n" +
  719. " ,WorkCode\n" +
  720. " ,DataCode\n" +
  721. " ,DataStuts\n" +
  722. " ,DataMSG\n" +
  723. " ,CreateUserID\n" +
  724. " ,DataLogID)\n" +
  725. "values\n" +
  726. " (:LogID\n" +
  727. " ,'2'\n" +
  728. " ,sysdate\n" +
  729. " ,:YYYYMMDD\n" +
  730. " ,:WorkCode\n" +
  731. " ,:DataCode\n" +
  732. " ,:DataStuts\n" +
  733. " ,:DataMSG\n" +
  734. " ,:CreateUserID\n" +
  735. " ,:DataLogID)";
  736. int r = 0;
  737. if (string.IsNullOrEmpty(datalogid))
  738. {
  739. oracleParameter = new OracleParameter[]
  740. {
  741. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  742. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  743. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  744. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  745. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  746. new OracleParameter(":DataMSG",OracleDbType.Varchar2, "DKMES-ERROR:NO DATA " + msg, ParameterDirection.Input),
  747. new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input),
  748. new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input),
  749. };
  750. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  751. oracleConn.Commit();
  752. sre.Status = Constant.ServiceResultStatus.Other;
  753. sre.Message = "没有同步数据";
  754. sre.Result = "E";
  755. return sre;
  756. }
  757. oracleParameter = new OracleParameter[]
  758. {
  759. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  760. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  761. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  762. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  763. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  764. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  765. new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input),
  766. new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  767. };
  768. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  769. sqlString =
  770. "select wd.yyyymmdd\n" +
  771. " ,wd.workcode\n" +
  772. " ,wd.DataCode\n" +
  773. " ,wd.GoodsCode\n" +
  774. " ,wd.SAPCode\n" +
  775. " ,wd.UserCode\n" +
  776. " ,wd.ORDERCODE\n" +
  777. " ,wd.ORDERITEM\n" +
  778. " ,wd.OutputNum\n" +
  779. " ,wd.ScrapNum\n" +
  780. " ,wd.CleanupNum\n" +
  781. " ,wd.RecoveryNum\n" +
  782. " ,wd.RepairNum\n" +
  783. " from tsap_hegii_workdata wd where wd.logid = :datalogid";
  784. oracleParameter = new OracleParameter[]
  785. {
  786. new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  787. };
  788. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  789. Zppfm008 sapParameter = new Zppfm008();
  790. if (workData != null && workData.Rows.Count > 0)
  791. {
  792. sapParameter.ZSUM = workData.Rows.Count;
  793. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  794. int index = 0;
  795. foreach (DataRow item in workData.Rows)
  796. {
  797. ZSPP100 info100 = new ZSPP100();
  798. // 工厂
  799. info100.WERKS = workcode;
  800. // 型号
  801. info100.GROES = item["GoodsCode"].ToString();
  802. // 物料编号
  803. info100.MATNR = item["SAPCode"].ToString();
  804. // 生产工号
  805. info100.ZGHNU = item["UserCode"].ToString();
  806. // 数据节点
  807. info100.ZJDNU = item["DataCode"].ToString();
  808. // 时间戳
  809. info100.ZSCNU = yyyymmdd;
  810. // 销售凭证
  811. info100.VBELN = item["ORDERCODE"].ToString().Trim();
  812. // 销售凭证项目
  813. info100.POSNR = item["ORDERITEM"].ToString();
  814. // 产量
  815. info100.ZCLNG = item["OutputNum"].ToString();
  816. // 损坯
  817. info100.ZSPNG = item["SCRAPNUM"].ToString();
  818. // 清除
  819. info100.ZQCNG = item["CLEANUPNUM"].ToString();
  820. // 回收
  821. info100.ZHSNG = item["RECOVERYNUM"].ToString();
  822. // 干补
  823. info100.ZGBNG = item["REPAIRNUM"].ToString();
  824. info100.ZKSSJ = "000000";
  825. info100.ZJSRQ = Convert.ToDecimal(yyyymmdd) + 1;
  826. sapParameter.TABLE_IN[index++] = info100;
  827. }
  828. }
  829. else
  830. {
  831. sapParameter.ZSUM = 0;
  832. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  833. }
  834. ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode);
  835. //if (result.Ztype == "E")
  836. //{
  837. // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = :msg||chr(13)||DataMSG where logid = :logid";
  838. // oracleParameter = new OracleParameter[]
  839. // {
  840. // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  841. // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  842. // };
  843. // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  844. //}
  845. //else
  846. {
  847. if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  848. {
  849. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + datalogid +
  850. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  851. "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  852. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  853. foreach (ZSPP100 item in result.TABLE_OUT)
  854. {
  855. string posnr = item.POSNR.TrimStart('0');
  856. oracleParameter = new OracleParameter[]
  857. {
  858. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  859. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  860. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  861. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  862. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  863. new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  864. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  865. new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  866. };
  867. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  868. }
  869. }
  870. //:msg||chr(13)||DataMSG nvl2(:msg,:msg||chr(13)||DataMS,DataMS)
  871. result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  872. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  873. oracleParameter = new OracleParameter[]
  874. {
  875. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  876. new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  877. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  878. };
  879. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  880. if (result.ZTYPE == "S")
  881. {
  882. sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :datalogid";
  883. oracleParameter = new OracleParameter[]
  884. {
  885. new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  886. new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
  887. };
  888. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  889. }
  890. }
  891. oracleConn.Commit();
  892. sre.Message = result.ZMSG;
  893. sre.Result = result.ZTYPE;
  894. return sre;
  895. }
  896. catch (Exception ex)
  897. {
  898. throw ex;
  899. }
  900. finally
  901. {
  902. if (oracleConn != null &&
  903. oracleConn.ConnState == ConnectionState.Open)
  904. {
  905. oracleConn.Disconnect();
  906. }
  907. }
  908. }
  909. /// <summary>
  910. /// 同步产量报工(手动)重载
  911. /// </summary>
  912. /// <param name="date"></param>
  913. /// <param name="datacode"></param>
  914. /// <param name="userid"></param>
  915. /// <param name="ndate"></param>
  916. /// <returns></returns>
  917. public static ServiceResultEntity SetWorkData10_50(string datacode, int userid, DateTime ndate)
  918. {
  919. ServiceResultEntity sre = new ServiceResultEntity();
  920. IDBTransaction oracleConn = null;
  921. try
  922. {
  923. #region 事务1,执行存储过程
  924. OracleParameter[] paras = null;
  925. int logid = 0;
  926. string message = string.Empty;
  927. // 10 模具
  928. if ("10".Equals(datacode))
  929. {
  930. paras = new OracleParameter[]
  931. {
  932. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  933. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  934. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  935. };
  936. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  937. DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_10_1", paras);
  938. int.TryParse(paras[1].Value + "", out logid);
  939. message = paras[2].Value + "";
  940. oracleConn.Commit();
  941. }
  942. // 20 湿坯
  943. else if ("20".Equals(datacode))
  944. {
  945. paras = new OracleParameter[]
  946. {
  947. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  948. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  949. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  950. };
  951. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  952. DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_20_1", paras);
  953. int.TryParse(paras[1].Value + "", out logid);
  954. message = paras[2].Value + "";
  955. oracleConn.Commit();
  956. }
  957. // 30 精坯、40 釉坯、50 烧成
  958. else if ("30".Equals(datacode) || "40".Equals(datacode) || "50".Equals(datacode))
  959. {
  960. paras = new OracleParameter[]
  961. {
  962. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  963. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  964. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  965. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  966. };
  967. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  968. DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_30_1", paras);
  969. int.TryParse(paras[2].Value + "", out logid);
  970. message = paras[3].Value + "";
  971. oracleConn.Commit();
  972. }
  973. // 如果logid为0,则数据没有生成
  974. if (logid == 0)
  975. {
  976. sre.Status = Constant.ServiceResultStatus.Other;
  977. sre.Message = message;
  978. return sre;
  979. }
  980. #endregion
  981. // 事物2,同步SAP接口
  982. sre = SyncSap(ndate, datacode, userid, logid);
  983. return sre;
  984. }
  985. catch (Exception ex)
  986. {
  987. throw ex;
  988. }
  989. finally
  990. {
  991. if (oracleConn != null &&
  992. oracleConn.ConnState == ConnectionState.Open)
  993. {
  994. oracleConn.Disconnect();
  995. }
  996. }
  997. }
  998. /// <summary>
  999. /// 同步SAP接口5000端口新
  1000. /// </summary>
  1001. /// <param name="date"></param>
  1002. /// <param name="datacode"></param>
  1003. /// <param name="userid"></param>
  1004. /// <param name="logid"></param>
  1005. /// <returns></returns>
  1006. public static ServiceResultEntity SyncSap5000(DateTime date, string datacode, int userid, int logid)
  1007. {
  1008. ServiceResultEntity sre = new ServiceResultEntity();
  1009. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1010. try
  1011. {
  1012. OracleParameter[] paras = null;
  1013. string workcode = "5000";
  1014. string yyyymmdd = date.ToString("yyyyMMdd");
  1015. string yyyymmddhh24miss = date.ToString("yyyyMMddHH24miss");
  1016. int r = 0;
  1017. //// 查询出当前日志外,最新的一次日志
  1018. //string sqlString = "SELECT t.executedateend\n" +
  1019. // " FROM (SELECT dl.executedateend\n" +
  1020. // " FROM tsap_hegii_datalog_bg dl\n" +
  1021. // " WHERE dl.logtype = '3'\n" +
  1022. // " AND dl.datastuts = 'S'\n" +
  1023. // " AND dl.datacode = :datacode\n" +
  1024. // " AND dl.logid <> :logid\n" +
  1025. // " ORDER BY dl.executedateend DESC) t\n" +
  1026. // " WHERE rownum = 1";
  1027. //paras = new OracleParameter[]
  1028. //{
  1029. // new OracleParameter(":datacode", datacode),
  1030. // new OracleParameter(":logid", logid)
  1031. //};
  1032. //object executedateend = oracleConn.GetSqlResultToObj(sqlString, paras);
  1033. //if (executedateend == null || Convert.ToDateTime(executedateend) >= date)
  1034. //{
  1035. // sre.Result = "W";
  1036. // sre.Message = "当前日志的结束时间小于最新日志的结束时间,不能同步";
  1037. // return sre;
  1038. //}
  1039. // 查询当前节点所有不为S的日志
  1040. string sqlString = @"
  1041. SELECT DL.LOGID
  1042. FROM TSAP_HEGII_DATALOG_BG DL
  1043. WHERE DL.LOGTYPE = '3'
  1044. AND DL.DATASTUTS <> 'S'
  1045. AND DL.DATACODE = :DATACODE ";
  1046. paras = new OracleParameter[]
  1047. {
  1048. new OracleParameter(":DATACODE", datacode),
  1049. };
  1050. DataTable dtLogID = oracleConn.GetSqlResultToDt(sqlString, paras);
  1051. string logIDs = "," + string.Join(",", dtLogID.AsEnumerable().Select(d => d.Field<decimal>("LOGID")).ToArray()) + ",";
  1052. sqlString = @"
  1053. SELECT TO_CHAR(WD.YYYYMMDD) YYYYMMDD,
  1054. TO_CHAR(5000) WERKS,
  1055. TO_CHAR(WD.GOODSCODE) GROES,
  1056. TO_CHAR(WD.SAPCODE) MATNR,
  1057. TO_CHAR(WD.USERCODE) ZGHNU,
  1058. TO_CHAR(WD.DATACODE) ZJDNU,
  1059. TO_CHAR(DL.EXECUTEDATEBEGIN, 'YYYYMMDD') ZSCNU,
  1060. TO_CHAR(DL.EXECUTEDATEBEGIN, 'HH24MISS') ZKSSJ,
  1061. TO_CHAR(DL.EXECUTEDATEEND, 'YYYYMMDDHH24MISS') ZJSRQ,
  1062. TO_CHAR(WD.ORDERCODE) VBELN,
  1063. TO_CHAR(WD.ORDERITEM) POSNR,
  1064. TO_CHAR(WD.OUTPUTNUM) ZCLNG,
  1065. TO_CHAR(WD.SCRAPNUM) ZSPNG,
  1066. TO_CHAR(WD.CLEANUPNUM) ZQCNG,
  1067. TO_CHAR(WD.RECOVERYNUM) ZHSNG,
  1068. TO_CHAR(WD.REPAIRNUM) ZGBNG,
  1069. TO_CHAR(WD.TESTMOULDFLAG) ZSCMS,
  1070. DECODE(:DATACODE, 20, TO_CHAR(WD.ZSCS), 'T') AS ZSCS,
  1071. TO_CHAR(WD.WORKSHOP) ZSCCJ,
  1072. TO_CHAR(:YYYYMMDD) CHARG,
  1073. TO_CHAR(:DATACODE) DATACODE,
  1074. DL.SAPGUID
  1075. FROM TSAP_HEGII_WORKDATA_BG WD
  1076. INNER JOIN TSAP_HEGII_DATALOG_BG DL
  1077. ON WD.LOGID = DL.LOGID
  1078. WHERE INSTR(:LOGIDS, WD.LOGID) > 0 ";
  1079. paras = new OracleParameter[]
  1080. {
  1081. new OracleParameter(":DATACODE",datacode),
  1082. new OracleParameter(":YYYYMMDD",yyyymmdd),
  1083. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1084. };
  1085. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1086. int num = workData.Rows.Count;
  1087. // 调用SAP接口
  1088. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  1089. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  1090. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  1091. //url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  1092. string result = PostData(url030, postString, "POST");
  1093. if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0)
  1094. {
  1095. //sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  1096. // " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  1097. // "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  1098. // "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  1099. ////object obj = JObject.Parse(result)["TABLE_OUT"];
  1100. //Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  1101. //object TABLE_OUT;
  1102. //obj.TryGetValue("TABLE_OUT", out TABLE_OUT);
  1103. //obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(TABLE_OUT + "");
  1104. //object item1;
  1105. //obj.TryGetValue("item", out item1);
  1106. //JArray arr = JArray.FromObject(item1);
  1107. //foreach (JObject item in arr)
  1108. //{
  1109. // string posnr = item["POSNR"].ToString().TrimStart('0');
  1110. // paras = new OracleParameter[]
  1111. // {
  1112. // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item["ZTYPE"].ToString(), ParameterDirection.Input),
  1113. // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item["ZMSG"].ToString(), ParameterDirection.Input),
  1114. // new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  1115. // new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item["GROES"].ToString(), ParameterDirection.Input),
  1116. // new OracleParameter(":SAPCode",OracleDbType.Varchar2, item["MATNR"].ToString(), ParameterDirection.Input),
  1117. // new OracleParameter(":UserCode",OracleDbType.Varchar2, item["ZGHNU"].ToString(), ParameterDirection.Input),
  1118. // new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item["VBELN"].ToString()) ? " " : item["VBELN"].ToString()), ParameterDirection.Input),
  1119. // new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  1120. // };
  1121. // r = oracleConn.ExecuteNonQuery(sqlString, paras);
  1122. //}
  1123. }
  1124. sqlString = @"
  1125. UPDATE TSAP_HEGII_DATALOG_BG T
  1126. SET T.ENDTIME = SYSDATE,
  1127. DATASTUTS = :DATASTUTS,
  1128. DATAMSG = :MSG
  1129. WHERE INSTR(:LOGIDS, LOGID) > 0 ";
  1130. paras = new OracleParameter[]
  1131. {
  1132. new OracleParameter(":DATASTUTS",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  1133. new OracleParameter(":MSG",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  1134. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input),
  1135. };
  1136. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  1137. if (JObject.Parse(result)["ZTYPE"].ToString() == "S")
  1138. {
  1139. sqlString = @"
  1140. UPDATE TSAP_HEGII_DATALOG_BG T
  1141. SET T.CREATEUSERID = :USERID
  1142. WHERE INSTR(:LOGIDS, LOGID) > 0 ";
  1143. paras = new OracleParameter[]
  1144. {
  1145. new OracleParameter(":USERID",OracleDbType.Int32, userid, ParameterDirection.Input),
  1146. new OracleParameter(":LOGIDS", OracleDbType.Varchar2, logIDs, ParameterDirection.Input)
  1147. };
  1148. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  1149. }
  1150. oracleConn.Commit();
  1151. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  1152. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  1153. return sre;
  1154. }
  1155. catch (Exception ex)
  1156. {
  1157. OutputLog.TraceLog(LogPriority.Error,
  1158. "BGToSAP",
  1159. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1160. ex.ToString(),
  1161. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1162. throw ex;
  1163. }
  1164. finally
  1165. {
  1166. if (oracleConn != null &&
  1167. oracleConn.ConnState == ConnectionState.Open)
  1168. {
  1169. oracleConn.Disconnect();
  1170. }
  1171. }
  1172. }
  1173. public static ServiceResultEntity SyncSap5000_60_BSJ(DateTime date)
  1174. {
  1175. ServiceResultEntity sre = new ServiceResultEntity();
  1176. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1177. try
  1178. {
  1179. string yyyymmdd = date.ToString("yyyyMMdd");
  1180. string sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" +
  1181. " ,TO_CHAR(5000) WERKS\n" +
  1182. " ,TO_CHAR(wd.goodscode) GROES\n" +
  1183. " ,TO_CHAR(wd.sapcode) MATNR\n" +
  1184. " ,TO_CHAR(wd.usercode) ZGHNU\n" +
  1185. " ,TO_CHAR(wd.datacode) ZJDNU\n" +
  1186. " ,to_char(DL.EXECUTEDATEBEGIN, 'YYYYMMDD' ) ZSCNU\n" +
  1187. " ,to_char(DL.EXECUTEDATEBEGIN, 'HH24MISS' ) ZKSSJ\n" +
  1188. " ,to_char(DL.EXECUTEDATEEND, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" +
  1189. " ,TO_CHAR(wd.ordercode) VBELN\n" +
  1190. " ,TO_CHAR(wd.orderitem) POSNR\n" +
  1191. " ,TO_CHAR(wd.outputnum) ZCLNG\n" +
  1192. " ,TO_CHAR(wd.scrapnum) ZSPNG\n" +
  1193. " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" +
  1194. " ,TO_CHAR(wd.recoverynum) ZHSNG\n" +
  1195. " ,TO_CHAR(wd.repairnum) ZGBNG\n" +
  1196. " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" +
  1197. " ,'T' AS zscs\n" +
  1198. " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" +
  1199. " ,TO_CHAR( :yyyymmdd) CHARG\n" +
  1200. " ,'60' datacode\n" +
  1201. " FROM tsap_hegii_workdata_bg wd\n" +
  1202. " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" +
  1203. " ON wd.LOGID = DL.LOGID \n" +
  1204. " WHERE DL.DataStuts = 'F' AND wd.datacode = '60' and DL.EXECUTEDATEEND < :ndate";
  1205. OracleParameter[] paras = new OracleParameter[]
  1206. {
  1207. new OracleParameter(":yyyymmdd",yyyymmdd),
  1208. new OracleParameter(":ndate",date),
  1209. };
  1210. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  1211. OutputLog.TraceLog(LogPriority.Information,
  1212. "BGToSAP60",
  1213. "报工60" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1214. workData.Rows.Count + "",
  1215. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1216. int num = workData.Rows.Count;
  1217. // 调用SAP接口
  1218. if (workData != null && workData.Rows.Count > 0)
  1219. {
  1220. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  1221. OutputLog.TraceLog(LogPriority.Information,
  1222. "BGToSAP60",
  1223. "报工60" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1224. postString,
  1225. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1226. //测试
  1227. string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  1228. //正式
  1229. //string url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030";
  1230. string result = PostData(url030, postString, "POST");
  1231. OutputLog.TraceLog(LogPriority.Information,
  1232. "BGToSAP60",
  1233. "报工60" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1234. result,
  1235. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1236. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  1237. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  1238. }
  1239. return sre;
  1240. }
  1241. catch (Exception ex)
  1242. {
  1243. OutputLog.TraceLog(LogPriority.Error,
  1244. "BGToSAP",
  1245. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  1246. ex.ToString(),
  1247. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  1248. throw ex;
  1249. }
  1250. finally
  1251. {
  1252. if (oracleConn != null &&
  1253. oracleConn.ConnState == ConnectionState.Open)
  1254. {
  1255. oracleConn.Disconnect();
  1256. }
  1257. }
  1258. }
  1259. public static ServiceResultEntity SyncSap5000_test(DateTime date, string datacode, DateTime ndate)
  1260. {
  1261. ServiceResultEntity sre = new ServiceResultEntity();
  1262. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1263. try
  1264. {
  1265. OracleParameter[] paras = null;
  1266. string workcode = "5000";
  1267. string yyyymmdd = ndate.ToString("yyyyMMdd");
  1268. string yyyymmddhh24miss = ndate.ToString("yyyyMMddHH24miss");
  1269. string sqlString = "";
  1270. if ("10".Equals(datacode))
  1271. {
  1272. sqlString = @"SELECT to_char(:IN_DATEEND, 'yyyymmdd') yyyymmdd,
  1273. TO_CHAR(5000) WERKS,to_char(g.goodscode) GROES,to_char(g.mouldmaterialcode) MATNR,to_char(m.usercode) ZGHNU,
  1274. to_char(:IN_DATACODE) ZJDNU,
  1275. to_char(:V_DATEBEGIN, 'YYYYMMDD' ) ZSCNU,
  1276. to_char(:V_DATEBEGIN, 'HH24MISS' ) ZKSSJ,
  1277. to_char(:IN_DATEEND, 'YYYYMMDDHH24MISS' ) ZJSRQ,
  1278. '' VBELN,
  1279. '' POSNR,
  1280. to_char(SUM(decode(mhh.operationtype,
  1281. 1,
  1282. m.standardgroutingsum,
  1283. 0))) ZCLNG,
  1284. to_char(SUM(CASE
  1285. WHEN mhh.operationtype IN (2, 9, 11, -1) THEN
  1286. greatest(m.standardgroutingsum - mhh.groutingnum, 0)
  1287. WHEN mhh.operationtype IN (3, 0) THEN
  1288. least(mhh.groutingnum - m.standardgroutingsum, 0)
  1289. ELSE
  1290. 0
  1291. END)) ZSPNG,
  1292. '0' ZQCNG,
  1293. '0' ZHSNG,
  1294. '0' ZGBNG,
  1295. to_char(m.testmouldflag) ZSCMS,
  1296. DECODE( :IN_DATACODE,20,TO_CHAR(g.goods_line_code),'T') AS zscs,
  1297. to_char(0) ZSCCJ,
  1298. TO_CHAR( :yyyymmdd) CHARG,
  1299. TO_CHAR( :IN_DATACODE) datacode
  1300. FROM (SELECT mh.goodsid,
  1301. mh.mouldid,
  1302. mh.operationtype,
  1303. mh.groutingnum
  1304. FROM tp_pc_mouldchangehistory mh
  1305. WHERE mh.operationtype IN (1, 2, 3, 9, 11, -1)
  1306. AND mh.createtime >= :V_DATEBEGIN
  1307. AND mh.createtime < :IN_DATEEND
  1308. UNION ALL
  1309. SELECT mh.goodsidafter, mh.mouldid, 0, mh.groutingnum
  1310. FROM tp_pc_mouldchangehistory mh
  1311. WHERE mh.operationtype = -1
  1312. AND mh.createtime >= :V_DATEBEGIN
  1313. AND mh.createtime < :IN_DATEEND) mhh
  1314. INNER JOIN tp_mst_goods g
  1315. ON mhh.goodsid = g.goodsid
  1316. INNER JOIN tp_pc_mould m
  1317. ON m.mouldid = mhh.mouldid
  1318. GROUP BY g.goodscode, g.mouldmaterialcode, m.usercode,m.testmouldflag,g.goods_line_code";
  1319. }
  1320. // 20 湿坯
  1321. else if ("20".Equals(datacode))
  1322. {
  1323. sqlString = @"
  1324. SELECT to_char(:IN_DATEEND, 'yyyymmdd') yyyymmdd,
  1325. TO_CHAR(5000) WERKS,TO_CHAR(SPP.GOODSCODE) GROES,TO_CHAR(SPP.SAPCODE) MATNR,TO_CHAR(SPP.usercode) ZGHNU,
  1326. TO_CHAR(:IN_DATACODE) ZJDNU,
  1327. to_char(:V_DATEBEGIN, 'YYYYMMDD' ) ZSCNU,
  1328. to_char(:V_DATEBEGIN, 'HH24MISS' ) ZKSSJ,
  1329. to_char(:IN_DATEEND, 'YYYYMMDDHH24MISS' ) ZJSRQ,
  1330. '' VBELN,
  1331. '' POSNR,
  1332. TO_CHAR(SUM(SPP.OUTPUTNUM)) ZCLNG,
  1333. TO_CHAR(SUM(SPP.SCRAPNUM)) ZSPNG,
  1334. TO_CHAR(SUM(SPP.CLEANUPNUM)) ZQCNG,'0' ZHSNG,
  1335. TO_CHAR(SUM(SPP.REPAIRNUM)) ZGBNG,
  1336. DECODE( SPP.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS ZSCMS,
  1337. DECODE( :IN_DATACODE,20,TO_CHAR(SPP.goods_line_code),'T') AS zscs,
  1338. TO_CHAR(SPP.WORKSHOP) ZSCCJ,
  1339. TO_CHAR( :yyyymmdd) CHARG,
  1340. TO_CHAR( :IN_DATACODE) datacode
  1341. FROM (
  1342. -- 成型产量
  1343. SELECT GH.GOODSCODE,
  1344. GH.SAPCODE,
  1345. U.USERCODE,
  1346. SUM(DECODE(GH.DATATYPE, 1, 1, -1)) OUTPUTNUM,
  1347. 0 SCRAPNUM,
  1348. 0 CLEANUPNUM,
  1349. 0 REPAIRNUM,
  1350. CASE
  1351. WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1352. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1353. 1
  1354. WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1355. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1356. 2
  1357. WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN
  1358. 3 ELSE 0
  1359. END AS WORKSHOP,
  1360. GDD.TESTMOULDFLAG,
  1361. G.GOODS_LINE_CODE
  1362. FROM TP_PM_GOODSCHANGEHISTORY GH
  1363. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1364. ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  1365. INNER JOIN TP_MST_USER U
  1366. ON U.USERID = GH.USERID
  1367. /*INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1368. ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  1369. INNER JOIN TP_PC_GROUTINGLINE GL
  1370. ON GL.GROUTINGLINEID = GDD.GROUTINGLINEID*/
  1371. INNER JOIN TP_MST_GOODS G
  1372. ON G.GOODSID = GH.GOODSID
  1373. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1374. /*INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1375. ON HGDI.DATACODE = :IN_DATACODE
  1376. AND HGDI.ITEMTYPE = 3
  1377. AND HGDI.ITEMID = GL.GMOULDTYPEID*/
  1378. WHERE GH.CREATETIME >= :V_DATEBEGIN
  1379. AND GH.CREATETIME < :IN_DATEEND
  1380. AND GH.DATATYPE IN (1, 2)
  1381. AND G.SCRAPSUMFLAG = '1'
  1382. GROUP BY GH.SAPCODE, GH.GOODSCODE, U.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG,
  1383. G.GOODS_LINE_CODE
  1384. /*UNION ALL
  1385. -- 成型产量 高压
  1386. SELECT GH.GOODSCODE
  1387. ,GH.SAPCODE
  1388. ,U.USERCODE
  1389. ,SUM(DECODE(GH.DATATYPE, 1, 1, -1)) OUTPUTNUM
  1390. ,0 SCRAPNUM
  1391. ,0 CLEANUPNUM
  1392. ,0 REPAIRNUM
  1393. FROM TP_PM_GOODSCHANGEHISTORY GH
  1394. INNER JOIN TP_MST_USER U
  1395. ON U.USERID = GH.USERID
  1396. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1397. ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  1398. INNER JOIN TP_PC_GROUTINGLINE GL
  1399. ON GL.GROUTINGLINEID = GDD.GROUTINGLINEID
  1400. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1401. ON HGDI.DATACODE = :IN_DATACODE
  1402. AND HGDI.ITEMTYPE = 3
  1403. AND HGDI.ITEMID <> GL.GMOULDTYPEID
  1404. WHERE GH.CREATETIME >= :V_DATEBEGIN
  1405. AND GH.CREATETIME < :IN_DATEEND
  1406. AND GH.DATATYPE IN (1, 2)
  1407. GROUP BY GH.SAPCODE
  1408. ,GH.GOODSCODE
  1409. ,U.USERCODE*/
  1410. UNION ALL
  1411. -- 成型报损
  1412. SELECT GH.GOODSCODE,
  1413. GH.SAPCODE,
  1414. U.USERCODE,
  1415. 0 OUTPUTNUM,
  1416. SUM(DECODE(GH.DATATYPE, 3, 1, -1)) SCRAPNUM,
  1417. 0 CLEANUPNUM,
  1418. 0 REPAIRNUM,
  1419. CASE
  1420. WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1421. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1422. 1
  1423. WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1424. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1425. 2
  1426. WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN
  1427. 3 ELSE 0
  1428. END AS WORKSHOP,
  1429. GDD.TESTMOULDFLAG,
  1430. G.GOODS_LINE_CODE
  1431. FROM TP_PM_GOODSCHANGEHISTORY GH
  1432. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1433. ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  1434. INNER JOIN TP_MST_USER U
  1435. ON U.USERID = GH.USERID
  1436. INNER JOIN TP_MST_GOODS G
  1437. ON G.GOODSID = GH.GOODSID
  1438. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1439. WHERE GH.CREATETIME >= :V_DATEBEGIN
  1440. AND GH.CREATETIME < :IN_DATEEND
  1441. AND GH.DATATYPE IN (3, 4)
  1442. AND G.SCRAPSUMFLAG = '1'
  1443. GROUP BY GH.SAPCODE, GH.GOODSCODE, U.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG,
  1444. G.GOODS_LINE_CODE
  1445. UNION ALL
  1446. -- 盘点清除
  1447. SELECT GH.GOODSCODE,
  1448. GH.SAPCODE,
  1449. U.USERCODE,
  1450. 0 OUTPUTNUM,
  1451. 0 SCRAPNUM,
  1452. SUM(DECODE(GH.DATATYPE, 11, 1, -1)) CLEANUPNUM,
  1453. 0 REPAIRNUM,
  1454. CASE
  1455. WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1456. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1457. 1
  1458. WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1459. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1460. 2
  1461. WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN
  1462. 3 ELSE 0
  1463. END AS WORKSHOP,
  1464. GDD.TESTMOULDFLAG,
  1465. G.GOODS_LINE_CODE
  1466. FROM TP_PM_GOODSCHANGEHISTORY GH
  1467. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1468. ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  1469. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1470. ON HGDI.DATACODE = :IN_DATACODE
  1471. AND HGDI.ITEMTYPE = 2
  1472. AND HGDI.ITEMID = GH.OTHERID
  1473. INNER JOIN TP_MST_USER U
  1474. ON U.USERID = GH.USERID
  1475. INNER JOIN TP_MST_GOODS G
  1476. ON G.GOODSID = GH.GOODSID
  1477. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1478. WHERE GH.CREATETIME >= :V_DATEBEGIN
  1479. AND GH.CREATETIME < :IN_DATEEND
  1480. AND GH.DATATYPE IN (11, 12)
  1481. GROUP BY GH.SAPCODE, GH.GOODSCODE, U.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG,
  1482. G.GOODS_LINE_CODE
  1483. UNION ALL
  1484. -- 工序报损
  1485. SELECT SP.GOODSCODE
  1486. --,G.GROUTMATERIALCODE
  1487. ,
  1488. GDD.MATERIALCODE SAPCODE,
  1489. PD.USERCODE,
  1490. 0 OUTPUTNUM,
  1491. COUNT(*) SCRAPNUM,
  1492. 0 CLEANUPNUM,
  1493. 0 REPAIRNUM,
  1494. CASE
  1495. WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1496. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1497. 1
  1498. WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1499. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1500. 2
  1501. WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN
  1502. 3 ELSE 0
  1503. END AS WORKSHOP,
  1504. GDD.TESTMOULDFLAG,
  1505. G.GOODS_LINE_CODE
  1506. FROM TP_PM_SCRAPPRODUCT SP
  1507. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1508. ON HGDI.DATACODE = :IN_DATACODE
  1509. AND HGDI.ITEMTYPE = 2
  1510. AND HGDI.ITEMID = SP.PROCEDUREID
  1511. --INNER JOIN TP_MST_GOODS G
  1512. -- ON G.GOODSID = SP.GOODSID
  1513. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1514. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1515. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1516. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1517. INNER JOIN TP_MST_GOODS G
  1518. ON G.GOODSID = GDD.GOODSID
  1519. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1520. WHERE SP.AUDITSTATUS = 1
  1521. AND SP.AUDITDATE >= :V_DATEBEGIN
  1522. AND SP.AUDITDATE < :IN_DATEEND
  1523. AND SP.SCRAPTYPE IN (0, 2, 3)
  1524. GROUP BY SP.GOODSCODE, GDD.MATERIALCODE, PD.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG,
  1525. G.GOODS_LINE_CODE
  1526. UNION ALL
  1527. -- 工序报损撤销
  1528. SELECT SP.GOODSCODE
  1529. --,G.GROUTMATERIALCODE
  1530. ,
  1531. GDD.MATERIALCODE SAPCODE,
  1532. PD.USERCODE,
  1533. 0 OUTPUTNUM,
  1534. 0 - COUNT(*) SCRAPNUM,
  1535. 0 CLEANUPNUM,
  1536. 0 REPAIRNUM,
  1537. CASE
  1538. WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1539. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1540. 1
  1541. WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1542. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1543. 2
  1544. WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN
  1545. 3 ELSE 0
  1546. END AS WORKSHOP,
  1547. GDD.TESTMOULDFLAG,
  1548. G.GOODS_LINE_CODE
  1549. FROM TP_PM_SCRAPPRODUCT SP
  1550. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1551. ON HGDI.DATACODE = :IN_DATACODE
  1552. AND HGDI.ITEMTYPE = 2
  1553. AND HGDI.ITEMID = SP.PROCEDUREID
  1554. --INNER JOIN TP_MST_GOODS G
  1555. -- ON G.GOODSID = SP.GOODSID
  1556. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1557. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1558. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1559. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1560. INNER JOIN TP_MST_GOODS G
  1561. ON G.GOODSID = GDD.GOODSID
  1562. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1563. WHERE SP.AUDITSTATUS = 1
  1564. AND SP.VALUEFLAG = '0'
  1565. AND SP.BACKOUTTIME >= :V_DATEBEGIN
  1566. AND SP.BACKOUTTIME < :IN_DATEEND
  1567. AND SP.SCRAPTYPE IN (0, 2, 3)
  1568. GROUP BY SP.GOODSCODE, GDD.MATERIALCODE, PD.USERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG,
  1569. G.GOODS_LINE_CODE
  1570. UNION ALL
  1571. -- 干补
  1572. SELECT SP.GOODSCODE
  1573. --,G.GROUTMATERIALCODE
  1574. ,
  1575. GDD.MATERIALCODE SAPCODE,
  1576. SP.SPECIALREPAIRUSERCODE USERCODE,
  1577. 0 OUTPUTNUM,
  1578. 0 SCRAPNUM,
  1579. 0 CLEANUPNUM,
  1580. COUNT(*) REPAIRNUM,
  1581. CASE
  1582. WHEN (INSTR(GDD.GROUTINGLINECODE,'A') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1583. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1584. 1
  1585. WHEN (INSTR(GDD.GROUTINGLINECODE,'B') = 1 OR INSTR(GDD.GROUTINGLINECODE,'D') = 1)
  1586. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1587. 2
  1588. WHEN INSTR(GDD.GROUTINGLINECODE,'C') = 1 THEN
  1589. 3 ELSE 0
  1590. END AS WORKSHOP,
  1591. GDD.TESTMOULDFLAG,
  1592. G.GOODS_LINE_CODE
  1593. FROM TP_PM_SCRAPPRODUCT SP
  1594. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1595. ON HGDI.DATACODE = :IN_DATACODE
  1596. AND HGDI.ITEMTYPE = 2
  1597. AND HGDI.ITEMID = SP.PROCEDUREID
  1598. --INNER JOIN TP_MST_GOODS G
  1599. -- ON G.GOODSID = SP.GOODSID
  1600. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1601. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1602. INNER JOIN TP_MST_GOODS G
  1603. ON G.GOODSID = GDD.GOODSID
  1604. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1605. WHERE SP.AUDITSTATUS = 1
  1606. AND SP.VALUEFLAG = '1'
  1607. AND SP.GOODSLEVELTYPEID = 9
  1608. AND SP.SPECIALREPAIRTIME >= :V_DATEBEGIN
  1609. AND SP.SPECIALREPAIRTIME < :IN_DATEEND
  1610. GROUP BY SP.GOODSCODE
  1611. --,G.GROUTMATERIALCODE
  1612. ,
  1613. GDD.MATERIALCODE,
  1614. SP.SPECIALREPAIRUSERCODE,GDD.GROUTINGLINECODE,GT.GOODSTYPECODE,GDD.TESTMOULDFLAG,
  1615. G.GOODS_LINE_CODE ) SPP
  1616. GROUP BY SPP.GOODSCODE, SPP.SAPCODE, SPP.USERCODE,SPP.WORKSHOP,SPP.GOODS_LINE_CODE,SPP.TESTMOULDFLAG
  1617. ";
  1618. }
  1619. // 30 精坯、40 釉坯、50 烧成
  1620. else if ("30".Equals(datacode) || "40".Equals(datacode) || "50".Equals(datacode))
  1621. {
  1622. sqlString = @"SELECT TO_CHAR(:IN_DATEEND, 'YYYYMMDD') yyyymmdd ,
  1623. TO_CHAR(5000) WERKS,SPP.GOODSCODE GROES, SPP.SAPCODE MATNR,SPP.USERCODE ZGHNU,TO_CHAR(:IN_DATACODE) ZJDNU,
  1624. to_char(:V_DATEBEGIN, 'YYYYMMDD' ) ZSCNU,
  1625. to_char(:V_DATEBEGIN, 'HH24MISS' ) ZKSSJ,
  1626. to_char(:IN_DATEEND, 'YYYYMMDDHH24MISS' ) ZJSRQ,
  1627. '' VBELN,
  1628. '' POSNR,
  1629. TO_CHAR(SUM(SPP.OUTPUTNUM)) ZCLNG,
  1630. TO_CHAR(SUM(SPP.SCRAPNUM)) ZSPNG,
  1631. TO_CHAR(SUM(SPP.CLEANUPNUM)) ZQCNG,
  1632. TO_CHAR(0) ZHSNG,
  1633. TO_CHAR(SUM(SPP.REPAIRNUM)) ZGBNG,
  1634. SPP.TESTMOULDFLAG ZSCMS,
  1635. DECODE( :IN_DATACODE,20,TO_CHAR(SPP.GOODS_LINE_CODE),'T') AS zscs,
  1636. TO_CHAR(SPP.WORKSHOP) ZSCCJ,
  1637. TO_CHAR( :yyyymmdd) CHARG,
  1638. TO_CHAR(:IN_DATACODE) datacode
  1639. FROM (
  1640. -- 产量
  1641. ------------------------------------------
  1642. SELECT
  1643. GOODSCODE,
  1644. SAPCODE,
  1645. USERCODE,
  1646. COUNT( * ) OUTPUTNUM,
  1647. 0 SCRAPNUM,
  1648. 0 CLEANUPNUM,
  1649. 0 REPAIRNUM,
  1650. WORKSHOP,
  1651. -- GROUTINGSHOP,
  1652. TESTMOULDFLAG,
  1653. GOODS_LINE_CODE
  1654. FROM
  1655. (
  1656. SELECT
  1657. PD.GOODSCODE,
  1658. GDD.MATERIALCODE SAPCODE,
  1659. PD.USERCODE,
  1660. CASE
  1661. WHEN HGDI.WORKSHOP = 2
  1662. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1663. 1
  1664. WHEN HGDI.WORKSHOP = 2
  1665. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1666. 2
  1667. WHEN HGDI.WORKSHOP = 3 THEN
  1668. 3 ELSE 0
  1669. END AS WORKSHOP,
  1670. -- CASE
  1671. --
  1672. -- WHEN INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1673. -- 1
  1674. -- WHEN INSTR( GT.GOODSTYPECODE, '001001' ) = 1
  1675. -- AND ( INSTR( GDD.GROUTINGLINECODE, 'B' ) = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1 ) THEN
  1676. -- 2
  1677. -- WHEN INSTR( GDD.GROUTINGLINECODE, 'C' ) = 1
  1678. -- AND INSTR( GDD.GROUTINGLINECODE, 'A' ) = 4
  1679. -- OR INSTR( GDD.GROUTINGLINECODE, 'C06B' ) = 1 THEN
  1680. -- 3 ELSE 4
  1681. -- END AS GROUTINGSHOP,
  1682. DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG,
  1683. G.GOODS_LINE_CODE
  1684. FROM
  1685. TP_PM_PRODUCTIONDATA PD
  1686. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE
  1687. AND HGDI.ITEMTYPE = 1
  1688. AND HGDI.ITEMID = PD.PROCEDUREID -- 3#成检交接(本烧重烧共用,且可以改判)
  1689. AND ( HGDI.ITEMID <> 104 OR ( PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' ) )
  1690. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  1691. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  1692. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1693. WHERE
  1694. PD.CREATETIME >= :V_DATEBEGIN
  1695. AND PD.CREATETIME < :IN_DATEEND
  1696. )
  1697. GROUP BY
  1698. GOODSCODE,
  1699. SAPCODE,
  1700. USERCODE,
  1701. WORKSHOP,
  1702. -- GROUTINGSHOP,
  1703. TESTMOULDFLAG,
  1704. GOODS_LINE_CODE
  1705. UNION ALL
  1706. -- 产量 撤销
  1707. SELECT
  1708. GOODSCODE,
  1709. SAPCODE,
  1710. USERCODE,
  1711. 0 - COUNT( * ) OUTPUTNUM,
  1712. 0 SCRAPNUM,
  1713. 0 CLEANUPNUM,
  1714. 0 REPAIRNUM,
  1715. WORKSHOP,
  1716. TESTMOULDFLAG,
  1717. GOODS_LINE_CODE
  1718. FROM
  1719. (
  1720. SELECT
  1721. PD.GOODSCODE,
  1722. GDD.MATERIALCODE SAPCODE,
  1723. PD.USERCODE,
  1724. CASE
  1725. WHEN HGDI.WORKSHOP = 2
  1726. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1727. 1
  1728. WHEN HGDI.WORKSHOP = 2
  1729. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1730. 2
  1731. WHEN HGDI.WORKSHOP = 3 THEN
  1732. 3 ELSE 4
  1733. END AS WORKSHOP,
  1734. DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG,
  1735. G.GOODS_LINE_CODE
  1736. FROM
  1737. TP_PM_PRODUCTIONDATA PD
  1738. INNER JOIN TSAP_HEGII_DATAITEM HGDI ON HGDI.DATACODE = :IN_DATACODE
  1739. AND HGDI.ITEMTYPE = 1
  1740. AND HGDI.ITEMID = PD.PROCEDUREID -- 3#成检交接(本烧重烧共用,且可以改判)
  1741. AND ( HGDI.ITEMID <> 104 OR ( PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1' ) )
  1742. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  1743. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  1744. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1745. WHERE
  1746. PD.VALUEFLAG = '0'
  1747. AND PD.BACKOUTTIME >= :V_DATEBEGIN
  1748. AND PD.BACKOUTTIME < :IN_DATEEND
  1749. )
  1750. GROUP BY
  1751. GOODSCODE,
  1752. SAPCODE,
  1753. USERCODE,
  1754. WORKSHOP,
  1755. TESTMOULDFLAG,
  1756. GOODS_LINE_CODE
  1757. UNION ALL
  1758. -- 盘点清除
  1759. SELECT
  1760. GOODSCODE,
  1761. SAPCODE,
  1762. USERCODE,
  1763. 0 OUTPUTNUM,
  1764. 0 SCRAPNUM,
  1765. SUM(DECODE(DATATYPE, 11, 1, -1)) CLEANUPNUM,
  1766. 0 REPAIRNUM,
  1767. WORKSHOP,
  1768. TESTMOULDFLAG,
  1769. GOODS_LINE_CODE
  1770. FROM
  1771. (
  1772. SELECT GH.GOODSCODE,
  1773. GH.SAPCODE,
  1774. U.USERCODE,
  1775. CASE
  1776. WHEN HGDI.WORKSHOP = 2
  1777. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1778. 1
  1779. WHEN HGDI.WORKSHOP = 2
  1780. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1781. 2
  1782. WHEN HGDI.WORKSHOP = 3 THEN
  1783. 3 ELSE 4
  1784. END AS WORKSHOP,
  1785. GH.DATATYPE,
  1786. DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG,
  1787. G.GOODS_LINE_CODE
  1788. FROM TP_PM_GOODSCHANGEHISTORY GH
  1789. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1790. ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  1791. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1792. ON HGDI.DATACODE = :IN_DATACODE
  1793. AND HGDI.ITEMTYPE = 2
  1794. AND HGDI.ITEMID = GH.OTHERID
  1795. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  1796. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1797. INNER JOIN TP_MST_USER U
  1798. ON U.USERID = GH.USERID
  1799. WHERE GH.CREATETIME >= :V_DATEBEGIN
  1800. AND GH.CREATETIME < :IN_DATEEND
  1801. AND GH.DATATYPE IN (11, 12)
  1802. )
  1803. GROUP BY
  1804. GOODSCODE,
  1805. SAPCODE,
  1806. USERCODE,
  1807. WORKSHOP,
  1808. TESTMOULDFLAG,
  1809. GOODS_LINE_CODE
  1810. UNION ALL
  1811. -- 工序报损
  1812. SELECT
  1813. GOODSCODE,
  1814. SAPCODE,
  1815. USERCODE,
  1816. 0 OUTPUTNUM,
  1817. COUNT(*) SCRAPNUM,
  1818. 0 CLEANUPNUM,
  1819. 0 REPAIRNUM,
  1820. WORKSHOP,
  1821. TESTMOULDFLAG,
  1822. GOODS_LINE_CODE
  1823. FROM
  1824. (
  1825. SELECT SP.GOODSCODE
  1826. --,G.GROUTMATERIALCODE SAPCODE
  1827. ,
  1828. GDD.MATERIALCODE SAPCODE,
  1829. PD.USERCODE,
  1830. CASE
  1831. WHEN HGDI.WORKSHOP = 2
  1832. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1833. 1
  1834. WHEN HGDI.WORKSHOP = 2
  1835. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1836. 2
  1837. WHEN HGDI.WORKSHOP = 3 THEN
  1838. 3 ELSE 4
  1839. END AS WORKSHOP,
  1840. DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG,
  1841. G.GOODS_LINE_CODE
  1842. FROM TP_PM_SCRAPPRODUCT SP
  1843. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1844. ON HGDI.DATACODE = :IN_DATACODE
  1845. AND HGDI.ITEMTYPE = 2
  1846. AND HGDI.ITEMID = SP.PROCEDUREID
  1847. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1848. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1849. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1850. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1851. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  1852. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1853. WHERE SP.AUDITSTATUS = 1
  1854. AND SP.AUDITDATE >= :V_DATEBEGIN
  1855. AND SP.AUDITDATE < :IN_DATEEND
  1856. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1857. )
  1858. GROUP BY
  1859. GOODSCODE,
  1860. SAPCODE,
  1861. USERCODE,
  1862. WORKSHOP,
  1863. TESTMOULDFLAG,
  1864. GOODS_LINE_CODE
  1865. UNION ALL
  1866. -- 工序报损撤销
  1867. SELECT
  1868. GOODSCODE,
  1869. SAPCODE,
  1870. USERCODE,
  1871. 0 OUTPUTNUM,
  1872. 0 - COUNT(*) SCRAPNUM,
  1873. 0 CLEANUPNUM,
  1874. 0 REPAIRNUM,
  1875. WORKSHOP,
  1876. TESTMOULDFLAG,
  1877. GOODS_LINE_CODE
  1878. FROM
  1879. (
  1880. SELECT SP.GOODSCODE
  1881. --,G.GROUTMATERIALCODE SAPCODE
  1882. ,
  1883. GDD.MATERIALCODE SAPCODE,
  1884. PD.USERCODE,
  1885. CASE
  1886. WHEN HGDI.WORKSHOP = 2
  1887. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1888. 1
  1889. WHEN HGDI.WORKSHOP = 2
  1890. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1891. 2
  1892. WHEN HGDI.WORKSHOP = 3 THEN
  1893. 3 ELSE 4
  1894. END AS WORKSHOP,
  1895. DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG,
  1896. G.GOODS_LINE_CODE
  1897. FROM TP_PM_SCRAPPRODUCT SP
  1898. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1899. ON HGDI.DATACODE = :IN_DATACODE
  1900. AND HGDI.ITEMTYPE = 2
  1901. AND HGDI.ITEMID = SP.PROCEDUREID
  1902. INNER JOIN TP_PM_PRODUCTIONDATA PD
  1903. ON PD.PRODUCTIONDATAID = SP.PRODUCTIONDATAID
  1904. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1905. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1906. INNER JOIN TP_MST_GOODS G ON G.GOODSID = PD.GOODSID
  1907. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1908. WHERE SP.AUDITSTATUS = 1
  1909. AND SP.BACKOUTTIME >= :V_DATEBEGIN
  1910. AND SP.BACKOUTTIME < :IN_DATEEND
  1911. AND SP.VALUEFLAG = '0'
  1912. --AND SP.SCRAPTYPE IN (0, 2, 3)
  1913. )
  1914. GROUP BY
  1915. GOODSCODE,
  1916. SAPCODE,
  1917. USERCODE,
  1918. WORKSHOP,
  1919. TESTMOULDFLAG,
  1920. GOODS_LINE_CODE
  1921. UNION ALL
  1922. SELECT
  1923. GOODSCODE,
  1924. SAPCODE,
  1925. USERCODE,
  1926. 0 OUTPUTNUM,
  1927. 0 SCRAPNUM,
  1928. 0 CLEANUPNUM,
  1929. COUNT(*) REPAIRNUM,
  1930. WORKSHOP,
  1931. TESTMOULDFLAG,
  1932. GOODS_LINE_CODE
  1933. FROM
  1934. (
  1935. SELECT SP.GOODSCODE,
  1936. GDD.MATERIALCODE SAPCODE,
  1937. SP.SPECIALREPAIRUSERCODE USERCODE,
  1938. CASE
  1939. WHEN HGDI.WORKSHOP = 2
  1940. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN
  1941. 1
  1942. WHEN HGDI.WORKSHOP = 2
  1943. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN
  1944. 2
  1945. WHEN HGDI.WORKSHOP = 3 THEN
  1946. 3 ELSE 4
  1947. END AS WORKSHOP,
  1948. DECODE( GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-' ) AS TESTMOULDFLAG,
  1949. G.GOODS_LINE_CODE
  1950. FROM TP_PM_SCRAPPRODUCT SP
  1951. INNER JOIN TSAP_HEGII_DATAITEM HGDI
  1952. ON HGDI.DATACODE = :IN_DATACODE
  1953. AND HGDI.ITEMTYPE = 2
  1954. AND HGDI.ITEMID = SP.PROCEDUREID
  1955. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  1956. ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  1957. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  1958. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  1959. WHERE SP.AUDITSTATUS = 1
  1960. AND SP.VALUEFLAG = '1'
  1961. AND SP.GOODSLEVELTYPEID = 9
  1962. AND SP.SPECIALREPAIRTIME >= :V_DATEBEGIN
  1963. AND SP.SPECIALREPAIRTIME < :IN_DATEEND
  1964. )
  1965. GROUP BY
  1966. GOODSCODE,
  1967. SAPCODE,
  1968. USERCODE,
  1969. WORKSHOP,
  1970. TESTMOULDFLAG,
  1971. GOODS_LINE_CODE
  1972. ) SPP
  1973. WHERE SPP.OUTPUTNUM > '0'
  1974. AND SPP.SCRAPNUM > '0'
  1975. AND SPP.CLEANUPNUM > '0'
  1976. AND SPP.REPAIRNUM > '0'
  1977. GROUP BY SPP.GOODSCODE, SPP.SAPCODE, SPP.USERCODE,SPP.WORKSHOP,SPP.GOODS_LINE_CODE,SPP.TESTMOULDFLAG";
  1978. }
  1979. else if ("60".Equals(datacode))
  1980. {
  1981. sqlString = @"SELECT
  1982. :yyyymmdd AS yyyymmdd ,TO_CHAR(5000) WERKS ,
  1983. tt.goodscode GROES
  1984. , tt.sapcode MATNR
  1985. , tt.usercode ZGHNU
  1986. , tt.ordercode VBELN
  1987. , tt.orderitem POSNR
  1988. , decode(tt.testmouldflag,0,'C',1,'Y','') ZSCMS
  1989. -- ,tt.zscs
  1990. ,'T' AS zscs
  1991. , to_char(tt.outputnum) AS ZCLNG
  1992. , to_char(tt.recoverynum) AS ZHSNG
  1993. , '60' ZJDNU
  1994. ,to_char(SYSDATE, 'YYYYMMDD') ZSCNU
  1995. ,to_char(SYSDATE, 'HH24MISS') ZKSSJ
  1996. ,to_char(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ
  1997. ,'0' ZSPNG
  1998. ,'0' ZQCNG
  1999. ,'0' ZGBNG
  2000. ,tt.WORKSHOP ZSCCJ
  2001. ,TO_CHAR( :yyyymmdd) CHARG
  2002. ,'60' datacode
  2003. FROM(SELECT t.goodscode
  2004. , t.sapcode
  2005. , t.usercode
  2006. , t.ordercode
  2007. , t.orderitem
  2008. , t.testmouldflag
  2009. , t.zscs
  2010. , SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum
  2011. , SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum
  2012. , t.WORKSHOP
  2013. FROM(SELECT bar.goodscode
  2014. , bar.materialcode sapcode
  2015. , gh.fhusercode usercode
  2016. , o.orderno
  2017. , bar.recyclingflag
  2018. , bar.testmouldflag
  2019. , decode(bar.testmouldflag, '0', '', decode(g.goods_line_code, 'G', 'A', 'M', 'A', 'L', 'B', '')) as zscs
  2020. , CASE
  2021. WHEN o.orderid IS NULL
  2022. OR o.orderno LIKE 'HEGII%' THEN
  2023. ' '
  2024. WHEN instr(o.orderno, '/') = 0 THEN
  2025. to_char(o.orderno)
  2026. ELSE
  2027. to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))
  2028. END ordercode-- 销售凭证
  2029. , CASE
  2030. WHEN o.orderid IS NULL
  2031. OR o.orderno LIKE 'HEGII%'
  2032. OR instr(o.orderno, '/') = 0 THEN
  2033. '0'
  2034. WHEN instr(o.orderno, '#') = 0 THEN
  2035. to_char(substr(o.orderno, instr(o.orderno, '/') + 1))
  2036. ELSE
  2037. to_char(substr(o.orderno
  2038. , instr(o.orderno, '/') + 1
  2039. , instr(o.orderno, '#') - instr(o.orderno, '/') - 1))
  2040. END orderitem-- 销售凭证项目
  2041. ,CASE
  2042. WHEN INSTR(GT.GOODSTYPECODE, '001001') = 1
  2043. AND (INSTR(bar.GROUTINGLINECODE, 'B') = 1 OR
  2044. INSTR(bar.GROUTINGLINECODE, 'D') = 1) THEN
  2045. 2
  2046. WHEN INSTR(GT.GOODSTYPECODE, '001002') = 1
  2047. AND (INSTR(bar.GROUTINGLINECODE, 'A') = 1 OR
  2048. INSTR(bar.GROUTINGLINECODE, 'D') = 1) THEN
  2049. 1
  2050. WHEN INSTR(bar.GROUTINGLINECODE, 'C') = 1 THEN
  2051. 3
  2052. ELSE
  2053. 0
  2054. END WORKSHOP
  2055. FROM tp_pm_groutingdailydetail bar
  2056. INNER JOIN tp_pm_finishedproduct gh
  2057. ON bar.groutingdailydetailid = gh.groutingdailydetailid
  2058. INNER JOIN tp_mst_goods g
  2059. ON g.goodsid = bar.goodsid
  2060. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  2061. LEFT JOIN tp_pm_order o
  2062. ON o.orderid = gh.fhorderid where 1 = 1 AND gh.fhtime >= :V_DATEBEGIN and gh.fhtime < :IN_DATEEND ) t
  2063. GROUP BY t.goodscode
  2064. , t.sapcode
  2065. , t.usercode
  2066. , t.ordercode
  2067. , t.orderitem, t.testmouldflag, t.zscs,t.WORKSHOP) tt
  2068. WHERE tt.outputnum <> 0 OR tt.recoverynum <> 0
  2069. ORDER BY tt.goodscode
  2070. ,tt.sapcode
  2071. ,tt.usercode
  2072. ,tt.ordercode
  2073. ,tt.orderitem,tt.zscs,tt.WORKSHOP";
  2074. }
  2075. paras = new OracleParameter[]
  2076. {
  2077. new OracleParameter(":IN_DATACODE",datacode),
  2078. new OracleParameter(":yyyymmdd",yyyymmdd),
  2079. new OracleParameter(":V_DATEBEGIN",OracleDbType.Date, date, ParameterDirection.Input),
  2080. new OracleParameter(":IN_DATEEND",OracleDbType.Date, ndate, ParameterDirection.Input),
  2081. };
  2082. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  2083. int num = workData.Rows.Count;
  2084. // 调用SAP接口
  2085. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData)) + "}}";
  2086. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  2087. //string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  2088. //正式
  2089. //string url030 = "http://hgs4powd1.hegii.com:8000/RESTAdapter/DKMES/ZPPFM030";
  2090. //测试
  2091. string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  2092. string result = PostData(url030, postString, "POST");
  2093. oracleConn.Commit();
  2094. sre.Message = JObject.Parse(result)["ZMSG"].ToString();
  2095. sre.Result = JObject.Parse(result)["ZTYPE"].ToString();
  2096. return sre;
  2097. }
  2098. catch (Exception ex)
  2099. {
  2100. OutputLog.TraceLog(LogPriority.Error,
  2101. "BGToSAP",
  2102. "报工" + date.ToString("yyyy-MM-dd HH:mm:ss"),
  2103. ex.ToString(),
  2104. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  2105. throw ex;
  2106. }
  2107. finally
  2108. {
  2109. if (oracleConn != null &&
  2110. oracleConn.ConnState == ConnectionState.Open)
  2111. {
  2112. oracleConn.Disconnect();
  2113. }
  2114. }
  2115. }
  2116. public static ServiceResultEntity SyncSap5000_test_cx(DateTime date, string datacode, DateTime ndate)
  2117. {
  2118. ServiceResultEntity sre = new ServiceResultEntity();
  2119. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2120. //string fifter = "AND (bar.barcode = '10015967073')";
  2121. string fifter = "AND (gh.createtime >= :begindate or gh.createtime < :enddate)";
  2122. string yyyymmdd = date.ToString("yyyyMMdd");
  2123. string workcode = "5000";
  2124. string sqlString =
  2125. @"SELECT :yyyymmdd AS yyyymmdd
  2126. ,SYSDATE AS createtime
  2127. ,tt.goodscode GROES
  2128. , tt.sapcode MATNR
  2129. , tt.usercode ZGHNU
  2130. , tt.ordercode VBELN
  2131. , tt.orderitem POSNR
  2132. , decode(tt.testmouldflag, 0, 'C', 1, 'Y', '') ZSCMS
  2133. -- ,tt.zscs
  2134. ,'T' AS zscs
  2135. , to_char(tt.outputnum) AS ZCLNG
  2136. , to_char(tt.recoverynum) AS ZHSNG
  2137. , TO_CHAR(5000) WERKS
  2138. , '60' ZJDNU
  2139. ,to_char(SYSDATE, 'YYYYMMDD') ZSCNU
  2140. ,to_char(SYSDATE, 'HH24MISS') ZKSSJ
  2141. ,to_char(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ
  2142. ,'0' ZSPNG
  2143. ,'0' ZQCNG
  2144. ,'0' ZGBNG
  2145. ,to_char(tt.WORKSHOP) ZSCCJ
  2146. ,TO_CHAR( :yyyymmdd) CHARG
  2147. ,'0' datacode
  2148. FROM(SELECT t.goodscode
  2149. , t.sapcode
  2150. , t.usercode
  2151. , t.ordercode
  2152. , t.orderitem
  2153. , t.testmouldflag
  2154. , t.zscs
  2155. , t.WORKSHOP
  2156. , 0 - SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum
  2157. , 0 - SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum
  2158. FROM(SELECT bar.goodscode
  2159. , bar.materialcode sapcode
  2160. , gh.fhusercode usercode
  2161. , o.orderno
  2162. , bar.recyclingflag
  2163. , bar.testmouldflag
  2164. , decode(bar.testmouldflag, '0', '', decode(g.goods_line_code, 'G', 'A', 'M', 'A', 'L', 'B', '')) as zscs
  2165. , CASE
  2166. WHEN o.orderid IS NULL
  2167. OR o.orderno LIKE 'HEGII%' THEN
  2168. ' '
  2169. WHEN instr(o.orderno, '/') = 0 THEN
  2170. to_char(o.orderno)
  2171. ELSE
  2172. to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))
  2173. END ordercode-- 销售凭证
  2174. , CASE
  2175. WHEN o.orderid IS NULL
  2176. OR o.orderno LIKE 'HEGII%'
  2177. OR instr(o.orderno, '/') = 0 THEN
  2178. '0'
  2179. WHEN instr(o.orderno, '#') = 0 THEN
  2180. to_char(substr(o.orderno, instr(o.orderno, '/') + 1))
  2181. ELSE
  2182. to_char(substr(o.orderno
  2183. , instr(o.orderno, '/') + 1
  2184. , instr(o.orderno, '#') - instr(o.orderno, '/') - 1))
  2185. END orderitem
  2186. , CASE
  2187. WHEN (INSTR(bar.GROUTINGLINECODE,'A') = 1 OR INSTR(bar.GROUTINGLINECODE,'D') = 1)
  2188. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1
  2189. WHEN (INSTR(bar.GROUTINGLINECODE,'B') = 1 OR INSTR(bar.GROUTINGLINECODE,'D') = 1)
  2190. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2
  2191. WHEN INSTR(bar.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0
  2192. END AS WORKSHOP
  2193. FROM tp_pm_groutingdailydetail bar
  2194. INNER JOIN tp_pm_finishedproduct gh
  2195. ON bar.groutingdailydetailid = gh.groutingdailydetailid
  2196. INNER JOIN tp_mst_goods g
  2197. ON g.goodsid = bar.goodsid
  2198. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  2199. LEFT JOIN tp_pm_order o
  2200. ON o.orderid = gh.fhorderid where 1 = 1 " + fifter + @") t
  2201. GROUP BY t.goodscode
  2202. , t.sapcode
  2203. , t.usercode
  2204. , t.ordercode
  2205. , t.orderitem, t.testmouldflag, t.zscs,t.WORKSHOP) tt
  2206. WHERE tt.outputnum <> 0
  2207. OR tt.recoverynum <> 0
  2208. ORDER BY tt.goodscode
  2209. ,tt.sapcode
  2210. ,tt.usercode
  2211. ,tt.ordercode
  2212. ,tt.orderitem,tt.zscs,tt.WORKSHOP";
  2213. OracleParameter[] oracleParameter = new OracleParameter[]
  2214. {
  2215. new OracleParameter(":yyyymmdd", yyyymmdd),
  2216. new OracleParameter(":begindate", date),
  2217. new OracleParameter(":enddate", ndate)
  2218. };
  2219. DataTable workData5000 = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  2220. string logid_bg = oracleTrConn.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  2221. sqlString = "insert into tsap_hegii_datalog_bg\n" +
  2222. " (LogID\n" +
  2223. " ,LogType\n" +
  2224. " ,BeginTime\n" +
  2225. " ,YYYYMMDD\n" +
  2226. " ,WorkCode\n" +
  2227. " ,DataCode\n" +
  2228. " ,DataStuts\n" +
  2229. " ,DataMSG\n" +
  2230. " ,DATALOGID\n" +
  2231. " ,EXECUTEDATEBEGIN\n" +
  2232. " ,EXECUTEDATEEND)\n" +
  2233. "values\n" +
  2234. " (:LogID\n" +
  2235. " ,'2'\n" +
  2236. " ,sysdate\n" +
  2237. " ,:YYYYMMDD\n" +
  2238. " ,'5000'\n" +
  2239. " ,'60'\n" +
  2240. " ,'S'\n" +
  2241. " ,:DataMSG\n" +
  2242. " ,:LogID\n" +
  2243. " ,sysdate\n" +
  2244. " ,sysdate)";
  2245. oracleParameter = new OracleParameter[]
  2246. {
  2247. new OracleParameter(":LogID",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  2248. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  2249. new OracleParameter(":DataMSG",OracleDbType.Varchar2, "", ParameterDirection.Input),
  2250. };
  2251. int r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2252. sqlString = "insert into TSAP_HEGII_WORKDATA_BG\n" +
  2253. " (YYYYMMDD\n" +
  2254. " ,WorkCode\n" +
  2255. " ,DataCode\n" +
  2256. " ,GoodsCode\n" +
  2257. " ,SAPCode\n" +
  2258. " ,UserCode\n" +
  2259. " ,WORKSHOP\n" +
  2260. " ,OutputNum\n" +
  2261. " ,RECOVERYNUM\n" +
  2262. " ,ORDERCODE\n" +
  2263. " ,ORDERITEM\n" +
  2264. " ,testmouldflag\n" +
  2265. " ,zscs\n" +
  2266. " ,LogID,createtime)\n" +
  2267. "values\n" +
  2268. " ('" + yyyymmdd + "'\n" +
  2269. " ,'5000'\n" +
  2270. " ,'60'\n" +
  2271. " ,:GoodsCode\n" +
  2272. " ,:SAPCode\n" +
  2273. " ,:UserCode\n" +
  2274. " ,'0'\n" +
  2275. " ,:OutputNum\n" +
  2276. " ,:RECOVERYNUM\n" +
  2277. " ,:ORDERCODE\n" +
  2278. " ,:ORDERITEM\n" +
  2279. " ,:testmouldflag\n" +
  2280. " ,:zscs\n" +
  2281. " ," + logid_bg + ",:createtime)";
  2282. DateTime now = DateTime.Now;
  2283. foreach (DataRow item in workData5000.Rows)
  2284. {
  2285. oracleParameter = new OracleParameter[]
  2286. {
  2287. new OracleParameter(":GoodsCode", item["GROES"].ToString()),
  2288. new OracleParameter(":SAPCode", item["MATNR"].ToString()),
  2289. new OracleParameter(":UserCode", item["ZGHNU"].ToString()),
  2290. new OracleParameter(":OutputNum", item["ZCLNG"].ToString()),
  2291. new OracleParameter(":RECOVERYNUM", item["ZHSNG"].ToString()),
  2292. new OracleParameter(":ORDERCODE", item["VBELN"].ToString()),
  2293. new OracleParameter(":ORDERITEM", item["POSNR"].ToString()),
  2294. new OracleParameter(":testmouldflag", item["ZSCMS"].ToString()),
  2295. new OracleParameter(":zscs", item["ZSCS"].ToString()),
  2296. new OracleParameter(":createtime", OracleDbType.Date,item["createtime"], ParameterDirection.Input),
  2297. };
  2298. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2299. sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" +
  2300. " ,TO_CHAR(5000) WERKS\n" +
  2301. " ,TO_CHAR(wd.goodscode) GROES\n" +
  2302. " ,TO_CHAR(wd.sapcode) MATNR\n" +
  2303. " ,TO_CHAR(wd.usercode) ZGHNU\n" +
  2304. " ,TO_CHAR(wd.datacode) ZJDNU\n" +
  2305. " ,to_char(sysdate, 'YYYYMMDD' ) ZSCNU\n" +
  2306. " ,to_char(sysdate, 'HH24MISS' ) ZKSSJ\n" +
  2307. " ,to_char(sysdate, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" +
  2308. " ,TO_CHAR(wd.ordercode) VBELN\n" +
  2309. " ,TO_CHAR(wd.orderitem) POSNR\n" +
  2310. " ,TO_CHAR(wd.outputnum) ZCLNG\n" +
  2311. " ,TO_CHAR(wd.scrapnum) ZSPNG\n" +
  2312. " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" +
  2313. " ,TO_CHAR(wd.recoverynum) ZHSNG\n" +
  2314. " ,TO_CHAR(wd.repairnum) ZGBNG\n" +
  2315. " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" +
  2316. " -- ,TO_CHAR(wd.zscs) zscs\n" +
  2317. " ,'T' AS zscs\n" +
  2318. " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" +
  2319. " ,TO_CHAR( :yyyymmdd) CHARG\n" +
  2320. " ,TO_CHAR(60) datacode\n" +
  2321. " FROM tsap_hegii_workdata_bg wd\n" +
  2322. " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" +
  2323. " ON wd.LOGID = DL.LOGID \n" +
  2324. " WHERE wd.logid = :logid";
  2325. OracleParameter[] par = null;
  2326. par = new OracleParameter[]
  2327. {
  2328. new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  2329. new OracleParameter(":yyyymmdd",yyyymmdd),
  2330. };
  2331. DataTable dtt = oracleTrConn.GetSqlResultToDt(sqlString, par);
  2332. int num = workData5000.Rows.Count;
  2333. string sq = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  2334. string SAP_ING_NEW = oracleTrConn.GetSqlResultToStr(sq);
  2335. if (SAP_ING_NEW == "1")
  2336. {
  2337. // 调用SAP接口
  2338. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData5000)) + "}}";
  2339. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  2340. //string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  2341. string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  2342. string result = PostData(url030, postString, "POST");
  2343. if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0)
  2344. {
  2345. sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid_bg +
  2346. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  2347. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  2348. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  2349. Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  2350. object TABLE_OUT;
  2351. obj.TryGetValue("TABLE_OUT", out TABLE_OUT);
  2352. obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(TABLE_OUT + "");
  2353. object item1;
  2354. obj.TryGetValue("item", out item1);
  2355. JArray arr = JArray.FromObject(item1);
  2356. foreach (JObject item60 in arr)
  2357. {
  2358. string posnr = item60["POSNR"].ToString().TrimStart('0');
  2359. oracleParameter = new OracleParameter[]
  2360. {
  2361. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item60["ZTYPE"].ToString(), ParameterDirection.Input),
  2362. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item60["ZMSG"].ToString(), ParameterDirection.Input),
  2363. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item60["GROES"].ToString(), ParameterDirection.Input),
  2364. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item60["MATNR"].ToString(), ParameterDirection.Input),
  2365. new OracleParameter(":UserCode",OracleDbType.Varchar2, item60["ZGHNU"].ToString(), ParameterDirection.Input),
  2366. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item60["VBELN"].ToString()) ? " " : item60["VBELN"].ToString()), ParameterDirection.Input),
  2367. new OracleParameter(":Orderitem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  2368. };
  2369. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2370. }
  2371. //:msg||chr(13)||DataMSG
  2372. JObject.Parse(result)["ZMSG"] = $"{JObject.Parse(result)["ZMSG"]}({num})";
  2373. sqlString = "update tsap_hegii_datalog_bg t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  2374. oracleParameter = new OracleParameter[]
  2375. {
  2376. new OracleParameter(":DataStuts",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  2377. new OracleParameter(":msg",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  2378. new OracleParameter(":logid",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  2379. };
  2380. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2381. }
  2382. if (JObject.Parse(result)["ZTYPE"].ToString() != "S")
  2383. {
  2384. sre.Result = -2;
  2385. sre.Message = "同步产量失败," + JObject.Parse(result)["ZMSG"].ToString();
  2386. return sre;
  2387. }
  2388. //sqlString =
  2389. //"UPDATE tp_pm_groutingdailydetail bar\n" +
  2390. //" SET bar.issync = '1'\n" +
  2391. //" WHERE 1 = 1" + fifter;
  2392. //r = oracleTrConn.ExecuteNonQuery(sqlString);
  2393. }
  2394. }
  2395. return sre;
  2396. }
  2397. public static ServiceResultEntity SyncSap5000_test_jj(DateTime date, string datacode, DateTime ndate)
  2398. {
  2399. ServiceResultEntity sre = new ServiceResultEntity();
  2400. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2401. //string fifter = "AND (bar.barcode = '10015967073')";
  2402. string fifter = "AND (gh.FHTime is not null and gh.FHTime >= :begindate and gh.FHTime < :enddate)";
  2403. string yyyymmdd = date.ToString("yyyyMMdd");
  2404. #region
  2405. string workcode = "5000";
  2406. string sqlString =
  2407. @" SELECT :yyyymmdd AS yyyymmdd
  2408. ,SYSDATE AS createtime
  2409. ,tt.goodscode GROES
  2410. , tt.sapcode MATNR
  2411. , tt.usercode ZGHNU
  2412. , tt.ordercode VBELN
  2413. , tt.orderitem POSNR
  2414. , decode(tt.testmouldflag,0,'C',1,'Y','') ZSCMS
  2415. -- ,tt.zscs
  2416. ,'T' AS zscs
  2417. , to_char(tt.outputnum) AS ZCLNG
  2418. , to_char(tt.recoverynum) AS ZHSNG
  2419. , TO_CHAR(5000) WERKS
  2420. , '60' ZJDNU
  2421. ,to_char(SYSDATE, 'YYYYMMDD') ZSCNU
  2422. ,to_char(SYSDATE, 'HH24MISS') ZKSSJ
  2423. ,to_char(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ
  2424. ,'0' ZSPNG
  2425. ,'0' ZQCNG
  2426. ,'0' ZGBNG
  2427. ,to_char(tt.WORKSHOP) ZSCCJ
  2428. ,TO_CHAR( :yyyymmdd) CHARG
  2429. ,'60' datacode
  2430. FROM(SELECT t.goodscode
  2431. , t.sapcode
  2432. , t.usercode
  2433. , t.ordercode
  2434. , t.orderitem
  2435. , t.testmouldflag
  2436. , t.zscs
  2437. , t.WORKSHOP
  2438. , SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum
  2439. , SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum
  2440. FROM(SELECT bar.goodscode
  2441. , bar.materialcode sapcode
  2442. , gh.fhusercode usercode
  2443. , o.orderno
  2444. , bar.recyclingflag
  2445. , bar.testmouldflag
  2446. , decode(bar.testmouldflag, '0', '', decode(g.goods_line_code, 'G', 'A', 'M', 'A', 'L', 'B', '')) as zscs
  2447. , CASE
  2448. WHEN o.orderid IS NULL
  2449. OR o.orderno LIKE 'HEGII%' THEN
  2450. ' '
  2451. WHEN instr(o.orderno, '/') = 0 THEN
  2452. to_char(o.orderno)
  2453. ELSE
  2454. to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))
  2455. END ordercode-- 销售凭证
  2456. , CASE
  2457. WHEN o.orderid IS NULL
  2458. OR o.orderno LIKE 'HEGII%'
  2459. OR instr(o.orderno, '/') = 0 THEN
  2460. '0'
  2461. WHEN instr(o.orderno, '#') = 0 THEN
  2462. to_char(substr(o.orderno, instr(o.orderno, '/') + 1))
  2463. ELSE
  2464. to_char(substr(o.orderno
  2465. , instr(o.orderno, '/') + 1
  2466. , instr(o.orderno, '#') - instr(o.orderno, '/') - 1))
  2467. END orderitem,
  2468. CASE
  2469. WHEN (INSTR(bar.GROUTINGLINECODE,'A') = 1 OR INSTR(bar.GROUTINGLINECODE,'D') = 1)
  2470. AND INSTR( GT.GOODSTYPECODE, '001002' ) = 1 THEN 1
  2471. WHEN (INSTR(bar.GROUTINGLINECODE,'B') = 1 OR INSTR(bar.GROUTINGLINECODE,'D') = 1)
  2472. AND INSTR( GT.GOODSTYPECODE, '001001' ) = 1 THEN 2
  2473. WHEN INSTR(bar.GROUTINGLINECODE,'C') = 1 THEN 3 ELSE 0
  2474. END AS WORKSHOP
  2475. FROM tp_pm_groutingdailydetail bar
  2476. INNER JOIN tp_pm_finishedproduct gh
  2477. ON bar.groutingdailydetailid = gh.groutingdailydetailid
  2478. INNER JOIN tp_mst_goods g
  2479. ON g.goodsid = bar.goodsid
  2480. INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID
  2481. LEFT JOIN tp_pm_order o
  2482. ON o.orderid = gh.fhorderid where 1 = 1 " + fifter + @" and (o.orderid IS NULL
  2483. OR o.orderno LIKE 'HEGII%')) t
  2484. GROUP BY t.goodscode
  2485. , t.sapcode
  2486. , t.usercode
  2487. , t.ordercode
  2488. , t.orderitem, t.testmouldflag, t.zscs, t.WORKSHOP) tt
  2489. WHERE tt.outputnum <> 0 OR tt.recoverynum <> 0
  2490. ORDER BY tt.goodscode
  2491. ,tt.sapcode
  2492. ,tt.usercode
  2493. ,tt.ordercode
  2494. ,tt.orderitem,tt.zscs, tt.WORKSHOP";
  2495. OracleParameter[] oracleParameter = new OracleParameter[]
  2496. {
  2497. new OracleParameter(":yyyymmdd", yyyymmdd),
  2498. new OracleParameter(":begindate", date),
  2499. new OracleParameter(":enddate", ndate)
  2500. };
  2501. DataTable workData5000 = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  2502. string logid_bg = oracleTrConn.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  2503. sqlString = "insert into TSAP_HEGII_DATALOG_BG\n" +
  2504. " (LogID\n" +
  2505. " ,LogType\n" +
  2506. " ,BeginTime\n" +
  2507. " ,YYYYMMDD\n" +
  2508. " ,WorkCode\n" +
  2509. " ,DataCode\n" +
  2510. " ,DataStuts\n" +
  2511. " ,DataMSG\n" +
  2512. " ,DATALOGID\n" +
  2513. " ,EXECUTEDATEBEGIN\n" +
  2514. " ,EXECUTEDATEEND)\n" +
  2515. "values\n" +
  2516. " (:LogID\n" +
  2517. " ,'2'\n" +
  2518. " ,sysdate\n" +
  2519. " ,:YYYYMMDD\n" +
  2520. " ,'5000'\n" +
  2521. " ,'60'\n" +
  2522. " ,'S'\n" +
  2523. " ,:DataMSG\n" +
  2524. " ,:LogID\n" +
  2525. " ,sysdate\n" +
  2526. " ,sysdate)";
  2527. oracleParameter = new OracleParameter[]
  2528. {
  2529. new OracleParameter(":LogID",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  2530. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  2531. new OracleParameter(":DataMSG",OracleDbType.Varchar2, "", ParameterDirection.Input),
  2532. };
  2533. int r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2534. sqlString = "insert into TSAP_HEGII_WORKDATA_BG\n" +
  2535. " (YYYYMMDD\n" +
  2536. " ,WorkCode\n" +
  2537. " ,DataCode\n" +
  2538. " ,GoodsCode\n" +
  2539. " ,SAPCode\n" +
  2540. " ,UserCode\n" +
  2541. " ,WORKSHOP\n" +
  2542. " ,OutputNum\n" +
  2543. " ,RECOVERYNUM\n" +
  2544. " ,ORDERCODE\n" +
  2545. " ,ORDERITEM\n" +
  2546. " ,testmouldflag\n" +
  2547. " ,zscs\n" +
  2548. " ,LogID,createtime)\n" +
  2549. "values\n" +
  2550. " ('" + yyyymmdd + "'\n" +
  2551. " ,'5000'\n" +
  2552. " ,'60'\n" +
  2553. " ,:GoodsCode\n" +
  2554. " ,:SAPCode\n" +
  2555. " ,:UserCode\n" +
  2556. " ,'0'\n" +
  2557. " ,:OutputNum\n" +
  2558. " ,:RECOVERYNUM\n" +
  2559. " ,:ORDERCODE\n" +
  2560. " ,:ORDERITEM\n" +
  2561. " ,:testmouldflag\n" +
  2562. " ,:zscs\n" +
  2563. " ," + logid_bg + ",:createtime)";
  2564. DateTime now = DateTime.Now;
  2565. foreach (DataRow item in workData5000.Rows)
  2566. {
  2567. oracleParameter = new OracleParameter[]
  2568. {
  2569. new OracleParameter(":GoodsCode", item["GROES"].ToString()),
  2570. new OracleParameter(":SAPCode", item["MATNR"].ToString()),
  2571. new OracleParameter(":UserCode", item["ZGHNU"].ToString()),
  2572. new OracleParameter(":OutputNum", item["ZCLNG"].ToString()),
  2573. new OracleParameter(":RECOVERYNUM", item["ZHSNG"].ToString()),
  2574. new OracleParameter(":ORDERCODE", item["VBELN"].ToString()),
  2575. new OracleParameter(":ORDERITEM", item["POSNR"].ToString()),
  2576. new OracleParameter(":testmouldflag", item["ZSCMS"].ToString()),
  2577. new OracleParameter(":zscs", item["ZSCS"].ToString()),
  2578. new OracleParameter(":createtime", OracleDbType.Date,item["createtime"], ParameterDirection.Input),
  2579. };
  2580. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2581. sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" +
  2582. " ,TO_CHAR(5000) WERKS\n" +
  2583. " ,TO_CHAR(wd.goodscode) GROES\n" +
  2584. " ,TO_CHAR(wd.sapcode) MATNR\n" +
  2585. " ,TO_CHAR(wd.usercode) ZGHNU\n" +
  2586. " ,TO_CHAR(wd.datacode) ZJDNU\n" +
  2587. " ,to_char(sysdate, 'YYYYMMDD' ) ZSCNU\n" +
  2588. " ,to_char(sysdate, 'HH24MISS' ) ZKSSJ\n" +
  2589. " ,to_char(sysdate, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" +
  2590. " ,TO_CHAR(wd.ordercode) VBELN\n" +
  2591. " ,TO_CHAR(wd.orderitem) POSNR\n" +
  2592. " ,TO_CHAR(wd.outputnum) ZCLNG\n" +
  2593. " ,TO_CHAR(wd.scrapnum) ZSPNG\n" +
  2594. " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" +
  2595. " ,TO_CHAR(wd.recoverynum) ZHSNG\n" +
  2596. " ,TO_CHAR(wd.repairnum) ZGBNG\n" +
  2597. " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" +
  2598. " -- ,TO_CHAR(wd.zscs) zscs\n" +
  2599. " ,'T' AS zscs\n" +
  2600. " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" +
  2601. " ,TO_CHAR( :yyyymmdd) CHARG\n" +
  2602. " ,TO_CHAR(60) datacode\n" +
  2603. " FROM tsap_hegii_workdata_bg wd\n" +
  2604. " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" +
  2605. " ON wd.LOGID = DL.LOGID \n" +
  2606. " WHERE wd.logid = :logid";
  2607. OracleParameter[] par = null;
  2608. par = new OracleParameter[]
  2609. {
  2610. new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  2611. new OracleParameter(":yyyymmdd",yyyymmdd),
  2612. };
  2613. DataTable dtt = oracleTrConn.GetSqlResultToDt(sqlString, par);
  2614. int num = workData5000.Rows.Count;
  2615. string sq = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  2616. string SAP_ING_NEW = oracleTrConn.GetSqlResultToStr(sq);
  2617. if (SAP_ING_NEW == "1")
  2618. {
  2619. // 调用SAP接口
  2620. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(workData5000)) + "}}";
  2621. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  2622. //string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  2623. string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  2624. string result = PostData(url030, postString, "POST");
  2625. if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0)
  2626. {
  2627. sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid_bg +
  2628. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  2629. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  2630. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  2631. Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  2632. object TABLE_OUT;
  2633. obj.TryGetValue("TABLE_OUT", out TABLE_OUT);
  2634. obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(TABLE_OUT + "");
  2635. object item1;
  2636. obj.TryGetValue("item", out item1);
  2637. JArray arr = JArray.FromObject(item1);
  2638. foreach (JObject item60 in arr)
  2639. {
  2640. string posnr = item60["POSNR"].ToString().TrimStart('0');
  2641. oracleParameter = new OracleParameter[]
  2642. {
  2643. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item60["ZTYPE"].ToString(), ParameterDirection.Input),
  2644. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item60["ZMSG"].ToString(), ParameterDirection.Input),
  2645. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item60["GROES"].ToString(), ParameterDirection.Input),
  2646. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item60["MATNR"].ToString(), ParameterDirection.Input),
  2647. new OracleParameter(":UserCode",OracleDbType.Varchar2, item60["ZGHNU"].ToString(), ParameterDirection.Input),
  2648. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item60["VBELN"].ToString()) ? " " : item60["VBELN"].ToString()), ParameterDirection.Input),
  2649. new OracleParameter(":Orderitem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  2650. };
  2651. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2652. }
  2653. //:msg||chr(13)||DataMSG
  2654. JObject.Parse(result)["ZMSG"] = $"{JObject.Parse(result)["ZMSG"]}(" + num + ")";
  2655. sqlString = "update tsap_hegii_datalog_bg t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  2656. oracleParameter = new OracleParameter[]
  2657. {
  2658. new OracleParameter(":DataStuts",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  2659. new OracleParameter(":msg",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  2660. new OracleParameter(":logid",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  2661. };
  2662. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  2663. }
  2664. if (JObject.Parse(result)["ZTYPE"].ToString() != "S")
  2665. {
  2666. sre.Result = -2;
  2667. sre.Message = "同步产量失败," + JObject.Parse(result)["ZMSG"].ToString();
  2668. return sre;
  2669. }
  2670. //sqlString =
  2671. //"UPDATE tp_pm_groutingdailydetail bar\n" +
  2672. //" SET bar.issync = '1'\n" +
  2673. //" WHERE 1 = 1" + fifter;
  2674. //r = oracleTrConn.ExecuteNonQuery(sqlString);
  2675. }
  2676. }
  2677. #endregion
  2678. return sre;
  2679. }
  2680. /// <summary>
  2681. /// 同步SAP接口
  2682. /// </summary>
  2683. /// <param name="date"></param>
  2684. /// <param name="datacode"></param>
  2685. /// <param name="userid"></param>
  2686. /// <param name="logid"></param>
  2687. /// <returns></returns>
  2688. public static ServiceResultEntity SyncSap(DateTime date, string datacode, int userid, int logid)
  2689. {
  2690. ServiceResultEntity sre = new ServiceResultEntity();
  2691. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2692. try
  2693. {
  2694. OracleParameter[] paras = null;
  2695. string sqlString = string.Empty;
  2696. sqlString = "select workcode from tp_mst_account where rownum = 1";
  2697. string workcode = oracleConn.GetSqlResultToStr(sqlString);
  2698. string yyyymmdd = date.ToString("yyyyMMdd");
  2699. int r = 0;
  2700. // 查询出当前日志外,最新的一次日志
  2701. sqlString = "SELECT t.executedateend\n" +
  2702. " FROM (SELECT dl.executedateend\n" +
  2703. " FROM tsap_hegii_datalog dl\n" +
  2704. " WHERE dl.logtype = '3'\n" +
  2705. " AND dl.datastuts = 'S'\n" +
  2706. " AND dl.datacode = :datacode\n" +
  2707. " AND dl.logid <> :logid\n" +
  2708. " ORDER BY dl.executedateend DESC) t\n" +
  2709. " WHERE rownum = 1";
  2710. paras = new OracleParameter[]
  2711. {
  2712. new OracleParameter(":datacode", datacode),
  2713. new OracleParameter(":logid", logid)
  2714. };
  2715. object executedateend = oracleConn.GetSqlResultToObj(sqlString, paras);
  2716. if (executedateend == null || Convert.ToDateTime(executedateend) >= date)
  2717. {
  2718. sre.Result = "W";
  2719. sre.Message = "当前日志的结束时间小于最新日志的结束时间,不能同步";
  2720. return sre;
  2721. }
  2722. sqlString = "SELECT wd.yyyymmdd\n" +
  2723. " ,wd.workcode\n" +
  2724. " ,wd.datacode\n" +
  2725. " ,wd.goodscode\n" +
  2726. " ,wd.sapcode\n" +
  2727. " ,wd.usercode\n" +
  2728. " ,wd.ordercode\n" +
  2729. " ,wd.orderitem\n" +
  2730. " ,wd.outputnum\n" +
  2731. " ,wd.scrapnum\n" +
  2732. " ,wd.cleanupnum\n" +
  2733. " ,wd.recoverynum\n" +
  2734. " ,wd.repairnum\n" +
  2735. " ,wd.testmouldflag\n" +
  2736. " ,wd.zscs\n" +
  2737. " FROM tsap_hegii_workdata wd\n" +
  2738. " WHERE wd.logid = :logid";
  2739. paras = new OracleParameter[]
  2740. {
  2741. new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input),
  2742. };
  2743. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  2744. Zppfm008 sapParameter = new Zppfm008();
  2745. if (workData != null && workData.Rows.Count > 0)
  2746. {
  2747. sapParameter.ZSUM = workData.Rows.Count;
  2748. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  2749. int index = 0;
  2750. foreach (DataRow item in workData.Rows)
  2751. {
  2752. ZSPP100 info100 = new ZSPP100();
  2753. // 工厂
  2754. info100.WERKS = workcode;
  2755. // 型号
  2756. info100.GROES = item["GoodsCode"].ToString();
  2757. // 物料编号
  2758. info100.MATNR = item["SAPCode"].ToString();
  2759. // 生产工号
  2760. info100.ZGHNU = item["UserCode"].ToString();
  2761. // 数据节点
  2762. info100.ZJDNU = item["DataCode"].ToString();
  2763. // 时间戳
  2764. info100.ZSCNU = yyyymmdd;
  2765. // 销售凭证
  2766. info100.VBELN = item["ORDERCODE"].ToString().Trim();
  2767. // 销售凭证项目
  2768. info100.POSNR = item["ORDERITEM"].ToString();
  2769. // 产量
  2770. info100.ZCLNG = item["OutputNum"].ToString();
  2771. // 损坯
  2772. info100.ZSPNG = item["SCRAPNUM"].ToString();
  2773. // 清除
  2774. info100.ZQCNG = item["CLEANUPNUM"].ToString();
  2775. // 回收
  2776. info100.ZHSNG = item["RECOVERYNUM"].ToString();
  2777. // 干补
  2778. info100.ZGBNG = item["REPAIRNUM"].ToString();
  2779. // 注浆类型 G高压 L普通
  2780. info100.ZSCS = item["ZSCS"].ToString();
  2781. info100.ZKSSJ = Convert.ToDateTime(executedateend).ToString("HHmmss");
  2782. info100.ZJSRQ = Convert.ToDecimal(date.ToString("yyyyMMddHHmmss"));
  2783. sapParameter.TABLE_IN[index++] = info100;
  2784. }
  2785. }
  2786. else
  2787. {
  2788. sapParameter.ZSUM = 0;
  2789. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  2790. }
  2791. // 调用SAP接口
  2792. ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode);
  2793. if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  2794. {
  2795. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  2796. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  2797. "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  2798. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  2799. foreach (ZSPP100 item in result.TABLE_OUT)
  2800. {
  2801. string posnr = item.POSNR.TrimStart('0');
  2802. paras = new OracleParameter[]
  2803. {
  2804. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  2805. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  2806. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  2807. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  2808. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  2809. new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  2810. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  2811. new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  2812. };
  2813. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  2814. }
  2815. }
  2816. result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  2817. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  2818. paras = new OracleParameter[]
  2819. {
  2820. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  2821. new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  2822. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  2823. };
  2824. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  2825. if (result.ZTYPE == "S")
  2826. {
  2827. sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :logid";
  2828. paras = new OracleParameter[]
  2829. {
  2830. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  2831. new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
  2832. };
  2833. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  2834. }
  2835. oracleConn.Commit();
  2836. sre.Message = result.ZMSG;
  2837. sre.Result = result.ZTYPE;
  2838. return sre;
  2839. }
  2840. catch (Exception ex)
  2841. {
  2842. throw ex;
  2843. }
  2844. finally
  2845. {
  2846. if (oracleConn != null &&
  2847. oracleConn.ConnState == ConnectionState.Open)
  2848. {
  2849. oracleConn.Disconnect();
  2850. }
  2851. }
  2852. }
  2853. /// <summary>
  2854. /// 同步成品条码(手动)
  2855. /// </summary>
  2856. /// <param name="date"></param>
  2857. /// <param name="userid"></param>
  2858. /// <returns></returns>
  2859. public static ServiceResultEntity SetFP6001(DateTime date, int userid)
  2860. {
  2861. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2862. ServiceResultEntity sre = new ServiceResultEntity();
  2863. try
  2864. {
  2865. string yyyymmdd = date.ToString("yyyyMMdd");
  2866. string sqlString =
  2867. "select t.logid\n" +
  2868. " from tsap_hegii_datalog t\n" +
  2869. " where t.logtype = '2'\n" +
  2870. " and t.datastuts = 'S'\n" +
  2871. " and t.yyyymmdd = :yyyymmdd\n" +
  2872. " and t.datacode = :datacode";
  2873. OracleParameter[] oracleParameter = new OracleParameter[]
  2874. {
  2875. new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  2876. new OracleParameter(":datacode",OracleDbType.Varchar2, "6001", ParameterDirection.Input),
  2877. };
  2878. string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  2879. if (!string.IsNullOrEmpty(logid))
  2880. {
  2881. sre.Status = Constant.ServiceResultStatus.Other;
  2882. sre.Message = "日期【" + yyyymmdd + "】的数据已经同步过,不能重复同步。";
  2883. return sre;
  2884. }
  2885. sqlString =
  2886. "select t.logid\n" +
  2887. " from tsap_hegii_datalog t\n" +
  2888. " where t.logtype = '1'\n" +
  2889. " and t.datastuts = 'S'\n" +
  2890. " and t.yyyymmdd = :yyyymmdd\n" +
  2891. " and t.datacode = :datacode" +
  2892. " and t.createuserid is null for update";
  2893. string datalogid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  2894. sqlString = "select workcode from tp_mst_account where rownum = 1";
  2895. string workcode = oracleConn.GetSqlResultToStr(sqlString);
  2896. //DateTime datebegin = date.Date;
  2897. //DateTime dateend = date.Date.AddDays(1);
  2898. logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  2899. string msg = null;
  2900. //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" +
  2901. // dateend.ToString("yyyyMMdd-HHmm");
  2902. sqlString = "insert into tsap_hegii_datalog\n" +
  2903. " (LogID\n" +
  2904. " ,LogType\n" +
  2905. " ,BeginTime\n" +
  2906. " ,YYYYMMDD\n" +
  2907. " ,WorkCode\n" +
  2908. " ,DataCode\n" +
  2909. " ,DataStuts\n" +
  2910. " ,DataMSG\n" +
  2911. " ,CreateUserID\n" +
  2912. " ,DataLogID)\n" +
  2913. "values\n" +
  2914. " (:LogID\n" +
  2915. " ,'2'\n" +
  2916. " ,sysdate\n" +
  2917. " ,:YYYYMMDD\n" +
  2918. " ,:WorkCode\n" +
  2919. " ,:DataCode\n" +
  2920. " ,:DataStuts\n" +
  2921. " ,:DataMSG\n" +
  2922. " ,:CreateUserID\n" +
  2923. " ,:DataLogID)";
  2924. int r = 0;
  2925. if (string.IsNullOrEmpty(datalogid))
  2926. {
  2927. oracleParameter = new OracleParameter[]
  2928. {
  2929. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  2930. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  2931. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  2932. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  2933. new OracleParameter(":DataCode",OracleDbType.Varchar2, "6001", ParameterDirection.Input),
  2934. new OracleParameter(":DataMSG",OracleDbType.Varchar2, "DKMES-ERROR:NO DATA " + msg, ParameterDirection.Input),
  2935. new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input),
  2936. new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input),
  2937. };
  2938. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  2939. oracleConn.Commit();
  2940. sre.Status = Constant.ServiceResultStatus.Other;
  2941. sre.Message = "没有同步数据";
  2942. sre.Result = "E";
  2943. return sre;
  2944. }
  2945. oracleParameter = new OracleParameter[]
  2946. {
  2947. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  2948. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  2949. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  2950. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  2951. new OracleParameter(":DataCode",OracleDbType.Varchar2, "6001", ParameterDirection.Input),
  2952. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  2953. new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input),
  2954. new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  2955. };
  2956. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  2957. sqlString =
  2958. "select fp.yyyymmdd\n" +
  2959. " ,fp.workcode\n" +
  2960. " ,fp.barcode\n" +
  2961. " ,fp.outcode\n" +
  2962. " ,fp.goodscode\n" +
  2963. " ,fp.sapcode\n" +
  2964. " ,fp.sapflbatchno\n" +
  2965. " ,fp.sapfhundoflag\n" +
  2966. " ,fp.ordercode\n" +
  2967. " ,fp.orderitem\n" +
  2968. " from tsap_hegii_finishedproduct fp where fp.logid = :datalogid\n" +
  2969. " order by fp.sapflbatchno, fp.barcode";
  2970. oracleParameter = new OracleParameter[]
  2971. {
  2972. new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  2973. };
  2974. DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  2975. // 单次传输最大条数
  2976. int maxCount = 100000;
  2977. List<Zppfm010> sapParameterList = new List<Zppfm010>();
  2978. if (fpData != null && fpData.Rows.Count > 0)
  2979. {
  2980. int index = 0;
  2981. //Zppfm010 sapParameter = new Zppfm010();
  2982. //sapParameter.Zsum = maxCount;
  2983. //sapParameter.TableIn = new Zspp110[sapParameter.Zsum];
  2984. List<ZSPP110> tableInList = new List<ZSPP110>();
  2985. foreach (DataRow item in fpData.Rows)
  2986. {
  2987. if (index >= maxCount)
  2988. {
  2989. Zppfm010 sapItem = new Zppfm010();
  2990. sapItem.ZSUM = tableInList.Count;
  2991. sapItem.TABLE_IN = tableInList.ToArray();
  2992. sapParameterList.Add(sapItem);
  2993. index = 0;
  2994. tableInList.Clear();
  2995. }
  2996. ZSPP110 info110 = new ZSPP110();
  2997. // 时间戳
  2998. info110.ZSCNU = yyyymmdd;
  2999. // 工厂
  3000. info110.WERKS = workcode;
  3001. // 生产条码
  3002. info110.ZSCTM = item["barcode"].ToString();
  3003. // 包装条码
  3004. info110.ZBZTM = item["outcode"].ToString();
  3005. // 产品编码
  3006. info110.ZCPBM = item["goodscode"].ToString();
  3007. // 物料编号
  3008. info110.MATNR = item["sapcode"].ToString();
  3009. // 包装整板标识
  3010. info110.ZBZBS = item["sapflbatchno"].ToString();
  3011. // 重新绑定标识
  3012. info110.ZCXBD = item["sapfhundoflag"].ToString();
  3013. // 销售凭证
  3014. info110.KDAUF = item["ordercode"].ToString();
  3015. // 销售凭证项目
  3016. info110.KDPOS = item["orderitem"].ToString();
  3017. info110.ZCODEN = "";
  3018. info110.ZCODEYZM = "";
  3019. if (info110.WERKS == "5011" && info110.ZCPBM == "K047L")
  3020. {
  3021. continue;
  3022. }
  3023. tableInList.Add(info110);
  3024. index++;
  3025. }
  3026. Zppfm010 sapParameter = new Zppfm010();
  3027. sapParameter.ZSUM = tableInList.Count;
  3028. sapParameter.TABLE_IN = tableInList.ToArray();
  3029. sapParameterList.Add(sapParameter);
  3030. index = 0;
  3031. tableInList.Clear();
  3032. }
  3033. else
  3034. {
  3035. Zppfm010 sapParameter = new Zppfm010();
  3036. sapParameter.ZSUM = 0;
  3037. sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM];
  3038. sapParameterList.Add(sapParameter);
  3039. }
  3040. foreach (Zppfm010 sapParameter in sapParameterList)
  3041. {
  3042. ZPPFM010Response result = HGSAPDK_ZPPFM010(sapParameter, yyyymmdd);
  3043. //sre.Message = result.ZMSG;
  3044. sre.Message = $"{result.ZMSG}({sapParameter.ZSUM})";
  3045. sre.Result = result.ZTYPE;
  3046. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  3047. oracleParameter = new OracleParameter[]
  3048. {
  3049. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  3050. //new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  3051. new OracleParameter(":msg",OracleDbType.Varchar2, sre.Message, ParameterDirection.Input),
  3052. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  3053. };
  3054. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  3055. if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  3056. {
  3057. sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + datalogid +
  3058. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and barcode=:barcode";
  3059. foreach (ZSPP110 item in result.TABLE_OUT)
  3060. {
  3061. oracleParameter = new OracleParameter[]
  3062. {
  3063. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  3064. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  3065. new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input),
  3066. };
  3067. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  3068. }
  3069. }
  3070. if (result.ZTYPE != "S")
  3071. {
  3072. oracleConn.Commit();
  3073. //sre.Message = result.Zmsg;
  3074. //sre.Result = result.Ztype;
  3075. return sre;
  3076. }
  3077. }
  3078. //if (result.Ztype == "S")
  3079. {
  3080. sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :datalogid";
  3081. oracleParameter = new OracleParameter[]
  3082. {
  3083. new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  3084. new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
  3085. };
  3086. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  3087. }
  3088. oracleConn.Commit();
  3089. //sre.Message = result.Zmsg;
  3090. //sre.Result = result.Ztype;
  3091. return sre;
  3092. }
  3093. catch (Exception ex)
  3094. {
  3095. throw ex;
  3096. }
  3097. finally
  3098. {
  3099. if (oracleConn != null &&
  3100. oracleConn.ConnState == ConnectionState.Open)
  3101. {
  3102. oracleConn.Disconnect();
  3103. }
  3104. }
  3105. }
  3106. /// <summary>
  3107. /// 同步成品条码(手动)
  3108. /// </summary>
  3109. /// <param name="date"></param>
  3110. /// <param name="userid"></param>
  3111. /// <returns></returns>
  3112. public static ServiceResultEntity SetFP60_T(DateTime date, int userid)
  3113. {
  3114. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3115. ServiceResultEntity sre = new ServiceResultEntity();
  3116. try
  3117. {
  3118. string yyyymmdd = date.ToString("yyyyMMdd");
  3119. string sqlString = null;
  3120. sqlString =
  3121. "select fp.yyyymmdd\n" +
  3122. " ,fp.workcode\n" +
  3123. " ,fp.barcode\n" +
  3124. " ,fp.outcode\n" +
  3125. " ,fp.goodscode\n" +
  3126. " ,fp.sapcode\n" +
  3127. " ,fp.sapflbatchno\n" +
  3128. " ,fp.sapfhundoflag\n" +
  3129. " ,fp.ordercode\n" +
  3130. " ,fp.orderitem\n" +
  3131. " from tsap_hegii_finishedproduct fp where fp.logid=10339 and fp.sapflbatchno <> '575bd97d-5e3a-496f-8703-9e63be8016f0'\n" +
  3132. @" and fp.sapflbatchno <> '191204091310-46e7be7a-ea51-43a0-bd46-cb0866cef296'
  3133. and fp.sapflbatchno <> '191203234110-093d2c42-1842-4532-b7d6-39fe768ff35a'
  3134. and fp.sapflbatchno <> '191203234607-b242c5ef-2a42-4e4b-b02f-9a03798ee662'
  3135. and fp.sapflbatchno <> '191203234854-6218b6d8-4f14-4ab8-9be8-b86ce35f9a62'
  3136. and fp.sapflbatchno <> '191203234912-bfa6843d-767d-4ca7-8477-7b7242b7f900'
  3137. and fp.sapflbatchno <> '191204000111-18741887-f47b-4da7-9f0a-a970a30f79cc'
  3138. " +
  3139. " order by fp.sapflbatchno, fp.barcode";
  3140. OracleParameter[] oracleParameter = new OracleParameter[]
  3141. {
  3142. new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, "191204091310-46e7be7a-ea51-43a0-bd46-cb0866cef296", ParameterDirection.Input),
  3143. };
  3144. DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  3145. // 单次传输最大条数
  3146. int maxCount = 100000;
  3147. List<Zppfm010> sapParameterList = new List<Zppfm010>();
  3148. if (fpData != null && fpData.Rows.Count > 0)
  3149. {
  3150. int index = 0;
  3151. //Zppfm010 sapParameter = new Zppfm010();
  3152. //sapParameter.Zsum = maxCount;
  3153. //sapParameter.TableIn = new Zspp110[sapParameter.Zsum];
  3154. List<ZSPP110> tableInList = new List<ZSPP110>();
  3155. foreach (DataRow item in fpData.Rows)
  3156. {
  3157. if (index >= maxCount)
  3158. {
  3159. Zppfm010 sapItem = new Zppfm010();
  3160. sapItem.ZSUM = tableInList.Count;
  3161. sapItem.TABLE_IN = tableInList.ToArray();
  3162. sapParameterList.Add(sapItem);
  3163. index = 0;
  3164. tableInList.Clear();
  3165. }
  3166. ZSPP110 info110 = new ZSPP110();
  3167. // 时间戳
  3168. info110.ZSCNU = yyyymmdd;
  3169. // 工厂
  3170. info110.WERKS = "5020";
  3171. // 生产条码
  3172. info110.ZSCTM = item["barcode"].ToString();
  3173. // 包装条码
  3174. info110.ZBZTM = item["outcode"].ToString();
  3175. // 产品编码
  3176. info110.ZCPBM = item["goodscode"].ToString();
  3177. // 物料编号
  3178. info110.MATNR = item["sapcode"].ToString();
  3179. // 包装整板标识
  3180. info110.ZBZBS = item["sapflbatchno"].ToString();
  3181. // 重新绑定标识
  3182. info110.ZCXBD = item["sapfhundoflag"].ToString();
  3183. // 销售凭证
  3184. info110.KDAUF = item["ordercode"].ToString();
  3185. // 销售凭证项目
  3186. info110.KDPOS = item["orderitem"].ToString();
  3187. info110.ZCODEN = "";
  3188. info110.ZCODEYZM = "";
  3189. tableInList.Add(info110);
  3190. index++;
  3191. }
  3192. Zppfm010 sapParameter = new Zppfm010();
  3193. sapParameter.ZSUM = tableInList.Count;
  3194. sapParameter.TABLE_IN = tableInList.ToArray();
  3195. sapParameterList.Add(sapParameter);
  3196. index = 0;
  3197. tableInList.Clear();
  3198. }
  3199. else
  3200. {
  3201. Zppfm010 sapParameter = new Zppfm010();
  3202. sapParameter.ZSUM = 0;
  3203. sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM];
  3204. sapParameterList.Add(sapParameter);
  3205. }
  3206. foreach (Zppfm010 sapParameter in sapParameterList)
  3207. {
  3208. ZPPFM010Response result = HGSAPDK_ZPPFM010(sapParameter, yyyymmdd);
  3209. //sre.Message = result.ZMSG;
  3210. sre.Message = $"{result.ZMSG}({sapParameter.ZSUM})";
  3211. sre.Result = result.ZTYPE;
  3212. }
  3213. return sre;
  3214. }
  3215. catch (Exception ex)
  3216. {
  3217. throw ex;
  3218. }
  3219. finally
  3220. {
  3221. if (oracleConn != null &&
  3222. oracleConn.ConnState == ConnectionState.Open)
  3223. {
  3224. oracleConn.Disconnect();
  3225. }
  3226. }
  3227. }
  3228. /// <summary>
  3229. /// 同步成品条码(手动)
  3230. /// </summary>
  3231. /// <param name="date"></param>
  3232. /// <param name="userid"></param>
  3233. /// <returns></returns>
  3234. public static ServiceResultEntity SetFP6002(DateTime date, int userid)
  3235. {
  3236. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3237. ServiceResultEntity sre = new ServiceResultEntity();
  3238. try
  3239. {
  3240. string yyyymmdd = date.ToString("yyyyMMdd");
  3241. string sqlString =
  3242. "select t.logid\n" +
  3243. " from tsap_hegii_datalog t\n" +
  3244. " where t.logtype = '2'\n" +
  3245. " and t.datastuts = 'S'\n" +
  3246. " and t.yyyymmdd = :yyyymmdd\n" +
  3247. " and t.datacode = :datacode";
  3248. OracleParameter[] oracleParameter = new OracleParameter[]
  3249. {
  3250. new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  3251. new OracleParameter(":datacode",OracleDbType.Varchar2, "6002", ParameterDirection.Input),
  3252. };
  3253. string logid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  3254. if (!string.IsNullOrEmpty(logid))
  3255. {
  3256. sre.Status = Constant.ServiceResultStatus.Other;
  3257. sre.Message = "日期【" + yyyymmdd + "】的数据已经同步过,不能重复同步。";
  3258. return sre;
  3259. }
  3260. sqlString =
  3261. "select t.logid, t.begintime, t.endtime\n" +
  3262. " from tsap_hegii_datalog t\n" +
  3263. " where t.logtype = '1'\n" +
  3264. " and t.datastuts = 'S'\n" +
  3265. " and t.yyyymmdd = :yyyymmdd\n" +
  3266. " and t.datacode = :datacode" +
  3267. " and t.createuserid is null for update";
  3268. //string datalogid = oracleConn.GetSqlResultToStr(sqlString, oracleParameter);
  3269. DataTable dt = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  3270. string datalogid = null;
  3271. string msg = null;
  3272. if (dt.Rows.Count > 0)
  3273. {
  3274. datalogid = dt.Rows[0]["logid"] + "";
  3275. msg = Convert.ToDateTime(dt.Rows[0]["endtime"]).ToString("HH:mm ");
  3276. }
  3277. sqlString = "select workcode from tp_mst_account where rownum = 1";
  3278. string workcode = oracleConn.GetSqlResultToStr(sqlString);
  3279. //DateTime datebegin = date.Date;
  3280. //DateTime dateend = date.Date.AddDays(1);
  3281. logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  3282. //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" +
  3283. // dateend.ToString("yyyyMMdd-HHmm");
  3284. sqlString = "insert into tsap_hegii_datalog\n" +
  3285. " (LogID\n" +
  3286. " ,LogType\n" +
  3287. " ,BeginTime\n" +
  3288. " ,YYYYMMDD\n" +
  3289. " ,WorkCode\n" +
  3290. " ,DataCode\n" +
  3291. " ,DataStuts\n" +
  3292. " ,DataMSG\n" +
  3293. " ,CreateUserID\n" +
  3294. " ,DataLogID)\n" +
  3295. "values\n" +
  3296. " (:LogID\n" +
  3297. " ,'2'\n" +
  3298. " ,sysdate\n" +
  3299. " ,:YYYYMMDD\n" +
  3300. " ,:WorkCode\n" +
  3301. " ,:DataCode\n" +
  3302. " ,:DataStuts\n" +
  3303. " ,:DataMSG\n" +
  3304. " ,:CreateUserID\n" +
  3305. " ,:DataLogID)";
  3306. int r = 0;
  3307. if (string.IsNullOrEmpty(datalogid))
  3308. {
  3309. oracleParameter = new OracleParameter[]
  3310. {
  3311. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  3312. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  3313. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  3314. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  3315. new OracleParameter(":DataCode",OracleDbType.Varchar2, "6002", ParameterDirection.Input),
  3316. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg + "DKMES-ERROR:NO DATA " , ParameterDirection.Input),
  3317. new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input),
  3318. new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input),
  3319. };
  3320. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  3321. oracleConn.Commit();
  3322. sre.Status = Constant.ServiceResultStatus.Other;
  3323. sre.Message = "没有同步数据";
  3324. sre.Result = "E";
  3325. return sre;
  3326. }
  3327. oracleParameter = new OracleParameter[]
  3328. {
  3329. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  3330. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  3331. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  3332. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  3333. new OracleParameter(":DataCode",OracleDbType.Varchar2, "6002", ParameterDirection.Input),
  3334. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  3335. new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input),
  3336. new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  3337. };
  3338. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  3339. sqlString =
  3340. "select fp.yyyymmdd\n" +
  3341. " ,fp.workcode\n" +
  3342. " ,fp.barcode\n" +
  3343. " ,fp.outcode\n" +
  3344. " ,fp.goodscode\n" +
  3345. " ,fp.sapcode\n" +
  3346. " ,fp.sapflbatchno\n" +
  3347. " ,fp.sapfhundoflag\n" +
  3348. " ,fp.ordercode\n" +
  3349. " ,fp.orderitem\n" +
  3350. //" from tsap_hegii_finishedproduct fp where fp.logid = :datalogid and (ZTYPE is null or ZTYPE <> 'S')\n" +
  3351. " from tsap_hegii_finishedproduct fp where fp.logid = :datalogid and (ZTYPE is null)\n" +
  3352. " order by fp.sapflbatchno, fp.barcode";
  3353. oracleParameter = new OracleParameter[]
  3354. {
  3355. new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  3356. };
  3357. DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  3358. // 单次传输最大条数
  3359. int maxCount = 100000;
  3360. List<Zppfm010> sapParameterList = new List<Zppfm010>();
  3361. if (fpData != null && fpData.Rows.Count > 0)
  3362. {
  3363. int index = 0;
  3364. //Zppfm010 sapParameter = new Zppfm010();
  3365. //sapParameter.Zsum = maxCount;
  3366. //sapParameter.TableIn = new Zspp110[sapParameter.Zsum];
  3367. List<ZSPP110> tableInList = new List<ZSPP110>();
  3368. foreach (DataRow item in fpData.Rows)
  3369. {
  3370. if (index >= maxCount)
  3371. {
  3372. Zppfm010 sapItem = new Zppfm010();
  3373. sapItem.ZSUM = tableInList.Count;
  3374. sapItem.TABLE_IN = tableInList.ToArray();
  3375. sapParameterList.Add(sapItem);
  3376. index = 0;
  3377. tableInList.Clear();
  3378. }
  3379. ZSPP110 info110 = new ZSPP110();
  3380. // 时间戳
  3381. info110.ZSCNU = yyyymmdd;
  3382. // 工厂
  3383. info110.WERKS = workcode;
  3384. // 生产条码
  3385. info110.ZSCTM = item["barcode"].ToString();
  3386. // 包装条码
  3387. info110.ZBZTM = item["outcode"].ToString();
  3388. // 产品编码
  3389. info110.ZCPBM = item["goodscode"].ToString();
  3390. // 物料编号
  3391. info110.MATNR = item["sapcode"].ToString();
  3392. // 包装整板标识
  3393. info110.ZBZBS = item["sapflbatchno"].ToString();
  3394. // 重新绑定标识
  3395. info110.ZCXBD = item["sapfhundoflag"].ToString();
  3396. // 销售凭证
  3397. info110.KDAUF = item["ordercode"].ToString();
  3398. // 销售凭证项目
  3399. info110.KDPOS = item["orderitem"].ToString();
  3400. info110.ZCODEN = "";
  3401. info110.ZCODEYZM = "";
  3402. tableInList.Add(info110);
  3403. index++;
  3404. }
  3405. Zppfm010 sapParameter = new Zppfm010();
  3406. sapParameter.ZSUM = tableInList.Count;
  3407. sapParameter.TABLE_IN = tableInList.ToArray();
  3408. sapParameterList.Add(sapParameter);
  3409. index = 0;
  3410. tableInList.Clear();
  3411. }
  3412. else
  3413. {
  3414. Zppfm010 sapParameter = new Zppfm010();
  3415. sapParameter.ZSUM = 0;
  3416. sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM];
  3417. sapParameterList.Add(sapParameter);
  3418. }
  3419. foreach (Zppfm010 sapParameter in sapParameterList)
  3420. {
  3421. ZPPFM010Response result = HGSAPDK_ZPPFM010(sapParameter, yyyymmdd);
  3422. //sre.Message = result.ZMSG;
  3423. sre.Message = $"{result.ZMSG}({sapParameter.ZSUM})";
  3424. sre.Result = result.ZTYPE;
  3425. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =DataMSG||:msg where logid = :logid";
  3426. oracleParameter = new OracleParameter[]
  3427. {
  3428. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  3429. //new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  3430. new OracleParameter(":msg",OracleDbType.Varchar2, sre.Message, ParameterDirection.Input),
  3431. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  3432. };
  3433. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  3434. if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  3435. {
  3436. sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = nvl(:ZTYPE,'S'), ZMSG = :ZMSG where logid = " + datalogid +
  3437. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode + "' and barcode=:barcode and sapflbatchno=:sapflbatchno";
  3438. foreach (ZSPP110 item in result.TABLE_OUT)
  3439. {
  3440. oracleParameter = new OracleParameter[]
  3441. {
  3442. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  3443. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  3444. new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input),
  3445. new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, item.ZBZBS, ParameterDirection.Input),
  3446. };
  3447. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  3448. }
  3449. }
  3450. if (result.ZTYPE != "S")
  3451. {
  3452. oracleConn.Commit();
  3453. //sre.Message = result.Zmsg;
  3454. //sre.Result = result.Ztype;
  3455. return sre;
  3456. }
  3457. }
  3458. //if (result.Ztype == "S")
  3459. {
  3460. sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :datalogid";
  3461. oracleParameter = new OracleParameter[]
  3462. {
  3463. new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  3464. new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
  3465. };
  3466. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  3467. }
  3468. oracleConn.Commit();
  3469. //sre.Message = result.Zmsg;
  3470. //sre.Result = result.Ztype;
  3471. return sre;
  3472. }
  3473. catch (Exception ex)
  3474. {
  3475. throw ex;
  3476. }
  3477. finally
  3478. {
  3479. if (oracleConn != null &&
  3480. oracleConn.ConnState == ConnectionState.Open)
  3481. {
  3482. oracleConn.Disconnect();
  3483. }
  3484. }
  3485. }
  3486. /// <summary>
  3487. /// 产量接口
  3488. /// </summary>
  3489. /// <param name="sapParameter"></param>
  3490. /// <returns></returns>
  3491. public static ZPPFM008Response HGSAPDK_ZPPFM008(Zppfm008 sapParameter, string yyyymmdd, string datacode, string SPANAME = "")
  3492. {
  3493. ZPPFM008Response sapResult = null;
  3494. try
  3495. {
  3496. using (ZPPFM008Client sapClient = new ZPPFM008Client("ZPPFM008_BIND" + SPANAME))
  3497. {
  3498. // 登录
  3499. UserNamePasswordClientCredential credential =
  3500. sapClient.ClientCredentials.UserName;
  3501. //credential.UserName = "hgsapdk";
  3502. //credential.Password = "Sapdk#240";
  3503. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  3504. credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName");
  3505. credential.Password = ini.ReadIniData("SAP_HEGII", "Password");
  3506. // 参数
  3507. sapParameter.ZSUMSpecified = true;
  3508. sapParameter.TABLE_OUT = new ZSPP100[0];
  3509. // 接口
  3510. sapResult = sapClient.ZPPFM008(sapParameter);
  3511. if (sapResult.ZTYPE == "S")
  3512. {
  3513. // 结果
  3514. OutputLog.TraceLog(LogPriority.Information,
  3515. "HGSAPDK_ZPPFM008",
  3516. "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM,
  3517. " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  3518. LocalPath.LogExePath + "SAP_HEGII\\Info_");
  3519. }
  3520. else
  3521. {
  3522. foreach (ZSPP100 item in sapResult.TABLE_OUT)
  3523. {
  3524. if (!string.IsNullOrWhiteSpace(item.ZMSG))
  3525. {
  3526. sapResult.ZMSG += $"[{item.ZMSG}]";
  3527. break;
  3528. }
  3529. }
  3530. // 结果
  3531. OutputLog.TraceLog(LogPriority.Information,
  3532. "HGSAPDK_ZPPFM008",
  3533. "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM + " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  3534. JsonHelper.ToJson(sapResult),
  3535. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  3536. }
  3537. }
  3538. }
  3539. catch (Exception ex)
  3540. {
  3541. sapResult = new ZPPFM008Response();
  3542. sapResult.ZTYPE = "E";
  3543. sapResult.ZMSG = ex.Message;
  3544. //if (ex is System.ServiceModel.FaultException)
  3545. //{
  3546. // sapResult.ZMSG = ex.Message;
  3547. //}
  3548. //else
  3549. //{
  3550. // sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid();
  3551. //}
  3552. OutputLog.TraceLog(LogPriority.Error,
  3553. "HGSAPDK_ZPPFM008",
  3554. sapResult.ZMSG,
  3555. ex.ToString(),
  3556. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  3557. }
  3558. return sapResult;
  3559. }
  3560. /// <summary>
  3561. /// 成品明细(条码接口)
  3562. /// </summary>
  3563. /// <param name="user"></param>
  3564. public static ZPPFM010Response HGSAPDK_ZPPFM010(Zppfm010 sapParameter, string yyyymmdd, string SPANAME = "")
  3565. {
  3566. ZPPFM010Response sapResult = null;
  3567. try
  3568. {
  3569. using (ZPPFM010Client sapClient = new ZPPFM010Client("ZPPFM010_BIND" + SPANAME))
  3570. {
  3571. // 登录
  3572. UserNamePasswordClientCredential credential =
  3573. sapClient.ClientCredentials.UserName;
  3574. //credential.UserName = "hgsapdk";
  3575. //credential.Password = "Sapdk#240";
  3576. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  3577. credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName");
  3578. credential.Password = ini.ReadIniData("SAP_HEGII", "Password");
  3579. // 参数
  3580. sapParameter.ZSUMSpecified = true;
  3581. sapParameter.TABLE_OUT = new ZSPP110[0];
  3582. // 接口
  3583. sapResult = sapClient.ZPPFM010(sapParameter);
  3584. if (sapResult.ZTYPE == "S")
  3585. {
  3586. // 结果
  3587. OutputLog.TraceLog(LogPriority.Information,
  3588. "HGSAPDK_ZPPFM010",
  3589. "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM,
  3590. " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  3591. LocalPath.LogExePath + "SAP_HEGII\\Info_");
  3592. }
  3593. else
  3594. {
  3595. foreach (ZSPP110 item in sapResult.TABLE_OUT)
  3596. {
  3597. if (!string.IsNullOrWhiteSpace(item.ZMSG))
  3598. {
  3599. sapResult.ZMSG += $"[{item.ZMSG}]";
  3600. break;
  3601. }
  3602. }
  3603. // 结果
  3604. OutputLog.TraceLog(LogPriority.Information,
  3605. "HGSAPDK_ZPPFM010",
  3606. "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM + " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  3607. JsonHelper.ToJson(sapResult),
  3608. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  3609. }
  3610. }
  3611. }
  3612. catch (Exception ex)
  3613. {
  3614. sapResult = new ZPPFM010Response();
  3615. sapResult.ZTYPE = "E";
  3616. sapResult.ZMSG = ex.Message;
  3617. //if (ex is System.ServiceModel.FaultException)
  3618. //{
  3619. // sapResult.ZMSG = ex.Message;
  3620. //}
  3621. //else
  3622. //{
  3623. // sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid();
  3624. //}
  3625. OutputLog.TraceLog(LogPriority.Error,
  3626. "HGSAPDK_ZPPFM010",
  3627. sapResult.ZMSG,
  3628. ex.ToString(),
  3629. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  3630. }
  3631. return sapResult;
  3632. }
  3633. #region 测试240
  3634. /// <summary>
  3635. /// 同步成品条码(手动)-测试
  3636. /// </summary>
  3637. /// <param name="date"></param>
  3638. /// <param name="userid"></param>
  3639. /// <returns></returns>
  3640. public static ServiceResultEntity SetFP60_240(DateTime date, int userid)
  3641. {
  3642. /*
  3643. Zppfm008 sapParameter1 = new Zppfm008();
  3644. sapParameter1.Zsum = 0;
  3645. sapParameter1.TableIn = new Zspp100[0];
  3646. Zppfm010 sapParameter2 = new Zppfm010();
  3647. sapParameter2.ZSUM = 30;
  3648. sapParameter2.TABLE_IN = new ZSPP110[30];
  3649. for (int i = 0; i < 10; i++)
  3650. {
  3651. ZSPP110 info110 = new ZSPP110();
  3652. // 时间戳
  3653. info110.ZSCNU = "20170101";
  3654. // 工厂
  3655. info110.WERKS = "5020";
  3656. // 生产条码
  3657. info110.ZSCTM = "20170101" + i.ToString().PadLeft(3, '0');
  3658. // 包装条码
  3659. info110.ZBZTM = "CT127PD2110B0150" + info110.ZSCTM + "1";
  3660. // 产品编码
  3661. info110.ZCPBM = "H0112L";
  3662. // 物料编号
  3663. info110.MATNR = "CT127PD2110B01";
  3664. // 包装整板标识
  3665. info110.ZBZBS = "1-1-1";
  3666. // 重新绑定标识
  3667. info110.ZCXBD = "X";
  3668. // 销售凭证
  3669. info110.KDAUF = "1200032630";
  3670. // 销售凭证项目
  3671. info110.KDPOS = "10";
  3672. sapParameter2.TABLE_IN[i] = info110;
  3673. }
  3674. for (int i = 10; i < 20; i++)
  3675. {
  3676. ZSPP110 info110 = new ZSPP110();
  3677. // 时间戳
  3678. info110.ZSCNU = "20170101";
  3679. // 工厂
  3680. info110.WERKS = "5020";
  3681. // 生产条码
  3682. info110.ZSCTM = "20170101" + i.ToString().PadLeft(3, '0');
  3683. // 包装条码
  3684. info110.ZBZTM = "CT127PD2110B0150" + info110.ZSCTM + "1";
  3685. // 产品编码
  3686. info110.ZCPBM = "H0112L";
  3687. // 物料编号
  3688. info110.MATNR = "CT127PD2110B01";
  3689. // 包装整板标识
  3690. info110.ZBZBS = "1-1-1";
  3691. // 重新绑定标识
  3692. info110.ZCXBD = "";
  3693. // 销售凭证
  3694. info110.KDAUF = "1200030151";
  3695. // 销售凭证项目
  3696. info110.KDPOS = "10";
  3697. sapParameter2.TABLE_IN[i] = info110;
  3698. }
  3699. for (int i = 20; i < 30; i++)
  3700. {
  3701. ZSPP110 info110 = new ZSPP110();
  3702. // 时间戳
  3703. info110.ZSCNU = "20170101";
  3704. // 工厂
  3705. info110.WERKS = "5020";
  3706. // 生产条码
  3707. info110.ZSCTM = "20170101" + i.ToString().PadLeft(3, '0');
  3708. // 包装条码
  3709. info110.ZBZTM = "CT967ES2210N0150" + info110.ZSCTM + "1";
  3710. // 产品编码
  3711. info110.ZCPBM = "H0112L";
  3712. // 物料编号
  3713. info110.MATNR = "CT967ES2210N01";
  3714. // 包装整板标识
  3715. info110.ZBZBS = "1-1-1";
  3716. // 重新绑定标识
  3717. info110.ZCXBD = "";
  3718. // 销售凭证
  3719. info110.KDAUF = "1200032678";
  3720. // 销售凭证项目
  3721. info110.KDPOS = "10";
  3722. sapParameter2.TABLE_IN[i] = info110;
  3723. }
  3724. */
  3725. //HGSAPDK_ZPPFM008(sapParameter1, date.ToString("yyyyMMdd"), "800");
  3726. //HGSAPDK_ZPPFM008_240(sapParameter1, date.ToString("yyyyMMdd"), "240");
  3727. //HGSAPDK_ZPPFM010(sapParameter2, date.ToString("yyyyMMdd"));
  3728. //ZPPFM010Response result1 = HGSAPDK_ZPPFM010_240(sapParameter2, date.ToString("yyyyMMdd"));
  3729. //foreach (ZSPP110 item in result1.TABLE_OUT)
  3730. //{
  3731. // if (item.ZTYPE != "S" && !string.IsNullOrWhiteSpace(item.ZMSG))
  3732. // {
  3733. // OutputLog.TraceLog(LogPriority.Information,
  3734. // "HGSAPDK_ZPPFM010_240", JsonHelper.ToJson(item),
  3735. // "Ztype:" + item.ZTYPE + " Zmsg:" + item.ZMSG,
  3736. // LocalPath.LogExePath + "SAP_HEGII\\Info_");
  3737. // }
  3738. //}
  3739. //return new ServiceResultEntity();
  3740. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3741. ServiceResultEntity sre = new ServiceResultEntity();
  3742. date = new DateTime(2021, 12, 8);
  3743. DateTime dateend = date;
  3744. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  3745. string EndDate6001 = ini.ReadIniData("SAP_HEGII", "EndDate6001");
  3746. DateTime end = DateTime.Now.Date.AddDays(-1);
  3747. if (!string.IsNullOrWhiteSpace(EndDate6001))
  3748. {
  3749. end = DateTime.ParseExact(EndDate6001, "yyyy-MM-dd", null);
  3750. }
  3751. try
  3752. {
  3753. //string sqlString =
  3754. // "select fp.yyyymmdd\n" +
  3755. // " ,fp.workcode\n" +
  3756. // " ,fp.barcode\n" +
  3757. // " ,fp.outcode\n" +
  3758. // " ,fp.goodscode\n" +
  3759. // " ,fp.sapcode\n" +
  3760. // " ,fp.sapflbatchno\n" +
  3761. // " ,fp.sapfhundoflag\n" +
  3762. // " from tsap_hegii_finishedproduct fp where fp.logid = :datalogid";
  3763. string sqlString = "select to_char(fp.fhtime, 'yyyymmdd') yyyymmdd\n" +
  3764. " ,aa.workcode workcode\n" +
  3765. " ,fp.barcode\n" +
  3766. " ,case when length(gdd.onlycode) = 7 then gdd.materialcode || 'FF' || gdd.onlycode else nvl(gdd.outlabelcode\n" +
  3767. " ,(gdd.materialcode || aa.workcode || gdd.onlycode)) end outcode\n" +
  3768. " ,gdd.goodscode\n" +
  3769. " ,nvl(gdd.materialcode, nvl(g.materialcode, g.goodscode)) sapcode\n" +
  3770. " ,nvl(fp.finishedloadbatchno, fp.fhbatchno) sapflbatchno\n" +
  3771. " ,' ' sapfhundoflag\n" +
  3772. " ,gdd.securitycode\n" +
  3773. " from tp_pm_finishedproduct fp\n" +
  3774. " inner join tp_pm_groutingdailydetail gdd\n" +
  3775. " on gdd.barcode = fp.barcode\n" +
  3776. " inner join tp_mst_goods g\n" +
  3777. " on g.goodsid = gdd.goodsid\n" +
  3778. " inner join tp_mst_account aa\n" +
  3779. " on aa.accountid = gdd.accountid\n" +
  3780. " where fp.fhtime >= :v_datebegin\n" +
  3781. " and fp.fhtime < :v_dateend\n" +
  3782. " and gdd.securitycode is not null\n" +
  3783. " and rownum < 101\n" +
  3784. " order by fp.fhtime,fp.barcode";
  3785. while (date <= end)
  3786. {
  3787. dateend = date.AddDays(1);
  3788. OracleParameter[] oracleParameter = new OracleParameter[]
  3789. {
  3790. new OracleParameter(":v_datebegin",OracleDbType.Date, date, ParameterDirection.Input),
  3791. new OracleParameter(":v_dateend",OracleDbType.Date, dateend, ParameterDirection.Input),
  3792. };
  3793. DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  3794. // 单次传输最大条数
  3795. int maxCount = 10000;
  3796. List<Zppfm010> sapParameterList = new List<Zppfm010>();
  3797. if (fpData != null && fpData.Rows.Count > 0)
  3798. {
  3799. int index = 0;
  3800. List<ZSPP110> tableInList = new List<ZSPP110>();
  3801. foreach (DataRow item in fpData.Rows)
  3802. {
  3803. if (index >= maxCount)
  3804. {
  3805. Zppfm010 sapItem = new Zppfm010();
  3806. sapItem.ZSUM = tableInList.Count;
  3807. sapItem.TABLE_IN = tableInList.ToArray();
  3808. sapParameterList.Add(sapItem);
  3809. index = 0;
  3810. tableInList.Clear();
  3811. }
  3812. ZSPP110 info110 = new ZSPP110();
  3813. // 时间戳
  3814. info110.ZSCNU = item["yyyymmdd"].ToString();
  3815. // 工厂
  3816. info110.WERKS = item["workcode"].ToString();
  3817. // 生产条码
  3818. info110.ZSCTM = item["barcode"].ToString();
  3819. // 包装条码
  3820. info110.ZBZTM = item["outcode"].ToString();
  3821. //生产防伪码 xuwei add 2021-12-09
  3822. info110.SECURITYCODE = item["securitycode"].ToString();
  3823. // 产品编码
  3824. info110.ZCPBM = item["goodscode"].ToString();
  3825. // 物料编号
  3826. info110.MATNR = item["sapcode"].ToString();
  3827. // 包装整板标识
  3828. info110.ZBZBS = item["sapflbatchno"].ToString();
  3829. // 重新绑定标识
  3830. info110.ZCXBD = item["sapfhundoflag"].ToString();
  3831. if (info110.WERKS == "5011" && info110.ZCPBM == "K047L")
  3832. {
  3833. continue;
  3834. }
  3835. tableInList.Add(info110);
  3836. index++;
  3837. }
  3838. Zppfm010 sapParameter = new Zppfm010();
  3839. sapParameter.ZSUM = tableInList.Count;
  3840. sapParameter.TABLE_IN = tableInList.ToArray();
  3841. sapParameterList.Add(sapParameter);
  3842. index = 0;
  3843. tableInList.Clear();
  3844. }
  3845. else
  3846. {
  3847. Zppfm010 sapParameter = new Zppfm010();
  3848. sapParameter.ZSUM = 0;
  3849. sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM];
  3850. sapParameterList.Add(sapParameter);
  3851. }
  3852. int indexP = 0;
  3853. int ccc = sapParameterList.Count;
  3854. foreach (Zppfm010 sapParameter in sapParameterList)
  3855. //for (int i = 80; i < ccc; i++)
  3856. {
  3857. //Zppfm010 sapParameter = sapParameterList[i];
  3858. ZPPFM010Response result = HGSAPDK_ZPPFM010_240(sapParameter, date.ToString("yyyyMMdd") + " " + (++indexP) + "/" + ccc);
  3859. //Zppfm010Response result = HGSAPDK_ZPPFM010(sapParameter, "2018 " + (i) + "/" + ccc);
  3860. sre.Message = result.ZMSG;
  3861. sre.Result = result.ZTYPE;
  3862. if (result.ZTYPE != "S")
  3863. {
  3864. foreach (ZSPP110 item in result.TABLE_OUT)
  3865. {
  3866. if (item.ZTYPE != "S" && !string.IsNullOrWhiteSpace(item.ZMSG))
  3867. {
  3868. OutputLog.TraceLog(LogPriority.Information,
  3869. "HGSAPDK_ZPPFM010", JsonHelper.ToJson(item),
  3870. "Ztype:" + item.ZTYPE + " Zmsg:" + item.ZMSG,
  3871. LocalPath.LogExePath + "SAP_HEGII\\Info_");
  3872. }
  3873. }
  3874. return sre;
  3875. }
  3876. }
  3877. date = dateend;
  3878. }
  3879. oracleConn.Commit();
  3880. //sre.Message = result.Zmsg;
  3881. //sre.Result = result.Ztype;
  3882. return sre;
  3883. }
  3884. catch (Exception ex)
  3885. {
  3886. throw ex;
  3887. }
  3888. finally
  3889. {
  3890. if (oracleConn != null &&
  3891. oracleConn.ConnState == ConnectionState.Open)
  3892. {
  3893. oracleConn.Disconnect();
  3894. }
  3895. }
  3896. }
  3897. /// <summary>
  3898. /// 产量接口-测试
  3899. /// </summary>
  3900. /// <param name="sapParameter"></param>
  3901. /// <returns></returns>
  3902. public static ZPPFM008Response HGSAPDK_ZPPFM008_240(Zppfm008 sapParameter, string yyyymmdd, string datacode, string SPANAME = "")
  3903. {
  3904. ZPPFM008Response sapResult = null;
  3905. try
  3906. {
  3907. using (ZPPFM008Client sapClient = new ZPPFM008Client("ZPPFM008_BIND_240" + SPANAME))
  3908. {
  3909. // 登录
  3910. UserNamePasswordClientCredential credential =
  3911. sapClient.ClientCredentials.UserName;
  3912. credential.UserName = "hgsapdk";
  3913. credential.Password = "Sapdk#240";
  3914. // 参数
  3915. sapParameter.ZSUMSpecified = true;
  3916. sapParameter.TABLE_OUT = new ZSPP100[0];
  3917. // 接口
  3918. sapResult = sapClient.ZPPFM008(sapParameter);
  3919. // 结果
  3920. OutputLog.TraceLog(LogPriority.Information,
  3921. "HGSAPDK_ZPPFM008_240",
  3922. "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM,
  3923. "Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  3924. LocalPath.LogExePath + "SAP_HEGII\\Info_");
  3925. }
  3926. }
  3927. catch (Exception ex)
  3928. {
  3929. sapResult = new ZPPFM008Response();
  3930. sapResult.ZTYPE = "E";
  3931. if (ex is System.ServiceModel.FaultException)
  3932. {
  3933. sapResult.ZMSG = ex.Message;
  3934. }
  3935. else
  3936. {
  3937. sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid();
  3938. }
  3939. OutputLog.TraceLog(LogPriority.Error,
  3940. "HGSAPDK_ZPPFM008_240",
  3941. sapResult.ZMSG,
  3942. ex.ToString(),
  3943. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  3944. }
  3945. return sapResult;
  3946. }
  3947. /// <summary>
  3948. /// 成品明细(条码接口)-测试
  3949. /// </summary>
  3950. /// <param name="user"></param>
  3951. public static ZPPFM010Response HGSAPDK_ZPPFM010_240(Zppfm010 sapParameter, string yyyymmdd, string SPANAME = "")
  3952. {
  3953. ZPPFM010Response sapResult = null;
  3954. try
  3955. {
  3956. using (ZPPFM010Client sapClient = new ZPPFM010Client("ZPPFM010_BIND_240" + SPANAME))
  3957. {
  3958. // 登录
  3959. UserNamePasswordClientCredential credential =
  3960. sapClient.ClientCredentials.UserName;
  3961. credential.UserName = "hgsapdk";
  3962. credential.Password = "Sapdk#240";
  3963. // 参数
  3964. sapParameter.ZSUMSpecified = true;
  3965. sapParameter.TABLE_OUT = new ZSPP110[0];
  3966. // 接口
  3967. sapResult = sapClient.ZPPFM010(sapParameter);
  3968. // 结果
  3969. OutputLog.TraceLog(LogPriority.Information,
  3970. "HGSAPDK_ZPPFM010_240",
  3971. "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM,
  3972. "Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  3973. LocalPath.LogExePath + "SAP_HEGII\\Info_");
  3974. }
  3975. }
  3976. catch (Exception ex)
  3977. {
  3978. sapResult = new ZPPFM010Response();
  3979. sapResult.ZTYPE = "E";
  3980. if (ex is System.ServiceModel.FaultException)
  3981. {
  3982. sapResult.ZMSG = ex.Message;
  3983. }
  3984. else
  3985. {
  3986. sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid();
  3987. }
  3988. OutputLog.TraceLog(LogPriority.Error,
  3989. "HGSAPDK_ZPPFM010_240",
  3990. sapResult.ZMSG,
  3991. ex.ToString(),
  3992. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  3993. }
  3994. return sapResult;
  3995. }
  3996. #endregion
  3997. #region 测试800
  3998. /// <summary>
  3999. /// 同步成品条码(手动)-测试
  4000. /// </summary>
  4001. /// <param name="date"></param>
  4002. /// <param name="userid"></param>
  4003. /// <returns></returns>
  4004. public static ServiceResultEntity SetFP60_800(DateTime date, int userid)
  4005. {
  4006. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4007. ServiceResultEntity sre = new ServiceResultEntity();
  4008. date = new DateTime(2018, 7, 1);
  4009. DateTime dateend = date;
  4010. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
  4011. //string EndDate6001 = ini.ReadIniData("SAP_HEGII", "EndDate6001");
  4012. DateTime end = new DateTime(2018, 12, 10);
  4013. //if (!string.IsNullOrWhiteSpace(EndDate6001))
  4014. //{
  4015. // end = DateTime.ParseExact(EndDate6001, "yyyy-MM-dd", null);
  4016. //}
  4017. try
  4018. {
  4019. string sqlString =
  4020. //"INSERT INTO tsap_hegii_finishedproduct\n" +
  4021. //" (yyyymmdd\n" +
  4022. //" ,workcode\n" +
  4023. //" ,barcode\n" +
  4024. //" ,outcode\n" +
  4025. //" ,goodscode\n" +
  4026. //" ,sapcode\n" +
  4027. //" ,sapflbatchno\n" +
  4028. //" ,sapfhundoflag\n" +
  4029. //" ,ordercode\n" +
  4030. //" ,orderitem, LOGID)\n" +
  4031. " SELECT :yyyymmdd yyyymmdd\n" +
  4032. " ,:workcode workcode\n" +
  4033. " ,bar.barcode\n" +
  4034. " ,case when length(gdd.onlycode) = 7 then gdd.materialcode || 'FF' || gdd.onlycode else nvl(gdd.outlabelcode\n" +
  4035. " ,(gdd.materialcode || :workcode || gdd.onlycode)) end outcode\n" +
  4036. //" ,nvl(gdd.outlabelcode, (g.materialcode || :workcode || gdd.onlycode)) outcode\n" +
  4037. " ,gdd.goodscode\n" +
  4038. " ,nvl(gdd.materialcode, nvl(g.materialcode, g.goodscode)) sapcode\n" +
  4039. " ,nvl(bar.finishedloadbatchno, bar.fhbatchno) sapflbatchno\n" +
  4040. " ,' ' sapfhundoflag\n" +
  4041. " ,CASE\n" +
  4042. " WHEN o.orderid IS NULL\n" +
  4043. " OR o.orderno LIKE 'HEGII%' THEN\n" +
  4044. " NULL\n" +
  4045. " WHEN instr(o.orderno, '/') = 0 THEN\n" +
  4046. " to_char(o.orderno)\n" +
  4047. " ELSE\n" +
  4048. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  4049. " END ordercode -- 销售凭证\n" +
  4050. " ,CASE\n" +
  4051. " WHEN o.orderid IS NULL\n" +
  4052. " OR o.orderno LIKE 'HEGII%'\n" +
  4053. " OR instr(o.orderno, '/') = 0 THEN\n" +
  4054. " '0'\n" +
  4055. " WHEN instr(o.orderno, '#') = 0 THEN\n" +
  4056. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  4057. " ELSE\n" +
  4058. " to_char(substr(o.orderno\n" +
  4059. " ,instr(o.orderno, '/') + 1\n" +
  4060. " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  4061. " END orderitem -- 销售凭证项目\n" +
  4062. " ,:LOGID\n" +
  4063. " FROM tp_pm_finishedproduct bar\n" +
  4064. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  4065. " ON gdd.barcode = bar.barcode\n" +
  4066. " INNER JOIN tp_mst_goods g\n" +
  4067. " ON g.goodsid = gdd.goodsid\n" +
  4068. " LEFT JOIN tp_pm_order o\n" +
  4069. " ON o.orderid = bar.fhorderid\n" +
  4070. " where bar.fhtime >= :v_datebegin\n" +
  4071. " and bar.fhtime < :v_dateend\n" +
  4072. " and nvl(gdd.materialcode, g.materialcode) in ( 'CT968EN4100B01','CT968EN2100B01')" +
  4073. " order by bar.fhtime,bar.finishedloadbatchno, bar.fhbatchno,bar.barcode";
  4074. //OracleParameter [] oracleParameter = new OracleParameter[]
  4075. //{
  4076. // new OracleParameter(":yyyymmdd", date.ToString("yyyyMMdd")),
  4077. // new OracleParameter(":workcode", "5020"),
  4078. // new OracleParameter(":v_datebegin", date),
  4079. // new OracleParameter(":v_dateend", end),
  4080. // new OracleParameter(":LOGID", 0)
  4081. //};
  4082. //DataTable fhData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  4083. while (date < end)
  4084. {
  4085. dateend = date.AddMonths(1);
  4086. if (dateend > end)
  4087. {
  4088. dateend = end;
  4089. }
  4090. OracleParameter[] oracleParameter = new OracleParameter[]
  4091. {
  4092. new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, date.ToString("yyyyMMdd"), ParameterDirection.Input),
  4093. new OracleParameter(":workcode",OracleDbType.Varchar2, "5020", ParameterDirection.Input),
  4094. new OracleParameter(":LOGID",OracleDbType.Int32, 0, ParameterDirection.Input),
  4095. new OracleParameter(":v_datebegin",OracleDbType.Date, date, ParameterDirection.Input),
  4096. new OracleParameter(":v_dateend",OracleDbType.Date, dateend, ParameterDirection.Input),
  4097. };
  4098. DataTable fpData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  4099. // 单次传输最大条数
  4100. int maxCount = 10000;
  4101. List<Zppfm010> sapParameterList = new List<Zppfm010>();
  4102. if (fpData != null && fpData.Rows.Count > 0)
  4103. {
  4104. int index = 0;
  4105. List<ZSPP110> tableInList = new List<ZSPP110>();
  4106. foreach (DataRow item in fpData.Rows)
  4107. {
  4108. if (index >= maxCount)
  4109. {
  4110. Zppfm010 sapItem = new Zppfm010();
  4111. sapItem.ZSUM = tableInList.Count;
  4112. sapItem.TABLE_IN = tableInList.ToArray();
  4113. sapParameterList.Add(sapItem);
  4114. index = 0;
  4115. tableInList.Clear();
  4116. }
  4117. ZSPP110 info110 = new ZSPP110();
  4118. // 时间戳
  4119. info110.ZSCNU = item["yyyymmdd"].ToString();
  4120. // 工厂
  4121. info110.WERKS = item["workcode"].ToString();
  4122. // 生产条码
  4123. info110.ZSCTM = item["barcode"].ToString();
  4124. // 包装条码
  4125. info110.ZBZTM = item["outcode"].ToString();
  4126. // 产品编码
  4127. info110.ZCPBM = item["goodscode"].ToString();
  4128. // 物料编号
  4129. info110.MATNR = item["sapcode"].ToString();
  4130. // 包装整板标识
  4131. info110.ZBZBS = item["sapflbatchno"].ToString();
  4132. // 重新绑定标识
  4133. info110.ZCXBD = item["sapfhundoflag"].ToString();
  4134. // 销售凭证
  4135. //info110.KDAUF = item["ordercode"].ToString();
  4136. // 销售凭证项目
  4137. info110.KDPOS = "0";//item["orderitem"].ToString();
  4138. info110.UZEIT = "00:00:00";//date.ToString("HH:mm:ss");
  4139. //info110.ZCODEN = "";
  4140. //info110.ZCODEYZM = "";
  4141. tableInList.Add(info110);
  4142. index++;
  4143. }
  4144. Zppfm010 sapParameter = new Zppfm010();
  4145. sapParameter.ZSUM = tableInList.Count;
  4146. sapParameter.TABLE_IN = tableInList.ToArray();
  4147. sapParameterList.Add(sapParameter);
  4148. index = 0;
  4149. tableInList.Clear();
  4150. }
  4151. else
  4152. {
  4153. Zppfm010 sapParameter = new Zppfm010();
  4154. sapParameter.ZSUM = 0;
  4155. sapParameter.TABLE_IN = new ZSPP110[sapParameter.ZSUM];
  4156. sapParameterList.Add(sapParameter);
  4157. }
  4158. int indexP = 0;
  4159. int ccc = sapParameterList.Count;
  4160. foreach (Zppfm010 sapParameter in sapParameterList)
  4161. //for (int i = 80; i < ccc; i++)
  4162. {
  4163. //Zppfm010 sapParameter = sapParameterList[i];
  4164. ZPPFM010Response result = HGSAPDK_ZPPFM010_800(sapParameter, date.ToString("yyyyMMdd") + " " + (++indexP) + "/" + ccc);
  4165. //Zppfm010Response result = HGSAPDK_ZPPFM010(sapParameter, "2018 " + (i) + "/" + ccc);
  4166. sre.Message = result.ZMSG;
  4167. sre.Result = result.ZTYPE;
  4168. if (result.ZTYPE != "S")
  4169. {
  4170. //foreach (ZSPP110 item in result.TABLE_OUT)
  4171. //{
  4172. // if (item.ZTYPE != "S" && !string.IsNullOrWhiteSpace(item.ZMSG))
  4173. // {
  4174. // OutputLog.TraceLog(LogPriority.Information,
  4175. // "HGSAPDK_ZPPFM010", JsonHelper.ToJson(item),
  4176. // "Ztype:" + item.ZTYPE + " Zmsg:" + item.ZMSG,
  4177. // LocalPath.LogExePath + "SAP_HEGII\\Info_");
  4178. // }
  4179. //}
  4180. return sre;
  4181. }
  4182. }
  4183. date = dateend;
  4184. }
  4185. oracleConn.Commit();
  4186. //sre.Message = result.Zmsg;
  4187. //sre.Result = result.Ztype;
  4188. return sre;
  4189. }
  4190. catch (Exception ex)
  4191. {
  4192. throw ex;
  4193. }
  4194. finally
  4195. {
  4196. if (oracleConn != null &&
  4197. oracleConn.ConnState == ConnectionState.Open)
  4198. {
  4199. oracleConn.Disconnect();
  4200. }
  4201. }
  4202. }
  4203. /// <summary>
  4204. /// 产量接口-测试
  4205. /// </summary>
  4206. /// <param name="sapParameter"></param>
  4207. /// <returns></returns>
  4208. private static ZPPFM008Response HGSAPDK_ZPPFM008_800(Zppfm008 sapParameter, string yyyymmdd, string datacode)
  4209. {
  4210. ZPPFM008Response sapResult = null;
  4211. try
  4212. {
  4213. using (ZPPFM008Client sapClient = new ZPPFM008Client("ZPPFM008_BIND_800"))
  4214. {
  4215. // 登录
  4216. UserNamePasswordClientCredential credential =
  4217. sapClient.ClientCredentials.UserName;
  4218. credential.UserName = "hgsapdk";
  4219. credential.Password = "Prddk209";
  4220. // 参数
  4221. sapParameter.ZSUMSpecified = true;
  4222. sapParameter.TABLE_OUT = new ZSPP100[0];
  4223. // 接口
  4224. sapResult = sapClient.ZPPFM008(sapParameter);
  4225. // 结果
  4226. OutputLog.TraceLog(LogPriority.Information,
  4227. "HGSAPDK_ZPPFM008_800",
  4228. "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM,
  4229. "Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  4230. LocalPath.LogExePath + "SAP_HEGII\\Info_");
  4231. }
  4232. }
  4233. catch (Exception ex)
  4234. {
  4235. sapResult = new ZPPFM008Response();
  4236. sapResult.ZTYPE = "E";
  4237. if (ex is System.ServiceModel.FaultException)
  4238. {
  4239. sapResult.ZMSG = ex.Message;
  4240. }
  4241. else
  4242. {
  4243. sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid();
  4244. }
  4245. OutputLog.TraceLog(LogPriority.Error,
  4246. "HGSAPDK_ZPPFM008_800",
  4247. sapResult.ZMSG,
  4248. ex.ToString(),
  4249. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4250. }
  4251. return sapResult;
  4252. }
  4253. /// <summary>
  4254. /// 成品明细(条码接口)-测试
  4255. /// </summary>
  4256. /// <param name="user"></param>
  4257. private static ZPPFM010Response HGSAPDK_ZPPFM010_800(Zppfm010 sapParameter, string yyyymmdd)
  4258. {
  4259. ZPPFM010Response sapResult = null;
  4260. try
  4261. {
  4262. using (ZPPFM010Client sapClient = new ZPPFM010Client("ZPPFM010_BIND_800"))
  4263. {
  4264. // 登录
  4265. UserNamePasswordClientCredential credential =
  4266. sapClient.ClientCredentials.UserName;
  4267. credential.UserName = "hgsapdk";
  4268. credential.Password = "Prddk209";
  4269. // 参数
  4270. sapParameter.ZSUMSpecified = true;
  4271. sapParameter.TABLE_OUT = new ZSPP110[0];
  4272. // 接口
  4273. sapResult = sapClient.ZPPFM010(sapParameter);
  4274. // 结果
  4275. OutputLog.TraceLog(LogPriority.Information,
  4276. "HGSAPDK_ZPPFM010_800",
  4277. "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM,
  4278. "Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  4279. LocalPath.LogExePath + "SAP_HEGII\\Info_");
  4280. if (sapResult.ZTYPE == "S")
  4281. {
  4282. // 结果
  4283. //OutputLog.TraceLog(LogPriority.Information,
  4284. // "HGSAPDK_ZPPFM010_800",
  4285. // "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM,
  4286. // " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  4287. // LocalPath.LogExePath + "SAP_HEGII\\Info_");
  4288. }
  4289. else
  4290. {
  4291. // 结果
  4292. OutputLog.TraceLog(LogPriority.Information,
  4293. "HGSAPDK_ZPPFM010_800",
  4294. "yyyymmdd:" + yyyymmdd + " Zsum:" + sapParameter.ZSUM + " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  4295. JsonHelper.ToJson(sapResult),
  4296. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4297. }
  4298. }
  4299. }
  4300. catch (Exception ex)
  4301. {
  4302. sapResult = new ZPPFM010Response();
  4303. sapResult.ZTYPE = "E";
  4304. if (ex is System.ServiceModel.FaultException)
  4305. {
  4306. sapResult.ZMSG = ex.Message;
  4307. }
  4308. else
  4309. {
  4310. sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid();
  4311. }
  4312. OutputLog.TraceLog(LogPriority.Error,
  4313. "HGSAPDK_ZPPFM010_800",
  4314. sapResult.ZMSG,
  4315. ex.ToString(),
  4316. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4317. }
  4318. return sapResult;
  4319. }
  4320. /// <summary>
  4321. /// 产量接口
  4322. /// </summary>
  4323. /// <param name="sapParameter"></param>
  4324. /// <returns></returns>
  4325. public static ZPPFM008Response HGSAPDK_HGSAPDK_ZPPFM008(Zppfm008 sapParameter, string yyyymmdd, string datacode)
  4326. {
  4327. ZPPFM008Response sapResult = null;
  4328. try
  4329. {
  4330. using (ZPPFM008Client sapClient = new ZPPFM008Client("ZPPFM008_BIND"))
  4331. {
  4332. // 登录
  4333. UserNamePasswordClientCredential credential =
  4334. sapClient.ClientCredentials.UserName;
  4335. credential.UserName = "hgsapdk";
  4336. credential.Password = "Prddk209";
  4337. // INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  4338. //credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName");
  4339. //credential.Password = ini.ReadIniData("SAP_HEGII", "Password");
  4340. // 参数
  4341. sapParameter.ZSUMSpecified = true;
  4342. sapParameter.TABLE_OUT = new ZSPP100[0];
  4343. // 接口
  4344. sapResult = sapClient.ZPPFM008(sapParameter);
  4345. if (sapResult.ZTYPE == "S")
  4346. {
  4347. // 结果
  4348. OutputLog.TraceLog(LogPriority.Information,
  4349. "HGSAPDK_ZPPFM008",
  4350. "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM,
  4351. " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  4352. LocalPath.LogExePath + "SAP_HEGII\\Info_");
  4353. }
  4354. else
  4355. {
  4356. foreach (ZSPP100 item in sapResult.TABLE_OUT)
  4357. {
  4358. if (!string.IsNullOrWhiteSpace(item.ZMSG))
  4359. {
  4360. sapResult.ZMSG += $"[{item.ZMSG}]";
  4361. break;
  4362. }
  4363. }
  4364. // 结果
  4365. OutputLog.TraceLog(LogPriority.Information,
  4366. "HGSAPDK_ZPPFM008",
  4367. "yyyymmdd:" + yyyymmdd + " datacode:" + datacode + " Zsum:" + sapParameter.ZSUM + " Ztype:" + sapResult.ZTYPE + " Zmsg:" + sapResult.ZMSG,
  4368. JsonHelper.ToJson(sapResult),
  4369. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4370. }
  4371. }
  4372. }
  4373. catch (Exception ex)
  4374. {
  4375. sapResult = new ZPPFM008Response();
  4376. sapResult.ZTYPE = "E";
  4377. if (ex is System.ServiceModel.FaultException)
  4378. {
  4379. sapResult.ZMSG = ex.Message;
  4380. }
  4381. else
  4382. {
  4383. sapResult.ZMSG = "DKMES-ERROR:" + Guid.NewGuid();
  4384. }
  4385. OutputLog.TraceLog(LogPriority.Error,
  4386. "HGSAPDK_ZPPFM008",
  4387. sapResult.ZMSG,
  4388. ex.ToString(),
  4389. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4390. }
  4391. return sapResult;
  4392. }
  4393. /// <summary>
  4394. /// 同步SAP接口
  4395. /// </summary>
  4396. /// <param name="date"></param>
  4397. /// <param name="datacode"></param>
  4398. /// <param name="userid"></param>
  4399. /// <param name="logid"></param>
  4400. /// <returns></returns>
  4401. public static ServiceResultEntity HGSAPDK_SyncSap(DateTime date, string datacode, int userid, int logid)
  4402. {
  4403. ServiceResultEntity sre = new ServiceResultEntity();
  4404. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4405. try
  4406. {
  4407. OracleParameter[] paras = null;
  4408. string sqlString = string.Empty;
  4409. sqlString = "select workcode from tp_mst_account where rownum = 1";
  4410. string workcode = oracleConn.GetSqlResultToStr(sqlString);
  4411. string yyyymmdd = "20211130";//date.ToString("yyyyMMdd");
  4412. int r = 0;
  4413. //// 查询出当前日志外,最新的一次日志
  4414. //sqlString = "SELECT t.executedateend\n" +
  4415. // " FROM (SELECT dl.executedateend\n" +
  4416. // " FROM tsap_hegii_datalog dl\n" +
  4417. // " WHERE dl.logtype = '3'\n" +
  4418. // " AND dl.datastuts = 'S'\n" +
  4419. // " AND dl.datacode = :datacode\n" +
  4420. // " AND dl.logid <> :logid\n" +
  4421. // " ORDER BY dl.executedateend DESC) t\n" +
  4422. // " WHERE rownum = 1";
  4423. //paras = new OracleParameter[]
  4424. //{
  4425. // new OracleParameter(":datacode", datacode),
  4426. // new OracleParameter(":logid", logid)
  4427. //};
  4428. //object executedateend = oracleConn.GetSqlResultToObj(sqlString, paras);
  4429. //if (executedateend == null || Convert.ToDateTime(executedateend) >= date)
  4430. //{
  4431. // sre.Result = "W";
  4432. // sre.Message = "当前日志的结束时间小于最新日志的结束时间,不能同步";
  4433. // return sre;
  4434. //}
  4435. sqlString = "SELECT wd.yyyymmdd\n" +
  4436. " ,wd.workcode\n" +
  4437. " ,wd.datacode\n" +
  4438. " ,wd.goodscode\n" +
  4439. " ,wd.sapcode\n" +
  4440. " ,wd.usercode\n" +
  4441. " ,wd.ordercode\n" +
  4442. " ,wd.orderitem\n" +
  4443. " ,wd.outputnum\n" +
  4444. " ,wd.scrapnum\n" +
  4445. " ,wd.cleanupnum\n" +
  4446. " ,wd.recoverynum\n" +
  4447. " ,wd.repairnum\n" +
  4448. " ,wd.testmouldflag\n" +
  4449. " ,wd.zscs\n" +
  4450. " FROM tsap_hegii_workdata wd\n" +
  4451. " WHERE wd.logid = :logid";
  4452. paras = new OracleParameter[]
  4453. {
  4454. new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input),
  4455. };
  4456. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  4457. Zppfm008 sapParameter = new Zppfm008();
  4458. if (workData != null && workData.Rows.Count > 0)
  4459. {
  4460. sapParameter.ZSUM = workData.Rows.Count;
  4461. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  4462. int index = 0;
  4463. foreach (DataRow item in workData.Rows)
  4464. {
  4465. ZSPP100 info100 = new ZSPP100();
  4466. // 工厂
  4467. info100.WERKS = workcode;
  4468. // 型号
  4469. info100.GROES = item["GoodsCode"].ToString();
  4470. // 物料编号
  4471. info100.MATNR = item["SAPCode"].ToString();
  4472. // 生产工号
  4473. info100.ZGHNU = item["UserCode"].ToString();
  4474. // 数据节点
  4475. info100.ZJDNU = item["DataCode"].ToString();
  4476. // 时间戳
  4477. info100.ZSCNU = yyyymmdd;
  4478. // 销售凭证
  4479. info100.VBELN = item["ORDERCODE"].ToString().Trim();
  4480. // 销售凭证项目
  4481. info100.POSNR = item["ORDERITEM"].ToString();
  4482. // 产量
  4483. info100.ZCLNG = item["OutputNum"].ToString();
  4484. // 损坯
  4485. info100.ZSPNG = item["SCRAPNUM"].ToString();
  4486. // 清除
  4487. info100.ZQCNG = item["CLEANUPNUM"].ToString();
  4488. // 回收
  4489. info100.ZHSNG = item["RECOVERYNUM"].ToString();
  4490. // 干补
  4491. info100.ZGBNG = item["REPAIRNUM"].ToString();
  4492. // 注浆类型 G高压 L普通
  4493. info100.ZSCS = item["ZSCS"].ToString();
  4494. info100.ZKSSJ = Convert.ToDateTime("2021-12-01 08:00:00").ToString("HHmmss");
  4495. info100.ZJSRQ = Convert.ToDecimal("20211201080000");
  4496. sapParameter.TABLE_IN[index++] = info100;
  4497. }
  4498. }
  4499. else
  4500. {
  4501. sapParameter.ZSUM = 0;
  4502. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  4503. }
  4504. // 调用SAP接口(调试用)
  4505. ZPPFM008Response result = HGSAPDK_HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode);
  4506. if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  4507. {
  4508. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  4509. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  4510. "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  4511. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  4512. foreach (ZSPP100 item in result.TABLE_OUT)
  4513. {
  4514. string posnr = item.POSNR.TrimStart('0');
  4515. paras = new OracleParameter[]
  4516. {
  4517. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  4518. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  4519. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  4520. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  4521. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  4522. new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  4523. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  4524. new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  4525. };
  4526. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  4527. }
  4528. }
  4529. result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  4530. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  4531. paras = new OracleParameter[]
  4532. {
  4533. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  4534. new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  4535. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  4536. };
  4537. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  4538. if (result.ZTYPE == "S")
  4539. {
  4540. sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :logid";
  4541. paras = new OracleParameter[]
  4542. {
  4543. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  4544. new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
  4545. };
  4546. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  4547. }
  4548. oracleConn.Commit();
  4549. sre.Message = result.ZMSG;
  4550. sre.Result = result.ZTYPE;
  4551. return sre;
  4552. }
  4553. catch (Exception ex)
  4554. {
  4555. throw ex;
  4556. }
  4557. finally
  4558. {
  4559. if (oracleConn != null &&
  4560. oracleConn.ConnState == ConnectionState.Open)
  4561. {
  4562. oracleConn.Disconnect();
  4563. }
  4564. }
  4565. }
  4566. #endregion
  4567. /// <summary>
  4568. /// 同步SAP数据(自动)
  4569. /// </summary>
  4570. /// <param name="date"></param>
  4571. public static void AutoWorkDataToSAP(DateTime date, string funCode)
  4572. {
  4573. if (string.IsNullOrWhiteSpace(funCode))
  4574. {
  4575. //return;
  4576. funCode = "ALL";
  4577. }
  4578. funCode = "," + funCode + ",";
  4579. ServiceResultEntity sre = null;
  4580. // 10 模具
  4581. if (funCode == ",ALL," || funCode.Contains(",10,"))
  4582. {
  4583. try
  4584. {
  4585. sre = SetWorkData10_50(date, "10", 0);
  4586. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4587. "S" != sre.Result + "")
  4588. {
  4589. OutputLog.TraceLog(LogPriority.Warning,
  4590. "AutoWorkDataToSAP",
  4591. "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4592. JsonHelper.ToJson(sre),
  4593. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4594. }
  4595. }
  4596. catch (Exception ex)
  4597. {
  4598. OutputLog.TraceLog(LogPriority.Error,
  4599. "AutoWorkDataToSAP",
  4600. "10 模具 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4601. ex.ToString(),
  4602. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4603. }
  4604. }
  4605. // 20 湿坯
  4606. if (funCode == ",ALL," || funCode.Contains(",20,"))
  4607. {
  4608. try
  4609. {
  4610. sre = SetWorkData10_50(date, "20", 0);
  4611. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4612. "S" != sre.Result + "")
  4613. {
  4614. OutputLog.TraceLog(LogPriority.Warning,
  4615. "AutoWorkDataToSAP",
  4616. "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4617. JsonHelper.ToJson(sre),
  4618. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4619. }
  4620. }
  4621. catch (Exception ex)
  4622. {
  4623. OutputLog.TraceLog(LogPriority.Error,
  4624. "AutoWorkDataToSAP",
  4625. "20 湿坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4626. ex.ToString(),
  4627. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4628. }
  4629. }
  4630. // 30 精坯
  4631. if (funCode == ",ALL," || funCode.Contains(",30,"))
  4632. {
  4633. try
  4634. {
  4635. sre = SetWorkData10_50(date, "30", 0);
  4636. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4637. "S" != sre.Result + "")
  4638. {
  4639. OutputLog.TraceLog(LogPriority.Warning,
  4640. "AutoWorkDataToSAP",
  4641. "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4642. JsonHelper.ToJson(sre),
  4643. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4644. }
  4645. }
  4646. catch (Exception ex)
  4647. {
  4648. OutputLog.TraceLog(LogPriority.Error,
  4649. "AutoWorkDataToSAP",
  4650. "30 精坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4651. ex.ToString(),
  4652. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4653. }
  4654. }
  4655. // 40 釉坯
  4656. if (funCode == ",ALL," || funCode.Contains(",40,"))
  4657. {
  4658. try
  4659. {
  4660. sre = SetWorkData10_50(date, "40", 0);
  4661. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4662. "S" != sre.Result + "")
  4663. {
  4664. OutputLog.TraceLog(LogPriority.Warning,
  4665. "AutoWorkDataToSAP",
  4666. "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4667. JsonHelper.ToJson(sre),
  4668. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4669. }
  4670. }
  4671. catch (Exception ex)
  4672. {
  4673. OutputLog.TraceLog(LogPriority.Error,
  4674. "AutoWorkDataToSAP",
  4675. "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4676. ex.ToString(),
  4677. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4678. }
  4679. }
  4680. // 50 烧成
  4681. if (funCode == ",ALL," || funCode.Contains(",50,"))
  4682. {
  4683. try
  4684. {
  4685. sre = SetWorkData10_50(date, "50", 0);
  4686. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4687. "S" != sre.Result + "")
  4688. {
  4689. OutputLog.TraceLog(LogPriority.Warning,
  4690. "AutoWorkDataToSAP",
  4691. "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4692. JsonHelper.ToJson(sre),
  4693. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4694. }
  4695. }
  4696. catch (Exception ex)
  4697. {
  4698. OutputLog.TraceLog(LogPriority.Error,
  4699. "AutoWorkDataToSAP",
  4700. "50 烧成 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4701. ex.ToString(),
  4702. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4703. }
  4704. }
  4705. // 6001 成品明细
  4706. if (funCode == ",ALL," || funCode.Contains(",6001,"))
  4707. {
  4708. try
  4709. {
  4710. sre = SetFP6001(date, 0);
  4711. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4712. "S" != sre.Result + "")
  4713. {
  4714. OutputLog.TraceLog(LogPriority.Warning,
  4715. "AutoWorkDataToSAP",
  4716. "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4717. JsonHelper.ToJson(sre),
  4718. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4719. }
  4720. }
  4721. catch (Exception ex)
  4722. {
  4723. OutputLog.TraceLog(LogPriority.Error,
  4724. "AutoWorkDataToSAP",
  4725. "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4726. ex.ToString(),
  4727. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4728. }
  4729. }
  4730. // 6001 成品明细(小时)-20分钟
  4731. if (funCode == ",6002,")
  4732. {
  4733. try
  4734. {
  4735. sre = SetFP6002(date, 0);
  4736. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4737. "S" != sre.Result + "")
  4738. {
  4739. OutputLog.TraceLog(LogPriority.Warning,
  4740. "AutoWorkDataToSAP",
  4741. "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4742. JsonHelper.ToJson(sre),
  4743. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4744. }
  4745. }
  4746. catch (Exception ex)
  4747. {
  4748. OutputLog.TraceLog(LogPriority.Error,
  4749. "AutoWorkDataToSAP",
  4750. "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4751. ex.ToString(),
  4752. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4753. }
  4754. }
  4755. }
  4756. /// <summary>
  4757. /// 同步SAP数据(自动)(重载)
  4758. /// </summary>
  4759. /// <param name="date">当前时间</param>
  4760. /// <param name="funCode">工序码</param>
  4761. /// <param name="ndate">本次要执行到的时间</param>
  4762. public static void AutoWorkDataToSAP(DateTime date, string funCode, DateTime ndate)
  4763. {
  4764. if (string.IsNullOrWhiteSpace(funCode))
  4765. {
  4766. //return;
  4767. funCode = "ALL";
  4768. }
  4769. funCode = "," + funCode + ",";
  4770. ServiceResultEntity sre = null;
  4771. // 10 模具
  4772. if (funCode == ",ALL," || funCode.Contains(",10,"))
  4773. {
  4774. try
  4775. {
  4776. sre = SetWorkData10_50("10", 0, ndate);
  4777. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4778. "S" != sre.Result + "")
  4779. {
  4780. OutputLog.TraceLog(LogPriority.Warning,
  4781. "AutoWorkDataToSAP",
  4782. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4783. JsonHelper.ToJson(sre),
  4784. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4785. }
  4786. }
  4787. catch (Exception ex)
  4788. {
  4789. OutputLog.TraceLog(LogPriority.Error,
  4790. "AutoWorkDataToSAP",
  4791. "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4792. ex.ToString(),
  4793. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4794. }
  4795. }
  4796. // 20 湿坯
  4797. if (funCode == ",ALL," || funCode.Contains(",20,"))
  4798. {
  4799. try
  4800. {
  4801. sre = SetWorkData10_50("20", 0, ndate);
  4802. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4803. "S" != sre.Result + "")
  4804. {
  4805. OutputLog.TraceLog(LogPriority.Warning,
  4806. "AutoWorkDataToSAP",
  4807. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4808. JsonHelper.ToJson(sre),
  4809. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4810. }
  4811. }
  4812. catch (Exception ex)
  4813. {
  4814. OutputLog.TraceLog(LogPriority.Error,
  4815. "AutoWorkDataToSAP",
  4816. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4817. ex.ToString(),
  4818. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4819. }
  4820. }
  4821. // 30 精坯
  4822. if (funCode == ",ALL," || funCode.Contains(",30,"))
  4823. {
  4824. try
  4825. {
  4826. sre = SetWorkData10_50("30", 0, ndate);
  4827. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4828. "S" != sre.Result + "")
  4829. {
  4830. OutputLog.TraceLog(LogPriority.Warning,
  4831. "AutoWorkDataToSAP",
  4832. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4833. JsonHelper.ToJson(sre),
  4834. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4835. }
  4836. }
  4837. catch (Exception ex)
  4838. {
  4839. OutputLog.TraceLog(LogPriority.Error,
  4840. "AutoWorkDataToSAP",
  4841. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4842. ex.ToString(),
  4843. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4844. }
  4845. }
  4846. // 40 釉坯
  4847. if (funCode == ",ALL," || funCode.Contains(",40,"))
  4848. {
  4849. try
  4850. {
  4851. sre = SetWorkData10_50("40", 0, ndate);
  4852. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4853. "S" != sre.Result + "")
  4854. {
  4855. OutputLog.TraceLog(LogPriority.Warning,
  4856. "AutoWorkDataToSAP",
  4857. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4858. JsonHelper.ToJson(sre),
  4859. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4860. }
  4861. }
  4862. catch (Exception ex)
  4863. {
  4864. OutputLog.TraceLog(LogPriority.Error,
  4865. "AutoWorkDataToSAP",
  4866. "40 釉坯 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4867. ex.ToString(),
  4868. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4869. }
  4870. }
  4871. // 50 烧成
  4872. if (funCode == ",ALL," || funCode.Contains(",50,"))
  4873. {
  4874. try
  4875. {
  4876. sre = SetWorkData10_50("50", 0, ndate);
  4877. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4878. "S" != sre.Result + "")
  4879. {
  4880. OutputLog.TraceLog(LogPriority.Warning,
  4881. "AutoWorkDataToSAP",
  4882. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4883. JsonHelper.ToJson(sre),
  4884. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4885. }
  4886. }
  4887. catch (Exception ex)
  4888. {
  4889. OutputLog.TraceLog(LogPriority.Error,
  4890. "AutoWorkDataToSAP",
  4891. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4892. ex.ToString(),
  4893. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4894. }
  4895. }
  4896. // 6001 成品明细
  4897. if (funCode == ",ALL," || funCode.Contains(",6001,"))
  4898. {
  4899. try
  4900. {
  4901. sre = SetFP6001(date, 0);
  4902. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4903. "S" != sre.Result + "")
  4904. {
  4905. OutputLog.TraceLog(LogPriority.Warning,
  4906. "AutoWorkDataToSAP",
  4907. "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4908. JsonHelper.ToJson(sre),
  4909. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4910. }
  4911. }
  4912. catch (Exception ex)
  4913. {
  4914. OutputLog.TraceLog(LogPriority.Error,
  4915. "AutoWorkDataToSAP",
  4916. "6001 成品明细 " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4917. ex.ToString(),
  4918. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4919. }
  4920. }
  4921. // 6001 成品明细(小时)-20分钟
  4922. if (funCode == ",6002,")
  4923. {
  4924. try
  4925. {
  4926. sre = SetFP6002(date, 0);
  4927. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4928. "S" != sre.Result + "")
  4929. {
  4930. OutputLog.TraceLog(LogPriority.Warning,
  4931. "AutoWorkDataToSAP",
  4932. "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4933. JsonHelper.ToJson(sre),
  4934. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4935. }
  4936. }
  4937. catch (Exception ex)
  4938. {
  4939. OutputLog.TraceLog(LogPriority.Error,
  4940. "AutoWorkDataToSAP",
  4941. "6002 成品明细(小时) " + date.ToString("yyyy-MM-dd HH:mm:ss"),
  4942. ex.ToString(),
  4943. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4944. }
  4945. }
  4946. }
  4947. public static void AutoWorkDataToSAP_Test(string funCode, DateTime ndate)
  4948. {
  4949. if (string.IsNullOrWhiteSpace(funCode))
  4950. {
  4951. //return;
  4952. funCode = "ALL";
  4953. }
  4954. funCode = "," + funCode + ",";
  4955. ServiceResultEntity sre = null;
  4956. // 10 模具
  4957. //if (funCode == ",ALL," || funCode.Contains(",10,"))
  4958. //{
  4959. // try
  4960. // {
  4961. // sre = SetWorkData10_50_test("10", 0, ndate);
  4962. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  4963. // "S" != sre.Result + "")
  4964. // {
  4965. // OutputLog.TraceLog(LogPriority.Warning,
  4966. // "AutoWorkDataToSAP",
  4967. // "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4968. // JsonHelper.ToJson(sre),
  4969. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4970. // }
  4971. // }
  4972. // catch (Exception ex)
  4973. // {
  4974. // OutputLog.TraceLog(LogPriority.Error,
  4975. // "AutoWorkDataToSAP",
  4976. // "10 模具 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4977. // ex.ToString(),
  4978. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  4979. // }
  4980. //}
  4981. // 20 湿坯
  4982. if (funCode == ",ALL," || funCode.Contains(",20,"))
  4983. {
  4984. try
  4985. {
  4986. sre = SetWorkData10_50_test("20", 0, ndate);
  4987. if (sre.Status != Constant.ServiceResultStatus.Success ||
  4988. "S" != sre.Result + "")
  4989. {
  4990. OutputLog.TraceLog(LogPriority.Warning,
  4991. "AutoWorkDataToSAP",
  4992. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  4993. JsonHelper.ToJson(sre),
  4994. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  4995. }
  4996. }
  4997. catch (Exception ex)
  4998. {
  4999. OutputLog.TraceLog(LogPriority.Error,
  5000. "AutoWorkDataToSAP",
  5001. "20 湿坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5002. ex.ToString(),
  5003. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  5004. }
  5005. }
  5006. // 30 精坯
  5007. if (funCode == ",ALL," || funCode.Contains(",30,"))
  5008. {
  5009. try
  5010. {
  5011. sre = SetWorkData10_50_test("30", 0, ndate);
  5012. if (sre.Status != Constant.ServiceResultStatus.Success ||
  5013. "S" != sre.Result + "")
  5014. {
  5015. OutputLog.TraceLog(LogPriority.Warning,
  5016. "AutoWorkDataToSAP",
  5017. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5018. JsonHelper.ToJson(sre),
  5019. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  5020. }
  5021. }
  5022. catch (Exception ex)
  5023. {
  5024. OutputLog.TraceLog(LogPriority.Error,
  5025. "AutoWorkDataToSAP",
  5026. "30 精坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5027. ex.ToString(),
  5028. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  5029. }
  5030. }
  5031. // 40 釉坯
  5032. if (funCode == ",ALL," || funCode.Contains(",40,"))
  5033. {
  5034. try
  5035. {
  5036. sre = SetWorkData10_50_test("40", 0, ndate);
  5037. if (sre.Status != Constant.ServiceResultStatus.Success ||
  5038. "S" != sre.Result + "")
  5039. {
  5040. OutputLog.TraceLog(LogPriority.Warning,
  5041. "AutoWorkDataToSAP",
  5042. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5043. JsonHelper.ToJson(sre),
  5044. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  5045. }
  5046. }
  5047. catch (Exception ex)
  5048. {
  5049. OutputLog.TraceLog(LogPriority.Error,
  5050. "AutoWorkDataToSAP",
  5051. "40 釉坯 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5052. ex.ToString(),
  5053. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  5054. }
  5055. }
  5056. // 50 烧成
  5057. if (funCode == ",ALL," || funCode.Contains(",50,"))
  5058. {
  5059. try
  5060. {
  5061. sre = SetWorkData10_50_test("50", 0, ndate);
  5062. if (sre.Status != Constant.ServiceResultStatus.Success ||
  5063. "S" != sre.Result + "")
  5064. {
  5065. OutputLog.TraceLog(LogPriority.Warning,
  5066. "AutoWorkDataToSAP",
  5067. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5068. JsonHelper.ToJson(sre),
  5069. LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  5070. }
  5071. }
  5072. catch (Exception ex)
  5073. {
  5074. OutputLog.TraceLog(LogPriority.Error,
  5075. "AutoWorkDataToSAP",
  5076. "50 烧成 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5077. ex.ToString(),
  5078. LocalPath.LogExePath + "SAP_HEGII\\Error_");
  5079. }
  5080. }
  5081. // 6001 成品明细
  5082. //if (funCode == ",ALL," || funCode.Contains(",6001,"))
  5083. //{
  5084. // try
  5085. // {
  5086. // sre = SetFP6001(ndate, 0);
  5087. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  5088. // "S" != sre.Result + "")
  5089. // {
  5090. // OutputLog.TraceLog(LogPriority.Warning,
  5091. // "AutoWorkDataToSAP",
  5092. // "6001 成品明细 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5093. // JsonHelper.ToJson(sre),
  5094. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  5095. // }
  5096. // }
  5097. // catch (Exception ex)
  5098. // {
  5099. // OutputLog.TraceLog(LogPriority.Error,
  5100. // "AutoWorkDataToSAP",
  5101. // "6001 成品明细 " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5102. // ex.ToString(),
  5103. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  5104. // }
  5105. //}
  5106. // 6001 成品明细(小时)-20分钟
  5107. //if (funCode == ",6002,")
  5108. //{
  5109. // try
  5110. // {
  5111. // sre = SetFP6002(ndate, 0);
  5112. // if (sre.Status != Constant.ServiceResultStatus.Success ||
  5113. // "S" != sre.Result + "")
  5114. // {
  5115. // OutputLog.TraceLog(LogPriority.Warning,
  5116. // "AutoWorkDataToSAP",
  5117. // "6002 成品明细(小时) " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5118. // JsonHelper.ToJson(sre),
  5119. // LocalPath.LogExePath + "SAP_HEGII\\Warn_");
  5120. // }
  5121. // }
  5122. // catch (Exception ex)
  5123. // {
  5124. // OutputLog.TraceLog(LogPriority.Error,
  5125. // "AutoWorkDataToSAP",
  5126. // "6002 成品明细(小时) " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
  5127. // ex.ToString(),
  5128. // LocalPath.LogExePath + "SAP_HEGII\\Error_");
  5129. // }
  5130. //}
  5131. }
  5132. public static ServiceResultEntity SetWorkData10_50_test(string datacode, int userid, DateTime ndate)
  5133. {
  5134. ServiceResultEntity sre = new ServiceResultEntity();
  5135. IDBTransaction oracleConn = null;
  5136. try
  5137. {
  5138. #region 事务1,执行存储过程
  5139. OracleParameter[] paras = null;
  5140. int logid = 0;
  5141. string message = string.Empty;
  5142. // 10 模具
  5143. //if ("10".Equals(datacode))
  5144. //{
  5145. // paras = new OracleParameter[]
  5146. // {
  5147. // new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  5148. // new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  5149. // new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  5150. // };
  5151. // oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5152. // DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_10_1", paras);
  5153. // int.TryParse(paras[1].Value + "", out logid);
  5154. // message = paras[2].Value + "";
  5155. // oracleConn.Commit();
  5156. //}
  5157. // 20 湿坯
  5158. if ("20".Equals(datacode))
  5159. {
  5160. paras = new OracleParameter[]
  5161. {
  5162. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  5163. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  5164. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  5165. };
  5166. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5167. DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_20_1_test", paras);
  5168. int.TryParse(paras[1].Value + "", out logid);
  5169. message = paras[2].Value + "";
  5170. oracleConn.Commit();
  5171. }
  5172. // 30 精坯、40 釉坯、50 烧成
  5173. else if ("30".Equals(datacode) || "40".Equals(datacode) || "50".Equals(datacode))
  5174. {
  5175. paras = new OracleParameter[]
  5176. {
  5177. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  5178. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  5179. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  5180. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  5181. };
  5182. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5183. DataSet ds = oracleConn.ExecStoredProcedure("pro_sap_hegii_workdata_30_1_test", paras);
  5184. int.TryParse(paras[2].Value + "", out logid);
  5185. message = paras[3].Value + "";
  5186. oracleConn.Commit();
  5187. }
  5188. // 如果logid为0,则数据没有生成
  5189. if (logid == 0)
  5190. {
  5191. sre.Status = Constant.ServiceResultStatus.Other;
  5192. sre.Message = message;
  5193. return sre;
  5194. }
  5195. #endregion
  5196. // 事物2,同步SAP接口
  5197. sre = SyncSap_test(ndate, datacode, userid, logid);
  5198. return sre;
  5199. }
  5200. catch (Exception ex)
  5201. {
  5202. throw ex;
  5203. }
  5204. finally
  5205. {
  5206. if (oracleConn != null &&
  5207. oracleConn.ConnState == ConnectionState.Open)
  5208. {
  5209. oracleConn.Disconnect();
  5210. }
  5211. }
  5212. }
  5213. public static ServiceResultEntity SyncSap_test(DateTime date, string datacode, int userid, int logid)
  5214. {
  5215. ServiceResultEntity sre = new ServiceResultEntity();
  5216. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5217. try
  5218. {
  5219. OracleParameter[] paras = null;
  5220. string sqlString = string.Empty;
  5221. sqlString = "select workcode from tp_mst_account where rownum = 1";
  5222. string workcode = oracleConn.GetSqlResultToStr(sqlString);
  5223. string yyyymmdd = date.ToString("yyyyMMdd");
  5224. int r = 0;
  5225. // 查询出当前日志外,最新的一次日志
  5226. sqlString = "SELECT t.executedateend\n" +
  5227. " FROM (SELECT dl.executedateend\n" +
  5228. " FROM tsap_hegii_datalog dl\n" +
  5229. " WHERE dl.logtype = '3'\n" +
  5230. " AND dl.datastuts = 'S'\n" +
  5231. " AND dl.datacode = :datacode\n" +
  5232. " AND dl.logid <> :logid\n" +
  5233. " ORDER BY dl.executedateend DESC) t\n" +
  5234. " WHERE rownum = 1";
  5235. paras = new OracleParameter[]
  5236. {
  5237. new OracleParameter(":datacode", datacode),
  5238. new OracleParameter(":logid", logid)
  5239. };
  5240. object executedateend = oracleConn.GetSqlResultToObj(sqlString, paras);
  5241. //if (executedateend == null || Convert.ToDateTime(executedateend) >= date)
  5242. //{
  5243. // sre.Result = "W";
  5244. // sre.Message = "当前日志的结束时间小于最新日志的结束时间,不能同步";
  5245. // return sre;
  5246. //}
  5247. sqlString = "SELECT wd.yyyymmdd\n" +
  5248. " ,wd.workcode\n" +
  5249. " ,wd.datacode\n" +
  5250. " ,wd.goodscode\n" +
  5251. " ,wd.sapcode\n" +
  5252. " ,wd.usercode\n" +
  5253. " ,wd.ordercode\n" +
  5254. " ,wd.orderitem\n" +
  5255. " ,wd.outputnum\n" +
  5256. " ,wd.scrapnum\n" +
  5257. " ,wd.cleanupnum\n" +
  5258. " ,wd.recoverynum\n" +
  5259. " ,wd.repairnum\n" +
  5260. " ,wd.testmouldflag\n" +
  5261. " ,wd.zscs\n" +
  5262. " FROM tsap_hegii_workdata wd\n" +
  5263. " WHERE wd.logid = :logid";
  5264. paras = new OracleParameter[]
  5265. {
  5266. new OracleParameter(":logid", OracleDbType.Int32, logid, ParameterDirection.Input),
  5267. };
  5268. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, paras);
  5269. Zppfm008 sapParameter = new Zppfm008();
  5270. if (workData != null && workData.Rows.Count > 0)
  5271. {
  5272. sapParameter.ZSUM = workData.Rows.Count;
  5273. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  5274. int index = 0;
  5275. foreach (DataRow item in workData.Rows)
  5276. {
  5277. ZSPP100 info100 = new ZSPP100();
  5278. // 工厂
  5279. info100.WERKS = workcode;
  5280. // 型号
  5281. info100.GROES = item["GoodsCode"].ToString();
  5282. // 物料编号
  5283. info100.MATNR = item["SAPCode"].ToString();
  5284. // 生产工号
  5285. info100.ZGHNU = item["UserCode"].ToString();
  5286. // 数据节点
  5287. info100.ZJDNU = item["DataCode"].ToString();
  5288. // 时间戳
  5289. info100.ZSCNU = yyyymmdd;
  5290. // 销售凭证
  5291. info100.VBELN = item["ORDERCODE"].ToString().Trim();
  5292. // 销售凭证项目
  5293. info100.POSNR = item["ORDERITEM"].ToString();
  5294. // 产量
  5295. info100.ZCLNG = item["OutputNum"].ToString();
  5296. // 损坯
  5297. info100.ZSPNG = item["SCRAPNUM"].ToString();
  5298. // 清除
  5299. info100.ZQCNG = item["CLEANUPNUM"].ToString();
  5300. // 回收
  5301. info100.ZHSNG = item["RECOVERYNUM"].ToString();
  5302. // 干补
  5303. info100.ZGBNG = item["REPAIRNUM"].ToString();
  5304. // 注浆类型 G高压 L普通
  5305. info100.ZSCS = item["ZSCS"].ToString();
  5306. //info100.ZKSSJ = Convert.ToDateTime(executedateend).ToString("HHmmss");
  5307. info100.ZKSSJ = Convert.ToDateTime("2022-06-24 12:00:00").ToString("HHmmss");
  5308. info100.ZJSRQ = Convert.ToDecimal(date.ToString("yyyyMMddHHmmss"));
  5309. sapParameter.TABLE_IN[index++] = info100;
  5310. }
  5311. }
  5312. else
  5313. {
  5314. sapParameter.ZSUM = 0;
  5315. sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  5316. }
  5317. // 调用SAP接口
  5318. ZPPFM008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode);
  5319. if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  5320. {
  5321. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  5322. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  5323. "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  5324. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  5325. foreach (ZSPP100 item in result.TABLE_OUT)
  5326. {
  5327. string posnr = item.POSNR.TrimStart('0');
  5328. paras = new OracleParameter[]
  5329. {
  5330. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  5331. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  5332. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  5333. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  5334. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  5335. new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  5336. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  5337. new OracleParameter(":OrderItem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  5338. };
  5339. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  5340. }
  5341. }
  5342. result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  5343. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =:msg where logid = :logid";
  5344. paras = new OracleParameter[]
  5345. {
  5346. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  5347. new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  5348. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  5349. };
  5350. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  5351. if (result.ZTYPE == "S")
  5352. {
  5353. sqlString = "update tsap_hegii_datalog t set t.createuserid = :userid where logid = :logid";
  5354. paras = new OracleParameter[]
  5355. {
  5356. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  5357. new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
  5358. };
  5359. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  5360. }
  5361. oracleConn.Commit();
  5362. sre.Message = result.ZMSG;
  5363. sre.Result = result.ZTYPE;
  5364. return sre;
  5365. }
  5366. catch (Exception ex)
  5367. {
  5368. throw ex;
  5369. }
  5370. finally
  5371. {
  5372. if (oracleConn != null &&
  5373. oracleConn.ConnState == ConnectionState.Open)
  5374. {
  5375. oracleConn.Disconnect();
  5376. }
  5377. }
  5378. }
  5379. public static ServiceResultEntity SetWorkData10_50_5000(string datacode, int userid, DateTime ndate)
  5380. {
  5381. ServiceResultEntity sre = new ServiceResultEntity();
  5382. IDBTransaction oracleConn = null;
  5383. try
  5384. {
  5385. #region 事务1,执行存储过程
  5386. OracleParameter[] paras = null;
  5387. int logid = 0;
  5388. string message = string.Empty;
  5389. // 10 模具
  5390. if ("10".Equals(datacode))
  5391. {
  5392. paras = new OracleParameter[]
  5393. {
  5394. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  5395. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  5396. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  5397. };
  5398. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5399. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG10", paras);
  5400. int.TryParse(paras[1].Value + "", out logid);
  5401. message = paras[2].Value + "";
  5402. oracleConn.Commit();
  5403. }
  5404. // 20 湿坯
  5405. else if ("20".Equals(datacode))
  5406. {
  5407. paras = new OracleParameter[]
  5408. {
  5409. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  5410. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  5411. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  5412. };
  5413. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5414. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG20", paras);
  5415. int.TryParse(paras[1].Value + "", out logid);
  5416. message = paras[2].Value + "";
  5417. oracleConn.Commit();
  5418. }
  5419. // 30 精坯、40 釉坯、50 烧成
  5420. else if ("30".Equals(datacode) || "40".Equals(datacode) || "50".Equals(datacode))
  5421. {
  5422. paras = new OracleParameter[]
  5423. {
  5424. new OracleParameter("in_dateend", OracleDbType.Date, ndate, ParameterDirection.Input),
  5425. new OracleParameter("in_datacode", OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  5426. new OracleParameter("out_logid", OracleDbType.Int32, null, ParameterDirection.Output),
  5427. new OracleParameter("out_msg", OracleDbType.NVarchar2, 500, null, ParameterDirection.Output)
  5428. };
  5429. oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5430. DataSet ds = oracleConn.ExecStoredProcedure("PRO_SAP_HEGII_WORKDATA_BG", paras);
  5431. int.TryParse(paras[2].Value + "", out logid);
  5432. message = paras[3].Value + "";
  5433. oracleConn.Commit();
  5434. }
  5435. // 如果logid为0,则数据没有生成
  5436. if (logid == 0)
  5437. {
  5438. sre.Status = Constant.ServiceResultStatus.Other;
  5439. sre.Message = message;
  5440. return sre;
  5441. }
  5442. #endregion
  5443. // 事物2,同步SAP接口
  5444. string sqlString = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  5445. string SAP_ING_NEW = oracleConn.GetSqlResultToStr(sqlString);
  5446. if (SAP_ING_NEW == "1")
  5447. {
  5448. sre = SyncSap5000(ndate, datacode, userid, logid);
  5449. }
  5450. return sre;
  5451. }
  5452. catch (Exception ex)
  5453. {
  5454. throw ex;
  5455. }
  5456. finally
  5457. {
  5458. if (oracleConn != null &&
  5459. oracleConn.ConnState == ConnectionState.Open)
  5460. {
  5461. oracleConn.Disconnect();
  5462. }
  5463. }
  5464. }
  5465. /*
  5466. public static ServiceResultEntity AutoWorkData(DateTime date)
  5467. {
  5468. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5469. ServiceResultEntity sre = new ServiceResultEntity();
  5470. try
  5471. {
  5472. string yyyymmdd = date.ToString("yyyyMMdd");
  5473. string sqlString =
  5474. "select t.logid, t.datacode\n" +
  5475. " from tsap_hegii_datalog t\n" +
  5476. " where t.logtype = '1'\n" +
  5477. " and t.datastuts = 'S'\n" +
  5478. " and t.yyyymmdd = :yyyymmdd\n" +
  5479. " and t.createuserid is null for update";
  5480. OracleParameter[] oracleParameter = new OracleParameter[]
  5481. {
  5482. new OracleParameter(":yyyymmdd",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  5483. };
  5484. DataTable datalog = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  5485. if (datalog == null || datalog.Rows.Count == 0)
  5486. {
  5487. sre.Result = 0;
  5488. return sre;
  5489. }
  5490. sqlString = "select workcode from tp_mst_account where rownum = 1";
  5491. string workcode = oracleConn.GetSqlResultToStr(sqlString);
  5492. Zppfm008 sapParameter = new Zppfm008();
  5493. List<Zspp100> info = new List<Zspp100>();
  5494. foreach (DataRow item in datalog.Rows)
  5495. {
  5496. string datacode = item["datacode"].ToString();
  5497. logid = oracleConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  5498. string msg = null;
  5499. //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHm") + "~" +
  5500. // dateend.ToString("yyyyMMdd-HHmm");
  5501. sqlString = "insert into tsap_hegii_datalog\n" +
  5502. " (LogID\n" +
  5503. " ,LogType\n" +
  5504. " ,BeginTime\n" +
  5505. " ,YYYYMMDD\n" +
  5506. " ,WorkCode\n" +
  5507. " ,DataCode\n" +
  5508. " ,DataStuts\n" +
  5509. " ,DataMSG\n" +
  5510. " ,CreateUserID\n" +
  5511. " ,DataLogID)\n" +
  5512. "values\n" +
  5513. " (:LogID\n" +
  5514. " ,'2'\n" +
  5515. " ,sysdate\n" +
  5516. " ,:YYYYMMDD\n" +
  5517. " ,:WorkCode\n" +
  5518. " ,:DataCode\n" +
  5519. " ,:DataStuts\n" +
  5520. " ,:DataMSG\n" +
  5521. " ,:CreateUserID\n" +
  5522. " ,:DataLogID)";
  5523. int r = 0;
  5524. if (string.IsNullOrEmpty(datalogid))
  5525. {
  5526. oracleParameter = new OracleParameter[]
  5527. {
  5528. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  5529. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  5530. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  5531. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  5532. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  5533. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg + " DKMES-ERROR:NO DATA", ParameterDirection.Input),
  5534. new OracleParameter(":DataStuts",OracleDbType.Varchar2, "E", ParameterDirection.Input),
  5535. new OracleParameter(":DataLogID",OracleDbType.Int32, 0, ParameterDirection.Input),
  5536. };
  5537. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  5538. sre.Status = Constant.ServiceResultStatus.Other;
  5539. sre.Message = "没有同步数据";
  5540. sre.Result = "E";
  5541. return sre;
  5542. }
  5543. oracleParameter = new OracleParameter[]
  5544. {
  5545. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  5546. new OracleParameter(":CreateUserID",OracleDbType.Int32, userid, ParameterDirection.Input),
  5547. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  5548. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  5549. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  5550. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  5551. new OracleParameter(":DataStuts",OracleDbType.Varchar2, "S", ParameterDirection.Input),
  5552. new OracleParameter(":DataLogID",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  5553. };
  5554. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  5555. sqlString =
  5556. "select fp.yyyymmdd\n" +
  5557. " ,fp.workcode\n" +
  5558. " ,fp.DataCode\n" +
  5559. " ,fp.GoodsCode\n" +
  5560. " ,fp.SAPCode\n" +
  5561. " ,fp.UserCode\n" +
  5562. " ,fp.ORDERCODE\n" +
  5563. " ,fp.ORDERITEM\n" +
  5564. " ,fp.OutputNum\n" +
  5565. " ,fp.ScrapNum\n" +
  5566. " ,fp.CleanupNum\n" +
  5567. " ,fp.RecoveryNum\n" +
  5568. " ,fp.RepairNum\n" +
  5569. " from tsap_hegii_workdata wd where wd.logid = :datalogid";
  5570. oracleParameter = new OracleParameter[]
  5571. {
  5572. new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  5573. };
  5574. DataTable workData = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  5575. if (workData != null && workData.Rows.Count > 0)
  5576. {
  5577. sapParameter.Zsum = workData.Rows.Count;
  5578. sapParameter.TableIn = new Zspp100[sapParameter.Zsum];
  5579. int index = 0;
  5580. foreach (DataRow item in workData.Rows)
  5581. {
  5582. Zspp100 info100 = new Zspp100();
  5583. // 工厂
  5584. info100.Werks = workcode;
  5585. // 型号
  5586. info100.Groes = item["GoodsCode"].ToString();
  5587. // 物料编号
  5588. info100.Matnr = item["SAPCode"].ToString();
  5589. // 生产工号
  5590. info100.Zghnu = item["UserCode"].ToString();
  5591. // 数据节点
  5592. info100.Zjdnu = item["DataCode"].ToString();
  5593. // 时间戳
  5594. info100.Zscnu = yyyymmdd;
  5595. // 销售凭证
  5596. info100.Vbeln = item["ORDERCODE"].ToString();
  5597. // 销售凭证项目
  5598. info100.Posnr = item["ORDERITEM"].ToString();
  5599. // 产量
  5600. info100.Zclng = item["OutputNum"].ToString();
  5601. // 损坯
  5602. info100.Zspng = item["SCRAPNUM"].ToString();
  5603. // 清除
  5604. info100.Zqcng = item["CLEANUPNUM"].ToString();
  5605. // 回收
  5606. info100.Zhsng = item["RECOVERYNUM"].ToString();
  5607. // 干补
  5608. info100.Zgbng = item["REPAIRNUM"].ToString();
  5609. sapParameter.TableIn[index++] = info100;
  5610. }
  5611. }
  5612. else
  5613. {
  5614. sapParameter.Zsum = 0;
  5615. sapParameter.TableIn = new Zspp100[sapParameter.Zsum];
  5616. }
  5617. Zppfm008Response result = HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, datacode);
  5618. //if (result.Ztype == "E")
  5619. //{
  5620. // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
  5621. // oracleParameter = new OracleParameter[]
  5622. // {
  5623. // new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  5624. // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  5625. // };
  5626. // r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  5627. //}
  5628. //else
  5629. {
  5630. sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG = DataMSG||:msg where logid = :logid";
  5631. oracleParameter = new OracleParameter[]
  5632. {
  5633. new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.Ztype, ParameterDirection.Input),
  5634. new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  5635. new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  5636. };
  5637. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  5638. if (result.Ztype == "S")
  5639. {
  5640. sqlString = "update tsap_hegii_datalog t set t.createtime = :userid where logid = :datalogid";
  5641. oracleParameter = new OracleParameter[]
  5642. {
  5643. new OracleParameter(":datalogid",OracleDbType.Int32, datalogid, ParameterDirection.Input),
  5644. new OracleParameter(":userid",OracleDbType.Int32, userid, ParameterDirection.Input),
  5645. };
  5646. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  5647. }
  5648. if (result.TableOut != null && result.TableOut.Length > 0)
  5649. {
  5650. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  5651. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  5652. "' and DataCode=:DataCode and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  5653. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  5654. foreach (Zspp100 item in result.TableOut)
  5655. {
  5656. oracleParameter = new OracleParameter[]
  5657. {
  5658. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.Ztype, ParameterDirection.Input),
  5659. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.Zmsg, ParameterDirection.Input),
  5660. new OracleParameter(":DataCode",OracleDbType.Varchar2, datacode, ParameterDirection.Input),
  5661. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.Groes, ParameterDirection.Input),
  5662. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.Matnr, ParameterDirection.Input),
  5663. new OracleParameter(":UserCode",OracleDbType.Varchar2, item.Zghnu, ParameterDirection.Input),
  5664. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.Vbeln)? " " : item.Vbeln), ParameterDirection.Input),
  5665. new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.Posnr)? " " : item.Posnr), ParameterDirection.Input),
  5666. };
  5667. r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  5668. }
  5669. }
  5670. }
  5671. oracleConn.Commit();
  5672. sre.Message = result.Zmsg;
  5673. sre.Result = result.Ztype;
  5674. return sre;
  5675. }
  5676. catch (Exception ex)
  5677. {
  5678. throw ex;
  5679. }
  5680. }
  5681. */
  5682. }
  5683. }