SAPDataLogic.cs 287 KB

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