PMModuleLogicDAL.cs 1.4 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PMModuleLogicDAL.cs
  5. * 2.功能描述:生产管理数据库访问类(插入、修改、删除)
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈冰 2014/09/17 1.00 新建
  9. * 徐伟 2019/09/26 1.00 修改
  10. *******************************************************************************/
  11. using System;
  12. using System.Collections;
  13. using System.Collections.Generic;
  14. using System.Data;
  15. using System.IO;
  16. using System.Net;
  17. using System.Text;
  18. using Dongke.IBOSS.PRD.Basics.BaseResources;
  19. using Dongke.IBOSS.PRD.Basics.DataAccess;
  20. using Dongke.IBOSS.PRD.Basics.Library;
  21. using Dongke.IBOSS.PRD.Service.CMNModuleService;
  22. using Dongke.IBOSS.PRD.Service.DataModels;
  23. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService;
  24. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService.HGSAPDK_ZPPFM008;
  25. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService.HGSAPDK_ZPPFM010;
  26. using Dongke.IBOSS.PRD.Service.WMSDataService;
  27. using Dongke.IBOSS.PRD.WCF.DataModels;
  28. using Newtonsoft.Json;
  29. using Newtonsoft.Json.Linq;
  30. using Oracle.ManagedDataAccess.Client;
  31. using static Dongke.IBOSS.PRD.Service.SAPHegiiDataService.SAPDataLogic;
  32. namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
  33. {
  34. /// <summary>
  35. /// 生产管理数据库访问类(插入、修改、删除)
  36. /// </summary>
  37. public partial class PMModuleLogicDAL
  38. {
  39. #region 生产管理
  40. #region 计件
  41. /// <summary>
  42. /// 添加生产计件
  43. /// </summary>
  44. /// <param name="procedureID">工序ID</param>
  45. /// <param name="barcodeTable">条码信息</param>
  46. /// <param name="sUserInfo">用户基本信息</param>
  47. /// <returns>DataTable null:添加成功 不为空:错误消息</returns>
  48. /// <remarks>
  49. /// 陈冰 2014.09.18 新建
  50. /// </remarks>
  51. public static DataTable AddWorkPiece(int procedureID, DataTable barcodeTable, SUserInfo sUserInfo, out ProcedureEntity procedureInfo)
  52. {
  53. procedureInfo = null;
  54. if (barcodeTable == null || barcodeTable.Rows.Count == 0)
  55. {
  56. return null;
  57. }
  58. // 实例返回的Talbe
  59. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  60. DataRow dr = dtBarCode.NewRow();
  61. string errMsg = "";
  62. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  63. oracleTrConn.IgnoreCase = false;
  64. try
  65. {
  66. DataSet dsReturnSinglePoint = null;
  67. oracleTrConn.Connect();
  68. int goodsID = Constant.INT_IS_ZERO;
  69. string goodsCode = null;
  70. string goodsName = null;
  71. string groutingUserCode = string.Empty;
  72. string logoCode = string.Empty;
  73. string logoName = string.Empty;
  74. string groutingdate = string.Empty;
  75. #region 查询工序信息
  76. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  77. procedureInfo = procedure;
  78. #endregion
  79. if (barcodeTable.Columns.Contains("IsPDA"))
  80. {
  81. if (procedure.ModelType != (int)Constant.ProcedureModelType.DeliverMud)
  82. {
  83. if (barcodeTable.Columns.Contains("IsPublicBody"))
  84. {
  85. barcodeTable.Columns.Remove("IsPublicBody");
  86. barcodeTable.Columns.Remove("IsPDA");
  87. }
  88. }
  89. }
  90. #region 防止多次重复提交,导致数据重复
  91. // 通过锁定表tp_pm_usedbarcode中的条码,防止多次重复提交,导致数据重复
  92. // TODO PDA还没有修改,暂时注释。PDA(集中采集画面)点击保存时如果不成功提示消息后,清除了当前画面中的数据。应该不清空数据,可以继续保存。
  93. //string barcodes = null;
  94. //foreach (DataRow item in barcodeTable.Rows)
  95. //{
  96. // if (barcodes != null)
  97. // {
  98. // barcodes += ",";
  99. // }
  100. // barcodes += item["Barcode"].ToString();
  101. //}
  102. //if (barcodes != null)
  103. //{
  104. // string sql = "select uc.barcode from tp_pm_usedbarcode uc where uc.barcode in (" + barcodes + ") for update nowait";
  105. // try
  106. // {
  107. // oracleTrConn.GetSqlResultToDt(sql);
  108. // }
  109. // catch (Exception ex)
  110. // {
  111. // // 判断异常类型
  112. // if (ex.Message.IndexOf("ORA-00054") > -1)
  113. // {
  114. // dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码正在被处理中,请稍后再操作。";
  115. // dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = "0";
  116. // dtBarCode.Rows.Add(dr);
  117. // return dtBarCode;
  118. // }
  119. // throw ex;
  120. // }
  121. //}
  122. #endregion
  123. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  124. //xuwei fix 2019-09-26 按原条理判定首节点得到正确的返回结果
  125. // 2019-1016
  126. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  127. {
  128. int nodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, barcodeTable.Rows[0]["Barcode"].ToString());
  129. if (nodeBegin == 1)
  130. {
  131. procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  132. }
  133. else if (nodeBegin == 0)
  134. {
  135. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  136. }
  137. }
  138. //if (nodeBegin == -1) errMsg = "条码不正确,请检查!";
  139. #region 标准计件和坯库
  140. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal
  141. || procedure.ModelType == (int)Constant.ProcedureModelType.AdobeStock
  142. //xuwei add 2020-06-11 冷补更改窑车批车
  143. || procedure.ModelType == (int)Constant.ProcedureModelType.ColdPatch)
  144. {
  145. if (procedure.CollectType == 1)
  146. {
  147. #region 集中采集
  148. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  149. out goodsID, out goodsCode, out goodsName, out groutingUserCode);
  150. #endregion
  151. }
  152. else
  153. {
  154. #region 单点采集
  155. int? GroutingDailyDetailID = null;
  156. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  157. {
  158. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  159. }
  160. else
  161. {
  162. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  163. }
  164. if (dsReturnSinglePoint != null)
  165. {
  166. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  167. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  168. {
  169. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  170. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  171. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  172. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  173. barcodeTable.Rows[0]["barcode"] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  174. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  175. goodsID, goodsCode, goodsName, groutingUserCode, null);
  176. }
  177. }
  178. #endregion
  179. }
  180. }
  181. #endregion
  182. #region 交坯
  183. else if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)
  184. {
  185. if (procedure.CollectType == 1)
  186. {
  187. #region 集中采集
  188. //xuwei fix begin 2019-09-17
  189. //加入最后一个参数 true,识别为交坏
  190. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  191. out goodsID, out goodsCode, out goodsName, out groutingUserCode, true);
  192. //xuwei end
  193. #endregion
  194. }
  195. else
  196. {
  197. #region 单点采集
  198. int? GroutingDailyDetailID = null;
  199. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  200. {
  201. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  202. }
  203. else
  204. {
  205. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  206. }
  207. //dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  208. if (dsReturnSinglePoint != null)
  209. {
  210. //if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  211. //{
  212. // dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  213. //}
  214. //else
  215. //{
  216. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  217. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  218. {
  219. if (procedure.DeliverType == 0) //手动模式
  220. {
  221. if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  222. {
  223. if (barcodeTable.Rows[0]["IsPublicBody"].ToString() != "1")
  224. {
  225. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  226. }
  227. else
  228. {
  229. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  230. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  231. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  232. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  233. //xuwei fix begin 2019-09-17
  234. //加入最后一个参数 true,识别为交坏
  235. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  236. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  237. if (!string.IsNullOrEmpty(errMsg))
  238. {
  239. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  240. }
  241. // wangx 2016-10-10 是否设置过期未交坯
  242. else
  243. {
  244. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  245. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  246. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  247. if (sqlSettingValue != "0")
  248. {
  249. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  250. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  251. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  252. if (Convert.ToInt32(resultEntity.Result) < 0)
  253. {
  254. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  255. errMsg = resultEntity.Message;
  256. }
  257. }
  258. // wangx end
  259. }
  260. }
  261. }
  262. else
  263. {
  264. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  265. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  266. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  267. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  268. //xuwei fix begin 2019-09-17
  269. //加入最后一个参数 true,识别为交坏
  270. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  271. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  272. if (!string.IsNullOrEmpty(errMsg))
  273. {
  274. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  275. }
  276. // wangx 2016-10-10 是否设置过期未交坯
  277. else
  278. {
  279. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  280. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  281. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  282. if (sqlSettingValue != "0")
  283. {
  284. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  285. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  286. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  287. if (Convert.ToInt32(resultEntity.Result) < 0)
  288. {
  289. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  290. errMsg = resultEntity.Message;
  291. }
  292. }
  293. // wangx end
  294. }
  295. }
  296. }
  297. else //2016-07-05
  298. {
  299. // 自动模式 .查出型工号,单点采集前台并没有传值,更新barcodeTable表对应的字段
  300. string sql = @"select tp_mst_user.userid,tp_mst_user.usercode,tp_mst_user.username from TP_PM_GroutingDailyDetail
  301. left join tp_mst_user
  302. on TP_PM_GroutingDailyDetail.userid=tp_mst_user.userid
  303. where TP_PM_GroutingDailyDetail.barcode='" + barcodeTable.Rows[0]["barcode"].ToString() + "'";
  304. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  305. if (ds != null && ds.Tables[0].Rows.Count > 0)
  306. {
  307. barcodeTable.Rows[0]["UserCode"] = ds.Tables[0].Rows[0]["UserCode"];
  308. barcodeTable.Rows[0]["UserID"] = ds.Tables[0].Rows[0]["UserID"];
  309. barcodeTable.Rows[0]["UserName"] = ds.Tables[0].Rows[0]["UserName"];
  310. }
  311. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  312. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  313. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  314. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  315. //xuwei fix begin 2019-09-17
  316. //加入最后一个参数 true,识别为交坏
  317. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  318. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  319. if (!string.IsNullOrEmpty(errMsg))
  320. {
  321. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  322. }
  323. // wangx 2016-10-10 是否设置过期未交坯
  324. else
  325. {
  326. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  327. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  328. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  329. if (sqlSettingValue != "0")
  330. {
  331. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  332. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  333. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  334. if (Convert.ToInt32(resultEntity.Result) < 0)
  335. {
  336. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  337. errMsg = resultEntity.Message;
  338. }
  339. }
  340. // wangx end
  341. }
  342. //
  343. }
  344. //}
  345. }
  346. }
  347. #endregion
  348. }
  349. }
  350. #endregion
  351. #region 装窑车
  352. else if (procedure.ModelType == (int)Constant.ProcedureModelType.LoadCar)
  353. {
  354. errMsg = AddLoadKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  355. out goodsID, out goodsCode, out goodsName);
  356. }
  357. #endregion
  358. #region 窑车补件
  359. else if (procedure.ModelType == (int)Constant.ProcedureModelType.CarAdd)
  360. {
  361. errMsg = AddKilnCarSupplement(oracleTrConn, procedure, barcodeTable, sUserInfo,
  362. out goodsID, out goodsCode, out goodsName);
  363. }
  364. #endregion
  365. #region 入窑
  366. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKiln)
  367. {
  368. // PDA传入的窑车号。没有传入条码信息 需要转换
  369. /* modify by chenxy 2016-04-05 begin
  370. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  371. * 入窑时窑车上的产品需要重新获取。
  372. */
  373. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  374. // modify by chenxy 2016-04-05 end
  375. {
  376. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  377. }
  378. errMsg = AddIntoKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  379. out goodsID, out goodsCode, out goodsName);
  380. }
  381. #endregion
  382. #region 出窑
  383. else if (procedure.ModelType == (int)Constant.ProcedureModelType.OutKiln)
  384. {
  385. // PDA传入的窑车号。没有传入条码信息 需要转换
  386. /* modify by chenxy 2016-04-05 begin
  387. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  388. * 入窑时窑车上的产品需要重新获取。
  389. */
  390. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  391. // modify by chenxy 2016-04-05 end
  392. {
  393. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  394. }
  395. errMsg = AddOutKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  396. out goodsID, out goodsCode, out goodsName);
  397. }
  398. #endregion
  399. #region 卸窑车
  400. else if (procedure.ModelType == (int)Constant.ProcedureModelType.UnloadCar)
  401. {
  402. // PDA传入的窑车号。没有传入条码信息 需要转换
  403. /* modify by chenxy 2016-04-05 begin
  404. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  405. * 入窑时窑车上的产品需要重新获取。
  406. */
  407. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  408. // modify by chenxy 2016-04-05 end
  409. {
  410. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  411. }
  412. errMsg = AddUnloadingKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  413. out goodsID, out goodsCode, out goodsName);
  414. }
  415. #endregion
  416. #region 干补
  417. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SpecialRepair)
  418. {
  419. errMsg = AddDryRepairWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  420. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  421. }
  422. #endregion
  423. #region 回收
  424. else if (procedure.ModelType == (int)Constant.ProcedureModelType.Recovery)
  425. {
  426. errMsg = AddRecydingFlagWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  427. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  428. }
  429. #endregion
  430. #region 构造返回的DataTable
  431. if (
  432. (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud
  433. || procedure.ModelType == (int)Constant.ProcedureModelType.Normal
  434. || procedure.ModelType == (int)Constant.ProcedureModelType.ColdPatch) && procedure.CollectType == 2
  435. )
  436. {
  437. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()];
  438. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()];
  439. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()];
  440. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()];
  441. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()];
  442. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()];
  443. //新添加的
  444. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  445. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  446. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  447. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  448. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  449. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  450. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  451. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  452. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  453. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  454. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  455. dr[Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()];
  456. dr[Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()];
  457. }
  458. else
  459. {
  460. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = (errMsg == null ? "" : errMsg);
  461. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = goodsID;
  462. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = goodsCode;
  463. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = goodsName;
  464. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = groutingUserCode;
  465. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = logoCode;
  466. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = logoName;
  467. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = groutingdate;
  468. //dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  469. //dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  470. //dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  471. //dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  472. //dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  473. //dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  474. //dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  475. //dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  476. //dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  477. //dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  478. }
  479. dtBarCode.Rows.Add(dr);
  480. #endregion
  481. // 工序保存有错误时,不进行后续PLC操作 add by chenxy 2020-09-18
  482. if (string.IsNullOrEmpty(errMsg))
  483. {
  484. errMsg = dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] + "";
  485. }
  486. // 工序保存有错误时,不进行后续PLC操作
  487. if (!string.IsNullOrEmpty(errMsg))
  488. {
  489. // 如果是3#刮蹬,调用PLC接口 2020-09-07 fubin
  490. if (procedure.ProcedureID == 99)
  491. {
  492. string sql =
  493. "select t.flowprocedureid from tp_pm_inproduction t where t.barcode ='" + barcodeTable.Rows[0]["Barcode"] + "'";
  494. object flowprocedureid = oracleTrConn.GetSqlResultToObj(sql);
  495. if (flowprocedureid + "" == "99")
  496. {
  497. Hashtable plcPara = new Hashtable();
  498. plcPara.Add("finishflag", 1);
  499. string errMsg1 = PLCModuleLogic.PlcWrite2(3201, plcPara).Message;
  500. if (string.IsNullOrEmpty(errMsg1))
  501. {
  502. errMsg1 = System.Environment.NewLine + "【PLC】线体可以放行";
  503. }
  504. else
  505. {
  506. errMsg1 = System.Environment.NewLine + "【PLC】" + errMsg1;
  507. }
  508. dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg + errMsg1;
  509. }
  510. }
  511. // errMsg 有值,dtBarCode中无值时,要写入dtBarCode中,将错误信息返回给前台
  512. //string mm = dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] + "";
  513. //if (mm != errMsg)
  514. {
  515. dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  516. }
  517. return dtBarCode;
  518. }
  519. // 如果是3#包装,更新三车间包装标识
  520. if (procedure.ProcedureID == 107)
  521. {
  522. string sql = string.Empty;
  523. int r = 0;
  524. foreach (DataRow row in barcodeTable.Rows)
  525. {
  526. sql =
  527. "UPDATE tp_pm_groutingdailydetail gdd\n" +
  528. " SET gdd.packingby3 = '1'\n" +
  529. " WHERE gdd.barcode = '" + row["Barcode"] + "'";
  530. r += oracleTrConn.ExecuteNonQuery(sql);
  531. }
  532. }
  533. // 如果是3#上水,调用PLC接口 2020-09-03 fubin
  534. if (procedure.ProcedureID == 94)
  535. {
  536. /* 暂时不对接,上水机械臂暂停 2020-10-24 chenxy
  537. string sql =
  538. "SELECT g.seatcovercode\n" +
  539. " FROM tp_pm_groutingdailydetail p\n" +
  540. " LEFT JOIN tp_mst_goods g\n" +
  541. " ON g.goodsid = p.goodsid\n" +
  542. " WHERE p.valueflag = '1'\n" +
  543. " AND p.barcode = '" + barcodeTable.Rows[0]["Barcode"] + "'";
  544. object goodsModel = oracleTrConn.GetSqlResultToObj(sql);
  545. Hashtable plcPara = new Hashtable();
  546. if (goodsModel.ToInt32() != 0)
  547. {
  548. plcPara.Add("goodsmodel", goodsModel);
  549. plcPara.Add("finishflag", 1);
  550. plcPara.Add("errorflag", 0);
  551. }
  552. else
  553. {
  554. plcPara.Add("goodsmodel", 0);
  555. plcPara.Add("finishflag", 1);
  556. plcPara.Add("errorflag", 1);
  557. }
  558. errMsg = PLCModuleLogic.PlcWrite2(3320, plcPara, sUserInfo.UserCode).Message;
  559. */
  560. }
  561. // 如果是3#刮蹬,调用PLC接口 2020-09-07 fubin
  562. if (procedure.ProcedureID == 99)
  563. {
  564. Hashtable plcPara = new Hashtable();
  565. plcPara.Add("finishflag", 1);
  566. //xuwei modify 2021-12-24 按打卡工号识别线号
  567. errMsg = PLCModuleLogic.PlcWrite2(3201, plcPara, sUserInfo.UserCode).Message;
  568. }
  569. // 没有错误 提交事务
  570. if (string.IsNullOrEmpty(errMsg))
  571. {
  572. oracleTrConn.Commit();
  573. }
  574. else
  575. {
  576. dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  577. }
  578. }
  579. catch (Exception ex)
  580. {
  581. oracleTrConn.Rollback();
  582. throw ex;
  583. }
  584. finally
  585. {
  586. // 释放资源
  587. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  588. {
  589. oracleTrConn.Disconnect();
  590. }
  591. }
  592. return dtBarCode;
  593. }
  594. #region 是否公坯
  595. /// <summary>
  596. /// 是否公坯
  597. /// </summary>
  598. /// <param name="barcode">产品条码</param>
  599. /// <returns>int</returns>
  600. public static int IsPubilcByBarCode(IDBTransaction oracleTrConn, string barcode)
  601. {
  602. int isPubilcBody = 0;
  603. try
  604. {
  605. string sqlString = @"
  606. select
  607. ispublicbody
  608. from tp_pm_inproduction where barcode=:barcode
  609. union
  610. select
  611. ispublicbody
  612. from TP_PM_InProductionTrash where barcode=:barcode
  613. ";
  614. OracleParameter[] paras = new OracleParameter[]{
  615. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  616. };
  617. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  618. if (ds != null && ds.Tables[0].Rows.Count > 0)
  619. {
  620. isPubilcBody = Convert.ToInt32(ds.Tables[0].Rows[0]["ispublicbody"]);
  621. }
  622. return isPubilcBody;
  623. }
  624. catch (Exception ex)
  625. {
  626. throw ex;
  627. }
  628. }
  629. #endregion
  630. /// <summary>
  631. /// 标准计件
  632. /// </summary>
  633. /// <param name="oracleTrConn">数据连接对象</param>
  634. /// <param name="procedure">工序对象</param>
  635. /// <param name="barcodeTable">条码信息</param>
  636. /// <param name="sUserInfo">用户基本信息</param>
  637. /// <param name="goodsID">返回的产品ID</param>
  638. /// <param name="goodsCode">返回的产品Code</param>
  639. /// <param name="goodsName">返回的产品名称</param>
  640. /// <param name="groutingUserID">返回的注浆者ID</param>
  641. /// <returns>string</returns>
  642. /// <remarks>
  643. /// 陈冰 2014.09.18 新建
  644. /// </remarks>
  645. private static string AddNormalWorkPiece(IDBTransaction oracleTrConn,
  646. ProcedureEntity procedure,
  647. DataTable barcodeTable,
  648. SUserInfo sUserInfo,
  649. out int goodsID,
  650. out string goodsCode,
  651. out string goodsName,
  652. out string groutingUserCode,
  653. bool isSendBody = false
  654. )
  655. {
  656. try
  657. {
  658. goodsID = Constant.INT_IS_ZERO;
  659. goodsCode = null;
  660. goodsName = null;
  661. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  662. // 获得账务日期
  663. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  664. string errMsg = string.Empty;
  665. // 本批采集的批次号
  666. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  667. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  668. // 条码信息
  669. foreach (DataRow barcodeRow in barcodeTable.Rows)
  670. {
  671. // 条码
  672. string barcode = barcodeRow["Barcode"].ToString();
  673. if (string.IsNullOrEmpty(barcode))
  674. {
  675. throw new Exception("传入的条码号为空");
  676. }
  677. // 生产工号
  678. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  679. // 生产工号
  680. string workUserCode = barcodeRow["UserCode"].ToString();
  681. int? GroutingDailyDetailID = null;//注浆明细ID
  682. if (procedure.CollectType == 1)
  683. {
  684. #region 集中采集 校验条码
  685. // ccc todo
  686. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  687. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  688. {
  689. #region 校验条码有效性
  690. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  691. if (!string.IsNullOrEmpty(errMsg))
  692. {
  693. return errMsg;
  694. }
  695. #endregion
  696. }
  697. else
  698. {
  699. #region 校验条码有效性
  700. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  701. if (!string.IsNullOrEmpty(errMsg))
  702. {
  703. return errMsg;
  704. }
  705. #endregion
  706. }
  707. #endregion
  708. }
  709. else
  710. {
  711. #region 单点采集 获取注浆日报明细
  712. string sqlGroutingInfo = "";
  713. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  714. tp_pm_groutingdailydetail.goodscode,
  715. tp_pm_groutingdailydetail.goodsname,
  716. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  717. tp_pm_groutingdailydetail.GroutingDailyDetailID
  718. from tp_pm_groutingdailydetail where barcode = :barcode";
  719. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  720. //(select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)";
  721. OracleParameter[] ReFireparas = new OracleParameter[] {
  722. new OracleParameter(":barcode",barcode),
  723. };
  724. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  725. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  726. {
  727. GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  728. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  729. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  730. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  731. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  732. }
  733. #endregion
  734. }
  735. int? ClassesSettingID = null;//班次配置ID
  736. #region 添加生产者数据
  737. //生产数据ID
  738. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  739. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  740. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  741. {
  742. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  743. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  744. {
  745. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  746. }
  747. else
  748. {
  749. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  750. }
  751. }
  752. else
  753. {
  754. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  755. }
  756. if (!string.IsNullOrEmpty(errMsg))
  757. {
  758. return errMsg;
  759. }
  760. #endregion
  761. //xuwei fix 2019-09-23 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  762. //xuwei fix 2019-09-26 使用通用方法判定
  763. //if (IsNodeBegin<IDBTransaction>(oracleTrConn, barcode) == 1)
  764. // procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  765. #region 添加生产数据
  766. ProductionDataEntity productionData = new ProductionDataEntity();
  767. #region 属性赋值
  768. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  769. productionData.ClassesSettingID = ClassesSettingID;
  770. productionData.ProductionDataID = productionDataID;
  771. productionData.Barcode = barcode;
  772. productionData.CentralizedBatchNo = centralizedBatchNo;
  773. productionData.ProductionLineID = procedure.ProductionLineID;
  774. productionData.ProductionLineCode = procedure.ProductionlineCode;
  775. productionData.ProductionLineName = procedure.ProductionlineName;
  776. productionData.CompleteProcedureID = procedure.ProcedureID;
  777. productionData.ProcedureCode = procedure.ProcedureCode;
  778. productionData.ProcedureName = procedure.ProcedureName;
  779. productionData.ProcedureModel = procedure.ProcedureModel;
  780. productionData.ModelType = procedure.ModelType;
  781. productionData.NodeType = procedure.NodeType;
  782. productionData.PieceType = procedure.PieceType;
  783. //xuwei add 2020-06-11 冷补更新窑车批车号
  784. if (procedure.ModelType == 10) productionData.KilnCarBatchNo = centralizedBatchNo;
  785. if (barcodeRow["LogoID"].ToString() != "")
  786. {
  787. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  788. }
  789. if (procedure.IsSpecialRework == 0)
  790. {
  791. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  792. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  793. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  794. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  795. {
  796. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  797. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  798. }
  799. ////// else
  800. ////// {
  801. ////// string sqlReFire = @"select
  802. ////// isrefire
  803. ////// from tp_pm_inproduction where barcode=:barcode
  804. ////// ";
  805. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  806. ////// new OracleParameter(":barcode",barcode),
  807. ////// };
  808. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  809. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  810. ////// {
  811. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  812. ////// {
  813. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  814. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  815. ////// //{
  816. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  817. ////// //}
  818. ////// }
  819. ////// }
  820. ////// }
  821. }
  822. else if (procedure.IsSpecialRework == 2)
  823. {
  824. productionData.IsLengBu = 1;
  825. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  826. }
  827. else
  828. {
  829. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  830. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  831. }
  832. productionData.ReworkProcedureID = null;
  833. #region 交坯判断
  834. // 交坯节点
  835. if (barcodeTable.Columns.Contains("IsPublicBody"))
  836. {
  837. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  838. }
  839. // 非交坯节点
  840. else
  841. {
  842. // 正常坯
  843. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  844. }
  845. #endregion
  846. productionData.OrganizationID = procedure.OrganizationID;
  847. productionData.GoodsID = goodsID;
  848. productionData.GoodsCode = goodsCode;
  849. productionData.GoodsName = goodsName;
  850. productionData.UserID = workUserID;
  851. productionData.UserCode = barcodeRow["UserCode"].ToString();
  852. productionData.UserName = barcodeRow["UserName"].ToString();
  853. #endregion
  854. string OutSpecialRepairflag = "0";//干补标识
  855. DataSet outDataSet = null;
  856. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  857. {
  858. //添加首节点数据 (在产生产数据)
  859. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  860. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet, isSendBody);
  861. }
  862. else
  863. {
  864. //添加非首节点数据
  865. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  866. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, isSendBody);
  867. }
  868. if (!string.IsNullOrEmpty(errMsg))
  869. {
  870. return errMsg;
  871. }
  872. #endregion
  873. #region 开始节点
  874. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  875. {
  876. #region 添加在产产品数据
  877. InProductionEntity addInProductionEntity = new InProductionEntity();
  878. addInProductionEntity.BarCode = barcode;
  879. //流程工序ID
  880. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  881. // 当前工序
  882. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  883. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  884. // 工序模型
  885. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  886. // 工序类别
  887. addInProductionEntity.ModelType = procedure.ModelType;
  888. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  889. addInProductionEntity.ProductionDataID = productionDataID;
  890. //xuwei add 2020-06-11 冷补更新窑车批车号
  891. if (procedure.ModelType == 10) addInProductionEntity.KilnCarBatchNo = centralizedBatchNo;
  892. #region 交坯判断
  893. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  894. #endregion
  895. // 生产工号
  896. addInProductionEntity.UserID = workUserID;
  897. // 执行添加
  898. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  899. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet, isSendBody);
  900. // 执行失败
  901. if (!string.IsNullOrEmpty(errMsg))
  902. {
  903. return errMsg;
  904. }
  905. #endregion
  906. }
  907. #endregion
  908. #region 中间节点
  909. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  910. {
  911. #region 修改在产产品数据的当前工序,清空返工工序字段
  912. InProductionEntity addInProductionEntity = new InProductionEntity();
  913. addInProductionEntity.BarCode = barcode;
  914. //流程工序ID
  915. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  916. // 当前工序
  917. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  918. //当前生产数据ID
  919. addInProductionEntity.ProductionDataID = productionDataID;
  920. // 工序模型
  921. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  922. // 工序类别
  923. addInProductionEntity.ModelType = procedure.ModelType;
  924. //xuwei add 2020-06-11 冷补更新窑车批车号
  925. if (procedure.ModelType == 10) addInProductionEntity.KilnCarBatchNo = centralizedBatchNo;
  926. // 生产工号
  927. addInProductionEntity.UserID = workUserID;
  928. addInProductionEntity.LogoID = productionData.LogoID;
  929. // 缺陷标识
  930. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  931. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  932. if (procedure.IsSpecialRework == 0)
  933. {
  934. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  935. }
  936. // 2是冷补
  937. else if (procedure.IsSpecialRework == 2)
  938. {
  939. addInProductionEntity.IsLengBu = 1;
  940. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  941. }
  942. else
  943. {
  944. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  945. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  946. }
  947. #region 交坯判断
  948. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  949. #endregion
  950. // 执行修改
  951. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  952. // 执行失败
  953. if (!string.IsNullOrEmpty(errMsg))
  954. {
  955. return errMsg;
  956. }
  957. #endregion
  958. }
  959. #endregion
  960. #region 结束节点
  961. else
  962. {
  963. #region 添加成品数据 删除在产产品数据
  964. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  965. finishedProduct.BarCode = barcode;
  966. finishedProduct.LogoID = productionData.LogoID;
  967. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  968. if (!string.IsNullOrEmpty(errMsg))
  969. {
  970. return errMsg;
  971. }
  972. InProductionEntity delInProductionEntity = new InProductionEntity();
  973. delInProductionEntity.BarCode = barcode;
  974. // 执行删除 在产数据
  975. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  976. // 执行失败
  977. if (!string.IsNullOrEmpty(errMsg))
  978. {
  979. return errMsg;
  980. }
  981. #endregion
  982. }
  983. #endregion
  984. #region 更新注浆明细上的冷补标识
  985. if (productionData.IsLengBu == 1)
  986. {
  987. oracleTrConn.ExecuteNonQuery(@"
  988. UPDATE tp_pm_groutingdailydetail SET ISLENGBU = '1'
  989. WHERE BARCODE = :BARCODE ",
  990. new OracleParameter[] {
  991. new OracleParameter(":BARCODE", productionData.Barcode)
  992. });
  993. }
  994. #endregion
  995. }
  996. return errMsg;
  997. }
  998. catch (Exception ex)
  999. {
  1000. throw ex;
  1001. }
  1002. }
  1003. /// <summary>
  1004. /// 添加生产者(交坯单独调用,特殊)
  1005. /// </summary>
  1006. /// <param name="oracleTrConn">连接对象</param>
  1007. /// <param name="accountDate">账务日期</param>
  1008. /// <param name="productionDataID">生产数据ID</param>
  1009. /// <param name="workUserID">生产工号ID</param>
  1010. /// <param name="workUserCode">生产工号Code</param>
  1011. /// <param name="sUserInfo">用户基本信息</param>
  1012. /// <returns>string</returns>
  1013. private static string AddProducerDeliverAdobe(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo)
  1014. {
  1015. // 参数
  1016. OracleParameter[] paras;
  1017. #region 将班次配置表中的数据插入生产者表中
  1018. string sql = "insert into tp_pm_producer"
  1019. + " (productiondataid,"
  1020. + " staffid,"
  1021. + " userid,"
  1022. + " usercode,"
  1023. + " UJobsID,"
  1024. + " staffstatus,"
  1025. + " SJobsID"
  1026. + " )"
  1027. + " select distinct :productiondataid,"
  1028. + " staffid,"
  1029. + " userid,"
  1030. + " usercode,"
  1031. + " UJobsID,"
  1032. + " staffstatus,"
  1033. + " SJobsID"
  1034. + " "
  1035. + " from TP_PM_GroutingProducer"
  1036. + " where UserID = :userID";
  1037. paras = new OracleParameter[] {
  1038. new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  1039. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  1040. };
  1041. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  1042. // 失败
  1043. if (resultCount == Constant.INT_IS_ZERO)
  1044. {
  1045. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1046. }
  1047. #endregion
  1048. return null;
  1049. }
  1050. /// <summary>
  1051. /// 装车后,更新所有以前操作的工序窑车信息
  1052. /// </summary>
  1053. /// <param name="oracleTrConn">连接对象</param>
  1054. /// <param name="barcode">条码</param>
  1055. /// <param name="kilnCarID">窑车号</param>
  1056. /// <param name="goodsID">产品ID</param>
  1057. /// <param name="KilnCarPosition">窑车位置</param>
  1058. /// <param name="kilnCarBatchNo">装车批次</param>
  1059. /// <param name="sUserInfo">用户基本信息</param>
  1060. /// <returns>string</returns>
  1061. private static string UpdateRefineBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  1062. {
  1063. string sql = "update TP_PM_ProductionData set "
  1064. + " IsReFire=:IsReFire"
  1065. + " where barcode=:barcode";
  1066. #region 参数
  1067. OracleParameter[] paras = new OracleParameter[] {
  1068. new OracleParameter(":IsReFire",(int)Constant.GoodsLevelType.ReFire),
  1069. new OracleParameter(":barcode",productionData.Barcode),
  1070. };
  1071. #endregion
  1072. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  1073. // 保存失败
  1074. if (result == Constant.INT_IS_ZERO)
  1075. {
  1076. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1077. }
  1078. // 保存成功返回null
  1079. return null;
  1080. }
  1081. /// <summary>
  1082. /// 装窑车计件
  1083. /// </summary>
  1084. /// <param name="oracleTrConn">数据连接对象</param>
  1085. /// <param name="procedure">工序对象</param>
  1086. /// <param name="barcodeTable">条码信息</param>
  1087. /// <param name="sUserInfo">用户基本信息</param>
  1088. /// <param name="goodsID">返回的产品ID</param>
  1089. /// <param name="goodsCode">返回的产品Code</param>
  1090. /// <param name="goodsName">返回的产品名称</param>
  1091. /// <returns>string</returns>
  1092. /// <remarks>
  1093. /// 陈冰 2014.09.18 新建
  1094. /// </remarks>
  1095. private static string AddLoadKilnCar(IDBTransaction oracleTrConn,
  1096. ProcedureEntity procedure,
  1097. DataTable barcodeTable,
  1098. SUserInfo sUserInfo,
  1099. out int goodsID,
  1100. out string goodsCode,
  1101. out string goodsName)
  1102. {
  1103. try
  1104. {
  1105. goodsID = Constant.INT_IS_ZERO;
  1106. goodsCode = null;
  1107. goodsName = null;
  1108. string groutingUserCode = string.Empty;
  1109. // 获得账务日期
  1110. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1111. string errMsg = string.Empty;
  1112. // 生产工号
  1113. int workUserID = Constant.INT_IS_ZERO;
  1114. // 生产工号Code
  1115. string workUserCode = string.Empty;
  1116. // 生产工号Name
  1117. string workUserName = string.Empty;
  1118. // 本批采集的批次号
  1119. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1120. // 窑车批次号
  1121. string kilnCarBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1122. // 窑车状态
  1123. string kilnCarStatus = string.Empty;
  1124. //////////////////////////////////////////////////
  1125. DataView dv = barcodeTable.DefaultView;
  1126. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1127. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1128. {
  1129. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1130. // 窑炉ID
  1131. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1132. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1133. // 窑车ID
  1134. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1135. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1136. // 窑车Code
  1137. // string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1138. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1139. #region 校验窑车是否可装车
  1140. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1141. if (!string.IsNullOrEmpty(errMsg))
  1142. {
  1143. return errMsg;
  1144. }
  1145. #endregion
  1146. #region 如果窑车状态为空,需要插入窑车状态表
  1147. if (string.IsNullOrEmpty(kilnCarStatus))
  1148. {
  1149. // 自动生成窑车烧成批次号
  1150. kilnCarBatchNo = GetFiredKilnCarBatchNo(oracleTrConn, kilnCarID);
  1151. // 插入窑车状态表
  1152. errMsg = AddkilnCarStatus(oracleTrConn, procedure, kilnCarID, kilnID, kilnCarBatchNo, sUserInfo);
  1153. if (!string.IsNullOrEmpty(errMsg))
  1154. {
  1155. return errMsg;
  1156. }
  1157. }
  1158. #endregion
  1159. #region 窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  1160. // 查询本次窑车产品的批次号
  1161. else
  1162. {
  1163. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1164. // 更改窑车状态表入窑时间
  1165. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.LoadCar, sUserInfo, procedure, kilnCarBatchNo);
  1166. if (!string.IsNullOrEmpty(errMsg))
  1167. {
  1168. return errMsg;
  1169. }
  1170. }
  1171. #endregion
  1172. // 条码信息
  1173. DataView dvFilter = barcodeTable.DefaultView;
  1174. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1175. DataTable dtNew = dvFilter.ToTable();
  1176. // 条码信息
  1177. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1178. //--------------------------------
  1179. string sqllast = "select max(createtime) as createtime from TP_PM_KilnCarGoods"
  1180. + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  1181. OracleParameter[] paras = new OracleParameter[] {
  1182. new OracleParameter(":KilnCarID",kilnCarID),
  1183. new OracleParameter(":AccountID",sUserInfo.AccountID),
  1184. };
  1185. DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sqllast, paras);
  1186. object lastcreatetime = null;
  1187. if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0 && dsReturn.Tables[0].Rows[0]["CreateTime"].ToString() != "")
  1188. {
  1189. lastcreatetime = Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"]);
  1190. }
  1191. //--------------------------------
  1192. int? maxClassesSettingID = null;
  1193. foreach (DataRow barcodeRow in dtNew.Rows)
  1194. {
  1195. // 条码
  1196. string barcode = barcodeRow["Barcode"].ToString();
  1197. // 生产工号
  1198. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1199. workUserCode = barcodeRow["UserCode"].ToString();
  1200. workUserName = barcodeRow["UserName"].ToString();
  1201. #region 校验条码有效性
  1202. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  1203. if (!string.IsNullOrEmpty(errMsg))
  1204. {
  1205. return errMsg;
  1206. }
  1207. #endregion
  1208. // 查询新插入的生产数据ID
  1209. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1210. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1211. int productionDataID = 0;
  1212. if (!string.IsNullOrEmpty(idStr))
  1213. {
  1214. productionDataID = int.Parse(idStr);
  1215. }
  1216. else
  1217. {
  1218. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1219. }
  1220. int? ClassesSettingID = null;//班次配置ID
  1221. #region 添加生产者数据
  1222. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1223. if (!string.IsNullOrEmpty(errMsg))
  1224. {
  1225. return errMsg;
  1226. }
  1227. #endregion
  1228. maxClassesSettingID = ClassesSettingID;
  1229. #region 添加生产数据
  1230. ProductionDataEntity productionData = new ProductionDataEntity();
  1231. #region 属性赋值
  1232. productionData.ClassesSettingID = ClassesSettingID;
  1233. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1234. productionData.Barcode = barcode;
  1235. productionData.CentralizedBatchNo = centralizedBatchNo;
  1236. productionData.ProductionLineID = procedure.ProductionLineID;
  1237. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1238. productionData.ProductionLineName = procedure.ProductionlineName;
  1239. productionData.CompleteProcedureID = procedure.ProcedureID;
  1240. productionData.ProcedureCode = procedure.ProcedureCode;
  1241. productionData.ProcedureName = procedure.ProcedureName;
  1242. productionData.ProcedureModel = procedure.ProcedureModel;
  1243. productionData.ModelType = procedure.ModelType;
  1244. productionData.NodeType = procedure.NodeType;
  1245. productionData.ReworkProcedureID = null;
  1246. productionData.PieceType = procedure.PieceType;
  1247. //productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  1248. if (procedure.IsSpecialRework == 0)
  1249. {
  1250. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1251. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1252. }
  1253. else if (procedure.IsSpecialRework == 2)
  1254. {
  1255. productionData.IsLengBu = 1;
  1256. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  1257. }
  1258. else
  1259. {
  1260. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1261. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  1262. }
  1263. //productionData.GoodsGrade = (int)Constant.GoodsLevelType.NoDefects;
  1264. //if (lastcreatetime != null)
  1265. //{
  1266. // productionData.CreateTime = Convert.ToDateTime(lastcreatetime);
  1267. //}
  1268. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1269. ////string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1270. ////DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  1271. ////if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1272. ////{
  1273. //// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1274. //// {
  1275. //// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1276. //// }
  1277. ////}
  1278. productionData.OrganizationID = procedure.OrganizationID;
  1279. productionData.GoodsID = goodsID;
  1280. productionData.GoodsCode = goodsCode;
  1281. productionData.GoodsName = goodsName;
  1282. productionData.UserID = workUserID;
  1283. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1284. productionData.UserName = barcodeRow["UserName"].ToString();
  1285. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1286. #region 窑炉窑车属性
  1287. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1288. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1289. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1290. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1291. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1292. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1293. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1294. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1295. #endregion
  1296. #endregion
  1297. string OutSpecialRepairflag = "0";//干补标识
  1298. //if (lastcreatetime == null)
  1299. //{
  1300. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1301. //}
  1302. //else
  1303. //{
  1304. // errMsg = AddProductionDataCreateTime(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1305. //}
  1306. if (!string.IsNullOrEmpty(errMsg))
  1307. {
  1308. return errMsg;
  1309. }
  1310. #endregion
  1311. #region 修改在产产品数据的当前工序,清空返工工序字段
  1312. InProductionEntity addInProductionEntity = new InProductionEntity();
  1313. addInProductionEntity.BarCode = barcode;
  1314. //流程工序
  1315. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1316. // 当前工序
  1317. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1318. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1319. //生产数据ID
  1320. addInProductionEntity.ProductionDataID = productionDataID;
  1321. // 工序模型
  1322. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1323. // 工序类别
  1324. addInProductionEntity.ModelType = procedure.ModelType;
  1325. // 生产工号
  1326. addInProductionEntity.UserID = workUserID;
  1327. // 缺陷标识
  1328. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1329. #region 更新在产表窑车窑炉字段
  1330. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1331. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1332. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1333. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1334. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1335. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1336. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1337. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1338. #endregion
  1339. if (procedure.IsSpecialRework == 0)
  1340. {
  1341. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1342. }
  1343. else if (procedure.IsSpecialRework == 2)
  1344. {
  1345. productionData.IsLengBu = 1;
  1346. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  1347. }
  1348. else
  1349. {
  1350. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1351. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1352. }
  1353. // 执行修改
  1354. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1355. // 执行失败
  1356. if (!string.IsNullOrEmpty(errMsg))
  1357. {
  1358. return errMsg;
  1359. }
  1360. #endregion
  1361. //#region 添加生产者数据
  1362. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1363. //if (!string.IsNullOrEmpty(errMsg))
  1364. //{
  1365. // return errMsg;
  1366. //}
  1367. //#endregion
  1368. //errMsg = UpdateKilnCarCreatetimeInfoBybarcode(oracleTrConn, productionData, sUserInfo);
  1369. //if (!string.IsNullOrEmpty(errMsg))
  1370. //{
  1371. // return errMsg;
  1372. //}
  1373. #region 插入窑车产品表
  1374. errMsg = AddKilnCarGoods(oracleTrConn,
  1375. barcode,
  1376. kilnCarID,
  1377. goodsID,
  1378. productionData.KilnCarPosition.Value,
  1379. kilnCarBatchNo,
  1380. workUserID,
  1381. workUserCode,
  1382. workUserName,
  1383. sUserInfo);
  1384. if (!string.IsNullOrEmpty(errMsg))
  1385. {
  1386. return errMsg;
  1387. }
  1388. #endregion
  1389. //#region 装车后,更新所有以前操作的工序窑车信息
  1390. //errMsg = UpdateKilnCarInfoBybarcode(oracleTrConn, productionData);
  1391. //if (!string.IsNullOrEmpty(errMsg))
  1392. //{
  1393. // return errMsg;
  1394. //}
  1395. //#endregion
  1396. }
  1397. #region 窑车生产数据
  1398. #region 插入窑车生产数据表
  1399. if (lastcreatetime == null) //加此判断为的是,在登车时落产品,进行第二些登车时,不插重复数据
  1400. {
  1401. errMsg = AddKilnCarData(oracleTrConn,
  1402. accountDate,
  1403. kilnCarID,
  1404. kilnCarBatchNo,
  1405. workUserID,
  1406. workUserCode,
  1407. workUserName,
  1408. null,
  1409. sUserInfo, maxClassesSettingID);
  1410. #region 窑车生产者
  1411. if (!string.IsNullOrEmpty(errMsg))
  1412. {
  1413. return errMsg;
  1414. }
  1415. #endregion
  1416. }
  1417. #endregion
  1418. #endregion
  1419. }
  1420. return errMsg;
  1421. }
  1422. catch (Exception ex)
  1423. {
  1424. throw ex;
  1425. }
  1426. }
  1427. /// <summary>
  1428. /// 装车后,更新所有以前操作的工序窑车信息
  1429. /// </summary>
  1430. /// <param name="oracleTrConn">连接对象</param>
  1431. /// <param name="barcode">条码</param>
  1432. /// <param name="kilnCarID">窑车号</param>
  1433. /// <param name="goodsID">产品ID</param>
  1434. /// <param name="KilnCarPosition">窑车位置</param>
  1435. /// <param name="kilnCarBatchNo">装车批次</param>
  1436. /// <param name="sUserInfo">用户基本信息</param>
  1437. /// <returns>string</returns>
  1438. private static string UpdateKilnCarInfoBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  1439. {
  1440. string sql = "update TP_PM_ProductionData set "
  1441. + " KilnID=:KilnID,"
  1442. + "KilnCode=:KilnCode,"
  1443. + "KilnName=:KilnName,"
  1444. + "KilnCarID=:KilnCarID,"
  1445. + "KilnCarCode=:KilnCarCode,"
  1446. + "KilnCarName=:KilnCarName,"
  1447. + "KilnCarBatchNo=:KilnCarBatchNo,"
  1448. + "KilnCarPosition=:KilnCarPosition,"
  1449. + "isrefire=:isrefire "
  1450. + " where barcode=:barcode";
  1451. #region 参数
  1452. OracleParameter[] paras = new OracleParameter[] {
  1453. new OracleParameter(":KilnID",productionData.KilnID),
  1454. new OracleParameter(":KilnCode",productionData.KilnCode),
  1455. new OracleParameter(":KilnName",productionData.KilnName),
  1456. new OracleParameter(":KilnCarID",productionData.KilnCarID),
  1457. new OracleParameter(":KilnCarCode",productionData.KilnCarCode),
  1458. new OracleParameter(":KilnCarName",productionData.KilnCarName),
  1459. new OracleParameter(":KilnCarBatchNo",productionData.KilnCarBatchNo),
  1460. new OracleParameter(":KilnCarPosition",productionData.KilnCarPosition),
  1461. new OracleParameter(":isrefire",productionData.IsReFire),
  1462. new OracleParameter(":barcode",productionData.Barcode),
  1463. };
  1464. #endregion
  1465. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  1466. // 保存失败
  1467. if (result == Constant.INT_IS_ZERO)
  1468. {
  1469. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1470. }
  1471. // 保存成功返回null
  1472. return null;
  1473. }
  1474. /// <summary>
  1475. /// 入窑车计件
  1476. /// </summary>
  1477. /// <param name="oracleTrConn">数据连接对象</param>
  1478. /// <param name="procedure">工序对象</param>
  1479. /// <param name="barcodeTable">条码信息</param>
  1480. /// <param name="sUserInfo">基本</param>
  1481. /// <param name="goodsID">返回的产品ID</param>
  1482. /// <param name="goodsCode">返回的产品Code</param>
  1483. /// <param name="goodsName">返回的产品名称</param>
  1484. /// <returns>string</returns>
  1485. /// <remarks>
  1486. /// 张国印 2014.10.04 新建
  1487. /// </remarks>
  1488. private static string AddIntoKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1489. out int goodsID, out string goodsCode, out string goodsName)
  1490. {
  1491. try
  1492. {
  1493. goodsID = Constant.INT_IS_ZERO;
  1494. goodsCode = string.Empty;
  1495. goodsName = string.Empty;
  1496. string groutingUserCode = string.Empty;
  1497. // 获得账务日期
  1498. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1499. string errMsg = string.Empty;
  1500. // 生产工号
  1501. int workUserID = Constant.INT_IS_ZERO;
  1502. // 生产工号Code
  1503. string workUserCode = string.Empty;
  1504. // 生产工号Name
  1505. string workUserName = string.Empty;
  1506. // 本批采集的批次号
  1507. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1508. // 窑车批次号
  1509. string kilnCarBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1510. // 窑车状态
  1511. string kilnCarStatus = string.Empty;
  1512. //////////////////////////////////////////////////
  1513. DataView dv = barcodeTable.DefaultView;
  1514. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1515. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1516. {
  1517. ///////////////////////////////////////////////////
  1518. // 窑车Code
  1519. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1520. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1521. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1522. #region 校验窑车是否可入窑炉
  1523. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1524. if (!string.IsNullOrEmpty(errMsg))
  1525. {
  1526. return errMsg;
  1527. }
  1528. #endregion
  1529. // 窑炉ID
  1530. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1531. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1532. // 窑车ID
  1533. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1534. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1535. //备注信息
  1536. string Remarks = dr[0]["Remarks"].ToString();
  1537. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1538. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1539. if (!string.IsNullOrEmpty(errMsg))
  1540. {
  1541. return errMsg;
  1542. }
  1543. // 查询本次窑车产品的批次号
  1544. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1545. #region 窑车表存在,查询本次窑车产品的批次号 并更改入窑车时间
  1546. //更改窑车状态表入窑时间
  1547. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.IntoKiln, sUserInfo, procedure, kilnCarBatchNo);
  1548. if (!string.IsNullOrEmpty(errMsg))
  1549. {
  1550. return errMsg;
  1551. }
  1552. #endregion
  1553. DataView dvFilter = barcodeTable.DefaultView;
  1554. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1555. DataTable dtNew = dvFilter.ToTable();
  1556. int? maxClassesSettingID = null;
  1557. // 条码信息
  1558. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1559. foreach (DataRow barcodeRow in dtNew.Rows)
  1560. {
  1561. // 条码
  1562. string barcode = barcodeRow["Barcode"].ToString();
  1563. // 生产工号
  1564. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1565. workUserCode = barcodeRow["UserCode"].ToString();
  1566. workUserName = barcodeRow["UserName"].ToString();
  1567. // 查询新插入的生产数据ID
  1568. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1569. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1570. int productionDataID = 0;
  1571. if (!string.IsNullOrEmpty(idStr))
  1572. {
  1573. productionDataID = int.Parse(idStr);
  1574. }
  1575. else
  1576. {
  1577. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1578. }
  1579. int? ClassesSettingID = null;//班次配置ID
  1580. #region 添加生产者数据
  1581. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1582. if (!string.IsNullOrEmpty(errMsg))
  1583. {
  1584. return errMsg;
  1585. }
  1586. #endregion
  1587. maxClassesSettingID = ClassesSettingID;
  1588. #region 添加生产数据
  1589. ProductionDataEntity productionData = new ProductionDataEntity();
  1590. #region 属性赋值
  1591. productionData.ClassesSettingID = ClassesSettingID;
  1592. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1593. productionData.Barcode = barcode;
  1594. productionData.CentralizedBatchNo = centralizedBatchNo;
  1595. productionData.ProductionLineID = procedure.ProductionLineID;
  1596. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1597. productionData.ProductionLineName = procedure.ProductionlineName;
  1598. productionData.CompleteProcedureID = procedure.ProcedureID;
  1599. productionData.ProcedureCode = procedure.ProcedureCode;
  1600. productionData.ProcedureName = procedure.ProcedureName;
  1601. productionData.ProcedureModel = procedure.ProcedureModel;
  1602. productionData.ModelType = procedure.ModelType;
  1603. productionData.NodeType = procedure.NodeType;
  1604. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1605. productionData.ReworkProcedureID = null;
  1606. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1607. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1608. productionData.PieceType = procedure.PieceType;
  1609. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1610. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1611. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1612. ////// string sqlReFire = @"select
  1613. ////// isrefire
  1614. ////// from tp_pm_inproduction where barcode=:barcode
  1615. ////// ";
  1616. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1617. ////// new OracleParameter(":barcode",barcode),
  1618. ////// };
  1619. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1620. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1621. ////// {
  1622. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1623. ////// {
  1624. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1625. ////// }
  1626. ////// }
  1627. productionData.OrganizationID = procedure.OrganizationID;
  1628. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1629. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1630. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1631. productionData.UserID = workUserID;
  1632. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1633. productionData.UserName = barcodeRow["UserName"].ToString();
  1634. #region 窑炉窑车属性
  1635. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1636. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1637. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1638. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1639. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1640. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1641. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1642. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1643. productionData.Remarks = "";
  1644. #endregion
  1645. #endregion
  1646. string OutSpecialRepairflag = "0";//干补标识
  1647. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1648. if (!string.IsNullOrEmpty(errMsg))
  1649. {
  1650. return errMsg;
  1651. }
  1652. #endregion
  1653. #region 修改在产产品数据的当前工序,清空返工工序字段
  1654. InProductionEntity addInProductionEntity = new InProductionEntity();
  1655. addInProductionEntity.BarCode = barcode;
  1656. //流程工序
  1657. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1658. // 当前工序
  1659. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1660. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1661. //生产数据ID
  1662. addInProductionEntity.ProductionDataID = productionDataID;
  1663. // 工序模型
  1664. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1665. // 工序类别
  1666. addInProductionEntity.ModelType = procedure.ModelType;
  1667. // 生产工号
  1668. addInProductionEntity.UserID = workUserID;
  1669. // 缺陷标识
  1670. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1671. #region 更新在产表窑车窑炉字段
  1672. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1673. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1674. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1675. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1676. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1677. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1678. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1679. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1680. #endregion
  1681. // 执行修改
  1682. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1683. // 执行失败
  1684. if (!string.IsNullOrEmpty(errMsg))
  1685. {
  1686. return errMsg;
  1687. }
  1688. #endregion
  1689. //#region 添加生产者数据
  1690. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1691. //if (!string.IsNullOrEmpty(errMsg))
  1692. //{
  1693. // return errMsg;
  1694. //}
  1695. //#endregion
  1696. }
  1697. #region 插入窑车生产数据表
  1698. errMsg = AddKilnCarData(oracleTrConn,
  1699. accountDate,
  1700. kilnCarID,
  1701. kilnCarBatchNo,
  1702. workUserID,
  1703. workUserCode,
  1704. workUserName,
  1705. Remarks,
  1706. sUserInfo, maxClassesSettingID);
  1707. if (!string.IsNullOrEmpty(errMsg))
  1708. {
  1709. return errMsg;
  1710. }
  1711. #endregion
  1712. //#region 窑车生产者
  1713. //// 查询新插入的生产数据ID
  1714. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1715. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1716. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1717. //if (!string.IsNullOrEmpty(errMsg))
  1718. //{
  1719. // return errMsg;
  1720. //}
  1721. //#endregion
  1722. }
  1723. return errMsg;
  1724. }
  1725. catch (Exception ex)
  1726. {
  1727. throw ex;
  1728. }
  1729. }
  1730. /// <summary>
  1731. /// 校验窑车的工序与当前工序是否可以到达(重烧后,未走重烧入窑)
  1732. /// </summary>
  1733. /// <param name="oracleTrConn">数据连接</param>
  1734. /// <param name="barcode">产品条码</param>
  1735. /// <returns>string</returns>
  1736. private static string GetKilnCarProcedureIDByKilnCarID(IDBTransaction oracleTrConn, int KilnCarID, int ProcedureID)
  1737. {
  1738. string sql = @"select ProcedureID from TP_PM_KilnCarStatus where KilnCarID=:KilnCarID";
  1739. OracleParameter[] paras = new OracleParameter[] {
  1740. new OracleParameter(":KilnCarID", KilnCarID) ,
  1741. };
  1742. int currentProcedureID = 0;
  1743. DataSet result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1744. if (result != null && result.Tables[0].Rows.Count > 0)
  1745. {
  1746. currentProcedureID = Convert.ToInt32(result.Tables[0].Rows[0][0]);
  1747. }
  1748. sql = @"select pro.ProcedureID
  1749. from TP_PC_ProcedureFlow flow
  1750. inner join TP_PC_Procedure pro
  1751. on flow.arriveprocedureid = pro.procedureid
  1752. inner join TP_PC_ProductionLine line
  1753. on pro.ProductionLineID = line.ProductionLineID
  1754. where flow.ProcedureID = :currentProcedureID
  1755. and flow.FlowFlag = 2";
  1756. paras = new OracleParameter[] {
  1757. new OracleParameter(":currentProcedureID", currentProcedureID) ,
  1758. };
  1759. result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1760. int returnProcedureID = 0;
  1761. if (result != null && result.Tables[0].Rows.Count > 0)
  1762. {
  1763. if (result.Tables[0].Select("ProcedureID=" + ProcedureID).Length > 0)
  1764. {
  1765. returnProcedureID = 1;
  1766. }
  1767. }
  1768. // 保存失败
  1769. if (returnProcedureID == 0)
  1770. {
  1771. return string.Format("当前工序不允许进行操作", "条码", "保存");
  1772. }
  1773. return null;
  1774. }
  1775. /// <summary>
  1776. /// 出窑车计件
  1777. /// </summary>
  1778. /// <param name="oracleTrConn">数据连接对象</param>
  1779. /// <param name="procedure">工序对象</param>
  1780. /// <param name="barcodeTable">条码信息</param>
  1781. /// <param name="sUserInfo">用户基本信息</param>
  1782. /// <param name="goodsID">返回的产品ID</param>
  1783. /// <param name="goodsCode">返回的产品Code</param>
  1784. /// <param name="goodsName">返回的产品名称</param>
  1785. /// <returns>string</returns>
  1786. /// <remarks>
  1787. /// 张国印 2014.10.04 新建
  1788. /// </remarks>
  1789. private static string AddOutKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1790. out int goodsID, out string goodsCode, out string goodsName)
  1791. {
  1792. try
  1793. {
  1794. goodsID = Constant.INT_IS_ZERO;
  1795. goodsCode = string.Empty;
  1796. goodsName = string.Empty;
  1797. string groutingUserCode = string.Empty;
  1798. // 获得账务日期
  1799. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1800. string errMsg = string.Empty;
  1801. // 生产工号
  1802. int workUserID = Constant.INT_IS_ZERO;
  1803. // 生产工号Code
  1804. string workUserCode = string.Empty;
  1805. // 生产工号Name
  1806. string workUserName = string.Empty;
  1807. // 本批采集的批次号
  1808. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1809. // 窑车批次号
  1810. string kilnCarBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1811. // 窑车状态
  1812. string kilnCarStatus = string.Empty;
  1813. //////////////////////////////////////////////////
  1814. DataView dv = barcodeTable.DefaultView;
  1815. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1816. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1817. {
  1818. // 窑车Code
  1819. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1820. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1821. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1822. string Remarks = dr[0]["Remarks"].ToString();
  1823. #region 校验窑车是否可出窑炉
  1824. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1825. if (!string.IsNullOrEmpty(errMsg))
  1826. {
  1827. return errMsg;
  1828. }
  1829. #endregion
  1830. // 窑炉ID
  1831. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1832. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1833. // 窑车ID
  1834. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1835. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1836. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1837. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1838. if (!string.IsNullOrEmpty(errMsg))
  1839. {
  1840. return errMsg;
  1841. }
  1842. // 查询本次窑车产品的批次号
  1843. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1844. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  1845. //更改窑车状态表入窑时间
  1846. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.OutKiln, sUserInfo, procedure, kilnCarBatchNo);
  1847. if (!string.IsNullOrEmpty(errMsg))
  1848. {
  1849. return errMsg;
  1850. }
  1851. #endregion
  1852. //// 条码信息
  1853. DataView dvFilter = barcodeTable.DefaultView;
  1854. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1855. DataTable dtNew = dvFilter.ToTable();
  1856. int? maxClassesSettingID = null;
  1857. // 条码信息
  1858. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1859. foreach (DataRow barcodeRow in dtNew.Rows)
  1860. {
  1861. // 条码
  1862. string barcode = barcodeRow["Barcode"].ToString();
  1863. // 生产工号
  1864. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1865. workUserCode = barcodeRow["UserCode"].ToString();
  1866. workUserName = barcodeRow["UserName"].ToString();
  1867. // 查询新插入的生产数据ID
  1868. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1869. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1870. int productionDataID = 0;
  1871. if (!string.IsNullOrEmpty(idStr))
  1872. {
  1873. productionDataID = int.Parse(idStr);
  1874. }
  1875. else
  1876. {
  1877. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1878. }
  1879. int? ClassesSettingID = null;//班次配置ID
  1880. #region 添加生产者数据
  1881. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1882. if (!string.IsNullOrEmpty(errMsg))
  1883. {
  1884. return errMsg;
  1885. }
  1886. #endregion
  1887. maxClassesSettingID = ClassesSettingID;
  1888. #region 添加生产数据
  1889. ProductionDataEntity productionData = new ProductionDataEntity();
  1890. #region 属性赋值
  1891. productionData.ClassesSettingID = ClassesSettingID;
  1892. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1893. productionData.Barcode = barcode;
  1894. productionData.CentralizedBatchNo = centralizedBatchNo;
  1895. productionData.ProductionLineID = procedure.ProductionLineID;
  1896. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1897. productionData.ProductionLineName = procedure.ProductionlineName;
  1898. productionData.CompleteProcedureID = procedure.ProcedureID;
  1899. productionData.ProcedureCode = procedure.ProcedureCode;
  1900. productionData.ProcedureName = procedure.ProcedureName;
  1901. productionData.ProcedureModel = procedure.ProcedureModel;
  1902. productionData.ModelType = procedure.ModelType;
  1903. productionData.NodeType = procedure.NodeType;
  1904. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1905. productionData.ReworkProcedureID = null;
  1906. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1907. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1908. productionData.PieceType = procedure.PieceType;
  1909. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1910. ////// string sqlReFire = @"select
  1911. ////// isrefire
  1912. ////// from tp_pm_inproduction where barcode=:barcode
  1913. ////// ";
  1914. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1915. ////// new OracleParameter(":barcode",barcode),
  1916. ////// };
  1917. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1918. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1919. ////// {
  1920. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1921. ////// {
  1922. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1923. ////// }
  1924. ////// }
  1925. productionData.OrganizationID = procedure.OrganizationID;
  1926. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1927. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1928. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1929. productionData.UserID = workUserID;
  1930. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1931. productionData.UserName = barcodeRow["UserName"].ToString();
  1932. #region 窑炉窑车属性
  1933. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1934. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1935. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1936. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1937. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1938. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1939. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1940. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1941. productionData.Remarks = barcodeRow["Remarks"].ToString();
  1942. #endregion
  1943. #endregion
  1944. string OutSpecialRepairflag = "0";//干补标识
  1945. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1946. if (!string.IsNullOrEmpty(errMsg))
  1947. {
  1948. return errMsg;
  1949. }
  1950. #endregion
  1951. #region 修改在产产品数据的当前工序,清空返工工序字段
  1952. InProductionEntity addInProductionEntity = new InProductionEntity();
  1953. addInProductionEntity.BarCode = barcode;
  1954. //流程工序
  1955. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1956. // 当前工序
  1957. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1958. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1959. // 生产数据ID
  1960. addInProductionEntity.ProductionDataID = productionDataID;
  1961. // 工序模型
  1962. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1963. // 工序类别
  1964. addInProductionEntity.ModelType = procedure.ModelType;
  1965. // 生产工号
  1966. addInProductionEntity.UserID = workUserID;
  1967. // 缺陷标识
  1968. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1969. #region 更新在产表窑车窑炉字段
  1970. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1971. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1972. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1973. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1974. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1975. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1976. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1977. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1978. #endregion
  1979. // 执行修改
  1980. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1981. // 执行失败
  1982. if (!string.IsNullOrEmpty(errMsg))
  1983. {
  1984. return errMsg;
  1985. }
  1986. #endregion
  1987. //#region 添加生产者数据
  1988. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1989. //if (!string.IsNullOrEmpty(errMsg))
  1990. //{
  1991. // return errMsg;
  1992. //}
  1993. //#endregion
  1994. }
  1995. #region 插入窑车生产数据表
  1996. errMsg = AddKilnCarData(oracleTrConn,
  1997. accountDate,
  1998. kilnCarID,
  1999. kilnCarBatchNo,
  2000. workUserID,
  2001. workUserCode,
  2002. workUserName,
  2003. Remarks,
  2004. sUserInfo, maxClassesSettingID);
  2005. if (!string.IsNullOrEmpty(errMsg))
  2006. {
  2007. return errMsg;
  2008. }
  2009. #endregion
  2010. //#region 窑车生产者
  2011. //// 查询新插入的生产数据ID
  2012. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  2013. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  2014. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  2015. //if (!string.IsNullOrEmpty(errMsg))
  2016. //{
  2017. // return errMsg;
  2018. //}
  2019. //#endregion
  2020. }
  2021. return errMsg;
  2022. }
  2023. catch (Exception ex)
  2024. {
  2025. throw ex;
  2026. }
  2027. }
  2028. /// <summary>
  2029. /// 卸窑车计件
  2030. /// </summary>
  2031. /// <param name="oracleTrConn">数据连接对象</param>
  2032. /// <param name="procedure">工序对象</param>
  2033. /// <param name="barcodeTable">条码信息</param>
  2034. /// <param name="sUserInfo">用户基本信息</param>
  2035. /// <param name="goodsID">返回的产品ID</param>
  2036. /// <param name="goodsCode">返回的产品Code</param>
  2037. /// <param name="goodsName">返回的产品名称</param>
  2038. /// <returns>string</returns>
  2039. /// <remarks>
  2040. /// 张国印 2014.10.04 新建
  2041. /// </remarks>
  2042. private static string AddUnloadingKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  2043. out int goodsID, out string goodsCode, out string goodsName)
  2044. {
  2045. try
  2046. {
  2047. goodsID = Constant.INT_IS_ZERO;
  2048. goodsCode = string.Empty;
  2049. goodsName = string.Empty;
  2050. string groutingUserCode = string.Empty;
  2051. // 获得账务日期
  2052. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  2053. string errMsg = string.Empty;
  2054. // 生产工号
  2055. int workUserID = Constant.INT_IS_ZERO;
  2056. // 生产工号Code
  2057. string workUserCode = string.Empty;
  2058. // 生产工号Name
  2059. string workUserName = string.Empty;
  2060. // 本批采集的批次号
  2061. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  2062. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  2063. // 窑车批次号
  2064. string kilnCarBatchNo = null;//System.Guid.NewGuid().ToString().ToUpper();
  2065. // 窑车状态
  2066. string kilnCarStatus = string.Empty;
  2067. DataView dv = barcodeTable.DefaultView;
  2068. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  2069. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  2070. {
  2071. // 窑车Code
  2072. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  2073. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  2074. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  2075. string Remarks = dr[0]["Remarks"].ToString();
  2076. #region 校验窑车是否可出窑炉
  2077. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  2078. if (!string.IsNullOrEmpty(errMsg))
  2079. {
  2080. return errMsg;
  2081. }
  2082. #endregion
  2083. // 窑炉ID
  2084. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  2085. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  2086. // 窑车ID
  2087. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  2088. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  2089. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  2090. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  2091. if (!string.IsNullOrEmpty(errMsg))
  2092. {
  2093. return errMsg;
  2094. }
  2095. // 查询本次窑车产品的批次号
  2096. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  2097. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  2098. //更改窑车状态表入窑时间
  2099. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.UnloadCar, sUserInfo, procedure, kilnCarBatchNo);
  2100. if (!string.IsNullOrEmpty(errMsg))
  2101. {
  2102. return errMsg;
  2103. }
  2104. #endregion
  2105. // 条码信息
  2106. DataView dvFilter = barcodeTable.DefaultView;
  2107. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  2108. DataTable dtNew = dvFilter.ToTable();
  2109. int? maxClassesSettingID = null;
  2110. // 条码信息
  2111. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  2112. foreach (DataRow barcodeRow in dtNew.Rows)
  2113. {
  2114. // 条码
  2115. string barcode = barcodeRow["Barcode"].ToString();
  2116. // 生产工号
  2117. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  2118. workUserCode = barcodeRow["UserCode"].ToString();
  2119. workUserName = barcodeRow["UserName"].ToString();
  2120. // 查询新插入的生产数据ID
  2121. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  2122. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2123. int productionDataID = 0;
  2124. if (!string.IsNullOrEmpty(idStr))
  2125. {
  2126. productionDataID = int.Parse(idStr);
  2127. }
  2128. else
  2129. {
  2130. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2131. }
  2132. int? ClassesSettingID = null;//班次配置ID
  2133. #region 添加生产者数据
  2134. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  2135. if (!string.IsNullOrEmpty(errMsg))
  2136. {
  2137. return errMsg;
  2138. }
  2139. #endregion
  2140. maxClassesSettingID = ClassesSettingID;
  2141. #region 添加生产数据
  2142. ProductionDataEntity productionData = new ProductionDataEntity();
  2143. #region 属性赋值
  2144. productionData.ClassesSettingID = ClassesSettingID;
  2145. productionData.ProductionDataID = Convert.ToInt32(idStr);
  2146. productionData.Barcode = barcode;
  2147. productionData.CentralizedBatchNo = centralizedBatchNo;
  2148. productionData.ProductionLineID = procedure.ProductionLineID;
  2149. productionData.ProductionLineCode = procedure.ProductionlineCode;
  2150. productionData.ProductionLineName = procedure.ProductionlineName;
  2151. productionData.CompleteProcedureID = procedure.ProcedureID;
  2152. productionData.ProcedureCode = procedure.ProcedureCode;
  2153. productionData.ProcedureName = procedure.ProcedureName;
  2154. productionData.ProcedureModel = procedure.ProcedureModel;
  2155. productionData.ModelType = procedure.ModelType;
  2156. productionData.NodeType = procedure.NodeType;
  2157. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2158. productionData.ReworkProcedureID = null;
  2159. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2160. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2161. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2162. productionData.PieceType = procedure.PieceType;
  2163. ////// string sqlReFire = @"select
  2164. ////// isrefire
  2165. ////// from tp_pm_inproduction where barcode=:barcode
  2166. ////// ";
  2167. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  2168. ////// new OracleParameter(":barcode",barcode),
  2169. ////// };
  2170. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  2171. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  2172. ////// {
  2173. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  2174. ////// {
  2175. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  2176. ////// }
  2177. ////// }
  2178. productionData.OrganizationID = procedure.OrganizationID;
  2179. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  2180. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  2181. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  2182. productionData.UserID = workUserID;
  2183. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2184. productionData.UserName = barcodeRow["UserName"].ToString();
  2185. #region 窑炉窑车属性
  2186. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2187. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2188. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2189. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2190. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2191. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2192. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2193. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2194. productionData.Remarks = barcodeRow["Remarks"].ToString();
  2195. #endregion
  2196. #endregion
  2197. string OutSpecialRepairflag = "0";//干补标识
  2198. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2199. if (!string.IsNullOrEmpty(errMsg))
  2200. {
  2201. return errMsg;
  2202. }
  2203. #endregion
  2204. if (procedure.NodeType == Constant.ProcedureNodeType.Middle.GetHashCode())
  2205. {
  2206. #region 中间工序 修改在产产品数据的当前工序,清空返工工序字段
  2207. InProductionEntity addInProductionEntity = new InProductionEntity();
  2208. addInProductionEntity.BarCode = barcode;
  2209. //流程工序ID
  2210. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2211. // 当前工序
  2212. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2213. // 生产数据ID
  2214. addInProductionEntity.ProductionDataID = productionDataID;
  2215. // 工序模型
  2216. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2217. // 工序类别
  2218. addInProductionEntity.ModelType = procedure.ModelType;
  2219. // 生产工号
  2220. addInProductionEntity.UserID = workUserID;
  2221. // 缺陷标识
  2222. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2223. #region 更新在产表窑车窑炉字段
  2224. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2225. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2226. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2227. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2228. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2229. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2230. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2231. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2232. #endregion
  2233. // 执行修改
  2234. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2235. // 执行失败
  2236. if (!string.IsNullOrEmpty(errMsg))
  2237. {
  2238. return errMsg;
  2239. }
  2240. #endregion
  2241. }
  2242. else if (procedure.NodeType == Constant.ProcedureNodeType.End.GetHashCode())
  2243. {
  2244. #region 结束工序 添加成品数据 删除在产产品数据
  2245. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  2246. finishedProduct.BarCode = barcode;
  2247. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  2248. if (!string.IsNullOrEmpty(errMsg))
  2249. {
  2250. return errMsg;
  2251. }
  2252. InProductionEntity delInProductionEntity = new InProductionEntity();
  2253. delInProductionEntity.BarCode = barcode;
  2254. // 执行删除 在产数据
  2255. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  2256. // 执行失败
  2257. if (!string.IsNullOrEmpty(errMsg))
  2258. {
  2259. return errMsg;
  2260. }
  2261. #endregion
  2262. }
  2263. //#region 添加生产者数据
  2264. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2265. //if (!string.IsNullOrEmpty(errMsg))
  2266. //{
  2267. // return errMsg;
  2268. //}
  2269. //#endregion
  2270. }
  2271. #region 插入窑车生产数据表
  2272. errMsg = AddKilnCarData(oracleTrConn,
  2273. accountDate,
  2274. kilnCarID,
  2275. kilnCarBatchNo,
  2276. workUserID,
  2277. workUserCode,
  2278. workUserName,
  2279. Remarks,
  2280. sUserInfo, maxClassesSettingID);
  2281. if (!string.IsNullOrEmpty(errMsg))
  2282. {
  2283. return errMsg;
  2284. }
  2285. #endregion
  2286. //#region 窑车生产者
  2287. //// 查询新插入的生产数据ID
  2288. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  2289. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  2290. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  2291. //if (!string.IsNullOrEmpty(errMsg))
  2292. //{
  2293. // return errMsg;
  2294. //}
  2295. //#endregion
  2296. #region 删除TP_PM_KilnCarGoods数据 按照窑车ID
  2297. errMsg = DeleteKilnCarGoodsByKilnCarID(oracleTrConn, kilnCarID);
  2298. if (!string.IsNullOrEmpty(errMsg))
  2299. {
  2300. return errMsg;
  2301. }
  2302. #endregion
  2303. }
  2304. return errMsg;
  2305. }
  2306. catch (Exception ex)
  2307. {
  2308. throw ex;
  2309. }
  2310. }
  2311. /// <summary>
  2312. /// 窑车补件计件
  2313. /// </summary>
  2314. /// <param name="oracleTrConn">数据连接对象</param>
  2315. /// <param name="procedure">工序对象</param>
  2316. /// <param name="barcodeTable">条码信息</param>
  2317. /// <param name="sUserInfo">用户基本信息</param>
  2318. /// <param name="goodsID">返回的产品ID</param>
  2319. /// <param name="goodsCode">返回的产品Code</param>
  2320. /// <param name="goodsName">返回的产品名称</param>
  2321. /// <returns>string</returns>
  2322. /// <remarks>
  2323. /// 张国印 2014.10.05 新建
  2324. /// </remarks>
  2325. private static string AddKilnCarSupplement(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  2326. out int goodsID, out string goodsCode, out string goodsName)
  2327. {
  2328. try
  2329. {
  2330. goodsID = Constant.INT_IS_ZERO;
  2331. goodsCode = null;
  2332. goodsName = null;
  2333. string groutingUserCode = string.Empty;
  2334. // 获得账务日期
  2335. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  2336. string errMsg = "";
  2337. // 生产工号
  2338. int workUserID = Constant.INT_IS_ZERO;
  2339. // 生产工号Code
  2340. string workUserCode = string.Empty;
  2341. // 生产工号Name
  2342. string workUserName = string.Empty;
  2343. // 本批采集的批次号
  2344. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  2345. // 窑车Code
  2346. string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  2347. // 窑车批次号
  2348. string kilnCarBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  2349. // 窑车状态
  2350. string kilnCarStatus = string.Empty;
  2351. #region 校验窑车是否可装车
  2352. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  2353. if (!string.IsNullOrEmpty(errMsg))
  2354. {
  2355. return errMsg;
  2356. }
  2357. #endregion
  2358. // 窑炉ID
  2359. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  2360. //// 窑车ID
  2361. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  2362. int kilnID = 0;
  2363. // 窑车ID
  2364. int kilnCarID = 0;
  2365. // 条码信息
  2366. foreach (DataRow barcodeRow in barcodeTable.Rows)
  2367. {
  2368. kilnID = Convert.ToInt32(barcodeRow["kilnID"]);
  2369. kilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2370. //窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  2371. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  2372. // 条码
  2373. string barcode = barcodeRow["Barcode"].ToString();
  2374. // 生产工号
  2375. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  2376. workUserCode = barcodeRow["UserCode"].ToString();
  2377. workUserName = barcodeRow["UserName"].ToString();
  2378. //#region 校验条码有效性
  2379. //errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2380. //if (!string.IsNullOrEmpty(errMsg))
  2381. //{
  2382. // return errMsg;
  2383. //}
  2384. //#endregion
  2385. if (procedure.CollectType == 1)
  2386. {
  2387. #region 校验条码有效性
  2388. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2389. if (!string.IsNullOrEmpty(errMsg))
  2390. {
  2391. return errMsg;
  2392. }
  2393. #endregion
  2394. }
  2395. else
  2396. {
  2397. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  2398. tp_pm_groutingdailydetail.goodscode,
  2399. tp_pm_groutingdailydetail.goodsname,
  2400. tp_pm_groutingdailydetail.usercode as groutingUserCode
  2401. from tp_pm_groutingdailydetail where barcode=:barcode
  2402. ";
  2403. OracleParameter[] ReFireparas = new OracleParameter[] {
  2404. new OracleParameter(":barcode",barcode),
  2405. };
  2406. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  2407. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  2408. {
  2409. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  2410. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  2411. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  2412. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  2413. }
  2414. }
  2415. // 查询新插入的生产数据ID
  2416. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  2417. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2418. int productionDataID = 0;
  2419. if (!string.IsNullOrEmpty(idStr))
  2420. {
  2421. productionDataID = int.Parse(idStr);
  2422. }
  2423. else
  2424. {
  2425. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2426. }
  2427. int? ClassesSettingID = null;//班次配置ID
  2428. #region 添加生产者数据
  2429. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  2430. if (!string.IsNullOrEmpty(errMsg))
  2431. {
  2432. return errMsg;
  2433. }
  2434. #endregion
  2435. #region 添加生产数据
  2436. ProductionDataEntity productionData = new ProductionDataEntity();
  2437. #region 属性赋值
  2438. productionData.ClassesSettingID = ClassesSettingID;
  2439. productionData.ProductionDataID = Convert.ToInt32(idStr);
  2440. productionData.Barcode = barcode;
  2441. productionData.CentralizedBatchNo = centralizedBatchNo;
  2442. productionData.ProductionLineID = procedure.ProductionLineID;
  2443. productionData.ProductionLineCode = procedure.ProductionlineCode;
  2444. productionData.ProductionLineName = procedure.ProductionlineName;
  2445. productionData.CompleteProcedureID = procedure.ProcedureID;
  2446. productionData.ProcedureCode = procedure.ProcedureCode;
  2447. productionData.ProcedureName = procedure.ProcedureName;
  2448. productionData.ProcedureModel = procedure.ProcedureModel;
  2449. productionData.ModelType = procedure.ModelType;
  2450. productionData.NodeType = procedure.NodeType;
  2451. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2452. productionData.ReworkProcedureID = null;
  2453. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2454. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2455. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2456. productionData.OrganizationID = procedure.OrganizationID;
  2457. productionData.GoodsID = goodsID;
  2458. productionData.GoodsCode = goodsCode;
  2459. productionData.GoodsName = goodsName;
  2460. productionData.UserID = workUserID;
  2461. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2462. productionData.UserName = barcodeRow["UserName"].ToString();
  2463. productionData.PieceType = procedure.PieceType;
  2464. #region 窑炉窑车属性
  2465. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2466. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2467. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2468. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2469. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2470. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2471. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2472. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2473. #endregion
  2474. #endregion
  2475. string OutSpecialRepairflag = "0";//干补标识
  2476. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2477. if (!string.IsNullOrEmpty(errMsg))
  2478. {
  2479. return errMsg;
  2480. }
  2481. #endregion
  2482. #region 修改在产产品数据的当前工序,清空返工工序字段
  2483. InProductionEntity addInProductionEntity = new InProductionEntity();
  2484. addInProductionEntity.BarCode = barcode;
  2485. //流程工序
  2486. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2487. // 当前工序
  2488. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  2489. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2490. //生产数据ID
  2491. addInProductionEntity.ProductionDataID = productionDataID;
  2492. // 工序模型
  2493. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2494. // 工序类别
  2495. addInProductionEntity.ModelType = procedure.ModelType;
  2496. // 生产工号
  2497. addInProductionEntity.UserID = workUserID;
  2498. // 缺陷标识
  2499. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2500. #region 更新在产表窑车窑炉字段
  2501. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2502. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2503. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2504. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2505. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2506. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2507. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2508. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2509. #endregion
  2510. // 执行修改
  2511. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2512. // 执行失败
  2513. if (!string.IsNullOrEmpty(errMsg))
  2514. {
  2515. return errMsg;
  2516. }
  2517. #endregion
  2518. //#region 添加生产者数据
  2519. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2520. //if (!string.IsNullOrEmpty(errMsg))
  2521. //{
  2522. // return errMsg;
  2523. //}
  2524. //#endregion
  2525. #region 插入窑车产品表
  2526. errMsg = AddKilnCarGoods(oracleTrConn,
  2527. barcode,
  2528. kilnCarID,
  2529. goodsID,
  2530. productionData.KilnCarPosition.Value,
  2531. kilnCarBatchNo,
  2532. workUserID,
  2533. workUserCode,
  2534. workUserName,
  2535. sUserInfo);
  2536. if (!string.IsNullOrEmpty(errMsg))
  2537. {
  2538. return errMsg;
  2539. }
  2540. #endregion
  2541. }
  2542. return errMsg;
  2543. }
  2544. catch (Exception ex)
  2545. {
  2546. throw ex;
  2547. }
  2548. }
  2549. /// <summary>
  2550. /// 插入窑车生产数据表(装车)
  2551. /// </summary>
  2552. /// <param name="oracleTrConn">连接对象</param>
  2553. /// <param name="accountDate">账务日期</param>
  2554. /// <param name="kilnCarID">窑车ID</param>
  2555. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2556. /// <param name="workUserID">生产工号ID</param>
  2557. /// <param name="workUserCode">生产工号Code</param>
  2558. /// <param name="workUserName">生产工号Name</param>
  2559. /// <param name="sUserInfo">用户基本信息</param>
  2560. /// <returns>string</returns>
  2561. private static string AddKilnCarDataCreateTime(IDBTransaction oracleTrConn,
  2562. DateTime accountDate,
  2563. int kilnCarID,
  2564. string kilnCarBatchNo,
  2565. int workUserID,
  2566. string workUserCode,
  2567. string workUserName,
  2568. string remarks,
  2569. DateTime? createtime,
  2570. SUserInfo sUserInfo)
  2571. {
  2572. #region SQL
  2573. string sql = "insert into tp_pm_kilncardata"
  2574. + " (kilncarbatchno,"
  2575. + " kilncarid,"
  2576. + " kilnid,"
  2577. + " productionlineid,"
  2578. + " procedureid,"
  2579. + " procedurecode,"
  2580. + " procedurename,"
  2581. + " proceduremodel,"
  2582. + " modeltype,"
  2583. + " piecetype,"
  2584. + " kilncarstatus,"
  2585. + " UserID,"
  2586. + " UserCode,"
  2587. + " UserName,"
  2588. + " loadingtime,"
  2589. + " intokilntime,"
  2590. + " outkilntime,"
  2591. + " unloadingtime,"
  2592. + " accountdate,"
  2593. + " accountid,"
  2594. + " createuserid,"
  2595. + " updateuserid,"
  2596. + " createtime,"
  2597. + " remarks)"
  2598. + " select "
  2599. + " :pkilncarbatchno,"
  2600. + " kilncarid,"
  2601. + " kilnid,"
  2602. + " productionlineid,"
  2603. + " procedureid,"
  2604. + " procedurecode,"
  2605. + " procedurename,"
  2606. + " proceduremodel,"
  2607. + " modeltype,"
  2608. + " piecetype,"
  2609. + " kilncarstatus,"
  2610. + " :puserID,"
  2611. + " :puserCode,"
  2612. + " :puserName,"
  2613. + " loadingtime,"
  2614. + " intokilntime,"
  2615. + " outkilntime,"
  2616. + " unloadingtime,"
  2617. + " :paccountdate,"
  2618. + " :paccountid,"
  2619. + " :pcreateuserid,"
  2620. + " :pupdateuserid,"
  2621. + " :createtime,"
  2622. + " :remarks"
  2623. + " from tp_pm_kilncarstatus"
  2624. + " where kilncarid = :pkilncarid";
  2625. #endregion
  2626. #region 参数
  2627. OracleParameter[] paras = new OracleParameter[] {
  2628. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2629. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2630. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2631. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2632. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2633. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2634. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2635. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2636. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2637. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2638. new OracleParameter(":createtime",OracleDbType.Date,Convert.ToDateTime(createtime),ParameterDirection.Input),
  2639. };
  2640. #endregion
  2641. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2642. // 保存失败
  2643. if (result != Constant.INT_IS_ONE)
  2644. {
  2645. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2646. }
  2647. // 保存成功返回null
  2648. return null;
  2649. }
  2650. /// <summary>
  2651. /// 插入窑车生产数据表
  2652. /// </summary>
  2653. /// <param name="oracleTrConn">连接对象</param>
  2654. /// <param name="accountDate">账务日期</param>
  2655. /// <param name="kilnCarID">窑车ID</param>
  2656. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2657. /// <param name="workUserID">生产工号ID</param>
  2658. /// <param name="workUserCode">生产工号Code</param>
  2659. /// <param name="workUserName">生产工号Name</param>
  2660. /// <param name="sUserInfo">用户基本信息</param>
  2661. /// <returns>string</returns>
  2662. private static string AddKilnCarData(IDBTransaction oracleTrConn,
  2663. DateTime accountDate,
  2664. int kilnCarID,
  2665. string kilnCarBatchNo,
  2666. int workUserID,
  2667. string workUserCode,
  2668. string workUserName,
  2669. string remarks,
  2670. SUserInfo sUserInfo, int? ClassesSettingID)
  2671. {
  2672. #region SQL
  2673. string sql = "insert into tp_pm_kilncardata"
  2674. + " (kilncarbatchno,"
  2675. + " kilncarid,"
  2676. + " kilnid,"
  2677. + " productionlineid,"
  2678. + " procedureid,"
  2679. + " procedurecode,"
  2680. + " procedurename,"
  2681. + " proceduremodel,"
  2682. + " modeltype,"
  2683. + " piecetype,"
  2684. + " kilncarstatus,"
  2685. + " UserID,"
  2686. + " UserCode,"
  2687. + " UserName,"
  2688. + " loadingtime,"
  2689. + " intokilntime,"
  2690. + " outkilntime,"
  2691. + " unloadingtime,"
  2692. + " accountdate,"
  2693. + " accountid,"
  2694. + " createuserid,"
  2695. + " updateuserid,"
  2696. + " classesSettingID,"
  2697. + " remarks)"
  2698. + " select "
  2699. + " :pkilncarbatchno,"
  2700. + " kilncarid,"
  2701. + " kilnid,"
  2702. + " productionlineid,"
  2703. + " procedureid,"
  2704. + " procedurecode,"
  2705. + " procedurename,"
  2706. + " proceduremodel,"
  2707. + " modeltype,"
  2708. + " piecetype,"
  2709. + " kilncarstatus,"
  2710. + " :puserID,"
  2711. + " :puserCode,"
  2712. + " :puserName,"
  2713. + " loadingtime,"
  2714. + " intokilntime,"
  2715. + " outkilntime,"
  2716. + " unloadingtime,"
  2717. + " :paccountdate,"
  2718. + " :paccountid,"
  2719. + " :pcreateuserid,"
  2720. + " :pupdateuserid,"
  2721. + " :classesSettingID,"
  2722. + " :remarks"
  2723. + " from tp_pm_kilncarstatus"
  2724. + " where kilncarid = :pkilncarid";
  2725. #endregion
  2726. #region 参数
  2727. OracleParameter[] paras = new OracleParameter[] {
  2728. new OracleParameter(":classesSettingID",OracleDbType.Int32,ClassesSettingID,ParameterDirection.Input),
  2729. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2730. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2731. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2732. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2733. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2734. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2735. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2736. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2737. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2738. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2739. };
  2740. #endregion
  2741. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2742. // 保存失败
  2743. if (result != Constant.INT_IS_ONE)
  2744. {
  2745. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2746. }
  2747. // 保存成功返回null
  2748. return null;
  2749. }
  2750. /// <summary>
  2751. /// 插入窑车产品表
  2752. /// </summary>
  2753. /// <param name="oracleTrConn">连接对象</param>
  2754. /// <param name="barcode">条码</param>
  2755. /// <param name="kilnCarID">窑车号</param>
  2756. /// <param name="goodsID">产品ID</param>
  2757. /// <param name="KilnCarPosition">窑车位置</param>
  2758. /// <param name="kilnCarBatchNo">装车批次</param>
  2759. /// <param name="sUserInfo">用户基本信息</param>
  2760. /// <returns>string</returns>
  2761. private static string AddKilnCarGoods(IDBTransaction oracleTrConn, string barcode, int kilnCarID, int goodsID, int KilnCarPosition, string kilnCarBatchNo, int workUserID,
  2762. string workUserCode,
  2763. string workUserName, SUserInfo sUserInfo)
  2764. {
  2765. string sqlExist = "select 1 from tp_pm_kilncargoods where barcode=:barcode and accountid=:accountid";
  2766. OracleParameter[] parasExist = new OracleParameter[] {
  2767. new OracleParameter(":barcode",barcode),
  2768. new OracleParameter(":accountid",sUserInfo.AccountID),
  2769. };
  2770. oracleTrConn.ExecuteNonQuery(sqlExist, parasExist);
  2771. DataSet dsExist = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  2772. if (dsExist != null && dsExist.Tables[0].Rows.Count == 0)
  2773. {
  2774. string sql = "insert into tp_pm_kilncargoods"
  2775. + " (barcode,"
  2776. + " kilncarid,"
  2777. + " goodsid,"
  2778. + " kilncarposition,"
  2779. + " kilncarbatchno,"
  2780. + " accountid,"
  2781. + " userid,"
  2782. + " usercode,"
  2783. + " username,"
  2784. + " createuserid,"
  2785. + " updateuserid)"
  2786. + " values"
  2787. + " (:barcode,"
  2788. + " :kilncarid,"
  2789. + " :goodsid,"
  2790. + " :kilncarposition,"
  2791. + " :kilncarbatchno,"
  2792. + " :accountid,"
  2793. + " :userid,"
  2794. + " :usercode,"
  2795. + " :username,"
  2796. + " :createuserid,"
  2797. + " :updateuserid)";
  2798. #region 参数
  2799. OracleParameter[] paras = new OracleParameter[] {
  2800. new OracleParameter(":barcode",barcode),
  2801. new OracleParameter(":kilncarid",kilnCarID),
  2802. new OracleParameter(":goodsid",goodsID),
  2803. new OracleParameter(":kilncarposition",KilnCarPosition),
  2804. new OracleParameter(":kilncarbatchno",kilnCarBatchNo),
  2805. new OracleParameter(":accountid",sUserInfo.AccountID),
  2806. new OracleParameter(":createuserid",sUserInfo.UserID),
  2807. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2808. new OracleParameter(":userid",workUserID),
  2809. new OracleParameter(":usercode",workUserCode),
  2810. new OracleParameter(":username",workUserName),
  2811. };
  2812. #endregion
  2813. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2814. // 保存失败
  2815. if (result != Constant.INT_IS_ONE)
  2816. {
  2817. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2818. }
  2819. }
  2820. // 保存成功返回null
  2821. return null;
  2822. }
  2823. /// <summary>
  2824. /// 查询本次批次号
  2825. /// </summary>
  2826. /// <param name="oracleTrConn">连接对象</param>
  2827. /// <param name="kilnCarID">窑车ID</param>
  2828. /// <returns>string</returns>
  2829. private static string GetKilnCarBatchNoByKilnCarID(IDBTransaction oracleTrConn, int kilnCarID)
  2830. {
  2831. string sql = "SELECT Max(KilnCarBatchNo) FROM TP_PM_KilnCarGoods where KilnCarID = :kilnCarID";
  2832. #region 参数
  2833. OracleParameter[] paras = new OracleParameter[] {
  2834. new OracleParameter(":kilnCarID",kilnCarID),
  2835. };
  2836. #endregion
  2837. string batchNo = oracleTrConn.GetSqlResultToStr(sql, paras);
  2838. if (!string.IsNullOrEmpty(batchNo))
  2839. {
  2840. return batchNo;
  2841. }
  2842. else
  2843. {
  2844. // 自动生成窑车烧成批次号
  2845. //return System.Guid.NewGuid().ToString().ToUpper();
  2846. return GetFiredKilnCarBatchNo(oracleTrConn, kilnCarID);
  2847. }
  2848. }
  2849. /// <summary>
  2850. /// 自动生成窑车烧成批次号
  2851. /// </summary>
  2852. /// <param name="oracleTrConn"></param>
  2853. /// <param name="kilnCarID"></param>
  2854. /// <returns></returns>
  2855. public static string GetFiredKilnCarBatchNo(IDBTransaction oracleTrConn, int kilnCarID)
  2856. {
  2857. DateTime now = DateTime.Now.Date;
  2858. string sqlString = "select k.kilnid, k.kilncode, k.fireddate, k.firedbatchno, kc.kilncarcode, k.sk_date, k.sk_batchno\n" +
  2859. " from TP_MST_Kiln k\n" +
  2860. " inner join tp_mst_kilncar kc\n" +
  2861. " on k.kilnid = kc.kilnid\n" +
  2862. " where kc.kilncarid = :kilncarid\n" +
  2863. //" and k.fireddate = :fireddate"
  2864. " for update";
  2865. OracleParameter[] paras = new OracleParameter[] {
  2866. new OracleParameter(":kilncarid",kilnCarID),
  2867. //new OracleParameter(":fireddate",now),
  2868. };
  2869. DataTable dt = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  2870. if (dt == null || dt.Rows.Count == 0)
  2871. {
  2872. // 窑车、窑炉不存在
  2873. return null;
  2874. }
  2875. int kilnid = Convert.ToInt32(dt.Rows[0]["kilnid"]);
  2876. string kilncode = dt.Rows[0]["kilncode"] + "";
  2877. string kilncarcode = dt.Rows[0]["kilncarcode"] + "";
  2878. int sk_date = Convert.ToInt32(dt.Rows[0]["sk_date"]);
  2879. int sk_batchno = Convert.ToInt32(dt.Rows[0]["sk_batchno"]);
  2880. int firedbatchno = 0;
  2881. if (dt.Rows[0]["fireddate"] == null || dt.Rows[0]["fireddate"] == DBNull.Value)
  2882. {
  2883. firedbatchno = -1;
  2884. }
  2885. else
  2886. {
  2887. DateTime fireddate = Convert.ToDateTime(dt.Rows[0]["fireddate"]);
  2888. if (now > fireddate)
  2889. {
  2890. firedbatchno = -1;
  2891. }
  2892. }
  2893. if (firedbatchno < 0)
  2894. {
  2895. // 当日第一车
  2896. sqlString = "update TP_MST_Kiln k\n" +
  2897. " set k.fireddate = :fireddate, k.firedbatchno = 1\n" +
  2898. " where k.kilnid = :kilnid";
  2899. paras = new OracleParameter[] {
  2900. new OracleParameter(":kilnid",kilnid),
  2901. new OracleParameter(":fireddate",now),
  2902. };
  2903. oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2904. return $"{kilncode}${sk_date}${sk_batchno.ToString("000")}${kilncarcode}${now.ToString("yyyyMMdd")}$001";
  2905. }
  2906. firedbatchno = Convert.ToInt32(dt.Rows[0]["firedbatchno"]) + 1;
  2907. sqlString = "update TP_MST_Kiln k\n" +
  2908. " set k.firedbatchno = k.firedbatchno + 1\n" +
  2909. " where k.kilnid = :kilnid";
  2910. paras = new OracleParameter[] {
  2911. new OracleParameter(":kilnid",kilnid),
  2912. };
  2913. oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2914. return $"{kilncode}${sk_date}${sk_batchno.ToString("000")}${kilncarcode}${now.ToString("yyyyMMdd")}${firedbatchno.ToString("000")}";
  2915. }
  2916. /// <summary>
  2917. /// 插入窑车状态表
  2918. /// </summary>
  2919. /// <param name="oracleTrConn">连接对象</param>
  2920. /// <param name="procedure">工序ID</param>
  2921. /// <param name="kilnCarID">窑车ID</param>
  2922. /// <param name="kilnID">窑炉ID</param>
  2923. /// <param name="sUserInfo">用户基本信息</param>
  2924. /// <returns>string</returns>
  2925. private static string AddkilnCarStatus(IDBTransaction oracleTrConn, ProcedureEntity procedure, int kilnCarID, int kilnID, string kilnCarBatchNo, SUserInfo sUserInfo)
  2926. {
  2927. #region SQL
  2928. string sql = " insert into tp_pm_kilncarstatus "
  2929. + " (kilncarid, "
  2930. + " kilnid, "
  2931. + " productionlineid, "
  2932. + " procedureid, "
  2933. + " procedurecode, "
  2934. + " procedurename, "
  2935. + " proceduremodel, "
  2936. + " modeltype, "
  2937. + " piecetype, "
  2938. + " kilncarstatus, "
  2939. + " loadingtime, "
  2940. + " accountid, "
  2941. + " createuserid, "
  2942. + " updateuserid,kilnCarBatchNo) "
  2943. + " values "
  2944. + " (:kilncarid, "
  2945. + " :kilnid, "
  2946. + " :productionlineid, "
  2947. + " :procedureid, "
  2948. + " :procedurecode, "
  2949. + " :procedurename, "
  2950. + " :proceduremodel, "
  2951. + " :modeltype, "
  2952. + " :piecetype, "
  2953. + " '0', "
  2954. + " sysdate, "
  2955. + " :accountid, "
  2956. + " :createuserid, "
  2957. + " :updateuserid,:kilnCarBatchNo)";
  2958. #endregion
  2959. #region 参数
  2960. OracleParameter[] paras = new OracleParameter[] {
  2961. new OracleParameter(":kilncarid",kilnCarID),
  2962. new OracleParameter(":kilnid",kilnID),
  2963. new OracleParameter(":productionlineid",procedure.ProductionLineID),
  2964. new OracleParameter(":procedureid",procedure.ProcedureID),
  2965. new OracleParameter(":procedurecode",procedure.ProcedureCode),
  2966. new OracleParameter(":procedurename",procedure.ProcedureName),
  2967. new OracleParameter(":proceduremodel",procedure.ProcedureModel),
  2968. new OracleParameter(":modeltype",procedure.ModelType),
  2969. new OracleParameter(":piecetype",procedure.PieceType),
  2970. new OracleParameter(":accountID",sUserInfo.AccountID),
  2971. new OracleParameter(":createuserid",sUserInfo.UserID),
  2972. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2973. new OracleParameter(":kilnCarBatchNo",kilnCarBatchNo),
  2974. };
  2975. #endregion
  2976. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2977. // 保存失败
  2978. if (result != Constant.INT_IS_ONE)
  2979. {
  2980. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2981. }
  2982. // 保存成功返回null
  2983. return null;
  2984. }
  2985. /// <summary>
  2986. /// 更新窑车状态表中的对应的时间
  2987. /// </summary>
  2988. /// <param name="oracleTrConn">数据连接</param>
  2989. /// <param name="kilnCarID">窑车ID</param>
  2990. /// <param name="pModelType">操作类型</param>
  2991. /// <param name="sUserInfo">用户基本信息</param>
  2992. /// <returns>
  2993. /// 张国印 2014.10.04 新建
  2994. /// </returns>
  2995. private static string UpdatekilnCarStatus(IDBTransaction oracleTrConn, int kilnCarID, Constant.ProcedureModelType pModelType, SUserInfo sUserInfo, ProcedureEntity procedure, string kilnCarBatchNo)
  2996. {
  2997. if (pModelType == Constant.ProcedureModelType.LoadCar)
  2998. {
  2999. //procedure.ProcedureID,
  3000. //procedure.ProcedureCode,
  3001. //procedure.ProcedureName,
  3002. //procedure.ModelType
  3003. #region 装窑车操作时,更新tp_pm_kilncarstatus的装车时间
  3004. #region SQL语句和参数
  3005. string sql = " Update tp_pm_kilncarstatus Set"
  3006. + " KilnCarStatus = :pKilnCarStatus, "
  3007. + " LoadingTime = sysdate, "
  3008. + " IntoKilnTime = null, "
  3009. + " OutKilnTime = null, "
  3010. + " UnloadingTime = null, "
  3011. + " UpdateUserID = :pUpdateUserID, "
  3012. + " ProcedureID = :ProcedureID, "
  3013. + " ProcedureCode = :ProcedureCode, "
  3014. + " ProcedureName = :ProcedureName, "
  3015. + " ModelType = :ModelType, "
  3016. + " kilnCarBatchNo = :kilnCarBatchNo "
  3017. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  3018. OracleParameter[] paras = new OracleParameter[]
  3019. {
  3020. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  3021. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3022. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  3023. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3024. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  3025. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  3026. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  3027. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  3028. new OracleParameter(":kilnCarBatchNo", OracleDbType.Varchar2, kilnCarBatchNo, ParameterDirection.Input),
  3029. };
  3030. #endregion
  3031. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3032. // 保存失败
  3033. if (result != Constant.INT_IS_ONE)
  3034. {
  3035. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  3036. }
  3037. #endregion
  3038. }
  3039. else if (pModelType == Constant.ProcedureModelType.IntoKiln)
  3040. {
  3041. #region 入窑操作时,更新tp_pm_kilncarstatus的入窑时间
  3042. #region SQL语句和参数
  3043. string sql = " Update tp_pm_kilncarstatus Set"
  3044. + " KilnCarStatus = :pKilnCarStatus, "
  3045. + " IntoKilnTime = sysdate, "
  3046. + " UpdateUserID = :pUpdateUserID, "
  3047. + " ProcedureID = :ProcedureID, "
  3048. + " ProcedureCode = :ProcedureCode, "
  3049. + " ProcedureName = :ProcedureName, "
  3050. + " ModelType = :ModelType "
  3051. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  3052. OracleParameter[] paras = new OracleParameter[]
  3053. {
  3054. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 1, ParameterDirection.Input),
  3055. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3056. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  3057. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3058. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  3059. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  3060. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  3061. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  3062. };
  3063. #endregion
  3064. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3065. // 保存失败
  3066. if (result != Constant.INT_IS_ONE)
  3067. {
  3068. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  3069. }
  3070. #endregion
  3071. }
  3072. else if (pModelType == Constant.ProcedureModelType.OutKiln)
  3073. {
  3074. #region 出窑操作时,更新tp_pm_kilncarstatus的出窑时间
  3075. #region SQL语句和参数
  3076. string sql = " Update tp_pm_kilncarstatus Set"
  3077. + " OutKilnTime = sysdate, "
  3078. + " UpdateUserID = :pUpdateUserID, "
  3079. + " ProcedureID = :ProcedureID, "
  3080. + " ProcedureCode = :ProcedureCode, "
  3081. + " ProcedureName = :ProcedureName, "
  3082. + " ModelType = :ModelType "
  3083. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  3084. OracleParameter[] paras = new OracleParameter[]
  3085. {
  3086. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3087. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  3088. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3089. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  3090. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  3091. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  3092. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  3093. };
  3094. #endregion
  3095. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3096. // 保存失败
  3097. if (result != Constant.INT_IS_ONE)
  3098. {
  3099. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  3100. }
  3101. #endregion
  3102. }
  3103. else if (pModelType == Constant.ProcedureModelType.UnloadCar)
  3104. {
  3105. #region 卸窑车操作时,更新tp_pm_kilncarstatus的卸窑车时间
  3106. #region SQL语句和参数
  3107. string sql = " Update tp_pm_kilncarstatus Set"
  3108. + " KilnCarStatus = :pKilnCarStatus, "
  3109. //+ " LoadingTime = null, "
  3110. //+ " IntoKilnTime = null, "
  3111. //+ " OutKilnTime = null, "
  3112. + " UnloadingTime = sysdate, "
  3113. + " UpdateUserID = :pUpdateUserID, "
  3114. + " ProcedureID = :ProcedureID, "
  3115. + " ProcedureCode = :ProcedureCode, "
  3116. + " ProcedureName = :ProcedureName, "
  3117. + " ModelType = :ModelType "
  3118. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  3119. OracleParameter[] paras = new OracleParameter[]
  3120. {
  3121. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  3122. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3123. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  3124. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3125. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  3126. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  3127. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  3128. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  3129. };
  3130. #endregion
  3131. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3132. // 保存失败
  3133. if (result != Constant.INT_IS_ONE)
  3134. {
  3135. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  3136. }
  3137. #endregion
  3138. }
  3139. // 保存成功返回null
  3140. return string.Empty;
  3141. }
  3142. /// <summary>
  3143. /// 校验窑车是否可用
  3144. /// </summary>
  3145. /// <param name="oracleTrConn">连接对象</param>
  3146. /// <param name="pProcedureId">工序ID</param>
  3147. /// <param name="kilnCarCode">窑车号</param>
  3148. /// <param name="pModelType">操作类型</param>
  3149. /// <param name="sUserInfo">用户基本信息</param>
  3150. /// <param name="kilnCarStatus">窑车状态</param>
  3151. /// <returns>string</returns>
  3152. private static string CheckKilnCarrStatus(IDBTransaction oracleTrConn, int pProcedureId, string kilnCarCode, int pModelType, SUserInfo sUserInfo, out string kilnCarStatus)
  3153. {
  3154. kilnCarStatus = string.Empty;
  3155. OracleParameter[] paras = new OracleParameter[]{
  3156. new OracleParameter("in_accountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3157. new OracleParameter("in_kilnCarCode",OracleDbType.NVarchar2, kilnCarCode,ParameterDirection.Input),
  3158. new OracleParameter("in_modelType",OracleDbType.Int32, pModelType,ParameterDirection.Input),
  3159. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  3160. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  3161. new OracleParameter("in_procedureid",OracleDbType.Int32, pProcedureId,ParameterDirection.Input),
  3162. // 验证能否卸窑
  3163. new OracleParameter("in_UserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3164. };
  3165. DataSet returnDataSet = oracleTrConn.ExecStoredProcedure("PRO_PM_CheckKilnCar", paras);
  3166. string errMsg = paras[3].Value.ToString() == "null" ? string.Empty : paras[3].Value.ToString();
  3167. if (string.IsNullOrEmpty(errMsg))
  3168. {
  3169. if (pModelType == (int)Constant.ProcedureModelType.LoadCar)
  3170. {
  3171. kilnCarStatus = returnDataSet.Tables[0].Rows[0]["KilnCarStatus"].ToString();
  3172. }
  3173. }
  3174. return errMsg;
  3175. }
  3176. /// <summary>
  3177. /// 添加生产者
  3178. /// </summary>
  3179. /// <param name="oracleTrConn">连接对象</param>
  3180. /// <param name="accountDate">账务日期</param>
  3181. /// <param name="productionDataID">生产数据ID</param>
  3182. /// <param name="workUserID">生产工号ID</param>
  3183. /// <param name="workUserCode">生产工号Code</param>
  3184. /// <param name="sUserInfo">用户基本信息</param>
  3185. /// <returns>string</returns>
  3186. private static string AddProducer(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo, ref int? ClassesSettingID)
  3187. {
  3188. // 参数
  3189. OracleParameter[] paras;
  3190. #region 查询班次配置表是否有数据
  3191. string sql = "select max(ClassesSettingID)"
  3192. + " from tp_pc_classessetting"
  3193. + " where Valueflag =1 and AccountID = :accountID"
  3194. + " and UserID = :userID"
  3195. + " and AccountDate = :accountDate";
  3196. paras = new OracleParameter[] {
  3197. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3198. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3199. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3200. };
  3201. string countStr = oracleTrConn.GetSqlResultToStr(sql, paras);
  3202. int classesSettingID = 0;
  3203. #endregion
  3204. #region 没有班次配置数据,将工号所属员工插入班次配置表中
  3205. if (string.IsNullOrEmpty(countStr) || Constant.INT_IS_ZERO == int.Parse(countStr))
  3206. {
  3207. // 查询新插入的班次配置表ID
  3208. sql = "select SEQ_PC_ClassesSetting_ID.nextval from dual";
  3209. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3210. // 新插入的班次配置表ID
  3211. if (!string.IsNullOrEmpty(idStr))
  3212. {
  3213. classesSettingID = int.Parse(idStr);
  3214. }
  3215. else
  3216. {
  3217. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3218. }
  3219. ClassesSettingID = Convert.ToInt32(classesSettingID);
  3220. #region 班次配置总表
  3221. sql = "insert into tp_pc_classessetting"
  3222. + " (ClassesSettingID,accountdate, "
  3223. + " userid, "
  3224. + " usercode, "
  3225. + " accountid, "
  3226. + " createuserid, "
  3227. + " updateuserid,ORGANIZATIONID)"
  3228. + " select "
  3229. + " :classesSettingID, "
  3230. + " :accountdate, "
  3231. + " USERID, "
  3232. + " UserCode, "
  3233. + " accountid,"
  3234. + " :createuserid,"
  3235. + " :updateuserid,ORGANIZATIONID"
  3236. + " from TP_MST_User"
  3237. + " where UserID = :userID";
  3238. paras = new OracleParameter[] {
  3239. new OracleParameter(":classesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3240. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3241. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3242. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3243. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3244. };
  3245. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3246. // 失败
  3247. if (result != Constant.INT_IS_ONE)
  3248. {
  3249. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3250. }
  3251. #endregion
  3252. #region 班次配置明细SQL
  3253. sql = " insert into tp_pc_classesdetail"
  3254. + " (classessettingid,"
  3255. + " accountdate,"
  3256. + " userid,"
  3257. + " usercode,"
  3258. + " UJobsID,"
  3259. + " staffid,"
  3260. + " SJobsID,"
  3261. + " staffstatus,"
  3262. + " accountid,"
  3263. + " createuserid,"
  3264. + " updateuserid,Uorganizationid,Sorganizationid)"
  3265. + " select "
  3266. + " :classessettingid,"
  3267. + " :accountdate,"
  3268. + " userStaff.Userid,"
  3269. + " :usercode,"
  3270. + " userStaff.Ujobsid,"
  3271. + " userStaff.Staffid,"
  3272. + " staff.Jobs,"
  3273. + " staff.staffstatus,"
  3274. + " :accountID,"
  3275. + " :createuserid,"
  3276. + " :updateuserid,user2.organizationid,staff.organizationid"
  3277. + " from TP_MST_UserStaff userStaff"
  3278. + " inner join tp_hr_staff staff on staff.staffid = userStaff.Staffid"
  3279. + " inner join tp_mst_user user2 on userStaff.userid = user2.userid"
  3280. + " where (staff.StaffStatus = 1 or staff.StaffStatus = 2)"
  3281. + " and staff.ValueFlag = 1"
  3282. + " and staff.AccountID = :accountID"
  3283. + " and userStaff.UserID = :userID";
  3284. paras = new OracleParameter[] {
  3285. new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3286. new OracleParameter(":accountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3287. new OracleParameter(":usercode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  3288. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3289. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3290. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3291. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3292. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3293. };
  3294. result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3295. // 失败
  3296. if (result == Constant.INT_IS_ZERO)
  3297. {
  3298. return string.Format(Messages.MSG_CMN_W007, "生产工号[" + workUserCode + "]没有配置生产员工");
  3299. }
  3300. #endregion
  3301. }
  3302. else
  3303. {
  3304. ClassesSettingID = int.Parse(countStr);
  3305. }
  3306. #endregion
  3307. //#region 将班次配置表中的数据插入生产者表中
  3308. //sql = "insert into tp_pm_producer"
  3309. // + " (productiondataid,"
  3310. // + " staffid,"
  3311. // + " userid,"
  3312. // + " usercode,"
  3313. // + " UJobsID,"
  3314. // + " staffstatus,"
  3315. // + " SJobsID,"
  3316. // + " classessettingid"
  3317. // + " )"
  3318. // + " select :productiondataid,"
  3319. // + " staffid,"
  3320. // + " userid,"
  3321. // + " usercode,"
  3322. // + " UJobsID,"
  3323. // + " staffstatus,"
  3324. // + " SJobsID,"
  3325. // + " :classessettingid"
  3326. // + " from tp_pc_classesdetail"
  3327. // + " where ValueFlag = 1"
  3328. // + " and classessettingid = (select max(ClassesSettingID)"
  3329. // + " from TP_PC_ClassesSetting"
  3330. // + " where ValueFlag = 1 and AccountDate=:accountDate"
  3331. // + " and UserID = :userID)";
  3332. //paras = new OracleParameter[] {
  3333. // new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  3334. // new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID.ToString()=="0"?null:classesSettingID.ToString(),ParameterDirection.Input),
  3335. // new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3336. // new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3337. // };
  3338. //int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3339. //// 失败
  3340. //if (resultCount == Constant.INT_IS_ZERO)
  3341. //{
  3342. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3343. //}
  3344. //#endregion
  3345. return null;
  3346. }
  3347. /// <summary>
  3348. /// 窑车生产者
  3349. /// </summary>
  3350. /// <param name="oracleTrConn">连接对象</param>
  3351. /// <param name="accountDate">账务日期</param>
  3352. /// <param name="kilnCarDataID">窑车生产数据ID</param>
  3353. /// <param name="workUserID">生产工号ID</param>
  3354. /// <param name="sUserInfo">用户基本信息</param>
  3355. /// <returns>string</returns>
  3356. private static string AddKilnCarProducer(IDBTransaction oracleTrConn, DateTime accountDate, int kilnCarDataID, int workUserID, SUserInfo sUserInfo)
  3357. {
  3358. // 参数
  3359. OracleParameter[] paras;
  3360. #region 将班次配置表中的数据插入生产者表中
  3361. string sql = "insert into TP_PM_KilnCarProducer"
  3362. + " (KilnCarDataID,"
  3363. + " staffid,"
  3364. + " userid,"
  3365. + " usercode,"
  3366. + " Ujobsid,"
  3367. + " staffstatus,"
  3368. + " Sjobsid,"
  3369. + " classessettingid"
  3370. + " )"
  3371. + " select :kilnCarDataID,"
  3372. + " staffid,"
  3373. + " userid,"
  3374. + " usercode,"
  3375. + " Ujobsid,"
  3376. + " staffstatus,"
  3377. + " Sjobsid,"
  3378. + " classessettingid"
  3379. + " from tp_pc_classesdetail"
  3380. + " where ValueFlag = 1"
  3381. + " and classessettingid = (select max(ClassesSettingID)"
  3382. + " from TP_PC_ClassesSetting"
  3383. + " where ValueFlag = 1 and AccountDate=:accountDate"
  3384. + " and UserID = :userID)";
  3385. paras = new OracleParameter[] {
  3386. new OracleParameter(":kilnCarDataID",OracleDbType.Int32,kilnCarDataID,ParameterDirection.Input),
  3387. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3388. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3389. };
  3390. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3391. // 失败
  3392. if (resultCount == Constant.INT_IS_ZERO)
  3393. {
  3394. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3395. }
  3396. #endregion
  3397. return null;
  3398. }
  3399. /// <summary>
  3400. /// 添加生产数据
  3401. /// </summary>
  3402. /// <param name="oracleTrConn">连接对象</param>
  3403. /// <param name="accountDate">账务日期</param>
  3404. /// <param name="productionData">生产数据</param>
  3405. /// <param name="sUserInfo">用户基本信息</param>
  3406. /// <returns>string</returns>
  3407. /// <remarks>
  3408. /// 陈冰 2014.09.18 新建
  3409. /// </remarks>
  3410. private static string AddProductionDataCreateTime(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  3411. {
  3412. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3413. // string selectSql = @"select TP_PM_GroutingProduct.GroutingDate,
  3414. // TP_PM_GroutingProduct.GroutingUserID,
  3415. // TP_PM_GroutingProduct.GroutingUserCode,
  3416. // TP_PM_GroutingProduct.GroutingNum,
  3417. // TP_PM_GroutingProduct.GroutingMouldCode,
  3418. // TP_PM_GroutingProduct.MouldCode,
  3419. // TP_PM_GroutingDaily.GroutingDailyID,
  3420. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3421. // TP_PM_GroutingDaily.GroutingLineID,
  3422. // TP_PM_GroutingDaily.GroutingLineCode,
  3423. // TP_PM_GroutingDaily.GroutingLineName,
  3424. // TP_PM_GroutingDaily.GMouldTypeID,
  3425. // TP_PM_GroutingDaily.CanManyTimes,
  3426. // TP_PM_GroutingDailyDetail.GroutingLineDetailID
  3427. // from TP_PM_GroutingProduct
  3428. // left join TP_PM_GroutingDaily
  3429. // on TP_PM_GroutingProduct.GroutingDailyID=TP_PM_GroutingDaily.GroutingDailyID
  3430. // left join TP_PM_GroutingDailyDetail
  3431. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  3432. // where TP_PM_GroutingProduct.barcode=:barcode";
  3433. //这地方连了两张表,为了成检的时候,次品在次新增
  3434. string returnVal = "";
  3435. string selectSql = @"select
  3436. GroutingDate,
  3437. GroutingUserID,
  3438. GroutingUserCode,
  3439. GroutingNum,
  3440. GroutingMouldCode,
  3441. MouldCode,
  3442. GroutingDailyID,
  3443. GroutingDailyDetailID,
  3444. GroutingLineID,
  3445. GroutingLineCode,
  3446. GroutingLineName,
  3447. GMouldTypeID,
  3448. CanManyTimes,
  3449. GroutingLineDetailID,
  3450. SpecialRepairflag
  3451. from tp_pm_inproduction where barcode=:barcode
  3452. union
  3453. select
  3454. GroutingDate,
  3455. GroutingUserID,
  3456. GroutingUserCode,
  3457. GroutingNum,
  3458. GroutingMouldCode,
  3459. MouldCode,
  3460. GroutingDailyID,
  3461. GroutingDailyDetailID,
  3462. GroutingLineID,
  3463. GroutingLineCode,
  3464. GroutingLineName,
  3465. GMouldTypeID,
  3466. CanManyTimes,
  3467. GroutingLineDetailID,
  3468. SpecialRepairflag
  3469. from TP_PM_InProductionTrash where barcode=:barcode
  3470. ";
  3471. OracleParameter[] selectparas = new OracleParameter[] {
  3472. new OracleParameter(":barcode",productionData.Barcode),
  3473. };
  3474. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  3475. DateTime GroutingDate = new DateTime();
  3476. int GroutingUserID = 0, SpecialRepairflag = 0;
  3477. string GroutingUserCode = "";
  3478. int GroutingNum = 0;
  3479. string GroutingMouldCode = "";
  3480. string MouldCode = "";
  3481. //注浆日报ID
  3482. int GroutingDailyID = 0;
  3483. //注浆日报明细ID
  3484. int GroutingDailyDetailID = 0;
  3485. //成型生产线ID
  3486. int GroutingLineID = 0;
  3487. //成型生产线编码
  3488. string GroutingLineCode = "";
  3489. // 成型生产线名称
  3490. string GroutingLineName = "";
  3491. //成型线类型ID
  3492. int GMouldTypeID = 0;
  3493. // 能否多次注浆
  3494. int CanManyTimes = 0;
  3495. // 成型生产线明细ID
  3496. int GroutingLineDetailID = 0;
  3497. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3498. {
  3499. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3500. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3501. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3502. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3503. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3504. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3505. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3506. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3507. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3508. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3509. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3510. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3511. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3512. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3513. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3514. returnVal = SpecialRepairflag.ToString();
  3515. }
  3516. #endregion
  3517. #region 更新窑炉窑车属性
  3518. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3519. {
  3520. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3521. if (ds != null)
  3522. {
  3523. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3524. {
  3525. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3526. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3527. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3528. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3529. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3530. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3531. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3532. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3533. }
  3534. }
  3535. }
  3536. #endregion
  3537. //string sql = "select createtime from TP_PM_KilnCarGoods"
  3538. // + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  3539. //OracleParameter[] paras = new OracleParameter[] {
  3540. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3541. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3542. //};
  3543. //DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sql, paras);
  3544. //if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0)
  3545. //{
  3546. // sql = "update TP_PM_ProductionData set "
  3547. // + " CreateTime=:CreateTime"
  3548. // + " where barcode=:barcode and ProcedureID=:ProcedureID and KilnCarID=:KilnCarID and AccountID=:AccountID";
  3549. // paras = new OracleParameter[] {
  3550. // new OracleParameter(":CreateTime",Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"])),
  3551. // new OracleParameter(":barcode",productionData.Barcode),
  3552. // new OracleParameter(":ProcedureID",productionData.CompleteProcedureID),
  3553. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3554. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3555. // };
  3556. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3557. //}
  3558. #region SQL
  3559. string sql = "insert into tp_pm_productiondata"
  3560. + " ("
  3561. + " barcode,"
  3562. + " centralizedbatchno,"
  3563. + " productionlineid,"
  3564. + " productionlinecode,"
  3565. + " productionlinename,"
  3566. + " procedureid,"
  3567. + " procedurecode,"
  3568. + " procedurename,"
  3569. + " proceduremodel,"
  3570. + " modeltype,"
  3571. + " piecetype,"
  3572. + " isreworked,"
  3573. + " nodetype,"
  3574. + " ispublicbody,"
  3575. + " isrefire,"
  3576. + " organizationid,"
  3577. + " goodsid,"
  3578. + " goodscode,"
  3579. + " goodsname,"
  3580. + " userid,"
  3581. + " usercode,"
  3582. + " username,"
  3583. + " kilnid,"
  3584. + " kilncode,"
  3585. + " kilnname,"
  3586. + " kilncarid,"
  3587. + " kilncarcode,"
  3588. + " kilncarname,"
  3589. + " kilncarbatchno,"
  3590. + " kilncarposition,"
  3591. + " reworkprocedureid,"
  3592. + " reworkprocedurecode,"
  3593. + " reworkprocedurename,"
  3594. + " remarks,"
  3595. + " accountdate,"
  3596. + " accountid,"
  3597. + " GoodsLevelID,"
  3598. + " GoodsLevelTypeID,"
  3599. + " createuserid,"
  3600. + " updateuserid,"
  3601. + " GroutingDate,"
  3602. + " GroutingUserID,"
  3603. + " GroutingUserCode,"
  3604. + " GroutingNum,"
  3605. + " GroutingMouldCode,"
  3606. + " MouldCode,"
  3607. + "GroutingDailyID,"
  3608. + "GroutingDailyDetailID,"
  3609. + "GroutingLineID,"
  3610. + " GroutingLineCode,"
  3611. + "GroutingLineName,"
  3612. + "GMouldTypeID,"
  3613. + "CanManyTimes,"
  3614. + "GroutingLineDetailID,"
  3615. + "CreateTime,SpecialRepairflag"
  3616. + ")"
  3617. + " values"
  3618. + " ("
  3619. + " :barcode,"
  3620. + " :centralizedbatchno,"
  3621. + " :productionlineid,"
  3622. + " :productionlinecode,"
  3623. + " :productionlinename,"
  3624. + " :procedureid,"
  3625. + " :procedurecode,"
  3626. + " :procedurename,"
  3627. + " :proceduremodel,"
  3628. + " :modeltype,"
  3629. + " :piecetype,"
  3630. + " :isreworked,"
  3631. + " :nodetype,"
  3632. + " :ispublicbody,"
  3633. + " :isrefire,"
  3634. + " :organizationid,"
  3635. + " :goodsid,"
  3636. + " :goodscode,"
  3637. + " :goodsname,"
  3638. + " :userid,"
  3639. + " :usercode,"
  3640. + " :username,"
  3641. + " :kilnid,"
  3642. + " :kilncode,"
  3643. + " :kilnname,"
  3644. + " :kilncarid,"
  3645. + " :kilncarcode,"
  3646. + " :kilncarname,"
  3647. + " :kilncarbatchno,"
  3648. + " :kilncarposition,"
  3649. + " :reworkprocedureid,"
  3650. + " :reworkprocedurecode,"
  3651. + " :reworkprocedurename,"
  3652. + " :remarks,"
  3653. + " :accountdata,"
  3654. + " :accountid,"
  3655. + " :GoodsLevelID,"
  3656. + " :GoodsLevelTypeID,"
  3657. + " :createuserid,"
  3658. + " :updateuserid,"
  3659. + " :groutingdate,"
  3660. + " :groutinguserid,"
  3661. + " :groutingusercode,"
  3662. + " :groutingnum,"
  3663. + " :groutingmouldcode,"
  3664. + " :mouldcode,"
  3665. + ":groutingdailyid,"
  3666. + ":groutingdailydetailid,"
  3667. + ":groutinglineid,"
  3668. + " :groutinglinecode,"
  3669. + ":groutinglinename,"
  3670. + ":gmouldtypeid,"
  3671. + ":canmanytimes,"
  3672. + ":groutinglinedetailid,"
  3673. + ":CreateTime,:SpecialRepairflag"
  3674. + ")";
  3675. #endregion
  3676. #region OracleParameter
  3677. OracleParameter[] paras = new OracleParameter[] {
  3678. new OracleParameter(":barcode",productionData.Barcode),
  3679. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  3680. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  3681. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  3682. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  3683. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  3684. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  3685. new OracleParameter(":procedurename",productionData.ProcedureName),
  3686. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  3687. new OracleParameter(":modeltype",productionData.ModelType),
  3688. new OracleParameter(":piecetype",productionData.PieceType),
  3689. new OracleParameter(":isreworked",productionData.IsReworked),
  3690. new OracleParameter(":nodetype",productionData.NodeType),
  3691. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3692. new OracleParameter(":isrefire",productionData.IsReFire),
  3693. new OracleParameter(":organizationid",productionData.OrganizationID),
  3694. new OracleParameter(":goodsid",productionData.GoodsID),
  3695. new OracleParameter(":goodscode",productionData.GoodsCode),
  3696. new OracleParameter(":goodsname",productionData.GoodsName),
  3697. new OracleParameter(":userid",productionData.UserID),
  3698. new OracleParameter(":usercode",productionData.UserCode),
  3699. new OracleParameter(":username",productionData.UserName),
  3700. new OracleParameter(":kilnid",productionData.KilnID),
  3701. new OracleParameter(":kilncode",productionData.KilnCode),
  3702. new OracleParameter(":kilnname",productionData.KilnName),
  3703. new OracleParameter(":kilncarid",productionData.KilnCarID),
  3704. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  3705. new OracleParameter(":kilncarname",productionData.KilnCarName),
  3706. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  3707. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  3708. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  3709. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  3710. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  3711. new OracleParameter(":remarks",productionData.Remarks),
  3712. new OracleParameter(":accountdata",accountDate),
  3713. new OracleParameter(":accountid",sUserInfo.AccountID),
  3714. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  3715. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  3716. new OracleParameter(":createuserid",sUserInfo.UserID),
  3717. new OracleParameter(":updateuserid",sUserInfo.UserID),
  3718. new OracleParameter(":groutingdate",GroutingDate),
  3719. new OracleParameter(":groutinguserid",GroutingUserID),
  3720. new OracleParameter(":groutingusercode",GroutingUserCode),
  3721. new OracleParameter(":groutingnum",GroutingNum),
  3722. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  3723. new OracleParameter(":mouldcode",MouldCode),
  3724. new OracleParameter(":groutingdailyid",GroutingDailyID),
  3725. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  3726. new OracleParameter(":groutinglineid",GroutingLineID),
  3727. new OracleParameter(":groutinglinecode",GroutingLineCode),
  3728. new OracleParameter(":groutinglinename",GroutingLineName),
  3729. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  3730. new OracleParameter(":canmanytimes",CanManyTimes),
  3731. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  3732. new OracleParameter(":CreateTime",productionData.CreateTime),
  3733. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  3734. };
  3735. #endregion
  3736. foreach (OracleParameter para in paras)
  3737. {
  3738. if (string.IsNullOrEmpty(para.Value + ""))
  3739. {
  3740. para.Value = DBNull.Value;
  3741. }
  3742. }
  3743. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3744. OutSpecialRepairflag = returnVal;
  3745. // 失败
  3746. if (result != Constant.INT_IS_ONE)
  3747. {
  3748. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3749. }
  3750. // 成功返回null
  3751. return null;
  3752. }
  3753. /// <summary>
  3754. /// 添加生产数据
  3755. /// </summary>
  3756. /// <param name="oracleTrConn">连接对象</param>
  3757. /// <param name="accountDate">账务日期</param>
  3758. /// <param name="productionData">生产数据</param>
  3759. /// <param name="sUserInfo">用户基本信息</param>
  3760. /// <param name="isSendBody">是否交坯</param>
  3761. /// <returns>string</returns>
  3762. /// <remarks>
  3763. /// 陈冰 2014.09.18 新建
  3764. /// xuwei 2019-09-17 修改
  3765. /// </remarks>
  3766. private static string AddProductionDataDeliverMud(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag
  3767. , out DataSet outGroutingProduct, bool isSendBody = false)
  3768. {
  3769. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3770. string selectSql = "";
  3771. string returnVal = "";
  3772. //xuwei fix 2019-09-23 修正非交坯时 productionData.GroutingDailyDetailID 为空无法得到结果
  3773. //改用 条码查询
  3774. //selectSql = @"select GroutingDate,
  3775. // ClassesSettingID,
  3776. // UserID as GroutingUserID,
  3777. // UserCode as GroutingUserCode,
  3778. // GroutingCount as GroutingNum,
  3779. // GroutingMouldCode,
  3780. // MouldCode,
  3781. // GroutingDailyID,
  3782. // GroutingDailyDetailID,
  3783. // GroutingLineID,
  3784. // GroutingLineCode,
  3785. // GroutingLineName,
  3786. // GroutingLineDetailID,
  3787. // SpecialRepairflag,
  3788. // goodsid,
  3789. // goodscode,
  3790. // goodsname,
  3791. // GMouldTypeID,
  3792. // CanManyTimes,
  3793. // LogoID
  3794. // from tp_pm_GroutingDailyDetail
  3795. // where tp_pm_GroutingDailyDetail.GroutingDailyDetailID=:GroutingDailyDetailID";
  3796. //OracleParameter[] selectparas1 = new OracleParameter[] {
  3797. // new OracleParameter(":GroutingDailyDetailID",productionData.GroutingDailyDetailID),
  3798. //};
  3799. selectSql = @"select GroutingDate,
  3800. ClassesSettingID,
  3801. UserID as GroutingUserID,
  3802. UserCode as GroutingUserCode,
  3803. GroutingCount as GroutingNum,
  3804. GroutingMouldCode,
  3805. MouldCode,
  3806. GroutingDailyID,
  3807. GroutingDailyDetailID,
  3808. GroutingLineID,
  3809. GroutingLineCode,
  3810. GroutingLineName,
  3811. GroutingLineDetailID,
  3812. SpecialRepairflag,
  3813. goodsid,
  3814. goodscode,
  3815. goodsname,
  3816. GMouldTypeID,
  3817. CanManyTimes,
  3818. LogoID
  3819. from tp_pm_GroutingDailyDetail
  3820. where tp_pm_GroutingDailyDetail.Barcode=:Barcode";
  3821. OracleParameter[] selectparas1 = new OracleParameter[] {
  3822. new OracleParameter(":Barcode",productionData.Barcode),
  3823. };
  3824. //xuwei fix end
  3825. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas1);
  3826. DateTime GroutingDate = new DateTime();
  3827. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  3828. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  3829. int? ClassesSettingID = null;
  3830. int? LogoID = null;
  3831. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3832. {
  3833. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3834. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3835. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3836. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3837. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3838. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3839. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3840. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3841. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3842. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3843. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3844. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3845. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3846. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3847. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3848. returnVal = SpecialRepairflag.ToString();
  3849. if (productionData.IsPublicBody.ToString() != "1")
  3850. ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  3851. else
  3852. ClassesSettingID = productionData.ClassesSettingID == null ? Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]) : productionData.ClassesSettingID;
  3853. if (dsGroutingProduct.Tables[0].Rows[0]["LogoID"] != DBNull.Value)
  3854. {
  3855. LogoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["LogoID"]);
  3856. }
  3857. //xuwei fix begin
  3858. //2019-09-17
  3859. //更新注浆日报(交坯处理)
  3860. if (isSendBody)
  3861. {
  3862. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  3863. OracleParameter[] paras2 = new OracleParameter[] {
  3864. new OracleParameter(":deliveruserid",productionData.UserID),
  3865. new OracleParameter(":deliverusercode",productionData.UserCode),
  3866. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3867. };
  3868. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  3869. }
  3870. //更新 注浆日报 在产标识(BEGINNINGFLAG)
  3871. selectSql = "update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '1' where Barcode='" + productionData.Barcode + "'";
  3872. oracleTrConn.ExecuteNonQuery(selectSql);
  3873. //xuwei end
  3874. }
  3875. outGroutingProduct = dsGroutingProduct;
  3876. #endregion
  3877. #region 更新窑炉窑车属性
  3878. //if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3879. //{
  3880. // DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3881. // if (ds != null)
  3882. // {
  3883. // if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3884. // {
  3885. // productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3886. // productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3887. // productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3888. // productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3889. // productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3890. // productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3891. // productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3892. // productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3893. // }
  3894. // }
  3895. //}
  3896. #endregion
  3897. #region SQL
  3898. string sql = "insert into tp_pm_productiondataIn"
  3899. + " (productiondataid,"
  3900. + " barcode,"
  3901. + " centralizedbatchno,"
  3902. + " productionlineid,"
  3903. + " productionlinecode,"
  3904. + " productionlinename,"
  3905. + " procedureid,"
  3906. + " procedurecode,"
  3907. + " procedurename,"
  3908. + " proceduremodel,"
  3909. + " modeltype,"
  3910. + " piecetype,"
  3911. + " isreworked,"
  3912. + " nodetype,"
  3913. + " ispublicbody,"
  3914. + " isrefire,"
  3915. + " organizationid,"
  3916. + " goodsid,"
  3917. + " goodscode,"
  3918. + " goodsname,"
  3919. + " userid,"
  3920. + " usercode,"
  3921. + " username,"
  3922. + " kilnid,"
  3923. + " kilncode,"
  3924. + " kilnname,"
  3925. + " kilncarid,"
  3926. + " kilncarcode,"
  3927. + " kilncarname,"
  3928. + " kilncarbatchno,"
  3929. + " kilncarposition,"
  3930. + " reworkprocedureid,"
  3931. + " reworkprocedurecode,"
  3932. + " reworkprocedurename,"
  3933. + " remarks,"
  3934. + " accountdate,"
  3935. + " accountid,"
  3936. + " GoodsLevelID,"
  3937. + " GoodsLevelTypeID,"
  3938. + " createuserid,"
  3939. + " updateuserid,"
  3940. + " GroutingDate,"
  3941. + " GroutingUserID,"
  3942. + " GroutingUserCode,"
  3943. + " GroutingNum,"
  3944. + " GroutingMouldCode,"
  3945. + " MouldCode,"
  3946. + "GroutingDailyID,"
  3947. + "GroutingDailyDetailID,"
  3948. + "GroutingLineID,"
  3949. + " GroutingLineCode,"
  3950. + "GroutingLineName,"
  3951. + "GMouldTypeID,"
  3952. + "CanManyTimes,"
  3953. + "GroutingLineDetailID,"
  3954. + "SpecialRepairflag,"
  3955. + "ClassesSettingID,"
  3956. + "LogoID"
  3957. + ")"
  3958. + " values"
  3959. + " (:productiondataid,"
  3960. + " :barcode,"
  3961. + " :centralizedbatchno,"
  3962. + " :productionlineid,"
  3963. + " :productionlinecode,"
  3964. + " :productionlinename,"
  3965. + " :procedureid,"
  3966. + " :procedurecode,"
  3967. + " :procedurename,"
  3968. + " :proceduremodel,"
  3969. + " :modeltype,"
  3970. + " :piecetype,"
  3971. + " :isreworked,"
  3972. + " :nodetype,"
  3973. + " :ispublicbody,"
  3974. + " :isrefire,"
  3975. + " :organizationid,"
  3976. + " :goodsid,"
  3977. + " :goodscode,"
  3978. + " :goodsname,"
  3979. + " :userid,"
  3980. + " :usercode,"
  3981. + " :username,"
  3982. + " :kilnid,"
  3983. + " :kilncode,"
  3984. + " :kilnname,"
  3985. + " :kilncarid,"
  3986. + " :kilncarcode,"
  3987. + " :kilncarname,"
  3988. + " :kilncarbatchno,"
  3989. + " :kilncarposition,"
  3990. + " :reworkprocedureid,"
  3991. + " :reworkprocedurecode,"
  3992. + " :reworkprocedurename,"
  3993. + " :remarks,"
  3994. + " :accountdata,"
  3995. + " :accountid,"
  3996. + " :GoodsLevelID,"
  3997. + " :GoodsLevelTypeID,"
  3998. + " :createuserid,"
  3999. + " :updateuserid,"
  4000. + " :groutingdate,"
  4001. + " :groutinguserid,"
  4002. + " :groutingusercode,"
  4003. + " :groutingnum,"
  4004. + " :groutingmouldcode,"
  4005. + " :mouldcode,"
  4006. + ":groutingdailyid,"
  4007. + ":groutingdailydetailid,"
  4008. + ":groutinglineid,"
  4009. + " :groutinglinecode,"
  4010. + ":groutinglinename,"
  4011. + ":gmouldtypeid,"
  4012. + ":canmanytimes,"
  4013. + ":groutinglinedetailid,"
  4014. + ":specialRepairflag,"
  4015. + ":classesSettingID,"
  4016. + ":LogoID"
  4017. + ")";
  4018. #endregion
  4019. #region OracleParameter
  4020. OracleParameter[] paras = new OracleParameter[] {
  4021. new OracleParameter(":classesSettingID",ClassesSettingID),
  4022. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4023. new OracleParameter(":barcode",productionData.Barcode),
  4024. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4025. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4026. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4027. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4028. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4029. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4030. new OracleParameter(":procedurename",productionData.ProcedureName),
  4031. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4032. new OracleParameter(":modeltype",productionData.ModelType),
  4033. new OracleParameter(":piecetype",productionData.PieceType),
  4034. new OracleParameter(":isreworked",productionData.IsReworked),
  4035. new OracleParameter(":nodetype",productionData.NodeType),
  4036. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4037. new OracleParameter(":isrefire",productionData.IsReFire),
  4038. new OracleParameter(":organizationid",productionData.OrganizationID),
  4039. new OracleParameter(":goodsid",productionData.GoodsID),
  4040. new OracleParameter(":goodscode",productionData.GoodsCode),
  4041. new OracleParameter(":goodsname",productionData.GoodsName),
  4042. new OracleParameter(":userid",productionData.UserID),
  4043. new OracleParameter(":usercode",productionData.UserCode),
  4044. new OracleParameter(":username",productionData.UserName),
  4045. new OracleParameter(":kilnid",productionData.KilnID),
  4046. new OracleParameter(":kilncode",productionData.KilnCode),
  4047. new OracleParameter(":kilnname",productionData.KilnName),
  4048. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4049. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4050. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4051. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4052. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4053. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4054. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4055. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4056. new OracleParameter(":remarks",productionData.Remarks),
  4057. new OracleParameter(":accountdata",accountDate),
  4058. new OracleParameter(":accountid",sUserInfo.AccountID),
  4059. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4060. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4061. new OracleParameter(":createuserid",sUserInfo.UserID),
  4062. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4063. new OracleParameter(":groutingdate",GroutingDate),
  4064. new OracleParameter(":groutinguserid",GroutingUserID),
  4065. new OracleParameter(":groutingusercode",GroutingUserCode),
  4066. new OracleParameter(":groutingnum",GroutingNum),
  4067. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4068. new OracleParameter(":mouldcode",MouldCode),
  4069. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4070. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4071. new OracleParameter(":groutinglineid",GroutingLineID),
  4072. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4073. new OracleParameter(":groutinglinename",GroutingLineName),
  4074. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4075. new OracleParameter(":canmanytimes",CanManyTimes),
  4076. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4077. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4078. new OracleParameter(":LogoID",LogoID),
  4079. };
  4080. #endregion
  4081. foreach (OracleParameter para in paras)
  4082. {
  4083. if (string.IsNullOrEmpty(para.Value + ""))
  4084. {
  4085. para.Value = DBNull.Value;
  4086. }
  4087. }
  4088. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4089. OutSpecialRepairflag = returnVal;
  4090. // 失败
  4091. if (result != Constant.INT_IS_ONE)
  4092. {
  4093. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4094. }
  4095. // 成功返回null
  4096. return null;
  4097. }
  4098. /// <summary>
  4099. /// 添加生产数据
  4100. /// </summary>
  4101. /// <param name="oracleTrConn">连接对象</param>
  4102. /// <param name="accountDate">账务日期</param>
  4103. /// <param name="productionData">生产数据</param>
  4104. /// <param name="sUserInfo">用户基本信息</param>
  4105. /// <param name="isSendBody">是否交坯</param>
  4106. /// <returns>string</returns>
  4107. /// <remarks>
  4108. /// 陈冰 2014.09.18 新建
  4109. /// </remarks>
  4110. private static string AddProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag, bool isSendBody = false)
  4111. {
  4112. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  4113. string selectSql = "";
  4114. string returnVal = "";
  4115. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  4116. {
  4117. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  4118. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  4119. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4120. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4121. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4122. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4123. // TP_PM_GroutingDailyDetail.MouldCode,
  4124. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  4125. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4126. // TP_PM_GroutingDailyDetail.GroutingLineID,
  4127. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  4128. // TP_PM_GroutingDailyDetail.GroutingLineName,
  4129. // TP_PM_GroutingDaily.GMouldTypeID,
  4130. // TP_PM_GroutingDaily.CanManyTimes,
  4131. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4132. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  4133. // from TP_PM_GroutingDaily
  4134. // inner join TP_PM_GroutingDailyDetail
  4135. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  4136. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4137. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  4138. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4139. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4140. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4141. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4142. TP_PM_GroutingDailyDetail.MouldCode,
  4143. TP_PM_GroutingDailyDetail.GroutingDailyID,
  4144. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4145. TP_PM_GroutingDailyDetail.GroutingLineID,
  4146. TP_PM_GroutingDailyDetail.GroutingLineCode,
  4147. TP_PM_GroutingDailyDetail.GroutingLineName,
  4148. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4149. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  4150. (select GMouldTypeID
  4151. from TP_PM_GroutingDaily
  4152. where TP_PM_GroutingDaily.GroutingDailyID =
  4153. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  4154. (select CanManyTimes
  4155. from TP_PM_GroutingDaily
  4156. where TP_PM_GroutingDaily.GroutingDailyID =
  4157. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  4158. 0 as IsReFire
  4159. from TP_PM_GroutingDailyDetail
  4160. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4161. }
  4162. else
  4163. {
  4164. //这地方连了两张表,为了成检的时候,次品在次新增
  4165. // selectSql = @"select
  4166. // GroutingDate,
  4167. // GroutingUserID,
  4168. // GroutingUserCode,
  4169. // GroutingNum,
  4170. // GroutingMouldCode,
  4171. // MouldCode,
  4172. // GroutingDailyID,
  4173. // GroutingDailyDetailID,
  4174. // GroutingLineID,
  4175. // GroutingLineCode,
  4176. // GroutingLineName,
  4177. // GMouldTypeID,
  4178. // CanManyTimes,
  4179. // GroutingLineDetailID,
  4180. // SpecialRepairflag,
  4181. // IsReFire
  4182. //
  4183. // from tp_pm_inproduction where barcode=:barcode
  4184. // union
  4185. // select
  4186. // GroutingDate,
  4187. // GroutingUserID,
  4188. // GroutingUserCode,
  4189. // GroutingNum,
  4190. // GroutingMouldCode,
  4191. // MouldCode,
  4192. // GroutingDailyID,
  4193. // GroutingDailyDetailID,
  4194. // GroutingLineID,
  4195. // GroutingLineCode,
  4196. // GroutingLineName,
  4197. // GMouldTypeID,
  4198. // CanManyTimes,
  4199. // GroutingLineDetailID,
  4200. // SpecialRepairflag,
  4201. // IsReFire
  4202. // from TP_PM_InProductionTrash where barcode=:barcode
  4203. // ";
  4204. selectSql = @"select
  4205. ip.GroutingDate,
  4206. ip.GroutingUserID,
  4207. ip.GroutingUserCode,
  4208. ip.GroutingNum,
  4209. ip.GroutingMouldCode,
  4210. ip.MouldCode,
  4211. ip.GroutingDailyID,
  4212. ip.GroutingDailyDetailID,
  4213. ip.GroutingLineID,
  4214. ip.GroutingLineCode,
  4215. ip.GroutingLineName,
  4216. ip.GMouldTypeID,
  4217. ip.CanManyTimes,
  4218. ip.GroutingLineDetailID,
  4219. ip.SpecialRepairflag,
  4220. ip.IsReFire,
  4221. ip.logoid,
  4222. gdd.ClassesSettingID
  4223. from tp_pm_inproduction ip inner join TP_PM_GroutingDailyDetail gdd on ip.GroutingDailyDetailID=gdd.GroutingDailyDetailID
  4224. where ip.barcode=:barcode
  4225. ";
  4226. }
  4227. OracleParameter[] selectparas = new OracleParameter[] {
  4228. new OracleParameter(":barcode",productionData.Barcode),
  4229. };
  4230. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4231. DateTime GroutingDate = new DateTime();
  4232. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4233. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4234. int IsReFire = 0;
  4235. int? logoID = null;
  4236. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4237. {
  4238. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4239. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4240. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4241. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4242. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4243. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4244. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4245. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4246. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4247. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4248. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4249. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4250. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4251. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4252. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4253. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4254. if (IsReFire > 0) //大于零代表重烧过
  4255. {
  4256. productionData.IsReFire = IsReFire;
  4257. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4258. }
  4259. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  4260. {
  4261. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  4262. }
  4263. //if (productionData.LogoID != null) //当前工序有商标
  4264. //{
  4265. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  4266. // {
  4267. // logoID = productionData.LogoID;
  4268. // //根据明细ID.update
  4269. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  4270. // OracleParameter[] paras2 = new OracleParameter[] {
  4271. // new OracleParameter(":logoid",productionData.LogoID)
  4272. // };
  4273. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  4274. // }
  4275. //}
  4276. //xuwei add begin
  4277. //2019-09-17
  4278. //更新注浆日报(交坯处理)
  4279. if (isSendBody)
  4280. {
  4281. if (productionData.IsPublicBody.ToString() != "1" || productionData.ClassesSettingID == null)
  4282. productionData.ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  4283. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  4284. OracleParameter[] paras2 = new OracleParameter[] {
  4285. new OracleParameter(":deliveruserid",productionData.UserID),
  4286. new OracleParameter(":deliverusercode",productionData.UserCode),
  4287. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4288. };
  4289. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  4290. }
  4291. returnVal = SpecialRepairflag.ToString();
  4292. }
  4293. #endregion
  4294. #region 更新窑炉窑车属性
  4295. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4296. {
  4297. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4298. if (ds != null)
  4299. {
  4300. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4301. {
  4302. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4303. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4304. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4305. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4306. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4307. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4308. //2022-04-22 modify 冷补不改变窑车批次号
  4309. ////xuwei fix 2020-06-15 冷补修改窑车批次号 不再取原批次号
  4310. //if (productionData.ModelType != 10)
  4311. //end
  4312. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4313. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4314. }
  4315. }
  4316. }
  4317. #endregion
  4318. #region SQL
  4319. string sql = "insert into tp_pm_productiondataIn"
  4320. + " (productiondataid,"
  4321. + " barcode,"
  4322. + " centralizedbatchno,"
  4323. + " productionlineid,"
  4324. + " productionlinecode,"
  4325. + " productionlinename,"
  4326. + " procedureid,"
  4327. + " procedurecode,"
  4328. + " procedurename,"
  4329. + " proceduremodel,"
  4330. + " modeltype,"
  4331. + " piecetype,"
  4332. + " isreworked,"
  4333. + " nodetype,"
  4334. + " ispublicbody,"
  4335. + " isrefire,"
  4336. + " islengbu,"
  4337. + " organizationid,"
  4338. + " goodsid,"
  4339. + " goodscode,"
  4340. + " goodsname,"
  4341. + " userid,"
  4342. + " usercode,"
  4343. + " username,"
  4344. + " kilnid,"
  4345. + " kilncode,"
  4346. + " kilnname,"
  4347. + " kilncarid,"
  4348. + " kilncarcode,"
  4349. + " kilncarname,"
  4350. + " kilncarbatchno,"
  4351. + " kilncarposition,"
  4352. + " reworkprocedureid,"
  4353. + " reworkprocedurecode,"
  4354. + " reworkprocedurename,"
  4355. + " remarks,"
  4356. + " accountdate,"
  4357. + " accountid,"
  4358. + " GoodsLevelID,"
  4359. + " GoodsLevelTypeID,"
  4360. + " createuserid,"
  4361. + " updateuserid,"
  4362. + " GroutingDate,"
  4363. + " GroutingUserID,"
  4364. + " GroutingUserCode,"
  4365. + " GroutingNum,"
  4366. + " GroutingMouldCode,"
  4367. + " MouldCode,"
  4368. + "GroutingDailyID,"
  4369. + "GroutingDailyDetailID,"
  4370. + "GroutingLineID,"
  4371. + " GroutingLineCode,"
  4372. + "GroutingLineName,"
  4373. + "GMouldTypeID,"
  4374. + "CanManyTimes,"
  4375. + "GroutingLineDetailID,"
  4376. + "SpecialRepairflag,"
  4377. + "ClassesSettingID,"
  4378. + "LogoID"
  4379. + ")"
  4380. + " values"
  4381. + " (:productiondataid,"
  4382. + " :barcode,"
  4383. + " :centralizedbatchno,"
  4384. + " :productionlineid,"
  4385. + " :productionlinecode,"
  4386. + " :productionlinename,"
  4387. + " :procedureid,"
  4388. + " :procedurecode,"
  4389. + " :procedurename,"
  4390. + " :proceduremodel,"
  4391. + " :modeltype,"
  4392. + " :piecetype,"
  4393. + " :isreworked,"
  4394. + " :nodetype,"
  4395. + " :ispublicbody,"
  4396. + " :isrefire,"
  4397. + " :islengbu,"
  4398. + " :organizationid,"
  4399. + " :goodsid,"
  4400. + " :goodscode,"
  4401. + " :goodsname,"
  4402. + " :userid,"
  4403. + " :usercode,"
  4404. + " :username,"
  4405. + " :kilnid,"
  4406. + " :kilncode,"
  4407. + " :kilnname,"
  4408. + " :kilncarid,"
  4409. + " :kilncarcode,"
  4410. + " :kilncarname,"
  4411. + " :kilncarbatchno,"
  4412. + " :kilncarposition,"
  4413. + " :reworkprocedureid,"
  4414. + " :reworkprocedurecode,"
  4415. + " :reworkprocedurename,"
  4416. + " :remarks,"
  4417. + " :accountdata,"
  4418. + " :accountid,"
  4419. + " :GoodsLevelID,"
  4420. + " :GoodsLevelTypeID,"
  4421. + " :createuserid,"
  4422. + " :updateuserid,"
  4423. + " :groutingdate,"
  4424. + " :groutinguserid,"
  4425. + " :groutingusercode,"
  4426. + " :groutingnum,"
  4427. + " :groutingmouldcode,"
  4428. + " :mouldcode,"
  4429. + ":groutingdailyid,"
  4430. + ":groutingdailydetailid,"
  4431. + ":groutinglineid,"
  4432. + " :groutinglinecode,"
  4433. + ":groutinglinename,"
  4434. + ":gmouldtypeid,"
  4435. + ":canmanytimes,"
  4436. + ":groutinglinedetailid,"
  4437. + ":specialRepairflag,"
  4438. + ":classesSettingID,"
  4439. + ":logoID"
  4440. + ")";
  4441. #endregion
  4442. #region OracleParameter
  4443. OracleParameter[] paras = new OracleParameter[] {
  4444. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4445. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4446. new OracleParameter(":barcode",productionData.Barcode),
  4447. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4448. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4449. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4450. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4451. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4452. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4453. new OracleParameter(":procedurename",productionData.ProcedureName),
  4454. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4455. new OracleParameter(":modeltype",productionData.ModelType),
  4456. new OracleParameter(":piecetype",productionData.PieceType),
  4457. new OracleParameter(":isreworked",productionData.IsReworked),
  4458. new OracleParameter(":nodetype",productionData.NodeType),
  4459. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4460. new OracleParameter(":isrefire",productionData.IsReFire),
  4461. new OracleParameter(":islengbu",productionData.IsLengBu),
  4462. new OracleParameter(":organizationid",productionData.OrganizationID),
  4463. new OracleParameter(":goodsid",productionData.GoodsID),
  4464. new OracleParameter(":goodscode",productionData.GoodsCode),
  4465. new OracleParameter(":goodsname",productionData.GoodsName),
  4466. new OracleParameter(":userid",productionData.UserID),
  4467. new OracleParameter(":usercode",productionData.UserCode),
  4468. new OracleParameter(":username",productionData.UserName),
  4469. new OracleParameter(":kilnid",productionData.KilnID),
  4470. new OracleParameter(":kilncode",productionData.KilnCode),
  4471. new OracleParameter(":kilnname",productionData.KilnName),
  4472. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4473. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4474. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4475. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4476. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4477. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4478. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4479. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4480. new OracleParameter(":remarks",productionData.Remarks),
  4481. new OracleParameter(":accountdata",accountDate),
  4482. new OracleParameter(":accountid",sUserInfo.AccountID),
  4483. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4484. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4485. new OracleParameter(":createuserid",sUserInfo.UserID),
  4486. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4487. new OracleParameter(":groutingdate",GroutingDate),
  4488. new OracleParameter(":groutinguserid",GroutingUserID),
  4489. new OracleParameter(":groutingusercode",GroutingUserCode),
  4490. new OracleParameter(":groutingnum",GroutingNum),
  4491. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4492. new OracleParameter(":mouldcode",MouldCode),
  4493. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4494. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4495. new OracleParameter(":groutinglineid",GroutingLineID),
  4496. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4497. new OracleParameter(":groutinglinename",GroutingLineName),
  4498. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4499. new OracleParameter(":canmanytimes",CanManyTimes),
  4500. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4501. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4502. new OracleParameter(":logoID",logoID),
  4503. };
  4504. #endregion
  4505. foreach (OracleParameter para in paras)
  4506. {
  4507. if (string.IsNullOrEmpty(para.Value + ""))
  4508. {
  4509. para.Value = DBNull.Value;
  4510. }
  4511. }
  4512. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4513. OutSpecialRepairflag = returnVal;
  4514. // 失败
  4515. if (result != Constant.INT_IS_ONE)
  4516. {
  4517. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4518. }
  4519. // 成功返回null
  4520. return null;
  4521. }
  4522. /// <summary>
  4523. /// 添加生产数据(单独为成检所做,因为成检可以从次品到其它,需要读一标识,别的不需要连接回收站表)
  4524. /// </summary>
  4525. /// <param name="oracleTrConn">连接对象</param>
  4526. /// <param name="accountDate">账务日期</param>
  4527. /// <param name="productionData">生产数据</param>
  4528. /// <param name="sUserInfo">用户基本信息</param>
  4529. /// <returns>string</returns>
  4530. /// <remarks>
  4531. /// 陈冰 2014.09.18 新建
  4532. /// </remarks>
  4533. private static string AddFinishCheckProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  4534. {
  4535. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  4536. string selectSql = "";
  4537. string returnVal = "";
  4538. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  4539. {
  4540. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  4541. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  4542. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4543. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4544. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4545. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4546. // TP_PM_GroutingDailyDetail.MouldCode,
  4547. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  4548. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4549. // TP_PM_GroutingDailyDetail.GroutingLineID,
  4550. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  4551. // TP_PM_GroutingDailyDetail.GroutingLineName,
  4552. // TP_PM_GroutingDaily.GMouldTypeID,
  4553. // TP_PM_GroutingDaily.CanManyTimes,
  4554. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4555. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  4556. // from TP_PM_GroutingDaily
  4557. // inner join TP_PM_GroutingDailyDetail
  4558. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  4559. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4560. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  4561. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4562. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4563. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4564. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4565. TP_PM_GroutingDailyDetail.MouldCode,
  4566. TP_PM_GroutingDailyDetail.GroutingDailyID,
  4567. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4568. TP_PM_GroutingDailyDetail.GroutingLineID,
  4569. TP_PM_GroutingDailyDetail.GroutingLineCode,
  4570. TP_PM_GroutingDailyDetail.GroutingLineName,
  4571. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4572. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  4573. TP_PM_GroutingDailyDetail.LOGOID,
  4574. (select GMouldTypeID
  4575. from TP_PM_GroutingDaily
  4576. where TP_PM_GroutingDaily.GroutingDailyID =
  4577. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  4578. (select CanManyTimes
  4579. from TP_PM_GroutingDaily
  4580. where TP_PM_GroutingDaily.GroutingDailyID =
  4581. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  4582. 0 as IsReFire
  4583. from TP_PM_GroutingDailyDetail
  4584. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4585. }
  4586. else
  4587. {
  4588. //这地方连了两张表,为了成检的时候,次品在次新增
  4589. selectSql = @"select
  4590. GroutingDate,
  4591. GroutingUserID,
  4592. GroutingUserCode,
  4593. GroutingNum,
  4594. GroutingMouldCode,
  4595. MouldCode,
  4596. GroutingDailyID,
  4597. GroutingDailyDetailID,
  4598. GroutingLineID,
  4599. GroutingLineCode,
  4600. GroutingLineName,
  4601. GMouldTypeID,
  4602. CanManyTimes,
  4603. GroutingLineDetailID,
  4604. SpecialRepairflag,
  4605. IsReFire,
  4606. Logoid
  4607. from tp_pm_inproduction where barcode=:barcode
  4608. union
  4609. select
  4610. GroutingDate,
  4611. GroutingUserID,
  4612. GroutingUserCode,
  4613. GroutingNum,
  4614. GroutingMouldCode,
  4615. MouldCode,
  4616. GroutingDailyID,
  4617. GroutingDailyDetailID,
  4618. GroutingLineID,
  4619. GroutingLineCode,
  4620. GroutingLineName,
  4621. GMouldTypeID,
  4622. CanManyTimes,
  4623. GroutingLineDetailID,
  4624. SpecialRepairflag,
  4625. IsReFire,
  4626. logoid
  4627. from TP_PM_InProductionTrash where barcode=:barcode
  4628. ";
  4629. }
  4630. OracleParameter[] selectparas = new OracleParameter[] {
  4631. new OracleParameter(":barcode",productionData.Barcode),
  4632. };
  4633. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4634. DateTime GroutingDate = new DateTime();
  4635. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4636. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4637. int IsReFire = 0;
  4638. int? logoid = null;
  4639. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4640. {
  4641. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4642. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4643. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4644. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4645. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4646. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4647. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4648. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4649. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4650. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4651. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4652. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4653. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4654. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4655. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4656. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4657. if (dsGroutingProduct.Tables[0].Rows[0]["logoid"].ToString() != "")
  4658. {
  4659. logoid = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoid"]);
  4660. }
  4661. if (IsReFire > 0) //大于零代表重烧过
  4662. {
  4663. productionData.IsReFire = IsReFire;
  4664. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4665. }
  4666. returnVal = SpecialRepairflag.ToString();
  4667. }
  4668. #endregion
  4669. #region 更新窑炉窑车属性
  4670. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4671. {
  4672. DataSet ds = GetFinishCheckKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4673. if (ds != null)
  4674. {
  4675. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4676. {
  4677. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4678. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4679. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4680. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4681. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4682. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4683. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4684. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4685. }
  4686. }
  4687. }
  4688. #endregion
  4689. if (Convert.ToInt32(productionData.GoodsLevelTypeID) == 6) //判断重烧必须有返工工序
  4690. {
  4691. if (productionData.ReworkProcedureID == null || Convert.ToInt32(productionData.ReworkProcedureID) == 0)
  4692. {
  4693. OutSpecialRepairflag = "";
  4694. return string.Format("产品分级【重烧】必须填写返工工序", "条码", "保存");
  4695. }
  4696. }
  4697. if (Convert.ToInt32(productionData.GoodsLevelTypeID) == 16) //判断冷补必须有返工工序
  4698. {
  4699. if (productionData.ReworkProcedureID == null || Convert.ToInt32(productionData.ReworkProcedureID) == 0)
  4700. {
  4701. OutSpecialRepairflag = "";
  4702. return string.Format("产品分级【冷补】必须填写返工工序", "条码", "保存");
  4703. }
  4704. }
  4705. DateTime? checkTime = null;
  4706. if (productionData.IsPDA != null)
  4707. {
  4708. if (productionData.PDACheckTime != null)
  4709. {
  4710. // PDA端
  4711. if (productionData.PDACheckTime.ToString() != string.Empty)
  4712. {
  4713. checkTime = Convert.ToDateTime(productionData.PDACheckTime);
  4714. }
  4715. }
  4716. }
  4717. else
  4718. {
  4719. if (productionData.CheckTime != null)
  4720. {
  4721. // PDA端
  4722. if (productionData.CheckTime.ToString() != string.Empty)
  4723. {
  4724. checkTime = Convert.ToDateTime(productionData.CheckTime);
  4725. }
  4726. }
  4727. }
  4728. #region SQL
  4729. string sql = "insert into tp_pm_productiondataIn"
  4730. + " (productiondataid,"
  4731. + " barcode,"
  4732. + " centralizedbatchno,"
  4733. + " productionlineid,"
  4734. + " productionlinecode,"
  4735. + " productionlinename,"
  4736. + " procedureid,"
  4737. + " procedurecode,"
  4738. + " procedurename,"
  4739. + " proceduremodel,"
  4740. + " modeltype,"
  4741. + " piecetype,"
  4742. + " isreworked,"
  4743. + " nodetype,"
  4744. + " ispublicbody,"
  4745. + " isrefire,"
  4746. + " islengbu,"
  4747. + " organizationid,"
  4748. + " goodsid,"
  4749. + " goodscode,"
  4750. + " goodsname,"
  4751. + " userid,"
  4752. + " usercode,"
  4753. + " username,"
  4754. + " kilnid,"
  4755. + " kilncode,"
  4756. + " kilnname,"
  4757. + " kilncarid,"
  4758. + " kilncarcode,"
  4759. + " kilncarname,"
  4760. + " kilncarbatchno,"
  4761. + " kilncarposition,"
  4762. + " reworkprocedureid,"
  4763. + " reworkprocedurecode,"
  4764. + " reworkprocedurename,"
  4765. + " remarks,"
  4766. + " accountdate,"
  4767. + " accountid,"
  4768. + " GoodsLevelID,"
  4769. + " GoodsLevelTypeID,"
  4770. + " createuserid,"
  4771. + " updateuserid,"
  4772. + " GroutingDate,"
  4773. + " GroutingUserID,"
  4774. + " GroutingUserCode,"
  4775. + " GroutingNum,"
  4776. + " GroutingMouldCode,"
  4777. + " MouldCode,"
  4778. + "GroutingDailyID,"
  4779. + "GroutingDailyDetailID,"
  4780. + "GroutingLineID,"
  4781. + " GroutingLineCode,"
  4782. + "GroutingLineName,"
  4783. + "GMouldTypeID,"
  4784. + "CanManyTimes,"
  4785. + "GroutingLineDetailID,"
  4786. + "SpecialRepairflag,"
  4787. + "ClassesSettingID,"
  4788. + "LogoID,"
  4789. + "CheckTime"
  4790. + ")"
  4791. + " values"
  4792. + " (:productiondataid,"
  4793. + " :barcode,"
  4794. + " :centralizedbatchno,"
  4795. + " :productionlineid,"
  4796. + " :productionlinecode,"
  4797. + " :productionlinename,"
  4798. + " :procedureid,"
  4799. + " :procedurecode,"
  4800. + " :procedurename,"
  4801. + " :proceduremodel,"
  4802. + " :modeltype,"
  4803. + " :piecetype,"
  4804. + " :isreworked,"
  4805. + " :nodetype,"
  4806. + " :ispublicbody,"
  4807. + " :isrefire,"
  4808. + " :islengbu,"
  4809. + " :organizationid,"
  4810. + " :goodsid,"
  4811. + " :goodscode,"
  4812. + " :goodsname,"
  4813. + " :userid,"
  4814. + " :usercode,"
  4815. + " :username,"
  4816. + " :kilnid,"
  4817. + " :kilncode,"
  4818. + " :kilnname,"
  4819. + " :kilncarid,"
  4820. + " :kilncarcode,"
  4821. + " :kilncarname,"
  4822. + " :kilncarbatchno,"
  4823. + " :kilncarposition,"
  4824. + " :reworkprocedureid,"
  4825. + " :reworkprocedurecode,"
  4826. + " :reworkprocedurename,"
  4827. + " :remarks,"
  4828. + " :accountdata,"
  4829. + " :accountid,"
  4830. + " :GoodsLevelID,"
  4831. + " :GoodsLevelTypeID,"
  4832. + " :createuserid,"
  4833. + " :updateuserid,"
  4834. + " :groutingdate,"
  4835. + " :groutinguserid,"
  4836. + " :groutingusercode,"
  4837. + " :groutingnum,"
  4838. + " :groutingmouldcode,"
  4839. + " :mouldcode,"
  4840. + ":groutingdailyid,"
  4841. + ":groutingdailydetailid,"
  4842. + ":groutinglineid,"
  4843. + " :groutinglinecode,"
  4844. + ":groutinglinename,"
  4845. + ":gmouldtypeid,"
  4846. + ":canmanytimes,"
  4847. + ":groutinglinedetailid,"
  4848. + ":specialRepairflag,"
  4849. + ":classesSettingID,"
  4850. + ":logoid,";
  4851. if (checkTime == null)
  4852. {
  4853. sql = sql + "sysdate";
  4854. }
  4855. else
  4856. {
  4857. sql = sql + ":checkTime";
  4858. }
  4859. sql = sql + ")";
  4860. #endregion
  4861. #region OracleParameter
  4862. OracleParameter[] paras = null;
  4863. if (checkTime != null)
  4864. {
  4865. paras = new OracleParameter[] {
  4866. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4867. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4868. new OracleParameter(":barcode",productionData.Barcode),
  4869. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4870. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4871. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4872. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4873. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4874. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4875. new OracleParameter(":procedurename",productionData.ProcedureName),
  4876. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4877. new OracleParameter(":modeltype",productionData.ModelType),
  4878. new OracleParameter(":piecetype",productionData.PieceType),
  4879. new OracleParameter(":isreworked",productionData.IsReworked),
  4880. new OracleParameter(":nodetype",productionData.NodeType),
  4881. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4882. new OracleParameter(":isrefire",productionData.IsReFire),
  4883. new OracleParameter(":islengbu",productionData.IsLengBu),
  4884. new OracleParameter(":organizationid",productionData.OrganizationID),
  4885. new OracleParameter(":goodsid",productionData.GoodsID),
  4886. new OracleParameter(":goodscode",productionData.GoodsCode),
  4887. new OracleParameter(":goodsname",productionData.GoodsName),
  4888. new OracleParameter(":userid",productionData.UserID),
  4889. new OracleParameter(":usercode",productionData.UserCode),
  4890. new OracleParameter(":username",productionData.UserName),
  4891. new OracleParameter(":kilnid",productionData.KilnID),
  4892. new OracleParameter(":kilncode",productionData.KilnCode),
  4893. new OracleParameter(":kilnname",productionData.KilnName),
  4894. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4895. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4896. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4897. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4898. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4899. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4900. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4901. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4902. new OracleParameter(":remarks",productionData.Remarks),
  4903. new OracleParameter(":accountdata",accountDate),
  4904. new OracleParameter(":accountid",sUserInfo.AccountID),
  4905. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4906. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4907. new OracleParameter(":createuserid",sUserInfo.UserID),
  4908. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4909. new OracleParameter(":groutingdate",GroutingDate),
  4910. new OracleParameter(":groutinguserid",GroutingUserID),
  4911. new OracleParameter(":groutingusercode",GroutingUserCode),
  4912. new OracleParameter(":groutingnum",GroutingNum),
  4913. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4914. new OracleParameter(":mouldcode",MouldCode),
  4915. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4916. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4917. new OracleParameter(":groutinglineid",GroutingLineID),
  4918. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4919. new OracleParameter(":groutinglinename",GroutingLineName),
  4920. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4921. new OracleParameter(":canmanytimes",CanManyTimes),
  4922. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4923. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4924. new OracleParameter(":logoid",logoid),
  4925. new OracleParameter(":checkTime",checkTime),
  4926. };
  4927. }
  4928. else
  4929. {
  4930. paras = new OracleParameter[] {
  4931. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4932. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4933. new OracleParameter(":barcode",productionData.Barcode),
  4934. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4935. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4936. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4937. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4938. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4939. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4940. new OracleParameter(":procedurename",productionData.ProcedureName),
  4941. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4942. new OracleParameter(":modeltype",productionData.ModelType),
  4943. new OracleParameter(":piecetype",productionData.PieceType),
  4944. new OracleParameter(":isreworked",productionData.IsReworked),
  4945. new OracleParameter(":nodetype",productionData.NodeType),
  4946. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4947. new OracleParameter(":isrefire",productionData.IsReFire),
  4948. new OracleParameter(":islengbu",productionData.IsLengBu),
  4949. new OracleParameter(":organizationid",productionData.OrganizationID),
  4950. new OracleParameter(":goodsid",productionData.GoodsID),
  4951. new OracleParameter(":goodscode",productionData.GoodsCode),
  4952. new OracleParameter(":goodsname",productionData.GoodsName),
  4953. new OracleParameter(":userid",productionData.UserID),
  4954. new OracleParameter(":usercode",productionData.UserCode),
  4955. new OracleParameter(":username",productionData.UserName),
  4956. new OracleParameter(":kilnid",productionData.KilnID),
  4957. new OracleParameter(":kilncode",productionData.KilnCode),
  4958. new OracleParameter(":kilnname",productionData.KilnName),
  4959. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4960. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4961. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4962. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4963. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4964. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4965. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4966. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4967. new OracleParameter(":remarks",productionData.Remarks),
  4968. new OracleParameter(":accountdata",accountDate),
  4969. new OracleParameter(":accountid",sUserInfo.AccountID),
  4970. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4971. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4972. new OracleParameter(":createuserid",sUserInfo.UserID),
  4973. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4974. new OracleParameter(":groutingdate",GroutingDate),
  4975. new OracleParameter(":groutinguserid",GroutingUserID),
  4976. new OracleParameter(":groutingusercode",GroutingUserCode),
  4977. new OracleParameter(":groutingnum",GroutingNum),
  4978. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4979. new OracleParameter(":mouldcode",MouldCode),
  4980. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4981. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4982. new OracleParameter(":groutinglineid",GroutingLineID),
  4983. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4984. new OracleParameter(":groutinglinename",GroutingLineName),
  4985. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4986. new OracleParameter(":canmanytimes",CanManyTimes),
  4987. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4988. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4989. new OracleParameter(":logoid",logoid),
  4990. };
  4991. }
  4992. #endregion
  4993. foreach (OracleParameter para in paras)
  4994. {
  4995. if (string.IsNullOrEmpty(para.Value + ""))
  4996. {
  4997. para.Value = DBNull.Value;
  4998. }
  4999. }
  5000. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5001. OutSpecialRepairflag = returnVal;
  5002. // 失败
  5003. if (result != Constant.INT_IS_ONE)
  5004. {
  5005. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5006. }
  5007. // 成功返回null
  5008. return null;
  5009. }
  5010. /// <summary>
  5011. /// 删除在产数据
  5012. /// </summary>
  5013. /// <param name="oracleTrConn">连接对象</param>
  5014. /// <param name="delInProductionEntity">在产数据对象</param>
  5015. /// <returns>string</returns>
  5016. /// <remarks>
  5017. /// 陈冰 2014.09.18 新建
  5018. /// </remarks>
  5019. private static string DeleteInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  5020. {
  5021. OracleParameter[] paras = new OracleParameter[] {
  5022. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5023. };
  5024. int result = 0;
  5025. //删除在产表之前,插入到产品回收表中
  5026. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  5027. {
  5028. OracleParameter[] parasPDA = new OracleParameter[] {
  5029. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5030. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5031. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5032. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  5033. };
  5034. string sqlInsert = @"insert into TP_PM_InProductionTrash
  5035. (
  5036. BarCode,
  5037. ProductionLineID,
  5038. ProductionLineCode,
  5039. ProductionLineName,
  5040. ProcedureModel,
  5041. ModelType,
  5042. DefectFlag,
  5043. ReworkProcedureID,
  5044. IsPublicBody,
  5045. IsReFire,
  5046. GoodsLevelID,
  5047. GoodsLevelTypeID,
  5048. GoodsID,
  5049. GoodsCode,
  5050. GoodsName,
  5051. UserID,
  5052. GroutingDailyID,
  5053. GroutingDailyDetailID,
  5054. GroutingDate,
  5055. GroutingLineID,
  5056. GroutingLineCode,
  5057. GroutingLineName,
  5058. GMouldTypeID,
  5059. CanManyTimes,
  5060. GroutingLineDetailID,
  5061. GroutingMouldCode,
  5062. MouldCode,
  5063. GroutingUserID,
  5064. GroutingUserCode,
  5065. GroutingNum,
  5066. Remarks,
  5067. KilnID,
  5068. KilnCode,
  5069. KilnName,
  5070. KilnCarID,
  5071. KilnCarCode,
  5072. KilnCarName,
  5073. KilnCarBatchNo,
  5074. KilnCarPosition,
  5075. AccountID,
  5076. ValueFlag,
  5077. CreateTime,
  5078. CreateUserID,
  5079. UpdateUserID,
  5080. SpecialRepairflag,
  5081. FlowProcedureID,
  5082. FlowProcedureTime,
  5083. ProcedureID,
  5084. ProcedureTime,
  5085. ProductionDataID,
  5086. logoid, ISREWORKFLAG, SEMICHECKID
  5087. )
  5088. select
  5089. BarCode,
  5090. ProductionLineID,
  5091. ProductionLineCode,
  5092. ProductionLineName,
  5093. ProcedureModel,
  5094. ModelType,
  5095. DefectFlag,
  5096. ReworkProcedureID,
  5097. IsPublicBody,
  5098. IsReFire,
  5099. GoodsLevelID,
  5100. GoodsLevelTypeID,
  5101. GoodsID,
  5102. GoodsCode,
  5103. GoodsName,
  5104. UserID,
  5105. GroutingDailyID,
  5106. GroutingDailyDetailID,
  5107. GroutingDate,
  5108. GroutingLineID,
  5109. GroutingLineCode,
  5110. GroutingLineName,
  5111. GMouldTypeID,
  5112. CanManyTimes,
  5113. GroutingLineDetailID,
  5114. GroutingMouldCode,
  5115. MouldCode,
  5116. GroutingUserID,
  5117. GroutingUserCode,
  5118. GroutingNum,
  5119. Remarks,
  5120. KilnID,
  5121. KilnCode,
  5122. KilnName,
  5123. KilnCarID,
  5124. KilnCarCode,
  5125. KilnCarName,
  5126. KilnCarBatchNo,
  5127. KilnCarPosition,
  5128. AccountID,
  5129. ValueFlag,
  5130. CreateTime,
  5131. :CreateUserID,
  5132. :UpdateUserID,
  5133. SpecialRepairflag,
  5134. :FlowProcedureID,
  5135. FlowProcedureTime,
  5136. :FlowProcedureID,
  5137. ProcedureTime,
  5138. ProductionDataID,
  5139. logoid, ISREWORKFLAG, SEMICHECKID
  5140. from TP_PM_InProduction
  5141. where barcode=:barcode
  5142. ";
  5143. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  5144. }
  5145. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  5146. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  5147. // 删除失败
  5148. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  5149. if (result == Constant.INT_IS_ZERO)
  5150. {
  5151. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5152. }
  5153. // 成功返回null
  5154. return null;
  5155. }
  5156. /// <summary>
  5157. /// 删除在产数据
  5158. /// </summary>
  5159. /// <param name="oracleTrConn">连接对象</param>
  5160. /// <param name="delInProductionEntity">在产数据对象</param>
  5161. /// <returns>string</returns>
  5162. /// <remarks>
  5163. /// 陈冰 2014.09.18 新建
  5164. /// </remarks>
  5165. private static string DeletePDAInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  5166. {
  5167. OracleParameter[] paras = new OracleParameter[] {
  5168. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5169. };
  5170. int result = 0;
  5171. //删除在产表之前,插入到产品回收表中
  5172. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  5173. {
  5174. OracleParameter[] parasPDA = new OracleParameter[] {
  5175. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5176. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  5177. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5178. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5179. new OracleParameter(":ProductionDataID",OracleDbType.Int32,delInProductionEntity.ProductionDataID,ParameterDirection.Input),
  5180. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,delInProductionEntity.GoodsLevelID,ParameterDirection.Input),
  5181. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,delInProductionEntity.GoodsLevelTypeID,ParameterDirection.Input),
  5182. };
  5183. //删除在产表前,在产表生产数据ID更新下,如不更新这样就不准了,例如,次品到次品 第一次不会影响,因为第一次TP_PM_InProductionTrash表里没有
  5184. // 如果第二次走次品到次品,才有效,下面的sqlInsert则没有效,因为在产表里没有数据插入不到回收表
  5185. string sqlupdate = "update TP_PM_InProductionTrash set ProductionDataID=:ProductionDataID where barcode=:barcode";
  5186. OracleParameter[] parasupdate = new OracleParameter[] {
  5187. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5188. new OracleParameter(":ProductionDataID",delInProductionEntity.ProductionDataID),
  5189. };
  5190. oracleTrConn.ExecuteNonQuery(sqlupdate, parasupdate);
  5191. string sqlInsert = @"insert into TP_PM_InProductionTrash
  5192. (
  5193. BarCode,
  5194. ProductionLineID,
  5195. ProductionLineCode,
  5196. ProductionLineName,
  5197. ProcedureModel,
  5198. ModelType,
  5199. DefectFlag,
  5200. ReworkProcedureID,
  5201. IsPublicBody,
  5202. IsReFire,
  5203. GoodsLevelID,
  5204. GoodsLevelTypeID,
  5205. GoodsID,
  5206. GoodsCode,
  5207. GoodsName,
  5208. UserID,
  5209. GroutingDailyID,
  5210. GroutingDailyDetailID,
  5211. GroutingDate,
  5212. GroutingLineID,
  5213. GroutingLineCode,
  5214. GroutingLineName,
  5215. GMouldTypeID,
  5216. CanManyTimes,
  5217. GroutingLineDetailID,
  5218. GroutingMouldCode,
  5219. MouldCode,
  5220. GroutingUserID,
  5221. GroutingUserCode,
  5222. GroutingNum,
  5223. Remarks,
  5224. KilnID,
  5225. KilnCode,
  5226. KilnName,
  5227. KilnCarID,
  5228. KilnCarCode,
  5229. KilnCarName,
  5230. KilnCarBatchNo,
  5231. KilnCarPosition,
  5232. AccountID,
  5233. ValueFlag,
  5234. CreateUserID,
  5235. UpdateUserID,
  5236. SpecialRepairflag,
  5237. FlowProcedureID,
  5238. FlowProcedureTime,
  5239. ProcedureID,
  5240. ProcedureTime,
  5241. ProductionDataID,
  5242. logoid, ISREWORKFLAG, SEMICHECKID
  5243. )
  5244. select
  5245. BarCode,
  5246. ProductionLineID,
  5247. ProductionLineCode,
  5248. ProductionLineName,
  5249. ProcedureModel,
  5250. ModelType,
  5251. DefectFlag,
  5252. ReworkProcedureID,
  5253. IsPublicBody,
  5254. IsReFire,
  5255. :GoodsLevelID,
  5256. :GoodsLevelTypeID,
  5257. GoodsID,
  5258. GoodsCode,
  5259. GoodsName,
  5260. UserID,
  5261. GroutingDailyID,
  5262. GroutingDailyDetailID,
  5263. GroutingDate,
  5264. GroutingLineID,
  5265. GroutingLineCode,
  5266. GroutingLineName,
  5267. GMouldTypeID,
  5268. CanManyTimes,
  5269. GroutingLineDetailID,
  5270. GroutingMouldCode,
  5271. MouldCode,
  5272. GroutingUserID,
  5273. GroutingUserCode,
  5274. GroutingNum,
  5275. Remarks,
  5276. KilnID,
  5277. KilnCode,
  5278. KilnName,
  5279. KilnCarID,
  5280. KilnCarCode,
  5281. KilnCarName,
  5282. KilnCarBatchNo,
  5283. KilnCarPosition,
  5284. AccountID,
  5285. ValueFlag,
  5286. :CreateUserID,
  5287. :UpdateUserID,
  5288. SpecialRepairflag,
  5289. :FlowProcedureID,
  5290. FlowProcedureTime,
  5291. :FlowProcedureID,
  5292. ProcedureTime,
  5293. :ProductionDataID,
  5294. logoid, ISREWORKFLAG, SEMICHECKID
  5295. from TP_PM_InProduction
  5296. where barcode=:barcode
  5297. ";
  5298. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  5299. }
  5300. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  5301. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  5302. // 删除失败
  5303. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  5304. if (result == Constant.INT_IS_ZERO)
  5305. {
  5306. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5307. }
  5308. // 成功返回null
  5309. return null;
  5310. }
  5311. /// <summary>
  5312. /// 根据窑车ID 删除窑车产品
  5313. /// </summary>
  5314. /// <param name="oracleTrConn">数据连接</param>
  5315. /// <param name="pKilnCarID">窑车ID</param>
  5316. /// <returns>
  5317. /// 张国印 2014.10.04 新建
  5318. /// </returns>
  5319. private static string DeleteKilnCarGoodsByKilnCarID(IDBTransaction oracleTrConn, int pKilnCarID)
  5320. {
  5321. string sql = "delete TP_PM_KilnCarGoods where KilnCarID = :pKilnCarID";
  5322. OracleParameter[] paras = new OracleParameter[] {
  5323. new OracleParameter(":pKilnCarID", OracleDbType.Int32, pKilnCarID, ParameterDirection.Input),
  5324. };
  5325. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5326. // 删除失败
  5327. if (result <= Constant.INT_IS_ZERO)
  5328. {
  5329. return string.Format(Messages.MSG_CMN_W001, "窑车产品", "保存");
  5330. }
  5331. // 成功返回null
  5332. return null;
  5333. }
  5334. /// <summary>
  5335. /// 添加产成品
  5336. /// </summary>
  5337. /// <param name="oracleTrConn">连接对象</param>
  5338. /// <param name="finishedProduct">产成品对象</param>
  5339. /// <param name="sUserInfo">用户基本信息</param>
  5340. /// <returns>string</returns>
  5341. /// <remarks>
  5342. /// 陈冰 2014.09.18 新建
  5343. /// </remarks>
  5344. private static string AddFinishedProduct(IDBTransaction oracleTrConn,
  5345. FinishedProductEntity finishedProduct, SUserInfo sUserInfo
  5346. , string finishedloadbatchno)
  5347. {
  5348. List<OracleParameter> paras = new List<OracleParameter>();
  5349. string sql = "";
  5350. #region
  5351. // add 2015/11/16
  5352. // if (finishedProduct.LogoID != null && Convert.ToInt32(finishedProduct.LogoID) > 0)
  5353. // {
  5354. // #region SQL
  5355. // //废弃
  5356. // sql = " insert into tp_pm_finishedproduct"
  5357. // + " (barcode, "
  5358. // + " productionlineid, "
  5359. // + " productionlinecode, "
  5360. // + " productionlinename, "
  5361. // + " ispublicbody, "
  5362. // + " isrefire, "
  5363. // + " GoodsLevelID, "
  5364. // + " GoodsLevelTypeID, "
  5365. // + " goodsid, "
  5366. // + " goodscode, "
  5367. // + " goodsname, "
  5368. // + " groutingdailyid, "
  5369. // + " groutingdailydetailid, "
  5370. // + " groutingdate, "
  5371. // + " groutinglineid, "
  5372. // + " groutinglinecode, "
  5373. // + " groutinglinename, "
  5374. // + " gmouldtypeid, "
  5375. // + " groutinglinedetailid, "
  5376. // + " groutingmouldcode, "
  5377. // + " mouldcode, "
  5378. // + " accountdate, "
  5379. // + " accountid, "
  5380. // + " createuserid, "
  5381. // + " updateuserid,"
  5382. // + " groutinguserid, "
  5383. // + " groutingusercode, "
  5384. // + " groutingnum, "
  5385. // + " kilnid, "
  5386. // + " kilncode, "
  5387. // + " kilnname, "
  5388. // + " kilncarid, "
  5389. // + " kilncarcode, "
  5390. // + " kilncarname, "
  5391. // + " kilncarbatchno, "
  5392. // + " kilncarposition, "
  5393. // + " specialRepairflag, "
  5394. // + " logoid "
  5395. // + ") "
  5396. // + " select barcode, "
  5397. // + " productionlineid, "
  5398. // + " productionlinecode, "
  5399. // + " productionlinename, "
  5400. // + " ispublicbody, "
  5401. // + " isrefire, ";
  5402. // #region 产品等级
  5403. // //if (finishedProduct.GoodsGrade == null)
  5404. // //{
  5405. // // sql = sql + " goodsgrade,";
  5406. // //}
  5407. // //// 最后一个工序如果是检验工序,可更改产品等级
  5408. // //else
  5409. // //{
  5410. // // sql = sql + " :goodsgrade, ";
  5411. // // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5412. // //}
  5413. // //如果包装时,产成品未走过成检,则直接视为正品
  5414. // int? GoodsLevelTypeID = null;
  5415. // int? GoodsLevelID = null;
  5416. // if (finishedProduct.GoodsLevelID == null)
  5417. // {
  5418. // string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5419. // (
  5420. // select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5421. // ") and AccountID=" + sUserInfo.AccountID;
  5422. // DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5423. // if (ds != null && ds.Tables[0].Rows.Count > 0)
  5424. // {
  5425. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5426. // {
  5427. // if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5428. // {
  5429. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5430. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5431. // }
  5432. // else
  5433. // {
  5434. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5435. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5436. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5437. // {
  5438. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5439. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5440. // }
  5441. // }
  5442. // }
  5443. // }
  5444. // else
  5445. // {
  5446. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5447. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5448. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5449. // {
  5450. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5451. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5452. // }
  5453. // }
  5454. // }
  5455. // if (finishedProduct.GoodsLevelID == null)
  5456. // {
  5457. // //sql = sql + " GoodsLevelID,";
  5458. // // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5459. // ////// sql = sql + @"
  5460. // ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5461. // ////// (
  5462. // ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5463. // ////// ) and AccountID=:AccountID),";
  5464. // sql = sql + GoodsLevelID.ToString() + " ,";
  5465. // }
  5466. // // 最后一个工序如果是检验工序,可更改产品等级
  5467. // else
  5468. // {
  5469. // sql = sql + " :GoodsLevelID, ";
  5470. // paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5471. // }
  5472. // if (finishedProduct.GoodsLevelTypeID == null)
  5473. // {
  5474. // //sql = sql + " GoodsLevelTypeID,";
  5475. // sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5476. // }
  5477. // // 最后一个工序如果是检验工序,可更改产品等级
  5478. // else
  5479. // {
  5480. // sql = sql + " :GoodsLevelTypeID, ";
  5481. // paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5482. // }
  5483. // #endregion
  5484. // sql = sql + " goodsid, "
  5485. // + " goodscode, "
  5486. // + " goodsname, "
  5487. // + " groutingdailyid, "
  5488. // + " groutingdailydetailid, "
  5489. // + " groutingdate, "
  5490. // + " groutinglineid, "
  5491. // + " groutinglinecode, "
  5492. // + " groutinglinename, "
  5493. // + " gmouldtypeid, "
  5494. // + " groutinglinedetailid, "
  5495. // + " groutingmouldcode, "
  5496. // + " mouldcode, "
  5497. // + " fun_cmn_getaccountdate(accountid), "
  5498. // + " accountid, "
  5499. // + " :createuserid, "
  5500. // + " :updateuserid, "
  5501. // + " groutinguserid, "
  5502. // + " groutingusercode, "
  5503. // + " groutingnum, "
  5504. // + " kilnid, "
  5505. // + " kilncode, "
  5506. // + " kilnname, "
  5507. // + " kilncarid, "
  5508. // + " kilncarcode, "
  5509. // + " kilncarname, "
  5510. // + " kilncarbatchno, "
  5511. // + " kilncarposition, "
  5512. // + " specialRepairflag, "
  5513. // + " :logoid "
  5514. // + " from tp_pm_inproduction "
  5515. // + " where Barcode=:barcode";
  5516. // #endregion
  5517. // paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5518. // paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5519. // paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5520. // paras.Add(new OracleParameter(":logoid", finishedProduct.LogoID));
  5521. // // end 2015/11/16
  5522. // }
  5523. // else
  5524. // {
  5525. #endregion
  5526. #region SQL
  5527. //废弃
  5528. sql = " insert into tp_pm_finishedproduct"
  5529. + " (barcode, "
  5530. + " productionlineid, "
  5531. + " productionlinecode, "
  5532. + " productionlinename, "
  5533. + " ispublicbody, "
  5534. + " isrefire, "
  5535. + " GoodsLevelID, "
  5536. + " GoodsLevelTypeID, "
  5537. + " goodsid, "
  5538. + " goodscode, "
  5539. + " goodsname, "
  5540. + " groutingdailyid, "
  5541. + " groutingdailydetailid, "
  5542. + " groutingdate, "
  5543. + " groutinglineid, "
  5544. + " groutinglinecode, "
  5545. + " groutinglinename, "
  5546. + " gmouldtypeid, "
  5547. + " groutinglinedetailid, "
  5548. + " groutingmouldcode, "
  5549. + " mouldcode, "
  5550. + " accountdate, "
  5551. + " accountid, "
  5552. + " createuserid, "
  5553. + " updateuserid,"
  5554. + " groutinguserid, "
  5555. + " groutingusercode, "
  5556. + " groutingnum, "
  5557. + " kilnid, "
  5558. + " kilncode, "
  5559. + " kilnname, "
  5560. + " kilncarid, "
  5561. + " kilncarcode, "
  5562. + " kilncarname, "
  5563. + " kilncarbatchno, "
  5564. + " kilncarposition, "
  5565. + " specialRepairflag, "
  5566. + " logoid,OnlyCode ,finishedloadbatchno"
  5567. + ") "
  5568. + " select barcode, "
  5569. + " productionlineid, "
  5570. + " productionlinecode, "
  5571. + " productionlinename, "
  5572. + " ispublicbody, "
  5573. + " isrefire, ";
  5574. #region 产品等级
  5575. //if (finishedProduct.GoodsGrade == null)
  5576. //{
  5577. // sql = sql + " goodsgrade,";
  5578. //}
  5579. //// 最后一个工序如果是检验工序,可更改产品等级
  5580. //else
  5581. //{
  5582. // sql = sql + " :goodsgrade, ";
  5583. // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5584. //}
  5585. //如果包装时,产成品未走过成检,则直接视为正品
  5586. int? GoodsLevelTypeID = null;
  5587. int? GoodsLevelID = null;
  5588. if (finishedProduct.GoodsLevelID == null)
  5589. {
  5590. string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5591. (
  5592. select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5593. ") and AccountID=" + sUserInfo.AccountID;
  5594. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5595. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5596. {
  5597. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5598. {
  5599. if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5600. {
  5601. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5602. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5603. }
  5604. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 4)//正品
  5605. {
  5606. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5607. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5608. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5609. {
  5610. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5611. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5612. }
  5613. }
  5614. else
  5615. {
  5616. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5617. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5618. }
  5619. }
  5620. }
  5621. else
  5622. {
  5623. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5624. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5625. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5626. {
  5627. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5628. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5629. }
  5630. }
  5631. }
  5632. if (finishedProduct.GoodsLevelID == null)
  5633. {
  5634. //sql = sql + " GoodsLevelID,";
  5635. // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5636. ////// sql = sql + @"
  5637. ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5638. ////// (
  5639. ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5640. ////// ) and AccountID=:AccountID),";
  5641. sql = sql + GoodsLevelID.ToString() + " ,";
  5642. }
  5643. // 最后一个工序如果是检验工序,可更改产品等级
  5644. else
  5645. {
  5646. sql = sql + " :GoodsLevelID, ";
  5647. paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5648. }
  5649. if (finishedProduct.GoodsLevelTypeID == null)
  5650. {
  5651. //sql = sql + " GoodsLevelTypeID,";
  5652. sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5653. }
  5654. // 最后一个工序如果是检验工序,可更改产品等级
  5655. else
  5656. {
  5657. sql = sql + " :GoodsLevelTypeID, ";
  5658. paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5659. }
  5660. #endregion
  5661. sql = sql + " goodsid, "
  5662. + " goodscode, "
  5663. + " goodsname, "
  5664. + " groutingdailyid, "
  5665. + " groutingdailydetailid, "
  5666. + " groutingdate, "
  5667. + " groutinglineid, "
  5668. + " groutinglinecode, "
  5669. + " groutinglinename, "
  5670. + " gmouldtypeid, "
  5671. + " groutinglinedetailid, "
  5672. + " groutingmouldcode, "
  5673. + " mouldcode, "
  5674. + " fun_cmn_getaccountdate(accountid), "
  5675. + " accountid, "
  5676. + " :createuserid, "
  5677. + " :updateuserid, "
  5678. + " groutinguserid, "
  5679. + " groutingusercode, "
  5680. + " groutingnum, "
  5681. + " kilnid, "
  5682. + " kilncode, "
  5683. + " kilnname, "
  5684. + " kilncarid, "
  5685. + " kilncarcode, "
  5686. + " kilncarname, "
  5687. + " kilncarbatchno, "
  5688. + " kilncarposition, "
  5689. + " specialRepairflag, "
  5690. + " logoid, "
  5691. + " (select OnlyCode from tp_pm_groutingdailydetail where barcode=:barcode), :finishedloadbatchno"
  5692. + " from tp_pm_inproduction "
  5693. + " where Barcode=:barcode";
  5694. #endregion
  5695. paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5696. paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5697. paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5698. paras.Add(new OracleParameter(":finishedloadbatchno", finishedloadbatchno));
  5699. //}
  5700. //paras.Add(new OracleParameter(":AccountID", sUserInfo.AccountID));
  5701. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  5702. // 保存失败
  5703. if (result != Constant.INT_IS_ONE)
  5704. {
  5705. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5706. }
  5707. // 保存成功返回null
  5708. return null;
  5709. }
  5710. /// <summary>
  5711. /// 添加在产产品数据
  5712. /// </summary>
  5713. /// <param name="oracleTrConn">连接对象</param>
  5714. /// <param name="inProduction">在产产品实体类</param>
  5715. /// <param name="sUserInfo">用户基本信息</param>
  5716. /// <param name="isSendBody">是否交坯</param>
  5717. /// <returns>string</returns>
  5718. /// <remarks>
  5719. /// 陈冰 2014.09.18 新建
  5720. /// </remarks>
  5721. private static string AddInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo, DataSet _dsDataset, bool isSendBody = false)
  5722. {
  5723. #region SQL
  5724. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  5725. OracleParameter[] parasExist = new OracleParameter[] {
  5726. new OracleParameter(":barcode",inProduction.BarCode.Trim()),
  5727. };
  5728. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  5729. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  5730. {
  5731. // 获取生产线ID,生产线名称,生产编码
  5732. string sql = @"select TP_PC_ProductionLine.ProductionLineID,TP_PC_ProductionLine.ProductionLineCode,TP_PC_ProductionLine.ProductionLineName
  5733. from TP_PC_Procedure inner join TP_PC_ProductionLine
  5734. on TP_PC_Procedure.ProductionLineID=TP_PC_ProductionLine.ProductionLineID
  5735. where TP_PC_Procedure.ProcedureID=:ProcedureID
  5736. ";
  5737. OracleParameter[] paras = new OracleParameter[] {
  5738. new OracleParameter(":ProcedureID",inProduction.FlowProcedureID),
  5739. };
  5740. dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5741. #region 获取生产线信息
  5742. int ProductionLineID = 0;//生产线ID
  5743. string ProductionLineCode = "", ProductionLineName = "";//生产线名称,编码
  5744. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5745. {
  5746. ProductionLineID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["ProductionLineID"]);
  5747. ProductionLineCode = dsresult.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  5748. ProductionLineName = dsresult.Tables[0].Rows[0]["ProductionLineName"].ToString();
  5749. }
  5750. #endregion
  5751. #region 获取注浆信息
  5752. // sql = @"select
  5753. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  5754. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  5755. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  5756. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  5757. // TP_PM_GroutingDailyDetail.MouldCode,
  5758. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  5759. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  5760. // TP_PM_GroutingDailyDetail.GroutingLineID,
  5761. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  5762. // TP_PM_GroutingDailyDetail.GroutingLineName,
  5763. // TP_PM_GroutingDaily.GMouldTypeID,
  5764. // TP_PM_GroutingDaily.CanManyTimes,
  5765. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  5766. // TP_PM_GroutingDailyDetail.SpecialRepairflag,
  5767. // TP_PM_GroutingDailyDetail.GoodsID,
  5768. // TP_PM_GroutingDailyDetail.GoodsCode,
  5769. // TP_PM_GroutingDailyDetail.GoodsName,
  5770. // TP_PM_GroutingDailyDetail.GroutingDate
  5771. // from TP_PM_GroutingDaily
  5772. // inner join TP_PM_GroutingDailyDetail
  5773. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  5774. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5775. // sql = @"select
  5776. // UserID as GroutingUserID,
  5777. // UserCode as GroutingUserCode,
  5778. // GroutingCount as GroutingNum,
  5779. // GroutingMouldCode,
  5780. // MouldCode,
  5781. // GroutingDailyID,
  5782. // GroutingDailyDetailID,
  5783. // GroutingLineID,
  5784. // GroutingLineCode,
  5785. // GroutingLineName,
  5786. // GroutingLineDetailID,
  5787. // SpecialRepairflag,
  5788. // GoodsID,
  5789. // GoodsCode,
  5790. // GoodsName,
  5791. // GroutingDate,
  5792. // (select GMouldTypeID
  5793. // from TP_PM_GroutingDaily
  5794. // where TP_PM_GroutingDaily.GroutingDailyID =
  5795. // TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  5796. // (select CanManyTimes
  5797. // from TP_PM_GroutingDaily
  5798. // where TP_PM_GroutingDaily.GroutingDailyID =
  5799. // TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes
  5800. // from TP_PM_GroutingDailyDetail
  5801. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5802. // sql = @"select
  5803. // GroutingUserID,
  5804. // GroutingUserCode,
  5805. // GroutingNum,
  5806. // GroutingMouldCode,
  5807. // MouldCode,
  5808. // GroutingDailyID,
  5809. // GroutingDailyDetailID,
  5810. // GroutingLineID,
  5811. // GroutingLineCode,
  5812. // GroutingLineName,
  5813. // GroutingLineDetailID,
  5814. // SpecialRepairflag,
  5815. // GoodsID,
  5816. // GoodsCode,
  5817. // GoodsName,
  5818. // GroutingDate,
  5819. // GMouldTypeID
  5820. // CanManyTimes
  5821. // from tp_pm_productiondata
  5822. // where tp_pm_productiondata.barcode=:barcode";
  5823. // paras = new OracleParameter[] {
  5824. // new OracleParameter(":barcode",inProduction.BarCode),
  5825. // };
  5826. dsresult = _dsDataset;
  5827. //dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5828. // 产品ID, 注浆登记ID, 注浆明细ID, 成型线ID 成型线类型ID 能否多次注浆 成型生产线明细ID
  5829. int goodsid = 0, groutingDailyID = 0, groutingdailydetailid = 0, groutinglineid = 0, gMouldTypeID = 0, canManyTimes = 0, groutingLineDetailID = 0;
  5830. // 产品编码, 产品名称 成型线编码 成型线名称 注浆模具编号 模具编号
  5831. string goodsCode = "", goodsName = "", groutingLineCode = "", groutingLineName = "", groutingmouldcode = "", mouldCode = "";
  5832. DateTime? groutingdate = null; // 注浆日期
  5833. int groutingUserID = 0, groutingNum = 0; //注浆工号ID,注浆次数
  5834. string groutingUserCode = "";//注浆工号
  5835. int? LogoID = null;
  5836. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5837. {
  5838. goodsid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GoodsID"]);
  5839. groutingDailyID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyID"]);
  5840. groutingdailydetailid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  5841. groutinglineid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineID"]);
  5842. groutingLineDetailID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineDetailID"]);
  5843. groutingdate = Convert.ToDateTime(dsresult.Tables[0].Rows[0]["GroutingDate"]);
  5844. goodsCode = dsresult.Tables[0].Rows[0]["GoodsCode"].ToString();
  5845. goodsName = dsresult.Tables[0].Rows[0]["GoodsName"].ToString();
  5846. groutingLineCode = dsresult.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  5847. groutingLineName = dsresult.Tables[0].Rows[0]["GroutingLineName"].ToString();
  5848. groutingmouldcode = dsresult.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  5849. mouldCode = dsresult.Tables[0].Rows[0]["MouldCode"].ToString();
  5850. groutingUserCode = dsresult.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  5851. groutingUserID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingUserID"]);
  5852. gMouldTypeID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GMouldTypeID"]);
  5853. canManyTimes = Convert.ToInt32(dsresult.Tables[0].Rows[0]["CanManyTimes"]);
  5854. groutingNum = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingNum"]);
  5855. if (dsresult.Tables[0].Rows[0]["logoid"].ToString() != "")
  5856. {
  5857. LogoID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["logoid"]);
  5858. }
  5859. }
  5860. #endregion
  5861. sql = " insert into tp_pm_inproduction"
  5862. + " ( barcode,"
  5863. + " productionlineid,"
  5864. + " productionlinecode,"
  5865. + " productionlinename,"
  5866. + " proceduremodel,"
  5867. + " modeltype,"
  5868. + " ispublicbody,"
  5869. + " goodsid,"
  5870. + " goodscode,"
  5871. + " goodsname,"
  5872. + " userid,"
  5873. + " groutingdailyid,"
  5874. + " groutingdailydetailid,"
  5875. + " groutingdate,"
  5876. + " groutinglineid,"
  5877. + " groutinglinecode,"
  5878. + " groutinglinename,"
  5879. + " gmouldtypeid,"
  5880. + " canmanytimes,"
  5881. + " groutinglinedetailid,"
  5882. + " groutingmouldcode,"
  5883. + " mouldcode,"
  5884. + " accountid,"
  5885. + " createuserid,"
  5886. + " updateuserid,GoodsLevelTypeID,"
  5887. + " GroutingUserID,"
  5888. + " GroutingUserCode,"
  5889. + " GroutingNum,"
  5890. + " SpecialRepairflag,"
  5891. + " FlowProcedureID,"
  5892. + " FlowProcedureTime,"
  5893. + " ProcedureID,"
  5894. + " ProcedureTime,"
  5895. + " ProductionDataID,logoid"
  5896. + " ) values ("
  5897. + " :barcode,"
  5898. + " :productionlineid,"
  5899. + " :productionlinecode,"
  5900. + " :productionlinename,"
  5901. + " :procedureModel,"
  5902. + " :modelType,"
  5903. + " :isPublicBody,"
  5904. + " :goodsid,"
  5905. + " :goodscode,"
  5906. + " :goodsname,"
  5907. + " :userID,"
  5908. + " :groutingdailyid,"
  5909. + " :groutingdailydetailid,"
  5910. + " :groutingdate,"
  5911. + " :groutinglineid,"
  5912. + " :groutinglinecode,"
  5913. + " :groutinglinename,"
  5914. + " :gmouldtypeid,"
  5915. + " :canmanytimes,"
  5916. + " :groutinglinedetailid,"
  5917. + " :groutingmouldcode,"
  5918. + " :mouldcode,"
  5919. + " :accountID,"
  5920. + " :createUserID,"
  5921. + " :updateUserID,"
  5922. + " null,"
  5923. + " :groutinguserid,"
  5924. + " :groutingusercode,"
  5925. + " :groutingnum,"
  5926. + " :specialRepairflag,"
  5927. + " :flowProcedureID,"
  5928. + " sysdate,"
  5929. + " :procedureID,"
  5930. + " sysdate,"
  5931. + " :productionDataID,:logoid"
  5932. + " ) ";
  5933. #endregion
  5934. paras = new OracleParameter[] {
  5935. new OracleParameter(":procedureModel",inProduction.ProcedureModel),
  5936. new OracleParameter(":modelType",inProduction.ModelType),
  5937. new OracleParameter(":isPublicBody",inProduction.IsPublicBody),
  5938. new OracleParameter(":userID",inProduction.UserID),
  5939. new OracleParameter(":accountID",sUserInfo.AccountID),
  5940. new OracleParameter(":createUserID",sUserInfo.UserID),
  5941. new OracleParameter(":updateUserID",sUserInfo.UserID),
  5942. new OracleParameter(":barcode",inProduction.BarCode),
  5943. new OracleParameter(":specialRepairflag",inProduction.SpecialRepairflag),
  5944. new OracleParameter(":productionlineid",ProductionLineID),//---开始赋值
  5945. new OracleParameter(":productionlinecode",ProductionLineCode),
  5946. new OracleParameter(":productionlinename",ProductionLineName),
  5947. new OracleParameter(":goodsid",goodsid),
  5948. new OracleParameter(":goodscode",goodsCode),
  5949. new OracleParameter(":goodsname",goodsName),
  5950. new OracleParameter(":groutingdailyid",groutingDailyID),
  5951. new OracleParameter(":groutingdailydetailid",groutingdailydetailid),
  5952. new OracleParameter(":groutingdate",groutingdate),
  5953. new OracleParameter(":groutinglineid",groutinglineid),
  5954. new OracleParameter(":groutinglinecode",groutingLineCode),
  5955. new OracleParameter(":groutinglinename",groutingLineName),
  5956. new OracleParameter(":gmouldtypeid",gMouldTypeID),
  5957. new OracleParameter(":canmanytimes",canManyTimes),
  5958. new OracleParameter(":groutinglinedetailid",groutingLineDetailID),
  5959. new OracleParameter(":groutingmouldcode",groutingmouldcode),
  5960. new OracleParameter(":mouldcode",mouldCode),
  5961. new OracleParameter(":groutinguserid",groutingUserID),
  5962. new OracleParameter(":groutingusercode",groutingUserCode),
  5963. new OracleParameter(":groutingnum",groutingNum),
  5964. new OracleParameter(":flowProcedureID",inProduction.FlowProcedureID),
  5965. new OracleParameter(":procedureID",inProduction.FlowProcedureID),
  5966. new OracleParameter(":productionDataID",inProduction.ProductionDataID),
  5967. new OracleParameter(":logoid",LogoID),
  5968. };
  5969. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5970. // 保存失败
  5971. if (result != Constant.INT_IS_ONE)
  5972. {
  5973. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5974. }
  5975. //xuwei fix begin
  5976. //2019-09-17
  5977. //更新用过条码
  5978. //交坯=4,在产=3
  5979. string barcodeStatus = isSendBody ? "4" : "3";
  5980. string updateUsedBarCode = "update TP_PM_USEDBARCODE set barcodestatus=" + barcodeStatus + " where barcode='" + inProduction.BarCode + "'";
  5981. oracleTrConn.ExecuteNonQuery(updateUsedBarCode);
  5982. //xuwei end
  5983. }
  5984. // 保存成功返回null
  5985. return null;
  5986. }
  5987. /// <summary>
  5988. /// 根据最大生产数据ID,获取窑车窑炉等信息
  5989. /// </summary>
  5990. /// <param name="oracleTrConn"></param>
  5991. /// <param name="barcode"></param>
  5992. /// <param name="sUserInfo"></param>
  5993. /// <returns></returns>
  5994. private static DataSet GetFinishCheckKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  5995. {
  5996. string sql = @"select
  5997. KilnID,
  5998. KilnCode,
  5999. KilnName,
  6000. KilnCarID,
  6001. KilnCarCode,
  6002. KilnCarName,
  6003. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  6004. KilnCarPosition
  6005. from tp_pm_inproduction where barcode=:barcode
  6006. union
  6007. select
  6008. KilnID,
  6009. KilnCode,
  6010. KilnName,
  6011. KilnCarID,
  6012. KilnCarCode,
  6013. KilnCarName,
  6014. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  6015. KilnCarPosition
  6016. from TP_PM_InProductionTrash where barcode=:barcode
  6017. ";
  6018. try
  6019. {
  6020. IDataParameter[] paras = new OracleParameter[]
  6021. {
  6022. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  6023. };
  6024. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  6025. if (returnDs != null
  6026. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6027. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6028. {
  6029. return returnDs;
  6030. }
  6031. else
  6032. {
  6033. return null;
  6034. }
  6035. }
  6036. catch (Exception ex)
  6037. {
  6038. throw ex;
  6039. }
  6040. }
  6041. /// <summary>
  6042. /// 根据最大生产数据ID,获取窑车窑炉等信息
  6043. /// </summary>
  6044. /// <param name="oracleTrConn"></param>
  6045. /// <param name="barcode"></param>
  6046. /// <param name="sUserInfo"></param>
  6047. /// <returns></returns>
  6048. private static DataSet GetKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  6049. {
  6050. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  6051. // (
  6052. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  6053. // )";
  6054. // string sql = @"select
  6055. // KilnID,
  6056. // KilnCode,
  6057. // KilnName,
  6058. // KilnCarID,
  6059. // KilnCarCode,
  6060. // KilnCarName,
  6061. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  6062. // KilnCarPosition
  6063. // from tp_pm_inproduction where barcode=:barcode
  6064. // union
  6065. // select
  6066. // KilnID,
  6067. // KilnCode,
  6068. // KilnName,
  6069. // KilnCarID,
  6070. // KilnCarCode,
  6071. // KilnCarName,
  6072. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  6073. // KilnCarPosition
  6074. // from TP_PM_InProductionTrash where barcode=:barcode
  6075. //";
  6076. string sql = @"select
  6077. KilnID,
  6078. KilnCode,
  6079. KilnName,
  6080. KilnCarID,
  6081. KilnCarCode,
  6082. KilnCarName,
  6083. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  6084. KilnCarPosition
  6085. from tp_pm_inproduction where barcode=:barcode
  6086. ";
  6087. try
  6088. {
  6089. IDataParameter[] paras = new OracleParameter[]
  6090. {
  6091. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  6092. };
  6093. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  6094. if (returnDs != null
  6095. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6096. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6097. {
  6098. return returnDs;
  6099. }
  6100. else
  6101. {
  6102. return null;
  6103. }
  6104. }
  6105. catch (Exception ex)
  6106. {
  6107. throw ex;
  6108. }
  6109. }
  6110. /// <summary>
  6111. /// 修改在产数据
  6112. /// </summary>
  6113. /// <param name="oracleTrConn">连接对象</param>
  6114. /// <param name="inProduction">在产数据实体类</param>
  6115. /// <param name="sUserInfo">用户基本信息</param>
  6116. /// <returns>string</returns>
  6117. /// <remarks>
  6118. /// 陈冰 2014.09.18 新建
  6119. /// </remarks>
  6120. private static string UpdateInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo)
  6121. {
  6122. List<OracleParameter> paras = new List<OracleParameter>();
  6123. //paras.Add(new OracleParameter(":completeProcedureID", inProduction.CompleteProcedureID));
  6124. paras.Add(new OracleParameter(":procedureModel", inProduction.ProcedureModel));
  6125. paras.Add(new OracleParameter(":modelType", inProduction.ModelType));
  6126. paras.Add(new OracleParameter(":defectFlag", inProduction.DefectFlag));
  6127. paras.Add(new OracleParameter(":reworkProcedureID", inProduction.ReworkProcedureID));
  6128. paras.Add(new OracleParameter(":flowprocedureid", inProduction.FlowProcedureID));
  6129. paras.Add(new OracleParameter(":procedureID", inProduction.ProcedureID));
  6130. paras.Add(new OracleParameter(":productionDataID", inProduction.ProductionDataID));
  6131. #region SQL
  6132. string sql = " update TP_PM_InProduction "
  6133. //+ " set CompleteProcedureID = :completeProcedureID,"
  6134. + "set ProcedureModel = :procedureModel,"
  6135. + " ModelType = :modelType,"
  6136. + " DefectFlag = :defectFlag,"
  6137. + " flowprocedureid = :flowprocedureid,"
  6138. + " flowproceduretime = sysdate,"
  6139. + " procedureID = :procedureID,"
  6140. + " procedureTime = sysdate,"
  6141. + " productionDataID = :productionDataID,"
  6142. // + " GoodsLevelTypeID = :GoodsLevelTypeID,"
  6143. // 扫码后,返修标识清除
  6144. + " isreworkflag = '0',"
  6145. + " ReworkProcedureID = :reworkProcedureID,";
  6146. #region 只有交坯工序是才传值更改公坯字段
  6147. if (inProduction.IsPublicBody != null)
  6148. {
  6149. sql = sql + " IsPublicBody = :isPublicBody,";
  6150. paras.Add(new OracleParameter(":isPublicBody", inProduction.IsPublicBody));
  6151. }
  6152. #endregion
  6153. #region 只有走特定返工工序时才更改重烧字段
  6154. if (inProduction.IsReFire != null)
  6155. {
  6156. sql = sql + " IsReFire = :isReFire,";
  6157. paras.Add(new OracleParameter(":isReFire", inProduction.IsReFire));
  6158. }
  6159. #endregion
  6160. #region 只有走特定返工工序时才更改重烧字段
  6161. if (inProduction.IsLengBu != null)
  6162. {
  6163. sql = sql + " IsLengBu = :isLengBu,";
  6164. paras.Add(new OracleParameter(":isLengBu", inProduction.IsLengBu));
  6165. }
  6166. #endregion
  6167. #region 只有成检时才更新产品分级字段
  6168. //if (inProduction.GoodsGrade != null)
  6169. //{
  6170. // sql = sql + " GoodsGrade = :goodsGrade,";
  6171. // paras.Add(new OracleParameter(":goodsGrade", inProduction.GoodsGrade));
  6172. //}
  6173. if (inProduction.GoodsLevelID != null)
  6174. {
  6175. sql = sql + " GoodsLevelID = :GoodsLevelID,";
  6176. paras.Add(new OracleParameter(":GoodsLevelID", inProduction.GoodsLevelID));
  6177. }
  6178. if (inProduction.GoodsLevelTypeID != null)
  6179. {
  6180. sql = sql + " GoodsLevelTypeID = :GoodsLevelTypeID,";
  6181. paras.Add(new OracleParameter(":GoodsLevelTypeID", inProduction.GoodsLevelTypeID));
  6182. }
  6183. #region 更新窑炉窑车属性
  6184. if (inProduction.ModelType == 1 || inProduction.ModelType == 2 || inProduction.ModelType == 3 || inProduction.ModelType == 4 || inProduction.ModelType == 6)
  6185. {
  6186. sql = sql + " KilnID = :KilnID,";
  6187. paras.Add(new OracleParameter(":KilnID", inProduction.KilnID));
  6188. sql = sql + " KilnCode = :KilnCode,";
  6189. paras.Add(new OracleParameter(":KilnCode", inProduction.KilnCode));
  6190. sql = sql + " KilnName = :KilnName,";
  6191. paras.Add(new OracleParameter(":KilnName", inProduction.KilnName));
  6192. sql = sql + " KilnCarID = :KilnCarID,";
  6193. paras.Add(new OracleParameter(":KilnCarID", inProduction.KilnCarID));
  6194. sql = sql + " KilnCarCode = :KilnCarCode,";
  6195. paras.Add(new OracleParameter(":KilnCarCode", inProduction.KilnCarCode));
  6196. sql = sql + " KilnCarName = :KilnCarName,";
  6197. paras.Add(new OracleParameter(":KilnCarName", inProduction.KilnCarName));
  6198. sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6199. paras.Add(new OracleParameter(":KilnCarBatchNo", inProduction.KilnCarBatchNo));
  6200. sql = sql + " KilnCarPosition = :KilnCarPosition,";
  6201. paras.Add(new OracleParameter(":KilnCarPosition", inProduction.KilnCarPosition));
  6202. }
  6203. //xuwei add 2020-06-15 冷补 需要更新窑车号
  6204. else if (inProduction.ModelType == 10)
  6205. {
  6206. sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6207. paras.Add(new OracleParameter(":KilnCarBatchNo", inProduction.KilnCarBatchNo));
  6208. }
  6209. else
  6210. {
  6211. //
  6212. ////////DataSet ds = GetKilnCarInfo(oracleTrConn, inProduction.BarCode, sUserInfo);
  6213. ////////if (ds != null)
  6214. ////////{
  6215. //////// if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  6216. //////// {
  6217. //////// sql = sql + " KilnID = :KilnID,";
  6218. //////// paras.Add(new OracleParameter(":KilnID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"])));
  6219. //////// sql = sql + " KilnCode = :KilnCode,";
  6220. //////// paras.Add(new OracleParameter(":KilnCode", ds.Tables[0].Rows[0]["KilnCode"].ToString()));
  6221. //////// sql = sql + " KilnName = :KilnName,";
  6222. //////// paras.Add(new OracleParameter(":KilnName", ds.Tables[0].Rows[0]["KilnName"].ToString()));
  6223. //////// sql = sql + " KilnCarID = :KilnCarID,";
  6224. //////// paras.Add(new OracleParameter(":KilnCarID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"])));
  6225. //////// sql = sql + " KilnCarCode = :KilnCarCode,";
  6226. //////// paras.Add(new OracleParameter(":KilnCarCode", ds.Tables[0].Rows[0]["KilnCarCode"].ToString()));
  6227. //////// sql = sql + " KilnCarName = :KilnCarName,";
  6228. //////// paras.Add(new OracleParameter(":KilnCarName", ds.Tables[0].Rows[0]["KilnCarName"].ToString()));
  6229. //////// sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6230. //////// paras.Add(new OracleParameter(":KilnCarBatchNo", ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString()));
  6231. //////// sql = sql + " KilnCarPosition = :KilnCarPosition,";
  6232. //////// paras.Add(new OracleParameter(":KilnCarPosition", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"])));
  6233. //////// }
  6234. ////////}
  6235. }
  6236. #endregion
  6237. #endregion
  6238. #region 更新在产商标
  6239. if (inProduction.LogoID != null)
  6240. {
  6241. sql = sql + " LogoID = :LogoID,";
  6242. paras.Add(new OracleParameter(":LogoID", inProduction.LogoID));
  6243. }
  6244. #endregion
  6245. sql = sql + " UserID = :userID,"
  6246. + " UpdateUserID = :updateUserID"
  6247. + " where Barcode = :barCode";
  6248. #endregion
  6249. paras.Add(new OracleParameter(":userID", inProduction.UserID));
  6250. paras.Add(new OracleParameter(":updateUserID", sUserInfo.UserID));
  6251. paras.Add(new OracleParameter(":barCode", inProduction.BarCode));
  6252. foreach (var para in paras)
  6253. {
  6254. if (para.Value + "" == "")
  6255. {
  6256. para.Value = DBNull.Value;
  6257. }
  6258. }
  6259. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  6260. // 保存失败
  6261. if (result != Constant.INT_IS_ONE)
  6262. {
  6263. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6264. }
  6265. // 保存成功返回null
  6266. return null;
  6267. }
  6268. /// <summary>
  6269. /// 校验条码有效
  6270. /// </summary>
  6271. /// <param name="oracleTrConn">连接对象</param>
  6272. /// <param name="procedureID">工序ID</param>
  6273. /// <param name="barcode">条码</param>
  6274. /// <param name="goodsID">返回的产品ID</param>
  6275. /// <param name="goodsCode">返回的产品Code</param>
  6276. /// <param name="goodsName">返回的产品名称</param>
  6277. /// <param name="groutingUserID">返回的注浆者ID</param>
  6278. /// <returns>string</returns>
  6279. /// <remarks>
  6280. /// 陈冰 2014.09.18 新建
  6281. /// </remarks>
  6282. private static string CheckBarcode(IDBTransaction oracleTrConn,
  6283. int procedureID,
  6284. string barcode,
  6285. out int goodsID,
  6286. out string goodsCode,
  6287. out string goodsName,
  6288. out string groutingUserCode,
  6289. SUserInfo sUserInfo
  6290. )
  6291. {
  6292. try
  6293. {
  6294. OracleParameter[] paras = new OracleParameter[]{
  6295. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  6296. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  6297. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  6298. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  6299. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6300. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6301. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  6302. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6303. };
  6304. oracleTrConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  6305. if (!"null".Equals(paras[3].Value + ""))
  6306. {
  6307. goodsID = Convert.ToInt32(paras[3].Value + "");
  6308. }
  6309. else
  6310. {
  6311. goodsID = 0;
  6312. }
  6313. goodsCode = paras[4].Value + "";
  6314. goodsName = paras[5].Value + "";
  6315. if (!"null".Equals(paras[6].Value + ""))
  6316. {
  6317. groutingUserCode = paras[6].Value + "";
  6318. }
  6319. else
  6320. {
  6321. groutingUserCode = null;
  6322. }
  6323. if ("null".Equals(paras[2].Value + ""))
  6324. {
  6325. return null;
  6326. }
  6327. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  6328. }
  6329. catch (Exception ex)
  6330. {
  6331. throw ex;
  6332. }
  6333. }
  6334. /// <summary>
  6335. /// 查询工序信息
  6336. /// </summary>
  6337. /// <param name="oracleTrConn">连接对象</param>
  6338. /// <param name="procedureID">工序ID</param>
  6339. /// <returns>工序实体</returns>
  6340. private static ProcedureEntity GetProcedurByID(IDBTransaction oracleTrConn, int procedureID)
  6341. {
  6342. ProcedureEntity procedureEntity = new ProcedureEntity();
  6343. string procsql = "pro_pm_searchProcedurbyID";
  6344. try
  6345. {
  6346. IDataParameter[] paras = new OracleParameter[]
  6347. {
  6348. new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input),
  6349. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  6350. };
  6351. DataSet returnDs = oracleTrConn.ExecStoredProcedure(procsql, paras);
  6352. if (returnDs != null
  6353. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6354. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6355. {
  6356. DataRow row = returnDs.Tables[0].Rows[0];
  6357. // 转实体
  6358. procedureEntity = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  6359. return procedureEntity;
  6360. }
  6361. else
  6362. {
  6363. return null;
  6364. }
  6365. }
  6366. catch (Exception ex)
  6367. {
  6368. throw ex;
  6369. }
  6370. }
  6371. #endregion
  6372. #region 检验
  6373. /// <summary>
  6374. /// 保存条码信息
  6375. /// </summary>
  6376. /// <param name="procedureID">工序ID</param>
  6377. /// <param name="productionDataEntitys">生产数据集</param>
  6378. /// <param name="sUserInfo">用户基本信息</param>
  6379. /// <returns>string</returns>
  6380. public static string AddCheckBarcode(int procedureID, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6381. {
  6382. string errMsg = "";
  6383. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6384. try
  6385. {
  6386. oracleTrConn.Connect();
  6387. #region 查询工序信息
  6388. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  6389. #endregion
  6390. #region 标准检验(半成品)
  6391. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal)
  6392. {
  6393. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6394. }
  6395. #endregion
  6396. #region 成品检验
  6397. else if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  6398. {
  6399. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6400. }
  6401. #endregion
  6402. #region 半检 与成检相同处理 xuwei add 2019-12-12
  6403. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SemiQualityStatistics)
  6404. {
  6405. //errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6406. errMsg = AddCheckBarcodePDA(procedureID, productionDataEntitys, sUserInfo);
  6407. }
  6408. #endregion
  6409. #region 入窑前检验
  6410. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKilnCheck)
  6411. {
  6412. errMsg = AddIntoKilnCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6413. }
  6414. #endregion
  6415. // 没有错误 提交事务
  6416. if (string.IsNullOrEmpty(errMsg))
  6417. {
  6418. oracleTrConn.Commit();
  6419. }
  6420. }
  6421. catch (Exception ex)
  6422. {
  6423. oracleTrConn.Rollback();
  6424. throw ex;
  6425. }
  6426. finally
  6427. {
  6428. // 释放资源
  6429. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6430. {
  6431. oracleTrConn.Disconnect();
  6432. }
  6433. }
  6434. return errMsg;
  6435. }
  6436. /// <summary>
  6437. /// 入窑前检验
  6438. /// </summary>
  6439. /// <param name="oracleTrConn">连接对象</param>
  6440. /// <param name="procedure">工序</param>
  6441. /// <param name="productionDataEntitys">生产数据集</param>
  6442. /// <param name="sUserInfo">用户基本信息</param>
  6443. /// <returns>string</returns>
  6444. private static string AddIntoKilnCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6445. {
  6446. string errMsg = "";
  6447. // 获得账务日期
  6448. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6449. // 本批采集的批次号
  6450. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  6451. #region 查询产品分级
  6452. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  6453. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  6454. #endregion
  6455. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6456. {
  6457. if (string.IsNullOrEmpty(productionData.Barcode))
  6458. {
  6459. throw new Exception("传入的条码号为空");
  6460. }
  6461. if (productionData.ProductionDataID != 0)
  6462. {
  6463. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  6464. if (!string.IsNullOrEmpty(errMsg))
  6465. {
  6466. return errMsg;
  6467. }
  6468. // 删除报废条码
  6469. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  6470. where tp_pm_scrapproduct.barcode=:barcode";
  6471. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  6472. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6473. };
  6474. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  6475. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6476. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6477. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6478. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6479. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6480. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6481. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6482. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  6483. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6484. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6485. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6486. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  6487. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  6488. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6489. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6490. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6491. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6492. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6493. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6494. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6495. CREATEUSERID, UPDATETIME, :UpdateUserID,
  6496. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6497. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6498. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6499. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  6500. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  6501. from TP_PM_InProductionTrash where barcode=:barcode ";
  6502. OracleParameter[] InProductparas = new OracleParameter[]{
  6503. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6504. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6505. };
  6506. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  6507. //删除回收站中的条码
  6508. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  6509. OracleParameter[] TrashProductparas = new OracleParameter[]{
  6510. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  6511. };
  6512. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  6513. }
  6514. int goodsID = Constant.INT_IS_ZERO;
  6515. string goodsCode = string.Empty;
  6516. string goodsName = string.Empty;
  6517. // 注浆者工号
  6518. string groutingUserCode = string.Empty;
  6519. #region 校验条码有效性
  6520. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6521. if (!string.IsNullOrEmpty(errMsg))
  6522. {
  6523. if (productionData.ProductionDataID == 0)
  6524. return errMsg;
  6525. }
  6526. #endregion
  6527. #region 获得产品分级ID
  6528. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  6529. // 获得产品分级ID
  6530. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  6531. #endregion
  6532. // 查询新插入的生产数据ID
  6533. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  6534. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6535. int productionDataID = 0;
  6536. if (!string.IsNullOrEmpty(idStr))
  6537. {
  6538. productionDataID = int.Parse(idStr);
  6539. }
  6540. else
  6541. {
  6542. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6543. }
  6544. int? ClassesSettingID = null;//班次配置ID
  6545. #region 添加生产者数据
  6546. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6547. if (!string.IsNullOrEmpty(errMsg))
  6548. {
  6549. return errMsg;
  6550. }
  6551. #endregion
  6552. #region 添加生产数据
  6553. #region 属性赋值
  6554. productionData.ClassesSettingID = ClassesSettingID;
  6555. productionData.ProductionDataID = Convert.ToInt32(idStr);
  6556. productionData.CentralizedBatchNo = centralizedBatchNo;
  6557. productionData.ProductionLineID = procedure.ProductionLineID;
  6558. productionData.ProductionLineCode = procedure.ProductionlineCode;
  6559. productionData.ProductionLineName = procedure.ProductionlineName;
  6560. productionData.ProcedureID = procedure.ProcedureID;
  6561. productionData.ProcedureCode = procedure.ProcedureCode;
  6562. productionData.ProcedureName = procedure.ProcedureName;
  6563. productionData.ProcedureModel = procedure.ProcedureModel;
  6564. productionData.ModelType = procedure.ModelType;
  6565. productionData.NodeType = procedure.NodeType;
  6566. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  6567. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6568. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  6569. productionData.OrganizationID = procedure.OrganizationID;
  6570. productionData.GoodsID = goodsID;
  6571. productionData.GoodsCode = goodsCode;
  6572. productionData.GoodsName = goodsName;
  6573. productionData.GoodsLevelID = productionData.GoodsLevelID;
  6574. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6575. //如果报废给此产品最状态赋值 wangxin 2015/4/1 因为删除掉了生产数据表中的产品最终状态
  6576. ////if (productionData.ProductionDefects != null)
  6577. ////{
  6578. //// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6579. //// {
  6580. //// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  6581. //// {
  6582. //// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  6583. //// break;
  6584. //// }
  6585. //// }
  6586. ////}
  6587. ////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  6588. ////{
  6589. //// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  6590. ////}
  6591. ////// string sqlReFire = @"select
  6592. ////// isrefire
  6593. ////// from tp_pm_inproduction where barcode=:barcode
  6594. ////// ";
  6595. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  6596. ////// new OracleParameter(":barcode",productionData.Barcode),
  6597. ////// };
  6598. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  6599. ////// //DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6600. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6601. ////// {
  6602. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  6603. ////// {
  6604. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6605. ////// }
  6606. ////// }
  6607. #endregion
  6608. string OutSpecialRepairflag = "0";//干补标识
  6609. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6610. errMsg = AddProductionDataWaster(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6611. if (!string.IsNullOrEmpty(errMsg))
  6612. {
  6613. return errMsg;
  6614. }
  6615. #endregion
  6616. //#region 添加生产者数据
  6617. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  6618. //if (!string.IsNullOrEmpty(errMsg))
  6619. //{
  6620. // return errMsg;
  6621. //}
  6622. //#endregion
  6623. #region 条码有缺陷
  6624. // 废品标识
  6625. bool scrapFlag = false;
  6626. // 存在缺陷 插入缺陷表
  6627. if (productionData.ProductionDefects != null)
  6628. {
  6629. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6630. {
  6631. #region 保存缺陷
  6632. productionDefect.ProductionDataID = productionDataID;
  6633. productionDefect.BarCode = productionData.Barcode;
  6634. productionDefect.ProductionLineID = procedure.ProductionLineID;
  6635. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6636. productionDefect.ProductionLineName = procedure.ProductionlineName;
  6637. productionDefect.ProcedureID = procedure.ProcedureID;
  6638. productionDefect.ProcedureCode = procedure.ProcedureCode;
  6639. productionDefect.ProcedureName = procedure.ProcedureName;
  6640. productionDefect.UserID = productionData.UserID;
  6641. productionDefect.UserCode = productionData.UserCode;
  6642. productionDefect.UserName = productionData.UserName;
  6643. productionDefect.GoodsID = productionData.GoodsID;
  6644. productionDefect.GoodsCode = productionData.GoodsCode;
  6645. productionDefect.GoodsName = productionData.GoodsName;
  6646. productionData.Remarks = productionData.Remarks;
  6647. productionDefect.ScrapResponFlag
  6648. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6649. // 保存缺陷
  6650. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6651. if (!string.IsNullOrEmpty(errMsg))
  6652. {
  6653. return errMsg;
  6654. }
  6655. #endregion
  6656. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  6657. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  6658. {
  6659. scrapFlag = true;
  6660. #region 添加废弃产品 删除在产产品数据
  6661. #region 添加废弃产品
  6662. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6663. #region 属性赋值
  6664. scrapProduct.BarCode = productionData.Barcode;
  6665. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  6666. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  6667. {
  6668. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  6669. }
  6670. else
  6671. {
  6672. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6673. }
  6674. scrapProduct.ScrapDate = accountDate;
  6675. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  6676. scrapProduct.Remarks = productionDefect.Remarks;
  6677. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6678. scrapProduct.Auditor = sUserInfo.UserID;
  6679. scrapProduct.AuditlDate = accountDate;
  6680. scrapProduct.AccountDate = accountDate;
  6681. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6682. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6683. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  6684. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  6685. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6686. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6687. scrapProduct.ScrapType = 1;
  6688. #endregion
  6689. // 保存报废
  6690. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6691. // 保存失败
  6692. if (!string.IsNullOrEmpty(errMsg))
  6693. {
  6694. return errMsg;
  6695. }
  6696. #endregion
  6697. #region 添加责任工序
  6698. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  6699. //xuwei fix 2019-09-26 使用通用方法判定
  6700. if (IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode) == 1)
  6701. procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  6702. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  6703. {
  6704. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6705. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6706. ResponProcedureEntity responProce = new ResponProcedureEntity();
  6707. #region 属性赋值
  6708. responProce.BarCode = productionData.Barcode;
  6709. responProce.ProductionDataID = productionDataID;
  6710. responProce.ProductionLineID = productionDefect.ProductionLineID;
  6711. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  6712. responProce.ProductionLineName = productionDefect.ProductionLineName;
  6713. responProce.ProcedureID = productionDefect.DefectProcedureID;
  6714. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  6715. responProce.ProcedureName = productionDefect.DefectProcedureName;
  6716. responProce.UserID = productionDefect.DefectUserID;
  6717. responProce.UserCode = productionDefect.DefectUserCode;
  6718. responProce.UserName = productionDefect.DefectUserName;
  6719. responProce.Remarks = productionDefect.Remarks;
  6720. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6721. #endregion
  6722. // 保存责任工序
  6723. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  6724. // 保存失败
  6725. if (!string.IsNullOrEmpty(errMsg))
  6726. {
  6727. return errMsg;
  6728. }
  6729. }
  6730. #endregion
  6731. #region 删除在产产品数据
  6732. InProductionEntity delInProductionEntity = new InProductionEntity();
  6733. delInProductionEntity.BarCode = productionData.Barcode;
  6734. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  6735. // 执行删除 在产数据
  6736. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  6737. // 执行失败
  6738. // if (!string.IsNullOrEmpty(errMsg)) 注释日期2015-12-28
  6739. // {
  6740. // return errMsg;
  6741. // }
  6742. #endregion
  6743. #endregion
  6744. }
  6745. #endregion
  6746. }
  6747. }
  6748. #endregion
  6749. // 条码有缺陷或者报废
  6750. //wangxin 20150414
  6751. //if (scrapFlag || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  6752. //{
  6753. #region 有缺陷 删除条码对应窑车产品
  6754. if (productionData.DefectFlag == Constant.GoodsLevelType.Defect.GetHashCode())
  6755. {
  6756. errMsg = DeleteKilnCarGoods(oracleTrConn, productionData.Barcode);
  6757. if (!string.IsNullOrEmpty(errMsg))
  6758. {
  6759. return errMsg;
  6760. }
  6761. }
  6762. #endregion
  6763. //}
  6764. //wangxin 20150414 end
  6765. // 条码没有报废
  6766. if (!scrapFlag)
  6767. {
  6768. #region 修改在产产品数据的当前工序
  6769. InProductionEntity inProductionEntity = new InProductionEntity();
  6770. inProductionEntity.BarCode = productionData.Barcode;
  6771. //流程工序
  6772. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  6773. // 当前工序
  6774. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6775. inProductionEntity.ProcedureID = procedure.ProcedureID;
  6776. // 生产数据ID
  6777. inProductionEntity.ProductionDataID = productionDataID;
  6778. // 工序模型
  6779. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6780. // 工序类别
  6781. inProductionEntity.ModelType = procedure.ModelType;
  6782. // 生产工号
  6783. inProductionEntity.UserID = productionData.UserID;
  6784. // 缺陷标识
  6785. inProductionEntity.DefectFlag = productionData.DefectFlag;
  6786. // 返工工序ID
  6787. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  6788. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  6789. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6790. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  6791. // 执行修改
  6792. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  6793. // 执行失败
  6794. if (!string.IsNullOrEmpty(errMsg))
  6795. {
  6796. return errMsg;
  6797. }
  6798. #endregion
  6799. }
  6800. }
  6801. return errMsg;
  6802. }
  6803. /// <summary>
  6804. /// 删除窑车产品
  6805. /// </summary>
  6806. /// <param name="oracleTrConn">数据连接</param>
  6807. /// <param name="barcode">产品条码</param>
  6808. /// <returns>string</returns>
  6809. private static string DeleteKilnCarGoods(IDBTransaction oracleTrConn, string barcode)
  6810. {
  6811. string sql = "delete TP_PM_KilnCarGoods where BarCode = :barcode";
  6812. OracleParameter[] paras = new OracleParameter[] { new OracleParameter(":barcode", barcode) };
  6813. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  6814. // 保存失败
  6815. if (result != Constant.INT_IS_ONE)
  6816. {
  6817. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6818. }
  6819. return null;
  6820. }
  6821. /// <summary>
  6822. /// 添加成品编辑
  6823. /// </summary>
  6824. /// <param name="oracleTrConn">数据连接</param>
  6825. /// <param name="procedure">工序对象</param>
  6826. /// <param name="productionDataEntitys">生产数据集</param>
  6827. /// <param name="sUserInfo">用户基本信息</param>
  6828. /// <returns>string</returns>
  6829. //private static string AddFinishCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6830. //{
  6831. // string errMsg = "";
  6832. // // 获得账务日期
  6833. // DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6834. // // 本批采集的批次号
  6835. // string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  6836. // foreach (ProductionDataEntity productionData in productionDataEntitys)
  6837. // {
  6838. // if (string.IsNullOrEmpty(productionData.Barcode))
  6839. // {
  6840. // throw new Exception("传入的条码号为空");
  6841. // }
  6842. // int goodsID = Constant.INT_IS_ZERO;
  6843. // string goodsCode = string.Empty;
  6844. // string goodsName = string.Empty;
  6845. // // 注浆者工号
  6846. // string groutingUserCode = string.Empty;
  6847. // // 次品标识
  6848. // bool substandardFlag = false;
  6849. // #region 校验条码有效性
  6850. // errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6851. // if (!string.IsNullOrEmpty(errMsg))
  6852. // {
  6853. // if (productionData.ProductionDataID == 0)
  6854. // return errMsg;
  6855. // }
  6856. // #endregion
  6857. // #region 添加生产数据
  6858. // #region 属性赋值
  6859. // productionData.CentralizedBatchNo = centralizedBatchNo;
  6860. // productionData.ProductionLineID = procedure.ProductionLineID;
  6861. // productionData.ProductionLineCode = procedure.ProductionlineCode;
  6862. // productionData.ProductionLineName = procedure.ProductionlineName;
  6863. // productionData.CompleteProcedureID = procedure.ProcedureID;
  6864. // productionData.ProcedureCode = procedure.ProcedureCode;
  6865. // productionData.ProcedureName = procedure.ProcedureName;
  6866. // productionData.ProcedureModel = procedure.ProcedureModel;
  6867. // productionData.ModelType = procedure.ModelType;
  6868. // productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  6869. // // 重烧
  6870. // if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  6871. // {
  6872. // //productionData.GoodsLevelID = null;
  6873. // productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6874. // }
  6875. // // 次品
  6876. // else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6877. // {
  6878. // //productionData.GoodsLevelID = null;
  6879. // substandardFlag = true;
  6880. // }
  6881. // // 查询新插入的生产数据ID
  6882. // if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  6883. // {
  6884. // //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  6885. // //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  6886. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  6887. // DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6888. // if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6889. // {
  6890. // productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6891. // }
  6892. // }
  6893. // productionData.OrganizationID = procedure.OrganizationID;
  6894. // productionData.GoodsID = goodsID;
  6895. // productionData.GoodsCode = goodsCode;
  6896. // productionData.GoodsName = goodsName;
  6897. // productionData.GoodsLevelID = productionData.GoodsLevelID;
  6898. // productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6899. // //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6900. // //{
  6901. // // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  6902. // //}
  6903. // #endregion
  6904. // string OutSpecialRepairflag = "0";//干补标识
  6905. // errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6906. // if (!string.IsNullOrEmpty(errMsg))
  6907. // {
  6908. // return errMsg;
  6909. // }
  6910. // // 查询新插入的生产数据ID
  6911. // string sql = "select SEQ_PM_ProductionData_ID.Currval from dual";
  6912. // string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6913. // // 新插入的班次配置表ID
  6914. // int productionDataID = 0;
  6915. // if (!string.IsNullOrEmpty(idStr))
  6916. // {
  6917. // productionDataID = int.Parse(idStr);
  6918. // }
  6919. // else
  6920. // {
  6921. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6922. // }
  6923. // #endregion
  6924. // #region 添加生产者数据
  6925. // int? ClassesSettingID = null;//班次配置ID
  6926. // errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6927. // if (!string.IsNullOrEmpty(errMsg))
  6928. // {
  6929. // return errMsg;
  6930. // }
  6931. // #endregion
  6932. // #region 条码有缺陷
  6933. // #region 是次品 添加废弃产品
  6934. // if (substandardFlag)
  6935. // {
  6936. // #region 添加废弃产品
  6937. // ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6938. // #region 属性赋值
  6939. // scrapProduct.BarCode = productionData.Barcode;
  6940. // scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  6941. // scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6942. // scrapProduct.ScrapDate = accountDate;
  6943. // scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  6944. // scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6945. // scrapProduct.Auditor = sUserInfo.UserID;
  6946. // scrapProduct.AuditlDate = accountDate;
  6947. // scrapProduct.AccountDate = accountDate;
  6948. // scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6949. // scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6950. // #endregion
  6951. // // 保存报废
  6952. // errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6953. // // 保存失败
  6954. // if (!string.IsNullOrEmpty(errMsg))
  6955. // {
  6956. // return errMsg;
  6957. // }
  6958. // #endregion
  6959. // }
  6960. // #endregion
  6961. // // 存在缺陷 插入缺陷表
  6962. // if (productionData.ProductionDefects != null)
  6963. // {
  6964. // foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6965. // {
  6966. // #region 保存缺陷
  6967. // productionDefect.ProductionDataID = productionDataID;
  6968. // productionDefect.BarCode = productionData.Barcode;
  6969. // productionDefect.ProductionLineID = procedure.ProductionLineID;
  6970. // productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6971. // productionDefect.ProductionLineName = procedure.ProductionlineName;
  6972. // productionDefect.ProcedureID = procedure.ProcedureID;
  6973. // productionDefect.ProcedureCode = procedure.ProcedureCode;
  6974. // productionDefect.ProcedureName = procedure.ProcedureName;
  6975. // productionDefect.UserID = productionData.UserID;
  6976. // productionDefect.UserCode = productionData.UserCode;
  6977. // productionDefect.UserName = productionData.UserName;
  6978. // productionDefect.GoodsID = productionData.GoodsID;
  6979. // productionDefect.GoodsCode = productionData.GoodsCode;
  6980. // productionDefect.GoodsName = productionData.GoodsName;
  6981. // productionData.Remarks = productionData.Remarks;
  6982. // productionDefect.ScrapResponFlag
  6983. // = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6984. // // 保存缺陷
  6985. // errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6986. // if (!string.IsNullOrEmpty(errMsg))
  6987. // {
  6988. // return errMsg;
  6989. // }
  6990. // #endregion
  6991. // #region 是次品 添加废弃责任工序
  6992. // if (substandardFlag)
  6993. // {
  6994. // #region 添加责任工序
  6995. // ResponProcedureEntity responProce = new ResponProcedureEntity();
  6996. // // 查询新插入的废弃ID
  6997. // string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6998. // string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  6999. // #region 属性赋值
  7000. // responProce.BarCode = productionData.Barcode;
  7001. // responProce.ProductionDataID = productionDataID;
  7002. // responProce.ProductionLineID = productionDefect.ProductionLineID;
  7003. // responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  7004. // responProce.ProductionLineName = productionDefect.ProductionLineName;
  7005. // responProce.ProcedureID = productionDefect.DefectProcedureID;
  7006. // responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  7007. // responProce.ProcedureName = productionDefect.DefectProcedureName;
  7008. // responProce.UserID = productionDefect.DefectUserID;
  7009. // responProce.UserCode = productionDefect.DefectUserCode;
  7010. // responProce.UserName = productionDefect.DefectUserName;
  7011. // responProce.Remarks = productionDefect.Remarks;
  7012. // responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  7013. // #endregion
  7014. // // 保存责任工序
  7015. // errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  7016. // // 保存失败
  7017. // if (!string.IsNullOrEmpty(errMsg))
  7018. // {
  7019. // return errMsg;
  7020. // }
  7021. // #endregion
  7022. // }
  7023. // #endregion
  7024. // }
  7025. // }
  7026. // #endregion
  7027. // #region 条码是次品 删除在产产品数据
  7028. // if (substandardFlag)
  7029. // {
  7030. // #region 删除在产产品数据
  7031. // InProductionEntity delInProductionEntity = new InProductionEntity();
  7032. // delInProductionEntity.BarCode = productionData.Barcode;
  7033. // // 执行删除 在产数据
  7034. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  7035. // // 执行失败
  7036. // if (!string.IsNullOrEmpty(errMsg))
  7037. // {
  7038. // return errMsg;
  7039. // }
  7040. // #endregion
  7041. // }
  7042. // #endregion
  7043. // #region 条码不是次品
  7044. // if (!substandardFlag)
  7045. // {
  7046. // #region 中间工序/重烧 修改在产产品数据
  7047. // if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  7048. // || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  7049. // {
  7050. // #region 修改在产产品数据的当前工序
  7051. // InProductionEntity inProductionEntity = new InProductionEntity();
  7052. // inProductionEntity.BarCode = productionData.Barcode;
  7053. // // 当前工序
  7054. // inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  7055. // // 工序模型
  7056. // inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7057. // // 工序类别
  7058. // inProductionEntity.ModelType = procedure.ModelType;
  7059. // // 生产工号
  7060. // inProductionEntity.UserID = productionData.UserID;
  7061. // // 重烧
  7062. // inProductionEntity.IsReFire = productionData.IsReFire;
  7063. // // 缺陷
  7064. // inProductionEntity.DefectFlag = productionData.DefectFlag;
  7065. // // 产品分级
  7066. // inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  7067. // // 返工工序ID
  7068. // inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  7069. // inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  7070. // inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7071. // // 执行修改
  7072. // errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  7073. // // 执行失败
  7074. // if (!string.IsNullOrEmpty(errMsg))
  7075. // {
  7076. // return errMsg;
  7077. // }
  7078. // #endregion
  7079. // }
  7080. // #endregion
  7081. // #region 结束工序 添加成品数据 删除在产产品数据
  7082. // else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  7083. // {
  7084. // #region 添加成品数据 删除在产产品数据
  7085. // FinishedProductEntity finishedProduct = new FinishedProductEntity();
  7086. // finishedProduct.BarCode = productionData.Barcode;
  7087. // errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo);
  7088. // if (!string.IsNullOrEmpty(errMsg))
  7089. // {
  7090. // return errMsg;
  7091. // }
  7092. // InProductionEntity delInProductionEntity = new InProductionEntity();
  7093. // delInProductionEntity.BarCode = productionData.Barcode;
  7094. // // 执行删除 在产数据
  7095. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  7096. // // 执行失败
  7097. // if (!string.IsNullOrEmpty(errMsg))
  7098. // {
  7099. // return errMsg;
  7100. // }
  7101. // #endregion
  7102. // }
  7103. // #endregion
  7104. // }
  7105. // #endregion
  7106. // }
  7107. // return errMsg;
  7108. //}
  7109. /// <summary>
  7110. /// 保存标准检验
  7111. /// </summary>
  7112. /// <param name="oracleTrConn">连接对象</param>
  7113. /// <param name="procedure">工序信息</param>
  7114. /// <param name="productionDataEntitys">生产数据集合</param>
  7115. /// <param name="sUserInfo">用户基本信息</param>
  7116. /// <returns>string</returns>
  7117. private static string AddNormalCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  7118. {
  7119. string errMsg = "";
  7120. // 获得账务日期
  7121. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  7122. // 本批采集的批次号
  7123. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  7124. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  7125. #region 查询产品分级
  7126. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  7127. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  7128. #endregion
  7129. foreach (ProductionDataEntity productionData in productionDataEntitys)
  7130. {
  7131. if (string.IsNullOrEmpty(productionData.Barcode))
  7132. {
  7133. throw new Exception("传入的条码号为空");
  7134. }
  7135. if (productionData.ProductionDataID != 0)
  7136. {
  7137. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  7138. if (!string.IsNullOrEmpty(errMsg))
  7139. {
  7140. return errMsg;
  7141. }
  7142. // 删除报废条码
  7143. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  7144. where tp_pm_scrapproduct.barcode=:barcode";
  7145. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  7146. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  7147. };
  7148. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  7149. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  7150. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  7151. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  7152. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  7153. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  7154. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  7155. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  7156. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  7157. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  7158. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  7159. KILNID, KILNCODE, KILNNAME, KILNCARID,
  7160. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  7161. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  7162. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  7163. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  7164. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  7165. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  7166. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  7167. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  7168. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  7169. CREATEUSERID, UPDATETIME, :UpdateUserID,
  7170. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  7171. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  7172. KILNID, KILNCODE, KILNNAME, KILNCARID,
  7173. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  7174. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  7175. from TP_PM_InProductionTrash where barcode=:barcode ";
  7176. OracleParameter[] InProductparas = new OracleParameter[]{
  7177. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  7178. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  7179. };
  7180. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  7181. //删除回收站中的条码
  7182. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  7183. OracleParameter[] TrashProductparas = new OracleParameter[]{
  7184. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  7185. };
  7186. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  7187. }
  7188. int goodsID = Constant.INT_IS_ZERO;
  7189. string goodsCode = string.Empty;
  7190. string goodsName = string.Empty;
  7191. // 注浆者工号
  7192. string groutingUserCode = string.Empty;
  7193. #region 校验条码有效性
  7194. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  7195. if (!string.IsNullOrEmpty(errMsg))
  7196. {
  7197. if (productionData.ProductionDataID == 0)
  7198. return errMsg;
  7199. }
  7200. #endregion
  7201. // 查询新插入的生产数据ID
  7202. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  7203. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7204. int? ClassesSettingID = null;//班次配置ID
  7205. // 新插入的班次配置表ID
  7206. int productionDataID = 0;
  7207. if (!string.IsNullOrEmpty(idStr))
  7208. {
  7209. productionDataID = int.Parse(idStr);
  7210. }
  7211. else
  7212. {
  7213. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7214. }
  7215. #region 添加生产者数据
  7216. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  7217. if (!string.IsNullOrEmpty(errMsg))
  7218. {
  7219. return errMsg;
  7220. }
  7221. #endregion
  7222. #region 添加生产数据
  7223. #region 属性赋值
  7224. productionData.ClassesSettingID = ClassesSettingID;
  7225. productionData.ProductionDataID = Convert.ToInt32(idStr);
  7226. productionData.CentralizedBatchNo = centralizedBatchNo;
  7227. productionData.ProductionLineID = procedure.ProductionLineID;
  7228. productionData.ProductionLineCode = procedure.ProductionlineCode;
  7229. productionData.ProductionLineName = procedure.ProductionlineName;
  7230. productionData.CompleteProcedureID = procedure.ProcedureID;
  7231. productionData.ProcedureID = procedure.ProcedureID;
  7232. productionData.ProcedureCode = procedure.ProcedureCode;
  7233. productionData.ProcedureName = procedure.ProcedureName;
  7234. productionData.ProcedureModel = procedure.ProcedureModel;
  7235. productionData.ModelType = procedure.ModelType;
  7236. productionData.NodeType = procedure.NodeType;
  7237. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  7238. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  7239. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  7240. productionData.OrganizationID = procedure.OrganizationID;
  7241. productionData.GoodsID = goodsID;
  7242. productionData.GoodsCode = goodsCode;
  7243. productionData.GoodsName = goodsName;
  7244. productionData.GoodsLevelID = productionData.GoodsLevelID;
  7245. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7246. ////////如果报废给此产品最状态赋值
  7247. //////if (productionData.ProductionDefects != null)
  7248. //////{
  7249. ////// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  7250. ////// {
  7251. ////// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  7252. ////// {
  7253. ////// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  7254. ////// break;
  7255. ////// }
  7256. ////// }
  7257. //////}
  7258. //////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  7259. //////{
  7260. ////// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  7261. //////}
  7262. ////// string sqlReFire = @"select
  7263. ////// isrefire
  7264. ////// from tp_pm_inproduction where barcode=:barcode
  7265. ////// ";
  7266. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  7267. ////// new OracleParameter(":barcode",productionData.Barcode),
  7268. ////// };
  7269. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  7270. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  7271. ////// {
  7272. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  7273. ////// {
  7274. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  7275. ////// }
  7276. ////// }
  7277. #endregion
  7278. string OutSpecialRepairflag = "0";//干补标识
  7279. DataSet outDataSet = null;
  7280. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7281. //xuwei fix 2019-09-26 使用通用方法判定
  7282. // 2019-1016
  7283. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7284. {
  7285. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7286. if (isNodeBegin == 0)
  7287. {
  7288. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  7289. }
  7290. }
  7291. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7292. {
  7293. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  7294. }
  7295. else
  7296. {
  7297. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  7298. }
  7299. if (!string.IsNullOrEmpty(errMsg))
  7300. {
  7301. return errMsg;
  7302. }
  7303. if (productionData.ProductionDefects == null || productionData.ProductionDefects.Count == 0)
  7304. {
  7305. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  7306. }
  7307. #endregion
  7308. #region 获得产品分级ID
  7309. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  7310. // 获得产品分级ID
  7311. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  7312. #endregion
  7313. #region 开始节点
  7314. //xuwei remove 2019-09-26 此处应该是重复判定 移除
  7315. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7316. //xuwei fix 2019-09-26 使用通用方法判定
  7317. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7318. // 2019-1016
  7319. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7320. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7321. {
  7322. #region 添加在产产品数据
  7323. InProductionEntity addInProductionEntity = new InProductionEntity();
  7324. addInProductionEntity.ProductionDataID = productionData.ProductionDataID;
  7325. addInProductionEntity.BarCode = productionData.Barcode;
  7326. //流程工序
  7327. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7328. // 当前工序
  7329. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  7330. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  7331. //生产数据ID
  7332. addInProductionEntity.ProductionDataID = productionDataID;
  7333. // 工序模型
  7334. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7335. // 工序类别
  7336. addInProductionEntity.ModelType = procedure.ModelType;
  7337. // 正常坯
  7338. addInProductionEntity.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  7339. #endregion
  7340. // 生产工号
  7341. addInProductionEntity.UserID = productionData.UserID;
  7342. // 执行添加
  7343. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  7344. // 执行失败
  7345. if (!string.IsNullOrEmpty(errMsg))
  7346. {
  7347. return errMsg;
  7348. }
  7349. }
  7350. #endregion
  7351. #region 条码有缺陷
  7352. // 废品标识
  7353. bool scrapFlag = false;
  7354. // 存在缺陷 插入缺陷表
  7355. if (productionData.ProductionDefects != null)
  7356. {
  7357. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  7358. {
  7359. #region 保存缺陷
  7360. productionDefect.ProductionDataID = productionDataID;
  7361. productionDefect.BarCode = productionData.Barcode;
  7362. productionDefect.ProductionLineID = procedure.ProductionLineID;
  7363. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  7364. productionDefect.ProductionLineName = procedure.ProductionlineName;
  7365. productionDefect.ProcedureID = procedure.ProcedureID;
  7366. productionDefect.ProcedureCode = procedure.ProcedureCode;
  7367. productionDefect.ProcedureName = procedure.ProcedureName;
  7368. productionDefect.UserID = productionData.UserID;
  7369. productionDefect.UserCode = productionData.UserCode;
  7370. productionDefect.UserName = productionData.UserName;
  7371. productionDefect.GoodsID = productionData.GoodsID;
  7372. productionDefect.GoodsCode = productionData.GoodsCode;
  7373. productionDefect.GoodsName = productionData.GoodsName;
  7374. productionDefect.Remarks = productionData.Remarks;
  7375. productionDefect.ScrapResponFlag
  7376. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  7377. // 保存缺陷
  7378. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  7379. if (!string.IsNullOrEmpty(errMsg))
  7380. {
  7381. return errMsg;
  7382. }
  7383. #endregion
  7384. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  7385. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  7386. {
  7387. scrapFlag = true;
  7388. #region 添加废弃产品 删除在产产品数据
  7389. #region 添加废弃产品
  7390. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  7391. #region 属性赋值
  7392. scrapProduct.BarCode = productionData.Barcode;
  7393. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  7394. //xuwei remove 2019-09-26 此处是重复判定移除
  7395. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7396. //xuwei fix 2019-09-26 使用通用方法判定
  7397. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7398. // 2019-1016
  7399. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7400. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7401. {
  7402. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  7403. }
  7404. else
  7405. {
  7406. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  7407. }
  7408. scrapProduct.ScrapDate = accountDate;
  7409. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  7410. scrapProduct.Remarks = productionDefect.Remarks;
  7411. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  7412. scrapProduct.Auditor = sUserInfo.UserID;
  7413. scrapProduct.AuditlDate = accountDate;
  7414. scrapProduct.AccountDate = accountDate;
  7415. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  7416. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7417. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  7418. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7419. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7420. scrapProduct.ScrapType = 1;
  7421. scrapProduct.IsQualityStatistics = 1;
  7422. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  7423. #endregion
  7424. // 保存报废
  7425. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  7426. // 保存失败
  7427. if (!string.IsNullOrEmpty(errMsg))
  7428. {
  7429. return errMsg;
  7430. }
  7431. #endregion
  7432. #region 添加责任工序
  7433. //xuwei remove 2019-09-26 此处是重复判定移除
  7434. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7435. //xuwei fix 2019-09-26 使用通用方法判定
  7436. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7437. // 2019-1016
  7438. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7439. // 不是开始工序时。需要添加责任工序
  7440. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  7441. {
  7442. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  7443. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7444. ResponProcedureEntity responProce = new ResponProcedureEntity();
  7445. #region 属性赋值
  7446. responProce.BarCode = productionData.Barcode;
  7447. responProce.ProductionDataID = productionDataID;
  7448. responProce.ProductionLineID = productionDefect.ProductionLineID;
  7449. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  7450. responProce.ProductionLineName = productionDefect.ProductionLineName;
  7451. responProce.ProcedureID = productionDefect.DefectProcedureID;
  7452. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  7453. responProce.ProcedureName = productionDefect.DefectProcedureName;
  7454. responProce.UserID = productionDefect.DefectUserID;
  7455. responProce.UserCode = productionDefect.DefectUserCode;
  7456. responProce.UserName = productionDefect.DefectUserName;
  7457. responProce.Remarks = productionDefect.Remarks;
  7458. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7459. #endregion
  7460. // 保存责任工序
  7461. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  7462. // 保存失败
  7463. if (!string.IsNullOrEmpty(errMsg))
  7464. {
  7465. return errMsg;
  7466. }
  7467. }
  7468. #endregion
  7469. #region 删除在产产品数据
  7470. InProductionEntity delInProductionEntity = new InProductionEntity();
  7471. delInProductionEntity.BarCode = productionData.Barcode;
  7472. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  7473. // 执行删除 在产数据
  7474. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  7475. // 执行失败
  7476. if (!string.IsNullOrEmpty(errMsg))
  7477. {
  7478. return errMsg;
  7479. }
  7480. #endregion
  7481. #endregion
  7482. }
  7483. #endregion
  7484. }
  7485. }
  7486. #endregion
  7487. #region 条码没有报废
  7488. if (!scrapFlag)
  7489. {
  7490. #region 检验出缺陷 并且不是废品 修改在产产品数据
  7491. //xuwei remove 2019-09-26 此处是重复判定移除
  7492. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7493. //xuwei fix 2019-09-26 使用通用方法判定
  7494. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7495. // 2019-1016
  7496. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7497. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  7498. || procedure.NodeType == (int)Constant.ProcedureNodeType.Begin
  7499. || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  7500. {
  7501. #region 修改在产产品数据的当前工序
  7502. InProductionEntity inProductionEntity = new InProductionEntity();
  7503. inProductionEntity.ProductionDataID = Convert.ToInt32(idStr);
  7504. inProductionEntity.BarCode = productionData.Barcode;
  7505. // 当前工序
  7506. inProductionEntity.ProcedureID = procedure.ProcedureID;
  7507. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7508. // 工序模型
  7509. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7510. // 工序类别
  7511. inProductionEntity.ModelType = procedure.ModelType;
  7512. // 生产工号
  7513. inProductionEntity.UserID = productionData.UserID;
  7514. // 缺陷标识
  7515. inProductionEntity.DefectFlag = productionData.DefectFlag;
  7516. // 返工工序ID
  7517. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  7518. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7519. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  7520. // 执行修改
  7521. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  7522. // 执行失败
  7523. if (!string.IsNullOrEmpty(errMsg))
  7524. {
  7525. return errMsg;
  7526. }
  7527. #endregion
  7528. }
  7529. #endregion
  7530. #region 结束工序、没有缺陷 添加成品数据 删除在产产品数据
  7531. //else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7532. // && productionData.DefectFlag == Constant.DefectFlag.No.GetHashCode())
  7533. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7534. && productionData.GoodsLevelTypeID == Constant.GoodsLevelType.NoDefects.GetHashCode())
  7535. {
  7536. #region 添加成品数据 删除在产产品数据
  7537. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  7538. finishedProduct.BarCode = productionData.Barcode;
  7539. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  7540. if (!string.IsNullOrEmpty(errMsg))
  7541. {
  7542. return errMsg;
  7543. }
  7544. InProductionEntity delInProductionEntity = new InProductionEntity();
  7545. delInProductionEntity.BarCode = productionData.Barcode;
  7546. // 执行删除 在产数据
  7547. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  7548. // 执行失败
  7549. if (!string.IsNullOrEmpty(errMsg))
  7550. {
  7551. return errMsg;
  7552. }
  7553. #endregion
  7554. }
  7555. #endregion
  7556. }
  7557. #endregion
  7558. #region 写入检验标识 CheckFlag 用于计件 xuwei 2020-07-29
  7559. oracleTrConn.ExecuteNonQuery(@"
  7560. UPDATE
  7561. TP_PM_PRODUCTIONDATA SET CHECKFLAG = :CHECKFLAG
  7562. WHERE
  7563. PRODUCTIONDATAID = :PRODUCTIONDATAID
  7564. ",
  7565. new OracleParameter[] {
  7566. new OracleParameter(":CHECKFLAG",productionData.CheckFlag),
  7567. new OracleParameter(":PRODUCTIONDATAID",productionDataID)
  7568. }
  7569. );
  7570. #endregion
  7571. #region 调用PLC xuwei add 2020-06-29
  7572. //成检交接 调用PLC接口 2020-06-29 xuwei
  7573. if (procedure.ModelType == -4)
  7574. {
  7575. //测试成检看板时,临时注释,发版前,要打开
  7576. return PLCModuleLogic.DoPLCWorkByUser_HEGII_S3(sUserInfo, productionData.Barcode, productionData.ProcedureID, 0, productionData.PLCWeight).Message;
  7577. }
  7578. #endregion
  7579. }
  7580. return errMsg;
  7581. }
  7582. ///// <summary>
  7583. ///// 报废更新产品数据最终状态
  7584. ///// </summary>
  7585. ///// <param name="oracleTrConn">连接对象</param>
  7586. ///// <param name="barcode">产品条码</param>
  7587. ///// <param name="sUserInfo">用记基本信息</param>
  7588. ///// <returns>string</returns>
  7589. ///// <remarks>
  7590. ///// 王鑫 2015.01.07 新建
  7591. ///// </remarks>
  7592. //private static string UpdateProductionDataGoodsEnding(IDBTransaction oracleTrConn, int productionDataID, int? goodsEnding, SUserInfo sUserInfo)
  7593. //{
  7594. // string sql = "update TP_PM_ProductionData set GoodsEnding=:goodsEnding where ProductionDataID = :productionDataID and AccountID=:accountid";
  7595. // OracleParameter[] paras = new OracleParameter[] {
  7596. // new OracleParameter(":goodsEnding",goodsEnding),
  7597. // new OracleParameter(":productionDataID",productionDataID),
  7598. // new OracleParameter(":accountid",sUserInfo.AccountID),
  7599. // };
  7600. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  7601. // // 更新失败
  7602. // if (result <= Constant.INT_IS_ZERO)
  7603. // {
  7604. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7605. // }
  7606. // // 成功返回null
  7607. // return null;
  7608. //}
  7609. /// <summary>
  7610. /// 添加责任工序
  7611. /// </summary>
  7612. /// <param name="oracleTrConn">连接对象</param>
  7613. /// <param name="responProce">责任工序</param>
  7614. /// <param name="productionDefect">缺陷数据</param>
  7615. /// <param name="sUserInfo">用户基本信息</param>
  7616. /// <returns>string</returns>
  7617. private static string AddResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  7618. {
  7619. OracleParameter[] oracleParameters = null;
  7620. string sql = null;
  7621. int result = 0;
  7622. // 查询新插入ID
  7623. if (productionDefect.DefectProcedureID != null)
  7624. {
  7625. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  7626. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7627. if (!string.IsNullOrEmpty(idStr))
  7628. {
  7629. responProce.ResponProcedureID = int.Parse(idStr);
  7630. }
  7631. else
  7632. {
  7633. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7634. }
  7635. #region SQL
  7636. sql = "insert into tp_pm_responprocedure"
  7637. + " (ResponProcedureID,"
  7638. + " scrapproductid,"
  7639. + " barcode,"
  7640. + " productiondataid,"
  7641. + " productionlineid,"
  7642. + " productionlinecode,"
  7643. + " productionlinename,"
  7644. + " procedureid,"
  7645. + " procedurecode,"
  7646. + " procedurename,"
  7647. + " userid,"
  7648. + " usercode,"
  7649. + " username,"
  7650. + " remarks,"
  7651. + " accountid,"
  7652. + " createuserid,"
  7653. + " updateuserid)"
  7654. + " values"
  7655. + " ("
  7656. + " :ResponProcedureID,"
  7657. + " :scrapproductid,"
  7658. + " :barcode,"
  7659. + " :productiondataid,"
  7660. + " :productionlineid,"
  7661. + " :productionlinecode,"
  7662. + " :productionlinename,"
  7663. + " :procedureid,"
  7664. + " :procedurecode,"
  7665. + " :procedurename,"
  7666. + " :userid,"
  7667. + " :usercode,"
  7668. + " :username,"
  7669. + " :remarks,"
  7670. + " :accountid,"
  7671. + " :createuserid,"
  7672. + " :updateuserid)";
  7673. #endregion
  7674. #region 参数
  7675. oracleParameters = new OracleParameter[] {
  7676. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  7677. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7678. new OracleParameter(":barcode",responProce.BarCode),
  7679. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  7680. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  7681. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  7682. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  7683. new OracleParameter(":procedureid",responProce.ProcedureID),
  7684. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  7685. new OracleParameter(":procedurename",responProce.ProcedureName),
  7686. new OracleParameter(":userid",responProce.UserID),
  7687. new OracleParameter(":usercode",responProce.UserCode),
  7688. new OracleParameter(":username",responProce.UserName),
  7689. new OracleParameter(":remarks",responProce.Remarks),
  7690. new OracleParameter(":accountid",sUserInfo.AccountID),
  7691. new OracleParameter(":createuserid",sUserInfo.UserID),
  7692. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7693. };
  7694. #endregion
  7695. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7696. // 保存失败
  7697. if (result != Constant.INT_IS_ONE)
  7698. {
  7699. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7700. }
  7701. //// 查询新插入ID
  7702. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  7703. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7704. //if (!string.IsNullOrEmpty(idStr))
  7705. //{
  7706. // responProce.ResponProcedureID = int.Parse(idStr);
  7707. //}
  7708. //else
  7709. //{
  7710. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7711. //}
  7712. }
  7713. #region 插入责任人
  7714. foreach (DefectResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  7715. {
  7716. #region SQL
  7717. sql = "insert into tp_pm_scrapresponsible"
  7718. + " (barcode,"
  7719. + " scrapproductid,"
  7720. + " staffid,"
  7721. + " userid,"
  7722. + " usercode,"
  7723. + " ujobsid,"
  7724. + " sjobsid,"
  7725. + " staffstatus,"
  7726. + " accountid,"
  7727. + " createuserid,"
  7728. + " updateuserid,"
  7729. + " responprocedureid,"
  7730. + " respontype)"
  7731. + " values"
  7732. + " (:barcode,"
  7733. + " :scrapproductid,"
  7734. + " :staffid,"
  7735. + " :userid,"
  7736. + " :usercode,"
  7737. + " :ujobsid,"
  7738. + " :sjobsid,"
  7739. + " :staffstatus,"
  7740. + " :accountid,"
  7741. + " :createuserid,"
  7742. + " :updateuserid,"
  7743. + " :responprocedureid,"
  7744. + " :respontype)";
  7745. #endregion
  7746. #region 参数
  7747. oracleParameters = new OracleParameter[] {
  7748. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7749. new OracleParameter(":barcode",responProce.BarCode),
  7750. new OracleParameter(":staffid",defectResponsible.StaffID),
  7751. new OracleParameter(":userid",defectResponsible.UserID),
  7752. new OracleParameter(":usercode",defectResponsible.UserCode),
  7753. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  7754. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  7755. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  7756. new OracleParameter(":accountid",sUserInfo.AccountID),
  7757. new OracleParameter(":createuserid",sUserInfo.UserID),
  7758. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7759. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  7760. new OracleParameter(":respontype",Constant.ScrapResponType.Procedure.GetHashCode()),
  7761. };
  7762. #endregion
  7763. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7764. // 保存失败
  7765. if (result != Constant.INT_IS_ONE)
  7766. {
  7767. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7768. }
  7769. }
  7770. #endregion
  7771. return null;
  7772. }
  7773. /// <summary>
  7774. /// 保存废弃产品
  7775. /// </summary>
  7776. /// <param name="oracleTrConn">连接对象</param>
  7777. /// <param name="scrapProduct">报废产品</param>
  7778. /// <param name="sUserInfo">用户基本信息</param>
  7779. /// <returns>string</returns>
  7780. private static string AddScrapProductRejectToReject(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7781. {
  7782. #region sql
  7783. string sql = "insert into tp_pm_scrapproduct"
  7784. + " (scrapproductid,barcode,"
  7785. + " productionlineid,"
  7786. + " productionlinecode,"
  7787. + " productionlinename,"
  7788. + " goodsid,"
  7789. + " goodscode,"
  7790. + " goodsname,"
  7791. + " groutingdailyid,"
  7792. + " groutingdailydetailid,"
  7793. + " groutingdate,"
  7794. + " groutinglineid,"
  7795. + " groutinglinecode,"
  7796. + " groutinglinename,"
  7797. + " gmouldtypeid,"
  7798. + " groutinglinedetailid,"
  7799. + " groutingmouldcode,"
  7800. + " mouldcode,"
  7801. + " scrapdate,"
  7802. + " rreason,"
  7803. + " remarks,"
  7804. + " auditstatus,"
  7805. + " auditor,"
  7806. + " auditdate,"
  7807. + " accountdate,"
  7808. + " accountid,"
  7809. + " createuserid,"
  7810. + " updateuserid,"
  7811. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7812. + " auditopinion,"
  7813. + " GroutingUserID,"
  7814. + " GroutingUserCode,"
  7815. + " GroutingNum,"
  7816. + " IsPublicBody,"
  7817. + " IsReFire,"
  7818. + " kilnid,"
  7819. + " kilncode,"
  7820. + " kilnname,"
  7821. + " kilncarid,"
  7822. + " kilncarcode,"
  7823. + " kilncarname,"
  7824. + " kilncarbatchno,"
  7825. + " kilncarposition,"
  7826. + " specialRepairflag,"
  7827. + " logoid,ProductionDataID, "
  7828. + " ProcedureID, "
  7829. + " ProcedureCode, "
  7830. + " ProcedureName, "
  7831. + " ScrapType "
  7832. + ")"
  7833. + " select :scrapproductid,trash.barcode,"
  7834. + " trash.productionlineid,"
  7835. + " trash.productionlinecode,"
  7836. + " trash.productionlinename,"
  7837. + " trash.goodsid,"
  7838. + " trash.goodscode,"
  7839. + " trash.goodsname,"
  7840. + " trash.groutingdailyid,"
  7841. + " trash.groutingdailydetailid,"
  7842. + " trash.groutingdate,"
  7843. + " trash.groutinglineid,"
  7844. + " trash.groutinglinecode,"
  7845. + " trash.groutinglinename,"
  7846. + " trash.gmouldtypeid,"
  7847. + " trash.groutinglinedetailid,"
  7848. + " trash.groutingmouldcode,"
  7849. + " trash.mouldcode,"
  7850. + " :scrapdate,"
  7851. + " :rreason,"
  7852. + " :remarks,"
  7853. + " :auditstatus,"
  7854. + " :auditor,"
  7855. // + " :auditdate,"
  7856. + " sysdate,"
  7857. + " :accountdate,"
  7858. + " trash.accountid,"
  7859. + " :createuserid,"
  7860. + " :updateuserid,"
  7861. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7862. + " :auditopinion,"
  7863. + " trash.GroutingUserID,"
  7864. + " trash.GroutingUserCode,"
  7865. + " trash.GroutingNum,"
  7866. + " trash.IsPublicBody,"
  7867. + " trash.IsReFire,"
  7868. + " trash.kilnid,"
  7869. + " trash.kilncode,"
  7870. + " trash.kilnname,"
  7871. + " trash.kilncarid,"
  7872. + " trash.kilncarcode,"
  7873. + " trash.kilncarname,"
  7874. + " trash.kilncarbatchno,"
  7875. + " trash.kilncarposition,"
  7876. + " trash.specialRepairflag,"
  7877. + " trash.logoid,:ProductionDataID,"
  7878. + " TP_PC_Procedure.ProcedureID, "
  7879. + " TP_PC_Procedure.ProcedureCode, "
  7880. + " TP_PC_Procedure.ProcedureName, "
  7881. + " :ScrapType "
  7882. + " from tp_pm_inproductiontrash trash"
  7883. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7884. + " where trash.barcode = :barcode";
  7885. #endregion
  7886. #region 参数
  7887. OracleParameter[] oracleParameters = null;
  7888. oracleParameters = new OracleParameter[] {
  7889. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7890. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7891. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7892. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7893. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7894. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7895. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7896. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7897. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7898. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7899. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7900. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7901. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7902. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7903. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7904. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7905. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  7906. };
  7907. #endregion
  7908. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7909. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  7910. //// 保存失败
  7911. //if (result != Constant.INT_IS_ONE)
  7912. //{
  7913. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7914. //}
  7915. return null;
  7916. }
  7917. /// <summary>
  7918. /// 保存废弃产品
  7919. /// </summary>
  7920. /// <param name="oracleTrConn">连接对象</param>
  7921. /// <param name="scrapProduct">报废产品</param>
  7922. /// <param name="sUserInfo">用户基本信息</param>
  7923. /// <returns>string</returns>
  7924. private static string AddScrapProduct(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7925. {
  7926. #region sql
  7927. string sql = "insert into tp_pm_scrapproduct"
  7928. + " (scrapproductid,barcode,"
  7929. + " productionlineid,"
  7930. + " productionlinecode,"
  7931. + " productionlinename,"
  7932. + " goodsid,"
  7933. + " goodscode,"
  7934. + " goodsname,"
  7935. + " groutingdailyid,"
  7936. + " groutingdailydetailid,"
  7937. + " groutingdate,"
  7938. + " groutinglineid,"
  7939. + " groutinglinecode,"
  7940. + " groutinglinename,"
  7941. + " gmouldtypeid,"
  7942. + " groutinglinedetailid,"
  7943. + " groutingmouldcode,"
  7944. + " mouldcode,"
  7945. + " scrapdate,"
  7946. + " rreason,"
  7947. + " remarks,"
  7948. + " auditstatus,"
  7949. + " auditor,"
  7950. + " auditdate,"
  7951. + " accountdate,"
  7952. + " accountid,"
  7953. + " createuserid,"
  7954. + " updateuserid,"
  7955. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7956. + " auditopinion,"
  7957. + " GroutingUserID,"
  7958. + " GroutingUserCode,"
  7959. + " GroutingNum,"
  7960. + " IsPublicBody,"
  7961. + " IsReFire,"
  7962. + " kilnid,"
  7963. + " kilncode,"
  7964. + " kilnname,"
  7965. + " kilncarid,"
  7966. + " kilncarcode,"
  7967. + " kilncarname,"
  7968. + " kilncarbatchno,"
  7969. + " kilncarposition,"
  7970. + " specialRepairflag,"
  7971. + " logoid,"
  7972. + " ProductionDataID, "
  7973. + " ProcedureID, "
  7974. + " ProcedureCode, "
  7975. + " ProcedureName, "
  7976. + " ScrapType "
  7977. + ")"
  7978. + " select :scrapproductid,barcode,"
  7979. + " InProduction.productionlineid,"
  7980. + " InProduction.productionlinecode,"
  7981. + " InProduction.productionlinename,"
  7982. + " InProduction.goodsid,"
  7983. + " InProduction.goodscode,"
  7984. + " InProduction.goodsname,"
  7985. + " InProduction.groutingdailyid,"
  7986. + " InProduction.groutingdailydetailid,"
  7987. + " InProduction.groutingdate,"
  7988. + " InProduction.groutinglineid,"
  7989. + " InProduction.groutinglinecode,"
  7990. + " InProduction.groutinglinename,"
  7991. + " InProduction.gmouldtypeid,"
  7992. + " InProduction.groutinglinedetailid,"
  7993. + " InProduction.groutingmouldcode,"
  7994. + " InProduction.mouldcode,"
  7995. + " :scrapdate,"
  7996. + " :rreason,"
  7997. + " :remarks,"
  7998. + " :auditstatus,"
  7999. + " :auditor,"
  8000. // + " :auditdate,"
  8001. + " sysdate,"
  8002. + " :accountdate,"
  8003. + " InProduction.accountid,"
  8004. + " :createuserid,"
  8005. + " :updateuserid,"
  8006. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  8007. + " :auditopinion,"
  8008. + " InProduction.GroutingUserID,"
  8009. + " InProduction.GroutingUserCode,"
  8010. + " InProduction.GroutingNum,"
  8011. + " InProduction.IsPublicBody,"
  8012. + " InProduction.IsReFire,"
  8013. + " InProduction.kilnid,"
  8014. + " InProduction.kilncode,"
  8015. + " InProduction.kilnname,"
  8016. + " InProduction.kilncarid,"
  8017. + " InProduction.kilncarcode,"
  8018. + " InProduction.kilncarname,"
  8019. + " InProduction.kilncarbatchno,"
  8020. + " InProduction.kilncarposition,"
  8021. + " InProduction.specialRepairflag,"
  8022. + " InProduction.logoid,";
  8023. if (scrapProduct.IsQualityStatistics == null)
  8024. {
  8025. sql += " InProduction.ProductionDataID,";
  8026. }
  8027. else
  8028. {
  8029. sql += " :ProductionDataID,";
  8030. }
  8031. sql += " TP_PC_Procedure.ProcedureID, "
  8032. + " TP_PC_Procedure.ProcedureCode, "
  8033. + " TP_PC_Procedure.ProcedureName, "
  8034. + " :ScrapType"
  8035. + " from TP_PM_InProduction InProduction"
  8036. + " left join TP_PC_Procedure on InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  8037. + " where InProduction.barcode = :barcode";
  8038. #endregion
  8039. #region 参数
  8040. OracleParameter[] oracleParameters = null;
  8041. if (scrapProduct.IsQualityStatistics == null)
  8042. {
  8043. oracleParameters = new OracleParameter[] {
  8044. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  8045. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  8046. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  8047. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  8048. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  8049. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  8050. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  8051. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  8052. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8053. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8054. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  8055. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  8056. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  8057. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  8058. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  8059. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  8060. };
  8061. }
  8062. else
  8063. {
  8064. oracleParameters = new OracleParameter[] {
  8065. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  8066. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  8067. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  8068. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  8069. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  8070. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  8071. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  8072. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  8073. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8074. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8075. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  8076. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  8077. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  8078. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  8079. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  8080. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  8081. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  8082. };
  8083. }
  8084. #endregion
  8085. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8086. if (result == 0)
  8087. {
  8088. sql = "insert into tp_pm_scrapproduct"
  8089. + " (scrapproductid,barcode,"
  8090. + " productionlineid,"
  8091. + " productionlinecode,"
  8092. + " productionlinename,"
  8093. + " goodsid,"
  8094. + " goodscode,"
  8095. + " goodsname,"
  8096. + " groutingdailyid,"
  8097. + " groutingdailydetailid,"
  8098. + " groutingdate,"
  8099. + " groutinglineid,"
  8100. + " groutinglinecode,"
  8101. + " groutinglinename,"
  8102. + " gmouldtypeid,"
  8103. + " groutinglinedetailid,"
  8104. + " groutingmouldcode,"
  8105. + " mouldcode,"
  8106. + " scrapdate,"
  8107. + " rreason,"
  8108. + " remarks,"
  8109. + " auditstatus,"
  8110. + " auditor,"
  8111. + " auditdate,"
  8112. + " accountdate,"
  8113. + " accountid,"
  8114. + " createuserid,"
  8115. + " updateuserid,"
  8116. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  8117. + " auditopinion,"
  8118. + " GroutingUserID,"
  8119. + " GroutingUserCode,"
  8120. + " GroutingNum,"
  8121. + " IsPublicBody,"
  8122. + " IsReFire,"
  8123. + " kilnid,"
  8124. + " kilncode,"
  8125. + " kilnname,"
  8126. + " kilncarid,"
  8127. + " kilncarcode,"
  8128. + " kilncarname,"
  8129. + " kilncarbatchno,"
  8130. + " kilncarposition,"
  8131. + " specialRepairflag,"
  8132. + " logoid,"
  8133. + " ProductionDataID,"
  8134. + " ProcedureID, "
  8135. + " ProcedureCode, "
  8136. + " ProcedureName, "
  8137. + " ScrapType "
  8138. + ")"
  8139. + " select :scrapproductid,trash.barcode,"
  8140. + " trash.productionlineid,"
  8141. + " trash.productionlinecode,"
  8142. + " trash.productionlinename,"
  8143. + " trash.goodsid,"
  8144. + " trash.goodscode,"
  8145. + " trash.goodsname,"
  8146. + " trash.groutingdailyid,"
  8147. + " trash.groutingdailydetailid,"
  8148. + " trash.groutingdate,"
  8149. + " trash.groutinglineid,"
  8150. + " trash.groutinglinecode,"
  8151. + " trash.groutinglinename,"
  8152. + " trash.gmouldtypeid,"
  8153. + " trash.groutinglinedetailid,"
  8154. + " trash.groutingmouldcode,"
  8155. + " trash.mouldcode,"
  8156. + " :scrapdate,"
  8157. + " :rreason,"
  8158. + " :remarks,"
  8159. + " :auditstatus,"
  8160. + " :auditor,"
  8161. //+ " :auditdate,"
  8162. + " sysdate,"
  8163. + " :accountdate,"
  8164. + " trash.accountid,"
  8165. + " :createuserid,"
  8166. + " :updateuserid,"
  8167. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  8168. + " :auditopinion,"
  8169. + " trash.GroutingUserID,"
  8170. + " trash.GroutingUserCode,"
  8171. + " trash.GroutingNum,"
  8172. + " trash.IsPublicBody,"
  8173. + " trash.IsReFire,"
  8174. + " trash.kilnid,"
  8175. + " trash.kilncode,"
  8176. + " trash.kilnname,"
  8177. + " trash.kilncarid,"
  8178. + " trash.kilncarcode,"
  8179. + " trash.kilncarname,"
  8180. + " trash.kilncarbatchno,"
  8181. + " trash.kilncarposition,"
  8182. + " trash.specialRepairflag,"
  8183. + " trash.logoid,";
  8184. if (scrapProduct.IsQualityStatistics == null)
  8185. {
  8186. sql += " trash.ProductionDataID,";
  8187. }
  8188. else
  8189. {
  8190. sql += " :ProductionDataID,";
  8191. }
  8192. sql += //" trash.ProductionDataID," +
  8193. " TP_PC_Procedure.ProcedureID, "
  8194. + " TP_PC_Procedure.ProcedureCode, "
  8195. + " TP_PC_Procedure.ProcedureName, "
  8196. + " :ScrapType "
  8197. + " from TP_PM_InProductionTrash trash"
  8198. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  8199. + " where trash.barcode = :barcode";
  8200. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8201. }
  8202. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  8203. //// 保存失败
  8204. //if (result != Constant.INT_IS_ONE)
  8205. //{
  8206. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8207. //}
  8208. return null;
  8209. }
  8210. /// <summary>
  8211. /// 保存缺陷
  8212. /// </summary>
  8213. /// <param name="oracleTrConn">连接对象</param>
  8214. /// <param name="productionDefect">缺陷数据</param>
  8215. /// <param name="sUserInfo">用户基本信息</param>
  8216. /// <returns>string</returns>
  8217. private static string AddDefect(IDBTransaction oracleTrConn, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  8218. {
  8219. // 查询新插入的生产数据ID
  8220. string sql = "select SEQ_PM_Defect_DefectID.nextval from dual";
  8221. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8222. int productionDefectID = 0;
  8223. if (!string.IsNullOrEmpty(idStr))
  8224. {
  8225. productionDefectID = int.Parse(idStr);
  8226. }
  8227. else
  8228. {
  8229. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8230. }
  8231. #region SQL
  8232. sql = "insert into tp_pm_defect"
  8233. + " ( ProductionDefectID,"
  8234. + " productiondataid,"
  8235. + " barcode,"
  8236. + " productionlineid,"
  8237. + " productionlinecode,"
  8238. + " productionlinename,"
  8239. + " procedureid,"
  8240. + " procedurecode,"
  8241. + " procedurename,"
  8242. + " userid,"
  8243. + " usercode,"
  8244. + " username,"
  8245. + " goodsid,"
  8246. + " goodscode,"
  8247. + " goodsname,"
  8248. + " defectid,"
  8249. + " defectcode,"
  8250. + " defectname,"
  8251. + " defectpositionid,"
  8252. + " defectpositioncode,"
  8253. + " defectpositionname,"
  8254. + " scrapResponFlag,"
  8255. + " defectproductiondataid,"
  8256. + " defectprocedureid,"
  8257. + " defectprocedurecode,"
  8258. + " defectprocedurename,"
  8259. + " defectuserid,"
  8260. + " defectusercode,"
  8261. + " defectusername,"
  8262. + " defectjobs,"
  8263. + " remarks,"
  8264. + " accountid,"
  8265. + " createuserid,"
  8266. + " defectfine,"
  8267. + " misseduserid,"
  8268. + " missedusercode,"
  8269. + " missedusername,"
  8270. + " updateuserid,SpecialDefect,DefectDeductionNum,CheckTime)"
  8271. + " values"
  8272. + " ("
  8273. + " :ProductionDefectID,"
  8274. + " :productiondataid,"
  8275. + " :barcode,"
  8276. + " :productionlineid,"
  8277. + " :productionlinecode,"
  8278. + " :productionlinename,"
  8279. + " :procedureid,"
  8280. + " :procedurecode,"
  8281. + " :procedurename,"
  8282. + " :userid,"
  8283. + " :usercode,"
  8284. + " :username,"
  8285. + " :goodsid,"
  8286. + " :goodscode,"
  8287. + " :goodsname,"
  8288. + " :defectid,"
  8289. + " :defectcode,"
  8290. + " :defectname,"
  8291. + " :defectpositionid,"
  8292. + " :defectpositioncode,"
  8293. + " :defectpositionname,"
  8294. + " :scrapResponFlag,"
  8295. + " :defectproductiondataid,"
  8296. + " :defectprocedureid,"
  8297. + " :defectprocedurecode,"
  8298. + " :defectprocedurename,"
  8299. + " :defectuserid,"
  8300. + " :defectusercode,"
  8301. + " :defectusername,"
  8302. + " :defectjobs,"
  8303. + " :remarks,"
  8304. + " :accountid,"
  8305. + " :createuserid,"
  8306. + " :defectfine,"
  8307. + " :misseduserid,"
  8308. + " :missedusercode,"
  8309. + " :missedusername,"
  8310. + " :updateuserid,:SpecialDefect,:DefectDeductionNum,:CheckTime)";
  8311. #endregion
  8312. #region 参数
  8313. OracleParameter[] oracleParameters = null;
  8314. if (productionDefect.IsPDA == null)
  8315. {
  8316. oracleParameters = new OracleParameter[] {
  8317. new OracleParameter(":ProductionDefectID",productionDefectID),
  8318. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  8319. new OracleParameter(":barcode",productionDefect.BarCode),
  8320. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  8321. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  8322. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  8323. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  8324. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  8325. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  8326. new OracleParameter(":userid",productionDefect.UserID),
  8327. new OracleParameter(":usercode",productionDefect.UserCode),
  8328. new OracleParameter(":username",productionDefect.UserName),
  8329. new OracleParameter(":goodsid",productionDefect.GoodsID),
  8330. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  8331. new OracleParameter(":goodsname",productionDefect.GoodsName),
  8332. new OracleParameter(":defectid",productionDefect.DefectID),
  8333. new OracleParameter(":defectcode",productionDefect.DefectCode),
  8334. new OracleParameter(":defectname",productionDefect.DefectName),
  8335. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  8336. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  8337. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  8338. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  8339. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  8340. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  8341. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  8342. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  8343. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  8344. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  8345. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  8346. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  8347. new OracleParameter(":remarks",productionDefect.Remarks),
  8348. new OracleParameter(":accountid",sUserInfo.AccountID),
  8349. new OracleParameter(":createuserid",sUserInfo.UserID),
  8350. new OracleParameter(":defectfine",productionDefect.DefectFine),
  8351. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  8352. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  8353. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  8354. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8355. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  8356. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  8357. new OracleParameter(":CheckTime",productionDefect.CheckTime.ToString()==string.Empty?null:productionDefect.CheckTime),
  8358. };
  8359. }
  8360. else
  8361. {
  8362. DateTime? pdaCheckTime = null;
  8363. if (productionDefect.PDACheckTime != null)
  8364. {
  8365. if (productionDefect.PDACheckTime.ToString() != string.Empty)
  8366. {
  8367. pdaCheckTime = Convert.ToDateTime(productionDefect.PDACheckTime);
  8368. }
  8369. }
  8370. oracleParameters = new OracleParameter[] {
  8371. new OracleParameter(":ProductionDefectID",productionDefectID),
  8372. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  8373. new OracleParameter(":barcode",productionDefect.BarCode),
  8374. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  8375. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  8376. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  8377. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  8378. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  8379. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  8380. new OracleParameter(":userid",productionDefect.UserID),
  8381. new OracleParameter(":usercode",productionDefect.UserCode),
  8382. new OracleParameter(":username",productionDefect.UserName),
  8383. new OracleParameter(":goodsid",productionDefect.GoodsID),
  8384. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  8385. new OracleParameter(":goodsname",productionDefect.GoodsName),
  8386. new OracleParameter(":defectid",productionDefect.DefectID),
  8387. new OracleParameter(":defectcode",productionDefect.DefectCode),
  8388. new OracleParameter(":defectname",productionDefect.DefectName),
  8389. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  8390. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  8391. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  8392. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  8393. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  8394. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  8395. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  8396. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  8397. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  8398. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  8399. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  8400. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  8401. new OracleParameter(":remarks",productionDefect.Remarks),
  8402. new OracleParameter(":accountid",sUserInfo.AccountID),
  8403. new OracleParameter(":createuserid",sUserInfo.UserID),
  8404. new OracleParameter(":defectfine",productionDefect.DefectFine),
  8405. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  8406. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  8407. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  8408. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8409. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  8410. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  8411. new OracleParameter(":CheckTime",pdaCheckTime),
  8412. };
  8413. }
  8414. #endregion
  8415. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8416. // 保存失败
  8417. if (result != Constant.INT_IS_ONE)
  8418. {
  8419. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8420. }
  8421. //// 查询新插入的生产数据ID
  8422. //sql = "select SEQ_PM_Defect_DefectID.Currval from dual";
  8423. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8424. //int productionDefectID = 0;
  8425. //if (!string.IsNullOrEmpty(idStr))
  8426. //{
  8427. // productionDefectID = int.Parse(idStr);
  8428. //}
  8429. //else
  8430. //{
  8431. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8432. //}
  8433. #region 插入生产缺陷责任者
  8434. if (productionDefect.DefectResponsibles != null)
  8435. {
  8436. foreach (DefectResponsibleEntity DefectResponsible in productionDefect.DefectResponsibles)
  8437. {
  8438. #region SQL
  8439. sql = "insert into tp_pm_defectresponsible"
  8440. + " (productiondefectid,"
  8441. + " staffid,"
  8442. + " userid,"
  8443. + " usercode,"
  8444. + " Ujobsid,"
  8445. + " SJobsID,"
  8446. + " staffstatus,"
  8447. + " accountid,"
  8448. + " createuserid,"
  8449. + " updateuserid)"
  8450. + " values"
  8451. + " (:productiondefectid,"
  8452. + " :staffid,"
  8453. + " :userid,"
  8454. + " :usercode,"
  8455. + " :ujobsid,"
  8456. + " :sjobsid,"
  8457. + " :staffstatus,"
  8458. + " :accountid,"
  8459. + " :createuserid,"
  8460. + " :updateuserid)";
  8461. #endregion
  8462. #region 参数
  8463. oracleParameters = new OracleParameter[] {
  8464. new OracleParameter(":productiondefectid",productionDefectID),
  8465. new OracleParameter(":staffid",DefectResponsible.StaffID),
  8466. new OracleParameter(":userid",DefectResponsible.UserID),
  8467. new OracleParameter(":usercode",DefectResponsible.UserCode),
  8468. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  8469. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  8470. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  8471. new OracleParameter(":accountid",sUserInfo.AccountID),
  8472. new OracleParameter(":createuserid",sUserInfo.UserID),
  8473. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8474. };
  8475. #endregion
  8476. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8477. // 保存失败
  8478. if (result != Constant.INT_IS_ONE)
  8479. {
  8480. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8481. }
  8482. }
  8483. }
  8484. #endregion
  8485. #region 插入生产漏检缺陷责任者
  8486. if (productionDefect.DefectMissedResponsibles != null)
  8487. {
  8488. foreach (DefectMissedResponsibleEntity DefectMissedResponsible in productionDefect.DefectMissedResponsibles)
  8489. {
  8490. #region SQL
  8491. sql = "insert into TP_PM_DefectMissedResponsible"
  8492. + " (productiondefectid,"
  8493. + " staffid,"
  8494. + " userid,"
  8495. + " usercode,"
  8496. + " Ujobsid,"
  8497. + " SJobsID,"
  8498. + " staffstatus,"
  8499. + " accountid,"
  8500. + " createuserid,"
  8501. + " updateuserid)"
  8502. + " values"
  8503. + " (:productiondefectid,"
  8504. + " :staffid,"
  8505. + " :userid,"
  8506. + " :usercode,"
  8507. + " :ujobsid,"
  8508. + " :sjobsid,"
  8509. + " :staffstatus,"
  8510. + " :accountid,"
  8511. + " :createuserid,"
  8512. + " :updateuserid)";
  8513. #endregion
  8514. #region 参数
  8515. oracleParameters = new OracleParameter[] {
  8516. new OracleParameter(":productiondefectid",productionDefectID),
  8517. new OracleParameter(":staffid",DefectMissedResponsible.StaffID),
  8518. new OracleParameter(":userid",DefectMissedResponsible.UserID),
  8519. new OracleParameter(":usercode",DefectMissedResponsible.UserCode),
  8520. new OracleParameter(":ujobsid",DefectMissedResponsible.UJobsID),
  8521. new OracleParameter(":sjobsid",DefectMissedResponsible.SJobsID),
  8522. new OracleParameter(":staffstatus",DefectMissedResponsible.StaffStatus),
  8523. new OracleParameter(":accountid",sUserInfo.AccountID),
  8524. new OracleParameter(":createuserid",sUserInfo.UserID),
  8525. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8526. };
  8527. #endregion
  8528. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8529. // 保存失败
  8530. if (result != Constant.INT_IS_ONE)
  8531. {
  8532. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8533. }
  8534. }
  8535. }
  8536. #endregion
  8537. #region 添加图片
  8538. if (productionDefect.DefectImages != null)
  8539. {
  8540. DateTime upTime = DateTime.Now;
  8541. foreach (DefectImageEntity defectImage in productionDefect.DefectImages)
  8542. {
  8543. // 图片路径为空。上传图片返回路径
  8544. if (string.IsNullOrEmpty(defectImage.ImagePath))
  8545. {
  8546. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic
  8547. .UpLoadImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8548. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8549. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8550. }
  8551. else
  8552. {
  8553. // 安卓端上传的图片
  8554. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic
  8555. .MoveImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8556. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8557. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8558. }
  8559. #region 保存图片
  8560. sql = "insert into tp_pm_defectimage"
  8561. + " ("
  8562. + " productiondefectid,"
  8563. + " barcode,"
  8564. + " thumbnailpath,"
  8565. + " imagepath,"
  8566. + " accountid,"
  8567. + " createuserid,"
  8568. + " updateuserid)"
  8569. + " values"
  8570. + " ("
  8571. + " :productiondefectid,"
  8572. + " :barcode,"
  8573. + " :thumbnailpath,"
  8574. + " :imagepath,"
  8575. + " :accountid,"
  8576. + " :createuserid,"
  8577. + " :updateuserid)";
  8578. oracleParameters = new OracleParameter[] {
  8579. new OracleParameter(":productiondefectid",productionDefectID),
  8580. new OracleParameter(":barcode",productionDefect.BarCode),
  8581. new OracleParameter(":thumbnailpath",defectImage.ThumbnailPath),
  8582. new OracleParameter(":imagepath",defectImage.ImagePath),
  8583. new OracleParameter(":accountid",sUserInfo.AccountID),
  8584. new OracleParameter(":createuserid",sUserInfo.UserID),
  8585. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8586. };
  8587. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8588. // 保存失败
  8589. if (result != Constant.INT_IS_ONE)
  8590. {
  8591. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8592. }
  8593. #endregion
  8594. }
  8595. }
  8596. #endregion
  8597. // 保存成功返回null
  8598. return null;
  8599. }
  8600. #endregion
  8601. #region 进度考核奖惩
  8602. /// <summary>
  8603. /// 根据传入的实体保存 进度考核奖惩记录
  8604. /// </summary>
  8605. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8606. /// <param name="sUserInfo">用户基本信息</param>
  8607. /// <param name="pStatus">新增还是编辑枚举</param>
  8608. /// <returns>PMResultEntity操作结果状态信息</returns>
  8609. public static PMResultEntity SaveStaffProgressRAPInfo(PMProgressRAPEntity pProgressRAPEntity, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
  8610. {
  8611. PMResultEntity resultEnity = new PMResultEntity();
  8612. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8613. try
  8614. {
  8615. if (pProgressRAPEntity == null)
  8616. {
  8617. resultEnity.OperateStatus = 0;
  8618. return resultEnity;
  8619. }
  8620. oracleTrConn.Connect();
  8621. if (pStatus == WCFConstant.FormMode.Add)
  8622. {
  8623. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.nextval from dual");
  8624. #region 新建时插入数据
  8625. string strSql1 = "Insert Into TP_PM_ProgressRAP (RAPID,"
  8626. + "STAFFID"
  8627. + ",RAPTYPE"
  8628. + ",REASON"
  8629. + ",RAPDATE"
  8630. + ",RAPAMOUNT"
  8631. + ",REMARKS"
  8632. + ",AUDITSTATUS"
  8633. + ",ACCOUNTID"
  8634. + ",CREATEUSERID"
  8635. + ",UPDATEUSERID)"
  8636. + " Values ("
  8637. + ":RAPID"
  8638. + ",:pSTAFFID"
  8639. + ",:pRAPTYPE"
  8640. + ",:pREASON"
  8641. + ",:pRAPDATE"
  8642. + ",:pRAPAMOUNT"
  8643. + ",:pREMARKS"
  8644. + ",:pAUDITSTATUS"
  8645. + ",:pACCOUNTID"
  8646. + ",:pCREATEUSERID"
  8647. + ",:pUPDATEUSERID"
  8648. + ")";
  8649. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8650. {
  8651. new OracleParameter(":RAPID", OracleDbType.Int32, Convert.ToInt32(strSeq) , ParameterDirection.Input),
  8652. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8653. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8654. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8655. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8656. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8657. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8658. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32, 0 , ParameterDirection.Input),
  8659. new OracleParameter(":pACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8660. new OracleParameter(":pCREATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8661. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8662. };
  8663. #endregion
  8664. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql1, parmetersSql1);
  8665. //string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.Currval from dual");
  8666. resultEnity.OperateKey = Convert.ToInt32(strSeq);
  8667. }
  8668. else
  8669. {
  8670. #region 判断数据是否可以编辑
  8671. string strSlq2 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8672. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8673. {
  8674. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8675. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8676. };
  8677. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq2, parmetersSql2);
  8678. if (string.IsNullOrEmpty(strAuditStatus))
  8679. {
  8680. oracleTrConn.Rollback();
  8681. oracleTrConn.Disconnect();
  8682. resultEnity.OperateStatus = -2;
  8683. return resultEnity;
  8684. }
  8685. if (!"0".Equals(strAuditStatus))
  8686. {
  8687. //不是待审批状态
  8688. oracleTrConn.Rollback();
  8689. oracleTrConn.Disconnect();
  8690. resultEnity.OperateStatus = -1;
  8691. return resultEnity;
  8692. }
  8693. #endregion
  8694. #region 编辑时更新数据
  8695. string strSql3 = "Update TP_PM_ProgressRAP Set "
  8696. + "RAPTYPE = :pRAPTYPE"
  8697. + ",REASON = :pREASON"
  8698. + ",RAPDATE = :pRAPDATE"
  8699. + ",RAPAMOUNT = :pRAPAMOUNT"
  8700. + ",REMARKS = :pREMARKS"
  8701. + ",UPDATEUSERID = :pUPDATEUSERID"
  8702. + " Where RAPID = :pRAPID And STAFFID = :pSTAFFID And AccountID = :pAccountID";
  8703. OracleParameter[] parmetersSql3 = new OracleParameter[]
  8704. {
  8705. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8706. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8707. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8708. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8709. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8710. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8711. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8712. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8713. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8714. };
  8715. #endregion
  8716. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
  8717. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8718. }
  8719. oracleTrConn.Commit();
  8720. oracleTrConn.Disconnect();
  8721. return resultEnity;
  8722. }
  8723. catch (Exception ex)
  8724. {
  8725. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8726. {
  8727. oracleTrConn.Rollback();
  8728. oracleTrConn.Disconnect();
  8729. }
  8730. throw ex;
  8731. }
  8732. finally
  8733. {
  8734. if (oracleTrConn.ConnState == ConnectionState.Open)
  8735. {
  8736. oracleTrConn.Disconnect();
  8737. }
  8738. }
  8739. }
  8740. /// <summary>
  8741. /// 进度考核奖惩审批
  8742. /// </summary>
  8743. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8744. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  8745. /// <param name="sUserInfo">用户基本信息</param>
  8746. /// <returns>PMResultEntity操作结果状态信息</returns>
  8747. public static PMResultEntity SaveStaffProgressRAPApprovalInfo(PMProgressRAPEntity pProgressRAPEntity, bool pState, SUserInfo sUserInfo)
  8748. {
  8749. PMResultEntity resultEnity = new PMResultEntity();
  8750. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8751. try
  8752. {
  8753. if (pProgressRAPEntity == null)
  8754. {
  8755. resultEnity.OperateStatus = 0;
  8756. return resultEnity;
  8757. }
  8758. oracleTrConn.Connect();
  8759. #region 判断数据是否可以编辑
  8760. string strSlq1 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8761. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8762. {
  8763. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8764. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8765. };
  8766. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq1, parmetersSql1);
  8767. if (string.IsNullOrEmpty(strAuditStatus))
  8768. {
  8769. oracleTrConn.Rollback();
  8770. oracleTrConn.Disconnect();
  8771. resultEnity.OperateStatus = -2;
  8772. return resultEnity;
  8773. }
  8774. if (!"0".Equals(strAuditStatus))
  8775. {
  8776. //不是待审批状态
  8777. oracleTrConn.Rollback();
  8778. oracleTrConn.Disconnect();
  8779. resultEnity.OperateStatus = -1;
  8780. return resultEnity;
  8781. }
  8782. #endregion
  8783. #region 更新审批数据
  8784. int intAuditStatus = 2; //2:审核未通过
  8785. if (pState)
  8786. {
  8787. intAuditStatus = 1; //1:审核通过;
  8788. }
  8789. string strSql2 = "Update TP_PM_ProgressRAP Set "
  8790. + "AUDITSTATUS = :pAUDITSTATUS"
  8791. + ",AUDITOR = :pAUDITOR"
  8792. + ",AuditlDate = sysdate"
  8793. + ",ACCOUNTDATE = FUN_CMN_GetAccountDate(:pAccountID1)"
  8794. + ",UPDATEUSERID = :pUPDATEUSERID"
  8795. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8796. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8797. {
  8798. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32,intAuditStatus, ParameterDirection.Input),
  8799. new OracleParameter(":pAUDITOR", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8800. new OracleParameter(":pAccountID1", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8801. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8802. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8803. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8804. };
  8805. #endregion
  8806. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  8807. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8808. oracleTrConn.Commit();
  8809. oracleTrConn.Disconnect();
  8810. return resultEnity;
  8811. }
  8812. catch (Exception ex)
  8813. {
  8814. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8815. {
  8816. oracleTrConn.Rollback();
  8817. oracleTrConn.Disconnect();
  8818. }
  8819. throw ex;
  8820. }
  8821. finally
  8822. {
  8823. if (oracleTrConn.ConnState == ConnectionState.Open)
  8824. {
  8825. oracleTrConn.Disconnect();
  8826. }
  8827. }
  8828. }
  8829. /// <summary>
  8830. /// 设置进度考核奖惩停用
  8831. /// </summary>
  8832. /// <param name="pRAPID">进度考核奖惩编号</param>
  8833. /// <param name="sUserInfo">用户基本信息</param>
  8834. /// <returns>PMResultEntity操作结果状态信息</returns>
  8835. public static PMResultEntity SetStaffProgressRAPValueFlag(int pRAPID, SUserInfo sUserInfo)
  8836. {
  8837. PMResultEntity resultEnity = new PMResultEntity();
  8838. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8839. try
  8840. {
  8841. oracleTrConn.Connect();
  8842. string sql = "Select max(SettlementFlag) From TP_PM_ProgressRAP Where RAPID =" + pRAPID + " And AuditStatus = 0 And ValueFlag = 1";
  8843. string strSettlementFlag = oracleTrConn.GetSqlResultToStr(sql);
  8844. if (!string.IsNullOrEmpty(strSettlementFlag))
  8845. {
  8846. if ("1".Equals(strSettlementFlag)) //工资结算标识 1:已经结算 0:未结算
  8847. {
  8848. oracleTrConn.Rollback();
  8849. oracleTrConn.Disconnect();
  8850. resultEnity.OperateStatus = -3;
  8851. return resultEnity;
  8852. }
  8853. string sqlString = "Update TP_PM_ProgressRAP Set ValueFlag = 0,UpdateUserID = :pUpdateUserID"
  8854. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8855. OracleParameter[] parmetersSql = new OracleParameter[]
  8856. {
  8857. new OracleParameter(":pUpdateUserID", OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  8858. new OracleParameter(":pRAPID", OracleDbType.Int32, pRAPID , ParameterDirection.Input),
  8859. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8860. };
  8861. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmetersSql);
  8862. oracleTrConn.Commit();
  8863. oracleTrConn.Disconnect();
  8864. return resultEnity;
  8865. }
  8866. else
  8867. {
  8868. oracleTrConn.Rollback();
  8869. oracleTrConn.Disconnect();
  8870. resultEnity.OperateStatus = -2;
  8871. return resultEnity;
  8872. }
  8873. }
  8874. catch (Exception ex)
  8875. {
  8876. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8877. {
  8878. oracleTrConn.Rollback();
  8879. oracleTrConn.Disconnect();
  8880. }
  8881. throw ex;
  8882. }
  8883. finally
  8884. {
  8885. if (oracleTrConn.ConnState == ConnectionState.Open)
  8886. {
  8887. oracleTrConn.Disconnect();
  8888. }
  8889. }
  8890. }
  8891. #endregion
  8892. #endregion
  8893. #region 私有方法
  8894. /// <summary>
  8895. /// 将窑车号下的条码转换成Table
  8896. /// </summary>
  8897. /// <param name="oracleTrConn">数据连接</param>
  8898. /// <param name="productionTable">手机传入的Table</param>
  8899. /// <param name="sUserInfo">用户基本信息</param>
  8900. /// <returns>DataTable</returns>
  8901. private static DataTable CarNoInfoConvertToTable(IDBTransaction oracleTrConn, DataTable productionTable, SUserInfo sUserInfo)
  8902. {
  8903. if (productionTable != null
  8904. && productionTable.Rows.Count > Constant.INT_IS_ZERO)
  8905. {
  8906. DataRow row = productionTable.Rows[Constant.INT_IS_ZERO];
  8907. string sql = "select carGoods.Barcode,"
  8908. + " carGoods.KilnCarID,"
  8909. + " car.KilncarCode,"
  8910. + " car.KilncarName,"
  8911. + " kiln.kilnid,"
  8912. + " kiln.kilnCode,"
  8913. + " kiln.kilnName,"
  8914. + " carGoods.Kilncarposition,"
  8915. + " carGoods.KilnCarBatchNo,"
  8916. + " carGoods.GoodsID,"
  8917. + " goods.GoodsCode,"
  8918. + " goods.GoodsName,"
  8919. + " :userID as UserID,"
  8920. + " :userCode as UserCode,"
  8921. + " :userName as UserName,"
  8922. + " :Remarks as Remarks"
  8923. + " from TP_PM_KilnCarGoods carGoods"
  8924. + " inner join TP_MST_KilnCar car on car.KilnCarID = carGoods.KilnCarID"
  8925. + " inner join TP_MST_Kiln kiln on kiln.KilnID = car.KilnID"
  8926. + " inner join TP_MST_Goods goods on goods.goodsid = carGoods.GoodsID"
  8927. + " where car.kilncarcode = :kilncarcode and carGoods.AccountID = :accountID";
  8928. OracleParameter[] oracleParameters = new OracleParameter[] {
  8929. new OracleParameter(":userID",row["UserID"].ToString()),
  8930. new OracleParameter(":userCode",row["UserCode"].ToString()),
  8931. new OracleParameter(":userName",row["UserName"].ToString()),
  8932. new OracleParameter(":kilncarcode",row["KilnCarCode"].ToString()),
  8933. new OracleParameter(":accountID",sUserInfo.AccountID),
  8934. new OracleParameter(":Remarks",row["Remarks"].ToString()),
  8935. };
  8936. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  8937. if (ds != null
  8938. && ds.Tables.Count > Constant.INT_IS_ZERO
  8939. && ds.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  8940. {
  8941. return ds.Tables[0];
  8942. }
  8943. return productionTable;
  8944. }
  8945. return productionTable;
  8946. }
  8947. #endregion
  8948. #region PDA端保存条码
  8949. /// <summary>
  8950. /// 添加成品编辑
  8951. /// </summary>
  8952. /// <param name="oracleTrConn">数据连接</param>
  8953. /// <param name="procedure">工序对象</param>
  8954. /// <param name="productionDataEntitys">生产数据集</param>
  8955. /// <param name="sUserInfo">用户基本信息</param>
  8956. /// <returns>string</returns>
  8957. private static string AddFinishCheckPDA(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  8958. {
  8959. string errMsg = "";
  8960. // 获得账务日期
  8961. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  8962. // 本批采集的批次号
  8963. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  8964. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  8965. foreach (ProductionDataEntity productionData in productionDataEntitys)
  8966. {
  8967. bool RejectToReject = false;
  8968. if (string.IsNullOrEmpty(productionData.Barcode))
  8969. {
  8970. throw new Exception("传入的条码号为空");
  8971. }
  8972. int goodsID = Constant.INT_IS_ZERO;
  8973. string goodsCode = string.Empty;
  8974. string goodsName = string.Empty;
  8975. // 注浆者工号
  8976. string groutingUserCode = string.Empty;
  8977. // 次品标识
  8978. bool substandardFlag = false;
  8979. #region 校验条码有效性
  8980. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  8981. if (!string.IsNullOrEmpty(errMsg))
  8982. {
  8983. // 编辑重烧时,会提示不可到达;编辑次品时,会提示已经报废
  8984. //if (productionData.ProductionDataID == 0)
  8985. //if (!errMsg.Contains("次品"))
  8986. return errMsg;
  8987. }
  8988. #endregion
  8989. int isInProduction = 1;
  8990. #region 修改条码
  8991. if (productionData.ProductionDataID > 0) //表示编辑条码
  8992. {
  8993. #region 验证改判有效期
  8994. // 前台已有相关验证,但还是产生了超期改判,后台保存前增加验证。
  8995. string sqlString = "select pdin.createtime from tp_pm_productiondatain pdin where pdin.productiondataid = " + productionData.ProductionDataID;
  8996. DateTime createtime = Convert.ToDateTime(oracleTrConn.GetSqlResultToObj(sqlString)).Date;
  8997. // 参数验证用服务端当前设置
  8998. sqlString = "SELECT sst.settingvalue\n" +
  8999. " FROM tp_mst_systemsetting sst\n" +
  9000. " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  9001. " AND sst.settingcode = 'S_PM_009'";
  9002. string strValue = oracleTrConn.GetSqlResultToStr(sqlString);
  9003. int days = 0;
  9004. int pDays = 0;
  9005. if (int.TryParse(strValue, out pDays))
  9006. {
  9007. days = pDays;
  9008. }
  9009. if (days != 0 && createtime <= DateTime.Now.Date.AddDays(-days))
  9010. {
  9011. return string.Format(Messages.MSG_S_PM_009, createtime.ToString("yyyy-MM-dd"), days.ToString(), createtime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  9012. }
  9013. #endregion
  9014. //
  9015. string sqlOPTimeStamp = "";
  9016. OracleParameter[] parmetersSql = null;
  9017. #region 验证在产时间戳
  9018. if (productionData.OPTimeStampPDA == null) // 表示PC端,因为只有安卓端才给此数据字段给值
  9019. {
  9020. sqlOPTimeStamp = @"select
  9021. 1
  9022. from TP_PM_InProduction
  9023. where
  9024. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp = :OPTimeStamp
  9025. union
  9026. select
  9027. 0
  9028. from Tp_Pm_Inproductiontrash
  9029. where
  9030. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp = :OPTimeStamp ";
  9031. parmetersSql = new OracleParameter[]
  9032. {
  9033. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, productionData.OPTimeStamp, ParameterDirection.Input),
  9034. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9035. };
  9036. }
  9037. else
  9038. {
  9039. sqlOPTimeStamp = @"select
  9040. 1
  9041. from TP_PM_InProduction
  9042. where
  9043. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')
  9044. union
  9045. select
  9046. 0
  9047. from Tp_Pm_Inproductiontrash
  9048. where
  9049. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')";
  9050. parmetersSql = new OracleParameter[]
  9051. {
  9052. new OracleParameter(":OPTimeStamp", OracleDbType.NVarchar2, productionData.OPTimeStampPDA, ParameterDirection.Input),
  9053. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9054. };
  9055. }
  9056. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlOPTimeStamp, parmetersSql);
  9057. if (returnDataset != null
  9058. && returnDataset.Tables[0].Rows.Count == 0)
  9059. {
  9060. return "数据已经被修改,请重新进行编辑";
  9061. }
  9062. isInProduction = Convert.ToInt32(returnDataset.Tables[0].Rows[0][0]);
  9063. #endregion
  9064. //如果原来是 次品 / 废品 xuwei modify 2019-12-13 加入 废品识别
  9065. if (productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  9066. ||
  9067. productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  9068. )
  9069. {
  9070. //改为 次品 废品 xuwei modify 2019-12-13 加入废品识别
  9071. if (productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  9072. ||
  9073. productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  9074. )
  9075. {
  9076. // 删除生产数据及相关表与报损表
  9077. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9078. if (!string.IsNullOrEmpty(errMsg))
  9079. {
  9080. return errMsg;
  9081. }
  9082. RejectToReject = true;
  9083. } //改为不是 次品 废品 xuwei modify 2019-12-13 加入废品识别
  9084. else if (productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Reject.GetHashCode()
  9085. ||
  9086. productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Waste.GetHashCode()
  9087. )
  9088. {
  9089. // 删除生产数据及相关表与报损表
  9090. errMsg = DeleteSubstandardToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9091. if (!string.IsNullOrEmpty(errMsg))
  9092. {
  9093. return errMsg;
  9094. }
  9095. }
  9096. }
  9097. else
  9098. {
  9099. // 原来产品分级不是次品
  9100. errMsg = DeleteNormalToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9101. if (!string.IsNullOrEmpty(errMsg))
  9102. {
  9103. return errMsg;
  9104. }
  9105. }
  9106. }
  9107. else // wangx 2016-12-13 防止同时两个人新建数据,加判断条件
  9108. {
  9109. string sqlCurrrentProcedure = @"select Flowprocedureid from tp_pm_inproduction where BarCode=:BarCode";
  9110. OracleParameter[] parmetersSql = null;
  9111. parmetersSql = new OracleParameter[]
  9112. {
  9113. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9114. };
  9115. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlCurrrentProcedure, parmetersSql);
  9116. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 begin
  9117. //if (returnDataset != null
  9118. // && returnDataset.Tables[0].Rows.Count > 0)
  9119. //{
  9120. // if (Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID)
  9121. // {
  9122. // return "【此条码生产数据已被修改,请重开画面后再扫描】";
  9123. // }
  9124. //}
  9125. if (returnDataset == null ||
  9126. returnDataset.Tables.Count == 0 ||
  9127. returnDataset.Tables[0].Rows.Count == 0 ||
  9128. Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID
  9129. )
  9130. {
  9131. return "【此条码生产数据已被修改,请重新扫描此条码】";
  9132. }
  9133. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 end
  9134. }
  9135. #endregion
  9136. //2022年2月22日10:54:32 by feiy modify 若产品分级为次品时,productionData.ProductionDefects必须有值
  9137. //暂时来解决登记是次品,但无缺陷明细的情况
  9138. if ((productionData.ProductionDefects == null || productionData.ProductionDefects.Count <= 0) && productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  9139. {
  9140. return "登记是次品,必须登记缺陷";
  9141. }
  9142. // 查询新插入的生产数据ID
  9143. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  9144. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  9145. int productionDataID = 0;
  9146. if (!string.IsNullOrEmpty(idStr))
  9147. {
  9148. productionDataID = int.Parse(idStr);
  9149. }
  9150. else
  9151. {
  9152. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9153. }
  9154. int? ClassesSettingID = null;//班次配置ID
  9155. #region 添加生产者数据
  9156. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  9157. if (!string.IsNullOrEmpty(errMsg))
  9158. {
  9159. return errMsg;
  9160. }
  9161. #endregion
  9162. #region 添加生产数据
  9163. #region 属性赋值
  9164. productionData.ClassesSettingID = ClassesSettingID;
  9165. productionData.ProductionDataID = Convert.ToInt32(idStr);
  9166. productionData.CentralizedBatchNo = centralizedBatchNo;
  9167. productionData.ProductionLineID = procedure.ProductionLineID;
  9168. productionData.ProductionLineCode = procedure.ProductionlineCode;
  9169. productionData.ProductionLineName = procedure.ProductionlineName;
  9170. productionData.CompleteProcedureID = procedure.ProcedureID;
  9171. productionData.ProcedureCode = procedure.ProcedureCode;
  9172. productionData.ProcedureName = procedure.ProcedureName;
  9173. productionData.ProcedureModel = procedure.ProcedureModel;
  9174. productionData.ModelType = procedure.ModelType;
  9175. productionData.NodeType = procedure.NodeType;
  9176. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  9177. // 重烧
  9178. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  9179. {
  9180. //productionData.GoodsLevelID = null;
  9181. //productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  9182. productionData.IsReFire = (int)Constant.ReFireFlag.No;//产品分级的时候,并不标记,走过重烧第一个结点之后,更新此字段
  9183. }
  9184. // 冷补
  9185. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.LengBu)
  9186. {
  9187. productionData.IsLengBu = 0;
  9188. }
  9189. // 次品 废品 xuwei 2019-12-13 加入 废品识别
  9190. else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject
  9191. ||
  9192. productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste
  9193. )
  9194. {
  9195. //productionData.GoodsLevelID = null;
  9196. substandardFlag = true;
  9197. }
  9198. // 查询新插入的生产数据ID
  9199. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  9200. // {
  9201. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  9202. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  9203. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  9204. // {
  9205. ////// string sqlReFire = @"select
  9206. ////// isrefire
  9207. ////// from tp_pm_inproduction where barcode=:barcode
  9208. ////// union
  9209. ////// select
  9210. ////// isrefire
  9211. ////// from TP_PM_InProductionTrash where barcode=:barcode
  9212. ////// ";
  9213. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  9214. ////// new OracleParameter(":barcode", productionData.Barcode),
  9215. ////// };
  9216. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  9217. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  9218. ////// {
  9219. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  9220. ////// }
  9221. // }
  9222. productionData.OrganizationID = procedure.OrganizationID;
  9223. productionData.GoodsID = goodsID;
  9224. productionData.GoodsCode = goodsCode;
  9225. productionData.GoodsName = goodsName;
  9226. productionData.GoodsLevelID = productionData.GoodsLevelID;
  9227. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9228. //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  9229. //{
  9230. // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  9231. //}
  9232. //else
  9233. //{
  9234. // productionData.GoodsEnding = null;
  9235. //}
  9236. #endregion
  9237. string OutSpecialRepairflag = "0";//干补标识
  9238. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9239. errMsg = AddFinishCheckProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9240. if (!string.IsNullOrEmpty(errMsg))
  9241. {
  9242. return errMsg;
  9243. }
  9244. #endregion
  9245. //#region 添加生产者数据
  9246. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  9247. //if (!string.IsNullOrEmpty(errMsg))
  9248. //{
  9249. // return errMsg;
  9250. //}
  9251. //#endregion
  9252. #region 条码有缺陷
  9253. #region 是次品 添加废弃产品
  9254. string ResponProcedureidStr = "";
  9255. if (substandardFlag)
  9256. {
  9257. #region 修改在产产品数据的当前工序,防止直接报损在产工序没有改过来,记录的是上一个工序
  9258. string updateInInProductionForScrap = @"Update tp_pm_inproduction
  9259. set FlowProcedureID=:flowProcedureID,ProcedureID=:flowProcedureID where barcode=:barcode";
  9260. List<OracleParameter> paras = new List<OracleParameter>();
  9261. paras.Add(new OracleParameter(":barcode", productionData.Barcode));
  9262. paras.Add(new OracleParameter(":flowProcedureID", procedure.ProcedureID));
  9263. oracleTrConn.ExecuteNonQuery(updateInInProductionForScrap, paras.ToArray());
  9264. #endregion
  9265. #region 添加废弃产品
  9266. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  9267. #region 属性赋值
  9268. scrapProduct.BarCode = productionData.Barcode;
  9269. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  9270. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  9271. scrapProduct.ScrapDate = accountDate;
  9272. scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  9273. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  9274. scrapProduct.Auditor = sUserInfo.UserID;
  9275. scrapProduct.AuditlDate = accountDate;
  9276. scrapProduct.AccountDate = accountDate;
  9277. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  9278. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9279. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  9280. // 查询新插入的废弃ID
  9281. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  9282. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9283. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9284. scrapProduct.ScrapType = 1;
  9285. scrapProduct.IsQualityStatistics = 1;//新加的,因为这个报损方法是共通的,用于区别是哪里传进去的
  9286. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  9287. #endregion
  9288. if (!RejectToReject) //不是次品到次品 wangxin 20150417
  9289. {
  9290. // 保存报废
  9291. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  9292. }
  9293. else
  9294. {
  9295. if (isInProduction == 1)
  9296. {
  9297. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  9298. }
  9299. else
  9300. {
  9301. // 保存报废
  9302. errMsg = AddScrapProductRejectToReject(oracleTrConn, scrapProduct, sUserInfo);
  9303. }
  9304. }
  9305. //不是次品到次品 wangxin 20150417
  9306. // 保存失败
  9307. if (!string.IsNullOrEmpty(errMsg))
  9308. {
  9309. return errMsg;
  9310. }
  9311. #endregion
  9312. }
  9313. #endregion
  9314. // 存在缺陷 插入缺陷表
  9315. if (productionData.ProductionDefects != null)
  9316. {
  9317. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  9318. {
  9319. #region 保存缺陷
  9320. productionDefect.ProductionDataID = productionDataID;
  9321. productionDefect.BarCode = productionData.Barcode;
  9322. productionDefect.ProductionLineID = procedure.ProductionLineID;
  9323. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  9324. productionDefect.ProductionLineName = procedure.ProductionlineName;
  9325. productionDefect.ProcedureID = procedure.ProcedureID;
  9326. productionDefect.ProcedureCode = procedure.ProcedureCode;
  9327. productionDefect.ProcedureName = procedure.ProcedureName;
  9328. productionDefect.UserID = productionData.UserID;
  9329. productionDefect.UserCode = productionData.UserCode;
  9330. productionDefect.UserName = productionData.UserName;
  9331. productionDefect.GoodsID = productionData.GoodsID;
  9332. productionDefect.GoodsCode = productionData.GoodsCode;
  9333. productionDefect.GoodsName = productionData.GoodsName;
  9334. productionData.Remarks = productionData.Remarks;
  9335. productionDefect.ScrapResponFlag
  9336. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  9337. // 保存缺陷
  9338. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  9339. if (!string.IsNullOrEmpty(errMsg))
  9340. {
  9341. return errMsg;
  9342. }
  9343. #endregion
  9344. #region 是次品 添加废弃责任工序
  9345. if (substandardFlag)
  9346. {
  9347. //if (productionDefect.DefectProcedureID != null)
  9348. {
  9349. #region 添加责任工序
  9350. ResponProcedureEntity responProce = new ResponProcedureEntity();
  9351. //// 查询新插入的废弃ID
  9352. //string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  9353. //string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9354. #region 属性赋值
  9355. responProce.BarCode = productionData.Barcode;
  9356. responProce.ProductionDataID = productionDataID;
  9357. responProce.ProductionLineID = productionDefect.ProductionLineID;
  9358. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  9359. responProce.ProductionLineName = productionDefect.ProductionLineName;
  9360. responProce.ProcedureID = productionDefect.DefectProcedureID;
  9361. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  9362. responProce.ProcedureName = productionDefect.DefectProcedureName;
  9363. responProce.UserID = productionDefect.DefectUserID;
  9364. responProce.UserCode = productionDefect.DefectUserCode;
  9365. responProce.UserName = productionDefect.DefectUserName;
  9366. responProce.Remarks = productionDefect.Remarks;
  9367. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9368. #endregion
  9369. // 保存责任工序
  9370. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  9371. // 保存失败
  9372. if (!string.IsNullOrEmpty(errMsg))
  9373. {
  9374. return errMsg;
  9375. }
  9376. #endregion
  9377. }
  9378. }
  9379. #endregion
  9380. }
  9381. }
  9382. #endregion
  9383. #region 条码是次品 删除在产产品数据
  9384. if (substandardFlag)
  9385. {
  9386. #region 删除在产产品数据
  9387. InProductionEntity delInProductionEntity = new InProductionEntity();
  9388. delInProductionEntity.BarCode = productionData.Barcode;
  9389. delInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9390. delInProductionEntity.ProductionDataID = productionDataID;
  9391. delInProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9392. delInProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9393. // 执行删除 在产数据
  9394. errMsg = DeletePDAInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  9395. // 执行失败
  9396. if (!string.IsNullOrEmpty(errMsg))
  9397. {
  9398. return errMsg;
  9399. }
  9400. #endregion
  9401. }
  9402. #endregion
  9403. #region 条码不是次品
  9404. if (!substandardFlag)
  9405. {
  9406. #region 中间工序/重烧/冷补 修改在产产品数据
  9407. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin
  9408. || procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  9409. || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode()
  9410. || productionData.IsLengBu == 1)
  9411. {
  9412. #region 修改在产产品数据的当前工序
  9413. InProductionEntity inProductionEntity = new InProductionEntity();
  9414. inProductionEntity.BarCode = productionData.Barcode;
  9415. //流程工序
  9416. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  9417. // 当前工序
  9418. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9419. inProductionEntity.ProcedureID = procedure.ProcedureID;
  9420. //生产数据ID
  9421. inProductionEntity.ProductionDataID = productionDataID;
  9422. // 工序模型
  9423. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  9424. // 工序类别
  9425. inProductionEntity.ModelType = procedure.ModelType;
  9426. // 生产工号
  9427. inProductionEntity.UserID = productionData.UserID;
  9428. // 重烧
  9429. inProductionEntity.IsReFire = productionData.IsReFire;
  9430. // 重烧
  9431. inProductionEntity.IsLengBu = productionData.IsLengBu;
  9432. // 缺陷
  9433. inProductionEntity.DefectFlag = productionData.DefectFlag;
  9434. // 产品分级
  9435. inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  9436. // 返工工序ID
  9437. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  9438. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9439. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9440. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  9441. // 执行修改
  9442. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  9443. // 执行失败
  9444. if (!string.IsNullOrEmpty(errMsg))
  9445. {
  9446. return errMsg;
  9447. }
  9448. #endregion
  9449. }
  9450. #endregion
  9451. #region 结束工序 添加成品数据 删除在产产品数据
  9452. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  9453. {
  9454. #region 添加成品数据 删除在产产品数据
  9455. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  9456. finishedProduct.BarCode = productionData.Barcode;
  9457. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  9458. if (!string.IsNullOrEmpty(errMsg))
  9459. {
  9460. return errMsg;
  9461. }
  9462. InProductionEntity delInProductionEntity = new InProductionEntity();
  9463. delInProductionEntity.BarCode = productionData.Barcode;
  9464. // 执行删除 在产数据
  9465. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  9466. // 执行失败
  9467. if (!string.IsNullOrEmpty(errMsg))
  9468. {
  9469. return errMsg;
  9470. }
  9471. #endregion
  9472. }
  9473. #endregion
  9474. }
  9475. #endregion
  9476. #region 更新注浆明细上的冷补标识
  9477. if (productionData.IsLengBu == 1)
  9478. {
  9479. oracleTrConn.ExecuteNonQuery(@"
  9480. UPDATE tp_pm_groutingdailydetail SET ISLENGBU = '1'
  9481. WHERE BARCODE = :BARCODE ",
  9482. new OracleParameter[] {
  9483. new OracleParameter(":BARCODE", productionData.Barcode)
  9484. });
  9485. }
  9486. #endregion
  9487. #region 写入检验标识 CheckFlag 用于计件 xuwei 2020-04-21
  9488. oracleTrConn.ExecuteNonQuery(@"
  9489. UPDATE
  9490. TP_PM_PRODUCTIONDATA SET CHECKFLAG = :CHECKFLAG
  9491. WHERE
  9492. PRODUCTIONDATAID = :PRODUCTIONDATAID
  9493. ",
  9494. new OracleParameter[] {
  9495. new OracleParameter(":CHECKFLAG",productionData.CheckFlag),
  9496. new OracleParameter(":PRODUCTIONDATAID",productionDataID)
  9497. }
  9498. );
  9499. #endregion
  9500. }
  9501. return errMsg;
  9502. }
  9503. /// <summary>
  9504. /// 添加装配
  9505. /// </summary>
  9506. /// <param name="oracleTrConn">数据连接</param>
  9507. /// <param name="procedure">工序对象</param>
  9508. /// <param name="productionDataEntitys">生产数据集</param>
  9509. /// <param name="sUserInfo">用户基本信息</param>
  9510. /// <returns>string</returns>
  9511. private static string AddAssemblePDA(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  9512. {
  9513. try
  9514. {
  9515. string errMsg = "";
  9516. // 获得账务日期
  9517. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  9518. // 本批采集的批次号
  9519. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  9520. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  9521. foreach (ProductionDataEntity productionData in productionDataEntitys)
  9522. {
  9523. bool RejectToReject = false;
  9524. if (string.IsNullOrEmpty(productionData.Barcode))
  9525. {
  9526. throw new Exception("传入的条码号为空");
  9527. }
  9528. int goodsID = Constant.INT_IS_ZERO;
  9529. string goodsCode = string.Empty;
  9530. string goodsName = string.Empty;
  9531. // 注浆者工号
  9532. string groutingUserCode = string.Empty;
  9533. // 次品标识
  9534. bool substandardFlag = false;
  9535. #region 校验条码有效性
  9536. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  9537. if (!string.IsNullOrEmpty(errMsg))
  9538. {
  9539. // 编辑重烧时,会提示不可到达;编辑次品时,会提示已经报废
  9540. //if (productionData.ProductionDataID == 0)
  9541. //if (!errMsg.Contains("次品"))
  9542. return errMsg;
  9543. }
  9544. #endregion
  9545. int isInProduction = 1;
  9546. #region 修改条码
  9547. if (productionData.ProductionDataID > 0) //表示编辑条码
  9548. {
  9549. #region 验证改判有效期(注销)
  9550. //// 前台已有相关验证,但还是产生了超期改判,后台保存前增加验证。
  9551. //string sqlString = "select pdin.createtime from tp_pm_productiondatain pdin where pdin.productiondataid = " + productionData.ProductionDataID;
  9552. //DateTime createtime = Convert.ToDateTime(oracleTrConn.GetSqlResultToObj(sqlString)).Date;
  9553. //// 参数验证用服务端当前设置
  9554. //sqlString = "SELECT sst.settingvalue\n" +
  9555. //" FROM tp_mst_systemsetting sst\n" +
  9556. //" WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  9557. //" AND sst.settingcode = 'S_PM_009'";
  9558. //string strValue = oracleTrConn.GetSqlResultToStr(sqlString);
  9559. //int days = 0;
  9560. //int pDays = 0;
  9561. //if (int.TryParse(strValue, out pDays))
  9562. //{
  9563. // days = pDays;
  9564. //}
  9565. //if (days != 0 && createtime <= DateTime.Now.Date.AddDays(-days))
  9566. //{
  9567. // return string.Format(Messages.MSG_S_PM_009, createtime.ToString("yyyy-MM-dd"), days.ToString(), createtime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  9568. //}
  9569. #endregion
  9570. //
  9571. string sqlOPTimeStamp = "";
  9572. OracleParameter[] parmetersSql = null;
  9573. #region 验证在产时间戳
  9574. if (productionData.OPTimeStampPDA == null) // 表示PC端,因为只有安卓端才给此数据字段给值
  9575. {
  9576. sqlOPTimeStamp = @"select
  9577. 1
  9578. from TP_PM_InProduction
  9579. where
  9580. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp = :OPTimeStamp
  9581. union
  9582. select
  9583. 0
  9584. from Tp_Pm_Inproductiontrash
  9585. where
  9586. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp = :OPTimeStamp ";
  9587. parmetersSql = new OracleParameter[]
  9588. {
  9589. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, productionData.OPTimeStamp, ParameterDirection.Input),
  9590. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9591. };
  9592. }
  9593. else
  9594. {
  9595. sqlOPTimeStamp = @"select
  9596. 1
  9597. from TP_PM_InProduction
  9598. where
  9599. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')
  9600. union
  9601. select
  9602. 0
  9603. from Tp_Pm_Inproductiontrash
  9604. where
  9605. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')";
  9606. parmetersSql = new OracleParameter[]
  9607. {
  9608. new OracleParameter(":OPTimeStamp", OracleDbType.NVarchar2, productionData.OPTimeStampPDA, ParameterDirection.Input),
  9609. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9610. };
  9611. }
  9612. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlOPTimeStamp, parmetersSql);
  9613. if (returnDataset != null
  9614. && returnDataset.Tables[0].Rows.Count == 0)
  9615. {
  9616. return "数据已经被修改,请重新进行编辑";
  9617. }
  9618. isInProduction = Convert.ToInt32(returnDataset.Tables[0].Rows[0][0]);
  9619. #endregion
  9620. //如果原来是 次品 / 废品 xuwei modify 2019-12-13 加入 废品识别
  9621. if (productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  9622. ||
  9623. productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  9624. )
  9625. {
  9626. //改为 次品 废品 xuwei modify 2019-12-13 加入废品识别
  9627. if (productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  9628. ||
  9629. productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  9630. )
  9631. {
  9632. // 删除生产数据及相关表与报损表
  9633. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9634. if (!string.IsNullOrEmpty(errMsg))
  9635. {
  9636. return errMsg;
  9637. }
  9638. RejectToReject = true;
  9639. } //改为不是 次品 废品 xuwei modify 2019-12-13 加入废品识别
  9640. else if (productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Reject.GetHashCode()
  9641. ||
  9642. productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Waste.GetHashCode()
  9643. )
  9644. {
  9645. // 删除生产数据及相关表与报损表
  9646. errMsg = DeleteSubstandardToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9647. if (!string.IsNullOrEmpty(errMsg))
  9648. {
  9649. return errMsg;
  9650. }
  9651. }
  9652. }
  9653. else
  9654. {
  9655. // 原来产品分级不是次品
  9656. errMsg = DeleteNormalToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9657. if (!string.IsNullOrEmpty(errMsg))
  9658. {
  9659. return errMsg;
  9660. }
  9661. }
  9662. }
  9663. else // wangx 2016-12-13 防止同时两个人新建数据,加判断条件
  9664. {
  9665. string sqlCurrrentProcedure = @"select Flowprocedureid from tp_pm_inproduction where BarCode=:BarCode";
  9666. OracleParameter[] parmetersSql = null;
  9667. parmetersSql = new OracleParameter[]
  9668. {
  9669. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9670. };
  9671. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlCurrrentProcedure, parmetersSql);
  9672. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 begin
  9673. //if (returnDataset != null
  9674. // && returnDataset.Tables[0].Rows.Count > 0)
  9675. //{
  9676. // if (Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID)
  9677. // {
  9678. // return "【此条码生产数据已被修改,请重开画面后再扫描】";
  9679. // }
  9680. //}
  9681. if (returnDataset == null ||
  9682. returnDataset.Tables.Count == 0 ||
  9683. returnDataset.Tables[0].Rows.Count == 0 ||
  9684. Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID
  9685. )
  9686. {
  9687. return "【此条码生产数据已被修改,请重新扫描此条码】";
  9688. }
  9689. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 end
  9690. }
  9691. #endregion
  9692. //2022年2月22日10:54:32 by feiy modify 若产品分级为次品时,productionData.ProductionDefects必须有值
  9693. //暂时来解决登记是次品,但无缺陷明细的情况
  9694. if ((productionData.ProductionDefects == null || productionData.ProductionDefects.Count <= 0) && productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  9695. {
  9696. return "登记是次品,必须登记缺陷";
  9697. }
  9698. // 查询新插入的生产数据ID
  9699. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  9700. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  9701. int productionDataID = 0;
  9702. if (!string.IsNullOrEmpty(idStr))
  9703. {
  9704. productionDataID = int.Parse(idStr);
  9705. }
  9706. else
  9707. {
  9708. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9709. }
  9710. int? ClassesSettingID = null;//班次配置ID
  9711. #region 添加生产者数据
  9712. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  9713. if (!string.IsNullOrEmpty(errMsg))
  9714. {
  9715. return errMsg;
  9716. }
  9717. #endregion
  9718. #region 添加生产数据
  9719. #region 属性赋值
  9720. productionData.ClassesSettingID = ClassesSettingID;
  9721. productionData.ProductionDataID = Convert.ToInt32(idStr);
  9722. productionData.CentralizedBatchNo = centralizedBatchNo;
  9723. productionData.ProductionLineID = procedure.ProductionLineID;
  9724. productionData.ProductionLineCode = procedure.ProductionlineCode;
  9725. productionData.ProductionLineName = procedure.ProductionlineName;
  9726. productionData.CompleteProcedureID = procedure.ProcedureID;
  9727. productionData.ProcedureCode = procedure.ProcedureCode;
  9728. productionData.ProcedureName = procedure.ProcedureName;
  9729. productionData.ProcedureModel = procedure.ProcedureModel;
  9730. productionData.ModelType = procedure.ModelType;
  9731. productionData.NodeType = procedure.NodeType;
  9732. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  9733. // 重烧
  9734. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  9735. {
  9736. //productionData.GoodsLevelID = null;
  9737. //productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  9738. productionData.IsReFire = (int)Constant.ReFireFlag.No;//产品分级的时候,并不标记,走过重烧第一个结点之后,更新此字段
  9739. }
  9740. // 次品 废品 xuwei 2019-12-13 加入 废品识别
  9741. else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject
  9742. ||
  9743. productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste
  9744. )
  9745. {
  9746. //productionData.GoodsLevelID = null;
  9747. substandardFlag = true;
  9748. }
  9749. // 查询新插入的生产数据ID
  9750. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  9751. // {
  9752. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  9753. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  9754. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  9755. // {
  9756. ////// string sqlReFire = @"select
  9757. ////// isrefire
  9758. ////// from tp_pm_inproduction where barcode=:barcode
  9759. ////// union
  9760. ////// select
  9761. ////// isrefire
  9762. ////// from TP_PM_InProductionTrash where barcode=:barcode
  9763. ////// ";
  9764. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  9765. ////// new OracleParameter(":barcode", productionData.Barcode),
  9766. ////// };
  9767. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  9768. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  9769. ////// {
  9770. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  9771. ////// }
  9772. // }
  9773. productionData.OrganizationID = procedure.OrganizationID;
  9774. productionData.GoodsID = goodsID;
  9775. productionData.GoodsCode = goodsCode;
  9776. productionData.GoodsName = goodsName;
  9777. productionData.GoodsLevelID = productionData.GoodsLevelID;
  9778. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9779. //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  9780. //{
  9781. // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  9782. //}
  9783. //else
  9784. //{
  9785. // productionData.GoodsEnding = null;
  9786. //}
  9787. #endregion
  9788. string OutSpecialRepairflag = "0";//干补标识
  9789. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9790. errMsg = AddFinishCheckProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9791. if (!string.IsNullOrEmpty(errMsg))
  9792. {
  9793. return errMsg;
  9794. }
  9795. #endregion
  9796. //#region 添加生产者数据
  9797. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  9798. //if (!string.IsNullOrEmpty(errMsg))
  9799. //{
  9800. // return errMsg;
  9801. //}
  9802. //#endregion
  9803. #region 条码有缺陷
  9804. #region 是次品 添加废弃产品
  9805. string ResponProcedureidStr = "";
  9806. if (substandardFlag)
  9807. {
  9808. #region 修改在产产品数据的当前工序,防止直接报损在产工序没有改过来,记录的是上一个工序
  9809. string updateInInProductionForScrap = @"Update tp_pm_inproduction
  9810. set FlowProcedureID=:flowProcedureID,ProcedureID=:flowProcedureID where barcode=:barcode";
  9811. List<OracleParameter> paras = new List<OracleParameter>();
  9812. paras.Add(new OracleParameter(":barcode", productionData.Barcode));
  9813. paras.Add(new OracleParameter(":flowProcedureID", procedure.ProcedureID));
  9814. oracleTrConn.ExecuteNonQuery(updateInInProductionForScrap, paras.ToArray());
  9815. #endregion
  9816. #region 添加废弃产品
  9817. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  9818. #region 属性赋值
  9819. scrapProduct.BarCode = productionData.Barcode;
  9820. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  9821. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  9822. scrapProduct.ScrapDate = accountDate;
  9823. scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  9824. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  9825. scrapProduct.Auditor = sUserInfo.UserID;
  9826. scrapProduct.AuditlDate = accountDate;
  9827. scrapProduct.AccountDate = accountDate;
  9828. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  9829. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9830. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  9831. // 查询新插入的废弃ID
  9832. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  9833. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9834. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9835. scrapProduct.ScrapType = 1;
  9836. scrapProduct.IsQualityStatistics = 1;//新加的,因为这个报损方法是共通的,用于区别是哪里传进去的
  9837. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  9838. #endregion
  9839. if (!RejectToReject) //不是次品到次品 wangxin 20150417
  9840. {
  9841. // 保存报废
  9842. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  9843. }
  9844. else
  9845. {
  9846. if (isInProduction == 1)
  9847. {
  9848. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  9849. }
  9850. else
  9851. {
  9852. // 保存报废
  9853. errMsg = AddScrapProductRejectToReject(oracleTrConn, scrapProduct, sUserInfo);
  9854. }
  9855. }
  9856. //不是次品到次品 wangxin 20150417
  9857. // 保存失败
  9858. if (!string.IsNullOrEmpty(errMsg))
  9859. {
  9860. return errMsg;
  9861. }
  9862. #endregion
  9863. }
  9864. #endregion
  9865. // 存在缺陷 插入缺陷表
  9866. if (productionData.ProductionDefects != null)
  9867. {
  9868. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  9869. {
  9870. #region 保存缺陷
  9871. productionDefect.ProductionDataID = productionDataID;
  9872. productionDefect.BarCode = productionData.Barcode;
  9873. productionDefect.ProductionLineID = procedure.ProductionLineID;
  9874. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  9875. productionDefect.ProductionLineName = procedure.ProductionlineName;
  9876. productionDefect.ProcedureID = procedure.ProcedureID;
  9877. productionDefect.ProcedureCode = procedure.ProcedureCode;
  9878. productionDefect.ProcedureName = procedure.ProcedureName;
  9879. productionDefect.UserID = productionData.UserID;
  9880. productionDefect.UserCode = productionData.UserCode;
  9881. productionDefect.UserName = productionData.UserName;
  9882. productionDefect.GoodsID = productionData.GoodsID;
  9883. productionDefect.GoodsCode = productionData.GoodsCode;
  9884. productionDefect.GoodsName = productionData.GoodsName;
  9885. productionData.Remarks = productionData.Remarks;
  9886. productionDefect.ScrapResponFlag
  9887. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  9888. // 保存缺陷
  9889. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  9890. if (!string.IsNullOrEmpty(errMsg))
  9891. {
  9892. return errMsg;
  9893. }
  9894. #endregion
  9895. #region 是次品 添加废弃责任工序
  9896. if (substandardFlag)
  9897. {
  9898. //if (productionDefect.DefectProcedureID != null)
  9899. {
  9900. #region 添加责任工序
  9901. ResponProcedureEntity responProce = new ResponProcedureEntity();
  9902. //// 查询新插入的废弃ID
  9903. //string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  9904. //string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9905. #region 属性赋值
  9906. responProce.BarCode = productionData.Barcode;
  9907. responProce.ProductionDataID = productionDataID;
  9908. responProce.ProductionLineID = productionDefect.ProductionLineID;
  9909. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  9910. responProce.ProductionLineName = productionDefect.ProductionLineName;
  9911. responProce.ProcedureID = productionDefect.DefectProcedureID;
  9912. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  9913. responProce.ProcedureName = productionDefect.DefectProcedureName;
  9914. responProce.UserID = productionDefect.DefectUserID;
  9915. responProce.UserCode = productionDefect.DefectUserCode;
  9916. responProce.UserName = productionDefect.DefectUserName;
  9917. responProce.Remarks = productionDefect.Remarks;
  9918. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9919. #endregion
  9920. // 保存责任工序
  9921. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  9922. // 保存失败
  9923. if (!string.IsNullOrEmpty(errMsg))
  9924. {
  9925. return errMsg;
  9926. }
  9927. #endregion
  9928. }
  9929. }
  9930. #endregion
  9931. }
  9932. }
  9933. #endregion
  9934. #region 条码是次品 删除在产产品数据
  9935. if (substandardFlag)
  9936. {
  9937. #region 删除在产产品数据
  9938. InProductionEntity delInProductionEntity = new InProductionEntity();
  9939. delInProductionEntity.BarCode = productionData.Barcode;
  9940. delInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9941. delInProductionEntity.ProductionDataID = productionDataID;
  9942. delInProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9943. delInProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9944. // 执行删除 在产数据
  9945. errMsg = DeletePDAInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  9946. // 执行失败
  9947. if (!string.IsNullOrEmpty(errMsg))
  9948. {
  9949. return errMsg;
  9950. }
  9951. #endregion
  9952. }
  9953. #endregion
  9954. #region 条码不是次品
  9955. if (!substandardFlag)
  9956. {
  9957. #region 中间工序/重烧 修改在产产品数据
  9958. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin
  9959. || procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  9960. || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  9961. {
  9962. #region 修改在产产品数据的当前工序
  9963. InProductionEntity inProductionEntity = new InProductionEntity();
  9964. inProductionEntity.BarCode = productionData.Barcode;
  9965. //流程工序
  9966. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  9967. // 当前工序
  9968. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9969. inProductionEntity.ProcedureID = procedure.ProcedureID;
  9970. //生产数据ID
  9971. inProductionEntity.ProductionDataID = productionDataID;
  9972. // 工序模型
  9973. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  9974. // 工序类别
  9975. inProductionEntity.ModelType = procedure.ModelType;
  9976. // 生产工号
  9977. inProductionEntity.UserID = productionData.UserID;
  9978. // 重烧
  9979. inProductionEntity.IsReFire = productionData.IsReFire;
  9980. // 缺陷
  9981. inProductionEntity.DefectFlag = productionData.DefectFlag;
  9982. // 产品分级
  9983. inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  9984. // 返工工序ID
  9985. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  9986. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9987. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9988. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  9989. // 执行修改
  9990. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  9991. // 执行失败
  9992. if (!string.IsNullOrEmpty(errMsg))
  9993. {
  9994. return errMsg;
  9995. }
  9996. #endregion
  9997. }
  9998. #endregion
  9999. #region 结束工序 添加成品数据 删除在产产品数据
  10000. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  10001. {
  10002. #region 添加成品数据 删除在产产品数据
  10003. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  10004. finishedProduct.BarCode = productionData.Barcode;
  10005. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  10006. if (!string.IsNullOrEmpty(errMsg))
  10007. {
  10008. return errMsg;
  10009. }
  10010. InProductionEntity delInProductionEntity = new InProductionEntity();
  10011. delInProductionEntity.BarCode = productionData.Barcode;
  10012. // 执行删除 在产数据
  10013. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  10014. // 执行失败
  10015. if (!string.IsNullOrEmpty(errMsg))
  10016. {
  10017. return errMsg;
  10018. }
  10019. #endregion
  10020. }
  10021. #endregion
  10022. }
  10023. #endregion
  10024. #region 写入检验标识 CheckFlag 用于计件 xuwei 2020-04-21
  10025. oracleTrConn.ExecuteNonQuery(@"
  10026. UPDATE
  10027. TP_PM_PRODUCTIONDATA SET CHECKFLAG = :CHECKFLAG
  10028. WHERE
  10029. PRODUCTIONDATAID = :PRODUCTIONDATAID
  10030. ",
  10031. new OracleParameter[] {
  10032. new OracleParameter(":CHECKFLAG",productionData.CheckFlag),
  10033. new OracleParameter(":PRODUCTIONDATAID",productionDataID)
  10034. }
  10035. );
  10036. #endregion
  10037. #region 变更商标
  10038. if (!string.IsNullOrEmpty(productionData.NewLogoID))
  10039. {
  10040. string oldLogoID = oracleTrConn.GetSqlResultToStr(@"
  10041. SELECT GDD.LOGOID
  10042. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  10043. WHERE GDD.BARCODE = :BARCODE ",
  10044. new OracleParameter[]
  10045. {
  10046. new OracleParameter("BARCODE", productionData.Barcode)
  10047. });
  10048. if (!oldLogoID.Equals(productionData.NewLogoID))
  10049. {
  10050. int returnRows = SetBarCodeLogo(oracleTrConn, productionData.Barcode, productionData.NewLogoID.ToNullableInt32().Value, sUserInfo);
  10051. string canSaveIdnrks = ",";
  10052. if (productionData.CanSaveIdnrkList != null && productionData.CanSaveIdnrkList.Count > 0)
  10053. {
  10054. foreach (IdnrkEntity entity in productionData.CanSaveIdnrkList)
  10055. {
  10056. canSaveIdnrks += entity.IDNRK + ",";
  10057. }
  10058. }
  10059. string delSql = @"
  10060. DELETE FROM TP_PM_BARCODEIDNRKREL
  10061. WHERE BARCODE = :BARCODE
  10062. AND INSTR(:CANSAVEIDNRKS, ','|| IDNRK ||',') = 0 ";
  10063. returnRows += oracleTrConn.ExecuteNonQuery(delSql, new OracleParameter[]
  10064. {
  10065. new OracleParameter(":BARCODE", productionData.Barcode),
  10066. new OracleParameter(":CANSAVEIDNRKS", canSaveIdnrks)
  10067. });
  10068. }
  10069. }
  10070. #endregion
  10071. #region 写入组件和报损组件
  10072. if (productionData.IdnrkList != null && productionData.IdnrkList.Count > 0)
  10073. {
  10074. string barcodeidnrkrel = @"
  10075. INSERT INTO TP_PM_BARCODEIDNRKREL
  10076. (PROCEDUREID,
  10077. BARCODE,
  10078. MATNR,
  10079. IDNRK,
  10080. MEINS,
  10081. MENGE,
  10082. IDNRKNAME,
  10083. IDNRKONLYCODE,
  10084. CHARG,
  10085. LGORT,
  10086. ACCOUNTID,
  10087. CREATEUSERID,
  10088. UPDATEUSERID)
  10089. VALUES
  10090. (:PROCEDUREID,
  10091. :BARCODE,
  10092. :MATNR,
  10093. :IDNRK,
  10094. :MEINS,
  10095. :MENGE,
  10096. :IDNRKNAME,
  10097. :IDNRKONLYCODE,
  10098. :CHARG,
  10099. :LGORT,
  10100. :ACCOUNTID,
  10101. :USERID,
  10102. :USERID) ";
  10103. foreach (IdnrkEntity entity in productionData.IdnrkList)
  10104. {
  10105. oracleTrConn.ExecuteNonQuery(barcodeidnrkrel,
  10106. new OracleParameter[]
  10107. {
  10108. new OracleParameter(":PROCEDUREID", procedure.ProcedureID),
  10109. new OracleParameter(":BARCODE", productionData.Barcode),
  10110. new OracleParameter(":MATNR", entity.MATNR),
  10111. new OracleParameter(":IDNRK", entity.IDNRK),
  10112. new OracleParameter(":MEINS", entity.MEINS),
  10113. new OracleParameter(":MENGE", entity.MENGE),
  10114. new OracleParameter(":IDNRKNAME", entity.MAKTX),
  10115. new OracleParameter(":IDNRKONLYCODE", entity.IDNRKONLYCODE),
  10116. new OracleParameter(":CHARG", entity.CHARG),
  10117. new OracleParameter(":LGORT", entity.LGORT),
  10118. new OracleParameter(":ACCOUNTID", sUserInfo.AccountID),
  10119. new OracleParameter(":USERID", sUserInfo.UserID)
  10120. });
  10121. }
  10122. }
  10123. if (productionData.IdnrkScrapList != null && productionData.IdnrkScrapList.Count > 0)
  10124. {
  10125. //取大件小件-》成本中心
  10126. string costcenter = string.Empty;
  10127. string costcenterName = string.Empty;
  10128. string sqlStrings = @"
  10129. SELECT SUBSTR(GT.GOODSTYPECODE, 0, 6) AS GOODSTYPECODE
  10130. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  10131. INNER JOIN TP_MST_GOODS G
  10132. ON G.GOODSID = GDD.GOODSID
  10133. INNER JOIN TP_MST_GOODSTYPE GT
  10134. ON GT.GOODSTYPEID = G.GOODSTYPEID
  10135. WHERE BARCODE = :BARCODE ";
  10136. OracleParameter[] parmetersSql = new OracleParameter[]
  10137. {
  10138. new OracleParameter(":BARCODE", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  10139. };
  10140. DataTable dtGoodsTypeCode = oracleTrConn.GetSqlResultToDt(sqlStrings, parmetersSql);
  10141. if (dtGoodsTypeCode.Rows.Count > 0)
  10142. {
  10143. //大件
  10144. if (dtGoodsTypeCode.Rows[0]["GOODSTYPECODE"] + "" == "001001")
  10145. {
  10146. costcenter = "5000600206";
  10147. costcenterName = "成检部-一科(大件)";
  10148. }
  10149. else if (dtGoodsTypeCode.Rows[0]["GOODSTYPECODE"] + "" == "001002")
  10150. {
  10151. //小件
  10152. costcenter = "5000600106";
  10153. costcenterName = "成检部-一科(小件)";
  10154. }
  10155. }
  10156. string barcodeidnrkscrap = @"
  10157. INSERT INTO TP_PM_BARCODEIDNRKSCRAP
  10158. (PROCEDUREID,
  10159. BARCODE,
  10160. MATNR,
  10161. IDNRK,
  10162. MEINS,
  10163. MENGE,
  10164. IDNRKNAME,
  10165. IDNRKONLYCODE,
  10166. CHARG,
  10167. LGORT,
  10168. ACCOUNTID,
  10169. COSTCENTER,
  10170. COSTCENTERNAME,
  10171. CREATEUSERID,
  10172. UPDATEUSERID)
  10173. VALUES
  10174. (:PROCEDUREID,
  10175. :BARCODE,
  10176. :MATNR,
  10177. :IDNRK,
  10178. :MEINS,
  10179. :MENGE,
  10180. :IDNRKNAME,
  10181. :IDNRKONLYCODE,
  10182. :CHARG,
  10183. :LGORT,
  10184. :ACCOUNTID,
  10185. :COSTCENTER,
  10186. :COSTCENTERNAME,
  10187. :USERID,
  10188. :USERID) ";
  10189. foreach (IdnrkScrapEntity entity in productionData.IdnrkScrapList)
  10190. {
  10191. oracleTrConn.ExecuteNonQuery(barcodeidnrkscrap,
  10192. new OracleParameter[]
  10193. {
  10194. new OracleParameter(":PROCEDUREID", procedure.ProcedureID),
  10195. new OracleParameter(":BARCODE", productionData.Barcode),
  10196. new OracleParameter(":MATNR", entity.MATNR),
  10197. new OracleParameter(":IDNRK", entity.IDNRK),
  10198. new OracleParameter(":MEINS", entity.MEINS),
  10199. new OracleParameter(":MENGE", entity.MENGE),
  10200. new OracleParameter(":IDNRKNAME", entity.MAKTX),
  10201. new OracleParameter(":IDNRKONLYCODE", entity.IDNRKONLYCODE),
  10202. new OracleParameter(":CHARG", entity.CHARG),
  10203. new OracleParameter(":LGORT", entity.LGORT),
  10204. new OracleParameter(":COSTCENTER", costcenter),
  10205. new OracleParameter(":COSTCENTERNAME", costcenterName),
  10206. new OracleParameter(":ACCOUNTID", sUserInfo.AccountID),
  10207. new OracleParameter(":USERID", sUserInfo.UserID)
  10208. });
  10209. }
  10210. }
  10211. #endregion
  10212. }
  10213. return errMsg;
  10214. }
  10215. catch (Exception ex)
  10216. {
  10217. throw ex;
  10218. }
  10219. }
  10220. /// <summary>
  10221. /// 编辑后删除生产数据
  10222. /// </summary>
  10223. /// <param name="productionDataID">生产数据ID</param>
  10224. /// <returns>int</returns>
  10225. public static string DeleteSubstandardToSubstandardByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  10226. {
  10227. int deleteRow = 0;
  10228. try
  10229. {
  10230. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  10231. where TP_PM_DefectMissedResponsible.Productiondefectid in
  10232. (
  10233. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10234. )";
  10235. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  10236. where
  10237. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  10238. ";
  10239. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  10240. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  10241. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  10242. where TP_PM_DefectResponsible.Productiondefectid in
  10243. (
  10244. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10245. )";
  10246. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  10247. where TP_PM_DefectImage.Productiondefectid in
  10248. (
  10249. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10250. )";
  10251. // string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  10252. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  10253. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  10254. OracleParameter[] paras = new OracleParameter[]{
  10255. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  10256. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10257. };
  10258. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  10259. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10260. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10261. };
  10262. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10263. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  10264. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  10265. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  10266. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  10267. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  10268. // 有错误
  10269. if (deleteRow == 0)
  10270. {
  10271. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10272. }
  10273. return null;
  10274. }
  10275. catch (Exception ex)
  10276. {
  10277. throw ex;
  10278. }
  10279. }
  10280. /// <summary>
  10281. /// 编辑后删除生产数据
  10282. /// </summary>
  10283. /// <param name="productionDataID">生产数据ID</param>
  10284. /// <returns>int</returns>
  10285. public static string DeleteSubstandardToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  10286. {
  10287. int deleteRow = 0;
  10288. try
  10289. {
  10290. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  10291. where TP_PM_DefectMissedResponsible.Productiondefectid in
  10292. (
  10293. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10294. )";
  10295. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  10296. where
  10297. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  10298. ";
  10299. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  10300. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  10301. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  10302. where TP_PM_DefectResponsible.Productiondefectid in
  10303. (
  10304. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10305. )";
  10306. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  10307. where TP_PM_DefectImage.Productiondefectid in
  10308. (
  10309. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10310. )";
  10311. //string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  10312. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  10313. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  10314. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  10315. string sqlInsert = @"insert into TP_PM_InProduction
  10316. (
  10317. BarCode,
  10318. ProductionLineID,
  10319. ProductionLineCode,
  10320. ProductionLineName,
  10321. ProcedureModel,
  10322. ModelType,
  10323. DefectFlag,
  10324. ReworkProcedureID,
  10325. IsPublicBody,
  10326. IsReFire,
  10327. GoodsLevelID,
  10328. GoodsLevelTypeID,
  10329. GoodsID,
  10330. GoodsCode,
  10331. GoodsName,
  10332. UserID,
  10333. GroutingDailyID,
  10334. GroutingDailyDetailID,
  10335. GroutingDate,
  10336. GroutingLineID,
  10337. GroutingLineCode,
  10338. GroutingLineName,
  10339. GMouldTypeID,
  10340. CanManyTimes,
  10341. GroutingLineDetailID,
  10342. GroutingMouldCode,
  10343. MouldCode,
  10344. GroutingUserID,
  10345. GroutingUserCode,
  10346. GroutingNum,
  10347. Remarks,
  10348. KilnID,
  10349. KilnCode,
  10350. KilnName,
  10351. KilnCarID,
  10352. KilnCarCode,
  10353. KilnCarName,
  10354. KilnCarBatchNo,
  10355. KilnCarPosition,
  10356. AccountID,
  10357. ValueFlag,
  10358. CreateTime,
  10359. CreateUserID,
  10360. UpdateTime,
  10361. UpdateUserID,
  10362. OPTimeStamp,
  10363. SpecialRepairflag,
  10364. FlowProcedureID,
  10365. FlowProcedureTime,
  10366. ProcedureID,
  10367. ProcedureTime,
  10368. ProductionDataID,
  10369. logoid, ISREWORKFLAG, SEMICHECKID
  10370. )
  10371. select
  10372. BarCode,
  10373. ProductionLineID,
  10374. ProductionLineCode,
  10375. ProductionLineName,
  10376. ProcedureModel,
  10377. ModelType,
  10378. DefectFlag,
  10379. ReworkProcedureID,
  10380. IsPublicBody,
  10381. IsReFire,
  10382. GoodsLevelID,
  10383. GoodsLevelTypeID,
  10384. GoodsID,
  10385. GoodsCode,
  10386. GoodsName,
  10387. UserID,
  10388. GroutingDailyID,
  10389. GroutingDailyDetailID,
  10390. GroutingDate,
  10391. GroutingLineID,
  10392. GroutingLineCode,
  10393. GroutingLineName,
  10394. GMouldTypeID,
  10395. CanManyTimes,
  10396. GroutingLineDetailID,
  10397. GroutingMouldCode,
  10398. MouldCode,
  10399. GroutingUserID,
  10400. GroutingUserCode,
  10401. GroutingNum,
  10402. Remarks,
  10403. KilnID,
  10404. KilnCode,
  10405. KilnName,
  10406. KilnCarID,
  10407. KilnCarCode,
  10408. KilnCarName,
  10409. KilnCarBatchNo,
  10410. KilnCarPosition,
  10411. AccountID,
  10412. ValueFlag,
  10413. CreateTime,
  10414. CreateUserID,
  10415. UpdateTime,
  10416. UpdateUserID,
  10417. OPTimeStamp,
  10418. SpecialRepairflag,
  10419. FlowProcedureID,
  10420. FlowProcedureTime,
  10421. ProcedureID,
  10422. ProcedureTime,
  10423. ProductionDataID,
  10424. logoid, ISREWORKFLAG, SEMICHECKID
  10425. from TP_PM_InProductionTrash
  10426. where barcode=:barcode
  10427. ";
  10428. string sqlDelete = @"delete from TP_PM_InProductionTrash where barcode=:barcode";
  10429. OracleParameter[] paras = new OracleParameter[]{
  10430. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  10431. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10432. };
  10433. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  10434. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10435. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10436. };
  10437. OracleParameter[] Existparas = new OracleParameter[]{
  10438. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10439. };
  10440. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10441. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  10442. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  10443. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  10444. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  10445. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  10446. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, Existparas);
  10447. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  10448. {
  10449. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsert, Existparas);
  10450. }
  10451. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelete, Existparas);
  10452. // 有错误
  10453. if (deleteRow == 0)
  10454. {
  10455. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10456. }
  10457. return null;
  10458. }
  10459. catch (Exception ex)
  10460. {
  10461. throw ex;
  10462. }
  10463. }
  10464. /// <summary>
  10465. /// 编辑后删除生产数据
  10466. /// </summary>
  10467. /// <param name="productionDataID">生产数据ID</param>
  10468. /// <returns>int</returns>
  10469. public static string DeleteNormalToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  10470. {
  10471. int deleteRow = 0;
  10472. try
  10473. {
  10474. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  10475. where TP_PM_DefectMissedResponsible.Productiondefectid in
  10476. (
  10477. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10478. )";
  10479. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  10480. where
  10481. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  10482. ";
  10483. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  10484. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  10485. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  10486. where TP_PM_DefectResponsible.Productiondefectid in
  10487. (
  10488. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10489. )";
  10490. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  10491. where TP_PM_DefectImage.Productiondefectid in
  10492. (
  10493. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10494. )";
  10495. OracleParameter[] paras = new OracleParameter[]{
  10496. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  10497. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10498. };
  10499. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10500. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  10501. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  10502. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  10503. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  10504. // 有错误
  10505. if (deleteRow == 0)
  10506. {
  10507. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10508. }
  10509. return null;
  10510. }
  10511. catch (Exception ex)
  10512. {
  10513. throw ex;
  10514. }
  10515. }
  10516. /// <summary>
  10517. /// 保存条码信息
  10518. /// </summary>
  10519. /// <param name="procedureID">工序ID</param>
  10520. /// <param name="productionDataEntitys">生产数据集</param>
  10521. /// <param name="sUserInfo">用户基本信息</param>
  10522. /// <returns>string</returns>
  10523. public static string AddCheckBarcodePDA(int procedureID, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  10524. {
  10525. string errMsg = "";
  10526. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10527. try
  10528. {
  10529. oracleTrConn.Connect();
  10530. #region 校验接口是否重复调用
  10531. if (productionDataEntitys.Length > 0 && CMNModuleLogic.CheckDataDouble(productionDataEntitys[0].DataKey, sUserInfo))
  10532. {
  10533. //string.Format(Messages.MSG_HR_W006, "成检", "保存")
  10534. return "DataDouble";
  10535. }
  10536. #endregion
  10537. #region 查询工序信息
  10538. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  10539. #endregion
  10540. #region 标准检验(半成品)
  10541. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal)
  10542. {
  10543. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  10544. }
  10545. #endregion
  10546. #region 标准检验(冷补)xuwei add 2020-06-11
  10547. if (procedure.ModelType == (int)Constant.ProcedureModelType.ColdPatch)
  10548. {
  10549. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  10550. }
  10551. #endregion
  10552. #region 标准检验(成检交接)xuwei add 2020-06-11
  10553. if (procedure.ModelType == (int)Constant.ProcedureModelType.PreQualityStatistics)
  10554. {
  10555. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  10556. }
  10557. #endregion
  10558. #region 成品检验
  10559. else if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  10560. {
  10561. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  10562. }
  10563. #endregion
  10564. #region 装配
  10565. else if (procedure.ModelType == (int)Constant.ProcedureModelType.Assemble)
  10566. {
  10567. errMsg = AddAssemblePDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  10568. }
  10569. #endregion
  10570. #region 半检 xuwei add 2019-12-13
  10571. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SemiQualityStatistics)
  10572. {
  10573. //fubin add 2020-07-16 查询当前条码是否交坯
  10574. //string deliverflag = oracleTrConn.GetSqlResultToStr(
  10575. // "SELECT gd.deliverflag FROM tp_pm_groutingdailydetail gd WHERE gd.barcode = :barcode",
  10576. // new OracleParameter[] { new OracleParameter(":barcode", productionDataEntitys[0].Barcode) });
  10577. DataTable gData = oracleTrConn.GetSqlResultToDt(
  10578. "SELECT gd.GROUTINGLINECODE, gd.deliverflag FROM tp_pm_groutingdailydetail gd WHERE gd.barcode = :barcode",
  10579. new OracleParameter[] { new OracleParameter(":barcode", productionDataEntitys[0].Barcode) });
  10580. string deliverflag = "";
  10581. string glCode = "";
  10582. if (gData != null || gData.Rows.Count > 0)
  10583. {
  10584. deliverflag = gData.Rows[0]["deliverflag"] + "";
  10585. glCode = gData.Rows[0]["GROUTINGLINECODE"] + "";
  10586. }
  10587. if ("0".Equals(deliverflag))
  10588. {
  10589. // 88[3#交坯] 92[2#-3#交坯] 118[1#-3#交坯]
  10590. // xuwei modify 2021-03-08
  10591. //默认三车间
  10592. int p_id = 88;
  10593. //A开头是一车间
  10594. if (glCode.StartsWith("A")) p_id = 118;
  10595. //B开头是二车间
  10596. if (glCode.StartsWith("B")) p_id = 92;
  10597. //xuwei add 2020-07-10 半成品一检未交坯的做交坯处理
  10598. //交坏节点
  10599. ProcedureEntity procedureSendBody = GetProcedurByID(oracleTrConn, p_id);
  10600. //拼装条码信息
  10601. DataTable barcodeTable = new DataTable();
  10602. barcodeTable.Columns.Add("LogoID");
  10603. barcodeTable.Columns.Add("BarCode");
  10604. barcodeTable.Columns.Add("Remarks");
  10605. barcodeTable.Columns.Add("UserID");
  10606. barcodeTable.Columns.Add("UserCode");
  10607. barcodeTable.Columns.Add("UserName");
  10608. barcodeTable.Columns.Add("GroutingUserCode");
  10609. barcodeTable.Columns.Add("IsPDA");
  10610. barcodeTable.Columns.Add("IsPublicBody");
  10611. for (int i = 0; i < productionDataEntitys.Length; i++)
  10612. {
  10613. DataRow dr = barcodeTable.NewRow();
  10614. dr["BarCode"] = productionDataEntitys[i].Barcode;
  10615. dr["UserID"] = productionDataEntitys[i].UserID;
  10616. dr["UserCode"] = productionDataEntitys[i].UserCode;
  10617. dr["UserName"] = productionDataEntitys[i].UserName;
  10618. dr["GroutingUserCode"] = productionDataEntitys[i].GroutingUserCode;
  10619. dr["IsPDA"] = "1";
  10620. dr["IsPublicBody"] = "0";
  10621. barcodeTable.Rows.Add(dr);
  10622. }
  10623. //AddNormalWorkPiece(oracleTrConn, procedureSendBody, barcodeTable, sUserInfo, out int goodsID, out string goodsCode, out string goodsName, out string groutingUserCode, true);
  10624. DataTable ddd = AddWorkPiece(p_id, barcodeTable, sUserInfo, out ProcedureEntity procedureInfo);
  10625. if (ddd != null && ddd.Rows.Count > 0)
  10626. {
  10627. errMsg = ddd.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] + "";
  10628. }
  10629. //xuwei end
  10630. }
  10631. //xuwei modify 2020-07-10 交坯成功才执行操作,只加了条件限制
  10632. if (string.IsNullOrEmpty(errMsg))
  10633. {
  10634. procedure = GetProcedurByID(oracleTrConn, procedureID);
  10635. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  10636. }
  10637. }
  10638. #endregion
  10639. #region 入窑前检验
  10640. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKilnCheck)
  10641. {
  10642. errMsg = AddIntoKilnCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  10643. }
  10644. #endregion
  10645. #region 成检交接(注销)
  10646. //else if (procedure.ModelType == (int)Constant.ProcedureModelType.PreQualityStatistics)
  10647. //{
  10648. // errMsg = AddPreQualityStatisticsPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  10649. //}
  10650. #endregion
  10651. // 没有错误 提交事务
  10652. if (string.IsNullOrEmpty(errMsg))
  10653. {
  10654. oracleTrConn.Commit();
  10655. }
  10656. }
  10657. catch (Exception ex)
  10658. {
  10659. oracleTrConn.Rollback();
  10660. throw ex;
  10661. }
  10662. finally
  10663. {
  10664. // 释放资源
  10665. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10666. {
  10667. oracleTrConn.Disconnect();
  10668. }
  10669. }
  10670. return errMsg;
  10671. }
  10672. /// <summary>
  10673. /// 3#半检一检时的交坯操作
  10674. /// </summary>
  10675. /// <param name="data"></param>
  10676. /// <param name="sUserInfo"></param>
  10677. /// <returns></returns>
  10678. public static ServiceResultEntity SemiQualityStatisticsDeliver3(Dictionary<string, object> data, SUserInfo sUserInfo)
  10679. {
  10680. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10681. ServiceResultEntity sre = new ServiceResultEntity();
  10682. try
  10683. {
  10684. oracleTrConn.Connect();
  10685. DataTable gData = oracleTrConn.GetSqlResultToDt(
  10686. "SELECT gd.GROUTINGLINECODE, gd.deliverflag FROM tp_pm_groutingdailydetail gd WHERE gd.barcode = :barcode",
  10687. new OracleParameter[] { new OracleParameter(":barcode", data["Barcode"]) });
  10688. string errMsg = "";
  10689. string deliverflag = "";
  10690. string glCode = "";
  10691. if (gData != null || gData.Rows.Count > 0)
  10692. {
  10693. deliverflag = gData.Rows[0]["deliverflag"] + "";
  10694. glCode = gData.Rows[0]["GROUTINGLINECODE"] + "";
  10695. }
  10696. if ("0".Equals(deliverflag))
  10697. {
  10698. // 88[3#交坯] 92[2#-3#交坯] 118[1#-3#交坯]
  10699. // xuwei modify 2021-03-08
  10700. //默认三车间
  10701. int p_id = 88;
  10702. //A开头是一车间
  10703. if (glCode.StartsWith("A")) p_id = 118;
  10704. //B开头是二车间
  10705. if (glCode.StartsWith("B")) p_id = 92;
  10706. //xuwei add 2020-07-10 半成品一检未交坯的做交坯处理
  10707. //交坏节点
  10708. ProcedureEntity procedureSendBody = GetProcedurByID(oracleTrConn, p_id);
  10709. //拼装条码信息
  10710. DataTable barcodeTable = new DataTable();
  10711. barcodeTable.Columns.Add("LogoID");
  10712. barcodeTable.Columns.Add("BarCode");
  10713. barcodeTable.Columns.Add("Remarks");
  10714. barcodeTable.Columns.Add("UserID");
  10715. barcodeTable.Columns.Add("UserCode");
  10716. barcodeTable.Columns.Add("UserName");
  10717. barcodeTable.Columns.Add("GroutingUserCode");
  10718. barcodeTable.Columns.Add("IsPDA");
  10719. barcodeTable.Columns.Add("IsPublicBody");
  10720. DataRow dr = barcodeTable.NewRow();
  10721. dr["BarCode"] = data["Barcode"];
  10722. dr["UserID"] = data["UserID"];
  10723. dr["UserCode"] = data["UserCode"];
  10724. dr["UserName"] = data["UserName"];
  10725. //dr["GroutingUserCode"] = data["GroutingUserCode"];
  10726. dr["IsPDA"] = "1";
  10727. dr["IsPublicBody"] = "0";
  10728. barcodeTable.Rows.Add(dr);
  10729. //AddWorkPiece(p_id, barcodeTable, sUserInfo, out ProcedureEntity procedureInfo);
  10730. DataTable ddd = AddWorkPiece(p_id, barcodeTable, sUserInfo, out ProcedureEntity procedureInfo);
  10731. if (ddd != null && ddd.Rows.Count > 0)
  10732. {
  10733. errMsg = ddd.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] + "";
  10734. if (!string.IsNullOrEmpty(errMsg))
  10735. {
  10736. sre.OtherStatus = -1;
  10737. sre.Message = errMsg;
  10738. }
  10739. return sre;
  10740. }
  10741. //xuwei end
  10742. }
  10743. else
  10744. {
  10745. sre.OtherStatus = -1;
  10746. sre.Message = data["Barcode"] + "已交坯,不能重复交坯";
  10747. return sre;
  10748. }
  10749. oracleTrConn.Commit();
  10750. }
  10751. catch (Exception ex)
  10752. {
  10753. oracleTrConn.Rollback();
  10754. throw ex;
  10755. }
  10756. finally
  10757. {
  10758. // 释放资源
  10759. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10760. {
  10761. oracleTrConn.Disconnect();
  10762. }
  10763. }
  10764. return sre;
  10765. }
  10766. /// <summary>
  10767. /// 成检交接
  10768. /// </summary>
  10769. /// <param name="oracleTrConn">数据连接</param>
  10770. /// <param name="procedure">工序对象</param>
  10771. /// <param name="productionDataEntitys">生产数据集</param>
  10772. /// <param name="sUserInfo">用户基本信息</param>
  10773. /// <returns>string</returns>
  10774. private static string AddPreQualityStatisticsPDA(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  10775. {
  10776. string errMsg = "";
  10777. // 获得账务日期
  10778. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  10779. // 本批采集的批次号
  10780. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  10781. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  10782. foreach (ProductionDataEntity productionData in productionDataEntitys)
  10783. {
  10784. bool RejectToReject = false;
  10785. if (string.IsNullOrEmpty(productionData.Barcode))
  10786. {
  10787. throw new Exception("传入的条码号为空");
  10788. }
  10789. int goodsID = Constant.INT_IS_ZERO;
  10790. string goodsCode = string.Empty;
  10791. string goodsName = string.Empty;
  10792. // 注浆者工号
  10793. string groutingUserCode = string.Empty;
  10794. bool substandardFlag = false;
  10795. #region 校验条码有效性(可以重复提交,不校验)
  10796. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  10797. //if (!string.IsNullOrEmpty(errMsg))
  10798. //{
  10799. // // 编辑重烧时,会提示不可到达;编辑次品时,会提示已经报废
  10800. // //if (productionData.ProductionDataID == 0)
  10801. // //if (!errMsg.Contains("次品"))
  10802. // return errMsg;
  10803. //}
  10804. #endregion
  10805. int isInProduction = 1;
  10806. #region 修改条码
  10807. if (productionData.ProductionDataID > 0) //表示编辑条码
  10808. {
  10809. #region 验证改判有效期
  10810. // 前台已有相关验证,但还是产生了超期改判,后台保存前增加验证。
  10811. string sqlString = "select pdin.createtime from tp_pm_productiondatain pdin where pdin.productiondataid = " + productionData.ProductionDataID;
  10812. DateTime createtime = Convert.ToDateTime(oracleTrConn.GetSqlResultToObj(sqlString)).Date;
  10813. // 参数验证用服务端当前设置
  10814. sqlString = "SELECT sst.settingvalue\n" +
  10815. " FROM tp_mst_systemsetting sst\n" +
  10816. " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  10817. " AND sst.settingcode = 'S_PM_009'";
  10818. string strValue = oracleTrConn.GetSqlResultToStr(sqlString);
  10819. int days = 0;
  10820. int pDays = 0;
  10821. if (int.TryParse(strValue, out pDays))
  10822. {
  10823. days = pDays;
  10824. }
  10825. if (days != 0 && createtime <= DateTime.Now.Date.AddDays(-days))
  10826. {
  10827. return string.Format(Messages.MSG_S_PM_009, createtime.ToString("yyyy-MM-dd"), days.ToString(), createtime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  10828. }
  10829. #endregion
  10830. //
  10831. string sqlOPTimeStamp = "";
  10832. OracleParameter[] parmetersSql = null;
  10833. #region 验证在产时间戳
  10834. if (productionData.OPTimeStampPDA == null) // 表示PC端,因为只有安卓端才给此数据字段给值
  10835. {
  10836. sqlOPTimeStamp = @"select
  10837. 1
  10838. from TP_PM_InProduction
  10839. where
  10840. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp = :OPTimeStamp
  10841. union
  10842. select
  10843. 0
  10844. from Tp_Pm_Inproductiontrash
  10845. where
  10846. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp = :OPTimeStamp ";
  10847. parmetersSql = new OracleParameter[]
  10848. {
  10849. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, productionData.OPTimeStamp, ParameterDirection.Input),
  10850. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  10851. };
  10852. }
  10853. else
  10854. {
  10855. sqlOPTimeStamp = @"select
  10856. 1
  10857. from TP_PM_InProduction
  10858. where
  10859. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')
  10860. union
  10861. select
  10862. 0
  10863. from Tp_Pm_Inproductiontrash
  10864. where
  10865. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')";
  10866. parmetersSql = new OracleParameter[]
  10867. {
  10868. new OracleParameter(":OPTimeStamp", OracleDbType.NVarchar2, productionData.OPTimeStampPDA, ParameterDirection.Input),
  10869. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  10870. };
  10871. }
  10872. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlOPTimeStamp, parmetersSql);
  10873. if (returnDataset != null
  10874. && returnDataset.Tables[0].Rows.Count == 0)
  10875. {
  10876. return "数据已经被修改,请重新进行编辑";
  10877. }
  10878. isInProduction = Convert.ToInt32(returnDataset.Tables[0].Rows[0][0]);
  10879. #endregion
  10880. //如果原来是 次品 / 废品 xuwei modify 2019-12-13 加入 废品识别
  10881. if (productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  10882. ||
  10883. productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  10884. )
  10885. {
  10886. //改为 次品 废品 xuwei modify 2019-12-13 加入废品识别
  10887. if (productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  10888. ||
  10889. productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  10890. )
  10891. {
  10892. // 删除生产数据及相关表与报损表
  10893. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  10894. if (!string.IsNullOrEmpty(errMsg))
  10895. {
  10896. return errMsg;
  10897. }
  10898. RejectToReject = true;
  10899. } //改为不是 次品 废品 xuwei modify 2019-12-13 加入废品识别
  10900. else if (productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Reject.GetHashCode()
  10901. ||
  10902. productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Waste.GetHashCode()
  10903. )
  10904. {
  10905. // 删除生产数据及相关表与报损表
  10906. errMsg = DeleteSubstandardToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  10907. if (!string.IsNullOrEmpty(errMsg))
  10908. {
  10909. return errMsg;
  10910. }
  10911. }
  10912. }
  10913. else
  10914. {
  10915. // 原来产品分级不是次品
  10916. errMsg = DeleteNormalToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  10917. if (!string.IsNullOrEmpty(errMsg))
  10918. {
  10919. return errMsg;
  10920. }
  10921. }
  10922. }
  10923. else // wangx 2016-12-13 防止同时两个人新建数据,加判断条件
  10924. {
  10925. string sqlCurrrentProcedure = @"select Flowprocedureid from tp_pm_inproduction where BarCode=:BarCode";
  10926. OracleParameter[] parmetersSql = null;
  10927. parmetersSql = new OracleParameter[]
  10928. {
  10929. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  10930. };
  10931. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlCurrrentProcedure, parmetersSql);
  10932. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 begin
  10933. //if (returnDataset != null
  10934. // && returnDataset.Tables[0].Rows.Count > 0)
  10935. //{
  10936. // if (Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID)
  10937. // {
  10938. // return "【此条码生产数据已被修改,请重开画面后再扫描】";
  10939. // }
  10940. //}
  10941. if (returnDataset == null ||
  10942. returnDataset.Tables.Count == 0 ||
  10943. returnDataset.Tables[0].Rows.Count == 0 ||
  10944. Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID
  10945. )
  10946. {
  10947. return "【此条码生产数据已被修改,请重新扫描此条码】";
  10948. }
  10949. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 end
  10950. }
  10951. #endregion
  10952. // 查询新插入的生产数据ID
  10953. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  10954. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  10955. int productionDataID = 0;
  10956. if (!string.IsNullOrEmpty(idStr))
  10957. {
  10958. productionDataID = int.Parse(idStr);
  10959. }
  10960. else
  10961. {
  10962. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10963. }
  10964. int? ClassesSettingID = null;//班次配置ID
  10965. #region 添加生产者数据
  10966. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  10967. if (!string.IsNullOrEmpty(errMsg))
  10968. {
  10969. return errMsg;
  10970. }
  10971. #endregion
  10972. #region 添加生产数据
  10973. #region 属性赋值
  10974. productionData.ClassesSettingID = ClassesSettingID;
  10975. productionData.ProductionDataID = Convert.ToInt32(idStr);
  10976. productionData.CentralizedBatchNo = centralizedBatchNo;
  10977. productionData.ProductionLineID = procedure.ProductionLineID;
  10978. productionData.ProductionLineCode = procedure.ProductionlineCode;
  10979. productionData.ProductionLineName = procedure.ProductionlineName;
  10980. productionData.CompleteProcedureID = procedure.ProcedureID;
  10981. productionData.ProcedureCode = procedure.ProcedureCode;
  10982. productionData.ProcedureName = procedure.ProcedureName;
  10983. productionData.ProcedureModel = procedure.ProcedureModel;
  10984. productionData.ModelType = procedure.ModelType;
  10985. productionData.NodeType = procedure.NodeType;
  10986. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  10987. // 重烧
  10988. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  10989. {
  10990. //productionData.GoodsLevelID = null;
  10991. //productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  10992. productionData.IsReFire = (int)Constant.ReFireFlag.No;//产品分级的时候,并不标记,走过重烧第一个结点之后,更新此字段
  10993. }
  10994. // 次品 废品 xuwei 2019-12-13 加入 废品识别
  10995. else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject
  10996. ||
  10997. productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste
  10998. )
  10999. {
  11000. //productionData.GoodsLevelID = null;
  11001. substandardFlag = true;
  11002. }
  11003. // 查询新插入的生产数据ID
  11004. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  11005. // {
  11006. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  11007. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  11008. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  11009. // {
  11010. ////// string sqlReFire = @"select
  11011. ////// isrefire
  11012. ////// from tp_pm_inproduction where barcode=:barcode
  11013. ////// union
  11014. ////// select
  11015. ////// isrefire
  11016. ////// from TP_PM_InProductionTrash where barcode=:barcode
  11017. ////// ";
  11018. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  11019. ////// new OracleParameter(":barcode", productionData.Barcode),
  11020. ////// };
  11021. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  11022. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  11023. ////// {
  11024. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  11025. ////// }
  11026. // }
  11027. productionData.OrganizationID = procedure.OrganizationID;
  11028. productionData.GoodsID = goodsID;
  11029. productionData.GoodsCode = goodsCode;
  11030. productionData.GoodsName = goodsName;
  11031. productionData.GoodsLevelID = productionData.GoodsLevelID;
  11032. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  11033. //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  11034. //{
  11035. // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  11036. //}
  11037. //else
  11038. //{
  11039. // productionData.GoodsEnding = null;
  11040. //}
  11041. #endregion
  11042. string OutSpecialRepairflag = "0";//干补标识
  11043. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  11044. //errMsg = AddFinishCheckProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  11045. if (!string.IsNullOrEmpty(errMsg))
  11046. {
  11047. return errMsg;
  11048. }
  11049. #endregion
  11050. #region 中间工序/重烧 修改在产产品数据
  11051. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  11052. || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  11053. {
  11054. #region 修改在产产品数据的当前工序
  11055. InProductionEntity inProductionEntity = new InProductionEntity();
  11056. inProductionEntity.BarCode = productionData.Barcode;
  11057. //流程工序
  11058. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  11059. // 当前工序
  11060. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  11061. inProductionEntity.ProcedureID = procedure.ProcedureID;
  11062. //生产数据ID
  11063. inProductionEntity.ProductionDataID = productionDataID;
  11064. // 工序模型
  11065. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  11066. // 工序类别
  11067. inProductionEntity.ModelType = procedure.ModelType;
  11068. // 生产工号
  11069. inProductionEntity.UserID = productionData.UserID;
  11070. // 重烧
  11071. inProductionEntity.IsReFire = productionData.IsReFire;
  11072. // 缺陷
  11073. inProductionEntity.DefectFlag = productionData.DefectFlag;
  11074. // 产品分级
  11075. inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  11076. // 返工工序ID
  11077. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  11078. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  11079. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  11080. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  11081. // 执行修改
  11082. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  11083. // 执行失败
  11084. if (!string.IsNullOrEmpty(errMsg))
  11085. {
  11086. return errMsg;
  11087. }
  11088. #endregion
  11089. }
  11090. #endregion
  11091. //#region 写入检验标识 CheckFlag 用于计件 xuwei 2020-04-21
  11092. //oracleTrConn.ExecuteNonQuery(@"
  11093. // UPDATE
  11094. // TP_PM_PRODUCTIONDATA SET CHECKFLAG = :CHECKFLAG
  11095. // WHERE
  11096. // PRODUCTIONDATAID = :PRODUCTIONDATAID
  11097. // ",
  11098. // new OracleParameter[] {
  11099. // new OracleParameter(":CHECKFLAG",productionData.CheckFlag),
  11100. // new OracleParameter(":PRODUCTIONDATAID",productionDataID)
  11101. // }
  11102. //);
  11103. //#endregion
  11104. }
  11105. return errMsg;
  11106. }
  11107. #endregion
  11108. /// <summary>
  11109. /// 校验干补条码有效
  11110. /// </summary>
  11111. /// <param name="oracleTrConn">连接对象</param>
  11112. /// <param name="procedureID">工序ID</param>
  11113. /// <param name="barcode">条码</param>
  11114. /// <param name="goodsID">返回的产品ID</param>
  11115. /// <param name="goodsCode">返回的产品Code</param>
  11116. /// <param name="goodsName">返回的产品名称</param>
  11117. /// <param name="groutingUserID">返回的注浆者ID</param>
  11118. /// <returns>string</returns>
  11119. /// <remarks>
  11120. /// 袁新成 2015.3.27 新建
  11121. /// </remarks>
  11122. private static string CheckDryRepairBarcode(IDBTransaction oracleTrConn,
  11123. int procedureID,
  11124. string barcode,
  11125. out int goodsID,
  11126. out string goodsCode,
  11127. out string goodsName,
  11128. out string groutingUserCode,
  11129. SUserInfo sUserInfo
  11130. )
  11131. {
  11132. try
  11133. {
  11134. OracleParameter[] paras = new OracleParameter[]{
  11135. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  11136. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  11137. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  11138. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  11139. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  11140. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  11141. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  11142. };
  11143. oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  11144. if (!"null".Equals(paras[3].Value + ""))
  11145. {
  11146. goodsID = Convert.ToInt32(paras[3].Value + "");
  11147. }
  11148. else
  11149. {
  11150. goodsID = 0;
  11151. }
  11152. goodsCode = paras[4].Value + "";
  11153. goodsName = paras[5].Value + "";
  11154. if (!"null".Equals(paras[6].Value + ""))
  11155. {
  11156. groutingUserCode = paras[6].Value + "";
  11157. }
  11158. else
  11159. {
  11160. groutingUserCode = null;
  11161. }
  11162. if ("null".Equals(paras[2].Value + ""))
  11163. {
  11164. return null;
  11165. }
  11166. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  11167. }
  11168. catch (Exception ex)
  11169. {
  11170. throw ex;
  11171. }
  11172. }
  11173. /// <summary>
  11174. /// 干补标准计件
  11175. /// </summary>
  11176. /// <param name="oracleTrConn">数据连接对象</param>
  11177. /// <param name="procedure">工序对象</param>
  11178. /// <param name="barcodeTable">条码信息</param>
  11179. /// <param name="sUserInfo">用户基本信息</param>
  11180. /// <param name="goodsID">返回的产品ID</param>
  11181. /// <param name="goodsCode">返回的产品Code</param>
  11182. /// <param name="goodsName">返回的产品名称</param>
  11183. /// <param name="groutingUserID">返回的注浆者ID</param>
  11184. /// <returns>string</returns>
  11185. /// <remarks>
  11186. /// 袁新成 2015.3.26 新建
  11187. /// </remarks>
  11188. private static string AddDryRepairWorkPiece(IDBTransaction oracleTrConn,
  11189. ProcedureEntity procedure,
  11190. DataTable barcodeTable,
  11191. SUserInfo sUserInfo,
  11192. out int goodsID,
  11193. out string goodsCode,
  11194. out string goodsName,
  11195. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  11196. {
  11197. try
  11198. {
  11199. int deleteRow = 0;
  11200. goodsID = Constant.INT_IS_ZERO;
  11201. goodsCode = null;
  11202. goodsName = null;
  11203. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  11204. // 获得账务日期
  11205. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  11206. string errMsg = string.Empty;
  11207. // 本批采集的批次号
  11208. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  11209. // 条码信息
  11210. string logoName_Temp = "";
  11211. string logoCode_Temp = "";
  11212. string groutingdate_Temp = "";
  11213. foreach (DataRow barcodeRow in barcodeTable.Rows)
  11214. {
  11215. // 条码
  11216. string barcode = barcodeRow["Barcode"].ToString();
  11217. if (string.IsNullOrEmpty(barcode))
  11218. {
  11219. throw new Exception("传入的条码号为空");
  11220. }
  11221. // 生产工号
  11222. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  11223. // 生产工号
  11224. string workUserCode = barcodeRow["UserCode"].ToString();
  11225. //#region 校验条码有效性
  11226. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  11227. //if (!string.IsNullOrEmpty(errMsg))
  11228. //{
  11229. // return errMsg;
  11230. //}
  11231. //#endregion
  11232. if (procedure.CollectType == 1)
  11233. {
  11234. #region 校验条码有效性
  11235. errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  11236. if (!string.IsNullOrEmpty(errMsg))
  11237. {
  11238. logoName = "";
  11239. logoCode = "";
  11240. groutingdate = "";
  11241. return errMsg;
  11242. }
  11243. #endregion
  11244. }
  11245. else
  11246. {
  11247. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  11248. tp_pm_groutingdailydetail.goodscode,
  11249. tp_pm_groutingdailydetail.goodsname,
  11250. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  11251. tp_pm_groutingdailydetail.groutingdate,
  11252. tp_mst_logo.logoid,
  11253. tp_mst_logo.logocode,
  11254. tp_mst_logo.logoname
  11255. from tp_pm_groutingdailydetail
  11256. left join tp_mst_logo
  11257. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  11258. where tp_pm_groutingdailydetail.barcode=:barcode
  11259. ";
  11260. OracleParameter[] paras = new OracleParameter[] {
  11261. new OracleParameter(":barcode",barcode),
  11262. };
  11263. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  11264. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  11265. {
  11266. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  11267. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  11268. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  11269. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  11270. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  11271. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  11272. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  11273. logoName_Temp = logoName;
  11274. logoCode_Temp = logoCode;
  11275. groutingdate_Temp = groutingdate;
  11276. }
  11277. }
  11278. #region 数据处理
  11279. #region 处理废弃数据并转回收数据为在产数据
  11280. string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  11281. OracleParameter[] queryparas = new OracleParameter[]{
  11282. new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  11283. };
  11284. DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  11285. if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  11286. {
  11287. errMsg = "未设定干补等级";
  11288. logoName = "";
  11289. logoCode = "";
  11290. groutingdate = "";
  11291. return errMsg;
  11292. }
  11293. string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  11294. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  11295. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  11296. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  11297. UpdateUserID=:UpdateUserID
  11298. where BarCode=:barcode
  11299. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  11300. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  11301. */
  11302. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  11303. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  11304. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  11305. UpdateUserID=:UpdateUserID
  11306. where BarCode=:barcode
  11307. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  11308. and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  11309. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  11310. new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  11311. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  11312. new OracleParameter(":barcode1",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  11313. new OracleParameter(":SpecialRepairUserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  11314. new OracleParameter(":SpecialRepairUserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  11315. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  11316. };
  11317. //modify wangx 20150623
  11318. OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  11319. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  11320. };
  11321. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  11322. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  11323. string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  11324. oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  11325. //modify wangx 20150623 end
  11326. #region
  11327. //第五步,插入干补工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  11328. // 查询新插入的生产数据ID
  11329. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  11330. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  11331. int productionDataID = 0;
  11332. if (!string.IsNullOrEmpty(idStr))
  11333. {
  11334. productionDataID = int.Parse(idStr);
  11335. }
  11336. else
  11337. {
  11338. logoName = "";
  11339. logoCode = "";
  11340. groutingdate = "";
  11341. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  11342. }
  11343. int? ClassesSettingID = null;//班次配置ID
  11344. #region 第五步 添加生产者数据
  11345. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  11346. if (!string.IsNullOrEmpty(errMsg))
  11347. {
  11348. logoName = "";
  11349. logoCode = "";
  11350. groutingdate = "";
  11351. return errMsg;
  11352. }
  11353. #endregion
  11354. ProductionDataEntity productionData = new ProductionDataEntity();
  11355. #region 属性赋值
  11356. productionData.ClassesSettingID = ClassesSettingID;
  11357. productionData.ProductionDataID = Convert.ToInt32(idStr);
  11358. productionData.Barcode = barcode;
  11359. productionData.CentralizedBatchNo = centralizedBatchNo;
  11360. productionData.ProductionLineID = procedure.ProductionLineID;
  11361. productionData.ProductionLineCode = procedure.ProductionlineCode;
  11362. productionData.ProductionLineName = procedure.ProductionlineName;
  11363. productionData.CompleteProcedureID = procedure.ProcedureID;
  11364. productionData.ProcedureCode = procedure.ProcedureCode;
  11365. productionData.ProcedureName = procedure.ProcedureName;
  11366. productionData.ProcedureModel = procedure.ProcedureModel;
  11367. productionData.ModelType = procedure.ModelType;
  11368. productionData.NodeType = procedure.NodeType;
  11369. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  11370. productionData.ReworkProcedureID = null;
  11371. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  11372. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  11373. //设置干补标识,产品分级类别=9干补
  11374. productionData.GoodsLevelTypeID = 9;
  11375. productionData.GoodsLevelID = int.Parse(goodsLevelID);
  11376. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  11377. productionData.OrganizationID = procedure.OrganizationID;
  11378. productionData.GoodsID = goodsID;
  11379. productionData.GoodsCode = goodsCode;
  11380. productionData.GoodsName = goodsName;
  11381. productionData.UserID = workUserID;
  11382. productionData.UserCode = barcodeRow["UserCode"].ToString();
  11383. productionData.UserName = barcodeRow["UserName"].ToString();
  11384. productionData.PieceType = procedure.PieceType;
  11385. if (barcodeRow["LogoID"].ToString() != "")
  11386. {
  11387. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  11388. }
  11389. string sqlReFire = @"select
  11390. isrefire,
  11391. logoid
  11392. from tp_pm_inproduction where barcode=:barcode
  11393. union
  11394. select
  11395. isrefire,
  11396. logoid
  11397. from TP_PM_InProductionTrash where barcode=:barcode
  11398. union
  11399. select
  11400. isrefire,
  11401. logoid
  11402. from TP_PM_FinishedProduct where barcode=:barcode ";
  11403. OracleParameter[] ReFireparas = new OracleParameter[] {
  11404. new OracleParameter(":barcode",barcode),
  11405. };
  11406. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  11407. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  11408. {
  11409. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  11410. {
  11411. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  11412. }
  11413. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  11414. {
  11415. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  11416. }
  11417. }
  11418. #endregion 属性赋值
  11419. string OutSpecialRepairflag = "0";//干补标识
  11420. productionData.SpecialRepairflag = 1;
  11421. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  11422. if (!string.IsNullOrEmpty(errMsg))
  11423. {
  11424. logoName = "";
  11425. logoCode = "";
  11426. groutingdate = "";
  11427. return errMsg;
  11428. }
  11429. #endregion
  11430. //第二步,回收站中数据回到在产中,设置干补标识。
  11431. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  11432. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  11433. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  11434. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  11435. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  11436. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  11437. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  11438. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  11439. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  11440. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  11441. KILNID, KILNCODE, KILNNAME, KILNCARID,
  11442. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  11443. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  11444. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  11445. :PROCEDUREMODEL, :MODELTYPE, REWORKPROCEDUREID,
  11446. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  11447. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  11448. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  11449. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  11450. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  11451. CREATEUSERID, UPDATETIME, :UpdateUserID,
  11452. ISREFIRE, null, null, DEFECTFLAG,
  11453. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  11454. KILNID, KILNCODE, KILNNAME, KILNCARID,
  11455. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,1,FlowProcedureID ,
  11456. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  11457. from TP_PM_InProductionTrash where barcode=:barcode ";
  11458. OracleParameter[] InProductparas = new OracleParameter[]{
  11459. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  11460. // new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  11461. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  11462. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  11463. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  11464. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  11465. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  11466. };
  11467. //第三步,删除回收站中的条码
  11468. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  11469. OracleParameter[] TrashProductparas = new OracleParameter[]{
  11470. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  11471. };
  11472. //第四步,更新注浆表干补标识
  11473. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  11474. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  11475. // where barcode=:barcode)";
  11476. string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  11477. where barcode=:barcode";
  11478. OracleParameter[] GroutingProductparas = new OracleParameter[]{
  11479. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  11480. };
  11481. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  11482. // where barcode=:barcode ";
  11483. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  11484. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  11485. // };
  11486. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  11487. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  11488. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  11489. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  11490. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  11491. // 失败
  11492. if (deleteRow == Constant.INT_IS_ZERO)
  11493. {
  11494. logoName = "";
  11495. logoCode = "";
  11496. groutingdate = "";
  11497. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  11498. }
  11499. #endregion
  11500. //#region 第五步 添加生产者数据
  11501. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  11502. //if (!string.IsNullOrEmpty(errMsg))
  11503. //{
  11504. // return errMsg;
  11505. //}
  11506. //#endregion
  11507. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  11508. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  11509. OracleParameter[] Paras = new OracleParameter[] {
  11510. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11511. barcode,ParameterDirection.Input)
  11512. };
  11513. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11514. if (ds.Tables[0].Rows.Count == 0)
  11515. {
  11516. // 2 生产数据恢复到在产生产数据
  11517. sql = @"insert into tp_pm_productiondatain
  11518. (
  11519. ProductionDataID,
  11520. BarCode,
  11521. CentralizedBatchNo,
  11522. ProductionLineID,
  11523. ProductionLineCode,
  11524. ProductionLineName,
  11525. ProcedureID,
  11526. ProcedureCode,
  11527. ProcedureName,
  11528. ProcedureModel,
  11529. ModelType,
  11530. PieceType,
  11531. IsReworked,
  11532. NodeType,
  11533. IsPublicBody,
  11534. IsReFire,
  11535. islengbu,
  11536. GoodsLevelID,
  11537. GoodsLevelTypeID,
  11538. SpecialRepairFlag,
  11539. OrganizationID,
  11540. GoodsID,
  11541. GoodsCode,
  11542. GoodsName,
  11543. UserID,
  11544. UserCode,
  11545. UserName,
  11546. ClassesSettingID,
  11547. KilnID,
  11548. KilnCode,
  11549. KilnName,
  11550. KilnCarID,
  11551. KilnCarCode,
  11552. KilnCarName,
  11553. KilnCarBatchNo,
  11554. KilnCarPosition,
  11555. ReworkProcedureID,
  11556. ReworkProcedureCode,
  11557. ReworkProcedureName,
  11558. GroutingDailyID,
  11559. GroutingDailyDetailID,
  11560. GroutingLineID,
  11561. GroutingLineCode,
  11562. GroutingLineName,
  11563. GMouldTypeID,
  11564. CanManyTimes,
  11565. GroutingLineDetailID,
  11566. GroutingDate,
  11567. GroutingMouldCode,
  11568. MouldCode,
  11569. GroutingUserID,
  11570. GroutingUserCode,
  11571. GroutingNum,
  11572. Remarks,
  11573. AccountDate,
  11574. SettlementFlag,
  11575. AccountID,
  11576. ValueFlag,
  11577. CreateTime,
  11578. CreateUserID,
  11579. UpdateTime,
  11580. UpdateUserID,
  11581. OPTimeStamp,
  11582. TriggerFlag,
  11583. logoid,
  11584. BackOutTime,BackOutUserID,BackOutUserCode
  11585. )
  11586. select
  11587. ProductionDataID,
  11588. BarCode,
  11589. CentralizedBatchNo,
  11590. ProductionLineID,
  11591. ProductionLineCode,
  11592. ProductionLineName,
  11593. ProcedureID,
  11594. ProcedureCode,
  11595. ProcedureName,
  11596. ProcedureModel,
  11597. ModelType,
  11598. PieceType,
  11599. IsReworked,
  11600. NodeType,
  11601. IsPublicBody,
  11602. IsReFire,
  11603. islengbu,
  11604. GoodsLevelID,
  11605. GoodsLevelTypeID,
  11606. SpecialRepairFlag,
  11607. OrganizationID,
  11608. GoodsID,
  11609. GoodsCode,
  11610. GoodsName,
  11611. UserID,
  11612. UserCode,
  11613. UserName,
  11614. ClassesSettingID,
  11615. KilnID,
  11616. KilnCode,
  11617. KilnName,
  11618. KilnCarID,
  11619. KilnCarCode,
  11620. KilnCarName,
  11621. KilnCarBatchNo,
  11622. KilnCarPosition,
  11623. ReworkProcedureID,
  11624. ReworkProcedureCode,
  11625. ReworkProcedureName,
  11626. GroutingDailyID,
  11627. GroutingDailyDetailID,
  11628. GroutingLineID,
  11629. GroutingLineCode,
  11630. GroutingLineName,
  11631. GMouldTypeID,
  11632. CanManyTimes,
  11633. GroutingLineDetailID,
  11634. GroutingDate,
  11635. GroutingMouldCode,
  11636. MouldCode,
  11637. GroutingUserID,
  11638. GroutingUserCode,
  11639. GroutingNum,
  11640. Remarks,
  11641. AccountDate,
  11642. SettlementFlag,
  11643. AccountID,
  11644. ValueFlag,
  11645. CreateTime,
  11646. CreateUserID,
  11647. UpdateTime,
  11648. UpdateUserID,
  11649. OPTimeStamp,
  11650. 1,
  11651. logoid,
  11652. BackOutTime,BackOutUserID,BackOutUserCode
  11653. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  11654. ";
  11655. oracleTrConn.ExecuteNonQuery(sql, Paras);
  11656. }
  11657. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  11658. #endregion 数据处理
  11659. }
  11660. logoName = logoName_Temp;
  11661. logoCode = logoCode_Temp;
  11662. groutingdate = groutingdate_Temp;
  11663. return errMsg;
  11664. }
  11665. catch (Exception ex)
  11666. {
  11667. throw ex;
  11668. }
  11669. }
  11670. /// <summary>
  11671. /// 添加干补生产数据
  11672. /// </summary>
  11673. /// <param name="oracleTrConn">连接对象</param>
  11674. /// <param name="accountDate">账务日期</param>
  11675. /// <param name="productionData">生产数据</param>
  11676. /// <param name="sUserInfo">用户基本信息</param>
  11677. /// <returns>string</returns>
  11678. /// <remarks>
  11679. /// 袁新成 2015.04.1 新建
  11680. /// </remarks>
  11681. private static string AddDryRepairProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  11682. {
  11683. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  11684. string selectSql = "";
  11685. string returnVal = "";
  11686. //这地方连了两张表,为了成检的时候,次品在次新增
  11687. selectSql = @"select
  11688. GroutingDate,
  11689. GroutingUserID,
  11690. GroutingUserCode,
  11691. GroutingNum,
  11692. GroutingMouldCode,
  11693. MouldCode,
  11694. GroutingDailyID,
  11695. GroutingDailyDetailID,
  11696. GroutingLineID,
  11697. GroutingLineCode,
  11698. GroutingLineName,
  11699. GMouldTypeID,
  11700. CanManyTimes,
  11701. GroutingLineDetailID,
  11702. SpecialRepairflag
  11703. from tp_pm_inproduction where barcode=:barcode
  11704. union
  11705. select
  11706. GroutingDate,
  11707. GroutingUserID,
  11708. GroutingUserCode,
  11709. GroutingNum,
  11710. GroutingMouldCode,
  11711. MouldCode,
  11712. GroutingDailyID,
  11713. GroutingDailyDetailID,
  11714. GroutingLineID,
  11715. GroutingLineCode,
  11716. GroutingLineName,
  11717. GMouldTypeID,
  11718. CanManyTimes,
  11719. GroutingLineDetailID,
  11720. SpecialRepairflag
  11721. from TP_PM_InProductionTrash where barcode=:barcode
  11722. ";
  11723. OracleParameter[] selectparas = new OracleParameter[] {
  11724. new OracleParameter(":barcode",productionData.Barcode),
  11725. };
  11726. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  11727. if (dsGroutingProduct == null || dsGroutingProduct.Tables[0].Rows.Count == 0)
  11728. {
  11729. selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  11730. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  11731. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  11732. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  11733. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  11734. TP_PM_GroutingDailyDetail.MouldCode,
  11735. TP_PM_GroutingDailyDetail.GroutingDailyID,
  11736. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  11737. TP_PM_GroutingDailyDetail.GroutingLineID,
  11738. TP_PM_GroutingDailyDetail.GroutingLineCode,
  11739. TP_PM_GroutingDailyDetail.GroutingLineName,
  11740. TP_PM_GroutingDaily.GMouldTypeID,
  11741. TP_PM_GroutingDaily.CanManyTimes,
  11742. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  11743. TP_PM_GroutingDailyDetail.SpecialRepairflag
  11744. from TP_PM_GroutingDaily
  11745. left join TP_PM_GroutingDailyDetail
  11746. on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  11747. where TP_PM_GroutingDailyDetail.barcode=:barcode
  11748. ";
  11749. dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  11750. }
  11751. DateTime GroutingDate = new DateTime();
  11752. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  11753. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  11754. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  11755. {
  11756. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  11757. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  11758. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  11759. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  11760. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  11761. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  11762. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  11763. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  11764. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  11765. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  11766. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  11767. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  11768. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  11769. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  11770. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  11771. returnVal = SpecialRepairflag.ToString();
  11772. }
  11773. #endregion
  11774. #region 更新窑炉窑车属性
  11775. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  11776. {
  11777. DataSet ds = GetDryRepairKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  11778. if (ds != null)
  11779. {
  11780. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  11781. {
  11782. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  11783. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  11784. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  11785. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  11786. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  11787. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  11788. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  11789. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  11790. }
  11791. }
  11792. }
  11793. #endregion
  11794. #region SQL
  11795. string sql = "insert into tp_pm_productiondataIn"
  11796. + " (productiondataid,"
  11797. + " barcode,"
  11798. + " centralizedbatchno,"
  11799. + " productionlineid,"
  11800. + " productionlinecode,"
  11801. + " productionlinename,"
  11802. + " procedureid,"
  11803. + " procedurecode,"
  11804. + " procedurename,"
  11805. + " proceduremodel,"
  11806. + " modeltype,"
  11807. + " piecetype,"
  11808. + " isreworked,"
  11809. + " nodetype,"
  11810. + " ispublicbody,"
  11811. + " isrefire,"
  11812. + " organizationid,"
  11813. + " goodsid,"
  11814. + " goodscode,"
  11815. + " goodsname,"
  11816. + " userid,"
  11817. + " usercode,"
  11818. + " username,"
  11819. + " kilnid,"
  11820. + " kilncode,"
  11821. + " kilnname,"
  11822. + " kilncarid,"
  11823. + " kilncarcode,"
  11824. + " kilncarname,"
  11825. + " kilncarbatchno,"
  11826. + " kilncarposition,"
  11827. + " reworkprocedureid,"
  11828. + " reworkprocedurecode,"
  11829. + " reworkprocedurename,"
  11830. + " remarks,"
  11831. + " accountdate,"
  11832. + " accountid,"
  11833. + " GoodsLevelID,"
  11834. + " GoodsLevelTypeID,"
  11835. + " createuserid,"
  11836. + " updateuserid,"
  11837. + " GroutingDate,"
  11838. + " GroutingUserID,"
  11839. + " GroutingUserCode,"
  11840. + " GroutingNum,"
  11841. + " GroutingMouldCode,"
  11842. + " MouldCode,"
  11843. + "GroutingDailyID,"
  11844. + "GroutingDailyDetailID,"
  11845. + "GroutingLineID,"
  11846. + " GroutingLineCode,"
  11847. + "GroutingLineName,"
  11848. + "GMouldTypeID,"
  11849. + "CanManyTimes,"
  11850. + "GroutingLineDetailID,"
  11851. + "SpecialRepairflag,"
  11852. + "ClassesSettingID,"
  11853. + "LogoID"
  11854. + ")"
  11855. + " values"
  11856. + " (:productiondataid,"
  11857. + " :barcode,"
  11858. + " :centralizedbatchno,"
  11859. + " :productionlineid,"
  11860. + " :productionlinecode,"
  11861. + " :productionlinename,"
  11862. + " :procedureid,"
  11863. + " :procedurecode,"
  11864. + " :procedurename,"
  11865. + " :proceduremodel,"
  11866. + " :modeltype,"
  11867. + " :piecetype,"
  11868. + " :isreworked,"
  11869. + " :nodetype,"
  11870. + " :ispublicbody,"
  11871. + " :isrefire,"
  11872. + " :organizationid,"
  11873. + " :goodsid,"
  11874. + " :goodscode,"
  11875. + " :goodsname,"
  11876. + " :userid,"
  11877. + " :usercode,"
  11878. + " :username,"
  11879. + " :kilnid,"
  11880. + " :kilncode,"
  11881. + " :kilnname,"
  11882. + " :kilncarid,"
  11883. + " :kilncarcode,"
  11884. + " :kilncarname,"
  11885. + " :kilncarbatchno,"
  11886. + " :kilncarposition,"
  11887. + " :reworkprocedureid,"
  11888. + " :reworkprocedurecode,"
  11889. + " :reworkprocedurename,"
  11890. + " :remarks,"
  11891. + " :accountdata,"
  11892. + " :accountid,"
  11893. + " :GoodsLevelID,"
  11894. + " :GoodsLevelTypeID,"
  11895. + " :createuserid,"
  11896. + " :updateuserid,"
  11897. + " :groutingdate,"
  11898. + " :groutinguserid,"
  11899. + " :groutingusercode,"
  11900. + " :groutingnum,"
  11901. + " :groutingmouldcode,"
  11902. + " :mouldcode,"
  11903. + ":groutingdailyid,"
  11904. + ":groutingdailydetailid,"
  11905. + ":groutinglineid,"
  11906. + " :groutinglinecode,"
  11907. + ":groutinglinename,"
  11908. + ":gmouldtypeid,"
  11909. + ":canmanytimes,"
  11910. + ":groutinglinedetailid,"
  11911. + ":specialRepairflag,"
  11912. + ":classesSettingID,"
  11913. + ":logoID"
  11914. + ")";
  11915. #endregion
  11916. #region OracleParameter
  11917. OracleParameter[] paras = new OracleParameter[] {
  11918. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  11919. new OracleParameter(":barcode",productionData.Barcode),
  11920. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  11921. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  11922. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  11923. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  11924. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  11925. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  11926. new OracleParameter(":procedurename",productionData.ProcedureName),
  11927. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  11928. new OracleParameter(":modeltype",productionData.ModelType),
  11929. new OracleParameter(":piecetype",productionData.PieceType),
  11930. new OracleParameter(":isreworked",productionData.IsReworked),
  11931. new OracleParameter(":nodetype",productionData.NodeType),
  11932. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  11933. new OracleParameter(":isrefire",productionData.IsReFire),
  11934. new OracleParameter(":organizationid",productionData.OrganizationID),
  11935. new OracleParameter(":goodsid",productionData.GoodsID),
  11936. new OracleParameter(":goodscode",productionData.GoodsCode),
  11937. new OracleParameter(":goodsname",productionData.GoodsName),
  11938. new OracleParameter(":userid",productionData.UserID),
  11939. new OracleParameter(":usercode",productionData.UserCode),
  11940. new OracleParameter(":username",productionData.UserName),
  11941. new OracleParameter(":kilnid",productionData.KilnID),
  11942. new OracleParameter(":kilncode",productionData.KilnCode),
  11943. new OracleParameter(":kilnname",productionData.KilnName),
  11944. new OracleParameter(":kilncarid",productionData.KilnCarID),
  11945. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  11946. new OracleParameter(":kilncarname",productionData.KilnCarName),
  11947. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  11948. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  11949. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  11950. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  11951. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  11952. new OracleParameter(":remarks",productionData.Remarks),
  11953. new OracleParameter(":accountdata",accountDate),
  11954. new OracleParameter(":accountid",sUserInfo.AccountID),
  11955. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  11956. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  11957. new OracleParameter(":createuserid",sUserInfo.UserID),
  11958. new OracleParameter(":updateuserid",sUserInfo.UserID),
  11959. new OracleParameter(":groutingdate",GroutingDate),
  11960. new OracleParameter(":groutinguserid",GroutingUserID),
  11961. new OracleParameter(":groutingusercode",GroutingUserCode),
  11962. new OracleParameter(":groutingnum",GroutingNum),
  11963. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  11964. new OracleParameter(":mouldcode",MouldCode),
  11965. new OracleParameter(":groutingdailyid",GroutingDailyID),
  11966. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  11967. new OracleParameter(":groutinglineid",GroutingLineID),
  11968. new OracleParameter(":groutinglinecode",GroutingLineCode),
  11969. new OracleParameter(":groutinglinename",GroutingLineName),
  11970. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  11971. new OracleParameter(":canmanytimes",CanManyTimes),
  11972. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  11973. new OracleParameter(":specialRepairflag",productionData.SpecialRepairflag),
  11974. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  11975. new OracleParameter(":logoID",productionData.LogoID),
  11976. };
  11977. #endregion
  11978. foreach (OracleParameter para in paras)
  11979. {
  11980. if (string.IsNullOrEmpty(para.Value + ""))
  11981. {
  11982. para.Value = DBNull.Value;
  11983. }
  11984. }
  11985. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  11986. OutSpecialRepairflag = returnVal;
  11987. // 失败
  11988. if (result != Constant.INT_IS_ONE)
  11989. {
  11990. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  11991. }
  11992. // 成功返回null
  11993. return null;
  11994. }
  11995. /// <summary>
  11996. /// 根据最大生产数据ID,获取窑车窑炉等信息
  11997. /// </summary>
  11998. /// <param name="oracleTrConn"></param>
  11999. /// <param name="barcode"></param>
  12000. /// <param name="sUserInfo"></param>
  12001. /// <returns></returns>
  12002. private static DataSet GetDryRepairKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  12003. {
  12004. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  12005. // (
  12006. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  12007. // )";
  12008. string sql = @"select
  12009. KilnID,
  12010. KilnCode,
  12011. KilnName,
  12012. KilnCarID,
  12013. KilnCarCode,
  12014. KilnCarName,
  12015. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  12016. KilnCarPosition
  12017. from tp_pm_inproduction where barcode=:barcode
  12018. union
  12019. select
  12020. KilnID,
  12021. KilnCode,
  12022. KilnName,
  12023. KilnCarID,
  12024. KilnCarCode,
  12025. KilnCarName,
  12026. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  12027. KilnCarPosition
  12028. from TP_PM_InProductionTrash where barcode=:barcode
  12029. ";
  12030. try
  12031. {
  12032. IDataParameter[] paras = new OracleParameter[]
  12033. {
  12034. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  12035. };
  12036. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  12037. if (returnDs != null
  12038. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  12039. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  12040. {
  12041. return returnDs;
  12042. }
  12043. else
  12044. {
  12045. sql = @"select
  12046. KilnID,
  12047. KilnCode,
  12048. KilnName,
  12049. KilnCarID,
  12050. KilnCarCode,
  12051. KilnCarName,
  12052. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  12053. KilnCarPosition
  12054. from TP_PM_FINISHEDPRODUCT where barcode=:barcode";
  12055. returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  12056. if (returnDs != null
  12057. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  12058. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  12059. {
  12060. return returnDs;
  12061. }
  12062. else
  12063. {
  12064. return null;
  12065. }
  12066. }
  12067. }
  12068. catch (Exception ex)
  12069. {
  12070. throw ex;
  12071. }
  12072. }
  12073. /// <summary>
  12074. /// 更新漏扫的成型工号
  12075. /// </summary>
  12076. /// <param name="groutingUserCode">成型工号</param>
  12077. /// <param name="missingID">漏扫ID</param>
  12078. /// <param name="sUserInfo">用户基本信息</param>
  12079. /// <returns>int</returns>
  12080. public static int UpdateGroutingUserCodeByMissingID(string groutingUserCode, int missingID, SUserInfo sUserInfo)
  12081. {
  12082. int UpdateRow = 0;
  12083. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12084. try
  12085. {
  12086. oracleTrConn.Connect();
  12087. //string sql = "select userid from tp_mst_user where usercode=:usercode and valueflag=1 and isworker=1 and accountid=:accountid";
  12088. //OracleParameter[] paras = new OracleParameter[]{
  12089. // new OracleParameter(":usercode",OracleDbType.Varchar2, groutingUserCode,ParameterDirection.Input),
  12090. // new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  12091. //};
  12092. //DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  12093. //if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  12094. //{
  12095. // oracleTrConn.Commit();
  12096. // UpdateRow = -1;
  12097. // return UpdateRow;//成型工号无效
  12098. //}
  12099. // 20150605 wangxin begin
  12100. string[] subGroutingUserCode = groutingUserCode.Trim(',').Split(',');
  12101. bool isError = false;
  12102. int FirstUserID = 0;
  12103. string sql = "";
  12104. OracleParameter[] paras = null;
  12105. DataSet returnDataset = null;
  12106. for (int i = 0; i < subGroutingUserCode.Length; i++)
  12107. {
  12108. sql = "select userid from tp_mst_user where usercode=:usercode and valueflag=1 and isworker=1 and accountid=:accountid";
  12109. paras = new OracleParameter[]{
  12110. new OracleParameter(":usercode",OracleDbType.Varchar2, subGroutingUserCode[i],ParameterDirection.Input),
  12111. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  12112. };
  12113. returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  12114. if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  12115. {
  12116. isError = true;
  12117. break;
  12118. }
  12119. if (i == 0)
  12120. {
  12121. FirstUserID = Convert.ToInt32(returnDataset.Tables[0].Rows[0]["userid"]);
  12122. }
  12123. }
  12124. if (isError)
  12125. {
  12126. oracleTrConn.Commit();
  12127. UpdateRow = -1;
  12128. return UpdateRow;//成型工号无效
  12129. }
  12130. // 20150605 wangxin end
  12131. sql = "update TP_PM_BarCodeMissing set Missuserid=:Missuserid, Missusercode=:Missusercode where missid=:missid";
  12132. paras = new OracleParameter[]{
  12133. //new OracleParameter(":Missuserid",OracleDbType.Int32,Convert.ToInt32(returnDataset.Tables[0].Rows[0]["userid"]),ParameterDirection.Input),
  12134. new OracleParameter(":Missuserid",OracleDbType.Int32,FirstUserID,ParameterDirection.Input),
  12135. new OracleParameter(":Missusercode", OracleDbType.Varchar2, groutingUserCode.Trim(','), ParameterDirection.Input),
  12136. new OracleParameter(":missid", OracleDbType.Int32, missingID, ParameterDirection.Input),
  12137. };
  12138. UpdateRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  12139. if (UpdateRow > 0)
  12140. {
  12141. oracleTrConn.Commit();
  12142. }
  12143. else
  12144. {
  12145. oracleTrConn.Rollback();
  12146. }
  12147. }
  12148. catch (Exception ex)
  12149. {
  12150. oracleTrConn.Rollback();
  12151. throw ex;
  12152. }
  12153. finally
  12154. {
  12155. // 释放资源
  12156. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12157. {
  12158. oracleTrConn.Disconnect();
  12159. }
  12160. }
  12161. return UpdateRow;
  12162. }
  12163. /// <summary>
  12164. /// 在入窑工序检验窑车号是否存在
  12165. /// </summary>
  12166. /// <param name="kilncarcode">窑车编码</param>
  12167. /// <param name="procedureid">工序ID</param>
  12168. /// <param name="sUserInfo">用户基本信息</param>
  12169. /// <returns></returns>
  12170. public static int CheckKilnCarByIntoCar(string kilncarcode, int procedureid, SUserInfo sUserInfo)
  12171. {
  12172. int UpdateRow = 0;
  12173. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12174. try
  12175. {
  12176. oracleTrConn.Connect();
  12177. // 判断窑车编码是否有效
  12178. string sql = "select kilncarid from tp_mst_kilncar where kilncarcode=:kilncarcode and valueflag=1 and accountid=:accountid";
  12179. OracleParameter[] paras = new OracleParameter[]{
  12180. new OracleParameter(":kilncarcode",OracleDbType.Varchar2, kilncarcode,ParameterDirection.Input),
  12181. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  12182. };
  12183. DataSet dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  12184. int kilncarid = 0;
  12185. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  12186. {
  12187. oracleTrConn.Commit();
  12188. UpdateRow = -99;
  12189. return UpdateRow;//窑车编码无效
  12190. }
  12191. kilncarid = Convert.ToInt32(dsExists.Tables[0].Rows[0]["kilncarid"]);//窑车ID
  12192. //判断此窑车号有无产品
  12193. sql = "select barcode,KilnCarBatchNo from TP_PM_KilnCarGoods where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1";
  12194. paras = new OracleParameter[]{
  12195. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  12196. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  12197. };
  12198. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sql, paras);
  12199. if (dsGoods != null && dsGoods.Tables[0].Rows.Count == 0)
  12200. {
  12201. oracleTrConn.Commit();
  12202. UpdateRow = -98;
  12203. return UpdateRow;//窑车己无产品
  12204. }
  12205. // 判断窑车编码是否在入窑工序
  12206. sql = "select 1 from TP_PM_InProduction where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and FlowProcedureID=:FlowProcedureID";
  12207. paras = new OracleParameter[]{
  12208. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  12209. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  12210. new OracleParameter(":FlowProcedureID", OracleDbType.Int32, procedureid, ParameterDirection.Input),
  12211. };
  12212. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  12213. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  12214. {
  12215. oracleTrConn.Commit();
  12216. UpdateRow = -97;
  12217. return UpdateRow;//窑车号没有入窑,不可以撤销
  12218. }
  12219. int KilnCarDataID = 0;//窑车生产数据ID
  12220. string KilnCarBatchNo = "";
  12221. // 遍历窑车产品
  12222. bool isError = false;//默认没有错误
  12223. for (int i = 0; i < dsGoods.Tables[0].Rows.Count; i++)
  12224. {
  12225. #region 先查询生产数据最后3条
  12226. string sqlString = @"select ProductionDataID,
  12227. ProcedureID,
  12228. ProcedureModel,
  12229. ModelType,
  12230. ReworkProcedureID,
  12231. UserID
  12232. from (select ProductionDataID,
  12233. ProcedureID,
  12234. ProcedureModel,
  12235. ModelType,
  12236. ReworkProcedureID,
  12237. UserID
  12238. from Tp_Pm_ProductiondataIn
  12239. where barcode = :barcode
  12240. and valueflag = 1 and ModelType<>1 and ModelType<>2
  12241. order by ProductionDataID desc)
  12242. where rownum <=1";//where rownum <=3";
  12243. paras = new OracleParameter[]{
  12244. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  12245. };
  12246. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  12247. if (productionData == null
  12248. || productionData.Tables.Count == Constant.INT_IS_ZERO
  12249. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  12250. {
  12251. //errMsg = Messages.MSG_PM_W016;
  12252. isError = true;
  12253. break;
  12254. }
  12255. #endregion
  12256. #region 回滚在产数据
  12257. sqlString = @"update TP_PM_InProduction
  12258. set FlowProcedureID = :flowProcedureID,
  12259. ProcedureModel = :procedureModel,
  12260. ProcedureID = :flowProcedureID,
  12261. ModelType = :modelType,
  12262. ReworkProcedureID = :reworkProcedureID,
  12263. UserID = :userID,
  12264. updateuserid = :updateuserid
  12265. where barcode = :barcode";
  12266. paras = new OracleParameter[]{
  12267. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  12268. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//2-->1
  12269. new OracleParameter(":procedureModel",OracleDbType.Int32,
  12270. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  12271. new OracleParameter(":modelType",OracleDbType.Int32,
  12272. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  12273. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  12274. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  12275. new OracleParameter(":userID",OracleDbType.Int32,
  12276. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  12277. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  12278. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  12279. };
  12280. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  12281. if (UpdateRow == Constant.INT_IS_ZERO)
  12282. {
  12283. // 保存失败
  12284. isError = true;
  12285. break;
  12286. }
  12287. #endregion
  12288. #region 删除生产者和最后一条生产数据
  12289. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  12290. paras = new OracleParameter[]{
  12291. new OracleParameter(":productionDataID",OracleDbType.Int32,
  12292. productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  12293. //new OracleParameter(":productionDataID2",OracleDbType.Int32,
  12294. // productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  12295. new OracleParameter(":barcode",OracleDbType.Varchar2,
  12296. dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  12297. };
  12298. //modify 2015/05/13 wangx GoodsLevelTypeID=12 撤销入窑
  12299. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=12 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  12300. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  12301. int? GoodsLevelID = null;
  12302. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  12303. {
  12304. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  12305. }
  12306. //modify end
  12307. sqlString = "update TP_PM_ProductionDataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID;
  12308. if (GoodsLevelID != null)
  12309. {
  12310. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  12311. sqlString += ",GoodsLevelTypeID=12";
  12312. }
  12313. //sqlString += " where ProductionDataID=:productionDataID or ProductionDataID=:productionDataID2";
  12314. sqlString += " where barcode=:barcode and ProductionDataID>:productionDataID "; //or ProductionDataID=:productionDataID2
  12315. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  12316. if (UpdateRow == Constant.INT_IS_ZERO)
  12317. {
  12318. // 保存失败
  12319. isError = true;
  12320. break;
  12321. }
  12322. #endregion
  12323. #region 删除窑车产品
  12324. sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  12325. paras = new OracleParameter[]{
  12326. new OracleParameter(":barCode",OracleDbType.Varchar2,
  12327. dsGoods.Tables[0].Rows[i]["barcode"],ParameterDirection.Input),
  12328. };
  12329. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  12330. if (UpdateRow == Constant.INT_IS_ZERO)
  12331. {
  12332. // 保存失败
  12333. isError = true;
  12334. break;
  12335. }
  12336. #endregion
  12337. #region 读取窑车生产数据,进行撤销
  12338. sql = @"select KilnCarDataID, ProductionLineID,ProcedureID,
  12339. ProcedureCode,ProcedureName,ProcedureModel,ModelType,PieceType
  12340. from TP_PM_KilnCarData where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and KilnCarBatchNo=:KilnCarBatchNo order by KilnCarDataID ";
  12341. paras = new OracleParameter[]{
  12342. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  12343. kilncarid,ParameterDirection.Input),
  12344. new OracleParameter(":accountid",OracleDbType.Int32,
  12345. sUserInfo.AccountID,ParameterDirection.Input),
  12346. new OracleParameter(":KilnCarBatchNo",OracleDbType.Varchar2,
  12347. dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString(),ParameterDirection.Input),
  12348. };
  12349. KilnCarBatchNo = dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString();
  12350. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  12351. if (dsExists != null && dsExists.Tables[0].Rows.Count > 0)
  12352. {
  12353. //最后窑车生产数据ID赋值 撤二步骤
  12354. KilnCarDataID = Convert.ToInt32(dsExists.Tables[0].Rows[0]["KilnCarDataID"]);
  12355. sqlString = @"update TP_PM_KilnCarStatus set
  12356. ProductionLineID=:ProductionLineID
  12357. ,ProcedureID=:ProcedureID
  12358. ,ProcedureCode=:ProcedureCode
  12359. ,ProcedureName=:ProcedureName
  12360. ,ProcedureModel=:ProcedureModel
  12361. ,ModelType=:ModelType
  12362. ,PieceType=:PieceType
  12363. ,KilnCarStatus=0,LoadingTime=null,IntoKilnTime=null,OutKilnTime=null,UnloadingTime=null
  12364. where KilnCarID=:KilnCarID";
  12365. paras = new OracleParameter[]{
  12366. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  12367. dsExists.Tables[0].Rows[0]["ProductionLineID"],ParameterDirection.Input),
  12368. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  12369. dsExists.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),
  12370. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  12371. dsExists.Tables[0].Rows[0]["ProcedureCode"].ToString(),ParameterDirection.Input),
  12372. new OracleParameter(":ProcedureModel",OracleDbType.Varchar2,
  12373. dsExists.Tables[0].Rows[0]["ProcedureModel"].ToString(),ParameterDirection.Input),
  12374. new OracleParameter(":ModelType",OracleDbType.Int32,
  12375. Convert.ToInt32(dsExists.Tables[0].Rows[0]["ModelType"]),ParameterDirection.Input),
  12376. new OracleParameter(":PieceType",OracleDbType.Varchar2,
  12377. dsExists.Tables[0].Rows[0]["PieceType"].ToString(),ParameterDirection.Input),
  12378. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  12379. kilncarid,ParameterDirection.Input),
  12380. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  12381. dsExists.Tables[0].Rows[0]["ProcedureName"].ToString(),ParameterDirection.Input),
  12382. };
  12383. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  12384. if (UpdateRow == Constant.INT_IS_ZERO)
  12385. {
  12386. // 保存失败
  12387. isError = true;
  12388. break;
  12389. }
  12390. }
  12391. #endregion
  12392. }
  12393. //modify wangx 20150606 begin
  12394. string updateSql = "update TP_PM_KilnCarData set valueflag=0,UpdateUserID=" + sUserInfo.UserID + " where KilnCarDataID>=" + KilnCarDataID + " and KilnCarBatchNo=" + KilnCarBatchNo;
  12395. int row = oracleTrConn.ExecuteNonQuery(updateSql);
  12396. //modify wangx 20150606 end
  12397. if (isError) //有错误消息
  12398. {
  12399. UpdateRow = -1;//失败
  12400. oracleTrConn.Rollback();
  12401. }
  12402. else
  12403. {
  12404. UpdateRow = 1;//成功
  12405. oracleTrConn.Commit();
  12406. }
  12407. }
  12408. catch (Exception ex)
  12409. {
  12410. oracleTrConn.Rollback();
  12411. throw ex;
  12412. }
  12413. finally
  12414. {
  12415. // 释放资源
  12416. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12417. {
  12418. oracleTrConn.Disconnect();
  12419. }
  12420. }
  12421. return UpdateRow;
  12422. }
  12423. /// <summary>
  12424. /// 在入窑工序检验窑车号是否存在
  12425. /// </summary>
  12426. /// <param name="kilncarcode">窑车编码</param>
  12427. /// <param name="procedureid">工序ID</param>
  12428. /// <param name="sUserInfo">用户基本信息</param>
  12429. /// <returns></returns>
  12430. public static int CheckKilnCarByIntoCar2(string kilncarcode, int procedureid, SUserInfo sUserInfo)
  12431. {
  12432. int UpdateRow = 0;
  12433. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12434. try
  12435. {
  12436. oracleTrConn.Connect();
  12437. // 判断窑车编码是否有效
  12438. string sql = "select kilncarid from tp_mst_kilncar where kilncarcode=:kilncarcode and valueflag=1 and accountid=:accountid";
  12439. OracleParameter[] paras = new OracleParameter[]{
  12440. new OracleParameter(":kilncarcode",OracleDbType.Varchar2, kilncarcode,ParameterDirection.Input),
  12441. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  12442. };
  12443. DataSet dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  12444. int kilncarid = 0;
  12445. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  12446. {
  12447. oracleTrConn.Commit();
  12448. UpdateRow = -99;
  12449. return UpdateRow;//窑车编码无效
  12450. }
  12451. kilncarid = Convert.ToInt32(dsExists.Tables[0].Rows[0]["kilncarid"]);//窑车ID
  12452. //判断此窑车号有无产品
  12453. sql = "select barcode,KilnCarBatchNo from TP_PM_KilnCarGoods where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1";
  12454. paras = new OracleParameter[]{
  12455. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  12456. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  12457. };
  12458. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sql, paras);
  12459. if (dsGoods != null && dsGoods.Tables[0].Rows.Count == 0)
  12460. {
  12461. oracleTrConn.Commit();
  12462. UpdateRow = -98;
  12463. return UpdateRow;//窑车己无产品
  12464. }
  12465. // 判断窑车编码是否在入窑工序
  12466. sql = "select 1 from TP_PM_InProduction where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and FlowProcedureID=:FlowProcedureID";
  12467. paras = new OracleParameter[]{
  12468. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  12469. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  12470. new OracleParameter(":FlowProcedureID", OracleDbType.Int32, procedureid, ParameterDirection.Input),
  12471. };
  12472. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  12473. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  12474. {
  12475. oracleTrConn.Commit();
  12476. UpdateRow = -97;
  12477. return UpdateRow;//窑车号没有入窑,不可以撤销
  12478. }
  12479. int KilnCarDataID = 0;//窑车生产数据ID
  12480. // 遍历窑车产品
  12481. bool isError = false;//默认没有错误
  12482. for (int i = 0; i < dsGoods.Tables[0].Rows.Count; i++)
  12483. {
  12484. #region 先查询生产数据最后3条
  12485. string sqlString = @"select ProductionDataID,
  12486. ProcedureID,
  12487. ProcedureModel,
  12488. ModelType,
  12489. ReworkProcedureID,
  12490. UserID,
  12491. logoid
  12492. from (select ProductionDataID,
  12493. ProcedureID,
  12494. ProcedureModel,
  12495. ModelType,
  12496. ReworkProcedureID,
  12497. UserID,
  12498. logoid
  12499. from Tp_Pm_ProductiondataIn
  12500. where barcode = :barcode
  12501. and valueflag = 1 and ModelType<>2
  12502. order by ProductionDataID desc)
  12503. where rownum <=1";
  12504. paras = new OracleParameter[]{
  12505. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  12506. };
  12507. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  12508. if (productionData == null
  12509. || productionData.Tables.Count == Constant.INT_IS_ZERO
  12510. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  12511. {
  12512. //errMsg = Messages.MSG_PM_W016;
  12513. isError = true;
  12514. break;
  12515. }
  12516. #endregion
  12517. #region 回滚在产数据
  12518. sqlString = @"update TP_PM_InProduction
  12519. set FlowProcedureID = :flowProcedureID,
  12520. ProcedureModel = :procedureModel,
  12521. ProcedureID = :flowProcedureID,
  12522. ModelType = :modelType,
  12523. ReworkProcedureID = :reworkProcedureID,
  12524. UserID = :userID,
  12525. updateuserid = :updateuserid,
  12526. logoid = :logoid
  12527. where barcode = :barcode";
  12528. paras = new OracleParameter[]{
  12529. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  12530. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//2-->1
  12531. new OracleParameter(":procedureModel",OracleDbType.Int32,
  12532. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  12533. new OracleParameter(":modelType",OracleDbType.Int32,
  12534. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  12535. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  12536. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  12537. new OracleParameter(":userID",OracleDbType.Int32,
  12538. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  12539. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  12540. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  12541. new OracleParameter(":logoid",OracleDbType.Int32, productionData.Tables[0].Rows[0]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[0]["logoid"],ParameterDirection.Input),
  12542. };
  12543. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  12544. if (UpdateRow == Constant.INT_IS_ZERO)
  12545. {
  12546. // 保存失败
  12547. isError = true;
  12548. break;
  12549. }
  12550. #endregion
  12551. #region 删除生产者和最后一条生产数据
  12552. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  12553. paras = new OracleParameter[]{
  12554. new OracleParameter(":productionDataID",OracleDbType.Int32,
  12555. productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  12556. new OracleParameter(":barcode",OracleDbType.Varchar2,
  12557. dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  12558. };
  12559. //modify 2015/05/13 wangx GoodsLevelTypeID=12 撤销入窑
  12560. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=12 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  12561. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  12562. int? GoodsLevelID = null;
  12563. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  12564. {
  12565. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  12566. }
  12567. //modify end
  12568. sqlString = "update TP_PM_ProductionDataIn set valueflag=0,updateuserid= " + sUserInfo.UserID;
  12569. if (GoodsLevelID != null)
  12570. {
  12571. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  12572. sqlString += ",GoodsLevelTypeID=12";
  12573. }
  12574. //sqlString += " where ProductionDataID=:productionDataID or ProductionDataID=:productionDataID2";
  12575. sqlString += " where barcode=:barcode and ProductionDataID>:productionDataID "; //or ProductionDataID=:productionDataID2
  12576. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  12577. if (UpdateRow == Constant.INT_IS_ZERO)
  12578. {
  12579. // 保存失败
  12580. isError = true;
  12581. break;
  12582. }
  12583. #endregion
  12584. //#region 删除窑车产品
  12585. //sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  12586. //paras = new OracleParameter[]{
  12587. // new OracleParameter(":barCode",OracleDbType.Varchar2,
  12588. // dsGoods.Tables[0].Rows[i]["barcode"],ParameterDirection.Input),
  12589. //};
  12590. //UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  12591. //if (UpdateRow == Constant.INT_IS_ZERO)
  12592. //{
  12593. // // 保存失败
  12594. // isError = true;
  12595. // break;
  12596. //}
  12597. //#endregion
  12598. #region 读取窑车生产数据,进行撤销
  12599. sql = @"select KilnCarDataID, ProductionLineID,ProcedureID,
  12600. ProcedureCode,ProcedureName,ProcedureModel,ModelType,PieceType
  12601. from TP_PM_KilnCarData where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and KilnCarBatchNo=:KilnCarBatchNo order by KilnCarDataID ";
  12602. paras = new OracleParameter[]{
  12603. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  12604. kilncarid,ParameterDirection.Input),
  12605. new OracleParameter(":accountid",OracleDbType.Int32,
  12606. sUserInfo.AccountID,ParameterDirection.Input),
  12607. new OracleParameter(":KilnCarBatchNo",OracleDbType.Varchar2,
  12608. dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString(),ParameterDirection.Input),
  12609. };
  12610. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  12611. if (dsExists != null && dsExists.Tables[0].Rows.Count > 0)
  12612. {
  12613. //最后窑车生产数据ID赋值
  12614. KilnCarDataID = Convert.ToInt32(dsExists.Tables[0].Rows[dsExists.Tables[0].Rows.Count - 1]["KilnCarDataID"]);
  12615. sqlString = @"update TP_PM_KilnCarStatus set
  12616. ProductionLineID=:ProductionLineID
  12617. ,ProcedureID=:ProcedureID
  12618. ,ProcedureCode=:ProcedureCode
  12619. ,ProcedureName=:ProcedureName
  12620. ,ProcedureModel=:ProcedureModel
  12621. ,ModelType=:ModelType
  12622. ,PieceType=:PieceType
  12623. ,KilnCarStatus=0,IntoKilnTime=null,OutKilnTime=null,UnloadingTime=null
  12624. where KilnCarID=:KilnCarID";
  12625. paras = new OracleParameter[]{
  12626. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  12627. dsExists.Tables[0].Rows[0]["ProductionLineID"],ParameterDirection.Input),
  12628. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  12629. dsExists.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),
  12630. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  12631. dsExists.Tables[0].Rows[0]["ProcedureCode"].ToString(),ParameterDirection.Input),
  12632. new OracleParameter(":ProcedureModel",OracleDbType.Varchar2,
  12633. dsExists.Tables[0].Rows[0]["ProcedureModel"].ToString(),ParameterDirection.Input),
  12634. new OracleParameter(":ModelType",OracleDbType.Int32,
  12635. Convert.ToInt32(dsExists.Tables[0].Rows[0]["ModelType"]),ParameterDirection.Input),
  12636. new OracleParameter(":PieceType",OracleDbType.Varchar2,
  12637. dsExists.Tables[0].Rows[0]["PieceType"].ToString(),ParameterDirection.Input),
  12638. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  12639. kilncarid,ParameterDirection.Input),
  12640. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  12641. dsExists.Tables[0].Rows[0]["ProcedureName"].ToString(),ParameterDirection.Input),
  12642. };
  12643. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  12644. if (UpdateRow == Constant.INT_IS_ZERO)
  12645. {
  12646. // 保存失败
  12647. isError = true;
  12648. break;
  12649. }
  12650. }
  12651. #endregion
  12652. }
  12653. //modify wangx 20150606 begin
  12654. string updateSql = "update TP_PM_KilnCarData set valueflag=0,UpdateUserID=" + sUserInfo.UserID + " where KilnCarDataID=" + KilnCarDataID;
  12655. int row = oracleTrConn.ExecuteNonQuery(updateSql);
  12656. //modify wangx 20150606 end
  12657. if (isError) //有错误消息
  12658. {
  12659. UpdateRow = -1;//失败
  12660. oracleTrConn.Rollback();
  12661. }
  12662. else
  12663. {
  12664. UpdateRow = 1;//成功
  12665. oracleTrConn.Commit();
  12666. }
  12667. }
  12668. catch (Exception ex)
  12669. {
  12670. oracleTrConn.Rollback();
  12671. throw ex;
  12672. }
  12673. finally
  12674. {
  12675. // 释放资源
  12676. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12677. {
  12678. oracleTrConn.Disconnect();
  12679. }
  12680. }
  12681. return UpdateRow;
  12682. }
  12683. /// <summary>
  12684. /// 保存盘点单
  12685. /// </summary>
  12686. /// <param name="inProductionEntity"></param>
  12687. /// <param name="remarks"></param>
  12688. /// <param name="sUserInfo"></param>
  12689. /// <returns></returns>
  12690. public static int SaveInChecked(InProductionEntity[] inProductionEntity, string remarks, SUserInfo sUserInfo)
  12691. {
  12692. int returnRows = 0;
  12693. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12694. try
  12695. {
  12696. if (inProductionEntity[0].ReworkProcedureID == 0)
  12697. {
  12698. //盘点单号
  12699. string InCheckedNo = string.Format("IPC{0}", DateTime.Now.ToString("yyyyMMddHHmmss"));
  12700. //获得账务日期
  12701. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  12702. //备注
  12703. string Remarks = remarks;
  12704. oracleTrConn.Connect();
  12705. //盘点单ID
  12706. string sql = "select SEQ_PM_InChecked_ID.nextval from dual";
  12707. int InCheckedID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  12708. #region 插入盘点单主表信息
  12709. sql = @"insert into TP_PM_InChecked
  12710. (
  12711. InCheckedID,
  12712. InCheckedNo,
  12713. AccountDate,
  12714. Remarks,
  12715. AccountID,
  12716. CreateUserID,
  12717. UpdateUserID,
  12718. INCHECKNAME
  12719. ) values
  12720. ( :InCheckedID,
  12721. :InCheckedNo,
  12722. :AccountDate,
  12723. :Remarks,
  12724. :AccountID,
  12725. :CreateUserID,
  12726. :UpdateUserID,
  12727. :INCHECKNAME
  12728. )";
  12729. OracleParameter[] Paras = new OracleParameter[] {
  12730. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  12731. InCheckedID,ParameterDirection.Input),
  12732. new OracleParameter(":InCheckedNo",OracleDbType.NVarchar2,
  12733. InCheckedNo,ParameterDirection.Input),
  12734. new OracleParameter(":AccountDate",OracleDbType.Date,
  12735. accountDate,ParameterDirection.Input),
  12736. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  12737. Remarks,ParameterDirection.Input),
  12738. new OracleParameter(":AccountID",OracleDbType.Int32,
  12739. sUserInfo.AccountID,ParameterDirection.Input),
  12740. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  12741. sUserInfo.UserID,ParameterDirection.Input),
  12742. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  12743. sUserInfo.UserID,ParameterDirection.Input),
  12744. new OracleParameter(":INCHECKNAME",OracleDbType.NVarchar2,
  12745. inProductionEntity[0].CompleteProcedureName,ParameterDirection.Input),
  12746. };
  12747. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  12748. #endregion
  12749. //string barcodes = "";
  12750. List<OracleParameter> parameters = null;
  12751. //int row = 0;
  12752. //foreach (InProductionEntity entity in inProductionEntity)
  12753. //{
  12754. // barcodes += entity.BarCode + ",";
  12755. // row++;
  12756. // if (row > 15) //为了15查数据库一次
  12757. // {
  12758. // barcodes = barcodes.TrimEnd(',') + '|';
  12759. // row = 0;//重置
  12760. // }
  12761. //}
  12762. //barcodes = barcodes.TrimEnd(',');
  12763. //string[] subsplit = barcodes.Split('|');
  12764. // foreach (InProductionEntity entity in inProductionEntity)foreach (InProductionEntity entity in inProductionEntity)
  12765. //foreach (string entity in subsplit)
  12766. //{
  12767. //barcodes += entity.BarCode + ",";
  12768. //barcodes = barcodes.TrimEnd(','); //在产产品是唯一的,直接根据条码查询,并插入到盘点明细
  12769. sql = @"
  12770. insert into TP_PM_InCheckedDetail
  12771. (
  12772. InCheckedID,
  12773. BarCode,
  12774. InCheckedNo,
  12775. ProductionLineID,
  12776. ProductionLineCode,
  12777. ProductionLineName,
  12778. ProcedureID,
  12779. ProcedureTime,
  12780. ProcedureModel,
  12781. ModelType,
  12782. DefectFlag,
  12783. ReworkProcedureID,
  12784. IsPublicBody,
  12785. IsReFire,
  12786. SpecialRepairFlag,
  12787. GoodsLevelID,
  12788. GoodsLevelTypeID,
  12789. GoodsID,
  12790. GoodsCode,
  12791. GoodsName,
  12792. UserID,
  12793. GroutingDailyID,
  12794. GroutingDailyDetailID,
  12795. GroutingDate,
  12796. GroutingLineID,
  12797. GroutingLineCode,
  12798. GroutingLineName,
  12799. GMouldTypeID,
  12800. CanManyTimes,
  12801. GroutingLineDetailID,
  12802. GroutingMouldCode,
  12803. MouldCode,
  12804. GroutingUserID,
  12805. GroutingUserCode,
  12806. GroutingNum,
  12807. Remarks,
  12808. KilnID,
  12809. KilnCode,
  12810. KilnName,
  12811. KilnCarID,
  12812. KilnCarCode,
  12813. KilnCarName,
  12814. KilnCarBatchNo,
  12815. KilnCarPosition,
  12816. AccountID,
  12817. CreateUserID,
  12818. UpdateUserID,
  12819. valueflag,
  12820. logoid,
  12821. ISREWORKFLAG,INSCRAPFLAG
  12822. )
  12823. select
  12824. :InCheckedID,
  12825. inp.BarCode,
  12826. :InCheckedNo,
  12827. inp.ProductionLineID,
  12828. inp.ProductionLineCode,
  12829. inp.ProductionLineName,
  12830. inp.ProcedureID,
  12831. inp.ProcedureTime,
  12832. inp.ProcedureModel,
  12833. inp.ModelType,
  12834. inp.DefectFlag,
  12835. inp.ReworkProcedureID,
  12836. inp.IsPublicBody,
  12837. inp.IsReFire,
  12838. inp.SpecialRepairFlag,
  12839. inp.GoodsLevelID,
  12840. inp.GoodsLevelTypeID,
  12841. inp.GoodsID,
  12842. inp.GoodsCode,
  12843. inp.GoodsName,
  12844. inp.UserID,
  12845. inp.GroutingDailyID,
  12846. inp.GroutingDailyDetailID,
  12847. inp.GroutingDate,
  12848. inp.GroutingLineID,
  12849. inp.GroutingLineCode,
  12850. inp.GroutingLineName,
  12851. inp.GMouldTypeID,
  12852. inp.CanManyTimes,
  12853. inp.GroutingLineDetailID,
  12854. inp.GroutingMouldCode,
  12855. inp.MouldCode,
  12856. inp.GroutingUserID,
  12857. inp.GroutingUserCode,
  12858. inp.GroutingNum,
  12859. inp.Remarks,
  12860. inp.KilnID,
  12861. inp.KilnCode,
  12862. inp.KilnName,
  12863. inp.KilnCarID,
  12864. inp.KilnCarCode,
  12865. inp.KilnCarName,
  12866. inp.KilnCarBatchNo,
  12867. inp.KilnCarPosition,
  12868. :AccountID,
  12869. :CreateUserID,
  12870. :UpdateUserID,
  12871. 1,
  12872. inp.logoid,
  12873. inp.ISREWORKFLAG,inp.INSCRAPFLAG
  12874. from TP_PM_InProduction inp
  12875. LEFT JOIN tp_mst_goods g
  12876. ON g.goodsid = inp.goodsid
  12877. LEFT JOIN tp_mst_goodsType gt
  12878. ON gt.goodstypeid = g.goodstypeid
  12879. where 1=1
  12880. ";
  12881. //sql += "AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ";
  12882. parameters = new List<OracleParameter>();
  12883. // 工序IDS
  12884. if (!string.IsNullOrEmpty(inProductionEntity[0].ProcedureIDS))
  12885. {
  12886. sql += "AND instr(','||:ProcedureIDS||',',','||inp.FlowProcedureID||',')>0 ";
  12887. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, inProductionEntity[0].ProcedureIDS, ParameterDirection.Input));
  12888. }
  12889. // 完成工号IDS
  12890. if (!string.IsNullOrEmpty(inProductionEntity[0].UserName))
  12891. {
  12892. sql += "AND instr(','||:UserIDS||',',','||inp.UserID||',')>0 ";
  12893. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, inProductionEntity[0].UserName, ParameterDirection.Input));
  12894. }
  12895. // 完成日期
  12896. if (inProductionEntity[0].StartCompleteDate != null)
  12897. {
  12898. sql = sql + " AND inp.ProcedureTime >= :Createdate AND inp.ProcedureTime <= :EndDate ";
  12899. parameters.Add(new OracleParameter(":Createdate", OracleDbType.Date, inProductionEntity[0].StartCompleteDate, ParameterDirection.Input));
  12900. parameters.Add(new OracleParameter(":EndDate", OracleDbType.Date, inProductionEntity[0].EndCompleteDate, ParameterDirection.Input));
  12901. }
  12902. // 编码IDS
  12903. if (!string.IsNullOrEmpty(inProductionEntity[0].GoodsCodeList))
  12904. {
  12905. sql += "AND instr(','||:GoodsIDS||',',','||inp.GoodsID||',')>0 ";
  12906. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, inProductionEntity[0].GoodsCodeList, ParameterDirection.Input));
  12907. }
  12908. // 产品类型
  12909. if (!string.IsNullOrEmpty(inProductionEntity[0].GoodsTypeCode))
  12910. {
  12911. sql += "AND instr(gt.goodstypecode, :GoodsTypeCode)=1 ";
  12912. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, inProductionEntity[0].GoodsTypeCode, ParameterDirection.Input));
  12913. }
  12914. parameters.Add(new OracleParameter(":InCheckedID", OracleDbType.Int32, InCheckedID, ParameterDirection.Input));
  12915. parameters.Add(new OracleParameter(":InCheckedNo", OracleDbType.Varchar2, InCheckedNo, ParameterDirection.Input));
  12916. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  12917. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  12918. parameters.Add(new OracleParameter(":UpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  12919. returnRows += oracleTrConn.ExecuteNonQuery(sql, parameters.ToArray());
  12920. #region 插入盘点工号列表
  12921. foreach (DataRow r in inProductionEntity[0].UserTable.Rows)
  12922. {
  12923. if (r["userid"] != DBNull.Value)
  12924. {
  12925. sql = @" Insert into tp_pm_incheckeduser
  12926. (
  12927. incheckedid,
  12928. userCode,
  12929. userid
  12930. )
  12931. values
  12932. (
  12933. :inchecked,
  12934. :userCode,
  12935. :userid
  12936. )
  12937. ";
  12938. Paras = new OracleParameter[] {
  12939. new OracleParameter(":inchecked",OracleDbType.Int32,
  12940. InCheckedID,ParameterDirection.Input),
  12941. new OracleParameter(":userCode",OracleDbType.NVarchar2,
  12942. r["userCode"],ParameterDirection.Input),
  12943. new OracleParameter(":userid",OracleDbType.Int32,
  12944. r["userid"],ParameterDirection.Input),
  12945. };
  12946. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12947. }
  12948. }
  12949. #endregion
  12950. }
  12951. else
  12952. {
  12953. string sql = @"Update TP_PM_InChecked set Incheckname=:Incheckname,Remarks=:Remarks,updateuserid=:updateuserid where InCheckedID=:InCheckedID";
  12954. OracleParameter[] Paras = new OracleParameter[] {
  12955. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  12956. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  12957. new OracleParameter(":Incheckname",OracleDbType.NVarchar2,
  12958. inProductionEntity[0].CompleteProcedureName,ParameterDirection.Input),
  12959. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  12960. remarks,ParameterDirection.Input),
  12961. new OracleParameter(":updateuserid",OracleDbType.Int32,
  12962. sUserInfo.UserID,ParameterDirection.Input),
  12963. };
  12964. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  12965. sql = @"delete from tp_pm_incheckeduser where InCheckedID=:InCheckedID";
  12966. Paras = new OracleParameter[] {
  12967. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  12968. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  12969. };
  12970. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12971. #region 插入盘点工号列表
  12972. foreach (DataRow r in inProductionEntity[0].UserTable.Rows)
  12973. {
  12974. if (string.IsNullOrEmpty(r["userCode"].ToString()) ||
  12975. string.IsNullOrEmpty(r["userid"].ToString()))
  12976. {
  12977. continue;
  12978. }
  12979. sql = @" Insert into tp_pm_incheckeduser
  12980. (
  12981. incheckedid,
  12982. userCode,
  12983. userid
  12984. )
  12985. values
  12986. (
  12987. :inchecked,
  12988. :userCode,
  12989. :userid
  12990. )
  12991. ";
  12992. Paras = new OracleParameter[] {
  12993. new OracleParameter(":inchecked",OracleDbType.Int32,
  12994. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  12995. new OracleParameter(":userCode",OracleDbType.NVarchar2,
  12996. r["userCode"],ParameterDirection.Input),
  12997. new OracleParameter(":userid",OracleDbType.Int32,
  12998. r["userid"],ParameterDirection.Input),
  12999. };
  13000. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13001. }
  13002. #endregion
  13003. }
  13004. if (returnRows == 0)
  13005. {
  13006. oracleTrConn.Rollback();
  13007. oracleTrConn.Disconnect();
  13008. }
  13009. else
  13010. {
  13011. oracleTrConn.Commit();
  13012. oracleTrConn.Disconnect();
  13013. }
  13014. }
  13015. catch (Exception ex)
  13016. {
  13017. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13018. {
  13019. oracleTrConn.Rollback();
  13020. oracleTrConn.Disconnect();
  13021. }
  13022. throw ex;
  13023. }
  13024. finally
  13025. {
  13026. if (oracleTrConn.ConnState == ConnectionState.Open)
  13027. {
  13028. oracleTrConn.Disconnect();
  13029. }
  13030. }
  13031. return returnRows;
  13032. }
  13033. /// <summary>
  13034. /// 更新盘点单
  13035. /// </summary>
  13036. /// <param name="InCheckedID">盘点单号</param>
  13037. /// <param name="BarCode">产品条码</param>
  13038. /// <param name="sUserInfo">用户基本信息</param>
  13039. /// <returns></returns>
  13040. public static int UpdateInChecked(int InCheckedID, string BarCode, SUserInfo sUserInfo)
  13041. {
  13042. int returnRows = 0;
  13043. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13044. try
  13045. {
  13046. // 转换条码
  13047. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  13048. OracleParameter[] paras1 = new OracleParameter[]{
  13049. new OracleParameter(":barcode",OracleDbType.Varchar2, BarCode,ParameterDirection.Input),
  13050. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  13051. };
  13052. BarCode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  13053. string sql = @"select 1 from TP_PM_InProduction where barcode=:barcode";
  13054. OracleParameter[] Paras = new OracleParameter[] {
  13055. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13056. BarCode,ParameterDirection.Input)
  13057. };
  13058. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13059. if (ds != null && ds.Tables[0].Rows.Count == 0)
  13060. {
  13061. returnRows = -2;//该产品不在生产线
  13062. return returnRows;
  13063. }
  13064. sql = @"select InCheckedFlag,CHECKEDUSERID as Userid from TP_PM_InCheckedDetail where InCheckedID=:InCheckedID and BarCode=:BarCode and Valueflag=1";
  13065. Paras = new OracleParameter[] {
  13066. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  13067. InCheckedID,ParameterDirection.Input),
  13068. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  13069. BarCode,ParameterDirection.Input)
  13070. };
  13071. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13072. if (ds != null && ds.Tables[0].Rows.Count == 0)
  13073. {
  13074. sql = @"select InCheckedNo from TP_PM_InChecked where InCheckedID=:InCheckedID";
  13075. Paras = new OracleParameter[] {
  13076. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  13077. InCheckedID,ParameterDirection.Input),
  13078. };
  13079. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13080. string InCheckedNo = ds.Tables[0].Rows[0]["InCheckedNo"].ToString();//肯定会有盘点单号,所以就没有加判断
  13081. //在产不在生产线上,属于盘赢
  13082. sql = @"
  13083. insert into TP_PM_InCheckedDetail
  13084. (
  13085. InCheckedID,
  13086. BarCode,
  13087. InCheckedNo,
  13088. ProductionLineID,
  13089. ProductionLineCode,
  13090. ProductionLineName,
  13091. ProcedureID,
  13092. ProcedureTime,
  13093. ProcedureModel,
  13094. ModelType,
  13095. DefectFlag,
  13096. ReworkProcedureID,
  13097. IsPublicBody,
  13098. IsReFire,
  13099. SpecialRepairFlag,
  13100. GoodsLevelID,
  13101. GoodsLevelTypeID,
  13102. GoodsID,
  13103. GoodsCode,
  13104. GoodsName,
  13105. UserID,
  13106. GroutingDailyID,
  13107. GroutingDailyDetailID,
  13108. GroutingDate,
  13109. GroutingLineID,
  13110. GroutingLineCode,
  13111. GroutingLineName,
  13112. GMouldTypeID,
  13113. CanManyTimes,
  13114. GroutingLineDetailID,
  13115. GroutingMouldCode,
  13116. MouldCode,
  13117. GroutingUserID,
  13118. GroutingUserCode,
  13119. GroutingNum,
  13120. Remarks,
  13121. KilnID,
  13122. KilnCode,
  13123. KilnName,
  13124. KilnCarID,
  13125. KilnCarCode,
  13126. KilnCarName,
  13127. KilnCarBatchNo,
  13128. KilnCarPosition,
  13129. AccountID,
  13130. CreateUserID,
  13131. UpdateUserID,
  13132. InCheckedFlag,
  13133. CheckedDate,
  13134. CheckedUserID,
  13135. logoid
  13136. )
  13137. select
  13138. :InCheckedID,
  13139. BarCode,
  13140. :InCheckedNo,
  13141. ProductionLineID,
  13142. ProductionLineCode,
  13143. ProductionLineName,
  13144. ProcedureID,
  13145. ProcedureTime,
  13146. ProcedureModel,
  13147. ModelType,
  13148. DefectFlag,
  13149. ReworkProcedureID,
  13150. IsPublicBody,
  13151. IsReFire,
  13152. SpecialRepairFlag,
  13153. GoodsLevelID,
  13154. GoodsLevelTypeID,
  13155. GoodsID,
  13156. GoodsCode,
  13157. GoodsName,
  13158. UserID,
  13159. GroutingDailyID,
  13160. GroutingDailyDetailID,
  13161. GroutingDate,
  13162. GroutingLineID,
  13163. GroutingLineCode,
  13164. GroutingLineName,
  13165. GMouldTypeID,
  13166. CanManyTimes,
  13167. GroutingLineDetailID,
  13168. GroutingMouldCode,
  13169. MouldCode,
  13170. GroutingUserID,
  13171. GroutingUserCode,
  13172. GroutingNum,
  13173. Remarks,
  13174. KilnID,
  13175. KilnCode,
  13176. KilnName,
  13177. KilnCarID,
  13178. KilnCarCode,
  13179. KilnCarName,
  13180. KilnCarBatchNo,
  13181. KilnCarPosition,
  13182. :AccountID,
  13183. :CreateUserID,
  13184. :UpdateUserID,
  13185. :InCheckedFlag,
  13186. sysdate,
  13187. :CheckedUserID,
  13188. logoid
  13189. from TP_PM_InProduction where 1=1
  13190. ";
  13191. ;
  13192. List<OracleParameter> parameters = new List<OracleParameter>();
  13193. sql += "AND instr(','||:barcode||',',','||TP_PM_InProduction.barcode||',')>0 ";
  13194. parameters.Add(new OracleParameter(":InCheckedID", OracleDbType.Int32, InCheckedID, ParameterDirection.Input));
  13195. parameters.Add(new OracleParameter(":InCheckedNo", OracleDbType.Varchar2, InCheckedNo, ParameterDirection.Input));
  13196. parameters.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, BarCode, ParameterDirection.Input));
  13197. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  13198. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  13199. parameters.Add(new OracleParameter(":UpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  13200. parameters.Add(new OracleParameter(":InCheckedFlag", OracleDbType.Int32, Constant.InCheckedFlag.InCheckedWin.GetHashCode(), ParameterDirection.Input));
  13201. parameters.Add(new OracleParameter(":CheckedUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  13202. returnRows += oracleTrConn.ExecuteNonQuery(sql, parameters.ToArray());
  13203. returnRows = 10;
  13204. }
  13205. else
  13206. {
  13207. int InCheckedFlag = Convert.ToInt32(ds.Tables[0].Rows[0]["InCheckedFlag"]);
  13208. if (InCheckedFlag == 1)
  13209. {
  13210. if (Convert.ToInt32(ds.Tables[0].Rows[0]["Userid"]) != sUserInfo.UserID)
  13211. {
  13212. returnRows = -22;//己被其他工号盘点
  13213. }
  13214. else
  13215. {
  13216. returnRows = -24;//己被自己工号盘点
  13217. }
  13218. return returnRows;
  13219. }
  13220. else if (InCheckedFlag == 2)
  13221. {
  13222. if (Convert.ToInt32(ds.Tables[0].Rows[0]["Userid"]) != sUserInfo.UserID)
  13223. {
  13224. returnRows = -23;//己被其他工号盘盈
  13225. }
  13226. else
  13227. {
  13228. returnRows = -25;//己被自己工号盘盈
  13229. }
  13230. return returnRows;
  13231. }
  13232. sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and BarCode=:BarCode and InCheckedFlag=:whereInCheckedFlag";
  13233. Paras = new OracleParameter[] {
  13234. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  13235. sUserInfo.UserID,ParameterDirection.Input),
  13236. new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
  13237. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  13238. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  13239. InCheckedID,ParameterDirection.Input),
  13240. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  13241. BarCode,ParameterDirection.Input),
  13242. new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
  13243. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  13244. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  13245. sUserInfo.UserID,ParameterDirection.Input),
  13246. };
  13247. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13248. returnRows = 1;//防止多次盘点此条码,下面在回滚回来,代码是有作用
  13249. }
  13250. if (returnRows == 0)
  13251. {
  13252. oracleTrConn.Rollback();
  13253. oracleTrConn.Disconnect();
  13254. }
  13255. else
  13256. {
  13257. oracleTrConn.Commit();
  13258. oracleTrConn.Disconnect();
  13259. }
  13260. }
  13261. catch (Exception ex)
  13262. {
  13263. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13264. {
  13265. oracleTrConn.Rollback();
  13266. oracleTrConn.Disconnect();
  13267. }
  13268. throw ex;
  13269. }
  13270. finally
  13271. {
  13272. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13273. {
  13274. oracleTrConn.Disconnect();
  13275. }
  13276. }
  13277. return returnRows;
  13278. }
  13279. /// <summary>
  13280. /// 停用盘点单
  13281. /// </summary>
  13282. /// <param name="InCheckedID">盘点单号</param>
  13283. /// <returns></returns>
  13284. public static int DisableInChecked(int InCheckedID, SUserInfo sUserInfo)
  13285. {
  13286. int returnRows = 0;
  13287. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13288. try
  13289. {
  13290. string sql = "update TP_PM_InChecked set valueflag='0', updateuserid=:updateuserid where InCheckedID=:InCheckedID and valueflag='1'";
  13291. OracleParameter[] Paras = new OracleParameter[] {
  13292. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  13293. InCheckedID,ParameterDirection.Input),
  13294. new OracleParameter(":updateuserid",OracleDbType.Int32,
  13295. sUserInfo.UserID,ParameterDirection.Input)
  13296. };
  13297. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13298. if (returnRows == 0)
  13299. {
  13300. oracleTrConn.Rollback();
  13301. oracleTrConn.Disconnect();
  13302. }
  13303. else
  13304. {
  13305. oracleTrConn.Commit();
  13306. oracleTrConn.Disconnect();
  13307. }
  13308. }
  13309. catch (Exception ex)
  13310. {
  13311. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13312. {
  13313. oracleTrConn.Rollback();
  13314. oracleTrConn.Disconnect();
  13315. }
  13316. throw ex;
  13317. }
  13318. finally
  13319. {
  13320. if (oracleTrConn.ConnState == ConnectionState.Open)
  13321. {
  13322. oracleTrConn.Disconnect();
  13323. }
  13324. }
  13325. return returnRows;
  13326. }
  13327. /// <summary>
  13328. /// 撤销包装
  13329. /// </summary>
  13330. /// <param name="barcode">产品条码</param>
  13331. /// <returns></returns>
  13332. public static ServiceResultEntity AddChancelFinishedproduct(string barcode, SUserInfo sUserInfo)
  13333. {
  13334. ServiceResultEntity entity = new ServiceResultEntity();
  13335. int returnRows = 0;
  13336. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13337. try
  13338. {
  13339. //xuwei add 2019-10-15 修正 撤销包装时 副品变正品
  13340. int goodsLevelID;
  13341. int goodsLevelTypeID;
  13342. //xuwei end
  13343. // 转换注浆条码
  13344. barcode = CommonModuleLogic.CommonModuleLogic.GetBarcode(oracleTrConn, barcode, sUserInfo);
  13345. DateTime? createTime = null;
  13346. // 1 条码是否在产成品表中
  13347. string sql = "select createTime,FHUserCode,GoodsCode,GoodsLevelID,GoodsLevelTypeID from tp_pm_finishedproduct where barcode=:barcode and valueflag=1";
  13348. OracleParameter[] Paras = new OracleParameter[] {
  13349. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13350. barcode,ParameterDirection.Input)
  13351. };
  13352. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13353. if (ds.Tables[0].Rows.Count == 0)
  13354. {
  13355. //不存在产成品
  13356. returnRows = -1;
  13357. oracleTrConn.Rollback();
  13358. oracleTrConn.Disconnect();
  13359. entity.Result = returnRows;
  13360. return entity;
  13361. }
  13362. else
  13363. {
  13364. //wangx 2017-02-10 已经交接不允许撤销
  13365. if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0]["FHUserCode"].ToString()))
  13366. {
  13367. entity.Result = -200; //已交接,不能再次进行交接
  13368. entity.Message = "此产品【" + ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "】已交接,不能进行该操作";
  13369. oracleTrConn.Rollback();
  13370. oracleTrConn.Disconnect();
  13371. return entity;
  13372. }
  13373. //wangx 2017-02-10 end
  13374. createTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["createTime"]); // 成品时间
  13375. //xuwei add 2019-10-15 修正 撤销包装时 副品变正品
  13376. goodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  13377. goodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["goodsLevelTypeID"]);
  13378. //xuwei end
  13379. }
  13380. #region 是否启用成品撤销限制天数
  13381. if (createTime != null)
  13382. {
  13383. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  13384. Paras = new OracleParameter[] {
  13385. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  13386. Constant.SettingType.S_PM_005.ToString(),ParameterDirection.Input),
  13387. new OracleParameter(":accountid",OracleDbType.Int32,
  13388. sUserInfo.AccountID,ParameterDirection.Input)
  13389. };
  13390. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13391. if (ds != null && ds.Tables[0].Rows.Count > 0)
  13392. {
  13393. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  13394. {
  13395. // 开启了限制
  13396. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(createTime),
  13397. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_005.ToString(), sUserInfo);
  13398. if (Convert.ToInt32(resultEntity.Result) < 0)
  13399. {
  13400. //超过成品撤销限制天数
  13401. returnRows = -200;
  13402. oracleTrConn.Rollback();
  13403. oracleTrConn.Disconnect();
  13404. entity.Result = returnRows;
  13405. entity.Message = resultEntity.Message;
  13406. return entity;
  13407. }
  13408. }
  13409. }
  13410. }
  13411. #endregion
  13412. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  13413. Paras = new OracleParameter[] {
  13414. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13415. barcode,ParameterDirection.Input)
  13416. };
  13417. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13418. if (ds.Tables[0].Rows.Count == 0)
  13419. {
  13420. // 2 生产数据恢复到在产生产数据 xuwei 不用处理
  13421. sql = @"insert into tp_pm_productiondatain
  13422. (
  13423. ProductionDataID,
  13424. BarCode,
  13425. CentralizedBatchNo,
  13426. ProductionLineID,
  13427. ProductionLineCode,
  13428. ProductionLineName,
  13429. ProcedureID,
  13430. ProcedureCode,
  13431. ProcedureName,
  13432. ProcedureModel,
  13433. ModelType,
  13434. PieceType,
  13435. IsReworked,
  13436. NodeType,
  13437. IsPublicBody,
  13438. IsReFire,
  13439. GoodsLevelID,
  13440. GoodsLevelTypeID,
  13441. SpecialRepairFlag,
  13442. OrganizationID,
  13443. GoodsID,
  13444. GoodsCode,
  13445. GoodsName,
  13446. UserID,
  13447. UserCode,
  13448. UserName,
  13449. ClassesSettingID,
  13450. KilnID,
  13451. KilnCode,
  13452. KilnName,
  13453. KilnCarID,
  13454. KilnCarCode,
  13455. KilnCarName,
  13456. KilnCarBatchNo,
  13457. KilnCarPosition,
  13458. ReworkProcedureID,
  13459. ReworkProcedureCode,
  13460. ReworkProcedureName,
  13461. GroutingDailyID,
  13462. GroutingDailyDetailID,
  13463. GroutingLineID,
  13464. GroutingLineCode,
  13465. GroutingLineName,
  13466. GMouldTypeID,
  13467. CanManyTimes,
  13468. GroutingLineDetailID,
  13469. GroutingDate,
  13470. GroutingMouldCode,
  13471. MouldCode,
  13472. GroutingUserID,
  13473. GroutingUserCode,
  13474. GroutingNum,
  13475. Remarks,
  13476. AccountDate,
  13477. SettlementFlag,
  13478. AccountID,
  13479. ValueFlag,
  13480. CreateTime,
  13481. CreateUserID,
  13482. UpdateTime,
  13483. UpdateUserID,
  13484. OPTimeStamp,
  13485. TriggerFlag,
  13486. LogoID,
  13487. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  13488. )
  13489. select
  13490. ProductionDataID,
  13491. BarCode,
  13492. CentralizedBatchNo,
  13493. ProductionLineID,
  13494. ProductionLineCode,
  13495. ProductionLineName,
  13496. ProcedureID,
  13497. ProcedureCode,
  13498. ProcedureName,
  13499. ProcedureModel,
  13500. ModelType,
  13501. PieceType,
  13502. IsReworked,
  13503. NodeType,
  13504. IsPublicBody,
  13505. IsReFire,
  13506. GoodsLevelID,
  13507. GoodsLevelTypeID,
  13508. SpecialRepairFlag,
  13509. OrganizationID,
  13510. GoodsID,
  13511. GoodsCode,
  13512. GoodsName,
  13513. UserID,
  13514. UserCode,
  13515. UserName,
  13516. ClassesSettingID,
  13517. KilnID,
  13518. KilnCode,
  13519. KilnName,
  13520. KilnCarID,
  13521. KilnCarCode,
  13522. KilnCarName,
  13523. KilnCarBatchNo,
  13524. KilnCarPosition,
  13525. ReworkProcedureID,
  13526. ReworkProcedureCode,
  13527. ReworkProcedureName,
  13528. GroutingDailyID,
  13529. GroutingDailyDetailID,
  13530. GroutingLineID,
  13531. GroutingLineCode,
  13532. GroutingLineName,
  13533. GMouldTypeID,
  13534. CanManyTimes,
  13535. GroutingLineDetailID,
  13536. GroutingDate,
  13537. GroutingMouldCode,
  13538. MouldCode,
  13539. GroutingUserID,
  13540. GroutingUserCode,
  13541. GroutingNum,
  13542. Remarks,
  13543. AccountDate,
  13544. SettlementFlag,
  13545. AccountID,
  13546. ValueFlag,
  13547. CreateTime,
  13548. CreateUserID,
  13549. UpdateTime,
  13550. UpdateUserID,
  13551. OPTimeStamp,
  13552. 1,
  13553. LogoID,
  13554. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  13555. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  13556. ";
  13557. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13558. }
  13559. // 3 停用在产生产数据包装数据
  13560. sql = "update TP_PM_ProductionDataIn set valueflag=0,updateuserID=" + sUserInfo.UserID
  13561. + " where ProductionDataID=(select max(ProductionDataID) from TP_PM_ProductionDataIn where barcode=:barcode and valueflag=1)";
  13562. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13563. // 4 插入在产数据
  13564. //xuwei fix 2019-10-15 修正 撤销包装时 副品变正品
  13565. sql = $@"insert into TP_PM_InProduction
  13566. (
  13567. BarCode,
  13568. ProductionLineID,
  13569. ProductionLineCode,
  13570. ProductionLineName,
  13571. FlowProcedureID,
  13572. FlowProcedureTime,
  13573. ProcedureID,
  13574. ProcedureTime,
  13575. ProductionDataID,
  13576. ProcedureModel,
  13577. ModelType,
  13578. DefectFlag,
  13579. ReworkProcedureID,
  13580. IsPublicBody,
  13581. IsReFire,
  13582. SpecialRepairFlag,
  13583. GoodsLevelID,
  13584. GoodsLevelTypeID,
  13585. GoodsID,
  13586. GoodsCode,
  13587. GoodsName,
  13588. UserID,
  13589. GroutingDailyID,
  13590. GroutingDailyDetailID,
  13591. GroutingDate,
  13592. GroutingLineID,
  13593. GroutingLineCode,
  13594. GroutingLineName,
  13595. GMouldTypeID,
  13596. CanManyTimes,
  13597. GroutingLineDetailID,
  13598. GroutingMouldCode,
  13599. MouldCode,
  13600. GroutingUserID,
  13601. GroutingUserCode,
  13602. GroutingNum,
  13603. Remarks,
  13604. KilnID,
  13605. KilnCode,
  13606. KilnName,
  13607. KilnCarID,
  13608. KilnCarCode,
  13609. KilnCarName,
  13610. KilnCarBatchNo,
  13611. KilnCarPosition,
  13612. AccountID,
  13613. ValueFlag,
  13614. CreateTime,
  13615. CreateUserID,
  13616. UpdateTime,
  13617. UpdateUserID,
  13618. OPTimeStamp,
  13619. LogoID
  13620. )
  13621. select
  13622. BarCode,
  13623. ProductionLineID,
  13624. ProductionLineCode,
  13625. ProductionLineName,
  13626. ProcedureID,
  13627. CreateTime,
  13628. ProcedureID,
  13629. CreateTime,
  13630. ProductionDataID,
  13631. ProcedureModel,
  13632. ModelType,
  13633. 0,
  13634. ReworkProcedureID,
  13635. IsPublicBody,
  13636. IsReFire,
  13637. SpecialRepairFlag,
  13638. {goodsLevelID} AS GoodsLevelID,
  13639. {goodsLevelTypeID} AS GoodsLevelTypeID,
  13640. GoodsID,
  13641. GoodsCode,
  13642. GoodsName,
  13643. UserID,
  13644. GroutingDailyID,
  13645. GroutingDailyDetailID,
  13646. GroutingDate,
  13647. GroutingLineID,
  13648. GroutingLineCode,
  13649. GroutingLineName,
  13650. GMouldTypeID,
  13651. CanManyTimes,
  13652. GroutingLineDetailID,
  13653. GroutingMouldCode,
  13654. MouldCode,
  13655. GroutingUserID,
  13656. GroutingUserCode,
  13657. GroutingNum,
  13658. Remarks,
  13659. KilnID,
  13660. KilnCode,
  13661. KilnName,
  13662. KilnCarID,
  13663. KilnCarCode,
  13664. KilnCarName,
  13665. KilnCarBatchNo,
  13666. KilnCarPosition,
  13667. AccountID,
  13668. ValueFlag,
  13669. CreateTime,
  13670. CreateUserID,
  13671. UpdateTime,
  13672. UpdateUserID,
  13673. OPTimeStamp,
  13674. LogoID
  13675. from TP_PM_ProductionData where TP_PM_ProductionData.ProductionDataID=(select max(ProductionDataID) from TP_PM_ProductionData where barcode=:barcode and valueflag=1)";
  13676. //xuwei end
  13677. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13678. // 5 删除产成品表
  13679. sql = "delete from tp_pm_finishedproduct where barcode=:barcode and valueflag=1";
  13680. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13681. if (returnRows <= 0)
  13682. {
  13683. oracleTrConn.Rollback();
  13684. oracleTrConn.Disconnect();
  13685. }
  13686. else
  13687. {
  13688. oracleTrConn.Commit();
  13689. oracleTrConn.Disconnect();
  13690. }
  13691. }
  13692. catch (Exception ex)
  13693. {
  13694. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13695. {
  13696. oracleTrConn.Rollback();
  13697. oracleTrConn.Disconnect();
  13698. }
  13699. throw ex;
  13700. }
  13701. finally
  13702. {
  13703. if (oracleTrConn.ConnState == ConnectionState.Open)
  13704. {
  13705. oracleTrConn.Disconnect();
  13706. }
  13707. }
  13708. entity.Result = returnRows;
  13709. return entity;
  13710. }
  13711. /// <summary>
  13712. /// 公坯设定
  13713. /// </summary>
  13714. /// <param name="barcode">产品条码</param>
  13715. /// <returns></returns>
  13716. public static int AddPublicBodyProduct(string barcode, SUserInfo sUserInfo)
  13717. {
  13718. int returnRows = 0;
  13719. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13720. try
  13721. {
  13722. // 1 条码是否在在产表中
  13723. string sql = "select ispublicbody from tp_pm_inproduction where barcode=:barcode and valueflag=1";
  13724. OracleParameter[] Paras = new OracleParameter[] {
  13725. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13726. barcode,ParameterDirection.Input)
  13727. };
  13728. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13729. if (ds.Tables[0].Rows.Count == 0)
  13730. {
  13731. //不存在生产线上,
  13732. returnRows = -1;
  13733. oracleTrConn.Rollback();
  13734. oracleTrConn.Disconnect();
  13735. return returnRows;
  13736. }
  13737. else
  13738. {
  13739. if (ds.Tables[0].Rows[0]["ispublicbody"].ToString() == "1")
  13740. {
  13741. returnRows = -2;
  13742. oracleTrConn.Rollback();
  13743. oracleTrConn.Disconnect();
  13744. return returnRows;
  13745. }
  13746. }
  13747. // 2 TP_PM_GroutingDailyDetail 在产盘点明细
  13748. sql = "update TP_PM_GroutingDailyDetail set ispublicbody=1 where barcode=:barcode";
  13749. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13750. // 3 TP_PM_InCheckedDetail
  13751. sql = "update TP_PM_InCheckedDetail set ispublicbody=1 where barcode=:barcode";
  13752. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13753. // 4 TP_PM_InProduction
  13754. sql = "update TP_PM_InProduction set ispublicbody=1 where barcode=:barcode";
  13755. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13756. // 5 TP_PM_InProductionTrash
  13757. sql = "update TP_PM_InProductionTrash set ispublicbody=1 where barcode=:barcode";
  13758. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13759. // 6 TP_PM_ProductionDataIn
  13760. sql = "update TP_PM_ProductionDataIn set ispublicbody=1 where barcode=:barcode";
  13761. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13762. // 7 TP_PM_ScrapProduct
  13763. sql = "update TP_PM_ScrapProduct set ispublicbody=1 where barcode=:barcode";
  13764. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13765. if (returnRows <= 0)
  13766. {
  13767. oracleTrConn.Rollback();
  13768. oracleTrConn.Disconnect();
  13769. }
  13770. else
  13771. {
  13772. oracleTrConn.Commit();
  13773. oracleTrConn.Disconnect();
  13774. }
  13775. }
  13776. catch (Exception ex)
  13777. {
  13778. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13779. {
  13780. oracleTrConn.Rollback();
  13781. oracleTrConn.Disconnect();
  13782. }
  13783. throw ex;
  13784. }
  13785. finally
  13786. {
  13787. if (oracleTrConn.ConnState == ConnectionState.Open)
  13788. {
  13789. oracleTrConn.Disconnect();
  13790. }
  13791. }
  13792. return returnRows;
  13793. }
  13794. /// <summary>
  13795. /// 交坯保存校验(首节点)
  13796. /// </summary>
  13797. /// <param name="oracleTrConn">连接对象</param>
  13798. /// <param name="procedureID">工序ID</param>
  13799. /// <param name="barcode">条码</param>
  13800. /// <param name="goodsID">返回的产品ID</param>
  13801. /// <param name="goodsCode">返回的产品Code</param>
  13802. /// <param name="goodsName">返回的产品名称</param>
  13803. /// <param name="groutingUserID">返回的注浆者ID</param>
  13804. /// <returns>string</returns>
  13805. /// <remarks>
  13806. /// 陈冰 2014.09.18 新建
  13807. /// </remarks>
  13808. private static string CheckBarcodeDeliverMud(IDBTransaction oracleTrConn,
  13809. int procedureID,
  13810. string barcode,
  13811. out int goodsID,
  13812. out string goodsCode,
  13813. out string goodsName,
  13814. out string groutingUserCode,
  13815. SUserInfo sUserInfo, ref int? GroutingDailyDetailID
  13816. )
  13817. {
  13818. try
  13819. {
  13820. string sql = "select barcodestatus,barcode,GroutingDailyDetailid from TP_PM_USEDBARCODE where barcode=:barcode";
  13821. OracleParameter[] paras = new OracleParameter[]{
  13822. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  13823. };
  13824. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  13825. string ErrorMessage = "";
  13826. if (ds != null && ds.Tables[0].Rows.Count == 0)
  13827. {
  13828. ErrorMessage = "无效条码";
  13829. }
  13830. else
  13831. {
  13832. //不等于空的时候
  13833. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  13834. {
  13835. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + ds.Tables[0].Rows[0]["barcode"].ToString() + "'";
  13836. string newbarcode = oracleTrConn.GetSqlResultToStr(sql);
  13837. ErrorMessage = "条码已被替换,新条码为" + newbarcode;
  13838. }
  13839. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  13840. {
  13841. ErrorMessage = "产品开模时已损坏";
  13842. }
  13843. // 已经交坯
  13844. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" ||
  13845. ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4")
  13846. {
  13847. //ErrorMessage = "产品已交坯";
  13848. ErrorMessage = "产品已在产";
  13849. }
  13850. }
  13851. string sqlString = @"select
  13852. GroutingDailyDetailid,
  13853. GoodsID,
  13854. GoodsCode,
  13855. GoodsName,
  13856. UserCode as GroutingUserCode,
  13857. groutingcount as GroutingNum,
  13858. GroutingMouldCode as MouldCode,
  13859. ispublicbody,
  13860. Groutingdate,
  13861. SpecialRepairFlag
  13862. from
  13863. tp_pm_GroutingDailyDetail
  13864. where tp_pm_GroutingDailyDetail.groutingdailydetailid=:groutingdailydetailid";
  13865. paras = new OracleParameter[]{
  13866. new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  13867. };
  13868. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  13869. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  13870. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  13871. goodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  13872. groutingUserCode = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  13873. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  13874. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  13875. paras = new OracleParameter[]{
  13876. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  13877. new OracleParameter(":ProcedureID",procedureID),
  13878. };
  13879. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sqlExistGoods, paras);
  13880. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  13881. {
  13882. ErrorMessage = @"条码[" + barcode +
  13883. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  13884. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  13885. }
  13886. return ErrorMessage;
  13887. }
  13888. catch (Exception ex)
  13889. {
  13890. throw ex;
  13891. }
  13892. }
  13893. /// <summary>
  13894. /// 标准计件(单点采集)
  13895. /// </summary>
  13896. /// <param name="oracleTrConn">数据连接对象</param>
  13897. /// <param name="procedure">工序对象</param>
  13898. /// <param name="barcodeTable">条码信息</param>
  13899. /// <param name="sUserInfo">用户基本信息</param>
  13900. /// <param name="goodsID">返回的产品ID</param>
  13901. /// <param name="goodsCode">返回的产品Code</param>
  13902. /// <param name="goodsName">返回的产品名称</param>
  13903. /// <param name="groutingUserID">返回的注浆者ID</param>
  13904. /// <returns>string</returns>
  13905. /// <remarks>
  13906. /// 陈冰 2014.09.18 新建
  13907. /// </remarks>
  13908. private static string AddNormalWorkPiece2(IDBTransaction oracleTrConn,
  13909. ProcedureEntity procedure,
  13910. DataTable barcodeTable,
  13911. SUserInfo sUserInfo,
  13912. out int goodsID,
  13913. out string goodsCode,
  13914. out string goodsName,
  13915. out string groutingUserCode)
  13916. {
  13917. try
  13918. {
  13919. goodsID = Constant.INT_IS_ZERO;
  13920. goodsCode = null;
  13921. goodsName = null;
  13922. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  13923. // 获得账务日期
  13924. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  13925. string errMsg = string.Empty;
  13926. // 本批采集的批次号
  13927. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  13928. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  13929. // 条码信息
  13930. foreach (DataRow barcodeRow in barcodeTable.Rows)
  13931. {
  13932. // 条码
  13933. string barcode = barcodeRow["Barcode"].ToString();
  13934. if (string.IsNullOrEmpty(barcode))
  13935. {
  13936. throw new Exception("传入的条码号为空");
  13937. }
  13938. // 生产工号
  13939. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  13940. // 生产工号
  13941. string workUserCode = barcodeRow["UserCode"].ToString();
  13942. //生产数据ID
  13943. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  13944. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  13945. int? GroutingDailyDetailID = null;//注浆明细ID
  13946. if (procedure.CollectType == 1)
  13947. {
  13948. // ccc todo
  13949. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  13950. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  13951. {
  13952. #region 校验条码有效性
  13953. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  13954. if (!string.IsNullOrEmpty(errMsg))
  13955. {
  13956. return errMsg;
  13957. }
  13958. #endregion
  13959. }
  13960. else
  13961. {
  13962. #region 校验条码有效性
  13963. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  13964. if (!string.IsNullOrEmpty(errMsg))
  13965. {
  13966. return errMsg;
  13967. }
  13968. #endregion
  13969. }
  13970. }
  13971. else
  13972. {
  13973. // string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  13974. // tp_pm_groutingdailydetail.goodscode,
  13975. // tp_pm_groutingdailydetail.goodsname,
  13976. // tp_pm_groutingdailydetail.usercode as groutingUserCode
  13977. // from tp_pm_groutingdailydetail where barcode=:barcode
  13978. // ";
  13979. string sqlGroutingInfo = "";
  13980. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  13981. // tp_pm_groutingdailydetail.goodscode,
  13982. // tp_pm_groutingdailydetail.goodsname,
  13983. // tp_pm_groutingdailydetail.usercode as groutingUserCode
  13984. // from tp_pm_groutingdailydetail where barcode=:barcode
  13985. // ";
  13986. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  13987. //{
  13988. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  13989. tp_pm_groutingdailydetail.goodscode,
  13990. tp_pm_groutingdailydetail.goodsname,
  13991. tp_pm_groutingdailydetail.usercode as groutingUserCode
  13992. from tp_pm_groutingdailydetail where groutingdailydetailid in
  13993. (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  13994. ";
  13995. //}
  13996. OracleParameter[] ReFireparas = new OracleParameter[] {
  13997. new OracleParameter(":barcode",barcode),
  13998. };
  13999. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  14000. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  14001. {
  14002. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  14003. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  14004. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  14005. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  14006. }
  14007. }
  14008. int? ClassesSettingID = null;//班次配置ID
  14009. #region 添加生产者数据
  14010. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  14011. {
  14012. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  14013. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  14014. {
  14015. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  14016. }
  14017. else
  14018. {
  14019. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  14020. }
  14021. }
  14022. else
  14023. {
  14024. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  14025. }
  14026. if (!string.IsNullOrEmpty(errMsg))
  14027. {
  14028. return errMsg;
  14029. }
  14030. #endregion
  14031. #region 添加生产数据
  14032. ProductionDataEntity productionData = new ProductionDataEntity();
  14033. #region 属性赋值
  14034. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  14035. productionData.ClassesSettingID = ClassesSettingID;
  14036. productionData.ProductionDataID = productionDataID;
  14037. productionData.Barcode = barcode;
  14038. productionData.CentralizedBatchNo = centralizedBatchNo;
  14039. productionData.ProductionLineID = procedure.ProductionLineID;
  14040. productionData.ProductionLineCode = procedure.ProductionlineCode;
  14041. productionData.ProductionLineName = procedure.ProductionlineName;
  14042. productionData.CompleteProcedureID = procedure.ProcedureID;
  14043. productionData.ProcedureCode = procedure.ProcedureCode;
  14044. productionData.ProcedureName = procedure.ProcedureName;
  14045. productionData.ProcedureModel = procedure.ProcedureModel;
  14046. productionData.ModelType = procedure.ModelType;
  14047. productionData.NodeType = procedure.NodeType;
  14048. productionData.PieceType = procedure.PieceType;
  14049. if (procedure.IsSpecialRework == 0)
  14050. {
  14051. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  14052. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  14053. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  14054. //xuwei 2019-09-18 交坯节点判定 0引用 不做处理
  14055. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  14056. {
  14057. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  14058. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  14059. }
  14060. ////// else
  14061. ////// {
  14062. ////// string sqlReFire = @"select
  14063. ////// isrefire
  14064. ////// from tp_pm_inproduction where barcode=:barcode
  14065. ////// ";
  14066. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  14067. ////// new OracleParameter(":barcode",barcode),
  14068. ////// };
  14069. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  14070. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  14071. ////// {
  14072. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  14073. ////// {
  14074. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  14075. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  14076. ////// //{
  14077. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  14078. ////// //}
  14079. ////// }
  14080. ////// }
  14081. ////// }
  14082. }
  14083. else if (procedure.IsSpecialRework == 2)
  14084. {
  14085. productionData.IsLengBu = 1;
  14086. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  14087. }
  14088. else
  14089. {
  14090. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  14091. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  14092. }
  14093. productionData.ReworkProcedureID = null;
  14094. #region 交坯判断
  14095. // 交坯节点
  14096. if (barcodeTable.Columns.Contains("IsPublicBody"))
  14097. {
  14098. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  14099. }
  14100. // 非交坯节点
  14101. else
  14102. {
  14103. // 正常坯
  14104. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  14105. }
  14106. #endregion
  14107. productionData.OrganizationID = procedure.OrganizationID;
  14108. productionData.GoodsID = goodsID;
  14109. productionData.GoodsCode = goodsCode;
  14110. productionData.GoodsName = goodsName;
  14111. productionData.UserID = workUserID;
  14112. productionData.UserCode = barcodeRow["UserCode"].ToString();
  14113. productionData.UserName = barcodeRow["UserName"].ToString();
  14114. #endregion
  14115. string OutSpecialRepairflag = "0";//干补标识
  14116. DataSet outDataSet = null;
  14117. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  14118. //xuwei fix 2019-09-26 使用通用方法判定
  14119. // 2019-1016
  14120. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  14121. {
  14122. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  14123. if (isNodeBegin == 0)
  14124. {
  14125. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  14126. }
  14127. }
  14128. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  14129. {
  14130. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  14131. }
  14132. else
  14133. {
  14134. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  14135. }
  14136. if (!string.IsNullOrEmpty(errMsg))
  14137. {
  14138. return errMsg;
  14139. }
  14140. #endregion
  14141. #region 开始节点
  14142. //xuwei remove 2019-09-26 此处为重复判定移除
  14143. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  14144. //xuwei fix 2019-09-26 使用通用方法判定
  14145. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  14146. // 2019-1016
  14147. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  14148. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  14149. {
  14150. #region 添加在产产品数据
  14151. InProductionEntity addInProductionEntity = new InProductionEntity();
  14152. addInProductionEntity.BarCode = barcode;
  14153. //流程工序ID
  14154. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  14155. // 当前工序
  14156. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  14157. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  14158. // 工序模型
  14159. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  14160. // 工序类别
  14161. addInProductionEntity.ModelType = procedure.ModelType;
  14162. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  14163. addInProductionEntity.ProductionDataID = productionDataID;
  14164. #region 交坯判断
  14165. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  14166. #endregion
  14167. // 生产工号
  14168. addInProductionEntity.UserID = workUserID;
  14169. // 执行添加
  14170. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  14171. // 执行失败
  14172. if (!string.IsNullOrEmpty(errMsg))
  14173. {
  14174. return errMsg;
  14175. }
  14176. #endregion
  14177. }
  14178. #endregion
  14179. #region 中间节点
  14180. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  14181. {
  14182. #region 修改在产产品数据的当前工序,清空返工工序字段
  14183. InProductionEntity addInProductionEntity = new InProductionEntity();
  14184. addInProductionEntity.BarCode = barcode;
  14185. //流程工序ID
  14186. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  14187. // 当前工序
  14188. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  14189. //当前生产数据ID
  14190. addInProductionEntity.ProductionDataID = productionDataID;
  14191. // 工序模型
  14192. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  14193. // 工序类别
  14194. addInProductionEntity.ModelType = procedure.ModelType;
  14195. // 生产工号
  14196. addInProductionEntity.UserID = workUserID;
  14197. // 缺陷标识
  14198. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  14199. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  14200. if (procedure.IsSpecialRework == 0)
  14201. {
  14202. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  14203. }
  14204. else if (procedure.IsSpecialRework == 2)
  14205. {
  14206. addInProductionEntity.IsLengBu = 1;
  14207. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  14208. }
  14209. else
  14210. {
  14211. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  14212. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  14213. }
  14214. #region 交坯判断
  14215. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  14216. #endregion
  14217. // 执行修改
  14218. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  14219. // 执行失败
  14220. if (!string.IsNullOrEmpty(errMsg))
  14221. {
  14222. return errMsg;
  14223. }
  14224. #endregion
  14225. }
  14226. #endregion
  14227. #region 结束节点
  14228. else
  14229. {
  14230. #region 添加成品数据 删除在产产品数据
  14231. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  14232. finishedProduct.BarCode = barcode;
  14233. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  14234. if (!string.IsNullOrEmpty(errMsg))
  14235. {
  14236. return errMsg;
  14237. }
  14238. InProductionEntity delInProductionEntity = new InProductionEntity();
  14239. delInProductionEntity.BarCode = barcode;
  14240. // 执行删除 在产数据
  14241. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  14242. // 执行失败
  14243. if (!string.IsNullOrEmpty(errMsg))
  14244. {
  14245. return errMsg;
  14246. }
  14247. #endregion
  14248. }
  14249. #endregion
  14250. }
  14251. return errMsg;
  14252. }
  14253. catch (Exception ex)
  14254. {
  14255. throw ex;
  14256. }
  14257. }
  14258. /// <summary>
  14259. /// 标准计件
  14260. /// </summary>
  14261. /// <param name="oracleTrConn">数据连接对象</param>
  14262. /// <param name="procedure">工序对象</param>
  14263. /// <param name="barcodeTable">条码信息</param>
  14264. /// <param name="sUserInfo">用户基本信息</param>
  14265. /// <param name="goodsID">返回的产品ID</param>
  14266. /// <param name="goodsCode">返回的产品Code</param>
  14267. /// <param name="goodsName">返回的产品名称</param>
  14268. /// <param name="groutingUserID">返回的注浆者ID</param>
  14269. /// <returns>string</returns>
  14270. /// <remarks>
  14271. /// 陈冰 2014.09.18 新建
  14272. /// </remarks>
  14273. private static string AddNormalWorkPieceSinglePoint(IDBTransaction oracleTrConn,
  14274. ProcedureEntity procedure,
  14275. DataTable barcodeTable,
  14276. SUserInfo sUserInfo,
  14277. int goodsID,
  14278. string goodsCode,
  14279. string goodsName,
  14280. string groutingUserCode,
  14281. int? arvGroutingDailyDetailID,
  14282. bool isSendBody = false)
  14283. {
  14284. try
  14285. {
  14286. //goodsID = Constant.INT_IS_ZERO;
  14287. //goodsCode = null;
  14288. //goodsName = null;
  14289. //groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  14290. // 获得账务日期
  14291. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  14292. string errMsg = string.Empty;
  14293. // 本批采集的批次号
  14294. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  14295. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  14296. // 条码信息
  14297. foreach (DataRow barcodeRow in barcodeTable.Rows)
  14298. {
  14299. // 条码
  14300. string barcode = barcodeRow["Barcode"].ToString();
  14301. if (string.IsNullOrEmpty(barcode))
  14302. {
  14303. throw new Exception("传入的条码号为空");
  14304. }
  14305. // 生产工号
  14306. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  14307. // 生产工号
  14308. string workUserCode = barcodeRow["UserCode"].ToString();
  14309. //生产数据ID
  14310. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  14311. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  14312. int? GroutingDailyDetailID = arvGroutingDailyDetailID;//注浆明细ID
  14313. if (procedure.CollectType == 1)
  14314. {
  14315. // ccc todo
  14316. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  14317. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  14318. {
  14319. #region 校验条码有效性
  14320. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  14321. if (!string.IsNullOrEmpty(errMsg))
  14322. {
  14323. return errMsg;
  14324. }
  14325. #endregion
  14326. }
  14327. else
  14328. {
  14329. #region 校验条码有效性
  14330. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  14331. if (!string.IsNullOrEmpty(errMsg))
  14332. {
  14333. return errMsg;
  14334. }
  14335. #endregion
  14336. }
  14337. }
  14338. else
  14339. {
  14340. // string sqlGroutingInfo = "";
  14341. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  14342. // tp_pm_groutingdailydetail.goodscode,
  14343. // tp_pm_groutingdailydetail.goodsname,
  14344. // tp_pm_groutingdailydetail.usercode as groutingUserCode,
  14345. // tp_pm_groutingdailydetail.GroutingDailyDetailID
  14346. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  14347. // (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  14348. // ";
  14349. // OracleParameter[] ReFireparas = new OracleParameter[] {
  14350. // new OracleParameter(":barcode",barcode),
  14351. // };
  14352. // DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  14353. // if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  14354. // {
  14355. // GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  14356. // goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  14357. // goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  14358. // goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  14359. // groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  14360. // }
  14361. }
  14362. int? ClassesSettingID = null;//班次配置ID
  14363. #region 添加生产者数据
  14364. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  14365. {
  14366. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  14367. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  14368. {
  14369. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  14370. }
  14371. else
  14372. {
  14373. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  14374. }
  14375. }
  14376. else
  14377. {
  14378. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  14379. }
  14380. if (!string.IsNullOrEmpty(errMsg))
  14381. {
  14382. return errMsg;
  14383. }
  14384. #endregion
  14385. #region 添加生产数据
  14386. ProductionDataEntity productionData = new ProductionDataEntity();
  14387. if (barcodeTable.Columns.Contains("Remarks"))
  14388. {
  14389. productionData.Remarks = barcodeRow["Remarks"] + "";
  14390. }
  14391. #region 属性赋值
  14392. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  14393. productionData.ClassesSettingID = ClassesSettingID;
  14394. productionData.ProductionDataID = productionDataID;
  14395. productionData.Barcode = barcode;
  14396. productionData.CentralizedBatchNo = centralizedBatchNo;
  14397. productionData.ProductionLineID = procedure.ProductionLineID;
  14398. productionData.ProductionLineCode = procedure.ProductionlineCode;
  14399. productionData.ProductionLineName = procedure.ProductionlineName;
  14400. productionData.CompleteProcedureID = procedure.ProcedureID;
  14401. productionData.ProcedureCode = procedure.ProcedureCode;
  14402. productionData.ProcedureName = procedure.ProcedureName;
  14403. productionData.ProcedureModel = procedure.ProcedureModel;
  14404. productionData.ModelType = procedure.ModelType;
  14405. productionData.NodeType = procedure.NodeType;
  14406. productionData.PieceType = procedure.PieceType;
  14407. //冷补后列新窑车批次号 xuwei add 2020-06-11
  14408. if (procedure.ModelType == 10) productionData.KilnCarBatchNo = centralizedBatchNo;
  14409. if (barcodeRow["LogoID"].ToString() != "")
  14410. {
  14411. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  14412. }
  14413. if (procedure.IsSpecialRework == 0)
  14414. {
  14415. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  14416. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  14417. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  14418. //xuwei fix 2019-09-18 交坯节点判定修改
  14419. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  14420. if (isSendBody)//是交坯节点,肯定不会是重烧
  14421. {
  14422. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  14423. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  14424. }
  14425. ////// else
  14426. ////// {
  14427. ////// string sqlReFire = @"select
  14428. ////// isrefire
  14429. ////// from tp_pm_inproduction where barcode=:barcode
  14430. ////// ";
  14431. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  14432. ////// new OracleParameter(":barcode",barcode),
  14433. ////// };
  14434. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  14435. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  14436. ////// {
  14437. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  14438. ////// {
  14439. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  14440. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  14441. ////// //{
  14442. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  14443. ////// //}
  14444. ////// }
  14445. ////// }
  14446. ////// }
  14447. }
  14448. else if (procedure.IsSpecialRework == 2)
  14449. {
  14450. productionData.IsLengBu = 1;
  14451. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  14452. }
  14453. else
  14454. {
  14455. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  14456. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  14457. }
  14458. productionData.ReworkProcedureID = null;
  14459. #region 交坯判断
  14460. // 交坯节点
  14461. if (barcodeTable.Columns.Contains("IsPublicBody"))
  14462. {
  14463. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  14464. }
  14465. // 非交坯节点
  14466. else
  14467. {
  14468. // 正常坯
  14469. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  14470. }
  14471. #endregion
  14472. productionData.OrganizationID = procedure.OrganizationID;
  14473. productionData.GoodsID = goodsID;
  14474. productionData.GoodsCode = goodsCode;
  14475. productionData.GoodsName = goodsName;
  14476. productionData.UserID = workUserID;
  14477. productionData.UserCode = barcodeRow["UserCode"].ToString();
  14478. productionData.UserName = barcodeRow["UserName"].ToString();
  14479. #endregion
  14480. string OutSpecialRepairflag = "0";//干补标识
  14481. DataSet outDataSet = null;
  14482. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  14483. //xuwei fix 2019-09-26 使用通用方法判定
  14484. // 2019-1016
  14485. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  14486. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  14487. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  14488. {
  14489. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  14490. if (isNodeBegin == 0)
  14491. {
  14492. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  14493. }
  14494. }
  14495. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  14496. {
  14497. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  14498. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet, isSendBody);
  14499. }
  14500. else
  14501. {
  14502. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  14503. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, isSendBody);
  14504. }
  14505. if (!string.IsNullOrEmpty(errMsg))
  14506. {
  14507. return errMsg;
  14508. }
  14509. #endregion
  14510. #region 开始节点
  14511. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  14512. {
  14513. #region 添加在产产品数据
  14514. InProductionEntity addInProductionEntity = new InProductionEntity();
  14515. addInProductionEntity.BarCode = barcode;
  14516. //流程工序ID
  14517. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  14518. // 当前工序
  14519. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  14520. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  14521. // 工序模型
  14522. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  14523. // 工序类别
  14524. addInProductionEntity.ModelType = procedure.ModelType;
  14525. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  14526. addInProductionEntity.ProductionDataID = productionDataID;
  14527. #region 交坯判断
  14528. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  14529. #endregion
  14530. //冷补后列新窑车批次号 xuwei add 2020-06-11
  14531. if (procedure.ModelType == 10) addInProductionEntity.KilnCarBatchNo = centralizedBatchNo;
  14532. // 生产工号
  14533. addInProductionEntity.UserID = workUserID;
  14534. // 执行添加
  14535. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  14536. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet, isSendBody);
  14537. // 执行失败
  14538. if (!string.IsNullOrEmpty(errMsg))
  14539. {
  14540. return errMsg;
  14541. }
  14542. #endregion
  14543. }
  14544. #endregion
  14545. #region 中间节点
  14546. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  14547. {
  14548. #region 修改在产产品数据的当前工序,清空返工工序字段
  14549. InProductionEntity addInProductionEntity = new InProductionEntity();
  14550. addInProductionEntity.BarCode = barcode;
  14551. //流程工序ID
  14552. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  14553. // 当前工序
  14554. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  14555. //当前生产数据ID
  14556. addInProductionEntity.ProductionDataID = productionDataID;
  14557. // 工序模型
  14558. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  14559. // 工序类别
  14560. addInProductionEntity.ModelType = procedure.ModelType;
  14561. // 生产工号
  14562. addInProductionEntity.UserID = workUserID;
  14563. // 缺陷标识
  14564. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  14565. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  14566. if (procedure.IsSpecialRework == 0)
  14567. {
  14568. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  14569. }
  14570. else if (procedure.IsSpecialRework == 2)
  14571. {
  14572. addInProductionEntity.IsLengBu = 1;
  14573. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  14574. }
  14575. else
  14576. {
  14577. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  14578. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  14579. }
  14580. addInProductionEntity.LogoID = productionData.LogoID == 0 ? null : productionData.LogoID;
  14581. #region 交坯判断
  14582. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  14583. #endregion
  14584. //冷补后列新窑车批次号 xuwei add 2020-06-11
  14585. if (procedure.ModelType == 10) addInProductionEntity.KilnCarBatchNo = centralizedBatchNo;
  14586. // 执行修改
  14587. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  14588. // 执行失败
  14589. if (!string.IsNullOrEmpty(errMsg))
  14590. {
  14591. return errMsg;
  14592. }
  14593. #endregion
  14594. }
  14595. #endregion
  14596. #region 结束节点
  14597. else
  14598. {
  14599. #region 添加成品数据 删除在产产品数据
  14600. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  14601. finishedProduct.BarCode = barcode;
  14602. finishedProduct.LogoID = productionData.LogoID;
  14603. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  14604. if (!string.IsNullOrEmpty(errMsg))
  14605. {
  14606. return errMsg;
  14607. }
  14608. InProductionEntity delInProductionEntity = new InProductionEntity();
  14609. delInProductionEntity.BarCode = barcode;
  14610. // 执行删除 在产数据
  14611. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  14612. // 执行失败
  14613. if (!string.IsNullOrEmpty(errMsg))
  14614. {
  14615. return errMsg;
  14616. }
  14617. #endregion
  14618. }
  14619. #endregion
  14620. }
  14621. return errMsg;
  14622. }
  14623. catch (Exception ex)
  14624. {
  14625. throw ex;
  14626. }
  14627. }
  14628. /// <summary>
  14629. /// 清除在产残留数据(清除选择)
  14630. /// </summary>
  14631. /// <param name="barcodes">产品条码集</param>
  14632. /// <returns></returns>
  14633. public static int SaveClearInproduction(string barcodes, SUserInfo sUserInfo)
  14634. {
  14635. int returnRows = 0;
  14636. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14637. try
  14638. {
  14639. string sql = "";
  14640. string[] subbarcode = barcodes.Split(',');
  14641. OracleParameter[] Paras = null;
  14642. for (int i = 0; i < subbarcode.Length; i++)
  14643. {
  14644. // 0.登窑、入窑、出窑工序的产品不能清除
  14645. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  14646. Paras = new OracleParameter[] {
  14647. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14648. subbarcode[i],ParameterDirection.Input)
  14649. };
  14650. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  14651. if (!string.IsNullOrWhiteSpace(modeltype))
  14652. {
  14653. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  14654. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  14655. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  14656. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  14657. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln)
  14658. {
  14659. continue;
  14660. }
  14661. }
  14662. // 返工标识或者是报损标识不允许清除 2016-07-12
  14663. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  14664. Paras = new OracleParameter[] {
  14665. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14666. subbarcode[i],ParameterDirection.Input)
  14667. };
  14668. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14669. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14670. {
  14671. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  14672. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  14673. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  14674. {
  14675. returnRows = -1;
  14676. break;
  14677. }
  14678. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  14679. {
  14680. returnRows = -2;
  14681. break;
  14682. }
  14683. }
  14684. // 返工标识或者是报损标识不允许清除 end
  14685. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  14686. sql = @"insert into tp_pm_inproduction_tmp
  14687. (
  14688. BARCODE,
  14689. PRODUCTIONLINEID,
  14690. PRODUCTIONLINECODE,
  14691. PRODUCTIONLINENAME,
  14692. PROCEDUREMODEL,
  14693. MODELTYPE,
  14694. REWORKPROCEDUREID,
  14695. ISPUBLICBODY,
  14696. GOODSID,
  14697. GOODSCODE,
  14698. GOODSNAME,
  14699. USERID,
  14700. GROUTINGDAILYID,
  14701. GROUTINGDAILYDETAILID,
  14702. GROUTINGDATE,
  14703. GROUTINGLINEID,
  14704. GROUTINGLINECODE,
  14705. GROUTINGLINENAME,
  14706. GMOULDTYPEID,
  14707. CANMANYTIMES,
  14708. GROUTINGLINEDETAILID,
  14709. GROUTINGMOULDCODE,
  14710. MOULDCODE,
  14711. REMARKS,
  14712. ACCOUNTID,
  14713. VALUEFLAG,
  14714. CREATETIME,
  14715. CREATEUSERID,
  14716. UPDATETIME,
  14717. UPDATEUSERID,
  14718. OPTIMESTAMP,
  14719. ISREFIRE,
  14720. GOODSLEVELID,
  14721. GOODSLEVELTYPEID,
  14722. DEFECTFLAG,
  14723. GROUTINGUSERID,
  14724. GROUTINGUSERCODE,
  14725. GROUTINGNUM,
  14726. KILNID,
  14727. KILNCODE,
  14728. KILNNAME,
  14729. KILNCARID,
  14730. KILNCARCODE,
  14731. KILNCARNAME,
  14732. KILNCARBATCHNO,
  14733. KILNCARPOSITION,
  14734. SPECIALREPAIRFLAG,
  14735. FLOWPROCEDUREID,
  14736. FLOWPROCEDURETIME,
  14737. PROCEDUREID,
  14738. PROCEDURETIME,
  14739. PRODUCTIONDATAID,
  14740. trashflag,
  14741. Deletedtime,
  14742. logoid,
  14743. IsReworkFlag,
  14744. SemiCheckID,
  14745. DELETEDUSERID,
  14746. DELETEDUSERCODE
  14747. )
  14748. select
  14749. BARCODE,
  14750. PRODUCTIONLINEID,
  14751. PRODUCTIONLINECODE,
  14752. PRODUCTIONLINENAME,
  14753. PROCEDUREMODEL,
  14754. MODELTYPE,
  14755. REWORKPROCEDUREID,
  14756. ISPUBLICBODY,
  14757. GOODSID,
  14758. GOODSCODE,
  14759. GOODSNAME,
  14760. USERID,
  14761. GROUTINGDAILYID,
  14762. GROUTINGDAILYDETAILID,
  14763. GROUTINGDATE,
  14764. GROUTINGLINEID,
  14765. GROUTINGLINECODE,
  14766. GROUTINGLINENAME,
  14767. GMOULDTYPEID,
  14768. CANMANYTIMES,
  14769. GROUTINGLINEDETAILID,
  14770. GROUTINGMOULDCODE,
  14771. MOULDCODE,
  14772. REMARKS,
  14773. ACCOUNTID,
  14774. VALUEFLAG,
  14775. CREATETIME,
  14776. CREATEUSERID,
  14777. UPDATETIME,
  14778. UPDATEUSERID,
  14779. OPTIMESTAMP,
  14780. ISREFIRE,
  14781. GOODSLEVELID,
  14782. GOODSLEVELTYPEID,
  14783. DEFECTFLAG,
  14784. GROUTINGUSERID,
  14785. GROUTINGUSERCODE,
  14786. GROUTINGNUM,
  14787. KILNID,
  14788. KILNCODE,
  14789. KILNNAME,
  14790. KILNCARID,
  14791. KILNCARCODE,
  14792. KILNCARNAME,
  14793. KILNCARBATCHNO,
  14794. KILNCARPOSITION,
  14795. SPECIALREPAIRFLAG,
  14796. FLOWPROCEDUREID,
  14797. FLOWPROCEDURETIME,
  14798. PROCEDUREID,
  14799. PROCEDURETIME,
  14800. PRODUCTIONDATAID,
  14801. INSCRAPFLAG,
  14802. sysdate,
  14803. logoid,
  14804. IsReworkFlag,
  14805. SemiCheckID,
  14806. " + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  14807. "' from tp_pm_inproduction p where p.barcode = :barcode";
  14808. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14809. //删除在产数据
  14810. sql = "delete from tp_pm_inproduction p where p.barcode =:barcode";
  14811. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14812. //删除在产生产数据
  14813. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  14814. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14815. }
  14816. if (returnRows <= 0)
  14817. {
  14818. oracleTrConn.Rollback();
  14819. oracleTrConn.Disconnect();
  14820. }
  14821. else
  14822. {
  14823. oracleTrConn.Commit();
  14824. oracleTrConn.Disconnect();
  14825. }
  14826. }
  14827. catch (Exception ex)
  14828. {
  14829. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14830. {
  14831. oracleTrConn.Rollback();
  14832. oracleTrConn.Disconnect();
  14833. }
  14834. throw ex;
  14835. }
  14836. finally
  14837. {
  14838. if (oracleTrConn.ConnState == ConnectionState.Open)
  14839. {
  14840. oracleTrConn.Disconnect();
  14841. }
  14842. }
  14843. return returnRows;
  14844. }
  14845. #region 清除在产残留数据(批量)
  14846. /// <summary>
  14847. /// 清除在产残留数据(批量清除)
  14848. /// </summary>
  14849. /// <param name="barcodes">产品条码集</param>
  14850. /// <returns></returns>
  14851. public static int SaveClearAllInproduction(SUserInfo user, RPT010401_SE se)
  14852. {
  14853. int returnRows = 0;
  14854. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14855. try
  14856. {
  14857. List<OracleParameter> parameters = new List<OracleParameter>();
  14858. StringBuilder sql = new StringBuilder(GetClearInproductionData(user.AccountID));
  14859. if (se != null)
  14860. {
  14861. //生产线IDS
  14862. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  14863. {
  14864. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction.ProductionLineID||',')>0 ");
  14865. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  14866. }
  14867. //完成工序IDS
  14868. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  14869. {
  14870. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ");
  14871. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  14872. }
  14873. // 生产时间--开始
  14874. if (se.UpdateTimeStart.HasValue)
  14875. {
  14876. sql.Append(" AND TP_PM_InProduction.Proceduretime >= :UpdateTimeStart ");
  14877. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  14878. }
  14879. // 生产时间--结束
  14880. if (se.UpdateTimeEnd.HasValue)
  14881. {
  14882. sql.Append(" AND TP_PM_InProduction.Proceduretime <= :UpdateTimeEnd ");
  14883. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  14884. }
  14885. // 是否清除报损待审产品
  14886. if (se.inscrapflag == 0)
  14887. {
  14888. sql.Append(" AND TP_PM_InProduction.inscrapflag=0 ");
  14889. }
  14890. else
  14891. {
  14892. sql.Append(" AND TP_PM_InProduction.inscrapflag in (0,1) ");
  14893. }
  14894. // 是否清除返工产品
  14895. if (se.IsReworkFlag == 0)
  14896. {
  14897. sql.Append(" AND TP_PM_InProduction.IsReworkFlag=0 ");
  14898. }
  14899. else
  14900. {
  14901. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  14902. //sql.Append(" AND TP_PM_InProduction.IsReworkFlag in (0,1) ");
  14903. }
  14904. }
  14905. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  14906. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  14907. (
  14908. BARCODE,
  14909. PRODUCTIONLINEID,
  14910. PRODUCTIONLINECODE,
  14911. PRODUCTIONLINENAME,
  14912. PROCEDUREMODEL,
  14913. MODELTYPE,
  14914. REWORKPROCEDUREID,
  14915. ISPUBLICBODY,
  14916. GOODSID,
  14917. GOODSCODE,
  14918. GOODSNAME,
  14919. USERID,
  14920. GROUTINGDAILYID,
  14921. GROUTINGDAILYDETAILID,
  14922. GROUTINGDATE,
  14923. GROUTINGLINEID,
  14924. GROUTINGLINECODE,
  14925. GROUTINGLINENAME,
  14926. GMOULDTYPEID,
  14927. CANMANYTIMES,
  14928. GROUTINGLINEDETAILID,
  14929. GROUTINGMOULDCODE,
  14930. MOULDCODE,
  14931. REMARKS,
  14932. ACCOUNTID,
  14933. VALUEFLAG,
  14934. CREATETIME,
  14935. CREATEUSERID,
  14936. UPDATETIME,
  14937. UPDATEUSERID,
  14938. OPTIMESTAMP,
  14939. ISREFIRE,
  14940. GOODSLEVELID,
  14941. GOODSLEVELTYPEID,
  14942. DEFECTFLAG,
  14943. GROUTINGUSERID,
  14944. GROUTINGUSERCODE,
  14945. GROUTINGNUM,
  14946. KILNID,
  14947. KILNCODE,
  14948. KILNNAME,
  14949. KILNCARID,
  14950. KILNCARCODE,
  14951. KILNCARNAME,
  14952. KILNCARBATCHNO,
  14953. KILNCARPOSITION,
  14954. SPECIALREPAIRFLAG,
  14955. FLOWPROCEDUREID,
  14956. FLOWPROCEDURETIME,
  14957. PROCEDUREID,
  14958. PROCEDURETIME,
  14959. PRODUCTIONDATAID,
  14960. trashflag,
  14961. Deletedtime,
  14962. logoid,
  14963. IsReworkFlag,
  14964. SemiCheckID,
  14965. DELETEDUSERID,
  14966. DELETEDUSERCODE
  14967. )
  14968. select
  14969. BARCODE,
  14970. PRODUCTIONLINEID,
  14971. PRODUCTIONLINECODE,
  14972. PRODUCTIONLINENAME,
  14973. PROCEDUREMODEL,
  14974. MODELTYPE,
  14975. REWORKPROCEDUREID,
  14976. ISPUBLICBODY,
  14977. GOODSID,
  14978. GOODSCODE,
  14979. GOODSNAME,
  14980. USERID,
  14981. GROUTINGDAILYID,
  14982. GROUTINGDAILYDETAILID,
  14983. GROUTINGDATE,
  14984. GROUTINGLINEID,
  14985. GROUTINGLINECODE,
  14986. GROUTINGLINENAME,
  14987. GMOULDTYPEID,
  14988. CANMANYTIMES,
  14989. GROUTINGLINEDETAILID,
  14990. GROUTINGMOULDCODE,
  14991. MOULDCODE,
  14992. REMARKS,
  14993. ACCOUNTID,
  14994. VALUEFLAG,
  14995. CREATETIME,
  14996. CREATEUSERID,
  14997. UPDATETIME,
  14998. UPDATEUSERID,
  14999. OPTIMESTAMP,
  15000. ISREFIRE,
  15001. GOODSLEVELID,
  15002. GOODSLEVELTYPEID,
  15003. DEFECTFLAG,
  15004. GROUTINGUSERID,
  15005. GROUTINGUSERCODE,
  15006. GROUTINGNUM,
  15007. KILNID,
  15008. KILNCODE,
  15009. KILNNAME,
  15010. KILNCARID,
  15011. KILNCARCODE,
  15012. KILNCARNAME,
  15013. KILNCARBATCHNO,
  15014. KILNCARPOSITION,
  15015. SPECIALREPAIRFLAG,
  15016. FLOWPROCEDUREID,
  15017. FLOWPROCEDURETIME,
  15018. PROCEDUREID,
  15019. PROCEDURETIME,
  15020. PRODUCTIONDATAID,
  15021. INSCRAPFLAG,
  15022. sysdate,
  15023. logoid,
  15024. IsReworkFlag,
  15025. SemiCheckID,"
  15026. + user.UserID + ",'" + user.UserCode +
  15027. "' from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  15028. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  15029. //删除在产数据
  15030. updatsql1 = "delete from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  15031. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  15032. //删除在产生产数据
  15033. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  15034. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  15035. if (returnRows == 0)
  15036. {
  15037. oracleTrConn.Rollback();
  15038. oracleTrConn.Disconnect();
  15039. }
  15040. else
  15041. {
  15042. oracleTrConn.Commit();
  15043. oracleTrConn.Disconnect();
  15044. }
  15045. }
  15046. catch (Exception ex)
  15047. {
  15048. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15049. {
  15050. oracleTrConn.Rollback();
  15051. oracleTrConn.Disconnect();
  15052. }
  15053. throw ex;
  15054. }
  15055. return returnRows;
  15056. }
  15057. /// <summary>
  15058. /// 获取批量数据
  15059. /// </summary>
  15060. /// <returns></returns>
  15061. private static string GetClearInproductionData(int accountid)
  15062. {
  15063. string selSql =
  15064. "SELECT " +
  15065. " TP_PM_InProduction.BarCode " +
  15066. " FROM TP_PM_InProduction " +
  15067. " Where TP_PM_InProduction.ValueFlag = '1' " +
  15068. " and TP_PM_InProduction.modeltype not in (1,2,3)" +
  15069. " and TP_PM_InProduction.AccountID= " + accountid;
  15070. return selSql;
  15071. }
  15072. #endregion
  15073. #region
  15074. /// <summary>
  15075. /// 清除在产加收站残留数据(清除选择)
  15076. /// </summary>
  15077. /// <param name="barcodes">产品条码集</param>
  15078. /// <returns></returns>
  15079. public static int SaveClearInproductionTrash(string barcodes, SUserInfo user)
  15080. {
  15081. int returnRows = 0;
  15082. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15083. try
  15084. {
  15085. string sql = "";
  15086. string[] subbarcode = barcodes.Split(',');
  15087. OracleParameter[] Paras = null;
  15088. for (int i = 0; i < subbarcode.Length; i++)
  15089. {
  15090. Paras = new OracleParameter[] {
  15091. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15092. subbarcode[i],ParameterDirection.Input)
  15093. };
  15094. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  15095. sql = @"insert into tp_pm_inproduction_tmp
  15096. (
  15097. BARCODE,
  15098. PRODUCTIONLINEID,
  15099. PRODUCTIONLINECODE,
  15100. PRODUCTIONLINENAME,
  15101. PROCEDUREMODEL,
  15102. MODELTYPE,
  15103. REWORKPROCEDUREID,
  15104. ISPUBLICBODY,
  15105. GOODSID,
  15106. GOODSCODE,
  15107. GOODSNAME,
  15108. USERID,
  15109. GROUTINGDAILYID,
  15110. GROUTINGDAILYDETAILID,
  15111. GROUTINGDATE,
  15112. GROUTINGLINEID,
  15113. GROUTINGLINECODE,
  15114. GROUTINGLINENAME,
  15115. GMOULDTYPEID,
  15116. CANMANYTIMES,
  15117. GROUTINGLINEDETAILID,
  15118. GROUTINGMOULDCODE,
  15119. MOULDCODE,
  15120. REMARKS,
  15121. ACCOUNTID,
  15122. VALUEFLAG,
  15123. CREATETIME,
  15124. CREATEUSERID,
  15125. UPDATETIME,
  15126. UPDATEUSERID,
  15127. OPTIMESTAMP,
  15128. ISREFIRE,
  15129. GOODSLEVELID,
  15130. GOODSLEVELTYPEID,
  15131. DEFECTFLAG,
  15132. GROUTINGUSERID,
  15133. GROUTINGUSERCODE,
  15134. GROUTINGNUM,
  15135. KILNID,
  15136. KILNCODE,
  15137. KILNNAME,
  15138. KILNCARID,
  15139. KILNCARCODE,
  15140. KILNCARNAME,
  15141. KILNCARBATCHNO,
  15142. KILNCARPOSITION,
  15143. SPECIALREPAIRFLAG,
  15144. FLOWPROCEDUREID,
  15145. FLOWPROCEDURETIME,
  15146. PROCEDUREID,
  15147. PROCEDURETIME,
  15148. PRODUCTIONDATAID,
  15149. trashflag,
  15150. Deletedtime,
  15151. logoid,
  15152. IsReworkFlag,
  15153. SemiCheckID,
  15154. DELETEDUSERID,
  15155. DELETEDUSERCODE
  15156. )
  15157. select
  15158. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15159. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  15160. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  15161. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15162. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15163. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15164. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  15165. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15166. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  15167. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15168. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15169. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  15170. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  15171. + user.UserID + ",'" + user.UserCode +
  15172. "' from TP_PM_InProductionTrash p where p.barcode = :barcode";
  15173. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15174. //删除在产回收站数据
  15175. sql = "delete from TP_PM_InProductionTrash p where p.barcode =:barcode";
  15176. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15177. //删除在产生产数据
  15178. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  15179. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15180. }
  15181. if (returnRows == 0)
  15182. {
  15183. oracleTrConn.Rollback();
  15184. oracleTrConn.Disconnect();
  15185. }
  15186. else
  15187. {
  15188. oracleTrConn.Commit();
  15189. oracleTrConn.Disconnect();
  15190. }
  15191. }
  15192. catch (Exception ex)
  15193. {
  15194. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15195. {
  15196. oracleTrConn.Rollback();
  15197. oracleTrConn.Disconnect();
  15198. }
  15199. throw ex;
  15200. }
  15201. finally
  15202. {
  15203. if (oracleTrConn.ConnState == ConnectionState.Open)
  15204. {
  15205. oracleTrConn.Disconnect();
  15206. }
  15207. }
  15208. return returnRows;
  15209. }
  15210. #endregion
  15211. #region 清除在产回收站残留数据(批量)
  15212. /// <summary>
  15213. /// 清除在产残留数据(批量清除)
  15214. /// </summary>
  15215. /// <param name="barcodes">产品条码集</param>
  15216. /// <returns></returns>
  15217. public static int SaveClearAllInproductionTrash(SUserInfo user, FPM2110_SE se)
  15218. {
  15219. int returnRows = 0;
  15220. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15221. try
  15222. {
  15223. List<OracleParameter> parameters = new List<OracleParameter>();
  15224. StringBuilder sql = new StringBuilder(GetClearInproductionTrashData(user.AccountID));
  15225. if (se != null)
  15226. {
  15227. //生产线IDS
  15228. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  15229. {
  15230. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProductionTrash.ProductionLineID||',')>0 ");
  15231. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  15232. }
  15233. //完成工序IDS
  15234. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  15235. {
  15236. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProductionTrash.ProcedureID||',')>0 ");
  15237. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  15238. }
  15239. // 生产时间--开始
  15240. if (se.UpdateTimeStart.HasValue)
  15241. {
  15242. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime >= :UpdateTimeStart ");
  15243. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  15244. }
  15245. // 生产时间--结束
  15246. if (se.UpdateTimeEnd.HasValue)
  15247. {
  15248. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime <= :UpdateTimeEnd ");
  15249. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  15250. }
  15251. //报废日期开始
  15252. if (se.ScrapDataStart.HasValue)
  15253. {
  15254. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  15255. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  15256. }
  15257. //报废日期结束
  15258. if (se.ScrapDataEnd.HasValue)
  15259. {
  15260. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  15261. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  15262. }
  15263. // 产品分级
  15264. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  15265. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  15266. }
  15267. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  15268. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  15269. (
  15270. BARCODE,
  15271. PRODUCTIONLINEID,
  15272. PRODUCTIONLINECODE,
  15273. PRODUCTIONLINENAME,
  15274. PROCEDUREMODEL,
  15275. MODELTYPE,
  15276. REWORKPROCEDUREID,
  15277. ISPUBLICBODY,
  15278. GOODSID,
  15279. GOODSCODE,
  15280. GOODSNAME,
  15281. USERID,
  15282. GROUTINGDAILYID,
  15283. GROUTINGDAILYDETAILID,
  15284. GROUTINGDATE,
  15285. GROUTINGLINEID,
  15286. GROUTINGLINECODE,
  15287. GROUTINGLINENAME,
  15288. GMOULDTYPEID,
  15289. CANMANYTIMES,
  15290. GROUTINGLINEDETAILID,
  15291. GROUTINGMOULDCODE,
  15292. MOULDCODE,
  15293. REMARKS,
  15294. ACCOUNTID,
  15295. VALUEFLAG,
  15296. CREATETIME,
  15297. CREATEUSERID,
  15298. UPDATETIME,
  15299. UPDATEUSERID,
  15300. OPTIMESTAMP,
  15301. ISREFIRE,
  15302. GOODSLEVELID,
  15303. GOODSLEVELTYPEID,
  15304. DEFECTFLAG,
  15305. GROUTINGUSERID,
  15306. GROUTINGUSERCODE,
  15307. GROUTINGNUM,
  15308. KILNID,
  15309. KILNCODE,
  15310. KILNNAME,
  15311. KILNCARID,
  15312. KILNCARCODE,
  15313. KILNCARNAME,
  15314. KILNCARBATCHNO,
  15315. KILNCARPOSITION,
  15316. SPECIALREPAIRFLAG,
  15317. FLOWPROCEDUREID,
  15318. FLOWPROCEDURETIME,
  15319. PROCEDUREID,
  15320. PROCEDURETIME,
  15321. PRODUCTIONDATAID,
  15322. trashflag,
  15323. Deletedtime,
  15324. logoid,
  15325. IsReworkFlag,
  15326. SemiCheckID,
  15327. DELETEDUSERID,
  15328. DELETEDUSERCODE
  15329. )
  15330. select
  15331. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15332. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  15333. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  15334. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15335. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15336. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15337. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  15338. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15339. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  15340. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15341. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15342. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  15343. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  15344. + user.UserID + ",'" + user.UserCode +
  15345. "' from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  15346. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  15347. //删除在产数据
  15348. updatsql1 = "delete from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  15349. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  15350. //删除在产生产数据
  15351. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  15352. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  15353. if (returnRows == 0)
  15354. {
  15355. oracleTrConn.Rollback();
  15356. oracleTrConn.Disconnect();
  15357. }
  15358. else
  15359. {
  15360. oracleTrConn.Commit();
  15361. oracleTrConn.Disconnect();
  15362. }
  15363. }
  15364. catch (Exception ex)
  15365. {
  15366. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15367. {
  15368. oracleTrConn.Rollback();
  15369. oracleTrConn.Disconnect();
  15370. }
  15371. throw ex;
  15372. }
  15373. finally
  15374. {
  15375. if (oracleTrConn.ConnState == ConnectionState.Open)
  15376. {
  15377. oracleTrConn.Disconnect();
  15378. }
  15379. }
  15380. return returnRows;
  15381. }
  15382. /// <summary>
  15383. /// 获取批量数据
  15384. /// </summary>
  15385. /// <returns></returns>
  15386. private static string GetClearInproductionTrashData(int accountid)
  15387. {
  15388. string selSql =
  15389. "SELECT " +
  15390. " TP_PM_InProductionTrash.BarCode " +
  15391. " FROM TP_PM_InProductionTrash " +
  15392. " left join tp_pm_scrapproduct " +
  15393. " on tp_pm_scrapproduct.barcode=TP_PM_InProductionTrash.barcode " +
  15394. " Where 1=1 and TP_PM_InProductionTrash.ValueFlag = 1 " +
  15395. " and TP_PM_InProductionTrash.AccountID= " + accountid;
  15396. return selSql;
  15397. }
  15398. #endregion
  15399. /// <summary>
  15400. /// 清除在产临时表残留数据(清除选择)
  15401. /// </summary>
  15402. /// <param name="barcodes">产品条码集</param>
  15403. /// <returns></returns>
  15404. public static int SaveClearInproductionTmp(string barcodes)
  15405. {
  15406. int returnRows = 0;
  15407. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15408. try
  15409. {
  15410. string sql = "";
  15411. string[] subbarcode = barcodes.Split(',');
  15412. OracleParameter[] Paras = null;
  15413. for (int i = 0; i < subbarcode.Length; i++)
  15414. {
  15415. Paras = new OracleParameter[] {
  15416. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15417. subbarcode[i],ParameterDirection.Input)
  15418. };
  15419. //删除在产临时表数据
  15420. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  15421. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15422. }
  15423. if (returnRows == 0)
  15424. {
  15425. oracleTrConn.Rollback();
  15426. oracleTrConn.Disconnect();
  15427. }
  15428. else
  15429. {
  15430. oracleTrConn.Commit();
  15431. oracleTrConn.Disconnect();
  15432. }
  15433. }
  15434. catch (Exception ex)
  15435. {
  15436. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15437. {
  15438. oracleTrConn.Rollback();
  15439. oracleTrConn.Disconnect();
  15440. }
  15441. throw ex;
  15442. }
  15443. finally
  15444. {
  15445. if (oracleTrConn.ConnState == ConnectionState.Open)
  15446. {
  15447. oracleTrConn.Disconnect();
  15448. }
  15449. }
  15450. return returnRows;
  15451. }
  15452. #region 清除在产回收站残留数据(批量)
  15453. /// <summary>
  15454. /// 清除在产残留数据(批量清除)
  15455. /// </summary>
  15456. /// <param name="barcodes">产品条码集</param>
  15457. /// <returns></returns>
  15458. public static int SaveClearAllInproductionTmp(SUserInfo user, FPM2112_SE se)
  15459. {
  15460. int returnRows = 0;
  15461. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15462. try
  15463. {
  15464. List<OracleParameter> parameters = new List<OracleParameter>();
  15465. StringBuilder sql = new StringBuilder(GetClearInproductionTmpData(user.AccountID));
  15466. if (se != null)
  15467. {
  15468. //生产线IDS
  15469. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  15470. {
  15471. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction_Tmp.ProductionLineID||',')>0 ");
  15472. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  15473. }
  15474. //完成工序IDS
  15475. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  15476. {
  15477. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction_Tmp.ProcedureID||',')>0 ");
  15478. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  15479. }
  15480. // 生产时间--开始
  15481. if (se.UpdateTimeStart.HasValue)
  15482. {
  15483. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime >= :UpdateTimeStart ");
  15484. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  15485. }
  15486. // 生产时间--结束
  15487. if (se.UpdateTimeEnd.HasValue)
  15488. {
  15489. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime <= :UpdateTimeEnd ");
  15490. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  15491. }
  15492. //报废日期开始
  15493. if (se.ScrapDataStart.HasValue)
  15494. {
  15495. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  15496. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  15497. }
  15498. //报废日期结束
  15499. if (se.ScrapDataEnd.HasValue)
  15500. {
  15501. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  15502. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  15503. }
  15504. if (se.GooddLevelTypeID != null)
  15505. {
  15506. // 产品分级
  15507. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  15508. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  15509. }
  15510. //在产or 回收站
  15511. sql.Append(" AND TP_PM_InProduction_Tmp.TrashFlag = :TrashFlag ");
  15512. parameters.Add(new OracleParameter(":TrashFlag", OracleDbType.Int32, se.TrashFlag, ParameterDirection.Input));
  15513. }
  15514. //删除在产临时表数据
  15515. string updatsql1 = "delete from TP_PM_InProduction_Tmp p where p.barcode in (" + sql.ToString() + ")";
  15516. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  15517. if (returnRows == 0)
  15518. {
  15519. oracleTrConn.Rollback();
  15520. oracleTrConn.Disconnect();
  15521. }
  15522. else
  15523. {
  15524. oracleTrConn.Commit();
  15525. oracleTrConn.Disconnect();
  15526. }
  15527. }
  15528. catch (Exception ex)
  15529. {
  15530. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15531. {
  15532. oracleTrConn.Rollback();
  15533. oracleTrConn.Disconnect();
  15534. }
  15535. throw ex;
  15536. }
  15537. finally
  15538. {
  15539. if (oracleTrConn.ConnState == ConnectionState.Open)
  15540. {
  15541. oracleTrConn.Disconnect();
  15542. }
  15543. }
  15544. return returnRows;
  15545. }
  15546. /// <summary>
  15547. /// 获取批量数据
  15548. /// </summary>
  15549. /// <returns></returns>
  15550. private static string GetClearInproductionTmpData(int accountid)
  15551. {
  15552. string selSql =
  15553. "SELECT " +
  15554. " TP_PM_InProduction_Tmp.BarCode " +
  15555. " FROM TP_PM_InProduction_Tmp " +
  15556. " left join tp_pm_scrapproduct " +
  15557. " on tp_pm_scrapproduct.barcode=TP_PM_InProduction_Tmp.barcode " +
  15558. " Where 1=1 and TP_PM_InProduction_Tmp.ValueFlag = 1 " +
  15559. " and TP_PM_InProduction_Tmp.AccountID= " + accountid;
  15560. return selSql;
  15561. }
  15562. #endregion
  15563. #region 恢复数据
  15564. /// <summary>
  15565. /// 恢复数据
  15566. /// </summary>
  15567. /// <param name="barcodes">产品条码集</param>
  15568. /// <returns></returns>
  15569. public static int ResetBarCode(string barcode)
  15570. {
  15571. int returnRows = 0;
  15572. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15573. try
  15574. {
  15575. string sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  15576. OracleParameter[] Paras = Paras = new OracleParameter[] {
  15577. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15578. barcode,ParameterDirection.Input)
  15579. };
  15580. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15581. if (ds != null && ds.Tables[0].Rows.Count == 0)
  15582. {
  15583. oracleTrConn.Rollback();
  15584. oracleTrConn.Disconnect();
  15585. return -1; //此条码没有清除,不能恢复
  15586. }
  15587. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  15588. {
  15589. sql = @"insert into tp_pm_inproduction select
  15590. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15591. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  15592. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  15593. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15594. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15595. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15596. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  15597. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15598. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  15599. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15600. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15601. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  15602. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  15603. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  15604. }
  15605. else
  15606. {
  15607. sql = @"insert into tp_pm_inproductiontrash select
  15608. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15609. PROCEDUREMODEL, MODELTYPE,
  15610. defectflag,
  15611. REWORKPROCEDUREID,
  15612. ISPUBLICBODY,
  15613. ISRefire,
  15614. GOODSLEVELID, GOODSLEVELTYPEID,
  15615. GOODSID, GOODSCODE, GOODSNAME,
  15616. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15617. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15618. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15619. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15620. REMARKS,
  15621. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15622. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  15623. ACCOUNTID, VALUEFLAG, CREATETIME,
  15624. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15625. SpecialRepairFlag,FlowProcedureID
  15626. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  15627. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  15628. }
  15629. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15630. //将生产数据表中的数据插入到在产生产数据表中
  15631. sql = @"insert into tp_pm_productiondatain
  15632. select
  15633. pd.PRODUCTIONDATAID,
  15634. pd.BARCODE,
  15635. pd.CENTRALIZEDBATCHNO,
  15636. pd.PRODUCTIONLINEID,
  15637. pd.PRODUCTIONLINECODE,
  15638. pd.PRODUCTIONLINENAME,
  15639. pd.PROCEDUREID,
  15640. pd.PROCEDURECODE,
  15641. pd.PROCEDURENAME,
  15642. pd.PROCEDUREMODEL,
  15643. pd.MODELTYPE,
  15644. pd.PIECETYPE,
  15645. pd.ISREWORKED,
  15646. pd.NODETYPE,
  15647. pd.ISPUBLICBODY,
  15648. pd.ISREFIRE,
  15649. pd.ORGANIZATIONID,
  15650. pd.GOODSID,
  15651. pd.GOODSCODE,
  15652. pd.GOODSNAME,
  15653. pd.USERID,
  15654. pd.USERCODE,
  15655. pd.USERNAME,
  15656. pd.KILNID,
  15657. pd.KILNCODE,
  15658. pd.KILNNAME,
  15659. pd.KILNCARID,
  15660. pd.KILNCARCODE,
  15661. pd.KILNCARNAME,
  15662. pd.KILNCARBATCHNO,
  15663. pd.KILNCARPOSITION,
  15664. pd.REWORKPROCEDUREID,
  15665. pd.REWORKPROCEDURECODE,
  15666. pd.REWORKPROCEDURENAME,
  15667. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  15668. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  15669. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  15670. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  15671. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  15672. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  15673. '1',pd.LOGOID,
  15674. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  15675. from tp_pm_productiondata pd
  15676. where pd.barcode = :barcode
  15677. and pd.productiondataid not in
  15678. (select pp.productiondataid
  15679. from tp_pm_productiondatain pp
  15680. where pp.barcode = :barcode)";
  15681. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15682. //删除在产临时表数据
  15683. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  15684. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15685. if (returnRows == 0)
  15686. {
  15687. oracleTrConn.Rollback();
  15688. oracleTrConn.Disconnect();
  15689. }
  15690. else
  15691. {
  15692. oracleTrConn.Commit();
  15693. oracleTrConn.Disconnect();
  15694. }
  15695. }
  15696. catch (Exception ex)
  15697. {
  15698. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15699. {
  15700. oracleTrConn.Rollback();
  15701. oracleTrConn.Disconnect();
  15702. }
  15703. throw ex;
  15704. }
  15705. finally
  15706. {
  15707. if (oracleTrConn.ConnState == ConnectionState.Open)
  15708. {
  15709. oracleTrConn.Disconnect();
  15710. }
  15711. }
  15712. return returnRows;
  15713. }
  15714. /// <summary>
  15715. /// 批量恢复数据
  15716. /// </summary>
  15717. /// <param name="barcodes">产品条码集</param>
  15718. /// <returns></returns>
  15719. public static int ResetSelectedBarCode(string barcodes)
  15720. {
  15721. int returnRows = 0;
  15722. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15723. try
  15724. {
  15725. string sql = "";
  15726. string[] subbarcode = barcodes.Split(',');
  15727. OracleParameter[] Paras = null;
  15728. DataSet ds = null;
  15729. for (int i = 0; i < subbarcode.Length; i++)
  15730. {
  15731. sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  15732. Paras = Paras = new OracleParameter[] {
  15733. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15734. subbarcode[i],ParameterDirection.Input)
  15735. };
  15736. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15737. if (ds != null && ds.Tables[0].Rows.Count == 0)
  15738. {
  15739. oracleTrConn.Rollback();
  15740. oracleTrConn.Disconnect();
  15741. return -1; //此条码没有清除,不能恢复
  15742. }
  15743. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  15744. {
  15745. sql = @"insert into tp_pm_inproduction select
  15746. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15747. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  15748. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  15749. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15750. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15751. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15752. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  15753. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15754. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  15755. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15756. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15757. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  15758. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  15759. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  15760. }
  15761. else
  15762. {
  15763. sql = @"insert into tp_pm_inproductiontrash select
  15764. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15765. PROCEDUREMODEL, MODELTYPE,
  15766. defectflag,
  15767. REWORKPROCEDUREID,
  15768. ISPUBLICBODY,
  15769. ISRefire,
  15770. GOODSLEVELID, GOODSLEVELTYPEID,
  15771. GOODSID, GOODSCODE, GOODSNAME,
  15772. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15773. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15774. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15775. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15776. REMARKS,
  15777. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15778. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  15779. ACCOUNTID, VALUEFLAG, CREATETIME,
  15780. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15781. SpecialRepairFlag,FlowProcedureID
  15782. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  15783. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  15784. }
  15785. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15786. //将生产数据表中的数据插入到在产生产数据表中
  15787. sql = @"insert into tp_pm_productiondatain
  15788. select pd.PRODUCTIONDATAID,
  15789. pd.BARCODE,
  15790. pd.CENTRALIZEDBATCHNO,
  15791. pd.PRODUCTIONLINEID,
  15792. pd.PRODUCTIONLINECODE,
  15793. pd.PRODUCTIONLINENAME,
  15794. pd.PROCEDUREID,
  15795. pd.PROCEDURECODE,
  15796. pd.PROCEDURENAME,
  15797. pd.PROCEDUREMODEL,
  15798. pd.MODELTYPE,
  15799. pd.PIECETYPE,
  15800. pd.ISREWORKED,
  15801. pd.NODETYPE,
  15802. pd.ISPUBLICBODY,
  15803. pd.ISREFIRE,
  15804. pd.ORGANIZATIONID,
  15805. pd.GOODSID,
  15806. pd.GOODSCODE,
  15807. pd.GOODSNAME,
  15808. pd.USERID,
  15809. pd.USERCODE,
  15810. pd.USERNAME,
  15811. pd.KILNID,
  15812. pd.KILNCODE,
  15813. pd.KILNNAME,
  15814. pd.KILNCARID,
  15815. pd.KILNCARCODE,
  15816. pd.KILNCARNAME,
  15817. pd.KILNCARBATCHNO,
  15818. pd.KILNCARPOSITION,
  15819. pd.REWORKPROCEDUREID,
  15820. pd.REWORKPROCEDURECODE,
  15821. pd.REWORKPROCEDURENAME,
  15822. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  15823. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  15824. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  15825. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  15826. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  15827. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  15828. '1',pd.LOGOID,
  15829. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  15830. from tp_pm_productiondata pd
  15831. where pd.barcode = :barcode
  15832. and pd.productiondataid not in
  15833. (select pp.productiondataid
  15834. from tp_pm_productiondatain pp
  15835. where pp.barcode = :barcode)";
  15836. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15837. //删除在产临时表数据
  15838. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  15839. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15840. }
  15841. if (returnRows == 0)
  15842. {
  15843. oracleTrConn.Rollback();
  15844. oracleTrConn.Disconnect();
  15845. }
  15846. else
  15847. {
  15848. oracleTrConn.Commit();
  15849. oracleTrConn.Disconnect();
  15850. }
  15851. }
  15852. catch (Exception ex)
  15853. {
  15854. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15855. {
  15856. oracleTrConn.Rollback();
  15857. oracleTrConn.Disconnect();
  15858. }
  15859. throw ex;
  15860. }
  15861. finally
  15862. {
  15863. if (oracleTrConn.ConnState == ConnectionState.Open)
  15864. {
  15865. oracleTrConn.Disconnect();
  15866. }
  15867. }
  15868. return returnRows;
  15869. }
  15870. #endregion
  15871. /// <summary>
  15872. /// 撤销特殊工序撤销
  15873. /// </summary>
  15874. /// <param name="barcode">产品条码</param>
  15875. /// <returns></returns>
  15876. public static ServiceResultEntity AddChancelBarCode(string barcode, SUserInfo sUserInfo)
  15877. {
  15878. ServiceResultEntity entity = new ServiceResultEntity();
  15879. int returnRows = 0;
  15880. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15881. try
  15882. {
  15883. // 转换注浆条码
  15884. barcode = CommonModuleLogic.CommonModuleLogic.GetBarcode(oracleTrConn, barcode, sUserInfo);
  15885. DateTime? flowProcedureTime = null;
  15886. // 1 条码是否有效
  15887. string sql = "select 1 from TP_PM_GroutingDailyDetail where barcode=:barcode and valueflag=1";
  15888. OracleParameter[] Paras = new OracleParameter[] {
  15889. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15890. barcode,ParameterDirection.Input)
  15891. };
  15892. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15893. if (ds.Tables[0].Rows.Count == 0)
  15894. {
  15895. //无效条码
  15896. returnRows = -1;
  15897. oracleTrConn.Rollback();
  15898. oracleTrConn.Disconnect();
  15899. entity.Result = returnRows;
  15900. return entity;
  15901. }
  15902. // 2.看看是否在产,如果在产看看是否已经损坯标识
  15903. int? ProcedureID = null;
  15904. // 撤销时,需要判定当前工序,而不是流程工序,干补时,当前工序是干补,流程工序是报损时的工序。
  15905. //sql = "select InScrapFlag,flowProcedureID,IsReworkFlag,flowProcedureTime from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  15906. sql = "select InScrapFlag,ProcedureID,IsReworkFlag,ProcedureTime from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  15907. Paras = new OracleParameter[] {
  15908. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15909. barcode,ParameterDirection.Input)
  15910. };
  15911. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15912. if (ds.Tables[0].Rows.Count == 0) //不存在在产信息
  15913. {
  15914. // 不在产,看看是否有成品
  15915. sql = @"select 1 from TP_PM_FinishedProduct where barcode=:barcode";
  15916. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15917. if (ds.Tables[0].Rows.Count > 0)
  15918. {
  15919. //生产完成
  15920. returnRows = -2;
  15921. oracleTrConn.Rollback();
  15922. oracleTrConn.Disconnect();
  15923. entity.Result = returnRows;
  15924. return entity;
  15925. }
  15926. else
  15927. {
  15928. //条码不在生产线上
  15929. returnRows = -7;
  15930. oracleTrConn.Rollback();
  15931. oracleTrConn.Disconnect();
  15932. entity.Result = returnRows;
  15933. return entity;
  15934. }
  15935. }
  15936. else
  15937. {
  15938. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  15939. {
  15940. //申请报废
  15941. returnRows = -3;
  15942. oracleTrConn.Rollback();
  15943. oracleTrConn.Disconnect();
  15944. entity.Result = returnRows;
  15945. return entity;
  15946. }
  15947. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15948. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  15949. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  15950. {
  15951. //申请报废
  15952. returnRows = -9;
  15953. oracleTrConn.Rollback();
  15954. oracleTrConn.Disconnect();
  15955. entity.Result = returnRows;
  15956. return entity;
  15957. }
  15958. //ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["flowProcedureID"]); //条码完成工序
  15959. //flowProcedureTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["flowProcedureTime"]); // 流程工序时间
  15960. ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]); //条码完成工序
  15961. flowProcedureTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["ProcedureTime"]); // 完成工序时间
  15962. }
  15963. // 此工序所在条码是否是特殊工序,即可以撤销工序
  15964. sql = "select UnDoFlag from tp_pc_procedure where procedureid=:procdureid and valueflag=1";
  15965. Paras = new OracleParameter[] {
  15966. new OracleParameter(":procdureid",OracleDbType.Int32,
  15967. ProcedureID,ParameterDirection.Input)
  15968. };
  15969. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15970. if (ds != null && ds.Tables[0].Rows.Count > 0)
  15971. {
  15972. if (ds.Tables[0].Rows[0]["UnDoFlag"].ToString() != "1")
  15973. {
  15974. //此条码所在工序不允许进行撤销
  15975. returnRows = -4;
  15976. oracleTrConn.Rollback();
  15977. oracleTrConn.Disconnect();
  15978. entity.Result = returnRows;
  15979. return entity;
  15980. }
  15981. }
  15982. // 计件撤销 应该不用验证是否回收了 by chenxiaoye 2020-02-28
  15983. //// 如果不合格,查询报损表里是否回收
  15984. //sql = "select recyclingflag from TP_PM_ScrapProduct "
  15985. // + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) "
  15986. // + " from TP_PM_ScrapProduct "
  15987. // + " where BarCode=:BarCode and ValueFlag=1)"
  15988. // + " and ValueFlag=1";
  15989. //Paras = new OracleParameter[]{
  15990. // new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  15991. // };
  15992. //DataSet dsResult2 = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15993. //if (dsResult2 != null && dsResult2.Tables[0].Rows.Count > 0)
  15994. //{
  15995. // if (Convert.ToInt32(dsResult2.Tables[0].Rows[0]["recyclingflag"]) > 0)
  15996. // {
  15997. // returnRows = -200;
  15998. // oracleTrConn.Rollback();
  15999. // oracleTrConn.Disconnect();
  16000. // entity.Result = returnRows;
  16001. // entity.Message = "此产品已经回收,不能撤销";
  16002. // return entity;
  16003. // }
  16004. //}
  16005. // 计件撤销 应该不用验证是否回收了 by chenxiaoye 2020-02-28
  16006. // 判断是否有撤销范围权限
  16007. sql = @"select 1 from TP_MST_UserPurview where UserID=:UserID and (PurviewID=:PurviewID or PurviewID=-1) and PurviewType=13";
  16008. Paras = new OracleParameter[] {
  16009. new OracleParameter(":PurviewID",OracleDbType.Int32,
  16010. ProcedureID,ParameterDirection.Input),
  16011. new OracleParameter(":UserID",OracleDbType.Int32,
  16012. sUserInfo.UserID,ParameterDirection.Input)
  16013. };
  16014. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  16015. if (ds != null && ds.Tables[0].Rows.Count == 0)
  16016. {
  16017. //此用户无此工序撤销权限
  16018. returnRows = -8;
  16019. oracleTrConn.Rollback();
  16020. oracleTrConn.Disconnect();
  16021. entity.Result = returnRows;
  16022. return entity;
  16023. }
  16024. //
  16025. #region 是否启用撤销限制天数
  16026. if (flowProcedureTime != null)
  16027. {
  16028. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  16029. Paras = new OracleParameter[] {
  16030. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  16031. Constant.SettingType.S_PM_004.ToString(),ParameterDirection.Input),
  16032. new OracleParameter(":accountid",OracleDbType.Int32,
  16033. sUserInfo.AccountID,ParameterDirection.Input)
  16034. };
  16035. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  16036. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16037. {
  16038. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  16039. {
  16040. // 开启了限制
  16041. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(flowProcedureTime),
  16042. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_004.ToString(), sUserInfo);
  16043. if (Convert.ToInt32(resultEntity.Result) < 0)
  16044. {
  16045. //计件撤销限制天数
  16046. returnRows = -200;
  16047. oracleTrConn.Rollback();
  16048. oracleTrConn.Disconnect();
  16049. entity.Result = returnRows;
  16050. entity.Message = resultEntity.Message;
  16051. return entity;
  16052. }
  16053. }
  16054. }
  16055. }
  16056. #endregion
  16057. // 进行撤销
  16058. string sqlString = @"
  16059. SELECT PRODUCTIONDATAID,
  16060. PROCEDUREID,
  16061. PROCEDUREMODEL,
  16062. MODELTYPE,
  16063. REWORKPROCEDUREID,
  16064. USERID,
  16065. LOGOID,
  16066. (SELECT MAX(PROCEDUREID)
  16067. FROM TP_PM_PRODUCTIONDATAIN INPP
  16068. WHERE INPP.BARCODE = :BARCODE
  16069. AND INPP.PRODUCTIONDATAID > T.PRODUCTIONDATAID
  16070. AND MODELTYPE = 8
  16071. AND VALUEFLAG = '1') P8ID --干补
  16072. FROM (SELECT PRODUCTIONDATAID,
  16073. PROCEDUREID,
  16074. PROCEDUREMODEL,
  16075. MODELTYPE,
  16076. REWORKPROCEDUREID,
  16077. USERID,
  16078. LOGOID
  16079. FROM TP_PM_PRODUCTIONDATAIN
  16080. WHERE BARCODE = :BARCODE
  16081. AND VALUEFLAG = '1'
  16082. AND FINISHEDPROCEDUREID IS NULL
  16083. AND MODELTYPE <> 8
  16084. ORDER BY PRODUCTIONDATAID DESC) T
  16085. WHERE ROWNUM <= 2 ";
  16086. Paras = new OracleParameter[]{
  16087. new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  16088. };
  16089. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, Paras);
  16090. if (productionData == null
  16091. || productionData.Tables.Count == Constant.INT_IS_ZERO
  16092. //|| productionData.Tables[0].Rows.Count != Constant.INT_IS_TWO
  16093. )
  16094. {
  16095. // 条码至少要有2次数据采集
  16096. //条码没有此工序前数据
  16097. returnRows = -5;
  16098. oracleTrConn.Rollback();
  16099. oracleTrConn.Disconnect();
  16100. entity.Result = returnRows;
  16101. return entity;
  16102. }
  16103. //xuwei fix 2019-09-25 tables只有一行记录 rows[1]无记录 改成rows[0]?
  16104. object pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["p8id"];
  16105. if (pid == null || pid == DBNull.Value)
  16106. {
  16107. pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["ProcedureID"];
  16108. }
  16109. #region 回滚在产数据
  16110. //xuwei fix 2019-09-23 加条件限制 如果是首节点 删除在产产品数据 否则 更新在产产品数据
  16111. if (productionData.Tables[0].Rows.Count == 1)
  16112. {
  16113. sqlString = "delete from TP_PM_InProduction where barcode=:barcode"; //wangxin 20150406
  16114. //sqlString += " where ProductionDataID=:productionDataID";
  16115. //新添加的 begin
  16116. Paras = new OracleParameter[]{
  16117. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16118. barcode,ParameterDirection.Input),
  16119. };
  16120. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  16121. returnRows += rows;
  16122. if (rows == Constant.INT_IS_ZERO)
  16123. {
  16124. // 保存失败
  16125. //没有任何影响行
  16126. returnRows = -6;
  16127. oracleTrConn.Rollback();
  16128. oracleTrConn.Disconnect();
  16129. entity.Result = returnRows;
  16130. return entity;
  16131. }
  16132. //xuwei add 2019-09-23 更新回生产状态 BEGINNINGFLAG = '0'
  16133. oracleTrConn.ExecuteNonQuery($"update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '0' where BARCODE = '{barcode}'");
  16134. //xuwei fix 2019-09-25 加条件判断 如果是首节点 回退到注浆1
  16135. sql = $"update TP_PM_USEDBARCODE set barcodestatus=1 where BarCode='{barcode}'";
  16136. rows = oracleTrConn.ExecuteNonQuery(sql);
  16137. returnRows += rows;
  16138. }
  16139. else
  16140. {
  16141. #region
  16142. //2022年3月4日11:30:39 by feiy 如果要撤销的工序是4-5重烧交接,更改重烧标识、损坏标识,并且上一工序是105:3#质量登记
  16143. object objProcedureID = productionData.Tables[0].Rows[1]["ProcedureID"];
  16144. if (ProcedureID == 57 && objProcedureID != null && Convert.ToInt32(objProcedureID) == 105)
  16145. {
  16146. //xuwei 下述代码为原代码 并未判定首节点
  16147. sqlString = @"update TP_PM_InProduction
  16148. set FlowProcedureID = :flowProcedureID,
  16149. ProcedureModel = :procedureModel,
  16150. ProcedureID = :ProcedureID,
  16151. ModelType = :modelType,
  16152. ReworkProcedureID = :reworkProcedureID,
  16153. UserID = :userID,
  16154. updateuserid = :updateuserid,
  16155. ProductionDataID = :ProductionDataID,
  16156. IsReFire = 0,
  16157. DefectFlag = 2
  16158. --logoid = :logoid
  16159. where barcode = :barcode";
  16160. }
  16161. else
  16162. {
  16163. //xuwei 下述代码为原代码 并未判定首节点
  16164. sqlString = @"update TP_PM_InProduction
  16165. set FlowProcedureID = :flowProcedureID,
  16166. ProcedureModel = :procedureModel,
  16167. ProcedureID = :ProcedureID,
  16168. ModelType = :modelType,
  16169. ReworkProcedureID = :reworkProcedureID,
  16170. UserID = :userID,
  16171. updateuserid = :updateuserid,
  16172. ProductionDataID = :ProductionDataID
  16173. --logoid = :logoid
  16174. where barcode = :barcode";
  16175. }
  16176. #endregion
  16177. Paras = new OracleParameter[]{
  16178. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  16179. productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  16180. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  16181. pid,ParameterDirection.Input),
  16182. new OracleParameter(":procedureModel",OracleDbType.Int32,
  16183. productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  16184. new OracleParameter(":modelType",OracleDbType.Int32,
  16185. productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  16186. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  16187. productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  16188. new OracleParameter(":userID",OracleDbType.Int32,
  16189. productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  16190. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  16191. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  16192. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  16193. productionData.Tables[0].Rows[1]["ProductionDataID"],ParameterDirection.Input)
  16194. //new OracleParameter(":logoid",OracleDbType.Int32,
  16195. // productionData.Tables[0].Rows[1]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[1]["logoid"],ParameterDirection.Input),
  16196. };
  16197. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  16198. returnRows += rows;
  16199. if (rows == Constant.INT_IS_ZERO)
  16200. {
  16201. // 保存失败
  16202. //没有任何影响行
  16203. returnRows = -6;
  16204. oracleTrConn.Rollback();
  16205. oracleTrConn.Disconnect();
  16206. entity.Result = returnRows;
  16207. return entity;
  16208. }
  16209. }
  16210. //modify end
  16211. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  16212. //sqlString += " where ProductionDataID=:productionDataID";
  16213. //新添加的 begin
  16214. Paras = new OracleParameter[]{
  16215. new OracleParameter(":productionDataID",OracleDbType.Int32,
  16216. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  16217. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16218. barcode,ParameterDirection.Input),
  16219. };
  16220. //新添加的 end
  16221. sqlString += " where ProductionDataID=:productionDataID and barcode=:barcode";
  16222. int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  16223. returnRows += rutenRows;
  16224. if (rutenRows == Constant.INT_IS_ZERO)
  16225. {
  16226. // 保存失败
  16227. //没有任何影响行
  16228. returnRows = -6;
  16229. oracleTrConn.Rollback();
  16230. oracleTrConn.Disconnect();
  16231. entity.Result = returnRows;
  16232. return entity;
  16233. }
  16234. #endregion
  16235. #region 如果是装配工序,删掉组件
  16236. sqlString = "SELECT MODELTYPE FROM TP_PC_PROCEDURE WHERE PROCEDUREID = " + ProcedureID;
  16237. object modeltype = oracleTrConn.GetSqlResultToObj(sqlString);
  16238. if ("-5".Equals(modeltype + ""))
  16239. {
  16240. sqlString = @"
  16241. DELETE FROM TP_PM_BARCODEIDNRKREL
  16242. WHERE BARCODE = :BARCODE
  16243. AND PROCEDUREID = :PROCEDUREID";
  16244. OracleParameter[] ps = new OracleParameter[]
  16245. {
  16246. new OracleParameter(":BARCODE", OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  16247. new OracleParameter(":PROCEDUREID", OracleDbType.Int32, ProcedureID,ParameterDirection.Input),
  16248. };
  16249. rutenRows += oracleTrConn.ExecuteNonQuery(sqlString, ps);
  16250. sqlString = @"
  16251. DELETE FROM TP_PM_BARCODEIDNRKSCRAP
  16252. WHERE BARCODE = :BARCODE
  16253. AND PROCEDUREID = :PROCEDUREID";
  16254. rutenRows += oracleTrConn.ExecuteNonQuery(sqlString, ps);
  16255. }
  16256. #endregion
  16257. #region 释放占库
  16258. // 如果要撤销的工序是3#成瓷库
  16259. if (ProcedureID == 106)
  16260. {
  16261. // 如果进行过产成品交接又撤销,并且是3#包装,则释放包材占库
  16262. sqlString = "SELECT gdd.materialcode\n" +
  16263. " FROM tp_pm_groutingdailydetail gdd\n" +
  16264. " WHERE gdd.sapfhundoflag = '1'\n" +
  16265. " AND gdd.packingby3 = '1'\n" +
  16266. " AND gdd.barcode = :barcode";
  16267. object isExists = oracleTrConn.GetSqlResultToObj(sqlString, Paras);
  16268. if (isExists != null)
  16269. {
  16270. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  16271. string packingURL = ini.ReadIniData("SAP_HEGII", "PackingURL");
  16272. string url = packingURL + isExists + "&num=1";
  16273. WebRequest req = WebRequest.Create(url);
  16274. req.Method = "GET";
  16275. Stream stream = req.GetResponse().GetResponseStream();
  16276. StreamReader reader = new StreamReader(stream);
  16277. JObject json = JObject.Parse(reader.ReadToEnd());
  16278. // 包材库失败暂时不处理 TODO
  16279. if (json["success"].ToString() == "false")
  16280. {
  16281. //returnRows = -6;
  16282. }
  16283. }
  16284. }
  16285. #endregion
  16286. if (returnRows <= 0)
  16287. {
  16288. oracleTrConn.Rollback();
  16289. oracleTrConn.Disconnect();
  16290. }
  16291. else
  16292. {
  16293. oracleTrConn.Commit();
  16294. oracleTrConn.Disconnect();
  16295. }
  16296. }
  16297. catch (Exception ex)
  16298. {
  16299. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  16300. {
  16301. oracleTrConn.Rollback();
  16302. oracleTrConn.Disconnect();
  16303. }
  16304. throw ex;
  16305. }
  16306. finally
  16307. {
  16308. if (oracleTrConn.ConnState == ConnectionState.Open)
  16309. {
  16310. oracleTrConn.Disconnect();
  16311. }
  16312. }
  16313. entity.Result = returnRows;
  16314. return entity;
  16315. }
  16316. /// <summary>
  16317. /// 交坯特殊工序撤销
  16318. /// </summary>
  16319. /// <param name="barcode">产品条码</param>
  16320. /// <returns></returns>
  16321. public static ServiceResultEntity AddChancelDeliverMudBarCode(string barcode, SUserInfo sUserInfo)
  16322. {
  16323. ServiceResultEntity entity = new ServiceResultEntity();
  16324. int returnRows = 0;
  16325. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16326. try
  16327. {
  16328. DateTime? deliverTime = null;
  16329. // 1 条码是否有效
  16330. string sql = "select DeliverTime from TP_PM_GroutingDailyDetail where barcode=:barcode and valueflag=1";
  16331. OracleParameter[] Paras = new OracleParameter[] {
  16332. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16333. barcode,ParameterDirection.Input)
  16334. };
  16335. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  16336. if (ds.Tables[0].Rows.Count == 0)
  16337. {
  16338. //无效条码
  16339. returnRows = -1;
  16340. oracleTrConn.Rollback();
  16341. oracleTrConn.Disconnect();
  16342. entity.Result = returnRows;
  16343. return entity;
  16344. }
  16345. else
  16346. {
  16347. if (ds.Tables[0].Rows[0]["DeliverTime"].ToString() != "")
  16348. {
  16349. deliverTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["DeliverTime"]);
  16350. }
  16351. }
  16352. // 2.看看是否在产,如果在产看看是否已经损坯标识
  16353. int? ProcedureID = null;
  16354. //xuwei fix 2019-09-27 选出交坏判定字段
  16355. //sql = "select InScrapFlag,flowProcedureID,IsReworkFlag,Specialrepairflag from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  16356. sql = "select MODELTYPE,InScrapFlag,flowProcedureID,IsReworkFlag,Specialrepairflag from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  16357. Paras = new OracleParameter[] {
  16358. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16359. barcode,ParameterDirection.Input)
  16360. };
  16361. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  16362. if (ds.Tables[0].Rows.Count == 0) //不存在在产信息
  16363. {
  16364. // 不在产,看看是否有成品
  16365. sql = @"select 1 from TP_PM_FinishedProduct where barcode=:barcode";
  16366. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  16367. if (ds.Tables[0].Rows.Count > 0)
  16368. {
  16369. //生产完成
  16370. returnRows = -2;
  16371. oracleTrConn.Rollback();
  16372. oracleTrConn.Disconnect();
  16373. entity.Result = returnRows;
  16374. return entity;
  16375. }
  16376. else
  16377. {
  16378. //条码不在生产线上
  16379. returnRows = -7;
  16380. oracleTrConn.Rollback();
  16381. oracleTrConn.Disconnect();
  16382. entity.Result = returnRows;
  16383. return entity;
  16384. }
  16385. }
  16386. else
  16387. {
  16388. //xuwei add 2019-09-27 如果是非交坯工序不能在此节点撤销 5是交坯模型
  16389. if (ds.Tables[0].Rows[0]["MODELTYPE"].ToString() != "5")
  16390. {
  16391. //非交坯工序,不能交坯撤销
  16392. returnRows = -200;
  16393. oracleTrConn.Rollback();
  16394. oracleTrConn.Disconnect();
  16395. entity.Result = returnRows;
  16396. entity.Message = "非交坯工序,不能交坯撤销";
  16397. return entity;
  16398. }
  16399. //xuwei end
  16400. if (ds.Tables[0].Rows[0]["Specialrepairflag"].ToString() == "1")
  16401. {
  16402. //干补后不允许撤销
  16403. returnRows = -200;
  16404. oracleTrConn.Rollback();
  16405. oracleTrConn.Disconnect();
  16406. entity.Result = returnRows;
  16407. entity.Message = "干补后不允许撤销";
  16408. return entity;
  16409. }
  16410. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  16411. {
  16412. //申请报废
  16413. returnRows = -3;
  16414. oracleTrConn.Rollback();
  16415. oracleTrConn.Disconnect();
  16416. entity.Result = returnRows;
  16417. return entity;
  16418. }
  16419. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  16420. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  16421. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  16422. {
  16423. //申请报废
  16424. returnRows = -8;
  16425. oracleTrConn.Rollback();
  16426. oracleTrConn.Disconnect();
  16427. entity.Result = returnRows;
  16428. return entity;
  16429. }
  16430. ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["flowProcedureID"]); //条码完成工序
  16431. }
  16432. //// 此工序所在条码是否是特殊工序,即可以撤销工序
  16433. //sql = "select UnDoFlag from tp_pc_procedure where procedureid=:procdureid and valueflag=1";
  16434. //Paras = new OracleParameter[] {
  16435. // new OracleParameter(":procdureid",OracleDbType.Int32,
  16436. // ProcedureID,ParameterDirection.Input)
  16437. //};
  16438. //ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  16439. //if (ds != null && ds.Tables[0].Rows.Count > 0)
  16440. //{
  16441. // if (ds.Tables[0].Rows[0]["UnDoFlag"].ToString() != "1")
  16442. // {
  16443. // //此条码所在工序不允许进行撤销
  16444. // returnRows = -4;
  16445. // oracleTrConn.Rollback();
  16446. // oracleTrConn.Disconnect();
  16447. // return returnRows;
  16448. // }
  16449. //}
  16450. #region 是否启用交坯撤销限制天数
  16451. if (deliverTime != null)
  16452. {
  16453. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  16454. Paras = new OracleParameter[] {
  16455. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  16456. Constant.SettingType.S_PM_003.ToString(),ParameterDirection.Input),
  16457. new OracleParameter(":accountid",OracleDbType.Int32,
  16458. sUserInfo.AccountID,ParameterDirection.Input)
  16459. };
  16460. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  16461. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16462. {
  16463. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  16464. {
  16465. // 开启了限制
  16466. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(deliverTime),
  16467. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_003.ToString(), sUserInfo);
  16468. if (Convert.ToInt32(resultEntity.Result) < 0)
  16469. {
  16470. //超过交坯撤销限制天数
  16471. returnRows = -200;
  16472. oracleTrConn.Rollback();
  16473. oracleTrConn.Disconnect();
  16474. entity.Result = returnRows;
  16475. entity.Message = resultEntity.Message;
  16476. return entity;
  16477. }
  16478. }
  16479. }
  16480. }
  16481. #endregion
  16482. // 进行撤销
  16483. string sqlString = @"select ProductionDataID,
  16484. ProcedureID,
  16485. ProcedureModel,
  16486. ModelType,
  16487. ReworkProcedureID,
  16488. UserID,
  16489. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  16490. from (select ProductionDataID,
  16491. ProcedureID,
  16492. ProcedureModel,
  16493. ModelType,
  16494. ReworkProcedureID,
  16495. UserID
  16496. from Tp_Pm_ProductiondataIn
  16497. where barcode = :barcode
  16498. and valueflag = 1 and ModelType<>8
  16499. order by ProductionDataID desc) t
  16500. where rownum <= 2";
  16501. Paras = new OracleParameter[]{
  16502. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  16503. };
  16504. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, Paras);
  16505. if (productionData == null
  16506. || productionData.Tables.Count == Constant.INT_IS_ZERO
  16507. )
  16508. {
  16509. // 条码至少要有1次数据采集
  16510. //条码没有此工序前数据
  16511. returnRows = -5; //条码至少要有1次数据采集
  16512. oracleTrConn.Rollback();
  16513. oracleTrConn.Disconnect();
  16514. entity.Result = returnRows;
  16515. return entity;
  16516. }
  16517. //if (productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  16518. //{
  16519. // // 条码至少要有1次数据采集
  16520. // //条码没有此工序前数据
  16521. // returnRows = -55; //条码已经经过多个工序,不允许撤销
  16522. // oracleTrConn.Rollback();
  16523. // oracleTrConn.Disconnect();
  16524. // entity.Result = returnRows;
  16525. // return entity;
  16526. //}
  16527. //xuwei fix 2019-09-25 tables只有一行记录 rows[1]无记录 改成rows[0]?
  16528. object pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["p8id"];
  16529. if (pid == null || pid == DBNull.Value)
  16530. {
  16531. pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["ProcedureID"];
  16532. }
  16533. #region 回滚在产数据
  16534. // sqlString = @"update TP_PM_InProduction
  16535. // set FlowProcedureID = :flowProcedureID,
  16536. // ProcedureModel = :procedureModel,
  16537. // ProcedureID = :flowProcedureID,
  16538. // ModelType = :modelType,
  16539. // ReworkProcedureID = :reworkProcedureID,
  16540. // UserID = :userID,
  16541. // updateuserid = :updateuserid
  16542. // where barcode = :barcode";
  16543. // Paras = new OracleParameter[]{
  16544. // new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  16545. // productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  16546. // new OracleParameter(":procedureModel",OracleDbType.Int32,
  16547. // productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  16548. // new OracleParameter(":modelType",OracleDbType.Int32,
  16549. // productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  16550. // new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  16551. // productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  16552. // new OracleParameter(":userID",OracleDbType.Int32,
  16553. // productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  16554. // new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  16555. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  16556. // };
  16557. // int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  16558. // returnRows += rutenRows;
  16559. // if (rutenRows == Constant.INT_IS_ZERO)
  16560. // {
  16561. // // 保存失败
  16562. // //没有任何影响行
  16563. // returnRows = -6;
  16564. // oracleTrConn.Rollback();
  16565. // oracleTrConn.Disconnect();
  16566. // return returnRows;
  16567. // }
  16568. int rutenRows = 0;
  16569. //modify end
  16570. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  16571. //sqlString += " where ProductionDataID=:productionDataID";
  16572. //新添加的 begin
  16573. Paras = new OracleParameter[]{
  16574. new OracleParameter(":productionDataID",OracleDbType.Int32,
  16575. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  16576. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16577. barcode,ParameterDirection.Input),
  16578. };
  16579. //新添加的 end
  16580. sqlString += " where ProductionDataID=:productionDataID and barcode=:barcode";
  16581. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  16582. returnRows += rutenRows;
  16583. if (rutenRows == Constant.INT_IS_ZERO)
  16584. {
  16585. // 保存失败
  16586. //没有任何影响行
  16587. returnRows = -6;
  16588. oracleTrConn.Rollback();
  16589. oracleTrConn.Disconnect();
  16590. entity.Result = returnRows;
  16591. return entity;
  16592. }
  16593. //modify end
  16594. //xuwei fix 2019-09-23 加条件限制 如果是首节点 删除在产产品数据
  16595. if (productionData.Tables[0].Rows.Count == 1)
  16596. {
  16597. sqlString = "delete from TP_PM_InProduction where barcode=:barcode"; //wangxin 20150406
  16598. //sqlString += " where ProductionDataID=:productionDataID";
  16599. //新添加的 begin
  16600. Paras = new OracleParameter[]{
  16601. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16602. barcode,ParameterDirection.Input),
  16603. };
  16604. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  16605. returnRows += rutenRows;
  16606. if (rutenRows == Constant.INT_IS_ZERO)
  16607. {
  16608. // 保存失败
  16609. //没有任何影响行
  16610. returnRows = -6;
  16611. oracleTrConn.Rollback();
  16612. oracleTrConn.Disconnect();
  16613. entity.Result = returnRows;
  16614. return entity;
  16615. }
  16616. //xuwei add 2019-09-23 更新回生产状态 BEGINNINGFLAG = '0'
  16617. oracleTrConn.ExecuteNonQuery($"update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '0' where BARCODE = '{barcode}'");
  16618. }
  16619. else
  16620. {
  16621. //xuwei 下述代码为原代码 并未判定首节点
  16622. sqlString = @"update TP_PM_InProduction
  16623. set FlowProcedureID = :flowProcedureID,
  16624. ProcedureModel = :procedureModel,
  16625. ProcedureID = :ProcedureID,
  16626. ModelType = :modelType,
  16627. ReworkProcedureID = :reworkProcedureID,
  16628. UserID = :userID,
  16629. updateuserid = :updateuserid,
  16630. ProductionDataID = :ProductionDataID
  16631. --logoid = :logoid
  16632. where barcode = :barcode";
  16633. Paras = new OracleParameter[]{
  16634. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  16635. productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  16636. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  16637. pid,ParameterDirection.Input),
  16638. new OracleParameter(":procedureModel",OracleDbType.Int32,
  16639. productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  16640. new OracleParameter(":modelType",OracleDbType.Int32,
  16641. productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  16642. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  16643. productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  16644. new OracleParameter(":userID",OracleDbType.Int32,
  16645. productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  16646. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  16647. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  16648. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  16649. productionData.Tables[0].Rows[1]["ProductionDataID"],ParameterDirection.Input)
  16650. //new OracleParameter(":logoid",OracleDbType.Int32,
  16651. // productionData.Tables[0].Rows[1]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[1]["logoid"],ParameterDirection.Input),
  16652. };
  16653. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  16654. returnRows += rows;
  16655. if (rows == Constant.INT_IS_ZERO)
  16656. {
  16657. // 保存失败
  16658. //没有任何影响行
  16659. returnRows = -6;
  16660. oracleTrConn.Rollback();
  16661. oracleTrConn.Disconnect();
  16662. entity.Result = returnRows;
  16663. return entity;
  16664. }
  16665. }
  16666. #endregion
  16667. // 更新注浆明交坯标识把已经交坯改回,正常交坯
  16668. sqlString = "update TP_PM_GroutingDailyDetail set SpecialRepairFlag=0,ScrapFlag=0,IsPublicBody=0,DeliverFlag=0,DeliverTime=null,DeliverUserID=null,DeliverUserCode=null where barcode=:barcode"; //wangxin 20150406
  16669. Paras = new OracleParameter[]{
  16670. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16671. barcode,ParameterDirection.Input),
  16672. };
  16673. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  16674. returnRows += rutenRows;
  16675. // TODO 回退到注浆 1 还是 在产 3
  16676. //xuwei fix 2019-09-23 加条件判断 如果是首节点 回退到注浆1 否则回退到在产 3
  16677. if (productionData.Tables[0].Rows.Count == 1)
  16678. {
  16679. sql = "update TP_PM_USEDBARCODE set barcodestatus=1 where BarCode=:barcode";
  16680. }
  16681. else
  16682. {
  16683. sql = "update TP_PM_USEDBARCODE set barcodestatus=3 where BarCode=:barcode";
  16684. }
  16685. Paras = new OracleParameter[]{
  16686. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16687. barcode,ParameterDirection.Input),
  16688. };
  16689. rutenRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  16690. returnRows += rutenRows;
  16691. if (returnRows <= 0)
  16692. {
  16693. oracleTrConn.Rollback();
  16694. oracleTrConn.Disconnect();
  16695. }
  16696. else
  16697. {
  16698. oracleTrConn.Commit();
  16699. oracleTrConn.Disconnect();
  16700. }
  16701. }
  16702. catch (Exception ex)
  16703. {
  16704. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  16705. {
  16706. oracleTrConn.Rollback();
  16707. oracleTrConn.Disconnect();
  16708. }
  16709. throw ex;
  16710. }
  16711. finally
  16712. {
  16713. if (oracleTrConn.ConnState == ConnectionState.Open)
  16714. {
  16715. oracleTrConn.Disconnect();
  16716. }
  16717. }
  16718. entity.Result = returnRows;
  16719. return entity;
  16720. }
  16721. #region
  16722. /// <summary>
  16723. /// 清除未盘点残留数据(清除选择)
  16724. /// </summary>
  16725. /// <param name="inCheckedID">盘点单ID</param>
  16726. /// <param name="barcodes">条码集</param>
  16727. /// <returns></returns>
  16728. public static int SaveClearInChecked(int inCheckedID, string barcodes, SUserInfo sUserInfo)
  16729. {
  16730. int returnRows = 0;
  16731. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16732. try
  16733. {
  16734. string sql = "";
  16735. string[] subbarcodes = barcodes.Split(',');
  16736. OracleParameter[] Paras = null;
  16737. for (int i = 0; i < subbarcodes.Length; i++)
  16738. {
  16739. // 0.登窑、入窑、出窑工序的产品不能清除
  16740. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  16741. Paras = new OracleParameter[] {
  16742. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  16743. subbarcodes[i],ParameterDirection.Input),
  16744. };
  16745. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  16746. if (!string.IsNullOrWhiteSpace(modeltype))
  16747. {
  16748. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  16749. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  16750. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  16751. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  16752. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln ||
  16753. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.CarAdd)
  16754. {
  16755. continue;
  16756. }
  16757. }
  16758. // 返工标识或者是报损标识不允许清除 2016-07-12
  16759. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  16760. Paras = new OracleParameter[] {
  16761. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  16762. subbarcodes[i],ParameterDirection.Input)
  16763. };
  16764. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  16765. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16766. {
  16767. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  16768. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  16769. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  16770. {
  16771. returnRows = -1;
  16772. break;
  16773. }
  16774. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  16775. {
  16776. returnRows = -2;
  16777. break;
  16778. }
  16779. }
  16780. // 1.清除未盘点数据
  16781. sql = @"update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '3' /*, p.valueflag='0'*/ where p.INCHECKEDID=:InCheckedID and p.barcode =:barcode and p.InCheckedFlag='0'";
  16782. Paras = new OracleParameter[] {
  16783. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  16784. subbarcodes[i],ParameterDirection.Input),
  16785. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  16786. inCheckedID,ParameterDirection.Input)
  16787. };
  16788. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  16789. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  16790. // sql = @"insert into tp_pm_inproduction_tmp
  16791. // select * from tp_pm_inproduction p where p.barcode = :barcode";
  16792. sql = "INSERT INTO tp_pm_inproduction_tmp\n" +
  16793. " (barcode\n" +
  16794. " ,productionlineid\n" +
  16795. " ,productionlinecode\n" +
  16796. " ,productionlinename\n" +
  16797. " ,proceduremodel\n" +
  16798. " ,modeltype\n" +
  16799. " ,reworkprocedureid\n" +
  16800. " ,ispublicbody\n" +
  16801. " ,goodsid\n" +
  16802. " ,goodscode\n" +
  16803. " ,goodsname\n" +
  16804. " ,userid\n" +
  16805. " ,groutingdailyid\n" +
  16806. " ,groutingdailydetailid\n" +
  16807. " ,groutingdate\n" +
  16808. " ,groutinglineid\n" +
  16809. " ,groutinglinecode\n" +
  16810. " ,groutinglinename\n" +
  16811. " ,gmouldtypeid\n" +
  16812. " ,canmanytimes\n" +
  16813. " ,groutinglinedetailid\n" +
  16814. " ,groutingmouldcode\n" +
  16815. " ,mouldcode\n" +
  16816. " ,remarks\n" +
  16817. " ,accountid\n" +
  16818. " ,valueflag\n" +
  16819. " ,createtime\n" +
  16820. " ,createuserid\n" +
  16821. " ,updatetime\n" +
  16822. " ,updateuserid\n" +
  16823. " ,optimestamp\n" +
  16824. " ,isrefire\n" +
  16825. " ,goodslevelid\n" +
  16826. " ,goodsleveltypeid\n" +
  16827. " ,defectflag\n" +
  16828. " ,groutinguserid\n" +
  16829. " ,groutingusercode\n" +
  16830. " ,groutingnum\n" +
  16831. " ,kilnid\n" +
  16832. " ,kilncode\n" +
  16833. " ,kilnname\n" +
  16834. " ,kilncarid\n" +
  16835. " ,kilncarcode\n" +
  16836. " ,kilncarname\n" +
  16837. " ,kilncarbatchno\n" +
  16838. " ,kilncarposition\n" +
  16839. " ,specialrepairflag\n" +
  16840. " ,flowprocedureid\n" +
  16841. " ,flowproceduretime\n" +
  16842. " ,procedureid\n" +
  16843. " ,proceduretime\n" +
  16844. " ,productiondataid\n" +
  16845. " ,deleteduserid\n" +
  16846. " ,deletedusercode\n" +
  16847. " --,trashflag\n" +
  16848. " --,deletedtime\n" +
  16849. " ,logoid)\n" +
  16850. " SELECT barcode\n" +
  16851. " ,productionlineid\n" +
  16852. " ,productionlinecode\n" +
  16853. " ,productionlinename\n" +
  16854. " ,proceduremodel\n" +
  16855. " ,modeltype\n" +
  16856. " ,reworkprocedureid\n" +
  16857. " ,ispublicbody\n" +
  16858. " ,goodsid\n" +
  16859. " ,goodscode\n" +
  16860. " ,goodsname\n" +
  16861. " ,userid\n" +
  16862. " ,groutingdailyid\n" +
  16863. " ,groutingdailydetailid\n" +
  16864. " ,groutingdate\n" +
  16865. " ,groutinglineid\n" +
  16866. " ,groutinglinecode\n" +
  16867. " ,groutinglinename\n" +
  16868. " ,gmouldtypeid\n" +
  16869. " ,canmanytimes\n" +
  16870. " ,groutinglinedetailid\n" +
  16871. " ,groutingmouldcode\n" +
  16872. " ,mouldcode\n" +
  16873. " ,remarks\n" +
  16874. " ,accountid\n" +
  16875. " ,valueflag\n" +
  16876. " ,createtime\n" +
  16877. " ,createuserid\n" +
  16878. " ,updatetime\n" +
  16879. " ,updateuserid\n" +
  16880. " ,optimestamp\n" +
  16881. " ,isrefire\n" +
  16882. " ,goodslevelid\n" +
  16883. " ,goodsleveltypeid\n" +
  16884. " ,defectflag\n" +
  16885. " ,groutinguserid\n" +
  16886. " ,groutingusercode\n" +
  16887. " ,groutingnum\n" +
  16888. " ,kilnid\n" +
  16889. " ,kilncode\n" +
  16890. " ,kilnname\n" +
  16891. " ,kilncarid\n" +
  16892. " ,kilncarcode\n" +
  16893. " ,kilncarname\n" +
  16894. " ,kilncarbatchno\n" +
  16895. " ,kilncarposition\n" +
  16896. " ,specialrepairflag\n" +
  16897. " ,flowprocedureid\n" +
  16898. " ,flowproceduretime\n" +
  16899. " ,procedureid\n" +
  16900. " ,proceduretime\n" +
  16901. " ,productiondataid\n" +
  16902. " ,:deleteduserid\n" +
  16903. " ,:deletedusercode\n" +
  16904. " --,inscrapflag\n" +
  16905. " ,logoid\n" +
  16906. " FROM tp_pm_inproduction p\n" +
  16907. " WHERE p.barcode = :barcode\n" +
  16908. " AND p.modeltype not in (1,2,3,6)\n" +
  16909. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  16910. //" AND p.IsReworkFlag <> '1' AND p.InScrapFlag <> '1' \n" +
  16911. " AND p.IsReworkFlag = '0' AND p.InScrapFlag = '0' \n" +
  16912. "";
  16913. Paras = new OracleParameter[] {
  16914. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  16915. subbarcodes[i],ParameterDirection.Input),
  16916. new OracleParameter(":deleteduserid",OracleDbType.Int32,
  16917. sUserInfo.UserID,ParameterDirection.Input),
  16918. new OracleParameter(":deletedusercode",OracleDbType.NVarchar2,
  16919. sUserInfo.UserCode,ParameterDirection.Input),
  16920. };
  16921. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  16922. // 3 删除在产数据
  16923. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  16924. //sql = @" delete from tp_pm_inproduction p where p.barcode =:barcode AND p.modeltype not in (1,2,3,6) AND p.IsReworkFlag <> '1' AND p.InScrapFlag <> '1'";
  16925. sql = @" delete from tp_pm_inproduction p where p.barcode =:barcode AND p.modeltype not in (1,2,3,6) AND p.IsReworkFlag = '0' AND p.InScrapFlag = '0'";
  16926. Paras = new OracleParameter[] {
  16927. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  16928. subbarcodes[i],ParameterDirection.Input),
  16929. };
  16930. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  16931. if (returnRows > 0)
  16932. {
  16933. // 4. 删除在产生产数据
  16934. sql = @" delete from tp_pm_productiondatain p where p.barcode = :barcode";
  16935. Paras = new OracleParameter[] {
  16936. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  16937. subbarcodes[i],ParameterDirection.Input),
  16938. };
  16939. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  16940. }
  16941. }
  16942. if (returnRows <= 0)
  16943. {
  16944. oracleTrConn.Rollback();
  16945. oracleTrConn.Disconnect();
  16946. }
  16947. else
  16948. {
  16949. oracleTrConn.Commit();
  16950. oracleTrConn.Disconnect();
  16951. }
  16952. }
  16953. catch (Exception ex)
  16954. {
  16955. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  16956. {
  16957. oracleTrConn.Rollback();
  16958. oracleTrConn.Disconnect();
  16959. }
  16960. throw ex;
  16961. }
  16962. finally
  16963. {
  16964. if (oracleTrConn.ConnState == ConnectionState.Open)
  16965. {
  16966. oracleTrConn.Disconnect();
  16967. }
  16968. }
  16969. return returnRows;
  16970. }
  16971. /// <summary>
  16972. /// 清除未盘点残留数据(根据条件进行选择)
  16973. /// </summary>
  16974. /// <param name="inCheckedID">盘点单ID</param>
  16975. /// <param name="procedureIDs">完成工序集</param>
  16976. /// <param name="goodsCodes">产品编码集</param>
  16977. /// <returns></returns>
  16978. public static int SaveClearInCheckedAll(int inCheckedID, string procedureIDs, string goodsCodes, DateTime? startDateTime, DateTime? endDateTime, SUserInfo sUserInfo)
  16979. {
  16980. int returnRows = 0;
  16981. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16982. try
  16983. {
  16984. OracleParameter[] Paras = null;
  16985. string Insql = "";
  16986. // 1 查出根据条件进行未盘点数据
  16987. // 0.登窑、入窑、出窑工序的产品不能清除
  16988. Insql = @"select p.barcode from TP_PM_INCHECKEDDETAIL p "
  16989. + " inner join tp_pm_inproduction pin on pin.barcode = p.barcode and p.PROCEDUREID = pin.PROCEDUREID"
  16990. + " where p.INCHECKEDID=:InCheckedID and p.InCheckedFlag in ('0','9') and (pin.modeltype is null or pin.modeltype not in (1,2,3,6)) and pin.IsReworkFlag='0' and pin.InScrapFlag='0'";
  16991. if (!string.IsNullOrEmpty(procedureIDs))
  16992. {
  16993. Insql += " and p.PROCEDUREID in (" + procedureIDs + ")";
  16994. }
  16995. if (!string.IsNullOrEmpty(goodsCodes))
  16996. {
  16997. Insql += " and p.GoodsID in (" + goodsCodes + ")";
  16998. }
  16999. if (startDateTime != null)
  17000. {
  17001. Insql += Insql + " AND pin.ProcedureTime >= :Createdate AND pin.ProcedureTime <= :EndDate ";
  17002. Paras = new OracleParameter[] {
  17003. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  17004. new OracleParameter(":Createdate", OracleDbType.Date, startDateTime, ParameterDirection.Input),
  17005. new OracleParameter(":EndDate", OracleDbType.Date, endDateTime, ParameterDirection.Input),
  17006. };
  17007. }
  17008. else
  17009. {
  17010. Paras = new OracleParameter[] {
  17011. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  17012. };
  17013. }
  17014. string sql = "";
  17015. // 1.清除未盘点数据
  17016. sql = @"update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '9' /*, p.valueflag='0'*/ where p.INCHECKEDID=:InCheckedID and p.barcode in (" + Insql + ") and p.InCheckedFlag='0'";
  17017. //Paras = new OracleParameter[] {
  17018. // new OracleParameter(":InCheckedID",OracleDbType.Int32,
  17019. // inCheckedID,ParameterDirection.Input)
  17020. // };
  17021. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17022. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  17023. sql = @"insert into tp_pm_inproduction_tmp
  17024. (
  17025. BARCODE,
  17026. PRODUCTIONLINEID,
  17027. PRODUCTIONLINECODE,
  17028. PRODUCTIONLINENAME,
  17029. PROCEDUREMODEL,
  17030. MODELTYPE,
  17031. REWORKPROCEDUREID,
  17032. ISPUBLICBODY,
  17033. GOODSID,
  17034. GOODSCODE,
  17035. GOODSNAME,
  17036. USERID,
  17037. GROUTINGDAILYID,
  17038. GROUTINGDAILYDETAILID,
  17039. GROUTINGDATE,
  17040. GROUTINGLINEID,
  17041. GROUTINGLINECODE,
  17042. GROUTINGLINENAME,
  17043. GMOULDTYPEID,
  17044. CANMANYTIMES,
  17045. GROUTINGLINEDETAILID,
  17046. GROUTINGMOULDCODE,
  17047. MOULDCODE,
  17048. REMARKS,
  17049. ACCOUNTID,
  17050. VALUEFLAG,
  17051. CREATETIME,
  17052. CREATEUSERID,
  17053. UPDATETIME,
  17054. UPDATEUSERID,
  17055. OPTIMESTAMP,
  17056. ISREFIRE,
  17057. GOODSLEVELID,
  17058. GOODSLEVELTYPEID,
  17059. DEFECTFLAG,
  17060. GROUTINGUSERID,
  17061. GROUTINGUSERCODE,
  17062. GROUTINGNUM,
  17063. KILNID,
  17064. KILNCODE,
  17065. KILNNAME,
  17066. KILNCARID,
  17067. KILNCARCODE,
  17068. KILNCARNAME,
  17069. KILNCARBATCHNO,
  17070. KILNCARPOSITION,
  17071. SPECIALREPAIRFLAG,
  17072. FLOWPROCEDUREID,
  17073. FLOWPROCEDURETIME,
  17074. PROCEDUREID,
  17075. PROCEDURETIME,
  17076. PRODUCTIONDATAID,
  17077. trashflag,
  17078. Deletedtime,
  17079. logoid,
  17080. IsReworkFlag,
  17081. SemiCheckID,
  17082. DELETEDUSERID,
  17083. DELETEDUSERCODE
  17084. )
  17085. select
  17086. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  17087. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  17088. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  17089. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  17090. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  17091. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  17092. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  17093. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  17094. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  17095. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  17096. KILNID, KILNCODE, KILNNAME, KILNCARID,
  17097. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  17098. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,sysdate,logoid,ISREWORKFLAG,SEMICHECKID,"
  17099. + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  17100. "' from tp_pm_inproduction pp where pp.barcode in (" + Insql + ")";
  17101. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17102. // 4. 删除在产生产数据
  17103. sql = @" delete from tp_pm_productiondatain pp where pp.barcode in(" + Insql + ")";
  17104. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17105. // 3 删除在产数据
  17106. sql = @" delete from tp_pm_inproduction pp where pp.barcode in(" + Insql + ")";
  17107. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17108. sql = @" update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '3' where p.INCHECKEDFLAG='9' and p.InCheckedID=" + inCheckedID;
  17109. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17110. if (returnRows == 0)
  17111. {
  17112. oracleTrConn.Rollback();
  17113. oracleTrConn.Disconnect();
  17114. }
  17115. else
  17116. {
  17117. oracleTrConn.Commit();
  17118. oracleTrConn.Disconnect();
  17119. }
  17120. }
  17121. catch (Exception ex)
  17122. {
  17123. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  17124. {
  17125. oracleTrConn.Rollback();
  17126. oracleTrConn.Disconnect();
  17127. }
  17128. throw ex;
  17129. }
  17130. finally
  17131. {
  17132. if (oracleTrConn.ConnState == ConnectionState.Open)
  17133. {
  17134. oracleTrConn.Disconnect();
  17135. }
  17136. }
  17137. return returnRows;
  17138. }
  17139. /// <summary>
  17140. /// 设置条码商标
  17141. /// </summary>
  17142. /// <returns></returns>
  17143. public static int SaveBarCodeLogo(string barcode, int logoid, SUserInfo sUserInfo, out string returnMessage)
  17144. {
  17145. int returnRows = 0;
  17146. returnMessage = "";
  17147. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17148. try
  17149. {
  17150. // 转换条码
  17151. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  17152. OracleParameter[] paras1 = new OracleParameter[]{
  17153. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  17154. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  17155. };
  17156. barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  17157. OracleParameter[] Paras = null;
  17158. object oldLogoID = null;
  17159. //lsq 20210723 已注浆非产成品没有商标可以变更商标
  17160. //begin
  17161. object pdid = null;
  17162. //end
  17163. object pid = null;
  17164. string sql = "";
  17165. string oldMatnr = "";// 老物料编码
  17166. //sql = @"select logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  17167. //oldLogoID = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  17168. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  17169. // });
  17170. //lsq 20210723 已注浆非产成品没有商标可以变更商标
  17171. //begin
  17172. //sql = @"select g.logoid, f.fhuserid from tp_pm_groutingdailydetail g
  17173. // left join tp_pm_finishedproduct f on g.barcode = f.barcode
  17174. // where g.barcode=:barcode";
  17175. sql = @"select g.logoid,g.GROUTINGDAILYDETAILID,g.materialcode,f.fhuserid from tp_pm_groutingdailydetail g
  17176. left join tp_pm_finishedproduct f on g.barcode = f.barcode
  17177. where g.barcode=:barcode";
  17178. //end
  17179. DataTable dt = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
  17180. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  17181. });
  17182. if (dt != null && dt.Rows.Count > 0)
  17183. {
  17184. oldLogoID = dt.Rows[0]["logoid"];
  17185. object fhuserid = dt.Rows[0]["fhuserid"];
  17186. //lsq 20210723 已注浆非产成品没有商标可以变更商标
  17187. //begin
  17188. pdid = dt.Rows[0]["GROUTINGDAILYDETAILID"];
  17189. oldMatnr = dt.Rows[0]["materialcode"] + "";
  17190. //if (oldLogoID == null || oldLogoID == DBNull.Value)
  17191. if (pdid == null || pdid == DBNull.Value)
  17192. //end
  17193. {
  17194. // 条码不存在 ——> 该条码未注浆 lsq 20210723
  17195. return -2;
  17196. }
  17197. if (fhuserid != null && fhuserid != DBNull.Value)
  17198. {
  17199. // "已交接的产品不能变更商标";
  17200. return -3;
  17201. }
  17202. }
  17203. // 1.更新注浆明细
  17204. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17205. Paras = new OracleParameter[] {
  17206. new OracleParameter(":logoid",OracleDbType.Int32,
  17207. logoid,ParameterDirection.Input),
  17208. new OracleParameter(":updateuserid",OracleDbType.Int32,
  17209. sUserInfo.UserID,ParameterDirection.Input),
  17210. new OracleParameter(":barcode",OracleDbType.Varchar2,
  17211. barcode,ParameterDirection.Input)
  17212. };
  17213. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17214. // 2.在产产品
  17215. sql = @"update tp_pm_inproduction set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17216. //Paras = new OracleParameter[] {
  17217. // new OracleParameter(":logoid",OracleDbType.Int32,
  17218. // logoid,ParameterDirection.Input),
  17219. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17220. // sUserInfo.UserID,ParameterDirection.Input),
  17221. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17222. // barcode,ParameterDirection.Input)
  17223. // };
  17224. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17225. if (returnRows > 0)
  17226. {
  17227. sql = @"select ProcedureID from tp_pm_inproduction where barcode=:barcode";
  17228. pid = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  17229. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  17230. });
  17231. }
  17232. // 3.在产回收站
  17233. sql = @"update tp_pm_inproductiontrash set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17234. //Paras = new OracleParameter[] {
  17235. // new OracleParameter(":logoid",OracleDbType.Int32,
  17236. // logoid,ParameterDirection.Input),
  17237. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17238. // sUserInfo.UserID,ParameterDirection.Input),
  17239. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17240. // barcode,ParameterDirection.Input)
  17241. // };
  17242. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17243. // 4.在产临时表
  17244. sql = @"update tp_pm_inproduction_tmp set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17245. //Paras = new OracleParameter[] {
  17246. // new OracleParameter(":logoid",OracleDbType.Int32,
  17247. // logoid,ParameterDirection.Input),
  17248. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17249. // sUserInfo.UserID,ParameterDirection.Input),
  17250. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17251. // barcode,ParameterDirection.Input)
  17252. // };
  17253. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17254. // 5.成品表
  17255. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17256. //Paras = new OracleParameter[] {
  17257. // new OracleParameter(":logoid",OracleDbType.Int32,
  17258. // logoid,ParameterDirection.Input),
  17259. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17260. // sUserInfo.UserID,ParameterDirection.Input),
  17261. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17262. // barcode,ParameterDirection.Input)
  17263. // };
  17264. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17265. // 6 在产盘点明细
  17266. sql = @"update TP_PM_InCheckedDetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17267. //Paras = new OracleParameter[] {
  17268. // new OracleParameter(":logoid",OracleDbType.Int32,
  17269. // logoid,ParameterDirection.Input),
  17270. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17271. // sUserInfo.UserID,ParameterDirection.Input),
  17272. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17273. // barcode,ParameterDirection.Input)
  17274. // };
  17275. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17276. // 7 半成品检验登记
  17277. sql = @"update TP_PM_SemiCheck set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17278. //Paras = new OracleParameter[] {
  17279. // new OracleParameter(":logoid",OracleDbType.Int32,
  17280. // logoid,ParameterDirection.Input),
  17281. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17282. // sUserInfo.UserID,ParameterDirection.Input),
  17283. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17284. // barcode,ParameterDirection.Input)
  17285. // };
  17286. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17287. // 8 废弃产品
  17288. sql = @"update TP_PM_ScrapProduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17289. //Paras = new OracleParameter[] {
  17290. // new OracleParameter(":logoid",OracleDbType.Int32,
  17291. // logoid,ParameterDirection.Input),
  17292. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17293. // sUserInfo.UserID,ParameterDirection.Input),
  17294. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17295. // barcode,ParameterDirection.Input)
  17296. // };
  17297. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17298. // 9 在产生产数据
  17299. sql = @"update TP_PM_ProductionDataIn set Triggerflag=1, logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17300. //Paras = new OracleParameter[] {
  17301. // new OracleParameter(":logoid",OracleDbType.Int32,
  17302. // logoid,ParameterDirection.Input),
  17303. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17304. // sUserInfo.UserID,ParameterDirection.Input),
  17305. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17306. // barcode,ParameterDirection.Input)
  17307. // };
  17308. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17309. // 10 生产数据
  17310. sql = @"update TP_PM_ProductionData set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17311. //Paras = new OracleParameter[] {
  17312. // new OracleParameter(":logoid",OracleDbType.Int32,
  17313. // logoid,ParameterDirection.Input),
  17314. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  17315. // sUserInfo.UserID,ParameterDirection.Input),
  17316. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  17317. // barcode,ParameterDirection.Input)
  17318. // };
  17319. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17320. // 变更履历
  17321. sql =
  17322. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  17323. " (BARCODE\n" +
  17324. " ,OLDLOGOID\n" +
  17325. " ,NEWLOGOID\n" +
  17326. " ,PROCEDUREID\n" +
  17327. " ,REMARKS\n" +
  17328. " ,ACCOUNTID\n" +
  17329. " ,CREATETIME\n" +
  17330. " ,CREATEUSERID)\n" +
  17331. "VALUES\n" +
  17332. " (:BARCODE\n" +
  17333. " ,:OLDLOGOID\n" +
  17334. " ,:NEWLOGOID\n" +
  17335. " ,:PROCEDUREID\n" +
  17336. " ,NULL\n" +
  17337. " ,:ACCOUNTID\n" +
  17338. " ,SYSDATE\n" +
  17339. " ,:CREATEUSERID)";
  17340. Paras = new OracleParameter[] {
  17341. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  17342. oldLogoID,ParameterDirection.Input),
  17343. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  17344. logoid,ParameterDirection.Input),
  17345. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  17346. pid,ParameterDirection.Input),
  17347. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  17348. sUserInfo.AccountID,ParameterDirection.Input),
  17349. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  17350. sUserInfo.UserID,ParameterDirection.Input),
  17351. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  17352. barcode,ParameterDirection.Input)
  17353. };
  17354. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17355. // 切换物料,切换已装组件
  17356. returnRows = SetMatnrIdnrk(oracleTrConn, oldMatnr, barcode, sUserInfo, out returnMessage);
  17357. if (returnRows < 0)
  17358. {
  17359. return returnRows;
  17360. }
  17361. //if (returnRows == 0)
  17362. //{
  17363. // oracleTrConn.Rollback();
  17364. // oracleTrConn.Disconnect();
  17365. //}
  17366. //else
  17367. {
  17368. oracleTrConn.Commit();
  17369. oracleTrConn.Disconnect();
  17370. }
  17371. }
  17372. catch (Exception ex)
  17373. {
  17374. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  17375. {
  17376. oracleTrConn.Rollback();
  17377. oracleTrConn.Disconnect();
  17378. }
  17379. throw ex;
  17380. }
  17381. return returnRows;
  17382. }
  17383. /// <summary>
  17384. /// 设置条码商标 釉料
  17385. /// </summary>
  17386. /// <returns></returns>
  17387. public static int SaveBarCodeLogoAndGlazetype(string barcode, int logoid, int glazetypeid,
  17388. SUserInfo sUserInfo, out string returnMessage)
  17389. {
  17390. int returnRows = 0;
  17391. returnMessage = "";
  17392. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17393. try
  17394. {
  17395. // 转换条码
  17396. //string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  17397. //OracleParameter[] paras1 = new OracleParameter[]{
  17398. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  17399. // new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  17400. // };
  17401. //barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  17402. OracleParameter[] Paras = null;
  17403. string sql = "select g.groutingdailydetailid, g.logoid, g.glazetypeid, g.materialcode, t.PROCEDUREID from tp_pm_groutingdailydetail g \n" +
  17404. " left join tp_pm_inproduction t on t.barcode = g.barcode\n" +
  17405. "where g.barcode = :barcode";
  17406. Paras = new OracleParameter[] {
  17407. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  17408. barcode,ParameterDirection.Input), };
  17409. DataTable dt = oracleTrConn.GetSqlResultToDt(sql, Paras);
  17410. if (dt == null || dt.Rows.Count == 0)
  17411. {
  17412. returnMessage = "条码不存在";
  17413. return -2;
  17414. }
  17415. string oldMatnr = dt.Rows[0]["materialcode"] + "";// 老物料编码
  17416. // 釉料变更履历
  17417. sql = "insert into TP_PM_GlazetypeRecord\n" +
  17418. //"values\n" + xuwei update 2020-01-02
  17419. " (GROUTINGDAILYDETAILID\n" +
  17420. " ,OldGlazetypeid\n" +
  17421. " ,NewGlazetypeid\n" +
  17422. " ,ProcedureID\n" +
  17423. " ,Remarks\n" +
  17424. " ,AccountID\n" +
  17425. " ,CreateUserID)\n" +
  17426. "values\n" +
  17427. " (:GROUTINGDAILYDETAILID\n" +
  17428. " ,:OldGlazetypeid\n" +
  17429. " ,:NewGlazetypeid\n" +
  17430. " ,:ProcedureID\n" +
  17431. " ,:Remarks\n" +
  17432. " ,:AccountID\n" +
  17433. " ,:CreateUserID)";
  17434. Paras = new OracleParameter[] {
  17435. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
  17436. dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  17437. new OracleParameter(":OldGlazetypeid",OracleDbType.Int32,
  17438. dt.Rows[0]["glazetypeid"],ParameterDirection.Input),
  17439. new OracleParameter(":NewGlazetypeid",OracleDbType.Int32,
  17440. glazetypeid,ParameterDirection.Input),
  17441. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  17442. dt.Rows[0]["PROCEDUREID"],ParameterDirection.Input),
  17443. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  17444. null,ParameterDirection.Input),
  17445. new OracleParameter(":AccountID",OracleDbType.Int32,
  17446. sUserInfo.AccountID,ParameterDirection.Input),
  17447. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  17448. sUserInfo.UserID,ParameterDirection.Input),
  17449. };
  17450. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17451. // 变更履历
  17452. sql =
  17453. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  17454. " (BARCODE\n" +
  17455. " ,OLDLOGOID\n" +
  17456. " ,NEWLOGOID\n" +
  17457. //" ,PROCEDUREID\n" +
  17458. " ,REMARKS\n" +
  17459. " ,ACCOUNTID\n" +
  17460. " ,CREATETIME\n" +
  17461. " ,CREATEUSERID)\n" +
  17462. "VALUES\n" +
  17463. " (:BARCODE\n" +
  17464. " ,:OLDLOGOID\n" +
  17465. " ,:NEWLOGOID\n" +
  17466. //" ,:PROCEDUREID\n" +
  17467. " ,NULL\n" +
  17468. " ,:ACCOUNTID\n" +
  17469. " ,SYSDATE\n" +
  17470. " ,:CREATEUSERID)";
  17471. Paras = new OracleParameter[] {
  17472. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  17473. dt.Rows[0]["LOGOID"],ParameterDirection.Input),
  17474. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  17475. logoid,ParameterDirection.Input),
  17476. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  17477. // pid,ParameterDirection.Input),
  17478. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  17479. sUserInfo.AccountID,ParameterDirection.Input),
  17480. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  17481. sUserInfo.UserID,ParameterDirection.Input),
  17482. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  17483. barcode,ParameterDirection.Input)
  17484. };
  17485. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17486. // 1.更新注浆明细
  17487. sql = "update tp_pm_groutingdailydetail set logoid=:logoid, glazetypeid =:glazetypeid, updateuserid=:updateuserid where barcode=:barcode";
  17488. Paras = new OracleParameter[] {
  17489. new OracleParameter(":logoid",OracleDbType.Int32,
  17490. logoid,ParameterDirection.Input),
  17491. new OracleParameter(":glazetypeid",OracleDbType.Int32,
  17492. glazetypeid,ParameterDirection.Input),
  17493. new OracleParameter(":updateuserid",OracleDbType.Int32,
  17494. sUserInfo.UserID,ParameterDirection.Input),
  17495. new OracleParameter(":barcode",OracleDbType.Varchar2,
  17496. barcode,ParameterDirection.Input)
  17497. };
  17498. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  17499. // 1.更新在产
  17500. sql = @"update TP_PM_INPRODUCTION set logoid=:logoid,
  17501. --glazetypeid =:glazetypeid,
  17502. updateuserid=:updateuserid where barcode=:barcode";
  17503. Paras = new OracleParameter[] {
  17504. new OracleParameter(":logoid",OracleDbType.Int32,
  17505. logoid,ParameterDirection.Input),
  17506. //new OracleParameter(":glazetypeid",OracleDbType.Int32,
  17507. // glazetypeid,ParameterDirection.Input),
  17508. new OracleParameter(":updateuserid",OracleDbType.Int32,
  17509. sUserInfo.UserID,ParameterDirection.Input),
  17510. new OracleParameter(":barcode",OracleDbType.Varchar2,
  17511. barcode,ParameterDirection.Input)
  17512. };
  17513. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17514. // 切换物料,切换已装组件
  17515. returnRows = SetMatnrIdnrk(oracleTrConn, oldMatnr, barcode, sUserInfo, out returnMessage);
  17516. if (returnRows < 0)
  17517. {
  17518. return returnRows;
  17519. }
  17520. oracleTrConn.Commit();
  17521. }
  17522. catch (Exception ex)
  17523. {
  17524. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  17525. {
  17526. oracleTrConn.Rollback();
  17527. }
  17528. throw ex;
  17529. }
  17530. finally { oracleTrConn.Disconnect(); }
  17531. return returnRows;
  17532. }
  17533. /// <summary>
  17534. /// 设置条码商标 釉料
  17535. /// </summary>
  17536. /// <returns></returns>
  17537. public static int SaveBarCodesLogoAndGlazetype(string barcodesstr, int logoid, int glazetypeid,
  17538. int procedureID, SUserInfo sUserInfo, out string returnMessage)
  17539. {
  17540. int returnRows = 0;
  17541. returnMessage = "";
  17542. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17543. try
  17544. {
  17545. OracleParameter[] Paras = null;
  17546. string sql = "select g.groutingdailydetailid, g.logoid, g.glazetypeid, g.materialcode, t.PROCEDUREID from tp_pm_groutingdailydetail g \n" +
  17547. " left join tp_pm_inproduction t on t.barcode = g.barcode\n" +
  17548. "where g.barcode = :barcode";
  17549. string sql0 = "select g.groutingdailydetailid, g.logoid, g.glazetypeid, g.materialcode from tp_pm_groutingdailydetail g \n" +
  17550. "where g.barcode = :barcode";
  17551. // 釉料变更履历
  17552. string sql1 = "insert into TP_PM_GlazetypeRecord\n" +
  17553. //"values\n" + xuwei update 2020-01-02
  17554. " (GROUTINGDAILYDETAILID\n" +
  17555. " ,OldGlazetypeid\n" +
  17556. " ,NewGlazetypeid\n" +
  17557. " ,ProcedureID\n" +
  17558. " ,Remarks\n" +
  17559. " ,AccountID\n" +
  17560. " ,CreateUserID)\n" +
  17561. "values\n" +
  17562. " (:GROUTINGDAILYDETAILID\n" +
  17563. " ,:OldGlazetypeid\n" +
  17564. " ,:NewGlazetypeid\n" +
  17565. " ,:ProcedureID\n" +
  17566. " ,:Remarks\n" +
  17567. " ,:AccountID\n" +
  17568. " ,:CreateUserID)";
  17569. // 变更履历
  17570. string sqllogo =
  17571. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  17572. " (BARCODE\n" +
  17573. " ,OLDLOGOID\n" +
  17574. " ,NEWLOGOID\n" +
  17575. //" ,PROCEDUREID\n" +
  17576. " ,REMARKS\n" +
  17577. " ,ACCOUNTID\n" +
  17578. " ,CREATETIME\n" +
  17579. " ,CREATEUSERID)\n" +
  17580. "VALUES\n" +
  17581. " (:BARCODE\n" +
  17582. " ,:OLDLOGOID\n" +
  17583. " ,:NEWLOGOID\n" +
  17584. //" ,:PROCEDUREID\n" +
  17585. " ,NULL\n" +
  17586. " ,:ACCOUNTID\n" +
  17587. " ,SYSDATE\n" +
  17588. " ,:CREATEUSERID)";
  17589. string sql2 = "update tp_pm_groutingdailydetail set logoid=:logoid, glazetypeid =:glazetypeid, updateuserid=:updateuserid where barcode=:barcode";
  17590. // 1.更新在产
  17591. string sqlin = @"update TP_PM_INPRODUCTION set logoid=:logoid,
  17592. --glazetypeid =:glazetypeid,
  17593. updateuserid=:updateuserid where barcode=:barcode";
  17594. //xuwei add 2020-01-02
  17595. string[] barcodes = barcodesstr.Split(',');
  17596. foreach (string barcode in barcodes)
  17597. {
  17598. Paras = new OracleParameter[] {
  17599. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  17600. barcode,ParameterDirection.Input), };
  17601. DataTable dt = null;
  17602. if (procedureID > 0)
  17603. {
  17604. dt = oracleTrConn.GetSqlResultToDt(sql0, Paras);
  17605. }
  17606. else
  17607. {
  17608. dt = oracleTrConn.GetSqlResultToDt(sql, Paras);
  17609. }
  17610. if (dt == null || dt.Rows.Count == 0)
  17611. {
  17612. returnMessage = "条码不存在";
  17613. return -2;
  17614. }
  17615. string oldMatnr = dt.Rows[0]["materialcode"] + "";// 老物料编码
  17616. Paras = new OracleParameter[] {
  17617. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
  17618. dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  17619. new OracleParameter(":OldGlazetypeid",OracleDbType.Int32,
  17620. dt.Rows[0]["glazetypeid"],ParameterDirection.Input),
  17621. new OracleParameter(":NewGlazetypeid",OracleDbType.Int32,
  17622. glazetypeid,ParameterDirection.Input),
  17623. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  17624. (procedureID > 0 ? procedureID : dt.Rows[0]["PROCEDUREID"]),ParameterDirection.Input),
  17625. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  17626. null,ParameterDirection.Input),
  17627. new OracleParameter(":AccountID",OracleDbType.Int32,
  17628. sUserInfo.AccountID,ParameterDirection.Input),
  17629. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  17630. sUserInfo.UserID,ParameterDirection.Input),
  17631. };
  17632. oracleTrConn.ExecuteNonQuery(sql1, Paras);
  17633. // 商标履历
  17634. Paras = new OracleParameter[] {
  17635. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  17636. dt.Rows[0]["LOGOID"],ParameterDirection.Input),
  17637. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  17638. logoid,ParameterDirection.Input),
  17639. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  17640. // pid,ParameterDirection.Input),
  17641. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  17642. sUserInfo.AccountID,ParameterDirection.Input),
  17643. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  17644. sUserInfo.UserID,ParameterDirection.Input),
  17645. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  17646. barcode,ParameterDirection.Input)
  17647. };
  17648. returnRows += oracleTrConn.ExecuteNonQuery(sqllogo, Paras);
  17649. // 1.更新注浆明细
  17650. Paras = new OracleParameter[] {
  17651. new OracleParameter(":logoid",OracleDbType.Int32,
  17652. logoid,ParameterDirection.Input),
  17653. new OracleParameter(":glazetypeid",OracleDbType.Int32,
  17654. glazetypeid,ParameterDirection.Input),
  17655. new OracleParameter(":updateuserid",OracleDbType.Int32,
  17656. sUserInfo.UserID,ParameterDirection.Input),
  17657. new OracleParameter(":barcode",OracleDbType.Varchar2,
  17658. barcode,ParameterDirection.Input)
  17659. };
  17660. returnRows += oracleTrConn.ExecuteNonQuery(sql2, Paras);
  17661. // 1.更新在产
  17662. Paras = new OracleParameter[] {
  17663. new OracleParameter(":logoid",OracleDbType.Int32,
  17664. logoid,ParameterDirection.Input),
  17665. //new OracleParameter(":glazetypeid",OracleDbType.Int32,
  17666. // glazetypeid,ParameterDirection.Input),
  17667. new OracleParameter(":updateuserid",OracleDbType.Int32,
  17668. sUserInfo.UserID,ParameterDirection.Input),
  17669. new OracleParameter(":barcode",OracleDbType.Varchar2,
  17670. barcode,ParameterDirection.Input)
  17671. };
  17672. returnRows = oracleTrConn.ExecuteNonQuery(sqlin, Paras);
  17673. // 切换物料,切换已装组件
  17674. returnRows = SetMatnrIdnrk(oracleTrConn, oldMatnr, barcode, sUserInfo, out returnMessage);
  17675. if (returnRows < 0)
  17676. {
  17677. return returnRows;
  17678. }
  17679. }
  17680. oracleTrConn.Commit();
  17681. }
  17682. catch (Exception ex)
  17683. {
  17684. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  17685. {
  17686. oracleTrConn.Rollback();
  17687. }
  17688. throw ex;
  17689. }
  17690. finally { oracleTrConn.Disconnect(); }
  17691. return returnRows;
  17692. }
  17693. /// <summary>
  17694. /// 设置产成品商标
  17695. /// </summary>
  17696. /// <param name="barcodes"></param>
  17697. /// <param name="logoid"></param>
  17698. /// <param name="sUserInfo"></param>
  17699. /// <returns></returns>
  17700. public static int SetFinishedLogo(string[] barcodes, int logoid, SUserInfo sUserInfo, out string returnMessage)
  17701. {
  17702. int returnRows = 0;
  17703. returnMessage = "";
  17704. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17705. try
  17706. {
  17707. OracleParameter[] Paras = null;
  17708. object oldLogoID = null;
  17709. object gdid = null;
  17710. //object pid = null;
  17711. string sql = "";
  17712. DataTable dataTable = null;
  17713. foreach (string barcode in barcodes)
  17714. {
  17715. sql = @"select groutingdailydetailid, logoid, g.materialcode from tp_pm_groutingdailydetail where barcode=:barcode";
  17716. dataTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
  17717. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  17718. });
  17719. if (dataTable == null || dataTable.Rows.Count == 0)
  17720. {
  17721. //continue;
  17722. returnMessage = "条码不存在";
  17723. return -2;
  17724. }
  17725. gdid = dataTable.Rows[0]["groutingdailydetailid"];
  17726. oldLogoID = dataTable.Rows[0]["logoid"];
  17727. string oldMatnr = dataTable.Rows[0]["materialcode"] + "";// 老物料编码
  17728. // 1.更新注浆明细
  17729. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17730. Paras = new OracleParameter[] {
  17731. new OracleParameter(":logoid",OracleDbType.Int32,
  17732. logoid,ParameterDirection.Input),
  17733. new OracleParameter(":updateuserid",OracleDbType.Int32,
  17734. sUserInfo.UserID,ParameterDirection.Input),
  17735. new OracleParameter(":barcode",OracleDbType.Varchar2,
  17736. barcode,ParameterDirection.Input)
  17737. };
  17738. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17739. // 5.成品表
  17740. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  17741. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17742. // 变更履历
  17743. sql =
  17744. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  17745. " (BARCODE\n" +
  17746. " ,OLDLOGOID\n" +
  17747. " ,NEWLOGOID\n" +
  17748. //" ,PROCEDUREID\n" +
  17749. " ,REMARKS\n" +
  17750. " ,ACCOUNTID\n" +
  17751. " ,CREATETIME\n" +
  17752. " ,CREATEUSERID)\n" +
  17753. "VALUES\n" +
  17754. " (:BARCODE\n" +
  17755. " ,:OLDLOGOID\n" +
  17756. " ,:NEWLOGOID\n" +
  17757. //" ,:PROCEDUREID\n" +
  17758. " ,NULL\n" +
  17759. " ,:ACCOUNTID\n" +
  17760. " ,SYSDATE\n" +
  17761. " ,:CREATEUSERID)";
  17762. Paras = new OracleParameter[] {
  17763. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  17764. oldLogoID,ParameterDirection.Input),
  17765. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  17766. logoid,ParameterDirection.Input),
  17767. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  17768. // pid,ParameterDirection.Input),
  17769. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  17770. sUserInfo.AccountID,ParameterDirection.Input),
  17771. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  17772. sUserInfo.UserID,ParameterDirection.Input),
  17773. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  17774. barcode,ParameterDirection.Input)
  17775. };
  17776. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17777. // 切换物料,切换已装组件
  17778. returnRows = SetMatnrIdnrk(oracleTrConn, oldMatnr, barcode, sUserInfo, out returnMessage);
  17779. if (returnRows < 0)
  17780. {
  17781. return returnRows;
  17782. }
  17783. }
  17784. //if (returnRows == 0)
  17785. //{
  17786. // oracleTrConn.Rollback();
  17787. // oracleTrConn.Disconnect();
  17788. //}
  17789. //else
  17790. {
  17791. oracleTrConn.Commit();
  17792. oracleTrConn.Disconnect();
  17793. }
  17794. }
  17795. catch (Exception ex)
  17796. {
  17797. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  17798. {
  17799. oracleTrConn.Rollback();
  17800. oracleTrConn.Disconnect();
  17801. }
  17802. throw ex;
  17803. }
  17804. return returnRows;
  17805. }
  17806. /// <summary>
  17807. /// 设置产成品订单
  17808. /// </summary>
  17809. /// <param name="barcodes"></param>
  17810. /// <param name="orderid"></param>
  17811. /// <param name="sUserInfo"></param>
  17812. /// <returns></returns>
  17813. public static int SetHandoveredOrder(string[] barcodes, int orderID, SUserInfo sUserInfo)
  17814. {
  17815. int returnRows = 0;
  17816. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17817. try
  17818. {
  17819. string sql = @"update tp_pm_finishedproduct set FHOrderID=:FHOrderID,updateuserid=:updateuserid where barcode=:barcode and FHOrderID is not null";
  17820. OracleParameter[] Paras = new OracleParameter[] {
  17821. new OracleParameter(":barcode",OracleDbType.Varchar2,
  17822. "",ParameterDirection.Input),
  17823. new OracleParameter(":FHOrderID",OracleDbType.Int32,
  17824. orderID,ParameterDirection.Input),
  17825. new OracleParameter(":updateuserid",OracleDbType.Int32,
  17826. sUserInfo.UserID,ParameterDirection.Input)
  17827. };
  17828. foreach (string barcode in barcodes)
  17829. {
  17830. Paras[0].Value = barcode;
  17831. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17832. }
  17833. oracleTrConn.Commit();
  17834. oracleTrConn.Disconnect();
  17835. }
  17836. catch (Exception ex)
  17837. {
  17838. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  17839. {
  17840. oracleTrConn.Rollback();
  17841. oracleTrConn.Disconnect();
  17842. }
  17843. throw ex;
  17844. }
  17845. return returnRows;
  17846. }
  17847. #endregion
  17848. /// <summary>
  17849. /// 添加生产数据
  17850. /// </summary>
  17851. /// <param name="oracleTrConn">连接对象</param>
  17852. /// <param name="accountDate">账务日期</param>
  17853. /// <param name="productionData">生产数据</param>
  17854. /// <param name="sUserInfo">用户基本信息</param>
  17855. /// <returns>string</returns>
  17856. /// <remarks>
  17857. /// 陈冰 2014.09.18 新建
  17858. /// </remarks>
  17859. private static string AddProductionDataWaster(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  17860. {
  17861. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  17862. string selectSql = "";
  17863. string returnVal = "";
  17864. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  17865. //xuwei fix 2019-09-26 使用通用方法判定
  17866. // 2019-1016
  17867. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  17868. //if (isNodeBegin == 1) productionData.NodeType = (int)Constant.ProcedureNodeType.Begin;
  17869. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)
  17870. {
  17871. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  17872. if (isNodeBegin == 0)
  17873. {
  17874. productionData.NodeType = (int)Constant.ProcedureNodeType.Middle;
  17875. }
  17876. }
  17877. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  17878. {
  17879. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  17880. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  17881. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  17882. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  17883. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  17884. TP_PM_GroutingDailyDetail.MouldCode,
  17885. TP_PM_GroutingDailyDetail.GroutingDailyID,
  17886. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  17887. TP_PM_GroutingDailyDetail.GroutingLineID,
  17888. TP_PM_GroutingDailyDetail.GroutingLineCode,
  17889. TP_PM_GroutingDailyDetail.GroutingLineName,
  17890. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  17891. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  17892. (select GMouldTypeID
  17893. from TP_PM_GroutingDaily
  17894. where TP_PM_GroutingDaily.GroutingDailyID =
  17895. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  17896. (select CanManyTimes
  17897. from TP_PM_GroutingDaily
  17898. where TP_PM_GroutingDaily.GroutingDailyID =
  17899. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  17900. 0 as IsReFire
  17901. from TP_PM_GroutingDailyDetail
  17902. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  17903. }
  17904. else
  17905. {
  17906. selectSql = @"select
  17907. GroutingDate,
  17908. userid as GroutingUserID,
  17909. usercode as GroutingUserCode,
  17910. Groutingcount as GroutingNum,
  17911. GroutingMouldCode,
  17912. MouldCode,
  17913. GroutingDailyID,
  17914. GroutingDailyDetailID,
  17915. GroutingLineID,
  17916. GroutingLineCode,
  17917. GroutingLineName,
  17918. GMouldTypeID,
  17919. CanManyTimes,
  17920. GroutingLineDetailID,
  17921. SpecialRepairflag,
  17922. 0 as IsReFire,
  17923. logoid
  17924. from TP_PM_GroutingDailyDetail where barcode=:barcode
  17925. ";
  17926. }
  17927. OracleParameter[] selectparas = new OracleParameter[] {
  17928. new OracleParameter(":barcode",productionData.Barcode),
  17929. };
  17930. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  17931. DateTime GroutingDate = new DateTime();
  17932. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  17933. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  17934. int IsReFire = 0;
  17935. int? logoID = null;
  17936. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  17937. {
  17938. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  17939. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  17940. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  17941. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  17942. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  17943. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  17944. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  17945. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  17946. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  17947. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  17948. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  17949. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  17950. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  17951. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  17952. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  17953. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  17954. if (IsReFire > 0) //大于零代表重烧过
  17955. {
  17956. productionData.IsReFire = IsReFire;
  17957. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  17958. }
  17959. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  17960. {
  17961. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  17962. }
  17963. //if (productionData.LogoID != null) //当前工序有商标
  17964. //{
  17965. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  17966. // {
  17967. // logoID = productionData.LogoID;
  17968. // //根据明细ID.update
  17969. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  17970. // OracleParameter[] paras2 = new OracleParameter[] {
  17971. // new OracleParameter(":logoid",productionData.LogoID)
  17972. // };
  17973. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  17974. // }
  17975. //}
  17976. returnVal = SpecialRepairflag.ToString();
  17977. }
  17978. #endregion
  17979. #region 更新窑炉窑车属性
  17980. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  17981. {
  17982. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  17983. if (ds != null)
  17984. {
  17985. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  17986. {
  17987. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  17988. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  17989. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  17990. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  17991. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  17992. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  17993. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  17994. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  17995. }
  17996. }
  17997. }
  17998. #endregion
  17999. #region SQL
  18000. string sql = "insert into tp_pm_productiondataIn"
  18001. + " (productiondataid,"
  18002. + " barcode,"
  18003. + " centralizedbatchno,"
  18004. + " productionlineid,"
  18005. + " productionlinecode,"
  18006. + " productionlinename,"
  18007. + " procedureid,"
  18008. + " procedurecode,"
  18009. + " procedurename,"
  18010. + " proceduremodel,"
  18011. + " modeltype,"
  18012. + " piecetype,"
  18013. + " isreworked,"
  18014. + " nodetype,"
  18015. + " ispublicbody,"
  18016. + " isrefire,"
  18017. + " islengbu,"
  18018. + " organizationid,"
  18019. + " goodsid,"
  18020. + " goodscode,"
  18021. + " goodsname,"
  18022. + " userid,"
  18023. + " usercode,"
  18024. + " username,"
  18025. + " kilnid,"
  18026. + " kilncode,"
  18027. + " kilnname,"
  18028. + " kilncarid,"
  18029. + " kilncarcode,"
  18030. + " kilncarname,"
  18031. + " kilncarbatchno,"
  18032. + " kilncarposition,"
  18033. + " reworkprocedureid,"
  18034. + " reworkprocedurecode,"
  18035. + " reworkprocedurename,"
  18036. + " remarks,"
  18037. + " accountdate,"
  18038. + " accountid,"
  18039. + " GoodsLevelID,"
  18040. + " GoodsLevelTypeID,"
  18041. + " createuserid,"
  18042. + " updateuserid,"
  18043. + " GroutingDate,"
  18044. + " GroutingUserID,"
  18045. + " GroutingUserCode,"
  18046. + " GroutingNum,"
  18047. + " GroutingMouldCode,"
  18048. + " MouldCode,"
  18049. + "GroutingDailyID,"
  18050. + "GroutingDailyDetailID,"
  18051. + "GroutingLineID,"
  18052. + " GroutingLineCode,"
  18053. + "GroutingLineName,"
  18054. + "GMouldTypeID,"
  18055. + "CanManyTimes,"
  18056. + "GroutingLineDetailID,"
  18057. + "SpecialRepairflag,"
  18058. + "ClassesSettingID,"
  18059. + "LogoID"
  18060. + ")"
  18061. + " values"
  18062. + " (:productiondataid,"
  18063. + " :barcode,"
  18064. + " :centralizedbatchno,"
  18065. + " :productionlineid,"
  18066. + " :productionlinecode,"
  18067. + " :productionlinename,"
  18068. + " :procedureid,"
  18069. + " :procedurecode,"
  18070. + " :procedurename,"
  18071. + " :proceduremodel,"
  18072. + " :modeltype,"
  18073. + " :piecetype,"
  18074. + " :isreworked,"
  18075. + " :nodetype,"
  18076. + " :ispublicbody,"
  18077. + " :isrefire,"
  18078. + " :islengbu,"
  18079. + " :organizationid,"
  18080. + " :goodsid,"
  18081. + " :goodscode,"
  18082. + " :goodsname,"
  18083. + " :userid,"
  18084. + " :usercode,"
  18085. + " :username,"
  18086. + " :kilnid,"
  18087. + " :kilncode,"
  18088. + " :kilnname,"
  18089. + " :kilncarid,"
  18090. + " :kilncarcode,"
  18091. + " :kilncarname,"
  18092. + " :kilncarbatchno,"
  18093. + " :kilncarposition,"
  18094. + " :reworkprocedureid,"
  18095. + " :reworkprocedurecode,"
  18096. + " :reworkprocedurename,"
  18097. + " :remarks,"
  18098. + " :accountdata,"
  18099. + " :accountid,"
  18100. + " :GoodsLevelID,"
  18101. + " :GoodsLevelTypeID,"
  18102. + " :createuserid,"
  18103. + " :updateuserid,"
  18104. + " :groutingdate,"
  18105. + " :groutinguserid,"
  18106. + " :groutingusercode,"
  18107. + " :groutingnum,"
  18108. + " :groutingmouldcode,"
  18109. + " :mouldcode,"
  18110. + ":groutingdailyid,"
  18111. + ":groutingdailydetailid,"
  18112. + ":groutinglineid,"
  18113. + " :groutinglinecode,"
  18114. + ":groutinglinename,"
  18115. + ":gmouldtypeid,"
  18116. + ":canmanytimes,"
  18117. + ":groutinglinedetailid,"
  18118. + ":specialRepairflag,"
  18119. + ":classesSettingID,"
  18120. + ":logoID"
  18121. + ")";
  18122. #endregion
  18123. #region OracleParameter
  18124. OracleParameter[] paras = new OracleParameter[] {
  18125. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  18126. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  18127. new OracleParameter(":barcode",productionData.Barcode),
  18128. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  18129. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  18130. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  18131. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  18132. new OracleParameter(":procedureid",productionData.ProcedureID),
  18133. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  18134. new OracleParameter(":procedurename",productionData.ProcedureName),
  18135. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  18136. new OracleParameter(":modeltype",productionData.ModelType),
  18137. new OracleParameter(":piecetype",productionData.PieceType),
  18138. new OracleParameter(":isreworked",productionData.IsReworked),
  18139. new OracleParameter(":nodetype",productionData.NodeType),
  18140. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  18141. new OracleParameter(":isrefire",productionData.IsReFire),
  18142. new OracleParameter(":islengbu",productionData.IsLengBu),
  18143. new OracleParameter(":organizationid",productionData.OrganizationID),
  18144. new OracleParameter(":goodsid",productionData.GoodsID),
  18145. new OracleParameter(":goodscode",productionData.GoodsCode),
  18146. new OracleParameter(":goodsname",productionData.GoodsName),
  18147. new OracleParameter(":userid",productionData.UserID),
  18148. new OracleParameter(":usercode",productionData.UserCode),
  18149. new OracleParameter(":username",productionData.UserName),
  18150. new OracleParameter(":kilnid",productionData.KilnID),
  18151. new OracleParameter(":kilncode",productionData.KilnCode),
  18152. new OracleParameter(":kilnname",productionData.KilnName),
  18153. new OracleParameter(":kilncarid",productionData.KilnCarID),
  18154. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  18155. new OracleParameter(":kilncarname",productionData.KilnCarName),
  18156. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  18157. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  18158. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  18159. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  18160. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  18161. new OracleParameter(":remarks",productionData.Remarks),
  18162. new OracleParameter(":accountdata",accountDate),
  18163. new OracleParameter(":accountid",sUserInfo.AccountID),
  18164. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  18165. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  18166. new OracleParameter(":createuserid",sUserInfo.UserID),
  18167. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18168. new OracleParameter(":groutingdate",GroutingDate),
  18169. new OracleParameter(":groutinguserid",GroutingUserID),
  18170. new OracleParameter(":groutingusercode",GroutingUserCode),
  18171. new OracleParameter(":groutingnum",GroutingNum),
  18172. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  18173. new OracleParameter(":mouldcode",MouldCode),
  18174. new OracleParameter(":groutingdailyid",GroutingDailyID),
  18175. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  18176. new OracleParameter(":groutinglineid",GroutingLineID),
  18177. new OracleParameter(":groutinglinecode",GroutingLineCode),
  18178. new OracleParameter(":groutinglinename",GroutingLineName),
  18179. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  18180. new OracleParameter(":canmanytimes",CanManyTimes),
  18181. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  18182. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  18183. new OracleParameter(":logoID",logoID),
  18184. };
  18185. #endregion
  18186. foreach (OracleParameter para in paras)
  18187. {
  18188. if (string.IsNullOrEmpty(para.Value + ""))
  18189. {
  18190. para.Value = DBNull.Value;
  18191. }
  18192. }
  18193. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  18194. OutSpecialRepairflag = returnVal;
  18195. // 失败
  18196. if (result != Constant.INT_IS_ONE)
  18197. {
  18198. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18199. }
  18200. // 成功返回null
  18201. return null;
  18202. }
  18203. #region 保存半检登记
  18204. /// <summary>
  18205. /// 保存半检登记
  18206. /// </summary>
  18207. /// <param name="entity">半检实体类</param>
  18208. /// <param name="sUserInfo">用户基本信息</param>
  18209. /// <returns>ServiceResultEntity</returns>
  18210. /// <remarks>
  18211. /// 王鑫 2016.06.27 新建
  18212. /// </remarks>
  18213. public static ServiceResultEntity AddSemiCheck(SemiCheckEntity[] entityobj, SUserInfo sUserInfo)
  18214. {
  18215. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  18216. oracleTrConn.IgnoreCase = false;
  18217. ServiceResultEntity resultEntity = new ServiceResultEntity();
  18218. try
  18219. {
  18220. oracleTrConn.Connect();
  18221. SemiCheckEntity entity = entityobj[0];
  18222. string errMsg = "";
  18223. if (entity.SemiCheckCategory == 1) // 半检登记
  18224. {
  18225. errMsg = AddNormalSemiCheck(oracleTrConn, entity, sUserInfo);
  18226. }
  18227. else if (entity.SemiCheckCategory == 2)// 复检登记
  18228. {
  18229. errMsg = AddReSemiCheck(oracleTrConn, entity, sUserInfo);
  18230. }
  18231. else if (entity.SemiCheckCategory == 3)// 撤销复检
  18232. {
  18233. errMsg = AddCancelSemiCheck(oracleTrConn, entity, sUserInfo);
  18234. }
  18235. // 没有错误 提交事务
  18236. if (string.IsNullOrEmpty(errMsg))
  18237. {
  18238. oracleTrConn.Commit();
  18239. }
  18240. else
  18241. {
  18242. resultEntity.Message = errMsg;
  18243. }
  18244. }
  18245. catch (Exception ex)
  18246. {
  18247. oracleTrConn.Rollback();
  18248. throw ex;
  18249. }
  18250. finally
  18251. {
  18252. // 释放资源
  18253. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  18254. {
  18255. oracleTrConn.Disconnect();
  18256. }
  18257. }
  18258. return resultEntity;
  18259. }
  18260. #endregion
  18261. /// <summary>
  18262. /// 半检数据
  18263. /// </summary>
  18264. /// <param name="oracleTrConn">数据连接对象</param>
  18265. /// <param name="entity">半检实体类</param>
  18266. /// <param name="sUserInfo">用户基本信息</param>
  18267. /// <returns>string</returns>
  18268. /// <remarks>
  18269. /// 王鑫 2016.06.27 新建
  18270. /// </remarks>
  18271. private static string AddNormalSemiCheck(IDBTransaction oracleTrConn,
  18272. SemiCheckEntity entity,
  18273. SUserInfo sUserInfo)
  18274. {
  18275. try
  18276. {
  18277. // 获得账务日期
  18278. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  18279. string errMsg = string.Empty;
  18280. // 本批采集的批次号
  18281. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  18282. // 条码
  18283. string barcode = entity.BarCode;
  18284. if (string.IsNullOrEmpty(barcode))
  18285. {
  18286. throw new Exception("传入的条码号为空");
  18287. }
  18288. // 半检工号ID
  18289. int workUserID = Convert.ToInt32(entity.SemiCheckUserID);
  18290. // 半检工号编码
  18291. string workUserCode = entity.SemiCheckUserCode;
  18292. // 查询新插入的半检数据ID
  18293. string sql = "select SEQ_PM_SemiCheck_ID.nextval from dual";
  18294. string idStr = "";
  18295. if (entity.SemiCheckEditType == 1) //新增
  18296. {
  18297. idStr = oracleTrConn.GetSqlResultToStr(sql);
  18298. }
  18299. else if (entity.SemiCheckEditType == 2) //编辑返工
  18300. {
  18301. if (entity.SemiCheckType != "0") //正常
  18302. {
  18303. idStr = oracleTrConn.GetSqlResultToStr(sql);
  18304. }
  18305. }
  18306. else if (entity.SemiCheckEditType == 3) //编辑不合格
  18307. {
  18308. if (entity.SemiCheckType != "0") //正常
  18309. {
  18310. idStr = oracleTrConn.GetSqlResultToStr(sql);
  18311. }
  18312. }
  18313. // 保存时再验证,前台已有缺陷不能为空的验证,但还是产生了无责任和缺陷记录的数据,后台保存时增加验证。
  18314. if (!string.IsNullOrEmpty(idStr) && (entity.SemiCheckDefects == null || entity.SemiCheckDefects.Count == 0))
  18315. {
  18316. errMsg = "缺陷责任记录不能为空";
  18317. return errMsg;
  18318. }
  18319. if (entity.SemiCheckEditType == 1) //新增
  18320. {
  18321. #region 校验条码有效性
  18322. errMsg = CheckBarcodeByNew(oracleTrConn, barcode, sUserInfo);
  18323. if (!string.IsNullOrEmpty(errMsg))
  18324. {
  18325. return errMsg;
  18326. }
  18327. #endregion
  18328. #region 添加半检数据
  18329. entity.SemiCheckID = Convert.ToInt32(idStr);
  18330. if (entity.SemiCheckType == "2")
  18331. {
  18332. errMsg = AddSemiCheckDataNoPass(oracleTrConn, entity, sUserInfo);
  18333. // 注浆明细 产品等级
  18334. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=13,updateuserid=:updateuserid
  18335. where barcode=:barcode";
  18336. OracleParameter[] oracleParameters = new OracleParameter[] {
  18337. new OracleParameter(":accountid", sUserInfo.AccountID),
  18338. new OracleParameter(":barcode",entity.BarCode),
  18339. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18340. };
  18341. oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18342. }
  18343. else
  18344. {
  18345. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  18346. if (entity.SemiCheckType == "1")
  18347. {
  18348. // 注浆明细 产品等级
  18349. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  18350. where barcode=:barcode";
  18351. OracleParameter[] oracleParameters = new OracleParameter[] {
  18352. new OracleParameter(":accountid", sUserInfo.AccountID),
  18353. new OracleParameter(":barcode",entity.BarCode),
  18354. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18355. };
  18356. oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18357. }
  18358. else
  18359. {
  18360. // 注浆明细 产品等级
  18361. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=1,updateuserid=:updateuserid
  18362. where barcode=:barcode";
  18363. OracleParameter[] oracleParameters = new OracleParameter[] {
  18364. new OracleParameter(":accountid", sUserInfo.AccountID),
  18365. new OracleParameter(":barcode",entity.BarCode),
  18366. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18367. };
  18368. oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18369. }
  18370. }
  18371. if (!string.IsNullOrEmpty(errMsg))
  18372. {
  18373. return errMsg;
  18374. }
  18375. #endregion
  18376. #region 条码有缺陷
  18377. #region 是次品 添加废弃产品
  18378. string ResponProcedureidStr = "";
  18379. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  18380. {
  18381. #region 添加废弃产品
  18382. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  18383. #region 属性赋值
  18384. scrapProduct.BarCode = entity.BarCode;
  18385. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  18386. // 不能责任人吗? TODO 单独责任时,没有插入废品数据。
  18387. //scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  18388. scrapProduct.ResponType = (int)Constant.ScrapResponType.Person;
  18389. scrapProduct.ScrapDate = accountDate;// sysdate
  18390. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  18391. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  18392. scrapProduct.Auditor = sUserInfo.UserID;
  18393. scrapProduct.AuditlDate = accountDate;// sysdate
  18394. scrapProduct.AccountDate = accountDate;
  18395. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  18396. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  18397. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18398. {
  18399. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  18400. }
  18401. scrapProduct.GoodsLevelTypeID = 13;
  18402. //scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  18403. // 查询新插入的废弃ID
  18404. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  18405. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  18406. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18407. scrapProduct.ScrapType = 2;
  18408. #endregion
  18409. // 保存报废
  18410. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  18411. // 保存失败
  18412. if (!string.IsNullOrEmpty(errMsg))
  18413. {
  18414. return errMsg;
  18415. }
  18416. #endregion
  18417. }
  18418. #endregion
  18419. // 存在缺陷 插入缺陷表
  18420. if (entity.SemiCheckDefects != null)
  18421. {
  18422. int row = 0;
  18423. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  18424. {
  18425. if (row == 0)
  18426. {
  18427. #region 保存缺陷
  18428. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  18429. semiCheckDefect.ScrapResponFlag
  18430. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  18431. // 保存缺陷
  18432. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  18433. if (!string.IsNullOrEmpty(errMsg))
  18434. {
  18435. return errMsg;
  18436. }
  18437. #endregion
  18438. #region 是不合格 添加废弃责任工序
  18439. if (entity.SemiCheckType == "2")
  18440. {
  18441. //if (semiCheckDefect.DefectProcedureID != null)
  18442. {
  18443. #region 添加责任工序
  18444. ResponProcedureEntity responProce = new ResponProcedureEntity();
  18445. // 新建-不合格 获取生产线及生产数据ID
  18446. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  18447. OracleParameter[] oracleParameters = new OracleParameter[] {
  18448. new OracleParameter(":barcode",entity.BarCode),
  18449. };
  18450. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  18451. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18452. {
  18453. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  18454. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  18455. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  18456. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  18457. }
  18458. //新建-不合格 获取生产线及生产数据ID end
  18459. #region 属性赋值
  18460. responProce.BarCode = entity.BarCode;
  18461. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  18462. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  18463. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  18464. responProce.UserID = semiCheckDefect.DefectUserID;
  18465. responProce.UserCode = semiCheckDefect.DefectUserCode;
  18466. responProce.UserName = semiCheckDefect.DefectUserName;
  18467. responProce.Remarks = semiCheckDefect.Remarks;
  18468. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18469. #endregion
  18470. // 保存责任工序
  18471. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  18472. // 保存失败
  18473. if (!string.IsNullOrEmpty(errMsg))
  18474. {
  18475. return errMsg;
  18476. }
  18477. #endregion
  18478. }
  18479. }
  18480. #endregion
  18481. }
  18482. row++;
  18483. }
  18484. }
  18485. #endregion
  18486. #region 条码是不合格 删除在产产品数据
  18487. if (entity.SemiCheckType == "2") //新建时不合格
  18488. {
  18489. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  18490. sql = @"update TP_PM_InProduction set GoodsLevelID=
  18491. (
  18492. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  18493. )
  18494. ,GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  18495. where barcode=:barcode";
  18496. OracleParameter[] oracleParameters = new OracleParameter[] {
  18497. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  18498. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  18499. new OracleParameter(":accountid",sUserInfo.AccountID),
  18500. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  18501. new OracleParameter(":barcode",entity.BarCode),
  18502. // new OracleParameter(":createuserid",sUserInfo.UserID),
  18503. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18504. };
  18505. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18506. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  18507. string sqlInsert = @"insert into TP_PM_InProductionTrash
  18508. (
  18509. BarCode,
  18510. ProductionLineID,
  18511. ProductionLineCode,
  18512. ProductionLineName,
  18513. ProcedureModel,
  18514. ModelType,
  18515. DefectFlag,
  18516. ReworkProcedureID,
  18517. IsPublicBody,
  18518. IsReFire,
  18519. GoodsLevelID,
  18520. GoodsLevelTypeID,
  18521. GoodsID,
  18522. GoodsCode,
  18523. GoodsName,
  18524. UserID,
  18525. GroutingDailyID,
  18526. GroutingDailyDetailID,
  18527. GroutingDate,
  18528. GroutingLineID,
  18529. GroutingLineCode,
  18530. GroutingLineName,
  18531. GMouldTypeID,
  18532. CanManyTimes,
  18533. GroutingLineDetailID,
  18534. GroutingMouldCode,
  18535. MouldCode,
  18536. GroutingUserID,
  18537. GroutingUserCode,
  18538. GroutingNum,
  18539. Remarks,
  18540. KilnID,
  18541. KilnCode,
  18542. KilnName,
  18543. KilnCarID,
  18544. KilnCarCode,
  18545. KilnCarName,
  18546. KilnCarBatchNo,
  18547. KilnCarPosition,
  18548. AccountID,
  18549. ValueFlag,
  18550. CreateUserID,
  18551. UpdateUserID,
  18552. SpecialRepairflag,
  18553. FlowProcedureID,
  18554. FlowProcedureTime,
  18555. ProcedureID,
  18556. ProcedureTime,
  18557. ProductionDataID,
  18558. logoid,
  18559. ISREWORKFLAG, SEMICHECKID
  18560. )
  18561. select
  18562. BarCode,
  18563. ProductionLineID,
  18564. ProductionLineCode,
  18565. ProductionLineName,
  18566. ProcedureModel,
  18567. ModelType,
  18568. DefectFlag,
  18569. ReworkProcedureID,
  18570. IsPublicBody,
  18571. IsReFire,
  18572. -- GoodsLevelID,
  18573. --GoodsLevelTypeID,
  18574. (
  18575. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  18576. )
  18577. ,13,
  18578. GoodsID,
  18579. GoodsCode,
  18580. GoodsName,
  18581. UserID,
  18582. GroutingDailyID,
  18583. GroutingDailyDetailID,
  18584. GroutingDate,
  18585. GroutingLineID,
  18586. GroutingLineCode,
  18587. GroutingLineName,
  18588. GMouldTypeID,
  18589. CanManyTimes,
  18590. GroutingLineDetailID,
  18591. GroutingMouldCode,
  18592. MouldCode,
  18593. GroutingUserID,
  18594. GroutingUserCode,
  18595. GroutingNum,
  18596. Remarks,
  18597. KilnID,
  18598. KilnCode,
  18599. KilnName,
  18600. KilnCarID,
  18601. KilnCarCode,
  18602. KilnCarName,
  18603. KilnCarBatchNo,
  18604. KilnCarPosition,
  18605. AccountID,
  18606. ValueFlag,
  18607. :CreateUserID,
  18608. :UpdateUserID,
  18609. SpecialRepairflag,
  18610. FlowProcedureID,
  18611. FlowProcedureTime,
  18612. FlowProcedureID,
  18613. ProcedureTime,
  18614. ProductionDataID,
  18615. logoid,
  18616. ISREWORKFLAG, SEMICHECKID
  18617. from TP_PM_InProduction
  18618. where barcode=:barcode
  18619. ";
  18620. oracleParameters = new OracleParameter[] {
  18621. new OracleParameter(":barcode",entity.BarCode),
  18622. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  18623. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18624. new OracleParameter(":accountid",sUserInfo.AccountID),
  18625. };
  18626. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  18627. // 删除在产数据
  18628. sql = "delete tp_pm_inproduction where barcode = :barcode";
  18629. oracleParameters = new OracleParameter[] {
  18630. new OracleParameter(":barcode",entity.BarCode),
  18631. };
  18632. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18633. }
  18634. else if (entity.SemiCheckType == "1") //返工
  18635. {
  18636. sql = @"update TP_PM_InProduction set GoodsLevelTypeID=2,IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  18637. where barcode=:barcode";
  18638. OracleParameter[] oracleParameters = new OracleParameter[] {
  18639. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  18640. new OracleParameter(":barcode",entity.BarCode),
  18641. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18642. };
  18643. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18644. }
  18645. #endregion
  18646. }
  18647. else if (entity.SemiCheckEditType == 2) //编辑返工
  18648. {
  18649. #region 校验条码有效性
  18650. errMsg = CheckBarcodeByEditRework(oracleTrConn, barcode, sUserInfo);
  18651. if (!string.IsNullOrEmpty(errMsg))
  18652. {
  18653. return errMsg;
  18654. }
  18655. #endregion
  18656. #region 删除当前半检数据
  18657. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  18658. if (!string.IsNullOrEmpty(errMsg))
  18659. {
  18660. return errMsg;
  18661. }
  18662. #endregion
  18663. if (entity.SemiCheckType != "0") //正常
  18664. {
  18665. #region 添加半检数据
  18666. entity.SemiCheckID = Convert.ToInt32(idStr);
  18667. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  18668. if (!string.IsNullOrEmpty(errMsg))
  18669. {
  18670. return errMsg;
  18671. }
  18672. #endregion
  18673. }
  18674. #region 条码有缺陷
  18675. #region 是次品 添加废弃产品
  18676. string ResponProcedureidStr = "";
  18677. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  18678. {
  18679. #region 添加废弃产品
  18680. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  18681. #region 属性赋值
  18682. scrapProduct.BarCode = entity.BarCode;
  18683. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  18684. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  18685. scrapProduct.ScrapDate = accountDate;
  18686. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  18687. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  18688. scrapProduct.Auditor = sUserInfo.UserID;
  18689. scrapProduct.AuditlDate = accountDate;
  18690. scrapProduct.AccountDate = accountDate;
  18691. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  18692. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  18693. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  18694. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  18695. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18696. {
  18697. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  18698. }
  18699. scrapProduct.GoodsLevelTypeID = 13;
  18700. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  18701. // 查询新插入的废弃ID
  18702. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  18703. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  18704. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18705. scrapProduct.ScrapType = 2;
  18706. #endregion
  18707. // 保存报废
  18708. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  18709. // 保存失败
  18710. if (!string.IsNullOrEmpty(errMsg))
  18711. {
  18712. return errMsg;
  18713. }
  18714. #endregion
  18715. }
  18716. #endregion
  18717. // 存在缺陷 插入缺陷表
  18718. if (entity.SemiCheckDefects != null)
  18719. {
  18720. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  18721. {
  18722. #region 保存缺陷
  18723. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  18724. semiCheckDefect.ScrapResponFlag
  18725. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  18726. // 保存缺陷
  18727. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  18728. if (!string.IsNullOrEmpty(errMsg))
  18729. {
  18730. return errMsg;
  18731. }
  18732. #endregion
  18733. #region 是不合格 添加废弃责任工序
  18734. if (entity.SemiCheckType == "2")
  18735. {
  18736. //if (semiCheckDefect.DefectProcedureID != null)
  18737. {
  18738. #region 添加责任工序
  18739. ResponProcedureEntity responProce = new ResponProcedureEntity();
  18740. // 获取生产线及生产数据ID
  18741. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  18742. OracleParameter[] oracleParameters = new OracleParameter[] {
  18743. new OracleParameter(":barcode",entity.BarCode),
  18744. };
  18745. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  18746. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18747. {
  18748. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  18749. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  18750. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  18751. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  18752. }
  18753. //获取生产线及生产数据ID end
  18754. #region 属性赋值
  18755. responProce.BarCode = entity.BarCode;
  18756. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  18757. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  18758. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  18759. responProce.UserID = semiCheckDefect.DefectUserID;
  18760. responProce.UserCode = semiCheckDefect.DefectUserCode;
  18761. responProce.UserName = semiCheckDefect.DefectUserName;
  18762. responProce.Remarks = semiCheckDefect.Remarks;
  18763. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18764. #endregion
  18765. // 保存责任工序
  18766. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  18767. // 保存失败
  18768. if (!string.IsNullOrEmpty(errMsg))
  18769. {
  18770. return errMsg;
  18771. }
  18772. #endregion
  18773. }
  18774. }
  18775. #endregion
  18776. }
  18777. }
  18778. #endregion
  18779. #region 条码是不合格 删除在产产品数据
  18780. if (entity.SemiCheckType == "2") //编辑时不合格
  18781. {
  18782. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  18783. sql = @"update TP_PM_InProduction set GoodsLevelID= (
  18784. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  18785. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,IsReworkFlag=0,
  18786. updateuserid=:updateuserid
  18787. where barcode=:barcode";
  18788. OracleParameter[] oracleParameters = new OracleParameter[] {
  18789. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  18790. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  18791. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  18792. new OracleParameter(":barcode",entity.BarCode),
  18793. //new OracleParameter(":createuserid",sUserInfo.UserID),
  18794. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18795. new OracleParameter(":accountid",sUserInfo.AccountID),
  18796. };
  18797. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18798. // 注浆明细 产品等级
  18799. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=13,updateuserid=:updateuserid
  18800. where barcode=:barcode";
  18801. oracleParameters = new OracleParameter[] {
  18802. new OracleParameter(":accountid", sUserInfo.AccountID),
  18803. new OracleParameter(":barcode",entity.BarCode),
  18804. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18805. };
  18806. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18807. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  18808. string sqlInsert = @"insert into TP_PM_InProductionTrash
  18809. (
  18810. BarCode,
  18811. ProductionLineID,
  18812. ProductionLineCode,
  18813. ProductionLineName,
  18814. ProcedureModel,
  18815. ModelType,
  18816. DefectFlag,
  18817. ReworkProcedureID,
  18818. IsPublicBody,
  18819. IsReFire,
  18820. GoodsLevelID,
  18821. GoodsLevelTypeID,
  18822. GoodsID,
  18823. GoodsCode,
  18824. GoodsName,
  18825. UserID,
  18826. GroutingDailyID,
  18827. GroutingDailyDetailID,
  18828. GroutingDate,
  18829. GroutingLineID,
  18830. GroutingLineCode,
  18831. GroutingLineName,
  18832. GMouldTypeID,
  18833. CanManyTimes,
  18834. GroutingLineDetailID,
  18835. GroutingMouldCode,
  18836. MouldCode,
  18837. GroutingUserID,
  18838. GroutingUserCode,
  18839. GroutingNum,
  18840. Remarks,
  18841. KilnID,
  18842. KilnCode,
  18843. KilnName,
  18844. KilnCarID,
  18845. KilnCarCode,
  18846. KilnCarName,
  18847. KilnCarBatchNo,
  18848. KilnCarPosition,
  18849. AccountID,
  18850. ValueFlag,
  18851. CreateUserID,
  18852. UpdateUserID,
  18853. SpecialRepairflag,
  18854. FlowProcedureID,
  18855. FlowProcedureTime,
  18856. ProcedureID,
  18857. ProcedureTime,
  18858. ProductionDataID,
  18859. logoid, SEMICHECKID
  18860. )
  18861. select
  18862. BarCode,
  18863. ProductionLineID,
  18864. ProductionLineCode,
  18865. ProductionLineName,
  18866. ProcedureModel,
  18867. ModelType,
  18868. DefectFlag,
  18869. ReworkProcedureID,
  18870. IsPublicBody,
  18871. IsReFire,
  18872. -- GoodsLevelID,
  18873. --GoodsLevelTypeID,
  18874. (
  18875. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  18876. )
  18877. ,13,
  18878. GoodsID,
  18879. GoodsCode,
  18880. GoodsName,
  18881. UserID,
  18882. GroutingDailyID,
  18883. GroutingDailyDetailID,
  18884. GroutingDate,
  18885. GroutingLineID,
  18886. GroutingLineCode,
  18887. GroutingLineName,
  18888. GMouldTypeID,
  18889. CanManyTimes,
  18890. GroutingLineDetailID,
  18891. GroutingMouldCode,
  18892. MouldCode,
  18893. GroutingUserID,
  18894. GroutingUserCode,
  18895. GroutingNum,
  18896. Remarks,
  18897. KilnID,
  18898. KilnCode,
  18899. KilnName,
  18900. KilnCarID,
  18901. KilnCarCode,
  18902. KilnCarName,
  18903. KilnCarBatchNo,
  18904. KilnCarPosition,
  18905. AccountID,
  18906. ValueFlag,
  18907. :CreateUserID,
  18908. :UpdateUserID,
  18909. SpecialRepairflag,
  18910. FlowProcedureID,
  18911. FlowProcedureTime,
  18912. FlowProcedureID,
  18913. ProcedureTime,
  18914. ProductionDataID,
  18915. logoid,
  18916. :SemiCheckID
  18917. from TP_PM_InProduction
  18918. where barcode=:barcode
  18919. ";
  18920. oracleParameters = new OracleParameter[] {
  18921. new OracleParameter(":barcode",entity.BarCode),
  18922. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  18923. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18924. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18925. new OracleParameter(":accountid",sUserInfo.AccountID),
  18926. };
  18927. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  18928. // 删除在产数据
  18929. sql = "delete tp_pm_inproduction where barcode = :barcode";
  18930. oracleParameters = new OracleParameter[] {
  18931. new OracleParameter(":barcode",entity.BarCode),
  18932. };
  18933. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18934. }
  18935. else if (entity.SemiCheckType == "1") //返工
  18936. {
  18937. sql = @"update TP_PM_InProduction set GoodsLevelTypeID=2,IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  18938. where barcode=:barcode";
  18939. OracleParameter[] oracleParameters = new OracleParameter[] {
  18940. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  18941. new OracleParameter(":barcode",entity.BarCode),
  18942. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18943. };
  18944. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18945. // 注浆明细 产品等级
  18946. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  18947. where barcode=:barcode";
  18948. oracleParameters = new OracleParameter[] {
  18949. new OracleParameter(":accountid", sUserInfo.AccountID),
  18950. new OracleParameter(":barcode",entity.BarCode),
  18951. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18952. };
  18953. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18954. }
  18955. else if (entity.SemiCheckType == "0") //正常
  18956. {
  18957. sql = @"update TP_PM_InProduction set GoodsLevelTypeID=1,IsReworkFlag=0,SemiCheckID=null,updateuserid=:updateuserid
  18958. where barcode=:barcode";
  18959. OracleParameter[] oracleParameters = new OracleParameter[] {
  18960. new OracleParameter(":barcode",entity.BarCode),
  18961. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18962. };
  18963. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18964. // 注浆明细 产品等级
  18965. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=1,updateuserid=:updateuserid
  18966. where barcode=:barcode";
  18967. oracleParameters = new OracleParameter[] {
  18968. new OracleParameter(":accountid", sUserInfo.AccountID),
  18969. new OracleParameter(":barcode",entity.BarCode),
  18970. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18971. };
  18972. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18973. }
  18974. #endregion
  18975. }
  18976. else if (entity.SemiCheckEditType == 3) //编辑不合格
  18977. {
  18978. #region 校验条码有效性
  18979. errMsg = CheckBarcodeByEditNoPass(oracleTrConn, barcode, sUserInfo);
  18980. if (!string.IsNullOrEmpty(errMsg))
  18981. {
  18982. return errMsg;
  18983. }
  18984. #endregion
  18985. #region 删除当前半检数据
  18986. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  18987. if (!string.IsNullOrEmpty(errMsg))
  18988. {
  18989. return errMsg;
  18990. }
  18991. #endregion
  18992. if (entity.SemiCheckType != "0") //正常
  18993. {
  18994. #region 添加半检数据
  18995. entity.SemiCheckID = Convert.ToInt32(idStr);
  18996. errMsg = AddSemiCheckDataTrash(oracleTrConn, entity, sUserInfo);
  18997. if (!string.IsNullOrEmpty(errMsg))
  18998. {
  18999. return errMsg;
  19000. }
  19001. #endregion
  19002. }
  19003. #region 条码是不合格 删除在产产品数据
  19004. OracleParameter[] spParameters = null;
  19005. int spResult = 0;
  19006. if (entity.SemiCheckType == "2") //编辑时不合格
  19007. {
  19008. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  19009. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  19010. " from TP_PM_ScrapProduct sp\n" +
  19011. " where sp.barcode = :barcode\n" +
  19012. " and sp.auditstatus = 1\n" +
  19013. " and sp.valueflag = '1'\n" +
  19014. " and sp.scraptype = '2'";
  19015. spParameters = new OracleParameter[] {
  19016. new OracleParameter(":barcode",entity.BarCode),
  19017. };
  19018. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  19019. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  19020. spParameters = new OracleParameter[] {
  19021. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19022. new OracleParameter(":scrapproductid",scrapproductid),
  19023. };
  19024. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  19025. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  19026. //oracleParameters = new OracleParameter[] {
  19027. // new OracleParameter(":barcode",entity.BarCode),
  19028. //};
  19029. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  19030. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  19031. //OracleParameter[] oracleParameters = new OracleParameter[] {
  19032. // new OracleParameter(":barcode",entity.BarCode),
  19033. //};
  19034. //int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19035. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  19036. //oracleParameters = new OracleParameter[] {
  19037. // new OracleParameter(":barcode",entity.BarCode),
  19038. //};
  19039. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19040. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  19041. ////oracleParameters = new OracleParameter[] {
  19042. //// new OracleParameter(":barcode",entity.BarCode),
  19043. ////};
  19044. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19045. #endregion
  19046. #region 2.修改在产回收站表中的数据(产品等级【13不合格】,半检登记ID=新记录的半检登记ID)。
  19047. sql = @"update TP_PM_InProductionTrash set GoodsLevelID= (
  19048. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  19049. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID where barcode=:barcode";
  19050. OracleParameter[] oracleParameters = new OracleParameter[] {
  19051. new OracleParameter(":barcode",entity.BarCode),
  19052. new OracleParameter(":accountid",sUserInfo.AccountID),
  19053. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  19054. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  19055. };
  19056. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19057. // 注浆明细 产品等级
  19058. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=13,updateuserid=:updateuserid
  19059. where barcode=:barcode";
  19060. oracleParameters = new OracleParameter[] {
  19061. new OracleParameter(":accountid", sUserInfo.AccountID),
  19062. new OracleParameter(":barcode",entity.BarCode),
  19063. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19064. };
  19065. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19066. #endregion
  19067. #region 条码有缺陷
  19068. #region 是次品 添加废弃产品
  19069. string ResponProcedureidStr = "";
  19070. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  19071. {
  19072. #region 添加废弃产品
  19073. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  19074. #region 属性赋值
  19075. scrapProduct.BarCode = entity.BarCode;
  19076. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  19077. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  19078. scrapProduct.ScrapDate = accountDate;
  19079. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  19080. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  19081. scrapProduct.Auditor = sUserInfo.UserID;
  19082. scrapProduct.AuditlDate = accountDate;
  19083. scrapProduct.AccountDate = accountDate;
  19084. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  19085. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  19086. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19087. {
  19088. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  19089. }
  19090. scrapProduct.GoodsLevelTypeID = 13;
  19091. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  19092. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  19093. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  19094. // 查询新插入的废弃ID
  19095. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  19096. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  19097. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  19098. scrapProduct.ScrapType = 2;
  19099. #endregion
  19100. // 保存报废
  19101. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  19102. // 保存失败
  19103. if (!string.IsNullOrEmpty(errMsg))
  19104. {
  19105. return errMsg;
  19106. }
  19107. #endregion
  19108. }
  19109. #endregion
  19110. // 存在缺陷 插入缺陷表
  19111. if (entity.SemiCheckDefects != null)
  19112. {
  19113. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  19114. {
  19115. #region 保存缺陷
  19116. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  19117. semiCheckDefect.ScrapResponFlag
  19118. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  19119. // 保存缺陷
  19120. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  19121. if (!string.IsNullOrEmpty(errMsg))
  19122. {
  19123. return errMsg;
  19124. }
  19125. #endregion
  19126. #region 是不合格 添加废弃责任工序
  19127. if (entity.SemiCheckType == "2")
  19128. {
  19129. //if (semiCheckDefect.DefectProcedureID != null)
  19130. {
  19131. #region 添加责任工序
  19132. ResponProcedureEntity responProce = new ResponProcedureEntity();
  19133. // 取生产线及生产数据ID
  19134. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProductionTrash where barcode=:barcode";
  19135. oracleParameters = new OracleParameter[] {
  19136. new OracleParameter(":barcode",entity.BarCode),
  19137. };
  19138. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  19139. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19140. {
  19141. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  19142. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  19143. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  19144. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  19145. }
  19146. //获取生产线及生产数据ID end
  19147. #region 属性赋值
  19148. responProce.BarCode = entity.BarCode;
  19149. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  19150. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  19151. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  19152. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  19153. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  19154. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  19155. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  19156. responProce.UserID = semiCheckDefect.DefectUserID;
  19157. responProce.UserCode = semiCheckDefect.DefectUserCode;
  19158. responProce.UserName = semiCheckDefect.DefectUserName;
  19159. responProce.Remarks = semiCheckDefect.Remarks;
  19160. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  19161. #endregion
  19162. // 保存责任工序
  19163. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  19164. // 保存失败
  19165. if (!string.IsNullOrEmpty(errMsg))
  19166. {
  19167. return errMsg;
  19168. }
  19169. #endregion
  19170. }
  19171. }
  19172. #endregion
  19173. }
  19174. }
  19175. #endregion
  19176. }
  19177. else if (entity.SemiCheckType == "1") //返工
  19178. {
  19179. #region 1.从在产回收站中把数据恢复到在产表中。
  19180. string sqlInsert = @"insert into TP_PM_InProduction
  19181. (
  19182. BarCode,
  19183. ProductionLineID,
  19184. ProductionLineCode,
  19185. ProductionLineName,
  19186. ProcedureModel,
  19187. ModelType,
  19188. DefectFlag,
  19189. ReworkProcedureID,
  19190. IsPublicBody,
  19191. IsReFire,
  19192. GoodsLevelID,
  19193. GoodsLevelTypeID,
  19194. GoodsID,
  19195. GoodsCode,
  19196. GoodsName,
  19197. UserID,
  19198. GroutingDailyID,
  19199. GroutingDailyDetailID,
  19200. GroutingDate,
  19201. GroutingLineID,
  19202. GroutingLineCode,
  19203. GroutingLineName,
  19204. GMouldTypeID,
  19205. CanManyTimes,
  19206. GroutingLineDetailID,
  19207. GroutingMouldCode,
  19208. MouldCode,
  19209. GroutingUserID,
  19210. GroutingUserCode,
  19211. GroutingNum,
  19212. Remarks,
  19213. KilnID,
  19214. KilnCode,
  19215. KilnName,
  19216. KilnCarID,
  19217. KilnCarCode,
  19218. KilnCarName,
  19219. KilnCarBatchNo,
  19220. KilnCarPosition,
  19221. AccountID,
  19222. ValueFlag,
  19223. CreateUserID,
  19224. UpdateUserID,
  19225. SpecialRepairflag,
  19226. FlowProcedureID,
  19227. FlowProcedureTime,
  19228. ProcedureID,
  19229. ProcedureTime,
  19230. ProductionDataID,
  19231. logoid,
  19232. IsReworkFlag,
  19233. SemiCheckID
  19234. )
  19235. select
  19236. BarCode,
  19237. ProductionLineID,
  19238. ProductionLineCode,
  19239. ProductionLineName,
  19240. ProcedureModel,
  19241. ModelType,
  19242. DefectFlag,
  19243. ReworkProcedureID,
  19244. IsPublicBody,
  19245. IsReFire,
  19246. null,
  19247. 2,
  19248. GoodsID,
  19249. GoodsCode,
  19250. GoodsName,
  19251. UserID,
  19252. GroutingDailyID,
  19253. GroutingDailyDetailID,
  19254. GroutingDate,
  19255. GroutingLineID,
  19256. GroutingLineCode,
  19257. GroutingLineName,
  19258. GMouldTypeID,
  19259. CanManyTimes,
  19260. GroutingLineDetailID,
  19261. GroutingMouldCode,
  19262. MouldCode,
  19263. GroutingUserID,
  19264. GroutingUserCode,
  19265. GroutingNum,
  19266. Remarks,
  19267. KilnID,
  19268. KilnCode,
  19269. KilnName,
  19270. KilnCarID,
  19271. KilnCarCode,
  19272. KilnCarName,
  19273. KilnCarBatchNo,
  19274. KilnCarPosition,
  19275. AccountID,
  19276. ValueFlag,
  19277. :CreateUserID,
  19278. :UpdateUserID,
  19279. SpecialRepairflag,
  19280. FlowProcedureID,
  19281. FlowProcedureTime,
  19282. FlowProcedureID,
  19283. ProcedureTime,
  19284. ProductionDataID,
  19285. logoid,
  19286. 1,
  19287. :SemiCheckID
  19288. from TP_PM_InProductionTrash
  19289. where barcode=:barcode
  19290. ";
  19291. OracleParameter[] oracleParameters = new OracleParameter[] {
  19292. new OracleParameter(":barcode",entity.BarCode),
  19293. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  19294. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  19295. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  19296. };
  19297. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  19298. // 注浆明细 产品等级
  19299. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  19300. where barcode=:barcode";
  19301. oracleParameters = new OracleParameter[] {
  19302. new OracleParameter(":accountid", sUserInfo.AccountID),
  19303. new OracleParameter(":barcode",entity.BarCode),
  19304. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19305. };
  19306. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19307. #endregion
  19308. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  19309. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  19310. " from TP_PM_ScrapProduct sp\n" +
  19311. " where sp.barcode = :barcode\n" +
  19312. " and sp.auditstatus = 1\n" +
  19313. " and sp.valueflag = '1'\n" +
  19314. " and sp.scraptype = '2'";
  19315. spParameters = new OracleParameter[] {
  19316. new OracleParameter(":barcode",entity.BarCode),
  19317. };
  19318. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  19319. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  19320. spParameters = new OracleParameter[] {
  19321. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19322. new OracleParameter(":scrapproductid",scrapproductid),
  19323. };
  19324. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  19325. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  19326. //oracleParameters = new OracleParameter[] {
  19327. // new OracleParameter(":barcode",entity.BarCode),
  19328. //};
  19329. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  19330. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  19331. //oracleParameters = new OracleParameter[] {
  19332. // new OracleParameter(":barcode",entity.BarCode),
  19333. //};
  19334. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19335. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  19336. //oracleParameters = new OracleParameter[] {
  19337. // new OracleParameter(":barcode",entity.BarCode),
  19338. //};
  19339. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19340. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  19341. ////oracleParameters = new OracleParameter[] {
  19342. //// new OracleParameter(":barcode",entity.BarCode),
  19343. ////};
  19344. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19345. #endregion
  19346. #region 3.删除在产产品数据
  19347. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  19348. oracleParameters = new OracleParameter[] {
  19349. new OracleParameter(":barcode",entity.BarCode),
  19350. };
  19351. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19352. #endregion
  19353. #region 4.更新半检数据产品分级
  19354. sql = "update TP_PM_SemiCheck set GoodsLevelID=null,GoodsLevelTypeID=null where SemiCheckID=:SemiCheckID";
  19355. oracleParameters = new OracleParameter[] {
  19356. new OracleParameter(":SemiCheckID",idStr),
  19357. };
  19358. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19359. #endregion
  19360. #region 存在缺陷 插入缺陷表
  19361. if (entity.SemiCheckDefects != null)
  19362. {
  19363. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  19364. {
  19365. #region 保存缺陷
  19366. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  19367. semiCheckDefect.ScrapResponFlag
  19368. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  19369. // 保存缺陷
  19370. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  19371. if (!string.IsNullOrEmpty(errMsg))
  19372. {
  19373. return errMsg;
  19374. }
  19375. #endregion
  19376. }
  19377. }
  19378. #endregion
  19379. }
  19380. else if (entity.SemiCheckType == "0") //正常
  19381. {
  19382. #region 1.从在产回收站中把数据恢复到在产表中。
  19383. string sqlInsert = @"insert into TP_PM_InProduction
  19384. (
  19385. BarCode,
  19386. ProductionLineID,
  19387. ProductionLineCode,
  19388. ProductionLineName,
  19389. ProcedureModel,
  19390. ModelType,
  19391. DefectFlag,
  19392. ReworkProcedureID,
  19393. IsPublicBody,
  19394. IsReFire,
  19395. GoodsLevelID,
  19396. GoodsLevelTypeID,
  19397. GoodsID,
  19398. GoodsCode,
  19399. GoodsName,
  19400. UserID,
  19401. GroutingDailyID,
  19402. GroutingDailyDetailID,
  19403. GroutingDate,
  19404. GroutingLineID,
  19405. GroutingLineCode,
  19406. GroutingLineName,
  19407. GMouldTypeID,
  19408. CanManyTimes,
  19409. GroutingLineDetailID,
  19410. GroutingMouldCode,
  19411. MouldCode,
  19412. GroutingUserID,
  19413. GroutingUserCode,
  19414. GroutingNum,
  19415. Remarks,
  19416. KilnID,
  19417. KilnCode,
  19418. KilnName,
  19419. KilnCarID,
  19420. KilnCarCode,
  19421. KilnCarName,
  19422. KilnCarBatchNo,
  19423. KilnCarPosition,
  19424. AccountID,
  19425. ValueFlag,
  19426. CreateUserID,
  19427. UpdateUserID,
  19428. SpecialRepairflag,
  19429. FlowProcedureID,
  19430. FlowProcedureTime,
  19431. ProcedureID,
  19432. ProcedureTime,
  19433. ProductionDataID,
  19434. logoid,
  19435. IsReworkFlag,
  19436. SemiCheckID
  19437. )
  19438. select
  19439. BarCode,
  19440. ProductionLineID,
  19441. ProductionLineCode,
  19442. ProductionLineName,
  19443. ProcedureModel,
  19444. ModelType,
  19445. DefectFlag,
  19446. ReworkProcedureID,
  19447. IsPublicBody,
  19448. IsReFire,
  19449. null,
  19450. 1,
  19451. GoodsID,
  19452. GoodsCode,
  19453. GoodsName,
  19454. UserID,
  19455. GroutingDailyID,
  19456. GroutingDailyDetailID,
  19457. GroutingDate,
  19458. GroutingLineID,
  19459. GroutingLineCode,
  19460. GroutingLineName,
  19461. GMouldTypeID,
  19462. CanManyTimes,
  19463. GroutingLineDetailID,
  19464. GroutingMouldCode,
  19465. MouldCode,
  19466. GroutingUserID,
  19467. GroutingUserCode,
  19468. GroutingNum,
  19469. Remarks,
  19470. KilnID,
  19471. KilnCode,
  19472. KilnName,
  19473. KilnCarID,
  19474. KilnCarCode,
  19475. KilnCarName,
  19476. KilnCarBatchNo,
  19477. KilnCarPosition,
  19478. AccountID,
  19479. ValueFlag,
  19480. :CreateUserID,
  19481. :UpdateUserID,
  19482. SpecialRepairflag,
  19483. FlowProcedureID,
  19484. FlowProcedureTime,
  19485. FlowProcedureID,
  19486. ProcedureTime,
  19487. ProductionDataID,
  19488. logoid,
  19489. 0,
  19490. null
  19491. from TP_PM_InProductionTrash
  19492. where barcode=:barcode
  19493. ";
  19494. OracleParameter[] oracleParameters = new OracleParameter[] {
  19495. new OracleParameter(":barcode",entity.BarCode),
  19496. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  19497. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  19498. };
  19499. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  19500. // 注浆明细 产品等级
  19501. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=1,updateuserid=:updateuserid
  19502. where barcode=:barcode";
  19503. oracleParameters = new OracleParameter[] {
  19504. new OracleParameter(":accountid", sUserInfo.AccountID),
  19505. new OracleParameter(":barcode",entity.BarCode),
  19506. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19507. };
  19508. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19509. #endregion
  19510. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  19511. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  19512. " from TP_PM_ScrapProduct sp\n" +
  19513. " where sp.barcode = :barcode\n" +
  19514. " and sp.auditstatus = 1\n" +
  19515. " and sp.valueflag = '1'\n" +
  19516. " and sp.scraptype = '2'";
  19517. spParameters = new OracleParameter[] {
  19518. new OracleParameter(":barcode",entity.BarCode),
  19519. };
  19520. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  19521. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  19522. spParameters = new OracleParameter[] {
  19523. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19524. new OracleParameter(":scrapproductid",scrapproductid),
  19525. };
  19526. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  19527. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  19528. //oracleParameters = new OracleParameter[] {
  19529. // new OracleParameter(":barcode",entity.BarCode),
  19530. //};
  19531. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  19532. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  19533. //oracleParameters = new OracleParameter[] {
  19534. // new OracleParameter(":barcode",entity.BarCode),
  19535. //};
  19536. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19537. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  19538. //oracleParameters = new OracleParameter[] {
  19539. // new OracleParameter(":barcode",entity.BarCode),
  19540. //};
  19541. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19542. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  19543. ////oracleParameters = new OracleParameter[] {
  19544. //// new OracleParameter(":barcode",entity.BarCode),
  19545. ////};
  19546. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19547. #endregion
  19548. #region 3.删除在产回收站产品数据
  19549. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  19550. oracleParameters = new OracleParameter[] {
  19551. new OracleParameter(":barcode",entity.BarCode),
  19552. };
  19553. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19554. #endregion
  19555. }
  19556. #endregion
  19557. }
  19558. return errMsg;
  19559. }
  19560. catch (Exception ex)
  19561. {
  19562. throw ex;
  19563. }
  19564. }
  19565. /// <summary>
  19566. /// 校验条码有效(新建)
  19567. /// </summary>
  19568. /// <param name="oracleTrConn">连接对象</param>
  19569. /// <param name="barcode">条码</param>
  19570. /// <param name="sUserInfo">登录用户信息</param>
  19571. /// <returns>string</returns>
  19572. /// <remarks>
  19573. /// 王鑫 2016.06.27 新建
  19574. /// </remarks>
  19575. private static string CheckBarcodeByNew(IDBTransaction oracleTrConn,
  19576. string barcode,
  19577. SUserInfo sUserInfo
  19578. )
  19579. {
  19580. try
  19581. {
  19582. OracleParameter[] paras = new OracleParameter[]{
  19583. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  19584. };
  19585. // 重复登记的问题 for update
  19586. string sql = @"
  19587. select InScrapFlag,
  19588. KilnCarID,
  19589. KilnCarName,
  19590. IsReworkFlag,
  19591. SemiCheckID from TP_PM_InProduction where barcode=:barcode for update
  19592. ";
  19593. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19594. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19595. {
  19596. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  19597. {
  19598. return "条码[" + barcode + "]已经报损待审批";
  19599. }
  19600. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  19601. {
  19602. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  19603. }
  19604. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  19605. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  19606. {
  19607. return "条码[" + barcode + "]已经半检返工中";
  19608. }
  19609. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  19610. {
  19611. return "条码[" + barcode + "]已经半检返修中";
  19612. }
  19613. }
  19614. else
  19615. {
  19616. return "条码[" + barcode + "]不在在产流程";
  19617. }
  19618. return null;
  19619. }
  19620. catch (Exception ex)
  19621. {
  19622. throw ex;
  19623. }
  19624. }
  19625. /// <summary>
  19626. /// 校验条码有效(编辑返工)
  19627. /// </summary>
  19628. /// <param name="oracleTrConn">连接对象</param>
  19629. /// <param name="barcode">条码</param>
  19630. /// <param name="sUserInfo">登录用户信息</param>
  19631. /// <returns>string</returns>
  19632. /// <remarks>
  19633. /// 王鑫 2016.06.27 新建
  19634. /// </remarks>
  19635. private static string CheckBarcodeByEditRework(IDBTransaction oracleTrConn,
  19636. string barcode,
  19637. SUserInfo sUserInfo
  19638. )
  19639. {
  19640. try
  19641. {
  19642. OracleParameter[] paras = new OracleParameter[]{
  19643. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  19644. };
  19645. // 重复登记的问题 for update
  19646. string sql = @"
  19647. select InScrapFlag,
  19648. KilnCarID,
  19649. KilnCarName,
  19650. IsReworkFlag,
  19651. SemiCheckID from TP_PM_InProduction where barcode=:barcode for update
  19652. ";
  19653. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19654. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19655. {
  19656. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  19657. {
  19658. return "条码[" + barcode + "]已经报损待审批";
  19659. }
  19660. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  19661. {
  19662. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  19663. }
  19664. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  19665. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "1")
  19666. {
  19667. return "条码[" + barcode + "]不在返工中";
  19668. }
  19669. }
  19670. else
  19671. {
  19672. return "条码[" + barcode + "]不在在产流程";
  19673. }
  19674. return null;
  19675. }
  19676. catch (Exception ex)
  19677. {
  19678. throw ex;
  19679. }
  19680. }
  19681. /// <summary>
  19682. /// 校验条码有效(编辑不合格)
  19683. /// </summary>
  19684. /// <param name="oracleTrConn">连接对象</param>
  19685. /// <param name="barcode">条码</param>
  19686. /// <param name="sUserInfo">登录用户信息</param>
  19687. /// <returns>string</returns>
  19688. /// <remarks>
  19689. /// 王鑫 2016.06.27 新建
  19690. /// </remarks>
  19691. private static string CheckBarcodeByEditNoPass(IDBTransaction oracleTrConn,
  19692. string barcode,
  19693. SUserInfo sUserInfo
  19694. )
  19695. {
  19696. try
  19697. {
  19698. OracleParameter[] paras = new OracleParameter[]{
  19699. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  19700. };
  19701. // 重复登记的问题 for update
  19702. string sql = @" select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=13 for update";
  19703. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19704. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  19705. {
  19706. return "条码[" + barcode + "]不在在产回收站中";
  19707. }
  19708. return null;
  19709. }
  19710. catch (Exception ex)
  19711. {
  19712. throw ex;
  19713. }
  19714. }
  19715. /// <summary>
  19716. /// 添加半成品检验数据
  19717. /// </summary>
  19718. /// <param name="oracleTrConn">连接对象</param>
  19719. /// <param name="accountDate">账务日期</param>
  19720. /// <param name="productionData">生产数据</param>
  19721. /// <param name="sUserInfo">用户基本信息</param>
  19722. /// <returns>string</returns>
  19723. /// <remarks>
  19724. /// 陈冰 2014.09.18 新建
  19725. /// </remarks>
  19726. private static string AddSemiCheckData(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  19727. {
  19728. #region SQL
  19729. string sql = "insert into tp_pm_semicheck"
  19730. + " (semicheckid,"
  19731. + " barcode,"
  19732. + " productionlineid,"
  19733. + " procedureid,"
  19734. + " proceduretime,"
  19735. + " proceduremodel,"
  19736. + " modeltype,"
  19737. + " organizationid,"
  19738. + " goodsid,"
  19739. + " goodscode,"
  19740. + " userid,"
  19741. + " usercode,"
  19742. + " productiondataid,"
  19743. + " logoid,"
  19744. + " ispublicbody,"
  19745. + " specialrepairflag,"
  19746. + " goodslevelid,"
  19747. + " goodsleveltypeid,"
  19748. + " groutingdailyid,"
  19749. + " groutingdailydetailid,"
  19750. + " groutinglineid,"
  19751. + " groutinglinecode,"
  19752. + " groutinglinename,"
  19753. + " gmouldtypeid,"
  19754. + " canmanytimes,"
  19755. + " groutinglinedetailid,"
  19756. + " groutingdate,"
  19757. + " groutingmouldcode,"
  19758. + " mouldcode,"
  19759. + " groutinguserid,"
  19760. + " groutingusercode,"
  19761. + " groutingnum,"
  19762. + " semichecktype,"
  19763. + " semicheckuserID,"
  19764. + " semicheckusercode,"
  19765. + " semichecktime,"
  19766. + " remarks,"
  19767. + " accountid,"
  19768. + " createuserid,"
  19769. + " updateuserid,"
  19770. + " reworkprocedureid,"
  19771. + " reworkprocedurecode,"
  19772. + " reworkuserid,"
  19773. + " reworkusercode"
  19774. + ")"
  19775. + " select"
  19776. + " :semicheckid,"
  19777. + " TP_PM_InProduction.barcode,"
  19778. + " TP_PM_InProduction.productionlineid,"
  19779. + " TP_PM_InProduction.procedureid,"
  19780. + " TP_PM_InProduction.proceduretime,"
  19781. + " TP_PM_InProduction.proceduremodel,"
  19782. + " TP_PM_InProduction.modeltype,"
  19783. + " tp_pc_procedure.organizationid,"
  19784. + " TP_PM_InProduction.goodsid,"
  19785. + " TP_PM_InProduction.goodscode,"
  19786. + " TP_PM_InProduction.userid,"
  19787. + " tp_mst_user.usercode,"
  19788. + " TP_PM_InProduction.productiondataid,"
  19789. + " TP_PM_InProduction.logoid,"
  19790. + " TP_PM_InProduction.ispublicbody,"
  19791. + " TP_PM_InProduction.specialrepairflag,"
  19792. + " TP_PM_InProduction.goodslevelid,"
  19793. + " TP_PM_InProduction.goodsleveltypeid,"
  19794. + " TP_PM_InProduction.groutingdailyid,"
  19795. + " TP_PM_InProduction.groutingdailydetailid,"
  19796. + " TP_PM_InProduction.groutinglineid,"
  19797. + " TP_PM_InProduction.groutinglinecode,"
  19798. + " TP_PM_InProduction.groutinglinename,"
  19799. + " TP_PM_InProduction.gmouldtypeid,"
  19800. + " TP_PM_InProduction.canmanytimes,"
  19801. + " TP_PM_InProduction.groutinglinedetailid,"
  19802. + " TP_PM_InProduction.groutingdate,"
  19803. + " TP_PM_InProduction.groutingmouldcode,"
  19804. + " TP_PM_InProduction.mouldcode,"
  19805. + " TP_PM_InProduction.groutinguserid,"
  19806. + " TP_PM_InProduction.groutingusercode,"
  19807. + " TP_PM_InProduction.groutingnum,"
  19808. + " :semichecktype,"
  19809. + " :semicheckuserID,"
  19810. + " :semicheckusercode,"
  19811. + " sysdate,"
  19812. + " :remarks,"
  19813. + " :accountid,"
  19814. + " :createuserid,"
  19815. + " :updateuserid,"
  19816. + " :reworkprocedureid,"
  19817. + " :reworkprocedurecode,"
  19818. + " :reworkuserid,"
  19819. + " :reworkusercode"
  19820. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  19821. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  19822. + " where TP_PM_InProduction.barcode=:barcode";
  19823. #endregion
  19824. #region OracleParameter
  19825. OracleParameter[] paras = new OracleParameter[] {
  19826. new OracleParameter(":semicheckid",entity.SemiCheckID),
  19827. new OracleParameter(":semichecktype",entity.SemiCheckType),
  19828. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  19829. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  19830. new OracleParameter(":remarks",entity.Remarks),
  19831. new OracleParameter(":accountid",sUserInfo.AccountID),
  19832. new OracleParameter(":createuserid",sUserInfo.UserID),
  19833. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19834. new OracleParameter(":barcode",entity.BarCode),
  19835. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  19836. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  19837. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  19838. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  19839. };
  19840. #endregion
  19841. foreach (OracleParameter para in paras)
  19842. {
  19843. if (string.IsNullOrEmpty(para.Value + ""))
  19844. {
  19845. para.Value = DBNull.Value;
  19846. }
  19847. }
  19848. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  19849. // 失败
  19850. if (result != Constant.INT_IS_ONE)
  19851. {
  19852. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19853. }
  19854. // 成功返回null
  19855. return null;
  19856. }
  19857. /// <summary>
  19858. /// 添加半成品检验数据(不合格)
  19859. /// </summary>
  19860. /// <param name="oracleTrConn">连接对象</param>
  19861. /// <param name="accountDate">账务日期</param>
  19862. /// <param name="productionData">生产数据</param>
  19863. /// <param name="sUserInfo">用户基本信息</param>
  19864. /// <returns>string</returns>
  19865. /// <remarks>
  19866. /// 陈冰 2014.09.18 新建
  19867. /// </remarks>
  19868. private static string AddSemiCheckDataNoPass(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  19869. {
  19870. #region SQL
  19871. string sql = "insert into tp_pm_semicheck"
  19872. + " (semicheckid,"
  19873. + " barcode,"
  19874. + " productionlineid,"
  19875. + " procedureid,"
  19876. + " proceduretime,"
  19877. + " proceduremodel,"
  19878. + " modeltype,"
  19879. + " organizationid,"
  19880. + " goodsid,"
  19881. + " goodscode,"
  19882. + " userid,"
  19883. + " usercode,"
  19884. + " productiondataid,"
  19885. + " logoid,"
  19886. + " ispublicbody,"
  19887. + " specialrepairflag,"
  19888. + " goodslevelid,"
  19889. + " goodsleveltypeid,"
  19890. + " groutingdailyid,"
  19891. + " groutingdailydetailid,"
  19892. + " groutinglineid,"
  19893. + " groutinglinecode,"
  19894. + " groutinglinename,"
  19895. + " gmouldtypeid,"
  19896. + " canmanytimes,"
  19897. + " groutinglinedetailid,"
  19898. + " groutingdate,"
  19899. + " groutingmouldcode,"
  19900. + " mouldcode,"
  19901. + " groutinguserid,"
  19902. + " groutingusercode,"
  19903. + " groutingnum,"
  19904. + " semichecktype,"
  19905. + " semicheckuserID,"
  19906. + " semicheckusercode,"
  19907. + " semichecktime,"
  19908. + " remarks,"
  19909. + " accountid,"
  19910. + " createuserid,"
  19911. + " updateuserid,"
  19912. + " reworkprocedureid,"
  19913. + " reworkprocedurecode,"
  19914. + " reworkuserid,"
  19915. + " reworkusercode"
  19916. + ")"
  19917. + " select"
  19918. + " :semicheckid,"
  19919. + " TP_PM_InProduction.barcode,"
  19920. + " TP_PM_InProduction.productionlineid,"
  19921. + " TP_PM_InProduction.procedureid,"
  19922. + " TP_PM_InProduction.proceduretime,"
  19923. + " TP_PM_InProduction.proceduremodel,"
  19924. + " TP_PM_InProduction.modeltype,"
  19925. + " tp_pc_procedure.organizationid,"
  19926. + " TP_PM_InProduction.goodsid,"
  19927. + " TP_PM_InProduction.goodscode,"
  19928. + " TP_PM_InProduction.userid,"
  19929. + " tp_mst_user.usercode,"
  19930. + " TP_PM_InProduction.productiondataid,"
  19931. + " TP_PM_InProduction.logoid,"
  19932. + " TP_PM_InProduction.ispublicbody,"
  19933. + " TP_PM_InProduction.specialrepairflag,"
  19934. + " (select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid),"
  19935. + " 13,"
  19936. + " TP_PM_InProduction.groutingdailyid,"
  19937. + " TP_PM_InProduction.groutingdailydetailid,"
  19938. + " TP_PM_InProduction.groutinglineid,"
  19939. + " TP_PM_InProduction.groutinglinecode,"
  19940. + " TP_PM_InProduction.groutinglinename,"
  19941. + " TP_PM_InProduction.gmouldtypeid,"
  19942. + " TP_PM_InProduction.canmanytimes,"
  19943. + " TP_PM_InProduction.groutinglinedetailid,"
  19944. + " TP_PM_InProduction.groutingdate,"
  19945. + " TP_PM_InProduction.groutingmouldcode,"
  19946. + " TP_PM_InProduction.mouldcode,"
  19947. + " TP_PM_InProduction.groutinguserid,"
  19948. + " TP_PM_InProduction.groutingusercode,"
  19949. + " TP_PM_InProduction.groutingnum,"
  19950. + " :semichecktype,"
  19951. + " :semicheckuserID,"
  19952. + " :semicheckusercode,"
  19953. + " sysdate,"
  19954. + " :remarks,"
  19955. + " :accountid,"
  19956. + " :createuserid,"
  19957. + " :updateuserid,"
  19958. + " :reworkprocedureid,"
  19959. + " :reworkprocedurecode,"
  19960. + " :reworkuserid,"
  19961. + " :reworkusercode"
  19962. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  19963. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  19964. + " where TP_PM_InProduction.barcode=:barcode";
  19965. #endregion
  19966. #region OracleParameter
  19967. OracleParameter[] paras = new OracleParameter[] {
  19968. new OracleParameter(":semicheckid",entity.SemiCheckID),
  19969. new OracleParameter(":semichecktype",entity.SemiCheckType),
  19970. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  19971. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  19972. new OracleParameter(":remarks",entity.Remarks),
  19973. new OracleParameter(":accountid",sUserInfo.AccountID),
  19974. new OracleParameter(":createuserid",sUserInfo.UserID),
  19975. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19976. new OracleParameter(":accountid",sUserInfo.AccountID),
  19977. new OracleParameter(":barcode",entity.BarCode),
  19978. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  19979. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  19980. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  19981. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  19982. };
  19983. #endregion
  19984. foreach (OracleParameter para in paras)
  19985. {
  19986. if (string.IsNullOrEmpty(para.Value + ""))
  19987. {
  19988. para.Value = DBNull.Value;
  19989. }
  19990. }
  19991. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  19992. // 失败
  19993. if (result != Constant.INT_IS_ONE)
  19994. {
  19995. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19996. }
  19997. // 成功返回null
  19998. return null;
  19999. }
  20000. /// <summary>
  20001. /// 添加半成品检验数据
  20002. /// </summary>
  20003. /// <param name="oracleTrConn">连接对象</param>
  20004. /// <param name="accountDate">账务日期</param>
  20005. /// <param name="productionData">生产数据</param>
  20006. /// <param name="sUserInfo">用户基本信息</param>
  20007. /// <returns>string</returns>
  20008. /// <remarks>
  20009. /// 陈冰 2014.09.18 新建
  20010. /// </remarks>
  20011. private static string AddSemiCheckDataTrash(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  20012. {
  20013. #region SQL
  20014. string sql = "insert into tp_pm_semicheck"
  20015. + " (semicheckid,"
  20016. + " barcode,"
  20017. + " productionlineid,"
  20018. + " procedureid,"
  20019. + " proceduretime,"
  20020. + " proceduremodel,"
  20021. + " modeltype,"
  20022. + " organizationid,"
  20023. + " goodsid,"
  20024. + " goodscode,"
  20025. + " userid,"
  20026. + " usercode,"
  20027. + " productiondataid,"
  20028. + " logoid,"
  20029. + " ispublicbody,"
  20030. + " specialrepairflag,"
  20031. + " goodslevelid,"
  20032. + " goodsleveltypeid,"
  20033. + " groutingdailyid,"
  20034. + " groutingdailydetailid,"
  20035. + " groutinglineid,"
  20036. + " groutinglinecode,"
  20037. + " groutinglinename,"
  20038. + " gmouldtypeid,"
  20039. + " canmanytimes,"
  20040. + " groutinglinedetailid,"
  20041. + " groutingdate,"
  20042. + " groutingmouldcode,"
  20043. + " mouldcode,"
  20044. + " groutinguserid,"
  20045. + " groutingusercode,"
  20046. + " groutingnum,"
  20047. + " semichecktype,"
  20048. + " semicheckuserID,"
  20049. + " semicheckusercode,"
  20050. + " semichecktime,"
  20051. + " remarks,"
  20052. + " accountid,"
  20053. + " createuserid,"
  20054. + " updateuserid,"
  20055. + " reworkprocedureid,"
  20056. + " reworkprocedurecode,"
  20057. + " reworkuserid,"
  20058. + " reworkusercode"
  20059. + ")"
  20060. + " select"
  20061. + " :semicheckid,"
  20062. + " trash.barcode,"
  20063. + " trash.productionlineid,"
  20064. + " trash.procedureid,"
  20065. + " trash.proceduretime,"
  20066. + " trash.proceduremodel,"
  20067. + " trash.modeltype,"
  20068. + " tp_pc_procedure.organizationid,"
  20069. + " trash.goodsid,"
  20070. + " trash.goodscode,"
  20071. + " trash.userid,"
  20072. + " tp_mst_user.usercode,"
  20073. + " trash.productiondataid,"
  20074. + " trash.logoid,"
  20075. + " trash.ispublicbody,"
  20076. + " trash.specialrepairflag,"
  20077. + " trash.goodslevelid,"
  20078. + " trash.goodsleveltypeid,"
  20079. + " trash.groutingdailyid,"
  20080. + " trash.groutingdailydetailid,"
  20081. + " trash.groutinglineid,"
  20082. + " trash.groutinglinecode,"
  20083. + " trash.groutinglinename,"
  20084. + " trash.gmouldtypeid,"
  20085. + " trash.canmanytimes,"
  20086. + " trash.groutinglinedetailid,"
  20087. + " trash.groutingdate,"
  20088. + " trash.groutingmouldcode,"
  20089. + " trash.mouldcode,"
  20090. + " trash.groutinguserid,"
  20091. + " trash.groutingusercode,"
  20092. + " trash.groutingnum,"
  20093. + " :semichecktype,"
  20094. + " :semicheckuserID,"
  20095. + " :semicheckusercode,"
  20096. + " sysdate,"
  20097. + " :remarks,"
  20098. + " :accountid,"
  20099. + " :createuserid,"
  20100. + " :updateuserid,"
  20101. + " :reworkprocedureid,"
  20102. + " :reworkprocedurecode,"
  20103. + " :reworkuserid,"
  20104. + " :reworkusercode"
  20105. + " from TP_PM_InProductionTrash trash left join tp_mst_user on trash.UserID=tp_mst_user.userid "
  20106. + " left join tp_pc_procedure on trash.ProcedureID=tp_pc_procedure.ProcedureID "
  20107. + " where trash.barcode=:barcode";
  20108. #endregion
  20109. #region OracleParameter
  20110. OracleParameter[] paras = new OracleParameter[] {
  20111. new OracleParameter(":semicheckid",entity.SemiCheckID),
  20112. new OracleParameter(":semichecktype",entity.SemiCheckType),
  20113. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  20114. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  20115. new OracleParameter(":remarks",entity.Remarks),
  20116. new OracleParameter(":accountid",sUserInfo.AccountID),
  20117. new OracleParameter(":createuserid",sUserInfo.UserID),
  20118. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20119. new OracleParameter(":barcode",entity.BarCode),
  20120. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  20121. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  20122. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  20123. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  20124. };
  20125. #endregion
  20126. foreach (OracleParameter para in paras)
  20127. {
  20128. if (string.IsNullOrEmpty(para.Value + ""))
  20129. {
  20130. para.Value = DBNull.Value;
  20131. }
  20132. }
  20133. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  20134. // 失败
  20135. if (result != Constant.INT_IS_ONE)
  20136. {
  20137. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20138. }
  20139. // 成功返回null
  20140. return null;
  20141. }
  20142. /// <summary>
  20143. /// 添加半成品检验数据
  20144. /// </summary>
  20145. /// <param name="oracleTrConn">连接对象</param>
  20146. /// <param name="accountDate">账务日期</param>
  20147. /// <param name="productionData">生产数据</param>
  20148. /// <param name="sUserInfo">用户基本信息</param>
  20149. /// <returns>string</returns>
  20150. /// <remarks>
  20151. /// 陈冰 2014.09.18 新建
  20152. /// </remarks>
  20153. private static string SetSemiCheckDataValueFlag(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  20154. {
  20155. #region SQL
  20156. string sql = @"update TP_PM_SemiCheck
  20157. set BackOutUserID=:BackOutUserID,
  20158. BackOutUserCode=:BackOutUserCode,
  20159. BackOutFlag=1,
  20160. BackOutTime=sysdate,
  20161. ValueFlag='0',
  20162. updateuserid=:updateuserid
  20163. where semicheckid=:semicheckid";
  20164. #region OracleParameter
  20165. OracleParameter[] paras = new OracleParameter[] {
  20166. new OracleParameter(":semicheckid",entity.SemiCheckID),
  20167. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20168. new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  20169. new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  20170. };
  20171. #endregion
  20172. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  20173. string sql2 = @"update TP_PM_SemiCheckDefect
  20174. set
  20175. ValueFlag='0',
  20176. updateuserid=:updateuserid
  20177. where semicheckid=:semicheckid";
  20178. string sql3 = @"update TP_PM_SCDefectResponsible
  20179. set
  20180. ValueFlag='0',
  20181. updateuserid=:updateuserid
  20182. where semicheckid=:semicheckid";
  20183. #endregion
  20184. #region OracleParameter
  20185. paras = new OracleParameter[] {
  20186. new OracleParameter(":semicheckid",entity.SemiCheckID),
  20187. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20188. };
  20189. #endregion
  20190. foreach (OracleParameter para in paras)
  20191. {
  20192. if (string.IsNullOrEmpty(para.Value + ""))
  20193. {
  20194. para.Value = DBNull.Value;
  20195. }
  20196. }
  20197. result += oracleTrConn.ExecuteNonQuery(sql2, paras);
  20198. result += oracleTrConn.ExecuteNonQuery(sql3, paras);
  20199. // 失败
  20200. if (result == Constant.INT_IS_ZERO)
  20201. {
  20202. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20203. }
  20204. // 成功返回null
  20205. return null;
  20206. }
  20207. /// <summary>
  20208. /// 保存半检缺陷
  20209. /// </summary>
  20210. /// <param name="oracleTrConn">连接对象</param>
  20211. /// <param name="productionDefect">缺陷数据</param>
  20212. /// <param name="sUserInfo">用户基本信息</param>
  20213. /// <returns>string</returns>
  20214. private static string AddSemiCheckDefect(IDBTransaction oracleTrConn, SemiCheckDefectEntity semiCheckDefect, SUserInfo sUserInfo)
  20215. {
  20216. // 查询新插入的半检缺陷ID
  20217. string sql = "select SEQ_PM_SemiCheckDefect_ID.nextval from dual";
  20218. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  20219. int semiCheckDefectID = 0;
  20220. if (!string.IsNullOrEmpty(idStr))
  20221. {
  20222. semiCheckDefectID = int.Parse(idStr);
  20223. }
  20224. else
  20225. {
  20226. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20227. }
  20228. #region SQL
  20229. sql = "insert into TP_PM_SemiCheckDefect"
  20230. + " (semicheckdefectid,"
  20231. + " semicheckid,"
  20232. + " defectid,"
  20233. + " defectcode,"
  20234. + " defectname,"
  20235. + " defectpositionid,"
  20236. + " defectpositioncode,"
  20237. + " defectpositionname,"
  20238. + " scrapResponFlag,"
  20239. + " defectproductiondataid,"
  20240. + " defectprocedureid,"
  20241. + " defectuserid,"
  20242. + " defectusercode,"
  20243. + " remarks,"
  20244. + " accountid,"
  20245. + " createuserid,"
  20246. + " updateuserid)"
  20247. + " values"
  20248. + " ("
  20249. + " :semicheckdefectid,"
  20250. + " :semicheckid,"
  20251. + " :defectid,"
  20252. + " :defectcode,"
  20253. + " :defectname,"
  20254. + " :defectpositionid,"
  20255. + " :defectpositioncode,"
  20256. + " :defectpositionname,"
  20257. + " :scrapResponFlag,"
  20258. + " :defectproductiondataid,"
  20259. + " :defectprocedureid,"
  20260. + " :defectuserid,"
  20261. + " :defectusercode,"
  20262. + " :remarks,"
  20263. + " :accountid,"
  20264. + " :createuserid,"
  20265. + " :updateuserid)";
  20266. #endregion
  20267. #region 参数
  20268. OracleParameter[] oracleParameters = new OracleParameter[] {
  20269. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  20270. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  20271. new OracleParameter(":defectid",semiCheckDefect.DefectID),
  20272. new OracleParameter(":defectcode",semiCheckDefect.DefectCode),
  20273. new OracleParameter(":defectname",semiCheckDefect.DefectName),
  20274. new OracleParameter(":defectpositionid",semiCheckDefect.DefectPositionID),
  20275. new OracleParameter(":defectpositioncode",semiCheckDefect.DefectPositionCode),
  20276. new OracleParameter(":defectpositionname",semiCheckDefect.DefectPositionName),
  20277. new OracleParameter(":scrapResponFlag",semiCheckDefect.ScrapResponFlag),
  20278. new OracleParameter(":defectproductiondataid",semiCheckDefect.DefectProductionDataID),
  20279. new OracleParameter(":defectprocedureid",semiCheckDefect.DefectProcedureID),
  20280. new OracleParameter(":defectuserid",semiCheckDefect.DefectUserID),
  20281. new OracleParameter(":defectusercode",semiCheckDefect.DefectUserCode),
  20282. new OracleParameter(":remarks",semiCheckDefect.Remarks),
  20283. new OracleParameter(":accountid",sUserInfo.AccountID),
  20284. new OracleParameter(":createuserid",sUserInfo.UserID),
  20285. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20286. };
  20287. #endregion
  20288. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20289. // 保存失败
  20290. if (result != Constant.INT_IS_ONE)
  20291. {
  20292. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20293. }
  20294. #region 插入生产缺陷责任者
  20295. if (semiCheckDefect.DefectResponsibles != null)
  20296. {
  20297. foreach (SemiCheckResponsibleEntity DefectResponsible in semiCheckDefect.DefectResponsibles)
  20298. {
  20299. #region SQL
  20300. sql = "insert into TP_PM_SCDefectResponsible"
  20301. + " (semicheckdefectid,"
  20302. + " staffid,"
  20303. + " semicheckid,"
  20304. + " userid,"
  20305. + " usercode,"
  20306. + " Ujobsid,"
  20307. + " SJobsID,"
  20308. + " staffstatus,"
  20309. + " accountid,"
  20310. + " createuserid,"
  20311. + " updateuserid)"
  20312. + " values"
  20313. + " (:semicheckdefectid,"
  20314. + " :staffid,"
  20315. + " :semicheckid,"
  20316. + " :userid,"
  20317. + " :usercode,"
  20318. + " :ujobsid,"
  20319. + " :sjobsid,"
  20320. + " :staffstatus,"
  20321. + " :accountid,"
  20322. + " :createuserid,"
  20323. + " :updateuserid)";
  20324. #endregion
  20325. #region 参数
  20326. oracleParameters = new OracleParameter[] {
  20327. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  20328. new OracleParameter(":staffid",DefectResponsible.StaffID),
  20329. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  20330. new OracleParameter(":userid",DefectResponsible.UserID),
  20331. new OracleParameter(":usercode",DefectResponsible.UserCode),
  20332. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  20333. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  20334. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  20335. new OracleParameter(":accountid",sUserInfo.AccountID),
  20336. new OracleParameter(":createuserid",sUserInfo.UserID),
  20337. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20338. };
  20339. #endregion
  20340. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20341. // 保存失败
  20342. if (result != Constant.INT_IS_ONE)
  20343. {
  20344. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20345. }
  20346. }
  20347. }
  20348. #endregion
  20349. return null;
  20350. }
  20351. /// <summary>
  20352. /// 添加责任工序
  20353. /// </summary>
  20354. /// <param name="oracleTrConn">连接对象</param>
  20355. /// <param name="responProce">责任工序</param>
  20356. /// <param name="productionDefect">缺陷数据</param>
  20357. /// <param name="sUserInfo">用户基本信息</param>
  20358. /// <returns>string</returns>
  20359. private static string AddSemiCheckResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, SemiCheckDefectEntity productionDefect, SUserInfo sUserInfo)
  20360. {
  20361. OracleParameter[] oracleParameters = null;
  20362. string sql = null;
  20363. int result = 0;
  20364. // 查询新插入ID
  20365. if (responProce.ProcedureID != null)
  20366. {
  20367. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  20368. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  20369. if (!string.IsNullOrEmpty(idStr))
  20370. {
  20371. responProce.ResponProcedureID = int.Parse(idStr);
  20372. }
  20373. else
  20374. {
  20375. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20376. }
  20377. #region SQL
  20378. sql = "insert into tp_pm_responprocedure"
  20379. + " (ResponProcedureID,"
  20380. + " scrapproductid,"
  20381. + " barcode,"
  20382. + " productiondataid,"
  20383. + " productionlineid,"
  20384. + " productionlinecode,"
  20385. + " productionlinename,"
  20386. + " procedureid,"
  20387. + " procedurecode,"
  20388. + " procedurename,"
  20389. + " userid,"
  20390. + " usercode,"
  20391. + " username,"
  20392. + " remarks,"
  20393. + " accountid,"
  20394. + " createuserid,"
  20395. + " updateuserid)"
  20396. + " values"
  20397. + " ("
  20398. + " :ResponProcedureID,"
  20399. + " :scrapproductid,"
  20400. + " :barcode,"
  20401. + " :productiondataid,"
  20402. + " :productionlineid,"
  20403. + " :productionlinecode,"
  20404. + " :productionlinename,"
  20405. + " :procedureid,"
  20406. + " :procedurecode,"
  20407. + " :procedurename,"
  20408. + " :userid,"
  20409. + " :usercode,"
  20410. + " :username,"
  20411. + " :remarks,"
  20412. + " :accountid,"
  20413. + " :createuserid,"
  20414. + " :updateuserid)";
  20415. #endregion
  20416. #region 参数
  20417. oracleParameters = new OracleParameter[] {
  20418. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  20419. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  20420. new OracleParameter(":barcode",responProce.BarCode),
  20421. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  20422. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  20423. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  20424. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  20425. new OracleParameter(":procedureid",responProce.ProcedureID),
  20426. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  20427. new OracleParameter(":procedurename",responProce.ProcedureName),
  20428. new OracleParameter(":userid",responProce.UserID),
  20429. new OracleParameter(":usercode",responProce.UserCode),
  20430. new OracleParameter(":username",responProce.UserName),
  20431. new OracleParameter(":remarks",responProce.Remarks),
  20432. new OracleParameter(":accountid",sUserInfo.AccountID),
  20433. new OracleParameter(":createuserid",sUserInfo.UserID),
  20434. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20435. };
  20436. #endregion
  20437. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20438. // 保存失败
  20439. if (result != Constant.INT_IS_ONE)
  20440. {
  20441. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20442. }
  20443. //// 查询新插入ID
  20444. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  20445. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  20446. //if (!string.IsNullOrEmpty(idStr))
  20447. //{
  20448. // responProce.ResponProcedureID = int.Parse(idStr);
  20449. //}
  20450. //else
  20451. //{
  20452. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20453. //}
  20454. }
  20455. #region 插入责任人
  20456. foreach (SemiCheckResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  20457. {
  20458. #region SQL
  20459. sql = "insert into tp_pm_scrapresponsible"
  20460. + " (barcode,"
  20461. + " scrapproductid,"
  20462. + " staffid,"
  20463. + " userid,"
  20464. + " usercode,"
  20465. + " ujobsid,"
  20466. + " sjobsid,"
  20467. + " staffstatus,"
  20468. + " accountid,"
  20469. + " createuserid,"
  20470. + " updateuserid,"
  20471. + " responprocedureid,"
  20472. + " respontype)"
  20473. + " values"
  20474. + " (:barcode,"
  20475. + " :scrapproductid,"
  20476. + " :staffid,"
  20477. + " :userid,"
  20478. + " :usercode,"
  20479. + " :ujobsid,"
  20480. + " :sjobsid,"
  20481. + " :staffstatus,"
  20482. + " :accountid,"
  20483. + " :createuserid,"
  20484. + " :updateuserid,"
  20485. + " :responprocedureid,"
  20486. + " :respontype)";
  20487. #endregion
  20488. #region 参数
  20489. oracleParameters = new OracleParameter[] {
  20490. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  20491. new OracleParameter(":barcode",responProce.BarCode),
  20492. new OracleParameter(":staffid",defectResponsible.StaffID),
  20493. new OracleParameter(":userid",defectResponsible.UserID),
  20494. new OracleParameter(":usercode",defectResponsible.UserCode),
  20495. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  20496. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  20497. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  20498. new OracleParameter(":accountid",sUserInfo.AccountID),
  20499. new OracleParameter(":createuserid",sUserInfo.UserID),
  20500. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20501. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  20502. new OracleParameter(":respontype", (responProce.ResponProcedureID == null? (int)Constant.ScrapResponType.Person:(int)Constant.ScrapResponType.Procedure)),
  20503. };
  20504. #endregion
  20505. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20506. // 保存失败
  20507. if (result != Constant.INT_IS_ONE)
  20508. {
  20509. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20510. }
  20511. }
  20512. #endregion
  20513. return null;
  20514. }
  20515. #region 复检
  20516. /// <summary>
  20517. /// 复检数据
  20518. /// </summary>
  20519. /// <param name="oracleTrConn">数据连接对象</param>
  20520. /// <param name="entity">半检实体类</param>
  20521. /// <param name="sUserInfo">用户基本信息</param>
  20522. /// <returns>string</returns>
  20523. /// <remarks>
  20524. /// 王鑫 2016.06.28 新建
  20525. /// </remarks>
  20526. private static string AddReSemiCheck(IDBTransaction oracleTrConn,
  20527. SemiCheckEntity entity,
  20528. SUserInfo sUserInfo)
  20529. {
  20530. try
  20531. {
  20532. // 获得账务日期
  20533. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  20534. string errMsg = string.Empty;
  20535. #region 校验条码有效性
  20536. errMsg = CheckBarcodeByEditRework(oracleTrConn, entity.BarCode, sUserInfo);
  20537. if (!string.IsNullOrEmpty(errMsg))
  20538. {
  20539. return errMsg;
  20540. }
  20541. #endregion
  20542. //------------------------------
  20543. #region 条码是不合格 删除在产产品数据
  20544. if (entity.ReSemiCheckType == "2") //编辑时不合格
  20545. {
  20546. #region 修改半检登记的复检状态=2不合格(返)、复检工号=当前工号、复检时间=sysdate。
  20547. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='2' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  20548. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  20549. OracleParameter[] oracleParameters = new OracleParameter[] {
  20550. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  20551. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  20552. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  20553. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20554. };
  20555. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  20556. // 保存失败
  20557. if (result != Constant.INT_IS_ONE)
  20558. {
  20559. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20560. }
  20561. #endregion
  20562. #region 条码有缺陷
  20563. #region 是次品 添加废弃产品
  20564. string ResponProcedureidStr = "";
  20565. if (entity.ReSemiCheckType == "2") //新建时不合格,直接报损
  20566. {
  20567. #region 添加废弃产品
  20568. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  20569. #region 属性赋值
  20570. scrapProduct.BarCode = entity.BarCode;
  20571. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  20572. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  20573. scrapProduct.ScrapDate = accountDate;
  20574. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASSREWORK;
  20575. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  20576. scrapProduct.Auditor = sUserInfo.UserID;
  20577. scrapProduct.AuditlDate = accountDate;
  20578. scrapProduct.AccountDate = accountDate;
  20579. sqlUpdate = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=" + sUserInfo.AccountID;
  20580. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate);
  20581. if (ds != null && ds.Tables[0].Rows.Count > 0)
  20582. {
  20583. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  20584. }
  20585. scrapProduct.GoodsLevelTypeID = 14;
  20586. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  20587. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  20588. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  20589. // 查询新插入的废弃ID
  20590. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  20591. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  20592. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  20593. scrapProduct.ScrapType = 3;
  20594. #endregion
  20595. // 保存报废
  20596. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  20597. // 保存失败
  20598. if (!string.IsNullOrEmpty(errMsg))
  20599. {
  20600. return errMsg;
  20601. }
  20602. #endregion
  20603. }
  20604. #endregion
  20605. // 存在缺陷 插入缺陷表
  20606. if (entity.SemiCheckDefects != null)
  20607. {
  20608. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  20609. {
  20610. #region 保存缺陷
  20611. //semiCheckDefect.SemiCheckID = Convert.ToInt32(semiCheckDefect.SemiCheckID);
  20612. //semiCheckDefect.ScrapResponFlag
  20613. // = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  20614. //// 保存缺陷
  20615. //errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  20616. //if (!string.IsNullOrEmpty(errMsg))
  20617. //{
  20618. // return errMsg;
  20619. //}
  20620. #endregion
  20621. #region 是不合格 添加废弃责任工序
  20622. if (entity.ReSemiCheckType == "2")
  20623. {
  20624. //if (semiCheckDefect.DefectProcedureID != null)
  20625. {
  20626. #region 添加责任工序
  20627. ResponProcedureEntity responProce = new ResponProcedureEntity();
  20628. #region 属性赋值
  20629. responProce.BarCode = entity.BarCode;
  20630. // 新建-不合格 获取生产线及生产数据ID
  20631. sqlUpdate = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  20632. oracleParameters = new OracleParameter[] {
  20633. new OracleParameter(":barcode",entity.BarCode),
  20634. };
  20635. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate, oracleParameters);
  20636. if (ds != null && ds.Tables[0].Rows.Count > 0)
  20637. {
  20638. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  20639. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  20640. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  20641. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  20642. }
  20643. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  20644. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  20645. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  20646. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  20647. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  20648. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  20649. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  20650. responProce.UserID = semiCheckDefect.DefectUserID;
  20651. responProce.UserCode = semiCheckDefect.DefectUserCode;
  20652. responProce.UserName = semiCheckDefect.DefectUserName;
  20653. responProce.Remarks = semiCheckDefect.Remarks;
  20654. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  20655. #endregion
  20656. // 保存责任工序
  20657. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  20658. // 保存失败
  20659. if (!string.IsNullOrEmpty(errMsg))
  20660. {
  20661. return errMsg;
  20662. }
  20663. #endregion
  20664. }
  20665. }
  20666. #endregion
  20667. }
  20668. }
  20669. #endregion
  20670. // 1.在产表产品设置产品等级【14不合格返】。
  20671. string sql = @"update TP_PM_InProduction set GoodsLevelID=
  20672. (
  20673. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  20674. ),GoodsLevelTypeID=14,updateuserid=:updateuserid
  20675. where barcode=:barcode";
  20676. oracleParameters = new OracleParameter[] {
  20677. new OracleParameter(":accountid", sUserInfo.AccountID),
  20678. // new OracleParameter(":updateuserid",scrapProduct.GoodsLevelTypeID),
  20679. new OracleParameter(":barcode",entity.BarCode),
  20680. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20681. };
  20682. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20683. // 注浆明细 产品等级
  20684. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=14,updateuserid=:updateuserid
  20685. where barcode=:barcode";
  20686. oracleParameters = new OracleParameter[] {
  20687. new OracleParameter(":accountid", sUserInfo.AccountID),
  20688. new OracleParameter(":barcode",entity.BarCode),
  20689. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20690. };
  20691. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20692. // 2.将在产数据保存到在产回收站表中(产品等级【14不合格返】)。
  20693. string sqlInsert = @"insert into TP_PM_InProductionTrash
  20694. (
  20695. BarCode,
  20696. ProductionLineID,
  20697. ProductionLineCode,
  20698. ProductionLineName,
  20699. ProcedureModel,
  20700. ModelType,
  20701. DefectFlag,
  20702. ReworkProcedureID,
  20703. IsPublicBody,
  20704. IsReFire,
  20705. GoodsLevelID,
  20706. GoodsLevelTypeID,
  20707. GoodsID,
  20708. GoodsCode,
  20709. GoodsName,
  20710. UserID,
  20711. GroutingDailyID,
  20712. GroutingDailyDetailID,
  20713. GroutingDate,
  20714. GroutingLineID,
  20715. GroutingLineCode,
  20716. GroutingLineName,
  20717. GMouldTypeID,
  20718. CanManyTimes,
  20719. GroutingLineDetailID,
  20720. GroutingMouldCode,
  20721. MouldCode,
  20722. GroutingUserID,
  20723. GroutingUserCode,
  20724. GroutingNum,
  20725. Remarks,
  20726. KilnID,
  20727. KilnCode,
  20728. KilnName,
  20729. KilnCarID,
  20730. KilnCarCode,
  20731. KilnCarName,
  20732. KilnCarBatchNo,
  20733. KilnCarPosition,
  20734. AccountID,
  20735. ValueFlag,
  20736. CreateUserID,
  20737. UpdateUserID,
  20738. SpecialRepairflag,
  20739. FlowProcedureID,
  20740. FlowProcedureTime,
  20741. ProcedureID,
  20742. ProcedureTime,
  20743. ProductionDataID,
  20744. logoid,ISREWORKFLAG,
  20745. SemiCheckID
  20746. )
  20747. select
  20748. BarCode,
  20749. ProductionLineID,
  20750. ProductionLineCode,
  20751. ProductionLineName,
  20752. ProcedureModel,
  20753. ModelType,
  20754. DefectFlag,
  20755. ReworkProcedureID,
  20756. IsPublicBody,
  20757. IsReFire,
  20758. --GoodsLevelID,
  20759. --GoodsLevelTypeID,
  20760. (
  20761. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  20762. ),14,
  20763. GoodsID,
  20764. GoodsCode,
  20765. GoodsName,
  20766. UserID,
  20767. GroutingDailyID,
  20768. GroutingDailyDetailID,
  20769. GroutingDate,
  20770. GroutingLineID,
  20771. GroutingLineCode,
  20772. GroutingLineName,
  20773. GMouldTypeID,
  20774. CanManyTimes,
  20775. GroutingLineDetailID,
  20776. GroutingMouldCode,
  20777. MouldCode,
  20778. GroutingUserID,
  20779. GroutingUserCode,
  20780. GroutingNum,
  20781. Remarks,
  20782. KilnID,
  20783. KilnCode,
  20784. KilnName,
  20785. KilnCarID,
  20786. KilnCarCode,
  20787. KilnCarName,
  20788. KilnCarBatchNo,
  20789. KilnCarPosition,
  20790. AccountID,
  20791. ValueFlag,
  20792. :CreateUserID,
  20793. :UpdateUserID,
  20794. SpecialRepairflag,
  20795. FlowProcedureID,
  20796. FlowProcedureTime,
  20797. FlowProcedureID,
  20798. ProcedureTime,
  20799. ProductionDataID,
  20800. logoid,ISREWORKFLAG,
  20801. SemiCheckID
  20802. from TP_PM_InProduction
  20803. where barcode=:barcode
  20804. ";
  20805. oracleParameters = new OracleParameter[] {
  20806. new OracleParameter(":barcode",entity.BarCode),
  20807. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  20808. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  20809. new OracleParameter(":accountid", sUserInfo.AccountID),
  20810. };
  20811. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  20812. // 删除在产数据
  20813. sql = "delete tp_pm_inproduction where barcode = :barcode";
  20814. oracleParameters = new OracleParameter[] {
  20815. new OracleParameter(":barcode",entity.BarCode),
  20816. };
  20817. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20818. }
  20819. else if (entity.ReSemiCheckType == "1") //正常
  20820. {
  20821. #region 修改半检登记的复检状态=1合格(返)、复检工号=当前工号、复检时间=sysdate。
  20822. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='1' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  20823. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  20824. OracleParameter[] oracleParameters = new OracleParameter[] {
  20825. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  20826. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  20827. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  20828. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20829. };
  20830. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  20831. // 保存失败
  20832. if (result != Constant.INT_IS_ONE)
  20833. {
  20834. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20835. }
  20836. #endregion
  20837. #region 3.修改在产产品数据,在产表产品设置非返工状态(IsReworkFlag = '0'),半检登记ID=null(半检登记ID不变)。
  20838. string sql = "update tp_pm_inproduction set GoodsLevelTypeID=1, IsReworkFlag='0',UpdateUserID=:UpdateUserID where barcode = :barcode";
  20839. oracleParameters = new OracleParameter[] {
  20840. new OracleParameter(":barcode",entity.BarCode),
  20841. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  20842. };
  20843. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20844. // 注浆明细 产品等级
  20845. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=1,updateuserid=:updateuserid
  20846. where barcode=:barcode";
  20847. oracleParameters = new OracleParameter[] {
  20848. new OracleParameter(":accountid", sUserInfo.AccountID),
  20849. new OracleParameter(":barcode",entity.BarCode),
  20850. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20851. };
  20852. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20853. #endregion
  20854. }
  20855. #endregion
  20856. //------------------------------
  20857. return errMsg;
  20858. }
  20859. catch (Exception ex)
  20860. {
  20861. throw ex;
  20862. }
  20863. }
  20864. #endregion
  20865. #region 撤销复检
  20866. /// <summary>
  20867. /// 撤销复检数据
  20868. /// </summary>
  20869. /// <param name="oracleTrConn">数据连接对象</param>
  20870. /// <param name="entity">半检实体类</param>
  20871. /// <param name="sUserInfo">用户基本信息</param>
  20872. /// <returns>string</returns>
  20873. /// <remarks>
  20874. /// 王鑫 2016.06.28 新建
  20875. /// </remarks>
  20876. private static string AddCancelSemiCheck(IDBTransaction oracleTrConn,
  20877. SemiCheckEntity entity,
  20878. SUserInfo sUserInfo)
  20879. {
  20880. try
  20881. {
  20882. // 获得账务日期
  20883. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  20884. string errMsg = string.Empty;
  20885. string sql = null;
  20886. #region 校验条码有效性
  20887. if (entity.ReSemiCheckType == "1") //撤销合格
  20888. {
  20889. errMsg = CheckBarcodeByCancelReSemiCheckPass(oracleTrConn, entity.BarCode, sUserInfo);
  20890. }
  20891. else if (entity.ReSemiCheckType == "2") //撤销不合格
  20892. {
  20893. errMsg = CheckBarcodeByCancelReSemiCheckNoPass(oracleTrConn, entity.BarCode, sUserInfo);
  20894. }
  20895. if (!string.IsNullOrEmpty(errMsg))
  20896. {
  20897. return errMsg;
  20898. }
  20899. #endregion
  20900. if (entity.ReSemiCheckType == "1") //撤销合格
  20901. {
  20902. #region 在产表产品设置返工状态(IsReworkFlag = '1')。
  20903. sql = "update tp_pm_inproduction set GoodsLevelTypeID=2, IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  20904. OracleParameter[] oracleParameters = new OracleParameter[] {
  20905. new OracleParameter(":barcode",entity.BarCode),
  20906. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  20907. };
  20908. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20909. // 注浆明细 产品等级
  20910. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  20911. where barcode=:barcode";
  20912. oracleParameters = new OracleParameter[] {
  20913. new OracleParameter(":accountid", sUserInfo.AccountID),
  20914. new OracleParameter(":barcode",entity.BarCode),
  20915. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20916. };
  20917. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  20918. #endregion
  20919. #region .半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  20920. // 复检撤销不需要记录撤销标识 - chenxy
  20921. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  20922. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  20923. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  20924. where SemiCheckID=:SemiCheckID";
  20925. oracleParameters = new OracleParameter[] {
  20926. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  20927. new OracleParameter(":updateuserid",sUserInfo.UserID),
  20928. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  20929. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  20930. };
  20931. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  20932. // 保存失败
  20933. if (result != Constant.INT_IS_ONE)
  20934. {
  20935. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20936. }
  20937. #endregion
  20938. }
  20939. else if (entity.ReSemiCheckType == "2") //撤销不合格
  20940. {
  20941. #region 从在产回收站中把数据恢复到在产表中。
  20942. string sqlInsert = @"insert into TP_PM_InProduction
  20943. (
  20944. BarCode,
  20945. ProductionLineID,
  20946. ProductionLineCode,
  20947. ProductionLineName,
  20948. ProcedureModel,
  20949. ModelType,
  20950. DefectFlag,
  20951. ReworkProcedureID,
  20952. IsPublicBody,
  20953. IsReFire,
  20954. GoodsLevelID,
  20955. GoodsLevelTypeID,
  20956. GoodsID,
  20957. GoodsCode,
  20958. GoodsName,
  20959. UserID,
  20960. GroutingDailyID,
  20961. GroutingDailyDetailID,
  20962. GroutingDate,
  20963. GroutingLineID,
  20964. GroutingLineCode,
  20965. GroutingLineName,
  20966. GMouldTypeID,
  20967. CanManyTimes,
  20968. GroutingLineDetailID,
  20969. GroutingMouldCode,
  20970. MouldCode,
  20971. GroutingUserID,
  20972. GroutingUserCode,
  20973. GroutingNum,
  20974. Remarks,
  20975. KilnID,
  20976. KilnCode,
  20977. KilnName,
  20978. KilnCarID,
  20979. KilnCarCode,
  20980. KilnCarName,
  20981. KilnCarBatchNo,
  20982. KilnCarPosition,
  20983. AccountID,
  20984. ValueFlag,
  20985. CreateUserID,
  20986. UpdateUserID,
  20987. SpecialRepairflag,
  20988. FlowProcedureID,
  20989. FlowProcedureTime,
  20990. ProcedureID,
  20991. ProcedureTime,
  20992. ProductionDataID,
  20993. logoid,ISREWORKFLAG,
  20994. SemiCheckID
  20995. )
  20996. select
  20997. BarCode,
  20998. ProductionLineID,
  20999. ProductionLineCode,
  21000. ProductionLineName,
  21001. ProcedureModel,
  21002. ModelType,
  21003. DefectFlag,
  21004. ReworkProcedureID,
  21005. IsPublicBody,
  21006. IsReFire,
  21007. GoodsLevelID,
  21008. GoodsLevelTypeID,
  21009. GoodsID,
  21010. GoodsCode,
  21011. GoodsName,
  21012. UserID,
  21013. GroutingDailyID,
  21014. GroutingDailyDetailID,
  21015. GroutingDate,
  21016. GroutingLineID,
  21017. GroutingLineCode,
  21018. GroutingLineName,
  21019. GMouldTypeID,
  21020. CanManyTimes,
  21021. GroutingLineDetailID,
  21022. GroutingMouldCode,
  21023. MouldCode,
  21024. GroutingUserID,
  21025. GroutingUserCode,
  21026. GroutingNum,
  21027. Remarks,
  21028. KilnID,
  21029. KilnCode,
  21030. KilnName,
  21031. KilnCarID,
  21032. KilnCarCode,
  21033. KilnCarName,
  21034. KilnCarBatchNo,
  21035. KilnCarPosition,
  21036. AccountID,
  21037. ValueFlag,
  21038. :CreateUserID,
  21039. :UpdateUserID,
  21040. SpecialRepairflag,
  21041. FlowProcedureID,
  21042. FlowProcedureTime,
  21043. FlowProcedureID,
  21044. ProcedureTime,
  21045. ProductionDataID,
  21046. logoid,ISREWORKFLAG,
  21047. SemiCheckID
  21048. from TP_PM_InProductionTrash
  21049. where barcode=:barcode
  21050. ";
  21051. OracleParameter[] oracleParameters = new OracleParameter[] {
  21052. new OracleParameter(":barcode",entity.BarCode),
  21053. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  21054. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  21055. };
  21056. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  21057. #endregion
  21058. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  21059. OracleParameter[] spParameters = null;
  21060. int spResult = 0;
  21061. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  21062. " from TP_PM_ScrapProduct sp\n" +
  21063. " where sp.barcode = :barcode\n" +
  21064. " and sp.auditstatus = 1\n" +
  21065. " and sp.valueflag = '1'\n" +
  21066. " and sp.scraptype = '3'";
  21067. spParameters = new OracleParameter[] {
  21068. new OracleParameter(":barcode",entity.BarCode),
  21069. };
  21070. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  21071. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  21072. spParameters = new OracleParameter[] {
  21073. new OracleParameter(":updateuserid",sUserInfo.UserID),
  21074. new OracleParameter(":scrapproductid",scrapproductid),
  21075. };
  21076. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  21077. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  21078. //oracleParameters = new OracleParameter[] {
  21079. // new OracleParameter(":barcode",entity.BarCode),
  21080. //};
  21081. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  21082. //string sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  21083. //oracleParameters = new OracleParameter[] {
  21084. // new OracleParameter(":barcode",entity.BarCode),
  21085. // };
  21086. //result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  21087. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  21088. //oracleParameters = new OracleParameter[] {
  21089. // new OracleParameter(":barcode",entity.BarCode),
  21090. // };
  21091. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  21092. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  21093. ////oracleParameters = new OracleParameter[] {
  21094. //// new OracleParameter(":barcode",entity.BarCode),
  21095. //// };
  21096. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  21097. #endregion
  21098. #region 删除在产回收站数据
  21099. sql = "delete TP_PM_InProductionTrash where barcode = :barcode";
  21100. oracleParameters = new OracleParameter[] {
  21101. new OracleParameter(":barcode",entity.BarCode),
  21102. };
  21103. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  21104. #endregion
  21105. #region .在产表产品设置返工状态(IsReworkFlag = '1')。
  21106. sql = "update tp_pm_inproduction set GoodsLevelTypeID=2,IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  21107. oracleParameters = new OracleParameter[] {
  21108. new OracleParameter(":barcode",entity.BarCode),
  21109. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  21110. };
  21111. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  21112. // 注浆明细 产品等级
  21113. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  21114. where barcode=:barcode";
  21115. oracleParameters = new OracleParameter[] {
  21116. new OracleParameter(":accountid", sUserInfo.AccountID),
  21117. new OracleParameter(":barcode",entity.BarCode),
  21118. new OracleParameter(":updateuserid",sUserInfo.UserID),
  21119. };
  21120. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  21121. #endregion
  21122. #region 6.半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  21123. // 复检撤销不需要记录撤销标识 - chenxy
  21124. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  21125. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  21126. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  21127. where SemiCheckID=:SemiCheckID";
  21128. oracleParameters = new OracleParameter[] {
  21129. //new OracleParameter(":ReSemiCheckUserID",entity.ReSemiCheckUserID),
  21130. //new OracleParameter(":ReSemiCheckUserCode",entity.ReSemiCheckUserCode),
  21131. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  21132. new OracleParameter(":updateuserid",sUserInfo.UserID),
  21133. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  21134. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  21135. };
  21136. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  21137. // 保存失败
  21138. if (result != Constant.INT_IS_ONE)
  21139. {
  21140. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  21141. }
  21142. #endregion
  21143. }
  21144. return errMsg;
  21145. }
  21146. catch (Exception ex)
  21147. {
  21148. throw ex;
  21149. }
  21150. }
  21151. #endregion
  21152. /// <summary>
  21153. /// 校验条码有效(撤销复检-不合格)
  21154. /// </summary>
  21155. /// <param name="oracleTrConn">连接对象</param>
  21156. /// <param name="barcode">条码</param>
  21157. /// <param name="sUserInfo">登录用户信息</param>
  21158. /// <returns>string</returns>
  21159. /// <remarks>
  21160. /// 王鑫 2016.06.28 新建
  21161. /// </remarks>
  21162. private static string CheckBarcodeByCancelReSemiCheckNoPass(IDBTransaction oracleTrConn,
  21163. string barcode,
  21164. SUserInfo sUserInfo
  21165. )
  21166. {
  21167. try
  21168. {
  21169. OracleParameter[] paras = new OracleParameter[]{
  21170. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  21171. };
  21172. string sql = @"
  21173. select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=14 and SemiCheckID is not null
  21174. ";
  21175. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  21176. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  21177. {
  21178. return "条码[" + barcode + "]不在在产回收站中";
  21179. }
  21180. return null;
  21181. }
  21182. catch (Exception ex)
  21183. {
  21184. throw ex;
  21185. }
  21186. }
  21187. /// <summary>
  21188. /// 校验条码有效(撤销复检-合格)
  21189. /// </summary>
  21190. /// <param name="oracleTrConn">连接对象</param>
  21191. /// <param name="barcode">条码</param>
  21192. /// <param name="sUserInfo">登录用户信息</param>
  21193. /// <returns>string</returns>
  21194. /// <remarks>
  21195. /// 王鑫 2016.06.28 新建
  21196. /// </remarks>
  21197. private static string CheckBarcodeByCancelReSemiCheckPass(IDBTransaction oracleTrConn,
  21198. string barcode,
  21199. SUserInfo sUserInfo
  21200. )
  21201. {
  21202. try
  21203. {
  21204. OracleParameter[] paras = new OracleParameter[]{
  21205. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  21206. };
  21207. string sql = @"
  21208. select InScrapFlag,
  21209. KilnCarID,
  21210. KilnCarName,
  21211. IsReworkFlag,
  21212. SemiCheckID from TP_PM_InProduction where barcode=:barcode
  21213. ";
  21214. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  21215. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  21216. {
  21217. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  21218. {
  21219. return "条码[" + barcode + "]已经报损待审批";
  21220. }
  21221. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  21222. {
  21223. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  21224. }
  21225. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  21226. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  21227. {
  21228. return "条码[" + barcode + "]是半检返工状态";
  21229. }
  21230. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  21231. {
  21232. return "条码[" + barcode + "]是半检返修状态";
  21233. }
  21234. if (string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["SemiCheckID"].ToString()))
  21235. {
  21236. return "条码[" + barcode + "]已经做过其他操作,不能撤销";
  21237. }
  21238. }
  21239. else
  21240. {
  21241. return "条码[" + barcode + "]不在在产流程";
  21242. }
  21243. return null;
  21244. }
  21245. catch (Exception ex)
  21246. {
  21247. throw ex;
  21248. }
  21249. }
  21250. #region 生产订单 wangx 2017-2-7
  21251. /// <summary>
  21252. /// 保存订单
  21253. /// </summary>
  21254. /// <param name="order"></param>
  21255. /// <param name="sUserInfo"></param>
  21256. /// <returns></returns>
  21257. public static ServiceResultEntity SaveOrder(OrderEntity order, SUserInfo sUserInfo)
  21258. {
  21259. ServiceResultEntity entity = new ServiceResultEntity();
  21260. int returnRows = 0;
  21261. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  21262. try
  21263. {
  21264. string sql = string.Empty;
  21265. OracleParameter[] Paras = null;
  21266. DataSet ds = null;
  21267. #region 查询订单号是否有重复
  21268. sql = "select OrderID from TP_PM_Order where OrderNo=:OrderNo and AccountID=:AccountID";
  21269. Paras = new OracleParameter[] {
  21270. new OracleParameter(":OrderNo",OracleDbType.Varchar2,
  21271. order.OrderNo,ParameterDirection.Input),
  21272. new OracleParameter(":AccountID",OracleDbType.Int32,
  21273. sUserInfo.AccountID,ParameterDirection.Input)
  21274. };
  21275. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  21276. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21277. {
  21278. if (order.OrderID == 0 || (order.OrderID != Convert.ToInt32(ds.Tables[0].Rows[0]["OrderID"])))
  21279. {
  21280. //重复订单号
  21281. returnRows = -1;
  21282. oracleTrConn.Rollback();
  21283. oracleTrConn.Disconnect();
  21284. entity.Result = returnRows;
  21285. entity.Message = "系统存在相同的生产订单号!";
  21286. return entity;
  21287. }
  21288. }
  21289. #endregion
  21290. #region 添加、编辑生产订单
  21291. if (order.OrderID == 0)
  21292. {
  21293. string sqlText = "SELECT SEQ_PM_Order_OrderID.NEXTVAL FROM dual";
  21294. int newOrderID = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  21295. sql = @"Insert into TP_PM_Order
  21296. (
  21297. OrderID,
  21298. OrderNo,
  21299. OrderDate,
  21300. Remarks,
  21301. AccountID,
  21302. ValueFlag,
  21303. DisplayNo,
  21304. CreateTime,
  21305. CreateUserID,
  21306. UpdateTime,
  21307. UpdateUserID
  21308. )
  21309. Values
  21310. (
  21311. :OrderID,
  21312. :OrderNo,
  21313. :OrderDate,
  21314. :Remarks,
  21315. :AccountID,
  21316. :ValueFlag,
  21317. :DisplayNo,
  21318. sysdate,
  21319. :CreateUserID,
  21320. sysdate,
  21321. :UpdateUserID
  21322. )";
  21323. Paras = new OracleParameter[] {
  21324. new OracleParameter(":OrderID",OracleDbType.Int32,newOrderID,ParameterDirection.Input),
  21325. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  21326. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  21327. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  21328. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  21329. new OracleParameter(":DisplayNo",OracleDbType.Int32,order.DisplayNo,ParameterDirection.Input),
  21330. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  21331. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  21332. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  21333. };
  21334. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  21335. order.OrderID = newOrderID;
  21336. }
  21337. else
  21338. {
  21339. sql = @"Update TP_PM_Order
  21340. set
  21341. OrderNo=:OrderNo,
  21342. OrderDate=:OrderDate,
  21343. Remarks=:Remarks,
  21344. ValueFlag=:ValueFlag,
  21345. DisplayNo=:DisplayNo,
  21346. UpdateUserID=:UpdateUserID
  21347. where OrderID=:OrderID
  21348. ";
  21349. Paras = new OracleParameter[] {
  21350. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  21351. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  21352. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  21353. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  21354. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  21355. new OracleParameter(":DisplayNo",OracleDbType.Int32,order.DisplayNo,ParameterDirection.Input),
  21356. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  21357. };
  21358. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  21359. }
  21360. #endregion
  21361. #region 保存订单明细
  21362. if (order.OrderDetail != null)
  21363. {
  21364. // 删除明细
  21365. sql = "DELETE FROM tp_pm_orderdetail od WHERE od.orderid = :orderid";
  21366. Paras = new OracleParameter[] { new OracleParameter(":orderid", order.OrderID) };
  21367. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  21368. // 新建明细
  21369. sql = "INSERT INTO tp_pm_orderdetail\n" +
  21370. " (orderid\n" +
  21371. " ,materialcode\n" +
  21372. " ,accountid\n" +
  21373. " ,createuserid)\n" +
  21374. "VALUES\n" +
  21375. " (:orderid\n" +
  21376. " ,:materialcode\n" +
  21377. " ,:accountid\n" +
  21378. " ,:createuserid)";
  21379. foreach (DataRow row in order.OrderDetail.Rows)
  21380. {
  21381. Paras = new OracleParameter[]
  21382. {
  21383. new OracleParameter(":orderid", order.OrderID),
  21384. new OracleParameter(":materialcode", (row["materialcode"]+"").ToUpper().Trim()),
  21385. new OracleParameter(":createuserid",sUserInfo.UserID),
  21386. new OracleParameter(":accountid",sUserInfo.AccountID)
  21387. };
  21388. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  21389. }
  21390. }
  21391. #endregion
  21392. if (returnRows <= 0)
  21393. {
  21394. oracleTrConn.Rollback();
  21395. oracleTrConn.Disconnect();
  21396. }
  21397. else
  21398. {
  21399. oracleTrConn.Commit();
  21400. oracleTrConn.Disconnect();
  21401. }
  21402. }
  21403. catch (Exception ex)
  21404. {
  21405. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  21406. {
  21407. oracleTrConn.Rollback();
  21408. oracleTrConn.Disconnect();
  21409. }
  21410. throw ex;
  21411. }
  21412. finally
  21413. {
  21414. if (oracleTrConn.ConnState == ConnectionState.Open)
  21415. {
  21416. oracleTrConn.Disconnect();
  21417. }
  21418. }
  21419. entity.Result = returnRows;
  21420. return entity;
  21421. }
  21422. /// <summary>
  21423. /// 启用、停用订单标识
  21424. /// </summary>
  21425. /// <param name="order"></param>
  21426. /// <param name="sUserInfo"></param>
  21427. /// <returns></returns>
  21428. public static ServiceResultEntity ChangeOrderFlag(OrderEntity order, SUserInfo sUserInfo)
  21429. {
  21430. ServiceResultEntity entity = new ServiceResultEntity();
  21431. int returnRows = 0;
  21432. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  21433. try
  21434. {
  21435. string sql = string.Empty;
  21436. OracleParameter[] Paras = null;
  21437. #region 添加、编辑生产订单
  21438. sql = @"Update TP_PM_Order
  21439. set
  21440. ValueFlag=:ValueFlag,
  21441. UpdateUserID=:UpdateUserID
  21442. where OrderID=:OrderID
  21443. ";
  21444. Paras = new OracleParameter[] {
  21445. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  21446. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  21447. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  21448. };
  21449. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  21450. #endregion
  21451. if (returnRows <= 0)
  21452. {
  21453. oracleTrConn.Rollback();
  21454. oracleTrConn.Disconnect();
  21455. }
  21456. else
  21457. {
  21458. oracleTrConn.Commit();
  21459. oracleTrConn.Disconnect();
  21460. }
  21461. }
  21462. catch (Exception ex)
  21463. {
  21464. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  21465. {
  21466. oracleTrConn.Rollback();
  21467. oracleTrConn.Disconnect();
  21468. }
  21469. throw ex;
  21470. }
  21471. entity.Result = returnRows;
  21472. return entity;
  21473. }
  21474. #endregion
  21475. #region 保存交接
  21476. /// <summary>
  21477. /// 保存交接校验
  21478. /// </summary>
  21479. /// <param name="orderid"></param>
  21480. /// <param name="dtData"></param>
  21481. /// <param name="sUserInfo"></param>
  21482. /// <returns></returns>
  21483. public static ServiceResultEntity SaveFinishedHandover(int orderid, DataTable dtData, SUserInfo sUserInfo, string sapName = "")
  21484. {
  21485. ServiceResultEntity sre = new ServiceResultEntity();
  21486. string logid_bg = "0";
  21487. OracleParameter[] Paras = null;
  21488. // 条码串
  21489. string fifter = " AND (bar.barcode = '";
  21490. foreach (DataRow row in dtData.Rows)
  21491. {
  21492. fifter += row["barcode"] + "' OR bar.barcode = '";
  21493. }
  21494. fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  21495. IDBTransaction oracleTrConn2 = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  21496. try
  21497. {
  21498. #region 判断订单是否有明细
  21499. DataTable dtMaterialcode = null;
  21500. string sql =
  21501. "SELECT COUNT(1) AS detailcount\n" +
  21502. " FROM tp_pm_orderdetail od\n" +
  21503. " WHERE od.orderid = :orderid and od.valueflag = '1'";
  21504. Paras = new OracleParameter[]
  21505. {
  21506. new OracleParameter(":orderid", orderid)
  21507. };
  21508. bool isExistsDetail = true;
  21509. object detailcount = oracleTrConn2.GetSqlResultToObj(sql, Paras);
  21510. if (detailcount == null || detailcount == DBNull.Value || Convert.ToInt32(detailcount) == 0)
  21511. {
  21512. isExistsDetail = false;
  21513. }
  21514. #endregion
  21515. for (int i = 0; i < dtData.Rows.Count; i++)
  21516. {
  21517. if (isExistsDetail)
  21518. {
  21519. #region 校验产品是否在订单里
  21520. sql = "SELECT gdd.materialcode\n" +
  21521. " ,(select od.materialcode from tp_pm_orderdetail od where od.orderid = :orderid AND od.valueflag = '1' and gdd.materialcode = od.materialcode) " +
  21522. " AS ordermaterialcode\n" +
  21523. " FROM tp_pm_groutingdailydetail gdd\n" +
  21524. " WHERE gdd.barcode = :barcode";
  21525. Paras = new OracleParameter[]
  21526. {
  21527. new OracleParameter(":orderid", orderid),
  21528. new OracleParameter(":barcode", dtData.Rows[i]["barcode"].ToString())
  21529. };
  21530. dtMaterialcode = oracleTrConn2.GetSqlResultToDt(sql, Paras);
  21531. if (dtMaterialcode == null || dtMaterialcode.Rows.Count == 0)
  21532. {
  21533. sre.Result = -2;
  21534. sre.Message = $"当前产品条码{dtData.Rows[i]["barcode"]}不存在";
  21535. return sre;
  21536. }
  21537. if (string.IsNullOrWhiteSpace(dtMaterialcode.Rows[0]["materialcode"] + ""))
  21538. {
  21539. sre.Result = -2;
  21540. sre.Message = $"当前产品条码{dtData.Rows[i]["barcode"]}没有物料编码,不能上传数据";
  21541. return sre;
  21542. }
  21543. if (string.IsNullOrWhiteSpace(dtMaterialcode.Rows[0]["ordermaterialcode"] + ""))
  21544. {
  21545. sre.Result = -2;
  21546. sre.Message = "此订单不包含【" + dtMaterialcode.Rows[0]["materialcode"] + "】物料,不能上传数据";
  21547. return sre;
  21548. }
  21549. #endregion
  21550. }
  21551. #region 产品是否在产成表中
  21552. sql = "select FHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode";
  21553. Paras = new OracleParameter[]{
  21554. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  21555. };
  21556. DataSet ds = oracleTrConn2.GetSqlResultToDs(sql, Paras);
  21557. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21558. {
  21559. #region 是否交接过
  21560. string fhUserCode = ds.Tables[0].Rows[0]["FHUserCode"].ToString();
  21561. if (!string.IsNullOrEmpty(fhUserCode))
  21562. {
  21563. sre.Result = -2; //已交接,不能再次进行交接
  21564. sre.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】已交接,不能再次进行交接";
  21565. return sre;
  21566. }
  21567. #endregion
  21568. }
  21569. else
  21570. {
  21571. #region 不是产成品
  21572. sre.Result = -1; //不是产成品
  21573. sre.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】不是产成品";
  21574. return sre;
  21575. #endregion
  21576. }
  21577. #endregion
  21578. }
  21579. sql = @"
  21580. SELECT COUNT(DISTINCT FINISHEDLOADBATCHNO) CC
  21581. FROM TP_PM_FINISHEDPRODUCT BAR
  21582. WHERE 1 = 1 " + fifter;
  21583. string cc = oracleTrConn2.GetSqlResultToStr(sql);
  21584. if (!"1".Equals(cc))
  21585. {
  21586. sre.Result = -2;
  21587. sre.Message = "不允许多板一起交接";
  21588. return sre;
  21589. }
  21590. sql = @"
  21591. SELECT DISTINCT BGLOGID
  21592. FROM TP_PM_FINISHEDPRODUCT BAR
  21593. WHERE 1 = 1 " + fifter;
  21594. string currentBGlogid = oracleTrConn2.GetSqlResultToStr(sql);
  21595. if (string.IsNullOrEmpty(currentBGlogid))
  21596. {
  21597. logid_bg = oracleTrConn2.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  21598. sql = @"
  21599. UPDATE TP_PM_FINISHEDPRODUCT BAR
  21600. SET BAR.BGLOGIDCX = NULL
  21601. ,BAR.BGLOGID = " + logid_bg + @"
  21602. WHERE 1 = 1 " + fifter;
  21603. int r2 = oracleTrConn2.ExecuteNonQuery(sql);
  21604. }
  21605. else
  21606. {
  21607. logid_bg = currentBGlogid;
  21608. }
  21609. oracleTrConn2.Commit();
  21610. oracleTrConn2.Disconnect();
  21611. }
  21612. catch (Exception ex)
  21613. {
  21614. throw ex;
  21615. }
  21616. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  21617. try
  21618. {
  21619. #region 产成品交接
  21620. if (dtData == null || dtData.Rows.Count == 0)
  21621. {
  21622. sre.Result = -2;
  21623. sre.Message = "条码信息不能为空";
  21624. return sre;
  21625. }
  21626. string sql = string.Empty;
  21627. DataSet ds = null;
  21628. oracleTrConn.Connect();
  21629. // 包装装板,产成品交接不限制
  21630. //string GoodsModel = string.Empty;
  21631. //int? logoID = null;
  21632. //string logoName = string.Empty;
  21633. //int PlateLimitNum = 0;
  21634. //string _isEnable_S_PM_011 = "0";
  21635. //// 2.产成品交接是否限制同型号
  21636. //string _isEnable_S_PM_012 = "0";
  21637. //// 3.产成品交接是否限制每板装板数量(必须先启用限制同型号);
  21638. //string _isEnable_S_PM_013 = "0";
  21639. //// 读取系统设置
  21640. //sql = "select settingcode,settingvalue from tp_mst_systemsetting where settingcode in ('S_PM_011','S_PM_012','S_PM_013') and accountid=" + sUserInfo.AccountID;
  21641. //ds = oracleTrConn.GetSqlResultToDs(sql);
  21642. //foreach (DataRow dr in ds.Tables[0].Rows)
  21643. //{
  21644. // if (dr["settingcode"] == "S_PM_011")
  21645. // _isEnable_S_PM_011 = dr["settingcode"].ToString();
  21646. // else if (dr["settingcode"] == "S_PM_012")
  21647. // _isEnable_S_PM_012 = dr["settingcode"].ToString();
  21648. // else if (dr["settingcode"] == "S_PM_013")
  21649. // _isEnable_S_PM_013 = dr["settingcode"].ToString();
  21650. //}
  21651. // 本批交接的批次号
  21652. #region 判断订单是否有明细
  21653. string fhBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  21654. DataTable dtMaterialcode = null;
  21655. sql = "SELECT COUNT(1) AS detailcount\n" +
  21656. " FROM tp_pm_orderdetail od\n" +
  21657. " WHERE od.orderid = :orderid and od.valueflag = '1'";
  21658. Paras = new OracleParameter[]
  21659. {
  21660. new OracleParameter(":orderid", orderid)
  21661. };
  21662. bool isExistsDetail = true;
  21663. object detailcount = oracleTrConn.GetSqlResultToObj(sql, Paras);
  21664. if (detailcount == null || detailcount == DBNull.Value || Convert.ToInt32(detailcount) == 0)
  21665. {
  21666. isExistsDetail = false;
  21667. }
  21668. #endregion
  21669. for (int i = 0; i < dtData.Rows.Count; i++)
  21670. {
  21671. if (isExistsDetail)
  21672. {
  21673. #region 校验产品是否在订单里
  21674. //sql = "SELECT gdd.materialcode\n" +
  21675. //" ,od.materialcode AS ordermaterialcode\n" +
  21676. //" FROM tp_pm_groutingdailydetail gdd\n" +
  21677. //" LEFT JOIN tp_pm_orderdetail od\n" +
  21678. //" ON gdd.materialcode = od.materialcode\n" +
  21679. //" AND od.orderid = :orderid\n" +
  21680. //" AND od.valueflag = '1'\n" +
  21681. //" WHERE gdd.barcode = :barcode";
  21682. sql = "SELECT gdd.materialcode\n" +
  21683. " ,(select od.materialcode from tp_pm_orderdetail od where od.orderid = :orderid AND od.valueflag = '1' and gdd.materialcode = od.materialcode) " +
  21684. " AS ordermaterialcode\n" +
  21685. " FROM tp_pm_groutingdailydetail gdd\n" +
  21686. " WHERE gdd.barcode = :barcode";
  21687. Paras = new OracleParameter[]
  21688. {
  21689. new OracleParameter(":orderid", orderid),
  21690. new OracleParameter(":barcode", dtData.Rows[i]["barcode"].ToString())
  21691. };
  21692. dtMaterialcode = oracleTrConn.GetSqlResultToDt(sql, Paras);
  21693. if (dtMaterialcode == null || dtMaterialcode.Rows.Count == 0)
  21694. {
  21695. sre.Result = -2;
  21696. sre.Message = $"当前产品条码{dtData.Rows[i]["barcode"]}不存在";
  21697. return sre;
  21698. }
  21699. if (string.IsNullOrWhiteSpace(dtMaterialcode.Rows[0]["materialcode"] + ""))
  21700. {
  21701. sre.Result = -2;
  21702. sre.Message = $"当前产品条码{dtData.Rows[i]["barcode"]}没有物料编码,不能上传数据";
  21703. return sre;
  21704. }
  21705. if (string.IsNullOrWhiteSpace(dtMaterialcode.Rows[0]["ordermaterialcode"] + ""))
  21706. {
  21707. sre.Result = -2;
  21708. sre.Message = "此订单不包含【" + dtMaterialcode.Rows[0]["materialcode"] + "】物料,不能上传数据";
  21709. return sre;
  21710. }
  21711. #endregion
  21712. }
  21713. #region 产品是否在产成表中
  21714. sql = "select FHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode";
  21715. Paras = new OracleParameter[]{
  21716. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  21717. };
  21718. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  21719. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21720. {
  21721. #region 是否交接过
  21722. string fhUserCode = ds.Tables[0].Rows[0]["FHUserCode"].ToString();
  21723. if (!string.IsNullOrEmpty(fhUserCode))
  21724. {
  21725. sre.Result = -2; //已交接,不能再次进行交接
  21726. sre.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】已交接,不能再次进行交接";
  21727. return sre;
  21728. }
  21729. #endregion
  21730. }
  21731. else
  21732. {
  21733. #region 不是产成品
  21734. sre.Result = -1; //不是产成品
  21735. sre.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】不是产成品";
  21736. return sre;
  21737. #endregion
  21738. }
  21739. #endregion
  21740. /* 包装装板,产成品交接不限制
  21741. if (i == 0)
  21742. {
  21743. #region 记录产品型号,最大限制数量,商标
  21744. GoodsModel = dtData.Rows[i]["GoodsModel"].ToString();
  21745. logoID = Convert.ToInt32(dtData.Rows[i]["logoID"]);
  21746. logoName = dtData.Rows[i]["logoName"].ToString();
  21747. sql = "select PlateLimitNum from TP_MST_Goods where GoodsID=:GoodsID";
  21748. Paras = new OracleParameter[]{
  21749. new OracleParameter(":GoodsID",OracleDbType.Int32, ds.Tables[0].Rows[0]["GoodsID"],ParameterDirection.Input),
  21750. };
  21751. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  21752. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21753. {
  21754. if (_isEnable_S_PM_013 == "1" && _isEnable_S_PM_012 == "1")
  21755. {
  21756. PlateLimitNum = Convert.ToInt32(ds.Tables[0].Rows[0]["PlateLimitNum"]);
  21757. }
  21758. }
  21759. #endregion
  21760. }
  21761. else
  21762. {
  21763. #region 启用限制同商标
  21764. if (_isEnable_S_PM_011 == "1")
  21765. {
  21766. if (Convert.ToInt32(dtData.Rows[0]["logoid"]) != logoID)
  21767. {
  21768. sre.Result = -3;
  21769. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的商标【"
  21770. + dtData.Rows[0]["logoname"] + "】与此批次商标【" + logoName + "】不同,不能进行该操作。 ";
  21771. isError = true;
  21772. break;
  21773. }
  21774. }
  21775. #endregion
  21776. #region 启用限制同型号
  21777. if (_isEnable_S_PM_012 == "1")
  21778. {
  21779. if (dtData.Rows[0]["GoodsModel"].ToString() != GoodsModel)
  21780. {
  21781. sre.Result = -4;
  21782. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的型号【"
  21783. + dtData.Rows[0]["GoodsModel"] + "】与此批次型号【" + GoodsModel + "】不同,不能进行该操作。 ";
  21784. isError = true;
  21785. break;
  21786. }
  21787. }
  21788. #endregion
  21789. #region 产品列表是否大于限制条数
  21790. if (PlateLimitNum > 0)
  21791. {
  21792. if (dtData.Rows.Count > PlateLimitNum)
  21793. {
  21794. sre.Result = -5;
  21795. sre.Message = "产品列表数量大于每板装板数量【" + PlateLimitNum + "】";
  21796. isError = true;
  21797. break;
  21798. }
  21799. }
  21800. #endregion
  21801. }
  21802. */
  21803. #region 更新产成品相关信息
  21804. sql = @"update TP_PM_FinishedProduct
  21805. set FHUserID=:FHUserID,
  21806. FHUserCode=:FHUserCode,
  21807. FHBatchNo=:FHBatchNo,
  21808. FHTime=sysdate,
  21809. FHOrderID=:FHOrderID,
  21810. UpdateUserID=:UpdateUserID
  21811. where Barcode=:Barcode";
  21812. Paras = new OracleParameter[]{
  21813. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  21814. new OracleParameter(":FHUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  21815. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  21816. new OracleParameter(":FHUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  21817. new OracleParameter(":FHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
  21818. new OracleParameter(":FHOrderID",OracleDbType.Int32, orderid,ParameterDirection.Input),
  21819. };
  21820. oracleTrConn.ExecuteNonQuery(sql, Paras);
  21821. #endregion
  21822. }
  21823. #endregion
  21824. #region 同步SAP
  21825. #region 同步日志
  21826. object isExists;
  21827. string sqlString = string.Empty;
  21828. OracleParameter[] oracleParameter = null;
  21829. int r = 0;
  21830. // 条码串
  21831. //string fifter = " AND (bar.barcode = '";
  21832. //foreach (DataRow row in dtData.Rows)
  21833. //{
  21834. // fifter += row["barcode"] + "' OR bar.barcode = '";
  21835. //}
  21836. //fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  21837. //sqlString = "SELECT 1\n" +
  21838. //" FROM tp_pm_groutingdailydetail bar\n" +
  21839. //" WHERE bar.issync = '1'\n" + fifter;
  21840. //object isExists = oracleTrConn.GetSqlResultToObj(sqlString, oracleParameter);
  21841. //if (isExists != null)
  21842. //{
  21843. // sre.Result = -2;
  21844. // sre.Message = "当前产品已经同步过,不能重复同步。";
  21845. // return sre;
  21846. //}
  21847. DateTime date = DateTime.Now;
  21848. string yyyymmdd = date.ToString("yyyyMMdd");
  21849. sqlString = "select workcode from tp_mst_account where rownum = 1";
  21850. string workcode = oracleTrConn.GetSqlResultToStr(sqlString);
  21851. //DateTime datebegin = date.Date;
  21852. //DateTime dateend = date.Date.AddDays(1);
  21853. //sqlString =
  21854. //"SELECT :yyyymmdd AS yyyymmdd\n" +
  21855. //" ,SYSDATE AS createtime\n" +
  21856. //" ,tt.goodscode\n" +
  21857. //" ,tt.sapcode\n" +
  21858. //" ,tt.usercode\n" +
  21859. //" ,tt.ordercode\n" +
  21860. //" ,tt.orderitem\n" +
  21861. //" ,tt.zscs\n" +
  21862. //" ,to_char(tt.outputnum) AS outputnum\n" +
  21863. //" ,to_char(tt.recoverynum) AS recoverynum\n" +
  21864. //" FROM (SELECT t.goodscode\n" +
  21865. //" ,t.sapcode\n" +
  21866. //" ,t.usercode\n" +
  21867. //" ,t.ordercode\n" +
  21868. //" ,t.orderitem\n" +
  21869. //" ,t.zscs\n" +
  21870. //" ,SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  21871. //" ,SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  21872. //" FROM (SELECT gh.goodscode\n" +
  21873. //" ,gh.sapcode\n" +
  21874. //" ,u.usercode\n" +
  21875. //" ,o.orderno\n" +
  21876. //" ,bar.recyclingflag\n" +
  21877. //" ,gh.datatype\n" +
  21878. //" ,'' zscs\n" +
  21879. ////" ,g.goods_line_code zscs\n" +
  21880. //" ,CASE\n" +
  21881. //" WHEN o.orderid IS NULL\n" +
  21882. //" OR o.orderno LIKE 'HEGII%' THEN\n" +
  21883. //" ' '\n" +
  21884. //" WHEN instr(o.orderno, '/') = 0 THEN\n" +
  21885. //" to_char(o.orderno)\n" +
  21886. //" ELSE\n" +
  21887. //" to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  21888. //" END ordercode -- 销售凭证\n" +
  21889. //" ,CASE\n" +
  21890. //" WHEN o.orderid IS NULL\n" +
  21891. //" OR o.orderno LIKE 'HEGII%'\n" +
  21892. //" OR instr(o.orderno, '/') = 0 THEN\n" +
  21893. //" '0'\n" +
  21894. //" WHEN instr(o.orderno, '#') = 0 THEN\n" +
  21895. //" to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  21896. //" ELSE\n" +
  21897. //" to_char(substr(o.orderno\n" +
  21898. //" ,instr(o.orderno, '/') + 1\n" +
  21899. //" ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  21900. //" END orderitem -- 销售凭证项目\n" +
  21901. //" FROM (SELECT gch.goodscode\n" +
  21902. //" ,gch.sapcode\n" +
  21903. //" ,decode(gch.datatype, 53, 51, gch.datatype) datatype\n" +
  21904. //" ,gch.userid\n" +
  21905. //" ,gch.groutingdailydetailid\n" +
  21906. //" ,gch.otherid\n" +
  21907. //" FROM tp_pm_goodschangehistory gch\n" +
  21908. //" WHERE gch.datatype IN (51, 52, 53)\n" +
  21909. //" UNION ALL\n" +
  21910. //" SELECT gch.goodscode\n" +
  21911. //" ,gch.sapcode\n" +
  21912. //" ,52 datatype\n" +
  21913. //" ,gch.userid\n" +
  21914. //" ,gch.groutingdailydetailid\n" +
  21915. //" ,gch.goodsidafter\n" +
  21916. //" FROM tp_pm_goodschangehistory gch\n" +
  21917. //" WHERE gch.datatype = 53) gh\n" +
  21918. //" INNER JOIN tp_mst_user u\n" +
  21919. //" ON u.userid = gh.userid\n" +
  21920. //" INNER JOIN tp_pm_groutingdailydetail bar\n" +
  21921. //" ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" + fifter +
  21922. ////" AND bar.barcode IN (" + fifter + ")\n" +
  21923. //" INNER JOIN tp_mst_goods g\n" +
  21924. //" ON g.goodsid = bar.goodsid\n" +
  21925. //" LEFT JOIN tp_pm_order o\n" +
  21926. //" ON o.orderid = gh.otherid) t\n" +
  21927. //" GROUP BY t.goodscode\n" +
  21928. //" ,t.sapcode\n" +
  21929. //" ,t.usercode\n" +
  21930. //" ,t.ordercode\n" +
  21931. //" ,t.orderitem,t.zscs) tt\n" +
  21932. //" WHERE tt.outputnum <> 0\n" +
  21933. //" OR tt.recoverynum <> 0\n" +
  21934. //" ORDER BY tt.goodscode\n" +
  21935. //" ,tt.sapcode\n" +
  21936. //" ,tt.usercode\n" +
  21937. //" ,tt.ordercode\n" +
  21938. //" ,tt.orderitem,tt.zscs";
  21939. sqlString =
  21940. "SELECT :yyyymmdd AS yyyymmdd\n" +
  21941. " ,SYSDATE AS createtime\n" +
  21942. " ,tt.goodscode\n" +
  21943. " ,tt.sapcode\n" +
  21944. " ,tt.usercode\n" +
  21945. " ,tt.ordercode\n" +
  21946. " ,tt.orderitem\n" +
  21947. " ,tt.testmouldflag\n" +
  21948. " ,tt.zscs\n" +
  21949. " ,to_char(tt.outputnum) AS outputnum\n" +
  21950. " ,to_char(tt.recoverynum) AS recoverynum\n" +
  21951. " FROM (SELECT t.goodscode\n" +
  21952. " ,t.sapcode\n" +
  21953. " ,t.usercode\n" +
  21954. " ,t.ordercode\n" +
  21955. " ,t.orderitem\n" +
  21956. " ,t.testmouldflag\n" +
  21957. " ,t.zscs\n" +
  21958. //" ,SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  21959. //" ,SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  21960. " ,SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum\n" +
  21961. " ,SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum\n" +
  21962. " FROM (SELECT bar.goodscode\n" +
  21963. //" ,gh.sapcode\n" +
  21964. //" ,u.usercode\n" +
  21965. " ,bar.materialcode sapcode\n" +
  21966. " ,gh.fhusercode usercode\n" +
  21967. " ,o.orderno\n" +
  21968. " ,bar.recyclingflag\n" +
  21969. //" ,gh.datatype\n" +
  21970. //" ,'' zscs\n" +
  21971. //" ,case when g.goods_line_type = 1 or gl.highpressureflag = '1' then 'G' else 'L' end zscs\n" +
  21972. " ,bar.testmouldflag" +
  21973. " ,decode(bar.testmouldflag,'0', '', decode(g.goods_line_code,'G','A','M','A','L','B','')) as zscs\n" +
  21974. " ,CASE\n" +
  21975. " WHEN o.orderid IS NULL\n" +
  21976. " OR o.orderno LIKE 'HEGII%' THEN\n" +
  21977. " ' '\n" +
  21978. " WHEN instr(o.orderno, '/') = 0 THEN\n" +
  21979. " to_char(o.orderno)\n" +
  21980. " ELSE\n" +
  21981. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  21982. " END ordercode -- 销售凭证\n" +
  21983. " ,CASE\n" +
  21984. " WHEN o.orderid IS NULL\n" +
  21985. " OR o.orderno LIKE 'HEGII%'\n" +
  21986. " OR instr(o.orderno, '/') = 0 THEN\n" +
  21987. " '0'\n" +
  21988. " WHEN instr(o.orderno, '#') = 0 THEN\n" +
  21989. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  21990. " ELSE\n" +
  21991. " to_char(substr(o.orderno\n" +
  21992. " ,instr(o.orderno, '/') + 1\n" +
  21993. " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  21994. " END orderitem -- 销售凭证项目\n" +
  21995. " FROM tp_pm_groutingdailydetail bar\n" +
  21996. //" INNER JOIN tp_mst_user u\n" +
  21997. //" ON u.userid = gh.userid\n" +
  21998. " INNER JOIN tp_pm_finishedproduct gh\n" +
  21999. " ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" +
  22000. //" AND bar.barcode IN (" + fifter + ")\n" +
  22001. //" INNER JOIN tp_pc_groutingline gl\n" +
  22002. //" ON gl.groutinglineid = bar.groutinglineid\n" +
  22003. " INNER JOIN tp_mst_goods g\n" +
  22004. " ON g.goodsid = bar.goodsid\n" +
  22005. " LEFT JOIN tp_pm_order o\n" +
  22006. " ON o.orderid = gh.fhorderid where 1=1 " + fifter + ") t\n" +
  22007. " GROUP BY t.goodscode\n" +
  22008. " ,t.sapcode\n" +
  22009. " ,t.usercode\n" +
  22010. " ,t.ordercode\n" +
  22011. " ,t.orderitem,t.testmouldflag,t.zscs) tt\n" +
  22012. " WHERE tt.outputnum <> 0\n" +
  22013. " OR tt.recoverynum <> 0\n" +
  22014. " ORDER BY tt.goodscode\n" +
  22015. " ,tt.sapcode\n" +
  22016. " ,tt.usercode\n" +
  22017. " ,tt.ordercode\n" +
  22018. " ,tt.orderitem,tt.zscs";
  22019. oracleParameter = new OracleParameter[]
  22020. {
  22021. new OracleParameter(":yyyymmdd", yyyymmdd)
  22022. };
  22023. DataTable workData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  22024. // 同步日志ID
  22025. string logid = oracleTrConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  22026. //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" +
  22027. // dateend.ToString("yyyyMMdd-HHmm");
  22028. string msg = $"整板条码[{logid}]:" + dtData.Rows[0]["barcode"];
  22029. sqlString = "insert into tsap_hegii_datalog\n" +
  22030. " (LogID\n" +
  22031. " ,LogType\n" +
  22032. " ,BeginTime\n" +
  22033. " ,YYYYMMDD\n" +
  22034. " ,WorkCode\n" +
  22035. " ,DataCode\n" +
  22036. " ,DataStuts\n" +
  22037. " ,DataMSG\n" +
  22038. " ,CreateUserID\n" +
  22039. " ,DataLogID)\n" +
  22040. "values\n" +
  22041. " (:LogID\n" +
  22042. " ,'2'\n" +
  22043. " ,sysdate\n" +
  22044. " ,:YYYYMMDD\n" +
  22045. " ,:WorkCode\n" +
  22046. " ,'60'\n" +
  22047. " ,'S'\n" +
  22048. " ,:DataMSG\n" +
  22049. " ,:CreateUserID\n" +
  22050. " ,:LogID)";
  22051. oracleParameter = new OracleParameter[]
  22052. {
  22053. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  22054. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  22055. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  22056. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  22057. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  22058. };
  22059. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22060. #endregion
  22061. #region 同步条码明细
  22062. sqlString =
  22063. "INSERT INTO tsap_hegii_finishedproduct\n" +
  22064. " (yyyymmdd\n" +
  22065. " ,workcode\n" +
  22066. " ,barcode\n" +
  22067. " ,outcode\n" +
  22068. " ,goodscode\n" +
  22069. " ,sapcode\n" +
  22070. " ,sapflbatchno\n" +
  22071. " ,sapfhundoflag\n" +
  22072. " ,ordercode\n" +
  22073. " ,orderitem, LOGID\n" +
  22074. " ,securitycode,ZTYPE)\n" +
  22075. " SELECT :yyyymmdd\n" +
  22076. " ,:workcode\n" +
  22077. " ,bar.barcode\n" +
  22078. " ,nvl(gdd.outlabelcode, (g.materialcode || :workcode || gdd.onlycode))\n" +
  22079. " ,gdd.goodscode\n" +
  22080. " ,nvl(gdd.materialcode, nvl(g.materialcode, g.goodscode))\n" +
  22081. " ,nvl(bar.finishedloadbatchno, bar.fhbatchno)\n" +
  22082. //" ,decode(gdd.sapfhundoflag, '1', 'X', ' ')\n" +
  22083. " ,' '\n" +
  22084. " ,CASE\n" +
  22085. " WHEN o.orderid IS NULL\n" +
  22086. " OR o.orderno LIKE 'HEGII%' THEN\n" +
  22087. " NULL\n" +
  22088. " WHEN instr(o.orderno, '/') = 0 THEN\n" +
  22089. " to_char(o.orderno)\n" +
  22090. " ELSE\n" +
  22091. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  22092. " END ordercode -- 销售凭证\n" +
  22093. " ,CASE\n" +
  22094. " WHEN o.orderid IS NULL\n" +
  22095. " OR o.orderno LIKE 'HEGII%'\n" +
  22096. " OR instr(o.orderno, '/') = 0 THEN\n" +
  22097. " '0'\n" +
  22098. " WHEN instr(o.orderno, '#') = 0 THEN\n" +
  22099. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  22100. " ELSE\n" +
  22101. " to_char(substr(o.orderno\n" +
  22102. " ,instr(o.orderno, '/') + 1\n" +
  22103. " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  22104. " END orderitem -- 销售凭证项目\n" +
  22105. " ,:LOGID\n" +
  22106. " ,gdd.securitycode,'S'\n" +
  22107. " FROM tp_pm_finishedproduct bar\n" +
  22108. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  22109. " ON gdd.barcode = bar.barcode\n" +
  22110. " INNER JOIN tp_mst_goods g\n" +
  22111. " ON g.goodsid = gdd.goodsid\n" +
  22112. " LEFT JOIN tp_pm_order o\n" +
  22113. " ON o.orderid = bar.fhorderid\n" +
  22114. " WHERE 1 = 1 " + fifter;
  22115. //" WHERE :FHBatchNo = fhBatchNo";
  22116. oracleParameter = new OracleParameter[]
  22117. {
  22118. //new OracleParameter(":FHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
  22119. new OracleParameter(":yyyymmdd", yyyymmdd),
  22120. new OracleParameter(":workcode", workcode),
  22121. new OracleParameter(":LOGID", logid)
  22122. };
  22123. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22124. sqlString =
  22125. "select bar.yyyymmdd\n" +
  22126. " ,bar.workcode\n" +
  22127. " ,bar.barcode\n" +
  22128. " ,bar.outcode\n" +
  22129. " ,bar.goodscode\n" +
  22130. " ,bar.sapcode\n" +
  22131. " ,bar.sapflbatchno\n" +
  22132. " ,bar.sapfhundoflag\n" +
  22133. " ,bar.ordercode\n" +
  22134. " ,bar.orderitem\n" +
  22135. " ,bar.securitycode\n" +
  22136. //" from tsap_hegii_finishedproduct bar where ztype is null " + fifter +
  22137. " from tsap_hegii_finishedproduct bar where LOGID=:LOGID " +
  22138. " order by bar.sapflbatchno, bar.barcode";
  22139. oracleParameter = new OracleParameter[]
  22140. {
  22141. new OracleParameter(":LOGID", logid)
  22142. };
  22143. DataTable fpData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  22144. #region 注销
  22145. //// 单次传输最大条数
  22146. //int maxCount = 100000;
  22147. //List<Zppfm010> sapParameterList = new List<Zppfm010>();
  22148. //if (fpData != null && fpData.Rows.Count > 0)
  22149. //{
  22150. // int index = 0;
  22151. // //Zppfm010 sapParameter = new Zppfm010();
  22152. // //sapParameter.Zsum = maxCount;
  22153. // //sapParameter.TableIn = new Zspp110[sapParameter.Zsum];
  22154. // List<ZSPP110> tableInList = new List<ZSPP110>();
  22155. // foreach (DataRow item in fpData.Rows)
  22156. // {
  22157. // if (index >= maxCount)
  22158. // {
  22159. // Zppfm010 sapItem = new Zppfm010();
  22160. // sapItem.ZSUM = tableInList.Count;
  22161. // sapItem.TABLE_IN = tableInList.ToArray();
  22162. // sapParameterList.Add(sapItem);
  22163. // index = 0;
  22164. // tableInList.Clear();
  22165. // }
  22166. // ZSPP110 info110 = new ZSPP110();
  22167. // // 时间戳
  22168. // info110.ZSCNU = yyyymmdd;
  22169. // // 工厂
  22170. // info110.WERKS = workcode;
  22171. // // 生产条码
  22172. // info110.ZSCTM = item["barcode"].ToString();
  22173. // //生产防伪码 xuwei add 2021-12-09
  22174. // info110.SECURITYCODE = item["securitycode"].ToString();
  22175. // // 包装条码
  22176. // info110.ZBZTM = item["outcode"].ToString();
  22177. // // 产品编码
  22178. // info110.ZCPBM = item["goodscode"].ToString();
  22179. // // 物料编号
  22180. // info110.MATNR = item["sapcode"].ToString();
  22181. // // 包装整板标识
  22182. // info110.ZBZBS = item["sapflbatchno"].ToString();
  22183. // // 重新绑定标识
  22184. // info110.ZCXBD = item["sapfhundoflag"].ToString();
  22185. // // 销售凭证
  22186. // info110.KDAUF = item["ordercode"].ToString();
  22187. // // 销售凭证项目
  22188. // info110.KDPOS = item["orderitem"].ToString();
  22189. // info110.UZEIT = date.ToString("HH:mm:ss");
  22190. // info110.ZCODEN = "";
  22191. // info110.ZCODEYZM = "";
  22192. // //if (info110.WERKS == "5011" && info110.ZCPBM == "K047L")
  22193. // //{
  22194. // // continue;
  22195. // //}
  22196. // tableInList.Add(info110);
  22197. // index++;
  22198. // }
  22199. // Zppfm010 sapParameter010 = new Zppfm010();
  22200. // sapParameter010.ZSUM = tableInList.Count;
  22201. // sapParameter010.TABLE_IN = tableInList.ToArray();
  22202. // sapParameterList.Add(sapParameter010);
  22203. // index = 0;
  22204. // tableInList.Clear();
  22205. //}
  22206. //else
  22207. //{
  22208. // Zppfm010 sapParameter010 = new Zppfm010();
  22209. // sapParameter010.ZSUM = 0;
  22210. // sapParameter010.TABLE_IN = new ZSPP110[sapParameter010.ZSUM];
  22211. // sapParameterList.Add(sapParameter010);
  22212. //}
  22213. ////2022年9月23日13:06:25 添加时间限制,10月1号零点整不再传输原接口产量数据
  22214. //// 当前时间
  22215. //DateTime dateTimeNow = DateTime.Now;
  22216. //DateTime setTime = new DateTime(2022, 10, 1, 0, 0, 0);
  22217. //if (dateTimeNow < setTime)
  22218. //{
  22219. // //foreach (Zppfm010 sapParameter010 in sapParameterList)
  22220. // //{
  22221. // // //ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010(sapParameter010, yyyymmdd);
  22222. // // //ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010_240(sapParameter010, yyyymmdd, sapName);
  22223. // // ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010(sapParameter010, yyyymmdd, sapName);
  22224. // // //sre.Message = result010.ZMSG;
  22225. // // sre.Message = $"{result010.ZMSG}({sapParameter010.ZSUM})";
  22226. // // sre.Result = result010.ZTYPE;
  22227. // // if (result010.TABLE_OUT != null && result010.TABLE_OUT.Length > 0)
  22228. // // {
  22229. // // sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = nvl(:ZTYPE,'S'), ZMSG = :ZMSG where barcode=:barcode and sapflbatchno=:sapflbatchno and logid=:logid";
  22230. // // foreach (ZSPP110 item in result010.TABLE_OUT)
  22231. // // {
  22232. // // oracleParameter = new OracleParameter[]
  22233. // // {
  22234. // // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  22235. // // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  22236. // // new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input),
  22237. // // new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, item.ZBZBS, ParameterDirection.Input),
  22238. // // new OracleParameter(":logid", logid)
  22239. // // };
  22240. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22241. // // }
  22242. // // }
  22243. // // if (result010.ZTYPE != "S")
  22244. // // {
  22245. // // sre.Result = -2;
  22246. // // sre.Message = "同步条码失败," + result010.ZMSG;
  22247. // // return sre;
  22248. // // }
  22249. // //}
  22250. //}
  22251. #endregion
  22252. #endregion
  22253. #region 同步产量
  22254. //Zppfm008 sapParameter = new Zppfm008();
  22255. if (workData != null && workData.Rows.Count > 0)
  22256. {
  22257. //sapParameter.ZSUM = workData.Rows.Count;
  22258. //sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  22259. sqlString = "insert into TSAP_HEGII_WorkData\n" +
  22260. " (YYYYMMDD\n" +
  22261. " ,WorkCode\n" +
  22262. " ,DataCode\n" +
  22263. " ,GoodsCode\n" +
  22264. " ,SAPCode\n" +
  22265. " ,UserCode\n" +
  22266. " ,OutputNum\n" +
  22267. " ,RECOVERYNUM\n" +
  22268. " ,ORDERCODE\n" +
  22269. " ,ORDERITEM\n" +
  22270. " ,testmouldflag\n" +
  22271. " ,zscs\n" +
  22272. " ,LogID,createtime)\n" +
  22273. "values\n" +
  22274. " ('" + yyyymmdd + "'\n" +
  22275. " ,'" + workcode + "'\n" +
  22276. " ,'60'\n" +
  22277. " ,:GoodsCode\n" +
  22278. " ,:SAPCode\n" +
  22279. " ,:UserCode\n" +
  22280. " ,:OutputNum\n" +
  22281. " ,:RECOVERYNUM\n" +
  22282. " ,:ORDERCODE\n" +
  22283. " ,:ORDERITEM\n" +
  22284. " ,:testmouldflag\n" +
  22285. " ,:zscs\n" +
  22286. " ," + logid + ",:createtime)";
  22287. //int index = 0;
  22288. //DateTime now = DateTime.Now;
  22289. foreach (DataRow item in workData.Rows)
  22290. {
  22291. //ZSPP100 info100 = new ZSPP100();
  22292. //// 工厂
  22293. //info100.WERKS = workcode;
  22294. //// 型号
  22295. //info100.GROES = item["GoodsCode"].ToString();
  22296. //// 物料编号
  22297. //info100.MATNR = item["SAPCode"].ToString();
  22298. //// 生产工号
  22299. //info100.ZGHNU = item["UserCode"].ToString();
  22300. //// 数据节点
  22301. //info100.ZJDNU = "60";
  22302. //// 时间戳
  22303. //info100.ZSCNU = yyyymmdd;
  22304. //// 销售凭证
  22305. //info100.VBELN = item["ORDERCODE"].ToString().Trim();
  22306. //// 销售凭证项目
  22307. //info100.POSNR = item["ORDERITEM"].ToString();
  22308. //// 产量
  22309. //info100.ZCLNG = item["OutputNum"].ToString();
  22310. //// 损坯
  22311. //info100.ZSPNG = "0";
  22312. //// 清除
  22313. //info100.ZQCNG = "0";
  22314. //// 回收
  22315. //info100.ZHSNG = item["RECOVERYNUM"].ToString();
  22316. //// 干补
  22317. //info100.ZGBNG = "0";
  22318. //// 注浆类型 G高压 L普通 M粘接高压(三车间)
  22319. //info100.ZSCS = item["ZSCS"].ToString();
  22320. //info100.ZKSSJ = now.ToString("HHmmss");
  22321. //info100.ZJSRQ = Convert.ToDecimal(now.ToString("yyyyMMddHHmmss"));
  22322. oracleParameter = new OracleParameter[]
  22323. {
  22324. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item["GoodsCode"], ParameterDirection.Input),
  22325. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item["SAPCode"], ParameterDirection.Input),
  22326. new OracleParameter(":UserCode",OracleDbType.Varchar2, item["UserCode"], ParameterDirection.Input),
  22327. new OracleParameter(":OutputNum",OracleDbType.Varchar2, item["OutputNum"], ParameterDirection.Input),
  22328. new OracleParameter(":RECOVERYNUM",OracleDbType.Varchar2, item["RECOVERYNUM"], ParameterDirection.Input),
  22329. new OracleParameter(":ORDERCODE",OracleDbType.Varchar2, item["ORDERCODE"], ParameterDirection.Input),
  22330. new OracleParameter(":ORDERITEM",OracleDbType.Varchar2, item["ORDERITEM"], ParameterDirection.Input),
  22331. new OracleParameter(":testmouldflag",OracleDbType.Varchar2, item["TESTMOULDFLAG"], ParameterDirection.Input),
  22332. new OracleParameter(":ZSCS",OracleDbType.Varchar2, item["ZSCS"], ParameterDirection.Input),
  22333. new OracleParameter(":createtime",OracleDbType.Date, item["createtime"], ParameterDirection.Input),
  22334. };
  22335. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22336. //sapParameter.TABLE_IN[index++] = info100;
  22337. }
  22338. }
  22339. //else
  22340. //{
  22341. // sapParameter.ZSUM = 0;
  22342. // sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  22343. //}
  22344. #endregion
  22345. #region 注销
  22346. ////2022年9月23日13:06:25 添加时间限制,10月1号零点整不再传输原接口产量数据
  22347. //if (dateTimeNow < setTime)
  22348. //{
  22349. // ////ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60");
  22350. // //ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60", sapName);
  22351. // ////ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008_240(sapParameter, yyyymmdd, "60", sapName);
  22352. // ////if (result.Ztype == "E")
  22353. // ////{
  22354. // //// sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
  22355. // //// oracleParameter = new OracleParameter[]
  22356. // //// {
  22357. // //// new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  22358. // //// new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  22359. // //// };
  22360. // //// r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  22361. // ////}
  22362. // ////else
  22363. // //if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  22364. // //{
  22365. // // sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  22366. // // " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  22367. // // "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  22368. // // "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  22369. // // foreach (ZSPP100 item in result.TABLE_OUT)
  22370. // // {
  22371. // // string posnr = item.POSNR.TrimStart('0');
  22372. // // oracleParameter = new OracleParameter[]
  22373. // // {
  22374. // // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  22375. // // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  22376. // // new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  22377. // // new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  22378. // // new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  22379. // // new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  22380. // // new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input),
  22381. // // };
  22382. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22383. // // }
  22384. // // //:msg||chr(13)||DataMSG
  22385. // // result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  22386. // // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  22387. // // oracleParameter = new OracleParameter[]
  22388. // // {
  22389. // // new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  22390. // // new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  22391. // // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  22392. // // };
  22393. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22394. // //}
  22395. // //if (result.ZTYPE != "S")
  22396. // //{
  22397. // // sre.Result = -2;
  22398. // // sre.Message = "同步产量失败," + result.ZMSG;
  22399. // // return sre;
  22400. // //}
  22401. // //sqlString =
  22402. // //"UPDATE tp_pm_groutingdailydetail bar\n" +
  22403. // //" SET bar.issync = '1'\n" +
  22404. // //" WHERE 1 = 1" + fifter;
  22405. // //r = oracleTrConn.ExecuteNonQuery(sqlString);
  22406. //}
  22407. //else
  22408. #endregion
  22409. #region 调用新报工接口
  22410. workcode = "5000";
  22411. sqlString = @"
  22412. SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') AS YYYYMMDD,
  22413. SYSDATE AS CREATETIME,
  22414. TT.GOODSCODE GROES,
  22415. TT.SAPCODE MATNR,
  22416. TT.USERCODE ZGHNU,
  22417. TT.ORDERCODE VBELN,
  22418. TT.ORDERITEM POSNR,
  22419. DECODE(TT.TESTMOULDFLAG, 0, 'C', 1, 'Y', '') ZSCMS,
  22420. 'T' AS ZSCS,
  22421. TO_CHAR(TT.OUTPUTNUM) AS ZCLNG,
  22422. TO_CHAR(TT.RECOVERYNUM) AS ZHSNG,
  22423. :WORKCODE WERKS,
  22424. '60' ZJDNU,
  22425. TO_CHAR(SYSDATE, 'YYYYMMDD') ZSCNU,
  22426. TO_CHAR(SYSDATE, 'HH24MISS') ZKSSJ,
  22427. TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ,
  22428. '0' ZSPNG,
  22429. '0' ZQCNG,
  22430. '0' ZGBNG,
  22431. TO_CHAR(TT.WORKSHOP) ZSCCJ,
  22432. '60' DATACODE,
  22433. TT.CHARG
  22434. FROM (SELECT T.GOODSCODE,
  22435. T.SAPCODE,
  22436. T.USERCODE,
  22437. T.ORDERCODE,
  22438. T.ORDERITEM,
  22439. T.TESTMOULDFLAG,
  22440. T.ZSCS,
  22441. T.WORKSHOP,
  22442. T.CHARG,
  22443. SUM(DECODE(T.RECYCLINGFLAG, '1', 0, 1)) OUTPUTNUM,
  22444. SUM(DECODE(T.RECYCLINGFLAG, '0', 0, 1)) RECOVERYNUM
  22445. FROM (SELECT BAR.GOODSCODE,
  22446. BAR.MATERIALCODE SAPCODE,
  22447. GH.FHUSERCODE USERCODE,
  22448. O.ORDERNO,
  22449. BAR.RECYCLINGFLAG,
  22450. BAR.TESTMOULDFLAG,
  22451. DECODE(BAR.TESTMOULDFLAG
  22452. ,'0'
  22453. ,''
  22454. ,DECODE(G.GOODS_LINE_CODE, 'G', 'A', 'M', 'A', 'L', 'B', '')) AS ZSCS,
  22455. CASE
  22456. WHEN O.ORDERID IS NULL
  22457. OR O.ORDERNO LIKE 'HEGII%' THEN
  22458. ' '
  22459. WHEN INSTR(O.ORDERNO, '/') = 0 THEN
  22460. TO_CHAR(O.ORDERNO)
  22461. ELSE
  22462. TO_CHAR(SUBSTR(O.ORDERNO, 1, INSTR(O.ORDERNO, '/') - 1))
  22463. END ORDERCODE -- 销售凭证
  22464. ,
  22465. CASE
  22466. WHEN O.ORDERID IS NULL
  22467. OR O.ORDERNO LIKE 'HEGII%'
  22468. OR INSTR(O.ORDERNO, '/') = 0 THEN
  22469. '0'
  22470. WHEN INSTR(O.ORDERNO, '#') = 0 THEN
  22471. TO_CHAR(SUBSTR(O.ORDERNO, INSTR(O.ORDERNO, '/') + 1))
  22472. ELSE
  22473. TO_CHAR(SUBSTR(O.ORDERNO
  22474. ,INSTR(O.ORDERNO, '/') + 1
  22475. ,INSTR(O.ORDERNO, '#') - INSTR(O.ORDERNO, '/') - 1))
  22476. END ORDERITEM,
  22477. CASE
  22478. WHEN (INSTR(BAR.GROUTINGLINECODE, 'A') = 1 OR
  22479. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  22480. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  22481. 1
  22482. WHEN (INSTR(BAR.GROUTINGLINECODE, 'B') = 1 OR
  22483. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  22484. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  22485. 2
  22486. WHEN INSTR(BAR.GROUTINGLINECODE, 'C') = 1 THEN
  22487. 3
  22488. ELSE
  22489. 9
  22490. END AS WORKSHOP,
  22491. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG
  22492. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  22493. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  22494. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  22495. INNER JOIN TP_MST_GOODS G
  22496. ON G.GOODSID = BAR.GOODSID
  22497. INNER JOIN TP_MST_GOODSTYPE GT
  22498. ON GT.GOODSTYPEID = G.GOODSTYPEID
  22499. LEFT JOIN TP_PM_ORDER O
  22500. ON O.ORDERID = GH.FHORDERID
  22501. WHERE 1 = 1 " + fifter + @") T
  22502. GROUP BY T.GOODSCODE,
  22503. T.SAPCODE,
  22504. T.USERCODE,
  22505. T.ORDERCODE,
  22506. T.ORDERITEM,
  22507. T.TESTMOULDFLAG,
  22508. T.ZSCS,
  22509. T.WORKSHOP,
  22510. T.CHARG) TT
  22511. WHERE TT.OUTPUTNUM <> 0
  22512. OR TT.RECOVERYNUM <> 0
  22513. ORDER BY TT.GOODSCODE,
  22514. TT.SAPCODE,
  22515. TT.USERCODE,
  22516. TT.ORDERCODE,
  22517. TT.ORDERITEM,
  22518. TT.ZSCS,
  22519. TT.WORKSHOP,
  22520. TT.CHARG ";
  22521. oracleParameter = new OracleParameter[]
  22522. {
  22523. new OracleParameter(":WORKCODE", workcode)
  22524. };
  22525. DataTable workData5000 = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  22526. //string logid_bg = oracleTrConn.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  22527. sqlString = "insert into TSAP_HEGII_DATALOG_BG\n" +
  22528. " (LogID\n" +
  22529. " ,LogType\n" +
  22530. " ,BeginTime\n" +
  22531. " ,YYYYMMDD\n" +
  22532. " ,WorkCode\n" +
  22533. " ,DataCode\n" +
  22534. " ,DataStuts\n" +
  22535. " ,DataMSG\n" +
  22536. " ,DATALOGID\n" +
  22537. " ,EXECUTEDATEBEGIN\n" +
  22538. " ,EXECUTEDATEEND,SAPGUID)\n" +
  22539. "values\n" +
  22540. " (:LogID\n" +
  22541. " ,'2'\n" +
  22542. " ,sysdate\n" +
  22543. " ,:YYYYMMDD\n" +
  22544. " ,'5000'\n" +
  22545. " ,'60'\n" +
  22546. " ,'F'\n" +
  22547. " ,:DataMSG\n" +
  22548. " ,:LogID\n" +
  22549. " ,sysdate\n" +
  22550. " ,sysdate,sys_guid())";
  22551. oracleParameter = new OracleParameter[]
  22552. {
  22553. new OracleParameter(":LogID",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  22554. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  22555. new OracleParameter(":DataMSG",OracleDbType.Varchar2, "", ParameterDirection.Input),
  22556. };
  22557. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22558. //DateTime now = DateTime.Now;
  22559. sqlString = "insert into TSAP_HEGII_WORKDATA_BG\n" +
  22560. " (YYYYMMDD\n" +
  22561. " ,WorkCode\n" +
  22562. " ,DataCode\n" +
  22563. " ,GoodsCode\n" +
  22564. " ,SAPCode\n" +
  22565. " ,UserCode\n" +
  22566. " ,WORKSHOP\n" +
  22567. " ,OutputNum\n" +
  22568. " ,RECOVERYNUM\n" +
  22569. " ,ORDERCODE\n" +
  22570. " ,ORDERITEM\n" +
  22571. " ,testmouldflag\n" +
  22572. " ,zscs\n" +
  22573. " ,LogID,createtime,workdataid,charg)\n" +
  22574. "values\n" +
  22575. " ('" + yyyymmdd + "'\n" +
  22576. " ,'5000'\n" +
  22577. " ,'60'\n" +
  22578. " ,:GoodsCode\n" +
  22579. " ,:SAPCode\n" +
  22580. " ,:UserCode\n" +
  22581. " ,:ZSCCJ\n" +
  22582. " ,:OutputNum\n" +
  22583. " ,:RECOVERYNUM\n" +
  22584. " ,:ORDERCODE\n" +
  22585. " ,:ORDERITEM\n" +
  22586. " ,:testmouldflag\n" +
  22587. " ,:zscs\n" +
  22588. " ," + logid_bg + ",:createtime,:workdataid,:charg)";
  22589. foreach (DataRow item in workData5000.Rows)
  22590. {
  22591. string workdataid = oracleTrConn.GetSqlResultToStr("select SEQ_HEGII_WORKDATA_BG.Nextval from dual");
  22592. oracleParameter = new OracleParameter[]
  22593. {
  22594. new OracleParameter(":GoodsCode", item["GROES"].ToString()),
  22595. new OracleParameter(":SAPCode", item["MATNR"].ToString()),
  22596. new OracleParameter(":UserCode", item["ZGHNU"].ToString()),
  22597. new OracleParameter(":ZSCCJ", item["ZSCCJ"].ToString()),
  22598. new OracleParameter(":OutputNum", item["ZCLNG"].ToString()),
  22599. new OracleParameter(":RECOVERYNUM", item["ZHSNG"].ToString()),
  22600. new OracleParameter(":ORDERCODE", item["VBELN"].ToString()),
  22601. new OracleParameter(":ORDERITEM", item["POSNR"].ToString()),
  22602. new OracleParameter(":testmouldflag", item["ZSCMS"].ToString()),
  22603. new OracleParameter(":zscs", item["ZSCS"].ToString()),
  22604. new OracleParameter(":createtime", OracleDbType.Date,item["createtime"], ParameterDirection.Input),
  22605. new OracleParameter(":workdataid", workdataid),
  22606. new OracleParameter(":charg", item["CHARG"].ToString()),
  22607. };
  22608. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22609. }
  22610. sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" +
  22611. " ,TO_CHAR(5000) WERKS\n" +
  22612. " ,TO_CHAR(wd.goodscode) GROES\n" +
  22613. " ,TO_CHAR(wd.sapcode) MATNR\n" +
  22614. " ,TO_CHAR(wd.usercode) ZGHNU\n" +
  22615. " ,TO_CHAR(wd.datacode) ZJDNU\n" +
  22616. " ,to_char(wd.createtime, 'YYYYMMDD' ) ZSCNU\n" +
  22617. " ,to_char(wd.createtime, 'HH24MISS' ) ZKSSJ\n" +
  22618. " ,to_char(wd.createtime, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" +
  22619. " ,TO_CHAR(wd.ordercode) VBELN\n" +
  22620. " ,TO_CHAR(wd.orderitem) POSNR\n" +
  22621. " ,TO_CHAR(wd.outputnum) ZCLNG\n" +
  22622. " ,TO_CHAR(wd.scrapnum) ZSPNG\n" +
  22623. " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" +
  22624. " ,TO_CHAR(wd.recoverynum) ZHSNG\n" +
  22625. " ,TO_CHAR(wd.repairnum) ZGBNG\n" +
  22626. " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" +
  22627. " -- ,TO_CHAR(wd.zscs) zscs\n" +
  22628. " ,'T' AS zscs\n" +
  22629. " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" +
  22630. " ,WD.CHARG\n" +
  22631. " ,TO_CHAR(60) datacode\n" +
  22632. " ,'5000' || WD.CHARG || LPAD(DL.LOGID, 10,'0') AS ZID\n" +
  22633. " FROM tsap_hegii_workdata_bg wd\n" +
  22634. " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" +
  22635. " ON wd.LOGID = DL.LOGID \n" +
  22636. " WHERE wd.logid = :logid";
  22637. OracleParameter[] par = null;
  22638. par = new OracleParameter[]
  22639. {
  22640. new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  22641. };
  22642. DataTable dtt = oracleTrConn.GetSqlResultToDt(sqlString, par);
  22643. int num = dtt.Rows.Count;
  22644. // 报工子表
  22645. sqlString = @"
  22646. SELECT '5000' || WD.CHARG || LPAD(WD.LOGID, 10, '0') AS ZID,
  22647. TO_CHAR(5000) WERKS,
  22648. WD.SAPCODE AS MATNR,
  22649. TO_CHAR(WD.DATACODE) ZJDNU,
  22650. 'T' AS ZSCS,
  22651. TO_CHAR(WD.WORKSHOP) ZSCCJ,
  22652. TO_CHAR(WD.TESTMOULDFLAG) ZSCMS,
  22653. TO_CHAR(WD.CREATETIME, 'YYYYMMDD') ZSCNU,
  22654. TO_CHAR(WD.CREATETIME, 'HH24MISS') ZKSSJ,
  22655. TO_CHAR(WD.USERCODE) ZGHNU,
  22656. TO_CHAR(WD.GOODSCODE) GROES,
  22657. TO_CHAR(ROWNUM) AS POSNR,
  22658. T2.IDNRK,
  22659. TO_CHAR(T2.MENGE) AS MENGE,
  22660. T2.MEINS,
  22661. T2.IDNRKCHARG AS CHARG,
  22662. T2.LGORT
  22663. FROM TSAP_HEGII_WORKDATA_BG WD
  22664. INNER JOIN (SELECT T.GOODSCODE,
  22665. T.SAPCODE,
  22666. T.USERCODE,
  22667. DECODE(T.TESTMOULDFLAG, 0, 'C', 1, 'Y', '') ZSCMS,
  22668. T.WORKSHOP,
  22669. T.CHARG,
  22670. T.IDNRK,
  22671. T.MEINS,
  22672. T.IDNRKCHARG,
  22673. T.LGORT,
  22674. SUM(T.MENGE) AS MENGE
  22675. FROM (SELECT BAR.GOODSCODE,
  22676. BAR.MATERIALCODE AS SAPCODE,
  22677. GH.FHUSERCODE AS USERCODE,
  22678. BAR.RECYCLINGFLAG,
  22679. BAR.TESTMOULDFLAG,
  22680. CASE
  22681. WHEN (INSTR(BAR.GROUTINGLINECODE, 'A') = 1 OR
  22682. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  22683. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  22684. 1
  22685. WHEN (INSTR(BAR.GROUTINGLINECODE, 'B') = 1 OR
  22686. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  22687. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  22688. 2
  22689. WHEN INSTR(BAR.GROUTINGLINECODE, 'C') = 1 THEN
  22690. 3
  22691. ELSE
  22692. 9
  22693. END AS WORKSHOP,
  22694. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG,
  22695. BI.IDNRK,
  22696. BI.MEINS,
  22697. NVL(BI.CHARG, '') AS IDNRKCHARG,
  22698. BI.LGORT,
  22699. BI.MENGE
  22700. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  22701. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  22702. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  22703. INNER JOIN TP_PM_BARCODEIDNRKREL BI
  22704. ON BI.BARCODE = GH.BARCODE
  22705. INNER JOIN TP_MST_GOODS G
  22706. ON G.GOODSID = BAR.GOODSID
  22707. INNER JOIN TP_MST_GOODSTYPE GT
  22708. ON GT.GOODSTYPEID = G.GOODSTYPEID
  22709. WHERE 1 = 1 " + fifter + @") T
  22710. GROUP BY T.GOODSCODE,
  22711. T.SAPCODE,
  22712. T.USERCODE,
  22713. T.TESTMOULDFLAG,
  22714. T.WORKSHOP,
  22715. T.CHARG,
  22716. T.IDNRK,
  22717. T.MEINS,
  22718. T.IDNRKCHARG,
  22719. T.LGORT) T2
  22720. ON WD.SAPCODE = T2.SAPCODE
  22721. AND WD.WORKSHOP = T2.WORKSHOP
  22722. AND WD.TESTMOULDFLAG = T2.ZSCMS
  22723. AND WD.USERCODE = T2.USERCODE
  22724. AND WD.GOODSCODE = T2.GOODSCODE
  22725. AND WD.CHARG = T2.CHARG
  22726. WHERE WD.LOGID = :logid";
  22727. par = new OracleParameter[]
  22728. {
  22729. new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  22730. };
  22731. DataTable dtDetail = oracleTrConn.GetSqlResultToDt(sqlString, par);
  22732. //string sq = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  22733. //string SAP_ING_NEW = oracleTrConn.GetSqlResultToStr(sq);
  22734. //if (SAP_ING_NEW == "1")
  22735. //if (true)
  22736. //{
  22737. // 调用SAP接口
  22738. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(dtt)) + "}"
  22739. + ",\"TABLE_IN1\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAPDetail>.ConvertToModel(dtDetail)) + "}}";
  22740. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  22741. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  22742. //string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  22743. // 调外公司接口如何不背锅第一要义:
  22744. // 1、post的时候,一定要加上try catch。出现错误一定要把是哪个公司哪个接口的错误信息,简单明了的显示给客户。千万不要就弹个系统异常,请联系管理员。
  22745. // 2、post前后,一定要把传入传出的json存到log里,日后扯皮时一定有用。
  22746. string result = string.Empty;
  22747. try
  22748. {
  22749. result = SAPDataLogic.PostData(url030, postString, "POST");
  22750. }
  22751. catch (Exception ex)
  22752. {
  22753. sre.Result = -2;
  22754. sre.Message = "sap030接口同步失败," + ex.Message;
  22755. return sre;
  22756. }
  22757. if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0)
  22758. {
  22759. sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid_bg +
  22760. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  22761. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  22762. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  22763. Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  22764. object TABLE_OUT;
  22765. obj.TryGetValue("TABLE_OUT", out TABLE_OUT);
  22766. obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(TABLE_OUT + "");
  22767. object item1;
  22768. obj.TryGetValue("item", out item1);
  22769. JArray arr = JArray.FromObject(item1);
  22770. foreach (JObject item60 in arr)
  22771. {
  22772. string posnr = item60["POSNR"].ToString().TrimStart('0');
  22773. oracleParameter = new OracleParameter[]
  22774. {
  22775. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item60["ZTYPE"].ToString(), ParameterDirection.Input),
  22776. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item60["ZMSG"].ToString(), ParameterDirection.Input),
  22777. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item60["GROES"].ToString(), ParameterDirection.Input),
  22778. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item60["MATNR"].ToString(), ParameterDirection.Input),
  22779. new OracleParameter(":UserCode",OracleDbType.Varchar2, item60["ZGHNU"].ToString(), ParameterDirection.Input),
  22780. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item60["VBELN"].ToString()) ? " " : item60["VBELN"].ToString()), ParameterDirection.Input),
  22781. new OracleParameter(":Orderitem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  22782. };
  22783. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22784. }
  22785. //:msg||chr(13)||DataMSG
  22786. JObject.Parse(result)["ZMSG"] = $"{JObject.Parse(result)["ZMSG"]}(" + num + ")";
  22787. sqlString = "update tsap_hegii_datalog_bg t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  22788. oracleParameter = new OracleParameter[]
  22789. {
  22790. new OracleParameter(":DataStuts",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  22791. new OracleParameter(":msg",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  22792. new OracleParameter(":logid",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  22793. };
  22794. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22795. }
  22796. if (JObject.Parse(result)["ZTYPE"].ToString() != "S")
  22797. {
  22798. sre.Result = -2;
  22799. sre.Message = "同步产量失败," + JObject.Parse(result)["ZMSG"].ToString();
  22800. return sre;
  22801. }
  22802. //sqlString =
  22803. //"UPDATE tp_pm_groutingdailydetail bar\n" +
  22804. //" SET bar.issync = '1'\n" +
  22805. //" WHERE 1 = 1" + fifter;
  22806. //r = oracleTrConn.ExecuteNonQuery(sqlString);
  22807. //}
  22808. #endregion
  22809. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = 'S' where logid = " + logid +
  22810. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  22811. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode \n" +
  22812. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  22813. foreach (DataRow row in fpData.Rows)
  22814. {
  22815. string posnr = (row["ORDERITEM"] + "").TrimStart('0');
  22816. oracleParameter = new OracleParameter[]
  22817. {
  22818. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, row["GoodsCode"], ParameterDirection.Input),
  22819. new OracleParameter(":SAPCode",OracleDbType.Varchar2, row["SAPCode"], ParameterDirection.Input),
  22820. //new OracleParameter(":UserCode",OracleDbType.Varchar2, row["UserCode"], ParameterDirection.Input),
  22821. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(row["OrderCode"] + "") ? " " :row["OrderCode"]), ParameterDirection.Input),
  22822. new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input),
  22823. };
  22824. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22825. }
  22826. #endregion
  22827. #region 同步WMS系统
  22828. if (fpData.Rows.Count > 0)
  22829. {
  22830. DateTime now = DateTime.Now;
  22831. string message = WMSDataLogic.PushWMS(fpData, now);
  22832. // 同步日志
  22833. sqlString = @"
  22834. INSERT INTO TP_WMS_LOG
  22835. (LOGTYPE,
  22836. SPS,
  22837. SKU,
  22838. SERIALNO,
  22839. ADDDAY,
  22840. ADDTIME,
  22841. CODEI,
  22842. UDF1,
  22843. UDF2,
  22844. LPN,
  22845. RETURNDESC,
  22846. ACCOUNTID,
  22847. CREATETIME,
  22848. UPDATETIME,
  22849. CREATEUSERID,
  22850. UPDATEUSERID)
  22851. VALUES
  22852. (:LOGTYPE,
  22853. :SPS,
  22854. :SKU,
  22855. :SERIALNO,
  22856. :ADDDAY,
  22857. :ADDTIME,
  22858. :CODEI,
  22859. :UDF1,
  22860. :UDF2,
  22861. :LPN,
  22862. :RETURNDESC,
  22863. :ACCOUNTID,
  22864. :CREATETIME,
  22865. :CREATETIME,
  22866. :USERID,
  22867. :USERID) ";
  22868. string orderitem;
  22869. foreach (DataRow row in fpData.Rows)
  22870. {
  22871. orderitem = row["orderitem"] + "";
  22872. if (string.IsNullOrEmpty(orderitem) || "0".Equals(orderitem))
  22873. {
  22874. orderitem = "000000";
  22875. }
  22876. oracleParameter = new OracleParameter[]
  22877. {
  22878. new OracleParameter(":LOGTYPE",OracleDbType.Int32, 1, ParameterDirection.Input),
  22879. new OracleParameter(":SPS",OracleDbType.Varchar2, "5020", ParameterDirection.Input),
  22880. new OracleParameter(":SKU",OracleDbType.Varchar2, row["sapcode"], ParameterDirection.Input),
  22881. new OracleParameter(":SERIALNO",OracleDbType.Varchar2, row["outcode"], ParameterDirection.Input),
  22882. new OracleParameter(":ADDDAY",OracleDbType.Varchar2, now.ToString("yyyyMMdd"), ParameterDirection.Input),
  22883. new OracleParameter(":ADDTIME",OracleDbType.Varchar2, now.ToString("HHmmss"), ParameterDirection.Input),
  22884. new OracleParameter(":CODEI",OracleDbType.Varchar2, row["barcode"], ParameterDirection.Input),
  22885. new OracleParameter(":UDF1",OracleDbType.Varchar2, row["ordercode"], ParameterDirection.Input),
  22886. new OracleParameter(":UDF2",OracleDbType.Varchar2, orderitem, ParameterDirection.Input),
  22887. new OracleParameter(":LPN",OracleDbType.Varchar2, row["sapflbatchno"], ParameterDirection.Input),
  22888. new OracleParameter(":RETURNDESC",OracleDbType.Varchar2, message, ParameterDirection.Input),
  22889. new OracleParameter(":ACCOUNTID",OracleDbType.Varchar2, sUserInfo.AccountID, ParameterDirection.Input),
  22890. new OracleParameter(":CREATETIME",OracleDbType.Date, now, ParameterDirection.Input),
  22891. new OracleParameter(":USERID",OracleDbType.Varchar2, sUserInfo.UserID, ParameterDirection.Input),
  22892. };
  22893. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  22894. }
  22895. sqlString =
  22896. "UPDATE tp_pm_groutingdailydetail bar\n" +
  22897. " SET bar.issync = '1'\n" +
  22898. " WHERE 1 = 1" + fifter;
  22899. r = oracleTrConn.ExecuteNonQuery(sqlString);
  22900. }
  22901. #endregion
  22902. #region 释放包材库库存
  22903. sqlString =
  22904. "SELECT 1\n" +
  22905. " FROM tp_pm_groutingdailydetail bar\n" +
  22906. " WHERE bar.packingby3 = '1' " + fifter;
  22907. isExists = oracleTrConn.GetSqlResultToObj(sqlString);
  22908. if (isExists != null)
  22909. {
  22910. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  22911. string packingURL = ini.ReadIniData("SAP_HEGII", "PackingURL");
  22912. foreach (DataRow row in workData.Rows)
  22913. {
  22914. string url = packingURL + row["sapcode"] + "&num=" + row["outputnum"];
  22915. WebRequest req = WebRequest.Create(url);
  22916. req.Method = "GET";
  22917. Stream stream = req.GetResponse().GetResponseStream();
  22918. StreamReader reader = new StreamReader(stream);
  22919. JObject json = JObject.Parse(reader.ReadToEnd());
  22920. // 包材库失败暂时不处理 TODO
  22921. if (json["success"].ToString() == "false")
  22922. {
  22923. //sre.Result = -2;
  22924. //sre.Message = json["message"].ToString();
  22925. //return sre;
  22926. }
  22927. }
  22928. }
  22929. #endregion
  22930. sre.Result = 1;
  22931. oracleTrConn.Commit();
  22932. oracleTrConn.Disconnect();
  22933. return sre;
  22934. }
  22935. catch (Exception ex)
  22936. {
  22937. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  22938. {
  22939. oracleTrConn.Rollback();
  22940. oracleTrConn.Disconnect();
  22941. }
  22942. throw ex;
  22943. }
  22944. finally
  22945. {
  22946. if (oracleTrConn.ConnState == ConnectionState.Open)
  22947. {
  22948. oracleTrConn.Disconnect();
  22949. }
  22950. }
  22951. }
  22952. /// <summary>
  22953. /// 撤销整板交接
  22954. /// </summary>
  22955. /// <param name="orderid"></param>
  22956. /// <param name="dtData"></param>
  22957. /// <param name="sUserInfo"></param>
  22958. /// <returns></returns>
  22959. public static ServiceResultEntity BackFinishedHandover(DataTable dtData, SUserInfo sUserInfo)
  22960. {
  22961. ServiceResultEntity sre = new ServiceResultEntity();
  22962. if (dtData == null || dtData.Rows.Count == 0)
  22963. {
  22964. sre.Result = -2;
  22965. sre.Message = "条码信息不能为空";
  22966. return sre;
  22967. }
  22968. string logid_bg = "0";
  22969. OracleParameter[] Paras = null;
  22970. // 条码串
  22971. string fifter = " AND (bar.barcode = '";
  22972. foreach (DataRow row in dtData.Rows)
  22973. {
  22974. fifter += row["barcode"] + "' OR bar.barcode = '";
  22975. }
  22976. fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  22977. IDBTransaction oracleTrConn2 = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  22978. try
  22979. {
  22980. #region 相关校验
  22981. string sql = "";
  22982. // 本批交接的批次号
  22983. for (int i = 0; i < dtData.Rows.Count; i++)
  22984. {
  22985. // 1.判断产品是否在产成品表中
  22986. sql = @"select
  22987. FHUserID,
  22988. FHUserCode,
  22989. GoodsID,
  22990. GoodsCode,
  22991. GoodsName
  22992. from TP_PM_FinishedProduct
  22993. where BarCode=:BarCode";
  22994. Paras = new OracleParameter[]
  22995. {
  22996. new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
  22997. };
  22998. DataSet dsResult = oracleTrConn2.GetSqlResultToDs(sql, Paras);
  22999. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  23000. {
  23001. // 在产成品表中
  23002. #region 是否交接过
  23003. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  23004. if (string.IsNullOrEmpty(fhUserCode))
  23005. {
  23006. sre.Result = -1; //未交接,不能撤销
  23007. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】未交接,不能进行该操作";
  23008. return sre;
  23009. }
  23010. #endregion
  23011. }
  23012. else
  23013. {
  23014. sre.Result = -2; //不能产成品,不能撤销
  23015. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  23016. dsResult = oracleTrConn2.GetSqlResultToDs(sql, Paras);
  23017. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  23018. {
  23019. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】不是产成品,不能进行该操作";
  23020. }
  23021. else
  23022. {
  23023. sre.Message = "此条码【" + dtData.Rows[i]["barcode"] + "】无效,不能进行该操作";
  23024. }
  23025. return sre;
  23026. }
  23027. }
  23028. #endregion
  23029. sql = @"
  23030. SELECT DISTINCT BGLOGIDCX
  23031. FROM TP_PM_FINISHEDPRODUCT BAR
  23032. WHERE 1 = 1 " + fifter;
  23033. string currentBGlogid = oracleTrConn2.GetSqlResultToStr(sql);
  23034. if (string.IsNullOrEmpty(currentBGlogid))
  23035. {
  23036. logid_bg = oracleTrConn2.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  23037. sql = @"
  23038. UPDATE TP_PM_FINISHEDPRODUCT BAR
  23039. SET BAR.BGLOGID = NULL
  23040. ,BAR.BGLOGIDCX = " + logid_bg + @"
  23041. WHERE 1 = 1 " + fifter;
  23042. int r2 = oracleTrConn2.ExecuteNonQuery(sql);
  23043. }
  23044. else
  23045. {
  23046. logid_bg = currentBGlogid;
  23047. }
  23048. oracleTrConn2.Commit();
  23049. oracleTrConn2.Disconnect();
  23050. }
  23051. catch (Exception ex)
  23052. {
  23053. throw ex;
  23054. }
  23055. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  23056. try
  23057. {
  23058. string sql = string.Empty;
  23059. oracleTrConn.Connect();
  23060. #region 相关校验
  23061. // 本批交接的批次号
  23062. for (int i = 0; i < dtData.Rows.Count; i++)
  23063. {
  23064. // 1.判断产品是否在产成品表中
  23065. sql = @"select
  23066. FHUserID,
  23067. FHUserCode,
  23068. GoodsID,
  23069. GoodsCode,
  23070. GoodsName
  23071. from TP_PM_FinishedProduct
  23072. where BarCode=:BarCode";
  23073. Paras = new OracleParameter[]
  23074. {
  23075. new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
  23076. };
  23077. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, Paras);
  23078. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  23079. {
  23080. // 在产成品表中
  23081. #region 是否交接过
  23082. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  23083. if (string.IsNullOrEmpty(fhUserCode))
  23084. {
  23085. sre.Result = -1; //未交接,不能撤销
  23086. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】未交接,不能进行该操作";
  23087. return sre;
  23088. }
  23089. #endregion
  23090. }
  23091. else
  23092. {
  23093. sre.Result = -2; //不能产成品,不能撤销
  23094. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  23095. dsResult = oracleTrConn.GetSqlResultToDs(sql, Paras);
  23096. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  23097. {
  23098. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】不是产成品,不能进行该操作";
  23099. }
  23100. else
  23101. {
  23102. sre.Message = "此条码【" + dtData.Rows[i]["barcode"] + "】无效,不能进行该操作";
  23103. }
  23104. return sre;
  23105. }
  23106. }
  23107. #endregion
  23108. #region 同步SAP
  23109. #region 取相关数据
  23110. object isExists;
  23111. string sqlString = string.Empty;
  23112. OracleParameter[] oracleParameter = null;
  23113. int r = 0;
  23114. //// 条码串
  23115. //string fifter = " AND (bar.barcode = '";
  23116. //foreach (DataRow row in dtData.Rows)
  23117. //{
  23118. // fifter += row["barcode"] + "' OR bar.barcode = '";
  23119. //}
  23120. //fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  23121. //sqlString = "SELECT 1\n" +
  23122. //" FROM tp_pm_groutingdailydetail bar\n" +
  23123. //" WHERE bar.issync IS NULL" + fifter;
  23124. //object isExists = oracleTrConn.GetSqlResultToObj(sqlString, oracleParameter);
  23125. //if (isExists != null)
  23126. //{
  23127. // sre.Result = -2;
  23128. // sre.Message = "当前产品已经撤销,不能重复同步。";
  23129. // return sre;
  23130. //}
  23131. DateTime date = DateTime.Now;
  23132. string yyyymmdd = date.ToString("yyyyMMdd");
  23133. sqlString = "select workcode from tp_mst_account where rownum = 1";
  23134. string workcode = oracleTrConn.GetSqlResultToStr(sqlString);
  23135. //DateTime datebegin = date.Date;
  23136. //DateTime dateend = date.Date.AddDays(1);
  23137. //sqlString =
  23138. //"SELECT :yyyymmdd AS yyyymmdd\n" +
  23139. //" ,SYSDATE AS createtime\n" +
  23140. //" ,tt.goodscode\n" +
  23141. //" ,tt.sapcode\n" +
  23142. //" ,tt.usercode\n" +
  23143. //" ,tt.ordercode\n" +
  23144. //" ,tt.orderitem\n" +
  23145. //" ,tt.zscs\n" +
  23146. //" ,to_char(tt.outputnum) AS outputnum\n" +
  23147. //" ,to_char(tt.recoverynum) AS recoverynum\n" +
  23148. //" FROM (SELECT t.goodscode\n" +
  23149. //" ,t.sapcode\n" +
  23150. //" ,t.usercode\n" +
  23151. //" ,t.ordercode\n" +
  23152. //" ,t.orderitem\n" +
  23153. //" ,t.zscs\n" +
  23154. //" ,0 - SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  23155. //" ,0 - SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  23156. //" FROM (SELECT gh.goodscode\n" +
  23157. //" ,gh.sapcode\n" +
  23158. //" ,u.usercode\n" +
  23159. //" ,o.orderno\n" +
  23160. //" ,bar.recyclingflag\n" +
  23161. //" ,gh.datatype\n" +
  23162. //" ,'' zscs\n" +
  23163. ////" ,g.goods_line_code zscs\n" +
  23164. //" ,CASE\n" +
  23165. //" WHEN o.orderid IS NULL\n" +
  23166. //" OR o.orderno LIKE 'HEGII%' THEN\n" +
  23167. //" ' '\n" +
  23168. //" WHEN instr(o.orderno, '/') = 0 THEN\n" +
  23169. //" to_char(o.orderno)\n" +
  23170. //" ELSE\n" +
  23171. //" to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  23172. //" END ordercode -- 销售凭证\n" +
  23173. //" ,CASE\n" +
  23174. //" WHEN o.orderid IS NULL\n" +
  23175. //" OR o.orderno LIKE 'HEGII%'\n" +
  23176. //" OR instr(o.orderno, '/') = 0 THEN\n" +
  23177. //" '0'\n" +
  23178. //" WHEN instr(o.orderno, '#') = 0 THEN\n" +
  23179. //" to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  23180. //" ELSE\n" +
  23181. //" to_char(substr(o.orderno\n" +
  23182. //" ,instr(o.orderno, '/') + 1\n" +
  23183. //" ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  23184. //" END orderitem -- 销售凭证项目\n" +
  23185. //" FROM (SELECT gch.goodscode\n" +
  23186. //" ,gch.sapcode\n" +
  23187. //" ,decode(gch.datatype, 53, 51, gch.datatype) datatype\n" +
  23188. //" ,gch.userid\n" +
  23189. //" ,gch.groutingdailydetailid\n" +
  23190. //" ,gch.otherid\n" +
  23191. //" FROM tp_pm_goodschangehistory gch\n" +
  23192. //" WHERE gch.datatype IN (51, 52, 53)\n" +
  23193. //" UNION ALL\n" +
  23194. //" SELECT gch.goodscode\n" +
  23195. //" ,gch.sapcode\n" +
  23196. //" ,52 datatype\n" +
  23197. //" ,gch.userid\n" +
  23198. //" ,gch.groutingdailydetailid\n" +
  23199. //" ,gch.goodsidafter\n" +
  23200. //" FROM tp_pm_goodschangehistory gch\n" +
  23201. //" WHERE gch.datatype = 53) gh\n" +
  23202. //" INNER JOIN tp_mst_user u\n" +
  23203. //" ON u.userid = gh.userid\n" +
  23204. //" INNER JOIN tp_pm_groutingdailydetail bar\n" +
  23205. //" ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" + fifter +
  23206. //" INNER JOIN tp_mst_goods g\n" +
  23207. //" ON g.goodsid = bar.goodsid\n" +
  23208. //" LEFT JOIN tp_pm_order o\n" +
  23209. //" ON o.orderid = gh.otherid) t\n" +
  23210. //" GROUP BY t.goodscode\n" +
  23211. //" ,t.sapcode\n" +
  23212. //" ,t.usercode\n" +
  23213. //" ,t.ordercode\n" +
  23214. //" ,t.orderitem,t.zscs) tt\n" +
  23215. //" WHERE tt.outputnum <> 0\n" +
  23216. //" OR tt.recoverynum <> 0\n" +
  23217. //" ORDER BY tt.goodscode\n" +
  23218. //" ,tt.sapcode\n" +
  23219. //" ,tt.usercode\n" +
  23220. //" ,tt.ordercode\n" +
  23221. //" ,tt.orderitem,tt.zscs";
  23222. sqlString =
  23223. "SELECT :yyyymmdd AS yyyymmdd\n" +
  23224. " ,SYSDATE AS createtime\n" +
  23225. " ,tt.goodscode\n" +
  23226. " ,tt.sapcode\n" +
  23227. " ,tt.usercode\n" +
  23228. " ,tt.ordercode\n" +
  23229. " ,tt.orderitem\n" +
  23230. " ,tt.testmouldflag\n" +
  23231. " ,tt.zscs\n" +
  23232. " ,to_char(tt.outputnum) AS outputnum\n" +
  23233. " ,to_char(tt.recoverynum) AS recoverynum\n" +
  23234. " FROM (SELECT t.goodscode\n" +
  23235. " ,t.sapcode\n" +
  23236. " ,t.usercode\n" +
  23237. " ,t.ordercode\n" +
  23238. " ,t.orderitem\n" +
  23239. " ,t.testmouldflag\n" +
  23240. " ,t.zscs\n" +
  23241. //" ,0-SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  23242. //" ,0-SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  23243. " ,0-SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum\n" +
  23244. " ,0-SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum\n" +
  23245. " FROM (SELECT bar.goodscode\n" +
  23246. //" ,gh.sapcode\n" +
  23247. //" ,u.usercode\n" +
  23248. " ,bar.materialcode sapcode\n" +
  23249. " ,gh.fhusercode usercode\n" +
  23250. " ,o.orderno\n" +
  23251. " ,bar.recyclingflag\n" +
  23252. //" ,gh.datatype\n" +
  23253. //" ,'' zscs\n" +
  23254. //" ,case when g.goods_line_type = 1 or gl.highpressureflag = '1' then 'G' else 'L' end zscs\n" +
  23255. " ,bar.testmouldflag" +
  23256. " ,decode(bar.testmouldflag,'0', '', decode(g.goods_line_code,'G','A','M','A','L','B','')) as zscs\n" +
  23257. " ,CASE\n" +
  23258. " WHEN o.orderid IS NULL\n" +
  23259. " OR o.orderno LIKE 'HEGII%' THEN\n" +
  23260. " ' '\n" +
  23261. " WHEN instr(o.orderno, '/') = 0 THEN\n" +
  23262. " to_char(o.orderno)\n" +
  23263. " ELSE\n" +
  23264. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  23265. " END ordercode -- 销售凭证\n" +
  23266. " ,CASE\n" +
  23267. " WHEN o.orderid IS NULL\n" +
  23268. " OR o.orderno LIKE 'HEGII%'\n" +
  23269. " OR instr(o.orderno, '/') = 0 THEN\n" +
  23270. " '0'\n" +
  23271. " WHEN instr(o.orderno, '#') = 0 THEN\n" +
  23272. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  23273. " ELSE\n" +
  23274. " to_char(substr(o.orderno\n" +
  23275. " ,instr(o.orderno, '/') + 1\n" +
  23276. " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  23277. " END orderitem -- 销售凭证项目\n" +
  23278. " FROM tp_pm_groutingdailydetail bar\n" +
  23279. //" INNER JOIN tp_mst_user u\n" +
  23280. //" ON u.userid = gh.userid\n" +
  23281. " INNER JOIN tp_pm_finishedproduct gh\n" +
  23282. " ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" +
  23283. //" AND bar.barcode IN (" + fifter + ")\n" +
  23284. //" INNER JOIN tp_pc_groutingline gl\n" +
  23285. //" ON gl.groutinglineid = bar.groutinglineid\n" +
  23286. " INNER JOIN tp_mst_goods g\n" +
  23287. " ON g.goodsid = bar.goodsid\n" +
  23288. " LEFT JOIN tp_pm_order o\n" +
  23289. " ON o.orderid = gh.fhorderid where 1=1 " + fifter + ") t\n" +
  23290. " GROUP BY t.goodscode\n" +
  23291. " ,t.sapcode\n" +
  23292. " ,t.usercode\n" +
  23293. " ,t.ordercode\n" +
  23294. " ,t.orderitem,t.testmouldflag,t.zscs) tt\n" +
  23295. " WHERE tt.outputnum <> 0\n" +
  23296. " OR tt.recoverynum <> 0\n" +
  23297. " ORDER BY tt.goodscode\n" +
  23298. " ,tt.sapcode\n" +
  23299. " ,tt.usercode\n" +
  23300. " ,tt.ordercode\n" +
  23301. " ,tt.orderitem,tt.zscs";
  23302. oracleParameter = new OracleParameter[]
  23303. {
  23304. new OracleParameter(":yyyymmdd", yyyymmdd)
  23305. };
  23306. DataTable workData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  23307. string logid = oracleTrConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  23308. //string msg = "撤销同步,data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" +
  23309. // dateend.ToString("yyyyMMdd-HHmm");
  23310. string msg = $"整板撤销[{logid}]:" + dtData.Rows[0]["barcode"];
  23311. sqlString = "insert into tsap_hegii_datalog\n" +
  23312. " (LogID\n" +
  23313. " ,LogType\n" +
  23314. " ,BeginTime\n" +
  23315. " ,YYYYMMDD\n" +
  23316. " ,WorkCode\n" +
  23317. " ,DataCode\n" +
  23318. " ,DataStuts\n" +
  23319. " ,DataMSG\n" +
  23320. " ,CreateUserID\n" +
  23321. " ,DataLogID)\n" +
  23322. "values\n" +
  23323. " (:LogID\n" +
  23324. " ,'2'\n" +
  23325. " ,sysdate\n" +
  23326. " ,:YYYYMMDD\n" +
  23327. " ,:WorkCode\n" +
  23328. " ,'60'\n" +
  23329. " ,'S'\n" +
  23330. " ,:DataMSG\n" +
  23331. " ,:CreateUserID\n" +
  23332. " ,:LogID)";
  23333. oracleParameter = new OracleParameter[]
  23334. {
  23335. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  23336. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  23337. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  23338. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  23339. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  23340. };
  23341. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  23342. #endregion
  23343. #region 同步条码明细(注销)
  23344. sqlString =
  23345. "select bar.yyyymmdd\n" +
  23346. " ,bar.workcode\n" +
  23347. " ,bar.barcode\n" +
  23348. " ,bar.outcode\n" +
  23349. " ,bar.goodscode\n" +
  23350. " ,bar.sapcode\n" +
  23351. " ,bar.sapflbatchno\n" +
  23352. " ,bar.sapfhundoflag\n" +
  23353. " ,bar.ordercode\n" +
  23354. " ,bar.orderitem\n" +
  23355. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  23356. //" from tsap_hegii_finishedproduct bar where 1 = 1" + fifter +
  23357. " from tsap_hegii_finishedproduct bar where ztype = 'S' " + fifter +
  23358. " order by bar.sapflbatchno, bar.barcode";
  23359. DataTable fpData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  23360. #region 注销
  23361. //// 单次传输最大条数
  23362. //int maxCount = 100000;
  23363. //List<Zppfm010> sapParameterList = new List<Zppfm010>();
  23364. //if (fpData != null && fpData.Rows.Count > 0)
  23365. //{
  23366. // int index = 0;
  23367. // //Zppfm010 sapParameter = new Zppfm010();
  23368. // //sapParameter.Zsum = maxCount;
  23369. // //sapParameter.TableIn = new Zspp110[sapParameter.Zsum];
  23370. // List<ZSPP110> tableInList = new List<ZSPP110>();
  23371. // foreach (DataRow item in fpData.Rows)
  23372. // {
  23373. // if (index >= maxCount)
  23374. // {
  23375. // Zppfm010 sapItem = new Zppfm010();
  23376. // sapItem.ZSUM = tableInList.Count;
  23377. // sapItem.TABLE_IN = tableInList.ToArray();
  23378. // sapParameterList.Add(sapItem);
  23379. // index = 0;
  23380. // tableInList.Clear();
  23381. // }
  23382. // ZSPP110 info110 = new ZSPP110();
  23383. // // 时间戳
  23384. // info110.ZSCNU = yyyymmdd;
  23385. // // 工厂
  23386. // info110.WERKS = workcode;
  23387. // // 生产条码
  23388. // info110.ZSCTM = item["barcode"].ToString();
  23389. // // 包装条码
  23390. // info110.ZBZTM = item["outcode"].ToString();
  23391. // // 产品编码
  23392. // info110.ZCPBM = item["goodscode"].ToString();
  23393. // // 物料编号
  23394. // info110.MATNR = item["sapcode"].ToString();
  23395. // // 包装整板标识
  23396. // info110.ZBZBS = item["sapflbatchno"].ToString();
  23397. // // 重新绑定标识
  23398. // info110.ZCXBD = "X";
  23399. // // 销售凭证
  23400. // info110.KDAUF = item["ordercode"].ToString();
  23401. // // 销售凭证项目
  23402. // info110.KDPOS = item["orderitem"].ToString();
  23403. // info110.UZEIT = date.ToString("HH:mm:ss");
  23404. // info110.ZCODEN = "";
  23405. // info110.ZCODEYZM = "";
  23406. // //if (info110.WERKS == "5011" && info110.ZCPBM == "K047L")
  23407. // //{
  23408. // // continue;
  23409. // //}
  23410. // tableInList.Add(info110);
  23411. // index++;
  23412. // }
  23413. // Zppfm010 sapParameter010 = new Zppfm010();
  23414. // sapParameter010.ZSUM = tableInList.Count;
  23415. // sapParameter010.TABLE_IN = tableInList.ToArray();
  23416. // sapParameterList.Add(sapParameter010);
  23417. // index = 0;
  23418. // tableInList.Clear();
  23419. //}
  23420. //else
  23421. //{
  23422. // Zppfm010 sapParameter010 = new Zppfm010();
  23423. // sapParameter010.ZSUM = 0;
  23424. // sapParameter010.TABLE_IN = new ZSPP110[sapParameter010.ZSUM];
  23425. // sapParameterList.Add(sapParameter010);
  23426. //}
  23427. ////2022年9月23日13:06:25 添加时间限制,10月1号零点整不再传输原接口产量数据
  23428. //// 当前时间
  23429. //DateTime dateTimeNow = DateTime.Now;
  23430. //DateTime setTime = new DateTime(2022, 10, 1, 0, 0, 0);
  23431. //if (dateTimeNow < setTime)
  23432. //{
  23433. // //foreach (Zppfm010 sapParameter010 in sapParameterList)
  23434. // //{
  23435. // // ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010(sapParameter010, yyyymmdd);
  23436. // // //sre.Message = result010.ZMSG;
  23437. // // sre.Message = $"{result010.ZMSG}({sapParameter010.ZSUM})";
  23438. // // sre.Result = result010.ZTYPE;
  23439. // // if (result010.TABLE_OUT != null && result010.TABLE_OUT.Length > 0)
  23440. // // {
  23441. // // // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  23442. // // //sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = nvl(:ZTYPE,'S'), ZMSG = :ZMSG where barcode=:barcode and sapflbatchno=:sapflbatchno";
  23443. // // sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = 'D', ZMSG = :ZMSG where barcode=:barcode and ztype = 'S' and sapflbatchno=:sapflbatchno";
  23444. // // foreach (ZSPP110 item in result010.TABLE_OUT)
  23445. // // {
  23446. // // oracleParameter = new OracleParameter[]
  23447. // // {
  23448. // // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  23449. // // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  23450. // // new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input),
  23451. // // new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, item.ZBZBS, ParameterDirection.Input),
  23452. // // };
  23453. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  23454. // // }
  23455. // // }
  23456. // // if (result010.ZTYPE != "S")
  23457. // // {
  23458. // // sre.Result = -2;
  23459. // // sre.Message = "同步条码失败," + result010.ZMSG;
  23460. // // return sre;
  23461. // // }
  23462. // //}
  23463. //}
  23464. //else
  23465. //{
  23466. #endregion
  23467. sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = 'D' where barcode=:barcode and ztype = 'S' and sapflbatchno=:sapflbatchno";
  23468. foreach (DataRow row in fpData.Rows)
  23469. {
  23470. oracleParameter = new OracleParameter[]
  23471. {
  23472. new OracleParameter(":barcode",OracleDbType.Varchar2, row["barcode"], ParameterDirection.Input),
  23473. new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, row["sapflbatchno"], ParameterDirection.Input),
  23474. };
  23475. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  23476. }
  23477. //}
  23478. // 删除已同步条码
  23479. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  23480. //sql = "Delete from tsap_hegii_finishedproduct bar where 1 = 1" + fifter;
  23481. //r = oracleTrConn.ExecuteNonQuery(sql);
  23482. #endregion
  23483. #region 同步产量
  23484. //Zppfm008 sapParameter = new Zppfm008();
  23485. if (workData != null && workData.Rows.Count > 0)
  23486. {
  23487. //sapParameter.ZSUM = workData.Rows.Count;
  23488. //sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  23489. sqlString = "insert into TSAP_HEGII_WorkData\n" +
  23490. " (YYYYMMDD\n" +
  23491. " ,WorkCode\n" +
  23492. " ,DataCode\n" +
  23493. " ,GoodsCode\n" +
  23494. " ,SAPCode\n" +
  23495. " ,UserCode\n" +
  23496. " ,OutputNum\n" +
  23497. " ,RECOVERYNUM\n" +
  23498. " ,ORDERCODE\n" +
  23499. " ,ORDERITEM\n" +
  23500. " ,testmouldflag\n" +
  23501. " ,zscs\n" +
  23502. " ,LogID,createtime)\n" +
  23503. "values\n" +
  23504. " ('" + yyyymmdd + "'\n" +
  23505. " ,'" + workcode + "'\n" +
  23506. " ,'60'\n" +
  23507. " ,:GoodsCode\n" +
  23508. " ,:SAPCode\n" +
  23509. " ,:UserCode\n" +
  23510. " ,:OutputNum\n" +
  23511. " ,:RECOVERYNUM\n" +
  23512. " ,:ORDERCODE\n" +
  23513. " ,:ORDERITEM\n" +
  23514. " ,:testmouldflag\n" +
  23515. " ,:zscs\n" +
  23516. " ," + logid + ",:createtime)";
  23517. int index = 0;
  23518. //DateTime now = DateTime.Now;
  23519. foreach (DataRow item in workData.Rows)
  23520. {
  23521. //ZSPP100 info100 = new ZSPP100();
  23522. //// 工厂
  23523. //info100.WERKS = workcode;
  23524. //// 型号
  23525. //info100.GROES = item["GoodsCode"].ToString();
  23526. //// 物料编号
  23527. //info100.MATNR = item["SAPCode"].ToString();
  23528. //// 生产工号
  23529. //info100.ZGHNU = item["UserCode"].ToString();
  23530. //// 数据节点
  23531. //info100.ZJDNU = "60";
  23532. //// 时间戳
  23533. //info100.ZSCNU = yyyymmdd;
  23534. //// 销售凭证
  23535. //info100.VBELN = item["ORDERCODE"].ToString().Trim();
  23536. //// 销售凭证项目
  23537. //info100.POSNR = item["ORDERITEM"].ToString();
  23538. //// 产量
  23539. //info100.ZCLNG = item["OutputNum"].ToString();
  23540. //// 损坯
  23541. //info100.ZSPNG = "0";
  23542. //// 清除
  23543. //info100.ZQCNG = "0";
  23544. //// 回收
  23545. //info100.ZHSNG = item["RECOVERYNUM"].ToString();
  23546. //// 干补
  23547. //info100.ZGBNG = "0";
  23548. //// 注浆类型 G高压 L普通 M粘接高压(三车间)
  23549. //info100.ZSCS = item["ZSCS"].ToString();
  23550. //info100.ZKSSJ = now.ToString("HHmmss");
  23551. //info100.ZJSRQ = Convert.ToDecimal(now.ToString("yyyyMMddHHmmss"));
  23552. oracleParameter = new OracleParameter[]
  23553. {
  23554. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item["GoodsCode"], ParameterDirection.Input),
  23555. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item["SAPCode"], ParameterDirection.Input),
  23556. new OracleParameter(":UserCode",OracleDbType.Varchar2, item["UserCode"], ParameterDirection.Input),
  23557. new OracleParameter(":OutputNum",OracleDbType.Varchar2, item["OutputNum"], ParameterDirection.Input),
  23558. new OracleParameter(":RECOVERYNUM",OracleDbType.Varchar2, item["RECOVERYNUM"], ParameterDirection.Input),
  23559. new OracleParameter(":ORDERCODE",OracleDbType.Varchar2, item["ORDERCODE"], ParameterDirection.Input),
  23560. new OracleParameter(":ORDERITEM",OracleDbType.Varchar2, item["ORDERITEM"], ParameterDirection.Input),
  23561. new OracleParameter(":testmouldflag",OracleDbType.Varchar2, item["TESTMOULDFLAG"], ParameterDirection.Input),
  23562. new OracleParameter(":ZSCS",OracleDbType.Varchar2, item["ZSCS"], ParameterDirection.Input),
  23563. new OracleParameter(":createtime",OracleDbType.Date, item["createtime"], ParameterDirection.Input),
  23564. };
  23565. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  23566. //sapParameter.TABLE_IN[index++] = info100;
  23567. }
  23568. }
  23569. //else
  23570. //{
  23571. // sapParameter.ZSUM = 0;
  23572. // sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  23573. //}
  23574. ////2022年9月23日13:06:25 添加时间限制,10月1号零点整不再传输原接口产量数据
  23575. //// 当前时间
  23576. //if (dateTimeNow < setTime)
  23577. //{
  23578. // //ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60");
  23579. // ////if (result.Ztype == "E")
  23580. // ////{
  23581. // //// sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
  23582. // //// oracleParameter = new OracleParameter[]
  23583. // //// {
  23584. // //// new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  23585. // //// new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  23586. // //// };
  23587. // //// r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  23588. // ////}
  23589. // ////else
  23590. // //if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  23591. // //{
  23592. // // sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  23593. // // " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  23594. // // "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  23595. // // "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  23596. // // foreach (ZSPP100 item in result.TABLE_OUT)
  23597. // // {
  23598. // // string posnr = item.POSNR.TrimStart('0');
  23599. // // oracleParameter = new OracleParameter[]
  23600. // // {
  23601. // // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  23602. // // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  23603. // // new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  23604. // // new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  23605. // // new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  23606. // // new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  23607. // // new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input),
  23608. // // };
  23609. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  23610. // // }
  23611. // // //:msg||chr(13)||DataMSG
  23612. // // result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  23613. // // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  23614. // // oracleParameter = new OracleParameter[]
  23615. // // {
  23616. // // new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  23617. // // new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  23618. // // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  23619. // // };
  23620. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  23621. // //}
  23622. // //if (result.ZTYPE != "S")
  23623. // //{
  23624. // // sre.Result = -2;
  23625. // // sre.Message = "同步产量失败," + result.ZMSG;
  23626. // // return sre;
  23627. // //}
  23628. // //sqlString =
  23629. // //"UPDATE tp_pm_groutingdailydetail bar\n" +
  23630. // //" SET bar.issync = NULL\n" +
  23631. // //" WHERE 1 = 1" + fifter;
  23632. // //r = oracleTrConn.ExecuteNonQuery(sqlString);
  23633. //}
  23634. //else {
  23635. //sqlString =
  23636. //"UPDATE tp_pm_groutingdailydetail bar\n" +
  23637. //" SET bar.issync = '1'\n" +
  23638. //" WHERE 1 = 1" + fifter;
  23639. //r = oracleTrConn.ExecuteNonQuery(sqlString);
  23640. //}
  23641. //}
  23642. #endregion
  23643. #region 调用新报工接口
  23644. workcode = "5000";
  23645. sqlString = @"
  23646. SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') AS YYYYMMDD,
  23647. SYSDATE AS CREATETIME,
  23648. TT.GOODSCODE GROES,
  23649. TT.SAPCODE MATNR,
  23650. TT.USERCODE ZGHNU,
  23651. TT.ORDERCODE VBELN,
  23652. TT.ORDERITEM POSNR,
  23653. DECODE(TT.TESTMOULDFLAG, 0, 'C', 1, 'Y', '') ZSCMS,
  23654. 'T' AS ZSCS,
  23655. TO_CHAR(TT.OUTPUTNUM) AS ZCLNG,
  23656. TO_CHAR(TT.RECOVERYNUM) AS ZHSNG,
  23657. :WORKCODE WERKS,
  23658. '60' ZJDNU,
  23659. TO_CHAR(SYSDATE, 'YYYYMMDD') ZSCNU,
  23660. TO_CHAR(SYSDATE, 'HH24MISS') ZKSSJ,
  23661. TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ,
  23662. '0' ZSPNG,
  23663. '0' ZQCNG,
  23664. '0' ZGBNG,
  23665. TO_CHAR(TT.WORKSHOP) ZSCCJ,
  23666. '0' DATACODE,
  23667. TT.CHARG
  23668. FROM (SELECT T.GOODSCODE,
  23669. T.SAPCODE,
  23670. T.USERCODE,
  23671. T.ORDERCODE,
  23672. T.ORDERITEM,
  23673. T.TESTMOULDFLAG,
  23674. T.ZSCS,
  23675. T.WORKSHOP,
  23676. T.CHARG,
  23677. 0 - SUM(DECODE(T.RECYCLINGFLAG, '1', 0, 1)) OUTPUTNUM,
  23678. 0 - SUM(DECODE(T.RECYCLINGFLAG, '0', 0, 1)) RECOVERYNUM
  23679. FROM (SELECT BAR.GOODSCODE,
  23680. BAR.MATERIALCODE SAPCODE,
  23681. GH.FHUSERCODE USERCODE,
  23682. O.ORDERNO,
  23683. BAR.RECYCLINGFLAG,
  23684. BAR.TESTMOULDFLAG,
  23685. DECODE(BAR.TESTMOULDFLAG
  23686. ,'0'
  23687. ,''
  23688. ,DECODE(G.GOODS_LINE_CODE, 'G', 'A', 'M', 'A', 'L', 'B', '')) AS ZSCS,
  23689. CASE
  23690. WHEN O.ORDERID IS NULL
  23691. OR O.ORDERNO LIKE 'HEGII%' THEN
  23692. ' '
  23693. WHEN INSTR(O.ORDERNO, '/') = 0 THEN
  23694. TO_CHAR(O.ORDERNO)
  23695. ELSE
  23696. TO_CHAR(SUBSTR(O.ORDERNO, 1, INSTR(O.ORDERNO, '/') - 1))
  23697. END ORDERCODE -- 销售凭证
  23698. ,
  23699. CASE
  23700. WHEN O.ORDERID IS NULL
  23701. OR O.ORDERNO LIKE 'HEGII%'
  23702. OR INSTR(O.ORDERNO, '/') = 0 THEN
  23703. '0'
  23704. WHEN INSTR(O.ORDERNO, '#') = 0 THEN
  23705. TO_CHAR(SUBSTR(O.ORDERNO, INSTR(O.ORDERNO, '/') + 1))
  23706. ELSE
  23707. TO_CHAR(SUBSTR(O.ORDERNO
  23708. ,INSTR(O.ORDERNO, '/') + 1
  23709. ,INSTR(O.ORDERNO, '#') - INSTR(O.ORDERNO, '/') - 1))
  23710. END ORDERITEM,
  23711. CASE
  23712. WHEN (INSTR(BAR.GROUTINGLINECODE, 'A') = 1 OR
  23713. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  23714. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  23715. 1
  23716. WHEN (INSTR(BAR.GROUTINGLINECODE, 'B') = 1 OR
  23717. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  23718. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  23719. 2
  23720. WHEN INSTR(BAR.GROUTINGLINECODE, 'C') = 1 THEN
  23721. 3
  23722. ELSE
  23723. 9
  23724. END AS WORKSHOP,
  23725. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG
  23726. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  23727. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  23728. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  23729. INNER JOIN TP_MST_GOODS G
  23730. ON G.GOODSID = BAR.GOODSID
  23731. INNER JOIN TP_MST_GOODSTYPE GT
  23732. ON GT.GOODSTYPEID = G.GOODSTYPEID
  23733. LEFT JOIN TP_PM_ORDER O
  23734. ON O.ORDERID = GH.FHORDERID
  23735. WHERE 1 = 1 " + fifter + @") T
  23736. GROUP BY T.GOODSCODE,
  23737. T.SAPCODE,
  23738. T.USERCODE,
  23739. T.ORDERCODE,
  23740. T.ORDERITEM,
  23741. T.TESTMOULDFLAG,
  23742. T.ZSCS,
  23743. T.WORKSHOP,
  23744. T.CHARG) TT
  23745. WHERE TT.OUTPUTNUM <> 0
  23746. OR TT.RECOVERYNUM <> 0
  23747. ORDER BY TT.GOODSCODE,
  23748. TT.SAPCODE,
  23749. TT.USERCODE,
  23750. TT.ORDERCODE,
  23751. TT.ORDERITEM,
  23752. TT.ZSCS,
  23753. TT.WORKSHOP,
  23754. TT.CHARG ";
  23755. oracleParameter = new OracleParameter[]
  23756. {
  23757. new OracleParameter(":WORKCODE", workcode)
  23758. };
  23759. DataTable workData5000 = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  23760. //string logid_bg = oracleTrConn.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  23761. sqlString = "insert into tsap_hegii_datalog_bg\n" +
  23762. " (LogID\n" +
  23763. " ,LogType\n" +
  23764. " ,BeginTime\n" +
  23765. " ,YYYYMMDD\n" +
  23766. " ,WorkCode\n" +
  23767. " ,DataCode\n" +
  23768. " ,DataStuts\n" +
  23769. " ,DataMSG\n" +
  23770. " ,DATALOGID\n" +
  23771. " ,EXECUTEDATEBEGIN\n" +
  23772. " ,EXECUTEDATEEND,SAPGUID)\n" +
  23773. "values\n" +
  23774. " (:LogID\n" +
  23775. " ,'2'\n" +
  23776. " ,sysdate\n" +
  23777. " ,:YYYYMMDD\n" +
  23778. " ,'5000'\n" +
  23779. " ,'60'\n" +
  23780. " ,'F'\n" +
  23781. " ,:DataMSG\n" +
  23782. " ,:LogID\n" +
  23783. " ,sysdate\n" +
  23784. " ,sysdate,sys_guid())";
  23785. oracleParameter = new OracleParameter[]
  23786. {
  23787. new OracleParameter(":LogID",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  23788. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  23789. new OracleParameter(":DataMSG",OracleDbType.Varchar2, "", ParameterDirection.Input),
  23790. };
  23791. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  23792. sqlString = "insert into TSAP_HEGII_WORKDATA_BG\n" +
  23793. " (YYYYMMDD\n" +
  23794. " ,WorkCode\n" +
  23795. " ,DataCode\n" +
  23796. " ,GoodsCode\n" +
  23797. " ,SAPCode\n" +
  23798. " ,UserCode\n" +
  23799. " ,WORKSHOP\n" +
  23800. " ,OutputNum\n" +
  23801. " ,RECOVERYNUM\n" +
  23802. " ,ORDERCODE\n" +
  23803. " ,ORDERITEM\n" +
  23804. " ,testmouldflag\n" +
  23805. " ,zscs\n" +
  23806. " ,LogID,createtime,workdataid,charg)\n" +
  23807. "values\n" +
  23808. " ('" + yyyymmdd + "'\n" +
  23809. " ,'5000'\n" +
  23810. " ,'60'\n" +
  23811. " ,:GoodsCode\n" +
  23812. " ,:SAPCode\n" +
  23813. " ,:UserCode\n" +
  23814. " ,:ZSCCJ\n" +
  23815. " ,:OutputNum\n" +
  23816. " ,:RECOVERYNUM\n" +
  23817. " ,:ORDERCODE\n" +
  23818. " ,:ORDERITEM\n" +
  23819. " ,:testmouldflag\n" +
  23820. " ,:zscs\n" +
  23821. " ," + logid_bg + ",:createtime,:workdataid,:charg)";
  23822. //DateTime now = DateTime.Now;
  23823. foreach (DataRow item in workData5000.Rows)
  23824. {
  23825. string workdataid = oracleTrConn.GetSqlResultToStr("select SEQ_HEGII_WORKDATA_BG.Nextval from dual");
  23826. oracleParameter = new OracleParameter[]
  23827. {
  23828. new OracleParameter(":GoodsCode", item["GROES"].ToString()),
  23829. new OracleParameter(":SAPCode", item["MATNR"].ToString()),
  23830. new OracleParameter(":UserCode", item["ZGHNU"].ToString()),
  23831. new OracleParameter(":ZSCCJ", item["ZSCCJ"].ToString()),
  23832. new OracleParameter(":OutputNum", item["ZCLNG"].ToString()),
  23833. new OracleParameter(":RECOVERYNUM", item["ZHSNG"].ToString()),
  23834. new OracleParameter(":ORDERCODE", item["VBELN"].ToString()),
  23835. new OracleParameter(":ORDERITEM", item["POSNR"].ToString()),
  23836. new OracleParameter(":testmouldflag", item["ZSCMS"].ToString()),
  23837. new OracleParameter(":zscs", item["ZSCS"].ToString()),
  23838. new OracleParameter(":createtime", OracleDbType.Date,item["createtime"], ParameterDirection.Input),
  23839. new OracleParameter(":workdataid", workdataid),
  23840. new OracleParameter(":charg", item["CHARG"].ToString()),
  23841. };
  23842. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  23843. }
  23844. sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" +
  23845. " ,TO_CHAR(5000) WERKS\n" +
  23846. " ,TO_CHAR(wd.goodscode) GROES\n" +
  23847. " ,TO_CHAR(wd.sapcode) MATNR\n" +
  23848. " ,TO_CHAR(wd.usercode) ZGHNU\n" +
  23849. " ,TO_CHAR(wd.datacode) ZJDNU\n" +
  23850. " ,to_char(wd.createtime, 'YYYYMMDD' ) ZSCNU\n" +
  23851. " ,to_char(wd.createtime, 'HH24MISS' ) ZKSSJ\n" +
  23852. " ,to_char(wd.createtime, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" +
  23853. " ,TO_CHAR(wd.ordercode) VBELN\n" +
  23854. " ,TO_CHAR(wd.orderitem) POSNR\n" +
  23855. " ,TO_CHAR(wd.outputnum) ZCLNG\n" +
  23856. " ,TO_CHAR(wd.scrapnum) ZSPNG\n" +
  23857. " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" +
  23858. " ,TO_CHAR(wd.recoverynum) ZHSNG\n" +
  23859. " ,TO_CHAR(wd.repairnum) ZGBNG\n" +
  23860. " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" +
  23861. " -- ,TO_CHAR(wd.zscs) zscs\n" +
  23862. " ,'T' AS zscs\n" +
  23863. " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" +
  23864. " ,WD.CHARG\n" +
  23865. " ,TO_CHAR(60) datacode\n" +
  23866. " ,'5000' || WD.CHARG || LPAD(DL.LOGID, 10,'0') AS ZID\n" +
  23867. " FROM tsap_hegii_workdata_bg wd\n" +
  23868. " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" +
  23869. " ON wd.LOGID = DL.LOGID \n" +
  23870. " WHERE wd.logid = :logid";
  23871. OracleParameter[] par = null;
  23872. par = new OracleParameter[]
  23873. {
  23874. new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  23875. };
  23876. DataTable dtt = oracleTrConn.GetSqlResultToDt(sqlString, par);
  23877. int num = dtt.Rows.Count;
  23878. // 报工子表
  23879. sqlString = @"
  23880. SELECT '5000' || WD.CHARG || LPAD(WD.LOGID, 10, '0') AS ZID,
  23881. TO_CHAR(5000) WERKS,
  23882. WD.SAPCODE AS MATNR,
  23883. TO_CHAR(WD.DATACODE) ZJDNU,
  23884. 'T' AS ZSCS,
  23885. TO_CHAR(WD.WORKSHOP) ZSCCJ,
  23886. TO_CHAR(WD.TESTMOULDFLAG) ZSCMS,
  23887. TO_CHAR(WD.CREATETIME, 'YYYYMMDD') ZSCNU,
  23888. TO_CHAR(WD.CREATETIME, 'HH24MISS') ZKSSJ,
  23889. TO_CHAR(WD.USERCODE) ZGHNU,
  23890. TO_CHAR(WD.GOODSCODE) GROES,
  23891. TO_CHAR(ROWNUM) AS POSNR,
  23892. T2.IDNRK,
  23893. TO_CHAR(T2.MENGE) AS MENGE,
  23894. T2.MEINS,
  23895. T2.IDNRKCHARG AS CHARG,
  23896. T2.LGORT
  23897. FROM TSAP_HEGII_WORKDATA_BG WD
  23898. INNER JOIN (SELECT T.GOODSCODE,
  23899. T.SAPCODE,
  23900. T.USERCODE,
  23901. DECODE(T.TESTMOULDFLAG, 0, 'C', 1, 'Y', '') ZSCMS,
  23902. T.WORKSHOP,
  23903. T.CHARG,
  23904. T.IDNRK,
  23905. T.MEINS,
  23906. T.IDNRKCHARG,
  23907. T.LGORT,
  23908. SUM(T.MENGE) AS MENGE
  23909. FROM (SELECT BAR.GOODSCODE,
  23910. BAR.MATERIALCODE AS SAPCODE,
  23911. GH.FHUSERCODE AS USERCODE,
  23912. BAR.RECYCLINGFLAG,
  23913. BAR.TESTMOULDFLAG,
  23914. CASE
  23915. WHEN (INSTR(BAR.GROUTINGLINECODE, 'A') = 1 OR
  23916. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  23917. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  23918. 1
  23919. WHEN (INSTR(BAR.GROUTINGLINECODE, 'B') = 1 OR
  23920. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  23921. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  23922. 2
  23923. WHEN INSTR(BAR.GROUTINGLINECODE, 'C') = 1 THEN
  23924. 3
  23925. ELSE
  23926. 9
  23927. END AS WORKSHOP,
  23928. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG,
  23929. BI.IDNRK,
  23930. BI.MEINS,
  23931. NVL(BI.CHARG, '') AS IDNRKCHARG,
  23932. BI.LGORT,
  23933. -BI.MENGE AS MENGE
  23934. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  23935. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  23936. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  23937. INNER JOIN TP_PM_BARCODEIDNRKREL BI
  23938. ON BI.BARCODE = GH.BARCODE
  23939. INNER JOIN TP_MST_GOODS G
  23940. ON G.GOODSID = BAR.GOODSID
  23941. INNER JOIN TP_MST_GOODSTYPE GT
  23942. ON GT.GOODSTYPEID = G.GOODSTYPEID
  23943. WHERE 1 = 1 " + fifter + @") T
  23944. GROUP BY T.GOODSCODE,
  23945. T.SAPCODE,
  23946. T.USERCODE,
  23947. T.TESTMOULDFLAG,
  23948. T.WORKSHOP,
  23949. T.CHARG,
  23950. T.IDNRK,
  23951. T.MEINS,
  23952. T.IDNRKCHARG,
  23953. T.LGORT) T2
  23954. ON WD.SAPCODE = T2.SAPCODE
  23955. AND WD.WORKSHOP = T2.WORKSHOP
  23956. AND WD.TESTMOULDFLAG = T2.ZSCMS
  23957. AND WD.USERCODE = T2.USERCODE
  23958. AND WD.GOODSCODE = T2.GOODSCODE
  23959. AND WD.CHARG = T2.CHARG
  23960. WHERE WD.LOGID = :logid";
  23961. par = new OracleParameter[]
  23962. {
  23963. new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  23964. };
  23965. DataTable dtDetail = oracleTrConn.GetSqlResultToDt(sqlString, par);
  23966. //string sq = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  23967. //string SAP_ING_NEW = oracleTrConn.GetSqlResultToStr(sq);
  23968. //if (true)
  23969. //{
  23970. // 调用SAP接口
  23971. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(dtt)) + "}"
  23972. + ",\"TABLE_IN1\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAPDetail>.ConvertToModel(dtDetail)) + "}}";
  23973. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  23974. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  23975. //string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  23976. string result = string.Empty;
  23977. try
  23978. {
  23979. result = SAPDataLogic.PostData(url030, postString, "POST");
  23980. }
  23981. catch (Exception ex)
  23982. {
  23983. sre.Result = -2;
  23984. sre.Message = "sap030接口同步失败," + ex.Message;
  23985. return sre;
  23986. }
  23987. if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0)
  23988. {
  23989. sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid_bg +
  23990. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  23991. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  23992. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  23993. Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  23994. object TABLE_OUT;
  23995. obj.TryGetValue("TABLE_OUT", out TABLE_OUT);
  23996. obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(TABLE_OUT + "");
  23997. object item1;
  23998. obj.TryGetValue("item", out item1);
  23999. JArray arr = JArray.FromObject(item1);
  24000. foreach (JObject item60 in arr)
  24001. {
  24002. string posnr = item60["POSNR"].ToString().TrimStart('0');
  24003. oracleParameter = new OracleParameter[]
  24004. {
  24005. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item60["ZTYPE"].ToString(), ParameterDirection.Input),
  24006. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item60["ZMSG"].ToString(), ParameterDirection.Input),
  24007. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item60["GROES"].ToString(), ParameterDirection.Input),
  24008. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item60["MATNR"].ToString(), ParameterDirection.Input),
  24009. new OracleParameter(":UserCode",OracleDbType.Varchar2, item60["ZGHNU"].ToString(), ParameterDirection.Input),
  24010. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item60["VBELN"].ToString()) ? " " : item60["VBELN"].ToString()), ParameterDirection.Input),
  24011. new OracleParameter(":Orderitem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  24012. };
  24013. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  24014. }
  24015. //:msg||chr(13)||DataMSG
  24016. JObject.Parse(result)["ZMSG"] = $"{JObject.Parse(result)["ZMSG"]}({num})";
  24017. sqlString = "update tsap_hegii_datalog_bg t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  24018. oracleParameter = new OracleParameter[]
  24019. {
  24020. new OracleParameter(":DataStuts",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  24021. new OracleParameter(":msg",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  24022. new OracleParameter(":logid",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  24023. };
  24024. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  24025. }
  24026. if (JObject.Parse(result)["ZTYPE"].ToString() != "S")
  24027. {
  24028. sre.Result = -2;
  24029. sre.Message = "同步产量失败," + JObject.Parse(result)["ZMSG"].ToString();
  24030. return sre;
  24031. }
  24032. #endregion
  24033. #endregion
  24034. #region 产成品交接撤销
  24035. // 本批交接的批次号
  24036. for (int i = 0; i < dtData.Rows.Count; i++)
  24037. {
  24038. #region 查询产品相关信息
  24039. // 撤销记录
  24040. sql = "INSERT INTO TP_PM_FHUndo\n" +
  24041. " (GroutingDailyDetailID\n" +
  24042. " ,GoodsLevelTypeID\n" +
  24043. " ,FHUserID\n" +
  24044. " ,FHUserCode\n" +
  24045. " ,FHBatchNo\n" +
  24046. " ,FHTime\n" +
  24047. " ,FHOrderID\n" +
  24048. " ,OnlyCode\n" +
  24049. " ,FINISHEDLOADBATCHNO\n" +
  24050. " ,AccountID\n" +
  24051. " ,CreateUserID)\n" +
  24052. " SELECT t.groutingdailydetailid\n" +
  24053. " ,t.GoodsLevelTypeID\n" +
  24054. " ,t.fhuserid\n" +
  24055. " ,t.fhusercode\n" +
  24056. " ,t.fhbatchno\n" +
  24057. " ,t.fhtime\n" +
  24058. " ,t.FHOrderID\n" +
  24059. " ,t.onlycode\n" +
  24060. " ,t.FINISHEDLOADBATCHNO\n" +
  24061. " ,t.AccountID\n" +
  24062. " ,:UpdateUserID\n" +
  24063. " FROM TP_PM_FinishedProduct t\n" +
  24064. " WHERE t.barcode = :BarCode";
  24065. Paras = new OracleParameter[]
  24066. {
  24067. new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
  24068. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  24069. };
  24070. int resultRow = oracleTrConn.ExecuteNonQuery(sql, Paras);
  24071. // SAP同步后再成品交接撤销的,记录撤销标识
  24072. string sapsql = null;
  24073. //string sapsql = "select count(*) from tsap_hegii_FinishedProduct t where t.barcode = :BarCode and ztype='S' and rownum=1 ";
  24074. OracleParameter[] sapparas = new OracleParameter[]
  24075. {
  24076. new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
  24077. };
  24078. //int sapcount = Convert.ToInt32(oracleTrConn.GetSqlResultToObj(sapsql, sapparas));
  24079. //if (sapcount > 0)
  24080. {
  24081. sapsql = "update tp_pm_groutingdailydetail set SAPFHUndoFlag = '1' where barcode=:BarCode";
  24082. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  24083. }
  24084. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  24085. //sapsql = "update tsap_hegii_FinishedProduct set ztype = 'D' where barcode=:BarCode and (ztype is null or ztype not in ('S','D'))";
  24086. //sapsql = "update tsap_hegii_FinishedProduct set ztype = 'D' where barcode=:BarCode and (ztype is null or ztype = 'S')";
  24087. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  24088. sql = @"Update TP_PM_FinishedProduct
  24089. set FHUserID=null,
  24090. FHUserCode=null,
  24091. FHBatchNo=null,
  24092. FHTime=null,
  24093. FHOrderID=null,
  24094. --FINISHEDLOADBATCHNO=null,
  24095. UpdateUserID=:UpdateUserID
  24096. where BarCode=:BarCode";
  24097. resultRow = oracleTrConn.ExecuteNonQuery(sql, Paras);
  24098. #endregion
  24099. }
  24100. #endregion
  24101. #region 同步WMS系统
  24102. if (fpData.Rows.Count > 0)
  24103. {
  24104. DateTime now = DateTime.Now;
  24105. string message = WMSDataLogic.BackPushWMS(fpData, now);
  24106. // 同步日志
  24107. sqlString = @"
  24108. INSERT INTO TP_WMS_LOG
  24109. (LOGTYPE,
  24110. SPS,
  24111. SKU,
  24112. SERIALNO,
  24113. ADDDAY,
  24114. ADDTIME,
  24115. CODEI,
  24116. UDF1,
  24117. UDF2,
  24118. LPN,
  24119. RETURNDESC,
  24120. ACCOUNTID,
  24121. CREATETIME,
  24122. UPDATETIME,
  24123. CREATEUSERID,
  24124. UPDATEUSERID)
  24125. VALUES
  24126. (:LOGTYPE,
  24127. :SPS,
  24128. :SKU,
  24129. :SERIALNO,
  24130. :ADDDAY,
  24131. :ADDTIME,
  24132. :CODEI,
  24133. :UDF1,
  24134. :UDF2,
  24135. :LPN,
  24136. :RETURNDESC,
  24137. :ACCOUNTID,
  24138. :CREATETIME,
  24139. :CREATETIME,
  24140. :USERID,
  24141. :USERID) ";
  24142. string orderitem;
  24143. foreach (DataRow row in fpData.Rows)
  24144. {
  24145. orderitem = row["orderitem"] + "";
  24146. if (string.IsNullOrEmpty(orderitem) || "0".Equals(orderitem))
  24147. {
  24148. orderitem = "000000";
  24149. }
  24150. oracleParameter = new OracleParameter[]
  24151. {
  24152. new OracleParameter(":LOGTYPE",OracleDbType.Int32, 2, ParameterDirection.Input),
  24153. new OracleParameter(":SPS",OracleDbType.Varchar2, "5020", ParameterDirection.Input),
  24154. new OracleParameter(":SKU",OracleDbType.Varchar2, row["sapcode"], ParameterDirection.Input),
  24155. new OracleParameter(":SERIALNO",OracleDbType.Varchar2, row["outcode"], ParameterDirection.Input),
  24156. new OracleParameter(":ADDDAY",OracleDbType.Varchar2, now.ToString("yyyyMMdd"), ParameterDirection.Input),
  24157. new OracleParameter(":ADDTIME",OracleDbType.Varchar2, now.ToString("HHmmss"), ParameterDirection.Input),
  24158. new OracleParameter(":CODEI",OracleDbType.Varchar2, row["barcode"], ParameterDirection.Input),
  24159. new OracleParameter(":UDF1",OracleDbType.Varchar2, row["ordercode"], ParameterDirection.Input),
  24160. new OracleParameter(":UDF2",OracleDbType.Varchar2, orderitem, ParameterDirection.Input),
  24161. new OracleParameter(":LPN",OracleDbType.Varchar2, row["sapflbatchno"], ParameterDirection.Input),
  24162. new OracleParameter(":RETURNDESC",OracleDbType.Varchar2, message, ParameterDirection.Input),
  24163. new OracleParameter(":ACCOUNTID",OracleDbType.Varchar2, sUserInfo.AccountID, ParameterDirection.Input),
  24164. new OracleParameter(":CREATETIME",OracleDbType.Date, now, ParameterDirection.Input),
  24165. new OracleParameter(":USERID",OracleDbType.Varchar2, sUserInfo.UserID, ParameterDirection.Input),
  24166. };
  24167. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  24168. }
  24169. sqlString =
  24170. "UPDATE tp_pm_groutingdailydetail bar\n" +
  24171. " SET bar.issync = NULL\n" +
  24172. " WHERE 1 = 1" + fifter;
  24173. r = oracleTrConn.ExecuteNonQuery(sqlString);
  24174. }
  24175. #endregion
  24176. #region 回收包材库库存
  24177. sqlString =
  24178. "SELECT 1\n" +
  24179. " FROM tp_pm_groutingdailydetail bar\n" +
  24180. " WHERE bar.packingby3 = '1' " + fifter;
  24181. isExists = oracleTrConn.GetSqlResultToObj(sqlString);
  24182. if (isExists != null)
  24183. {
  24184. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  24185. string packingURL = ini.ReadIniData("SAP_HEGII", "PackingURL");
  24186. foreach (DataRow row in workData.Rows)
  24187. {
  24188. string url = packingURL + row["sapcode"] + "&num=" + row["outputnum"];
  24189. WebRequest req = WebRequest.Create(url);
  24190. req.Method = "GET";
  24191. Stream stream = req.GetResponse().GetResponseStream();
  24192. StreamReader reader = new StreamReader(stream);
  24193. JObject json = JObject.Parse(reader.ReadToEnd());
  24194. // 包材库失败暂时不处理 TODO
  24195. if (json["success"].ToString() == "false")
  24196. {
  24197. //sre.Result = -2;
  24198. //sre.Message = json["message"].ToString();
  24199. //return sre;
  24200. }
  24201. }
  24202. }
  24203. #endregion
  24204. sre.Result = 1;
  24205. oracleTrConn.Commit();
  24206. oracleTrConn.Disconnect();
  24207. return sre;
  24208. }
  24209. catch (Exception ex)
  24210. {
  24211. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  24212. {
  24213. oracleTrConn.Rollback();
  24214. oracleTrConn.Disconnect();
  24215. }
  24216. throw ex;
  24217. }
  24218. finally
  24219. {
  24220. if (oracleTrConn.ConnState == ConnectionState.Open)
  24221. {
  24222. oracleTrConn.Disconnect();
  24223. }
  24224. }
  24225. }
  24226. #endregion
  24227. /// <summary>
  24228. /// 撤销产成品交接
  24229. /// </summary>
  24230. /// <param name="barcode"></param>
  24231. /// <param name="sUserInfo"></param>
  24232. /// <returns></returns>
  24233. public static ServiceResultEntity SaveCancelFinishedHandoverByBarcode(string barcode, SUserInfo sUserInfo)
  24234. {
  24235. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  24236. try
  24237. {
  24238. ServiceResultEntity resultEntity = new ServiceResultEntity();
  24239. // 1.判断产品是否在产成品表中
  24240. string sql = @"select
  24241. FHUserID,
  24242. FHUserCode,
  24243. GoodsID,
  24244. GoodsCode,
  24245. GoodsName
  24246. from TP_PM_FinishedProduct
  24247. where BarCode=:BarCode";
  24248. OracleParameter[] paras = new OracleParameter[]{
  24249. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  24250. };
  24251. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  24252. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  24253. {
  24254. // 在产成品表中
  24255. #region 是否交接过
  24256. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  24257. if (string.IsNullOrEmpty(fhUserCode))
  24258. {
  24259. resultEntity.Result = -1; //未交接,不能撤销
  24260. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  24261. return resultEntity;
  24262. }
  24263. #endregion
  24264. }
  24265. else
  24266. {
  24267. resultEntity.Result = -2; //不能产成品,不能撤销
  24268. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  24269. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  24270. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  24271. {
  24272. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  24273. }
  24274. else
  24275. {
  24276. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  24277. }
  24278. return resultEntity;
  24279. }
  24280. #region 查询产品相关信息
  24281. // 撤销记录
  24282. string sqlString = "INSERT INTO TP_PM_FHUndo\n" +
  24283. " (GroutingDailyDetailID\n" +
  24284. " ,GoodsLevelTypeID\n" +
  24285. " ,FHUserID\n" +
  24286. " ,FHUserCode\n" +
  24287. " ,FHBatchNo\n" +
  24288. " ,FHTime\n" +
  24289. " ,FHOrderID\n" +
  24290. " ,OnlyCode\n" +
  24291. " ,FINISHEDLOADBATCHNO\n" +
  24292. " ,AccountID\n" +
  24293. " ,CreateUserID)\n" +
  24294. " SELECT t.groutingdailydetailid\n" +
  24295. " ,t.GoodsLevelTypeID\n" +
  24296. " ,t.fhuserid\n" +
  24297. " ,t.fhusercode\n" +
  24298. " ,t.fhbatchno\n" +
  24299. " ,t.fhtime\n" +
  24300. " ,t.FHOrderID\n" +
  24301. " ,t.onlycode\n" +
  24302. " ,t.FINISHEDLOADBATCHNO\n" +
  24303. " ,t.AccountID\n" +
  24304. " ,:UpdateUserID\n" +
  24305. " FROM TP_PM_FinishedProduct t\n" +
  24306. " WHERE t.barcode = :BarCode";
  24307. paras = new OracleParameter[]{
  24308. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  24309. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  24310. };
  24311. int resultRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  24312. // SAP同步后再成品交接撤销的,记录撤销标识
  24313. string sapsql = "select count(*) from tsap_hegii_FinishedProduct t where t.barcode = :BarCode and ztype='S' and rownum=1 ";
  24314. OracleParameter[] sapparas = new OracleParameter[]{
  24315. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  24316. };
  24317. int sapcount = Convert.ToInt32(oracleTrConn.GetSqlResultToObj(sapsql, sapparas));
  24318. if (sapcount > 0)
  24319. {
  24320. sapsql = "update tp_pm_groutingdailydetail set SAPFHUndoFlag = '1' where barcode=:BarCode";
  24321. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  24322. }
  24323. sapsql = "update tsap_hegii_FinishedProduct set ztype = 'D' where barcode=:BarCode and (ztype is null or ztype not in ('S','D'))";
  24324. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  24325. sql = @"Update TP_PM_FinishedProduct
  24326. set FHUserID=null,
  24327. FHUserCode=null,
  24328. FHBatchNo=null,
  24329. FHTime=null,
  24330. FHOrderID=null,FINISHEDLOADBATCHNO=null,
  24331. UpdateUserID=:UpdateUserID
  24332. where BarCode=:BarCode";
  24333. resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  24334. if (resultRow == 0)
  24335. {
  24336. oracleTrConn.Rollback();
  24337. oracleTrConn.Disconnect();
  24338. }
  24339. else
  24340. {
  24341. resultEntity.Result = 1;
  24342. oracleTrConn.Commit();
  24343. oracleTrConn.Disconnect();
  24344. }
  24345. #endregion
  24346. return resultEntity;
  24347. }
  24348. catch (Exception ex)
  24349. {
  24350. throw ex;
  24351. }
  24352. }
  24353. /// <summary>
  24354. /// 更改产成品交接订单号
  24355. /// </summary>
  24356. /// <param name="barcode"></param>
  24357. /// <param name="orderid"></param>
  24358. /// <param name="sUserInfo"></param>
  24359. /// <returns></returns>
  24360. public static ServiceResultEntity SaveChangeFinishedHandoverByBarcode(string barcode, int orderid, SUserInfo sUserInfo)
  24361. {
  24362. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  24363. try
  24364. {
  24365. ServiceResultEntity resultEntity = new ServiceResultEntity();
  24366. // 1.判断产品是否在产成品表中
  24367. string sql = @"select
  24368. FHUserID,
  24369. FHUserCode,
  24370. GoodsID,
  24371. GoodsCode,
  24372. GoodsName
  24373. from TP_PM_FinishedProduct
  24374. where BarCode=:BarCode";
  24375. OracleParameter[] paras = new OracleParameter[]{
  24376. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  24377. };
  24378. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  24379. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  24380. {
  24381. // 在产成品表中
  24382. #region 是否交接过
  24383. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  24384. if (string.IsNullOrEmpty(fhUserCode))
  24385. {
  24386. resultEntity.Result = -1; //未交接,不能撤销
  24387. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  24388. return resultEntity;
  24389. }
  24390. #endregion
  24391. }
  24392. else
  24393. {
  24394. resultEntity.Result = -2; //不能产成品,不能撤销
  24395. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  24396. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  24397. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  24398. {
  24399. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  24400. }
  24401. else
  24402. {
  24403. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  24404. }
  24405. return resultEntity;
  24406. }
  24407. #region 查询产品相关信息
  24408. sql = @"Update TP_PM_FinishedProduct
  24409. set
  24410. FHOrderID=:FHOrderID,
  24411. UpdateUserID=:UpdateUserID
  24412. where BarCode=:BarCode";
  24413. paras = new OracleParameter[]{
  24414. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  24415. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  24416. new OracleParameter(":FHOrderID",OracleDbType.Int32,orderid,ParameterDirection.Input),
  24417. };
  24418. int resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  24419. if (resultRow == 0)
  24420. {
  24421. oracleTrConn.Rollback();
  24422. oracleTrConn.Disconnect();
  24423. }
  24424. else
  24425. {
  24426. resultEntity.Result = 1;
  24427. oracleTrConn.Commit();
  24428. oracleTrConn.Disconnect();
  24429. }
  24430. #endregion
  24431. return resultEntity;
  24432. }
  24433. catch (Exception ex)
  24434. {
  24435. throw ex;
  24436. }
  24437. }
  24438. /// <summary>
  24439. /// 回收标准计件
  24440. /// </summary>
  24441. /// <param name="oracleTrConn">数据连接对象</param>
  24442. /// <param name="procedure">工序对象</param>
  24443. /// <param name="barcodeTable">条码信息</param>
  24444. /// <param name="sUserInfo">用户基本信息</param>
  24445. /// <param name="goodsID">返回的产品ID</param>
  24446. /// <param name="goodsCode">返回的产品Code</param>
  24447. /// <param name="goodsName">返回的产品名称</param>
  24448. /// <param name="groutingUserID">返回的注浆者ID</param>
  24449. /// <returns>string</returns>
  24450. /// <remarks>
  24451. /// 王鑫 2017.7.20 新建
  24452. /// </remarks>
  24453. private static string AddRecydingFlagWorkPiece(IDBTransaction oracleTrConn,
  24454. ProcedureEntity procedure,
  24455. DataTable barcodeTable,
  24456. SUserInfo sUserInfo,
  24457. out int goodsID,
  24458. out string goodsCode,
  24459. out string goodsName,
  24460. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  24461. {
  24462. try
  24463. {
  24464. int deleteRow = 0;
  24465. goodsID = Constant.INT_IS_ZERO;
  24466. goodsCode = null;
  24467. goodsName = null;
  24468. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  24469. // 获得账务日期
  24470. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  24471. string errMsg = string.Empty;
  24472. // 本批采集的批次号
  24473. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  24474. // 条码信息
  24475. string logoName_Temp = "";
  24476. string logoCode_Temp = "";
  24477. string groutingdate_Temp = "";
  24478. foreach (DataRow barcodeRow in barcodeTable.Rows)
  24479. {
  24480. // 条码
  24481. string barcode = barcodeRow["Barcode"].ToString();
  24482. if (string.IsNullOrEmpty(barcode))
  24483. {
  24484. throw new Exception("传入的条码号为空");
  24485. }
  24486. // 生产工号
  24487. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  24488. // 生产工号
  24489. string workUserCode = barcodeRow["UserCode"].ToString();
  24490. //#region 校验条码有效性
  24491. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  24492. //if (!string.IsNullOrEmpty(errMsg))
  24493. //{
  24494. // return errMsg;
  24495. //}
  24496. //#endregion
  24497. if (procedure.CollectType == 1)
  24498. {
  24499. #region 校验条码有效性
  24500. errMsg = CheckRecyclingFlagBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  24501. if (!string.IsNullOrEmpty(errMsg))
  24502. {
  24503. logoName = "";
  24504. logoCode = "";
  24505. groutingdate = "";
  24506. return errMsg;
  24507. }
  24508. #endregion
  24509. }
  24510. else
  24511. {
  24512. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  24513. tp_pm_groutingdailydetail.goodscode,
  24514. tp_pm_groutingdailydetail.goodsname,
  24515. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  24516. tp_pm_groutingdailydetail.groutingdate,
  24517. tp_mst_logo.logoid,
  24518. tp_mst_logo.logocode,
  24519. tp_mst_logo.logoname
  24520. from tp_pm_groutingdailydetail
  24521. left join tp_mst_logo
  24522. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  24523. where tp_pm_groutingdailydetail.barcode=:barcode
  24524. ";
  24525. OracleParameter[] paras = new OracleParameter[] {
  24526. new OracleParameter(":barcode",barcode),
  24527. };
  24528. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  24529. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  24530. {
  24531. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  24532. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  24533. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  24534. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  24535. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  24536. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  24537. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  24538. logoName_Temp = logoName;
  24539. logoCode_Temp = logoCode;
  24540. groutingdate_Temp = groutingdate;
  24541. }
  24542. }
  24543. #region 数据处理
  24544. #region 处理废弃数据并转回收数据为在产数据
  24545. //////string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  24546. //////OracleParameter[] queryparas = new OracleParameter[]{
  24547. ////// new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  24548. //////};
  24549. //////DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  24550. //////if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  24551. //////{
  24552. ////// errMsg = "未设定干补等级";
  24553. ////// logoName = "";
  24554. ////// logoCode = "";
  24555. ////// groutingdate = "";
  24556. ////// return errMsg;
  24557. //////}
  24558. //////string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  24559. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  24560. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  24561. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  24562. UpdateUserID=:UpdateUserID
  24563. where BarCode=:barcode
  24564. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  24565. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  24566. */
  24567. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  24568. ////// string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  24569. ////// SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  24570. ////// UpdateUserID=:UpdateUserID
  24571. ////// where BarCode=:barcode
  24572. ////// and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  24573. ////// and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  24574. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set RecyclingFlag=1,
  24575. UpdateUserID=:UpdateUserID,RecyclingUserID=:RecyclingUserID,RecyclingUserCode=:RecyclingUserCode,
  24576. RecyclingTime=sysdate
  24577. where BarCode=:barcode
  24578. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode and ValueFlag=1)
  24579. and ValueFlag=1 ";
  24580. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  24581. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  24582. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  24583. new OracleParameter(":RecyclingUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  24584. new OracleParameter(":RecyclingUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  24585. };
  24586. oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  24587. string sqlUpdateGROUTString = @"update TP_PM_GROUTINGDAILYDETAIL set RecyclingFlag=1,
  24588. UpdateUserID=:UpdateUserID
  24589. where BarCode=:barcode ";
  24590. OracleParameter[] GROUTparas = new OracleParameter[]{
  24591. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  24592. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  24593. };
  24594. oracleTrConn.ExecuteNonQuery(sqlUpdateGROUTString, GROUTparas);
  24595. //modify wangx 20150623
  24596. //////OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  24597. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  24598. //////};
  24599. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  24600. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  24601. //////string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  24602. //////oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  24603. //modify wangx 20150623 end
  24604. #region
  24605. //第五步,插入回收工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  24606. // 查询新插入的生产数据ID
  24607. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  24608. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  24609. int productionDataID = 0;
  24610. if (!string.IsNullOrEmpty(idStr))
  24611. {
  24612. productionDataID = int.Parse(idStr);
  24613. }
  24614. else
  24615. {
  24616. logoName = "";
  24617. logoCode = "";
  24618. groutingdate = "";
  24619. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  24620. }
  24621. int? ClassesSettingID = null;//班次配置ID
  24622. #region 第五步 添加生产者数据
  24623. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  24624. if (!string.IsNullOrEmpty(errMsg))
  24625. {
  24626. logoName = "";
  24627. logoCode = "";
  24628. groutingdate = "";
  24629. return errMsg;
  24630. }
  24631. #endregion
  24632. ProductionDataEntity productionData = new ProductionDataEntity();
  24633. #region 属性赋值
  24634. productionData.ClassesSettingID = ClassesSettingID;
  24635. productionData.ProductionDataID = Convert.ToInt32(idStr);
  24636. productionData.Barcode = barcode;
  24637. productionData.CentralizedBatchNo = centralizedBatchNo;
  24638. productionData.ProductionLineID = procedure.ProductionLineID;
  24639. productionData.ProductionLineCode = procedure.ProductionlineCode;
  24640. productionData.ProductionLineName = procedure.ProductionlineName;
  24641. productionData.CompleteProcedureID = procedure.ProcedureID;
  24642. productionData.ProcedureCode = procedure.ProcedureCode;
  24643. productionData.ProcedureName = procedure.ProcedureName;
  24644. productionData.ProcedureModel = procedure.ProcedureModel;
  24645. productionData.ModelType = procedure.ModelType;
  24646. productionData.NodeType = procedure.NodeType;
  24647. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  24648. productionData.ReworkProcedureID = null;
  24649. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  24650. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  24651. //设置干补标识,产品分级类别=9干补
  24652. ////productionData.GoodsLevelTypeID = 9;
  24653. //productionData.GoodsLevelID = int.Parse(goodsLevelID);
  24654. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  24655. productionData.OrganizationID = procedure.OrganizationID;
  24656. productionData.GoodsID = goodsID;
  24657. productionData.GoodsCode = goodsCode;
  24658. productionData.GoodsName = goodsName;
  24659. productionData.UserID = workUserID;
  24660. productionData.UserCode = barcodeRow["UserCode"].ToString();
  24661. productionData.UserName = barcodeRow["UserName"].ToString();
  24662. productionData.PieceType = procedure.PieceType;
  24663. if (barcodeRow["LogoID"].ToString() != "")
  24664. {
  24665. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  24666. }
  24667. string sqlReFire = @"select
  24668. isrefire,
  24669. logoid,GoodsLevelID,GoodsLevelTypeID
  24670. from tp_pm_inproduction where barcode=:barcode
  24671. union
  24672. select
  24673. isrefire,
  24674. logoid,GoodsLevelID,GoodsLevelTypeID
  24675. from TP_PM_InProductionTrash where barcode=:barcode
  24676. union
  24677. select
  24678. isrefire,
  24679. logoid,GoodsLevelID,GoodsLevelTypeID
  24680. from TP_PM_FinishedProduct where barcode=:barcode ";
  24681. OracleParameter[] ReFireparas = new OracleParameter[] {
  24682. new OracleParameter(":barcode",barcode),
  24683. };
  24684. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  24685. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  24686. {
  24687. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  24688. {
  24689. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  24690. }
  24691. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  24692. {
  24693. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  24694. }
  24695. if (dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"].ToString() != string.Empty)
  24696. {
  24697. productionData.GoodsLevelTypeID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  24698. productionData.GoodsLevelID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelID"]);
  24699. }
  24700. }
  24701. #endregion 属性赋值
  24702. productionData.SpecialRepairflag = 0;
  24703. string OutSpecialRepairflag = "0";// 没有什么特殊的,同干补保存生产数据共用同一个方法
  24704. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  24705. if (!string.IsNullOrEmpty(errMsg))
  24706. {
  24707. logoName = "";
  24708. logoCode = "";
  24709. groutingdate = "";
  24710. return errMsg;
  24711. }
  24712. #endregion
  24713. //第二步,回收站中数据回到在产中,设置干补标识。
  24714. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  24715. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  24716. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  24717. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  24718. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  24719. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  24720. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  24721. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  24722. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  24723. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  24724. KILNID, KILNCODE, KILNNAME, KILNCARID,
  24725. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  24726. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  24727. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  24728. :PROCEDUREMODEL, :MODELTYPE, null,
  24729. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  24730. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  24731. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  24732. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  24733. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  24734. CREATEUSERID, UPDATETIME, :UpdateUserID,
  24735. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, 1,
  24736. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  24737. KILNID, KILNCODE, KILNNAME, KILNCARID,
  24738. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,:ProcedureID ,--FlowProcedureID
  24739. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  24740. from TP_PM_InProductionTrash where barcode=:barcode ";
  24741. OracleParameter[] InProductparas = new OracleParameter[]{
  24742. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  24743. ////new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  24744. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  24745. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  24746. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  24747. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  24748. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  24749. };
  24750. //第三步,删除回收站中的条码
  24751. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  24752. OracleParameter[] TrashProductparas = new OracleParameter[]{
  24753. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  24754. };
  24755. //第四步,更新注浆表干补标识
  24756. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  24757. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  24758. // where barcode=:barcode)";
  24759. ////// string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  24760. ////// where barcode=:barcode";
  24761. ////// OracleParameter[] GroutingProductparas = new OracleParameter[]{
  24762. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  24763. ////// };
  24764. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  24765. // where barcode=:barcode ";
  24766. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  24767. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  24768. // };
  24769. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  24770. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  24771. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  24772. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  24773. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  24774. // 失败
  24775. if (deleteRow == Constant.INT_IS_ZERO)
  24776. {
  24777. logoName = "";
  24778. logoCode = "";
  24779. groutingdate = "";
  24780. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  24781. }
  24782. #endregion
  24783. //#region 第五步 添加生产者数据
  24784. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  24785. //if (!string.IsNullOrEmpty(errMsg))
  24786. //{
  24787. // return errMsg;
  24788. //}
  24789. //#endregion
  24790. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  24791. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  24792. OracleParameter[] Paras = new OracleParameter[] {
  24793. new OracleParameter(":barcode",OracleDbType.Varchar2,
  24794. barcode,ParameterDirection.Input)
  24795. };
  24796. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  24797. if (ds.Tables[0].Rows.Count == 0)
  24798. {
  24799. // 2 生产数据恢复到在产生产数据
  24800. sql = @"insert into tp_pm_productiondatain
  24801. (
  24802. ProductionDataID,
  24803. BarCode,
  24804. CentralizedBatchNo,
  24805. ProductionLineID,
  24806. ProductionLineCode,
  24807. ProductionLineName,
  24808. ProcedureID,
  24809. ProcedureCode,
  24810. ProcedureName,
  24811. ProcedureModel,
  24812. ModelType,
  24813. PieceType,
  24814. IsReworked,
  24815. NodeType,
  24816. IsPublicBody,
  24817. IsReFire,
  24818. GoodsLevelID,
  24819. GoodsLevelTypeID,
  24820. SpecialRepairFlag,
  24821. OrganizationID,
  24822. GoodsID,
  24823. GoodsCode,
  24824. GoodsName,
  24825. UserID,
  24826. UserCode,
  24827. UserName,
  24828. ClassesSettingID,
  24829. KilnID,
  24830. KilnCode,
  24831. KilnName,
  24832. KilnCarID,
  24833. KilnCarCode,
  24834. KilnCarName,
  24835. KilnCarBatchNo,
  24836. KilnCarPosition,
  24837. ReworkProcedureID,
  24838. ReworkProcedureCode,
  24839. ReworkProcedureName,
  24840. GroutingDailyID,
  24841. GroutingDailyDetailID,
  24842. GroutingLineID,
  24843. GroutingLineCode,
  24844. GroutingLineName,
  24845. GMouldTypeID,
  24846. CanManyTimes,
  24847. GroutingLineDetailID,
  24848. GroutingDate,
  24849. GroutingMouldCode,
  24850. MouldCode,
  24851. GroutingUserID,
  24852. GroutingUserCode,
  24853. GroutingNum,
  24854. Remarks,
  24855. AccountDate,
  24856. SettlementFlag,
  24857. AccountID,
  24858. ValueFlag,
  24859. CreateTime,
  24860. CreateUserID,
  24861. UpdateTime,
  24862. UpdateUserID,
  24863. OPTimeStamp,
  24864. TriggerFlag,
  24865. logoid,
  24866. BackOutTime,BackOutUserID,BackOutUserCode
  24867. )
  24868. select
  24869. ProductionDataID,
  24870. BarCode,
  24871. CentralizedBatchNo,
  24872. ProductionLineID,
  24873. ProductionLineCode,
  24874. ProductionLineName,
  24875. ProcedureID,
  24876. ProcedureCode,
  24877. ProcedureName,
  24878. ProcedureModel,
  24879. ModelType,
  24880. PieceType,
  24881. IsReworked,
  24882. NodeType,
  24883. IsPublicBody,
  24884. IsReFire,
  24885. GoodsLevelID,
  24886. GoodsLevelTypeID,
  24887. SpecialRepairFlag,
  24888. OrganizationID,
  24889. GoodsID,
  24890. GoodsCode,
  24891. GoodsName,
  24892. UserID,
  24893. UserCode,
  24894. UserName,
  24895. ClassesSettingID,
  24896. KilnID,
  24897. KilnCode,
  24898. KilnName,
  24899. KilnCarID,
  24900. KilnCarCode,
  24901. KilnCarName,
  24902. KilnCarBatchNo,
  24903. KilnCarPosition,
  24904. ReworkProcedureID,
  24905. ReworkProcedureCode,
  24906. ReworkProcedureName,
  24907. GroutingDailyID,
  24908. GroutingDailyDetailID,
  24909. GroutingLineID,
  24910. GroutingLineCode,
  24911. GroutingLineName,
  24912. GMouldTypeID,
  24913. CanManyTimes,
  24914. GroutingLineDetailID,
  24915. GroutingDate,
  24916. GroutingMouldCode,
  24917. MouldCode,
  24918. GroutingUserID,
  24919. GroutingUserCode,
  24920. GroutingNum,
  24921. Remarks,
  24922. AccountDate,
  24923. SettlementFlag,
  24924. AccountID,
  24925. ValueFlag,
  24926. CreateTime,
  24927. CreateUserID,
  24928. UpdateTime,
  24929. UpdateUserID,
  24930. OPTimeStamp,
  24931. 1,
  24932. logoid,
  24933. BackOutTime,BackOutUserID,BackOutUserCode
  24934. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  24935. ";
  24936. oracleTrConn.ExecuteNonQuery(sql, Paras);
  24937. }
  24938. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  24939. #endregion 数据处理
  24940. }
  24941. logoName = logoName_Temp;
  24942. logoCode = logoCode_Temp;
  24943. groutingdate = groutingdate_Temp;
  24944. return errMsg;
  24945. }
  24946. catch (Exception ex)
  24947. {
  24948. throw ex;
  24949. }
  24950. }
  24951. /// <summary>
  24952. /// 校验回收条码有效
  24953. /// </summary>
  24954. /// <param name="oracleTrConn">连接对象</param>
  24955. /// <param name="procedureID">工序ID</param>
  24956. /// <param name="barcode">条码</param>
  24957. /// <param name="goodsID">返回的产品ID</param>
  24958. /// <param name="goodsCode">返回的产品Code</param>
  24959. /// <param name="goodsName">返回的产品名称</param>
  24960. /// <param name="groutingUserID">返回的注浆者ID</param>
  24961. /// <returns>string</returns>
  24962. /// <remarks>
  24963. /// 王鑫 2017.7.20 新建
  24964. /// </remarks>
  24965. private static string CheckRecyclingFlagBarcode(IDBTransaction oracleTrConn,
  24966. int procedureID,
  24967. string barcode,
  24968. out int goodsID,
  24969. out string goodsCode,
  24970. out string goodsName,
  24971. out string groutingUserCode,
  24972. SUserInfo sUserInfo
  24973. )
  24974. {
  24975. try
  24976. {
  24977. //OracleParameter[] paras = new OracleParameter[]{
  24978. // new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  24979. // new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  24980. // new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  24981. // new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  24982. // new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  24983. // new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  24984. // new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  24985. //};
  24986. //oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  24987. //if (!"null".Equals(paras[3].Value + ""))
  24988. //{
  24989. // goodsID = Convert.ToInt32(paras[3].Value + "");
  24990. //}
  24991. //else
  24992. //{
  24993. // goodsID = 0;
  24994. //}
  24995. //goodsCode = paras[4].Value + "";
  24996. //goodsName = paras[5].Value + "";
  24997. //if (!"null".Equals(paras[6].Value + ""))
  24998. //{
  24999. // groutingUserCode = paras[6].Value + "";
  25000. //}
  25001. //else
  25002. //{
  25003. // groutingUserCode = null;
  25004. //}
  25005. //if ("null".Equals(paras[2].Value + ""))
  25006. //{
  25007. // return null;
  25008. //}
  25009. //return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  25010. string errorMessage = string.Empty;
  25011. goodsID = 0; goodsCode = string.Empty; goodsName = string.Empty; groutingUserCode = string.Empty;
  25012. string sqlString = @"select settingcode,settingvalue,settingdefaultvalues from tp_mst_systemsetting
  25013. where Accountid=:Accountid and settingcode in ('S_PM_017','S_PM_018','S_PM_019','S_PM_020')";
  25014. OracleParameter[] paras = new OracleParameter[]{
  25015. new OracleParameter("Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  25016. };
  25017. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  25018. #region 读出系统配置 17(损坯可否回收) 18(半检不合格可否回收) 19(复检不合格可否回收) 20(次品可否回收)
  25019. int S_PM_017_Value = 0, S_PM_018_Value = 0, S_PM_019_Value = 0, S_PM_020_Value = 0;
  25020. if (ds != null && ds.Tables[0].Rows.Count > 0)
  25021. {
  25022. foreach (DataRow r in ds.Tables[0].Rows)
  25023. {
  25024. if (r["settingcode"].ToString() == "S_PM_017")
  25025. {
  25026. S_PM_017_Value = Convert.ToInt32(r["settingvalue"]);
  25027. }
  25028. else if (r["settingcode"].ToString() == "S_PM_018")
  25029. {
  25030. S_PM_018_Value = Convert.ToInt32(r["settingvalue"]);
  25031. }
  25032. else if (r["settingcode"].ToString() == "S_PM_019")
  25033. {
  25034. S_PM_019_Value = Convert.ToInt32(r["settingvalue"]);
  25035. }
  25036. else if (r["settingcode"].ToString() == "S_PM_020")
  25037. {
  25038. S_PM_020_Value = Convert.ToInt32(r["settingvalue"]);
  25039. }
  25040. }
  25041. }
  25042. #endregion
  25043. #region 第1步 查当前工序在系统是否存在
  25044. sqlString = @"select NodeType,ModelType from tp_pc_procedure where procedureid=:procedureid and ValueFlag=1";
  25045. paras = new OracleParameter[]{
  25046. new OracleParameter(":procedureid",procedureID),
  25047. };
  25048. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  25049. if (ds == null || ds.Tables[0].Rows.Count == 0)
  25050. {
  25051. errorMessage = "当前工序在系统中不存在";
  25052. return errorMessage;
  25053. }
  25054. #endregion
  25055. #region 第2步 查产品是否有效
  25056. sqlString = @"select distinct GoodsID, GoodsCode,GoodsName,UserCode,DeliverFlag
  25057. from TP_PM_GroutingDailyDetail where BarCode=:barCode and ValueFlag=1 ";
  25058. paras = new OracleParameter[]{
  25059. new OracleParameter(":barCode",barcode),
  25060. };
  25061. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  25062. if (ds == null || ds.Tables[0].Rows.Count == 0)
  25063. {
  25064. // 是否被替换
  25065. string sql = @"select count(barcode),max(newbarcode) from TP_PM_BarCodeRecord where BarCode=:barcode";
  25066. OracleParameter[] paras2 = new OracleParameter[]{
  25067. new OracleParameter(":barCode",barcode) };
  25068. DataSet ds2 = oracleTrConn.GetSqlResultToDs(sql, paras2);
  25069. if (ds2 != null && Convert.ToInt32(ds2.Tables[0].Rows[0][0]) == 0)
  25070. {
  25071. // 无效条件
  25072. errorMessage = "无效条码[" + barcode + "]";
  25073. }
  25074. else
  25075. {
  25076. errorMessage = "条码[" + barcode + "]已经被[" + ds2.Tables[0].Rows[0][1] + "]替换";
  25077. }
  25078. }
  25079. else
  25080. {
  25081. if (Convert.ToInt32(ds.Tables[0].Rows[0]["DeliverFlag"]) != 1)
  25082. {
  25083. errorMessage = "条码[" + barcode + "]未交坯,不能回收";
  25084. }
  25085. else
  25086. {
  25087. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  25088. goodsName = ds.Tables[0].Rows[0]["goodsName"].ToString();
  25089. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  25090. groutingUserCode = ds.Tables[0].Rows[0]["UserCode"].ToString();
  25091. }
  25092. }
  25093. if (!string.IsNullOrEmpty(errorMessage))
  25094. {
  25095. return errorMessage;
  25096. }
  25097. #endregion
  25098. #region 第3步 查产品是否在当前工序配置
  25099. sqlString = @"select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  25100. paras = new OracleParameter[]{
  25101. new OracleParameter(":GoodsID",goodsID),
  25102. new OracleParameter(":ProcedureID",procedureID),
  25103. };
  25104. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  25105. if (Convert.ToInt32(ds.Tables[0].Rows[0][0]) != 1)
  25106. {
  25107. errorMessage =
  25108. @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + goodsCode + "]没有在该工序中配置";
  25109. }
  25110. if (!string.IsNullOrEmpty(errorMessage))
  25111. {
  25112. return errorMessage;
  25113. }
  25114. #endregion
  25115. #region 第4步,校验在产产品不能回收
  25116. string sqlString2 = "select InScrapFlag,ISREWORKFLAG from tp_pm_inproduction where barcode=:barcode";
  25117. OracleParameter[] parasNew = new OracleParameter[]{
  25118. new OracleParameter(":barcode",barcode) };
  25119. DataSet dsNew = oracleTrConn.GetSqlResultToDs(sqlString2, parasNew);
  25120. if (dsNew != null && dsNew.Tables[0].Rows.Count > 0)
  25121. {
  25122. if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["InScrapFlag"]) == 1)
  25123. {
  25124. errorMessage = "报损待审产品不能回收";
  25125. }
  25126. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  25127. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 1)
  25128. {
  25129. errorMessage = "半检返工中不能回收";
  25130. }
  25131. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 2)
  25132. {
  25133. errorMessage = "半检返工中不能回收";
  25134. }
  25135. else
  25136. {
  25137. errorMessage = "在产产品不能回收";
  25138. }
  25139. }
  25140. if (!string.IsNullOrEmpty(errorMessage))
  25141. {
  25142. return errorMessage;
  25143. }
  25144. #endregion
  25145. #region 第4步,校验报损表数据是否可以回收
  25146. sqlString = @"select GoodsLevelID,GoodsLevelTypeID,ScrapType,SpecialRepairFlag,RecyclingFlag,AuditStatus,SpecialRepairUserID from TP_PM_ScrapProduct where barcode=:barcode
  25147. and ValueFlag=1 and CreateTime=
  25148. (select max(CreateTime) from TP_PM_ScrapProduct where barcode=:barcode
  25149. and ValueFlag=1 )";
  25150. paras = new OracleParameter[]{
  25151. new OracleParameter(":barcode",barcode),
  25152. };
  25153. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  25154. if (ds == null || ds.Tables[0].Rows.Count == 0)
  25155. {
  25156. errorMessage = "不存在回收数据,不能回收";
  25157. }
  25158. else
  25159. {
  25160. if (Convert.ToInt32(ds.Tables[0].Rows[0]["AuditStatus"]) == 1 &&
  25161. Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) != 9 &&
  25162. Convert.ToInt32(ds.Tables[0].Rows[0]["RecyclingFlag"]) == 0)
  25163. {
  25164. // 可回收
  25165. string sqlString3 = "select 1 from tp_pm_inproductiontrash where barcode=:barcode";
  25166. OracleParameter[] parasNewt = new OracleParameter[]{
  25167. new OracleParameter(":barcode",barcode) };
  25168. DataSet dsNewt = oracleTrConn.GetSqlResultToDs(sqlString3, parasNewt);
  25169. if (dsNewt == null || dsNewt.Tables[0].Rows.Count == 0)
  25170. {
  25171. errorMessage = "报损数据被清除,不能回收";
  25172. }
  25173. }
  25174. else
  25175. {
  25176. errorMessage = "不存在回收数据,不能回收";
  25177. }
  25178. if (!string.IsNullOrEmpty(errorMessage))
  25179. {
  25180. if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 0)
  25181. {
  25182. // 损坯
  25183. if (S_PM_017_Value == 0)
  25184. {
  25185. errorMessage = "系统参数产品回收-报损未启用";
  25186. }
  25187. }
  25188. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 1)
  25189. {
  25190. // 成检
  25191. if (S_PM_020_Value == 0)
  25192. {
  25193. errorMessage = "系统参数产品回收-次品未启用";
  25194. }
  25195. }
  25196. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 2)
  25197. {
  25198. // 半检
  25199. if (S_PM_018_Value == 0)
  25200. {
  25201. errorMessage = "系统参数产品回收-半检不合格未启用";
  25202. }
  25203. }
  25204. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 3)
  25205. {
  25206. // 复检
  25207. if (S_PM_019_Value == 0)
  25208. {
  25209. errorMessage = "系统参数产品回收-复检不合格未启用";
  25210. }
  25211. }
  25212. }
  25213. }
  25214. #endregion
  25215. return errorMessage;
  25216. }
  25217. catch (Exception ex)
  25218. {
  25219. throw ex;
  25220. }
  25221. }
  25222. /// <summary>
  25223. /// 按条码判定是否为首节点
  25224. /// 从TP_PM_GroutingDailyDetail表中的BEGINNINGFLAG字段判定是否为首节点
  25225. /// "0":非首节点,"1":首节点
  25226. /// </summary>
  25227. /// <param name="oracleTrConn">数据连接</param>
  25228. /// <param name="barCode">条码</param>
  25229. /// <returns>是否首节点</returns>
  25230. /// xuwei add 2019-09-23
  25231. //public static bool IsNodeBegin(IDBTransaction oracleTrConn, string barCode)
  25232. //{
  25233. // bool result = false;
  25234. // try
  25235. // {
  25236. // if (barCode != "")
  25237. // {
  25238. // string flag = oracleTrConn.GetSqlResultToStr($@"select BEGINNINGFLAG as flag
  25239. // from TP_PM_GroutingDailyDetail
  25240. // where BARCODE = {barCode}");
  25241. // if (flag == "") throw new Exception("条码无效!请检查!");
  25242. // result = flag == "0" ? true : false;
  25243. // }
  25244. // }
  25245. // catch (Exception ex)
  25246. // {
  25247. // throw ex;
  25248. // }
  25249. // return result;
  25250. //}
  25251. //public static bool IsNodeBegin(IDBConnection oracleTrConn, string barCode)
  25252. //{
  25253. // bool result = false;
  25254. // try
  25255. // {
  25256. // if (barCode != "")
  25257. // {
  25258. // string flag = oracleTrConn.GetSqlResultToStr($@"select BEGINNINGFLAG as flag
  25259. // from TP_PM_GroutingDailyDetail
  25260. // where BARCODE = {barCode}");
  25261. // if (flag == "") throw new Exception("条码无效!请检查!");
  25262. // result = flag == "0" ? true : false;
  25263. // }
  25264. // }
  25265. // catch (Exception ex)
  25266. // {
  25267. // throw ex;
  25268. // }
  25269. // return result;
  25270. //}
  25271. /// <summary>
  25272. /// 按条码判定是否为首节点(调整为复用方法)
  25273. /// 从TP_PM_GroutingDailyDetail表中的BEGINNINGFLAG字段判定是否为首节点
  25274. /// "0":非首节点,"1":首节点,"-1":条码无效
  25275. /// </summary>
  25276. /// <param name="oracleTrConn">数据连接</param>
  25277. /// <param name="barCode">条码</param>
  25278. /// <returns>是否首节点</returns>
  25279. /// xuwei add 2019-09-26
  25280. public static int IsNodeBegin<T>(T oracleTrConn, string barCode)
  25281. {
  25282. Type t = typeof(T);
  25283. int result = -1;
  25284. try
  25285. {
  25286. if (barCode != "")
  25287. {
  25288. OracleParameter[] parasNew = new OracleParameter[]{
  25289. new OracleParameter(":barcode",barCode) };
  25290. string flag = t.GetMethod("GetSqlResultToStr")
  25291. .Invoke(oracleTrConn, new object[] { $@"select BEGINNINGFLAG as flag
  25292. from TP_PM_GroutingDailyDetail
  25293. where BARCODE = :barcode", parasNew }).ToString();
  25294. //if (flag == "") throw new Exception("无效条码,请检查!");
  25295. //xuwei fix 2019-09-26 找不到和非首节点均返回0
  25296. // 返修指定首节点时,判断错误
  25297. if (string.IsNullOrWhiteSpace(flag))
  25298. {
  25299. return -1;
  25300. }
  25301. result = (flag == "0" ? 1 : 0);
  25302. }
  25303. }
  25304. catch (Exception ex)
  25305. {
  25306. throw ex;
  25307. }
  25308. return result;
  25309. }
  25310. /// <summary>
  25311. /// 设置条码商标
  25312. /// </summary>
  25313. /// <returns></returns>
  25314. private static int SetBarCodeLogo(IDBTransaction oracleTrConn, string barcode, int logoid, SUserInfo sUserInfo)
  25315. {
  25316. int returnRows = 0;
  25317. try
  25318. {
  25319. OracleParameter[] Paras = null;
  25320. object oldLogoID = null;
  25321. object pid = null;
  25322. string sql = "";
  25323. sql = @"select g.logoid from tp_pm_groutingdailydetail g where g.barcode=:barcode";
  25324. DataTable dt = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
  25325. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  25326. });
  25327. if (dt != null && dt.Rows.Count > 0)
  25328. {
  25329. oldLogoID = dt.Rows[0]["logoid"];
  25330. }
  25331. // 1.更新注浆明细
  25332. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  25333. Paras = new OracleParameter[]
  25334. {
  25335. new OracleParameter(":logoid",OracleDbType.Int32, logoid,ParameterDirection.Input),
  25336. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  25337. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  25338. };
  25339. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  25340. // 2.在产产品
  25341. sql = @"update tp_pm_inproduction set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  25342. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  25343. if (returnRows > 0)
  25344. {
  25345. sql = @"select ProcedureID from tp_pm_inproduction where barcode=:barcode";
  25346. pid = oracleTrConn.GetSqlResultToObj(sql,
  25347. new OracleParameter[] { new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input) });
  25348. }
  25349. // 3.在产回收站
  25350. sql = @"update tp_pm_inproductiontrash set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  25351. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  25352. // 4.在产临时表
  25353. sql = @"update tp_pm_inproduction_tmp set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  25354. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  25355. // 变更履历
  25356. sql =
  25357. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  25358. " (BARCODE\n" +
  25359. " ,OLDLOGOID\n" +
  25360. " ,NEWLOGOID\n" +
  25361. " ,PROCEDUREID\n" +
  25362. " ,REMARKS\n" +
  25363. " ,ACCOUNTID\n" +
  25364. " ,CREATETIME\n" +
  25365. " ,CREATEUSERID)\n" +
  25366. "VALUES\n" +
  25367. " (:BARCODE\n" +
  25368. " ,:OLDLOGOID\n" +
  25369. " ,:NEWLOGOID\n" +
  25370. " ,:PROCEDUREID\n" +
  25371. " ,NULL\n" +
  25372. " ,:ACCOUNTID\n" +
  25373. " ,SYSDATE\n" +
  25374. " ,:CREATEUSERID)";
  25375. Paras = new OracleParameter[]
  25376. {
  25377. new OracleParameter(":OLDLOGOID",OracleDbType.Int32, oldLogoID,ParameterDirection.Input),
  25378. new OracleParameter(":NEWLOGOID",OracleDbType.Int32, logoid,ParameterDirection.Input),
  25379. new OracleParameter(":PROCEDUREID",OracleDbType.Int32, pid,ParameterDirection.Input),
  25380. new OracleParameter(":ACCOUNTID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  25381. new OracleParameter(":CREATEUSERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  25382. new OracleParameter(":BARCODE",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  25383. };
  25384. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  25385. }
  25386. catch (Exception ex)
  25387. {
  25388. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  25389. {
  25390. oracleTrConn.Rollback();
  25391. oracleTrConn.Disconnect();
  25392. }
  25393. throw ex;
  25394. }
  25395. return returnRows;
  25396. }
  25397. /// <summary>
  25398. /// 设置物料编码组件
  25399. /// </summary>
  25400. /// <returns></returns>
  25401. private static int SetMatnrIdnrk(IDBTransaction oracleTrConn, string oldMatnr, string barcode, SUserInfo sUserInfo, out string message)
  25402. {
  25403. int returnRows = 0;
  25404. message = "";
  25405. try
  25406. {
  25407. string sql = "";
  25408. sql = @"
  25409. SELECT GDD.MATERIALCODE AS MATNR,
  25410. DECODE(GDD.TESTMOULDFLAG, 0, 'C', 1, 'Y', '-') AS ZSCMS,
  25411. CASE
  25412. WHEN (INSTR(GDD.GROUTINGLINECODE, 'A') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  25413. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  25414. 1
  25415. WHEN (INSTR(GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR(GDD.GROUTINGLINECODE, 'D') = 1)
  25416. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  25417. 2
  25418. WHEN INSTR(GDD.GROUTINGLINECODE, 'C') = 1 THEN
  25419. 3
  25420. ELSE
  25421. 9
  25422. END AS WORKSHOP
  25423. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  25424. INNER JOIN TP_MST_GOODS G
  25425. ON G.GOODSID = GDD.GOODSID
  25426. INNER JOIN TP_MST_GOODSTYPE GT
  25427. ON GT.GOODSTYPEID = G.GOODSTYPEID
  25428. WHERE GDD.BARCODE = :BARCODE ";
  25429. DataTable dtMatnr = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]
  25430. {
  25431. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input)
  25432. });
  25433. // 如果物料编码不一致
  25434. if (!oldMatnr.Equals(dtMatnr.Rows[0]["MATNR"]))
  25435. {
  25436. sql = @"
  25437. SELECT IDNRK,
  25438. MEINS,
  25439. MENGE,
  25440. IDNRKNAME,
  25441. IDNRKONLYCODE,
  25442. CHARG,
  25443. LGORT
  25444. FROM TP_PM_BARCODEIDNRKREL
  25445. WHERE VALUEFLAG = '1'
  25446. AND BARCODE = :BARCODE ";
  25447. DataTable dtIdnrks = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]
  25448. {
  25449. new OracleParameter(":BARCODE", OracleDbType.Varchar2, barcode, ParameterDirection.Input)
  25450. });
  25451. // 如果装了配件了
  25452. if (dtIdnrks.Rows.Count > 0)
  25453. {
  25454. string datuv = System.DateTime.Now.Date.ToString("yyyyMMdd");
  25455. Hashtable pars = new Hashtable();
  25456. pars.Add("MATNR", dtMatnr.Rows[0]["MATNR"]); // 物料
  25457. pars.Add("WERKS", "5000"); // 工厂
  25458. pars.Add("ZSCS", "T"); // 生产工艺
  25459. pars.Add("ZSCCJ", dtMatnr.Rows[0]["WORKSHOP"]); // 生产车间
  25460. pars.Add("ZSCMS", dtMatnr.Rows[0]["ZSCMS"]); // 生产模式
  25461. pars.Add("ZJDNU", "60"); // 节点
  25462. pars.Add("DATUV", datuv); // 查询日期
  25463. pars.Add("EMENG", 1); // 需求数量
  25464. Hashtable item = new Hashtable();
  25465. item.Add("item", pars);
  25466. Hashtable body = new Hashtable();
  25467. body.Add("T_INPUT", item);
  25468. string postString = JsonConvert.SerializeObject(body);
  25469. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  25470. string url039 = ini.ReadIniData("SAP_NEW_INFO", "Url039");
  25471. //string url039 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM039";
  25472. string result = string.Empty;
  25473. try
  25474. {
  25475. result = SAPDataLogic.PostData(url039, postString, "POST");
  25476. }
  25477. catch (Exception ex)
  25478. {
  25479. message = "获取SAP库存接口异常:\n" + ex.Message;
  25480. return -4;
  25481. }
  25482. JObject returnObj = JsonConvert.DeserializeObject<JObject>(result);
  25483. JObject output = returnObj["T_OUTPUT"] as JObject;
  25484. JArray array = output["item"] as JArray;
  25485. DataTable dtIdnrk = Utility.ConvertToDataTable(array);
  25486. if ("E".Equals(dtIdnrk.Rows[0]["ZTYPE"] + ""))
  25487. {
  25488. message = "获取SAP库存失败";
  25489. return -5;
  25490. }
  25491. dtIdnrk.DefaultView.RowFilter = "MAKTX NOT LIKE '%半成品%'";
  25492. dtIdnrk = dtIdnrk.DefaultView.ToTable();
  25493. // 获取已走过的装配工序
  25494. string procedureidlist = oracleTrConn.GetSqlResultToStr(@"
  25495. SELECT LISTAGG(PROCEDUREID, ',') WITHIN GROUP(ORDER BY PROCEDUREID) AS PROCEDUREIDLIST
  25496. FROM TP_PM_PRODUCTIONDATA
  25497. WHERE VALUEFLAG = '1'
  25498. AND MODELTYPE = '-5'
  25499. AND BARCODE = :BARCODE ",
  25500. new OracleParameter[] { new OracleParameter("BARCODE", barcode) }
  25501. );
  25502. procedureidlist = "," + procedureidlist + ",";
  25503. // 过滤当前工序需要的组件
  25504. DataTable dtIdnrkType = oracleTrConn.GetSqlResultToDt(@"
  25505. SELECT IDNRKTYPE
  25506. FROM TP_PC_PROCEDUREIDNRKTYPE
  25507. WHERE INSTR(:PROCEDUREIDLIST , ',' || PROCEDUREID || ',') > 0",
  25508. new OracleParameter[] { new OracleParameter("PROCEDUREIDLIST", procedureidlist) }
  25509. );
  25510. dtIdnrk.DefaultView.RowFilter = "MAKTX NOT LIKE '%半成品%'";
  25511. dtIdnrk = dtIdnrk.DefaultView.ToTable();
  25512. // 如果包含其它,就不判断了
  25513. if (dtIdnrkType.Select("IDNRKTYPE = '其它'").Length == 0)
  25514. {
  25515. string fifter = "";
  25516. foreach (DataRow row in dtIdnrkType.Rows)
  25517. {
  25518. fifter += " MAKTX LIKE '%" + row["IDNRKTYPE"] + "%' OR";
  25519. }
  25520. // 如果没有条件,也不判断了
  25521. if (fifter.Length > 0)
  25522. {
  25523. fifter = fifter.Substring(0, fifter.Length - 2);
  25524. dtIdnrk.DefaultView.RowFilter = fifter;
  25525. dtIdnrk = dtIdnrk.DefaultView.ToTable();
  25526. }
  25527. }
  25528. // 过滤掉已安装的组件
  25529. object idnrklist = oracleTrConn.GetSqlResultToStr(@"
  25530. SELECT LISTAGG(IDNRK, ''',''') WITHIN GROUP(ORDER BY IDNRK) AS IDNRKLIST
  25531. FROM TP_PM_BARCODEIDNRKREL
  25532. WHERE VALUEFLAG = '1'
  25533. AND BARCODE = :BARCODE ",
  25534. new OracleParameter[] { new OracleParameter("BARCODE", barcode) }
  25535. );
  25536. // 可以保留的组件
  25537. DataTable dtCanSaveIdnrk = dtIdnrk.Copy();
  25538. dtCanSaveIdnrk.DefaultView.RowFilter = "IDNRK IN ('" + idnrklist + "')";
  25539. dtCanSaveIdnrk = dtCanSaveIdnrk.DefaultView.ToTable();
  25540. if (idnrklist != null)
  25541. {
  25542. dtIdnrk.DefaultView.RowFilter = "IDNRK NOT IN ('" + idnrklist + "')";
  25543. dtIdnrk = dtIdnrk.DefaultView.ToTable();
  25544. }
  25545. if (dtIdnrk.Rows.Count == 0)
  25546. {
  25547. }
  25548. // 加上需要的列
  25549. dtIdnrk.Columns.Add("LGORT", typeof(string));
  25550. dtIdnrk.Columns.Add("CHARG", typeof(string));
  25551. dtIdnrk.Columns.Add("IDNRKONLYCODE", typeof(string));
  25552. // 提取包材物料编码
  25553. List<string> matnrs = new List<string>();
  25554. foreach (DataRow row in dtIdnrk.Rows)
  25555. {
  25556. if (!matnrs.Contains(row["IDNRK"] + ""))
  25557. {
  25558. matnrs.Add(row["IDNRK"] + "");
  25559. }
  25560. }
  25561. string ZMSG = string.Empty;
  25562. // 查线边仓库存
  25563. DataTable dtSapInventory = SapApi.ZMM_WMS016("5000", matnrs, "", out ZMSG);
  25564. dtSapInventory.DefaultView.RowFilter = "LGORT IN('2420','2430','2440','2450','2460','2470','2480','2490')";
  25565. dtSapInventory = dtSapInventory.DefaultView.ToTable();
  25566. DataRow[] rows = null;
  25567. if (dtSapInventory != null && dtSapInventory.Rows.Count > 0)
  25568. {
  25569. // 改名
  25570. dtSapInventory.Columns["MATNR"].ColumnName = "IDNRK";
  25571. // 判断是否缺库存
  25572. List<string> notEnoughIdnrks = new List<string>();
  25573. foreach (string idnrk in matnrs)
  25574. {
  25575. rows = dtSapInventory.Select("IDNRK = '" + idnrk + "'"); ;
  25576. if (rows.Length == 0)
  25577. {
  25578. notEnoughIdnrks.Add(idnrk);
  25579. }
  25580. }
  25581. if (notEnoughIdnrks.Count > 0)
  25582. {
  25583. message = "以下组件在SAP系统中库存不足:\n" + string.Join(",", notEnoughIdnrks.ToArray());
  25584. return -6;
  25585. }
  25586. // 库存数量要改为数字类型
  25587. dtSapInventory.Columns.Add("BALANCE", typeof(decimal));
  25588. decimal balance = 0;
  25589. foreach (DataRow row in dtSapInventory.Rows)
  25590. {
  25591. decimal.TryParse(row["KYKC"] + "", out balance);
  25592. row["BALANCE"] = balance;
  25593. }
  25594. }
  25595. else
  25596. {
  25597. message = "以下组件在SAP系统中库存不足:\n" + string.Join(",", matnrs.ToArray());
  25598. return -6;
  25599. }
  25600. dtSapInventory.DefaultView.RowFilter = "BALANCE <> 0";
  25601. dtSapInventory = dtSapInventory.DefaultView.ToTable();
  25602. dtSapInventory.DefaultView.Sort = "LGORT, CHARG";
  25603. dtSapInventory = dtSapInventory.DefaultView.ToTable();
  25604. DateTime now = DateTime.Now;
  25605. foreach (DataRow row in dtIdnrk.Rows)
  25606. {
  25607. rows = dtSapInventory.Select("IDNRK = '" + row["IDNRK"] + "' AND BALANCE >= " + row["MENGE"]);
  25608. if (rows.Length > 0)
  25609. {
  25610. row["LGORT"] = rows[0]["LGORT"];
  25611. row["CHARG"] = rows[0]["CHARG"];
  25612. row["IDNRKONLYCODE"] = "";
  25613. }
  25614. }
  25615. dtIdnrk.TableName = "Idnrk";
  25616. dtCanSaveIdnrk.TableName = "CanSaveIdnrk";
  25617. string canSaveIdnrks = ",";
  25618. if (dtCanSaveIdnrk != null && dtCanSaveIdnrk.Rows.Count > 0)
  25619. {
  25620. foreach (DataRow row in dtCanSaveIdnrk.Rows)
  25621. {
  25622. canSaveIdnrks += row["IDNRK"] + ",";
  25623. }
  25624. }
  25625. string delSql = @"
  25626. DELETE FROM TP_PM_BARCODEIDNRKREL
  25627. WHERE BARCODE = :BARCODE
  25628. AND INSTR(:CANSAVEIDNRKS, ','|| IDNRK ||',') = 0 ";
  25629. returnRows += oracleTrConn.ExecuteNonQuery(delSql, new OracleParameter[]
  25630. {
  25631. new OracleParameter(":BARCODE", barcode),
  25632. new OracleParameter(":CANSAVEIDNRKS", canSaveIdnrks)
  25633. });
  25634. if (dtIdnrk != null && dtIdnrk.Rows.Count > 0)
  25635. {
  25636. string barcodeidnrkrel = @"
  25637. INSERT INTO TP_PM_BARCODEIDNRKREL
  25638. (PROCEDUREID,
  25639. BARCODE,
  25640. MATNR,
  25641. IDNRK,
  25642. MEINS,
  25643. MENGE,
  25644. IDNRKNAME,
  25645. IDNRKONLYCODE,
  25646. CHARG,
  25647. LGORT,
  25648. ACCOUNTID,
  25649. CREATEUSERID,
  25650. UPDATEUSERID)
  25651. VALUES
  25652. (:PROCEDUREID,
  25653. :BARCODE,
  25654. :MATNR,
  25655. :IDNRK,
  25656. :MEINS,
  25657. :MENGE,
  25658. :IDNRKNAME,
  25659. :IDNRKONLYCODE,
  25660. :CHARG,
  25661. :LGORT,
  25662. :ACCOUNTID,
  25663. :USERID,
  25664. :USERID) ";
  25665. foreach (DataRow row in dtIdnrk.Rows)
  25666. {
  25667. returnRows += oracleTrConn.ExecuteNonQuery(barcodeidnrkrel,
  25668. new OracleParameter[]
  25669. {
  25670. new OracleParameter(":PROCEDUREID", -1),
  25671. new OracleParameter(":BARCODE", barcode),
  25672. new OracleParameter(":MATNR", row["MATNR"]),
  25673. new OracleParameter(":IDNRK", row["IDNRK"]),
  25674. new OracleParameter(":MEINS", row["MEINS"]),
  25675. new OracleParameter(":MENGE", Convert.ToDecimal( row["MENGE"])),
  25676. new OracleParameter(":IDNRKNAME", row["MAKTX"]),
  25677. new OracleParameter(":IDNRKONLYCODE", row["IDNRKONLYCODE"]),
  25678. new OracleParameter(":CHARG", row["CHARG"]),
  25679. new OracleParameter(":LGORT", row["LGORT"]),
  25680. new OracleParameter(":ACCOUNTID", sUserInfo.AccountID),
  25681. new OracleParameter(":USERID", sUserInfo.UserID)
  25682. });
  25683. }
  25684. }
  25685. }
  25686. }
  25687. }
  25688. catch (Exception ex)
  25689. {
  25690. message = "接口异常:\n" + ex.Message;
  25691. return -4;
  25692. }
  25693. return returnRows;
  25694. }
  25695. }
  25696. }