SAPDataLogic.cs 274 KB

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