PMModuleLogicDAL.cs 1.1 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497
  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.Generic;
  13. using System.Data;
  14. using System.Text;
  15. using Dongke.IBOSS.PRD.Basics.BaseResources;
  16. using Dongke.IBOSS.PRD.Basics.DataAccess;
  17. using Dongke.IBOSS.PRD.Basics.Library;
  18. using Dongke.IBOSS.PRD.Service.DataModels;
  19. using Dongke.IBOSS.PRD.WCF.DataModels;
  20. using Oracle.ManagedDataAccess.Client;
  21. namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
  22. {
  23. /// <summary>
  24. /// 生产管理数据库访问类(插入、修改、删除)
  25. /// </summary>
  26. public partial class PMModuleLogicDAL
  27. {
  28. #region 生产管理
  29. #region 计件
  30. /// <summary>
  31. /// 添加生产计件
  32. /// </summary>
  33. /// <param name="procedureID">工序ID</param>
  34. /// <param name="barcodeTable">条码信息</param>
  35. /// <param name="sUserInfo">用户基本信息</param>
  36. /// <returns>DataTable null:添加成功 不为空:错误消息</returns>
  37. /// <remarks>
  38. /// 陈冰 2014.09.18 新建
  39. /// </remarks>
  40. public static DataTable AddWorkPiece(int procedureID, DataTable barcodeTable, SUserInfo sUserInfo, out ProcedureEntity procedureInfo)
  41. {
  42. procedureInfo = null;
  43. // 实例返回的Talbe
  44. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  45. DataRow dr = dtBarCode.NewRow();
  46. string errMsg = "";
  47. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  48. oracleTrConn.IgnoreCase = false;
  49. try
  50. {
  51. DataSet dsReturnSinglePoint = null;
  52. oracleTrConn.Connect();
  53. int goodsID = Constant.INT_IS_ZERO;
  54. string goodsCode = null;
  55. string goodsName = null;
  56. string groutingUserCode = string.Empty;
  57. string logoCode = string.Empty;
  58. string logoName = string.Empty;
  59. string groutingdate = string.Empty;
  60. #region 查询工序信息
  61. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  62. procedureInfo = procedure;
  63. #endregion
  64. if (barcodeTable.Columns.Contains("IsPDA"))
  65. {
  66. if (procedure.ModelType != (int)Constant.ProcedureModelType.DeliverMud)
  67. {
  68. if (barcodeTable.Columns.Contains("IsPublicBody"))
  69. {
  70. barcodeTable.Columns.Remove("IsPublicBody");
  71. barcodeTable.Columns.Remove("IsPDA");
  72. }
  73. }
  74. }
  75. #region 防止多次重复提交,导致数据重复
  76. // 通过锁定表tp_pm_usedbarcode中的条码,防止多次重复提交,导致数据重复
  77. // TODO PDA还没有修改,暂时注释。PDA(集中采集画面)点击保存时如果不成功提示消息后,清除了当前画面中的数据。应该不清空数据,可以继续保存。
  78. //string barcodes = null;
  79. //foreach (DataRow item in barcodeTable.Rows)
  80. //{
  81. // if (barcodes != null)
  82. // {
  83. // barcodes += ",";
  84. // }
  85. // barcodes += item["Barcode"].ToString();
  86. //}
  87. //if (barcodes != null)
  88. //{
  89. // string sql = "select uc.barcode from tp_pm_usedbarcode uc where uc.barcode in (" + barcodes + ") for update nowait";
  90. // try
  91. // {
  92. // oracleTrConn.GetSqlResultToDt(sql);
  93. // }
  94. // catch (Exception ex)
  95. // {
  96. // // 判断异常类型
  97. // if (ex.Message.IndexOf("ORA-00054") > -1)
  98. // {
  99. // dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码正在被处理中,请稍后再操作。";
  100. // dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = "0";
  101. // dtBarCode.Rows.Add(dr);
  102. // return dtBarCode;
  103. // }
  104. // throw ex;
  105. // }
  106. //}
  107. #endregion
  108. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  109. //xuwei fix 2019-09-26 按原条理判定首节点得到正确的返回结果
  110. // 2019-1016
  111. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  112. {
  113. int nodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, barcodeTable.Rows[0]["Barcode"].ToString());
  114. if (nodeBegin == 1)
  115. {
  116. procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  117. }
  118. else if (nodeBegin == 0)
  119. {
  120. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  121. }
  122. }
  123. //if (nodeBegin == -1) errMsg = "条码不正确,请检查!";
  124. #region 标准计件和坯库
  125. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal
  126. || procedure.ModelType == (int)Constant.ProcedureModelType.AdobeStock)
  127. {
  128. if (procedure.CollectType == 1)
  129. {
  130. #region 集中采集
  131. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  132. out goodsID, out goodsCode, out goodsName, out groutingUserCode);
  133. #endregion
  134. }
  135. else
  136. {
  137. #region 单点采集
  138. int? GroutingDailyDetailID = null;
  139. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  140. {
  141. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  142. }
  143. else
  144. {
  145. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  146. }
  147. if (dsReturnSinglePoint != null)
  148. {
  149. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  150. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  151. {
  152. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  153. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  154. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  155. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  156. barcodeTable.Rows[0]["barcode"] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  157. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  158. goodsID, goodsCode, goodsName, groutingUserCode, null);
  159. }
  160. }
  161. #endregion
  162. }
  163. }
  164. #endregion
  165. #region 交坯
  166. else if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)
  167. {
  168. if (procedure.CollectType == 1)
  169. {
  170. #region 集中采集
  171. //xuwei fix begin 2019-09-17
  172. //加入最后一个参数 true,识别为交坏
  173. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  174. out goodsID, out goodsCode, out goodsName, out groutingUserCode, true);
  175. //xuwei end
  176. #endregion
  177. }
  178. else
  179. {
  180. #region 单点采集
  181. int? GroutingDailyDetailID = null;
  182. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  183. {
  184. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  185. }
  186. else
  187. {
  188. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  189. }
  190. //dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  191. if (dsReturnSinglePoint != null)
  192. {
  193. //if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  194. //{
  195. // dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  196. //}
  197. //else
  198. //{
  199. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  200. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  201. {
  202. if (procedure.DeliverType == 0) //手动模式
  203. {
  204. if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  205. {
  206. if (barcodeTable.Rows[0]["IsPublicBody"].ToString() != "1")
  207. {
  208. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  209. }
  210. else
  211. {
  212. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  213. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  214. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  215. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  216. //xuwei fix begin 2019-09-17
  217. //加入最后一个参数 true,识别为交坏
  218. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  219. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  220. if (!string.IsNullOrEmpty(errMsg))
  221. {
  222. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  223. }
  224. // wangx 2016-10-10 是否设置过期未交坯
  225. else
  226. {
  227. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  228. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  229. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  230. if (sqlSettingValue != "0")
  231. {
  232. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  233. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  234. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  235. if (Convert.ToInt32(resultEntity.Result) < 0)
  236. {
  237. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  238. errMsg = resultEntity.Message;
  239. }
  240. }
  241. // wangx end
  242. }
  243. }
  244. }
  245. else
  246. {
  247. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  248. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  249. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  250. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  251. //xuwei fix begin 2019-09-17
  252. //加入最后一个参数 true,识别为交坏
  253. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  254. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  255. if (!string.IsNullOrEmpty(errMsg))
  256. {
  257. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  258. }
  259. // wangx 2016-10-10 是否设置过期未交坯
  260. else
  261. {
  262. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  263. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  264. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  265. if (sqlSettingValue != "0")
  266. {
  267. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  268. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  269. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  270. if (Convert.ToInt32(resultEntity.Result) < 0)
  271. {
  272. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  273. errMsg = resultEntity.Message;
  274. }
  275. }
  276. // wangx end
  277. }
  278. }
  279. }
  280. else //2016-07-05
  281. {
  282. // 自动模式 .查出型工号,单点采集前台并没有传值,更新barcodeTable表对应的字段
  283. string sql = @"select tp_mst_user.userid,tp_mst_user.usercode,tp_mst_user.username from TP_PM_GroutingDailyDetail
  284. left join tp_mst_user
  285. on TP_PM_GroutingDailyDetail.userid=tp_mst_user.userid
  286. where TP_PM_GroutingDailyDetail.barcode='" + barcodeTable.Rows[0]["barcode"].ToString() + "'";
  287. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  288. if (ds != null && ds.Tables[0].Rows.Count > 0)
  289. {
  290. barcodeTable.Rows[0]["UserCode"] = ds.Tables[0].Rows[0]["UserCode"];
  291. barcodeTable.Rows[0]["UserID"] = ds.Tables[0].Rows[0]["UserID"];
  292. barcodeTable.Rows[0]["UserName"] = ds.Tables[0].Rows[0]["UserName"];
  293. }
  294. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  295. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  296. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  297. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  298. //xuwei fix begin 2019-09-17
  299. //加入最后一个参数 true,识别为交坏
  300. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  301. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  302. if (!string.IsNullOrEmpty(errMsg))
  303. {
  304. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  305. }
  306. // wangx 2016-10-10 是否设置过期未交坯
  307. else
  308. {
  309. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  310. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  311. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  312. if (sqlSettingValue != "0")
  313. {
  314. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  315. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  316. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  317. if (Convert.ToInt32(resultEntity.Result) < 0)
  318. {
  319. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  320. errMsg = resultEntity.Message;
  321. }
  322. }
  323. // wangx end
  324. }
  325. //
  326. }
  327. //}
  328. }
  329. }
  330. #endregion
  331. }
  332. }
  333. #endregion
  334. #region 装窑车
  335. else if (procedure.ModelType == (int)Constant.ProcedureModelType.LoadCar)
  336. {
  337. errMsg = AddLoadKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  338. out goodsID, out goodsCode, out goodsName);
  339. }
  340. #endregion
  341. #region 窑车补件
  342. else if (procedure.ModelType == (int)Constant.ProcedureModelType.CarAdd)
  343. {
  344. errMsg = AddKilnCarSupplement(oracleTrConn, procedure, barcodeTable, sUserInfo,
  345. out goodsID, out goodsCode, out goodsName);
  346. }
  347. #endregion
  348. #region 入窑
  349. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKiln)
  350. {
  351. // PDA传入的窑车号。没有传入条码信息 需要转换
  352. /* modify by chenxy 2016-04-05 begin
  353. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  354. * 入窑时窑车上的产品需要重新获取。
  355. */
  356. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  357. // modify by chenxy 2016-04-05 end
  358. {
  359. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  360. }
  361. errMsg = AddIntoKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  362. out goodsID, out goodsCode, out goodsName);
  363. }
  364. #endregion
  365. #region 出窑
  366. else if (procedure.ModelType == (int)Constant.ProcedureModelType.OutKiln)
  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 = AddOutKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  379. out goodsID, out goodsCode, out goodsName);
  380. }
  381. #endregion
  382. #region 卸窑车
  383. else if (procedure.ModelType == (int)Constant.ProcedureModelType.UnloadCar)
  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 = AddUnloadingKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  396. out goodsID, out goodsCode, out goodsName);
  397. }
  398. #endregion
  399. #region 干补
  400. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SpecialRepair)
  401. {
  402. errMsg = AddDryRepairWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  403. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  404. }
  405. #endregion
  406. #region 回收
  407. else if (procedure.ModelType == (int)Constant.ProcedureModelType.Recovery)
  408. {
  409. errMsg = AddRecydingFlagWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  410. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  411. }
  412. #endregion
  413. #region 构造返回的DataTable
  414. if ((procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud
  415. || procedure.ModelType == (int)Constant.ProcedureModelType.Normal) && procedure.CollectType == 2)
  416. {
  417. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()];
  418. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()];
  419. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()];
  420. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()];
  421. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()];
  422. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()];
  423. //新添加的
  424. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  425. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  426. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  427. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  428. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  429. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  430. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  431. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  432. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  433. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  434. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  435. dr[Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()];
  436. dr[Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()];
  437. }
  438. else
  439. {
  440. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = (errMsg == null ? "" : errMsg);
  441. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = goodsID;
  442. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = goodsCode;
  443. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = goodsName;
  444. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = groutingUserCode;
  445. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = logoCode;
  446. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = logoName;
  447. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = groutingdate;
  448. //dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  449. //dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  450. //dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  451. //dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  452. //dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  453. //dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  454. //dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  455. //dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  456. //dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  457. //dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  458. }
  459. dtBarCode.Rows.Add(dr);
  460. #endregion
  461. // 没有错误 提交事务
  462. if (string.IsNullOrEmpty(errMsg))
  463. {
  464. oracleTrConn.Commit();
  465. }
  466. }
  467. catch (Exception ex)
  468. {
  469. oracleTrConn.Rollback();
  470. throw ex;
  471. }
  472. finally
  473. {
  474. // 释放资源
  475. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  476. {
  477. oracleTrConn.Disconnect();
  478. }
  479. }
  480. return dtBarCode;
  481. }
  482. #region 是否公坯
  483. /// <summary>
  484. /// 是否公坯
  485. /// </summary>
  486. /// <param name="barcode">产品条码</param>
  487. /// <returns>int</returns>
  488. public static int IsPubilcByBarCode(IDBTransaction oracleTrConn, string barcode)
  489. {
  490. int isPubilcBody = 0;
  491. try
  492. {
  493. string sqlString = @"
  494. select
  495. ispublicbody
  496. from tp_pm_inproduction where barcode=:barcode
  497. union
  498. select
  499. ispublicbody
  500. from TP_PM_InProductionTrash where barcode=:barcode
  501. ";
  502. OracleParameter[] paras = new OracleParameter[]{
  503. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  504. };
  505. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  506. if (ds != null && ds.Tables[0].Rows.Count > 0)
  507. {
  508. isPubilcBody = Convert.ToInt32(ds.Tables[0].Rows[0]["ispublicbody"]);
  509. }
  510. return isPubilcBody;
  511. }
  512. catch (Exception ex)
  513. {
  514. throw ex;
  515. }
  516. }
  517. #endregion
  518. /// <summary>
  519. /// 标准计件
  520. /// </summary>
  521. /// <param name="oracleTrConn">数据连接对象</param>
  522. /// <param name="procedure">工序对象</param>
  523. /// <param name="barcodeTable">条码信息</param>
  524. /// <param name="sUserInfo">用户基本信息</param>
  525. /// <param name="goodsID">返回的产品ID</param>
  526. /// <param name="goodsCode">返回的产品Code</param>
  527. /// <param name="goodsName">返回的产品名称</param>
  528. /// <param name="groutingUserID">返回的注浆者ID</param>
  529. /// <returns>string</returns>
  530. /// <remarks>
  531. /// 陈冰 2014.09.18 新建
  532. /// </remarks>
  533. private static string AddNormalWorkPiece(IDBTransaction oracleTrConn,
  534. ProcedureEntity procedure,
  535. DataTable barcodeTable,
  536. SUserInfo sUserInfo,
  537. out int goodsID,
  538. out string goodsCode,
  539. out string goodsName,
  540. out string groutingUserCode,
  541. bool isSendBody = false
  542. )
  543. {
  544. try
  545. {
  546. goodsID = Constant.INT_IS_ZERO;
  547. goodsCode = null;
  548. goodsName = null;
  549. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  550. // 获得账务日期
  551. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  552. string errMsg = string.Empty;
  553. // 本批采集的批次号
  554. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  555. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  556. // 条码信息
  557. foreach (DataRow barcodeRow in barcodeTable.Rows)
  558. {
  559. // 条码
  560. string barcode = barcodeRow["Barcode"].ToString();
  561. if (string.IsNullOrEmpty(barcode))
  562. {
  563. throw new Exception("传入的条码号为空");
  564. }
  565. // 生产工号
  566. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  567. // 生产工号
  568. string workUserCode = barcodeRow["UserCode"].ToString();
  569. int? GroutingDailyDetailID = null;//注浆明细ID
  570. if (procedure.CollectType == 1)
  571. {
  572. #region 集中采集 校验条码
  573. // ccc todo
  574. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  575. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  576. {
  577. #region 校验条码有效性
  578. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  579. if (!string.IsNullOrEmpty(errMsg))
  580. {
  581. return errMsg;
  582. }
  583. #endregion
  584. }
  585. else
  586. {
  587. #region 校验条码有效性
  588. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  589. if (!string.IsNullOrEmpty(errMsg))
  590. {
  591. return errMsg;
  592. }
  593. #endregion
  594. }
  595. #endregion
  596. }
  597. else
  598. {
  599. #region 单点采集 获取注浆日报明细
  600. string sqlGroutingInfo = "";
  601. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  602. tp_pm_groutingdailydetail.goodscode,
  603. tp_pm_groutingdailydetail.goodsname,
  604. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  605. tp_pm_groutingdailydetail.GroutingDailyDetailID
  606. from tp_pm_groutingdailydetail where barcode = :barcode";
  607. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  608. //(select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)";
  609. OracleParameter[] ReFireparas = new OracleParameter[] {
  610. new OracleParameter(":barcode",barcode),
  611. };
  612. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  613. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  614. {
  615. GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  616. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  617. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  618. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  619. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  620. }
  621. #endregion
  622. }
  623. int? ClassesSettingID = null;//班次配置ID
  624. #region 添加生产者数据
  625. //生产数据ID
  626. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  627. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  628. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  629. {
  630. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  631. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  632. {
  633. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  634. }
  635. else
  636. {
  637. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  638. }
  639. }
  640. else
  641. {
  642. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  643. }
  644. if (!string.IsNullOrEmpty(errMsg))
  645. {
  646. return errMsg;
  647. }
  648. #endregion
  649. //xuwei fix 2019-09-23 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  650. //xuwei fix 2019-09-26 使用通用方法判定
  651. //if (IsNodeBegin<IDBTransaction>(oracleTrConn, barcode) == 1)
  652. // procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  653. #region 添加生产数据
  654. ProductionDataEntity productionData = new ProductionDataEntity();
  655. #region 属性赋值
  656. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  657. productionData.ClassesSettingID = ClassesSettingID;
  658. productionData.ProductionDataID = productionDataID;
  659. productionData.Barcode = barcode;
  660. productionData.CentralizedBatchNo = centralizedBatchNo;
  661. productionData.ProductionLineID = procedure.ProductionLineID;
  662. productionData.ProductionLineCode = procedure.ProductionlineCode;
  663. productionData.ProductionLineName = procedure.ProductionlineName;
  664. productionData.CompleteProcedureID = procedure.ProcedureID;
  665. productionData.ProcedureCode = procedure.ProcedureCode;
  666. productionData.ProcedureName = procedure.ProcedureName;
  667. productionData.ProcedureModel = procedure.ProcedureModel;
  668. productionData.ModelType = procedure.ModelType;
  669. productionData.NodeType = procedure.NodeType;
  670. productionData.PieceType = procedure.PieceType;
  671. if (barcodeRow["LogoID"].ToString() != "")
  672. {
  673. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  674. }
  675. if (procedure.IsSpecialRework == 0)
  676. {
  677. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  678. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  679. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  680. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  681. {
  682. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  683. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  684. }
  685. ////// else
  686. ////// {
  687. ////// string sqlReFire = @"select
  688. ////// isrefire
  689. ////// from tp_pm_inproduction where barcode=:barcode
  690. ////// ";
  691. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  692. ////// new OracleParameter(":barcode",barcode),
  693. ////// };
  694. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  695. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  696. ////// {
  697. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  698. ////// {
  699. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  700. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  701. ////// //{
  702. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  703. ////// //}
  704. ////// }
  705. ////// }
  706. ////// }
  707. }
  708. else
  709. {
  710. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  711. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  712. }
  713. productionData.ReworkProcedureID = null;
  714. #region 交坯判断
  715. // 交坯节点
  716. if (barcodeTable.Columns.Contains("IsPublicBody"))
  717. {
  718. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  719. }
  720. // 非交坯节点
  721. else
  722. {
  723. // 正常坯
  724. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  725. }
  726. #endregion
  727. productionData.OrganizationID = procedure.OrganizationID;
  728. productionData.GoodsID = goodsID;
  729. productionData.GoodsCode = goodsCode;
  730. productionData.GoodsName = goodsName;
  731. productionData.UserID = workUserID;
  732. productionData.UserCode = barcodeRow["UserCode"].ToString();
  733. productionData.UserName = barcodeRow["UserName"].ToString();
  734. #endregion
  735. string OutSpecialRepairflag = "0";//干补标识
  736. DataSet outDataSet = null;
  737. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  738. {
  739. //添加首节点数据 (在产生产数据)
  740. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  741. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet,isSendBody);
  742. }
  743. else
  744. {
  745. //添加非首节点数据
  746. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  747. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag,isSendBody);
  748. }
  749. if (!string.IsNullOrEmpty(errMsg))
  750. {
  751. return errMsg;
  752. }
  753. #endregion
  754. #region 开始节点
  755. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  756. {
  757. #region 添加在产产品数据
  758. InProductionEntity addInProductionEntity = new InProductionEntity();
  759. addInProductionEntity.BarCode = barcode;
  760. //流程工序ID
  761. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  762. // 当前工序
  763. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  764. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  765. // 工序模型
  766. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  767. // 工序类别
  768. addInProductionEntity.ModelType = procedure.ModelType;
  769. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  770. addInProductionEntity.ProductionDataID = productionDataID;
  771. #region 交坯判断
  772. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  773. #endregion
  774. // 生产工号
  775. addInProductionEntity.UserID = workUserID;
  776. // 执行添加
  777. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  778. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet,isSendBody);
  779. // 执行失败
  780. if (!string.IsNullOrEmpty(errMsg))
  781. {
  782. return errMsg;
  783. }
  784. #endregion
  785. }
  786. #endregion
  787. #region 中间节点
  788. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  789. {
  790. #region 修改在产产品数据的当前工序,清空返工工序字段
  791. InProductionEntity addInProductionEntity = new InProductionEntity();
  792. addInProductionEntity.BarCode = barcode;
  793. //流程工序ID
  794. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  795. // 当前工序
  796. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  797. //当前生产数据ID
  798. addInProductionEntity.ProductionDataID = productionDataID;
  799. // 工序模型
  800. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  801. // 工序类别
  802. addInProductionEntity.ModelType = procedure.ModelType;
  803. // 生产工号
  804. addInProductionEntity.UserID = workUserID;
  805. addInProductionEntity.LogoID = productionData.LogoID;
  806. // 缺陷标识
  807. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  808. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  809. if (procedure.IsSpecialRework == 0)
  810. {
  811. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  812. }
  813. else
  814. {
  815. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  816. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  817. }
  818. #region 交坯判断
  819. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  820. #endregion
  821. // 执行修改
  822. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  823. // 执行失败
  824. if (!string.IsNullOrEmpty(errMsg))
  825. {
  826. return errMsg;
  827. }
  828. #endregion
  829. }
  830. #endregion
  831. #region 结束节点
  832. else
  833. {
  834. #region 添加成品数据 删除在产产品数据
  835. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  836. finishedProduct.BarCode = barcode;
  837. finishedProduct.LogoID = productionData.LogoID;
  838. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  839. if (!string.IsNullOrEmpty(errMsg))
  840. {
  841. return errMsg;
  842. }
  843. InProductionEntity delInProductionEntity = new InProductionEntity();
  844. delInProductionEntity.BarCode = barcode;
  845. // 执行删除 在产数据
  846. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  847. // 执行失败
  848. if (!string.IsNullOrEmpty(errMsg))
  849. {
  850. return errMsg;
  851. }
  852. #endregion
  853. }
  854. #endregion
  855. }
  856. return errMsg;
  857. }
  858. catch (Exception ex)
  859. {
  860. throw ex;
  861. }
  862. }
  863. /// <summary>
  864. /// 添加生产者(交坯单独调用,特殊)
  865. /// </summary>
  866. /// <param name="oracleTrConn">连接对象</param>
  867. /// <param name="accountDate">账务日期</param>
  868. /// <param name="productionDataID">生产数据ID</param>
  869. /// <param name="workUserID">生产工号ID</param>
  870. /// <param name="workUserCode">生产工号Code</param>
  871. /// <param name="sUserInfo">用户基本信息</param>
  872. /// <returns>string</returns>
  873. private static string AddProducerDeliverAdobe(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo)
  874. {
  875. // 参数
  876. OracleParameter[] paras;
  877. #region 将班次配置表中的数据插入生产者表中
  878. string sql = "insert into tp_pm_producer"
  879. + " (productiondataid,"
  880. + " staffid,"
  881. + " userid,"
  882. + " usercode,"
  883. + " UJobsID,"
  884. + " staffstatus,"
  885. + " SJobsID"
  886. + " )"
  887. + " select distinct :productiondataid,"
  888. + " staffid,"
  889. + " userid,"
  890. + " usercode,"
  891. + " UJobsID,"
  892. + " staffstatus,"
  893. + " SJobsID"
  894. + " "
  895. + " from TP_PM_GroutingProducer"
  896. + " where UserID = :userID";
  897. paras = new OracleParameter[] {
  898. new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  899. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  900. };
  901. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  902. // 失败
  903. if (resultCount == Constant.INT_IS_ZERO)
  904. {
  905. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  906. }
  907. #endregion
  908. return null;
  909. }
  910. /// <summary>
  911. /// 装车后,更新所有以前操作的工序窑车信息
  912. /// </summary>
  913. /// <param name="oracleTrConn">连接对象</param>
  914. /// <param name="barcode">条码</param>
  915. /// <param name="kilnCarID">窑车号</param>
  916. /// <param name="goodsID">产品ID</param>
  917. /// <param name="KilnCarPosition">窑车位置</param>
  918. /// <param name="kilnCarBatchNo">装车批次</param>
  919. /// <param name="sUserInfo">用户基本信息</param>
  920. /// <returns>string</returns>
  921. private static string UpdateRefineBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  922. {
  923. string sql = "update TP_PM_ProductionData set "
  924. + " IsReFire=:IsReFire"
  925. + " where barcode=:barcode";
  926. #region 参数
  927. OracleParameter[] paras = new OracleParameter[] {
  928. new OracleParameter(":IsReFire",(int)Constant.GoodsLevelType.ReFire),
  929. new OracleParameter(":barcode",productionData.Barcode),
  930. };
  931. #endregion
  932. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  933. // 保存失败
  934. if (result == Constant.INT_IS_ZERO)
  935. {
  936. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  937. }
  938. // 保存成功返回null
  939. return null;
  940. }
  941. /// <summary>
  942. /// 装窑车计件
  943. /// </summary>
  944. /// <param name="oracleTrConn">数据连接对象</param>
  945. /// <param name="procedure">工序对象</param>
  946. /// <param name="barcodeTable">条码信息</param>
  947. /// <param name="sUserInfo">用户基本信息</param>
  948. /// <param name="goodsID">返回的产品ID</param>
  949. /// <param name="goodsCode">返回的产品Code</param>
  950. /// <param name="goodsName">返回的产品名称</param>
  951. /// <returns>string</returns>
  952. /// <remarks>
  953. /// 陈冰 2014.09.18 新建
  954. /// </remarks>
  955. private static string AddLoadKilnCar(IDBTransaction oracleTrConn,
  956. ProcedureEntity procedure,
  957. DataTable barcodeTable,
  958. SUserInfo sUserInfo,
  959. out int goodsID,
  960. out string goodsCode,
  961. out string goodsName)
  962. {
  963. try
  964. {
  965. goodsID = Constant.INT_IS_ZERO;
  966. goodsCode = null;
  967. goodsName = null;
  968. string groutingUserCode = string.Empty;
  969. // 获得账务日期
  970. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  971. string errMsg = string.Empty;
  972. // 生产工号
  973. int workUserID = Constant.INT_IS_ZERO;
  974. // 生产工号Code
  975. string workUserCode = string.Empty;
  976. // 生产工号Name
  977. string workUserName = string.Empty;
  978. // 本批采集的批次号
  979. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  980. // 窑车批次号
  981. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  982. // 窑车状态
  983. string kilnCarStatus = string.Empty;
  984. //////////////////////////////////////////////////
  985. DataView dv = barcodeTable.DefaultView;
  986. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  987. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  988. {
  989. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  990. // 窑炉ID
  991. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  992. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  993. // 窑车ID
  994. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  995. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  996. // 窑车Code
  997. // string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  998. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  999. #region 校验窑车是否可装车
  1000. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1001. if (!string.IsNullOrEmpty(errMsg))
  1002. {
  1003. return errMsg;
  1004. }
  1005. #endregion
  1006. #region 如果窑车状态为空,需要插入窑车状态表
  1007. if (string.IsNullOrEmpty(kilnCarStatus))
  1008. {
  1009. // 插入窑车状态表
  1010. errMsg = AddkilnCarStatus(oracleTrConn, procedure, kilnCarID, kilnID, kilnCarBatchNo, sUserInfo);
  1011. if (!string.IsNullOrEmpty(errMsg))
  1012. {
  1013. return errMsg;
  1014. }
  1015. }
  1016. #endregion
  1017. #region 窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  1018. // 查询本次窑车产品的批次号
  1019. else
  1020. {
  1021. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1022. // 更改窑车状态表入窑时间
  1023. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.LoadCar, sUserInfo, procedure, kilnCarBatchNo);
  1024. if (!string.IsNullOrEmpty(errMsg))
  1025. {
  1026. return errMsg;
  1027. }
  1028. }
  1029. #endregion
  1030. // 条码信息
  1031. DataView dvFilter = barcodeTable.DefaultView;
  1032. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1033. DataTable dtNew = dvFilter.ToTable();
  1034. // 条码信息
  1035. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1036. //--------------------------------
  1037. string sqllast = "select max(createtime) as createtime from TP_PM_KilnCarGoods"
  1038. + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  1039. OracleParameter[] paras = new OracleParameter[] {
  1040. new OracleParameter(":KilnCarID",kilnCarID),
  1041. new OracleParameter(":AccountID",sUserInfo.AccountID),
  1042. };
  1043. DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sqllast, paras);
  1044. object lastcreatetime = null;
  1045. if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0 && dsReturn.Tables[0].Rows[0]["CreateTime"].ToString() != "")
  1046. {
  1047. lastcreatetime = Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"]);
  1048. }
  1049. //--------------------------------
  1050. int? maxClassesSettingID = null;
  1051. foreach (DataRow barcodeRow in dtNew.Rows)
  1052. {
  1053. // 条码
  1054. string barcode = barcodeRow["Barcode"].ToString();
  1055. // 生产工号
  1056. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1057. workUserCode = barcodeRow["UserCode"].ToString();
  1058. workUserName = barcodeRow["UserName"].ToString();
  1059. #region 校验条码有效性
  1060. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  1061. if (!string.IsNullOrEmpty(errMsg))
  1062. {
  1063. return errMsg;
  1064. }
  1065. #endregion
  1066. // 查询新插入的生产数据ID
  1067. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1068. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1069. int productionDataID = 0;
  1070. if (!string.IsNullOrEmpty(idStr))
  1071. {
  1072. productionDataID = int.Parse(idStr);
  1073. }
  1074. else
  1075. {
  1076. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1077. }
  1078. int? ClassesSettingID = null;//班次配置ID
  1079. #region 添加生产者数据
  1080. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1081. if (!string.IsNullOrEmpty(errMsg))
  1082. {
  1083. return errMsg;
  1084. }
  1085. #endregion
  1086. maxClassesSettingID = ClassesSettingID;
  1087. #region 添加生产数据
  1088. ProductionDataEntity productionData = new ProductionDataEntity();
  1089. #region 属性赋值
  1090. productionData.ClassesSettingID = ClassesSettingID;
  1091. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1092. productionData.Barcode = barcode;
  1093. productionData.CentralizedBatchNo = centralizedBatchNo;
  1094. productionData.ProductionLineID = procedure.ProductionLineID;
  1095. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1096. productionData.ProductionLineName = procedure.ProductionlineName;
  1097. productionData.CompleteProcedureID = procedure.ProcedureID;
  1098. productionData.ProcedureCode = procedure.ProcedureCode;
  1099. productionData.ProcedureName = procedure.ProcedureName;
  1100. productionData.ProcedureModel = procedure.ProcedureModel;
  1101. productionData.ModelType = procedure.ModelType;
  1102. productionData.NodeType = procedure.NodeType;
  1103. productionData.ReworkProcedureID = null;
  1104. productionData.PieceType = procedure.PieceType;
  1105. //productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  1106. if (procedure.IsSpecialRework == 0)
  1107. {
  1108. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1109. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1110. }
  1111. else
  1112. {
  1113. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1114. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  1115. }
  1116. //productionData.GoodsGrade = (int)Constant.GoodsLevelType.NoDefects;
  1117. //if (lastcreatetime != null)
  1118. //{
  1119. // productionData.CreateTime = Convert.ToDateTime(lastcreatetime);
  1120. //}
  1121. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1122. ////string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1123. ////DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  1124. ////if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1125. ////{
  1126. //// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1127. //// {
  1128. //// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1129. //// }
  1130. ////}
  1131. productionData.OrganizationID = procedure.OrganizationID;
  1132. productionData.GoodsID = goodsID;
  1133. productionData.GoodsCode = goodsCode;
  1134. productionData.GoodsName = goodsName;
  1135. productionData.UserID = workUserID;
  1136. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1137. productionData.UserName = barcodeRow["UserName"].ToString();
  1138. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1139. #region 窑炉窑车属性
  1140. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1141. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1142. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1143. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1144. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1145. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1146. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1147. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1148. #endregion
  1149. #endregion
  1150. string OutSpecialRepairflag = "0";//干补标识
  1151. //if (lastcreatetime == null)
  1152. //{
  1153. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1154. //}
  1155. //else
  1156. //{
  1157. // errMsg = AddProductionDataCreateTime(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1158. //}
  1159. if (!string.IsNullOrEmpty(errMsg))
  1160. {
  1161. return errMsg;
  1162. }
  1163. #endregion
  1164. #region 修改在产产品数据的当前工序,清空返工工序字段
  1165. InProductionEntity addInProductionEntity = new InProductionEntity();
  1166. addInProductionEntity.BarCode = barcode;
  1167. //流程工序
  1168. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1169. // 当前工序
  1170. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1171. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1172. //生产数据ID
  1173. addInProductionEntity.ProductionDataID = productionDataID;
  1174. // 工序模型
  1175. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1176. // 工序类别
  1177. addInProductionEntity.ModelType = procedure.ModelType;
  1178. // 生产工号
  1179. addInProductionEntity.UserID = workUserID;
  1180. // 缺陷标识
  1181. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1182. #region 更新在产表窑车窑炉字段
  1183. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1184. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1185. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1186. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1187. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1188. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1189. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1190. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1191. #endregion
  1192. if (procedure.IsSpecialRework == 0)
  1193. {
  1194. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1195. }
  1196. else
  1197. {
  1198. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1199. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1200. }
  1201. // 执行修改
  1202. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1203. // 执行失败
  1204. if (!string.IsNullOrEmpty(errMsg))
  1205. {
  1206. return errMsg;
  1207. }
  1208. #endregion
  1209. //#region 添加生产者数据
  1210. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1211. //if (!string.IsNullOrEmpty(errMsg))
  1212. //{
  1213. // return errMsg;
  1214. //}
  1215. //#endregion
  1216. //errMsg = UpdateKilnCarCreatetimeInfoBybarcode(oracleTrConn, productionData, sUserInfo);
  1217. //if (!string.IsNullOrEmpty(errMsg))
  1218. //{
  1219. // return errMsg;
  1220. //}
  1221. #region 插入窑车产品表
  1222. errMsg = AddKilnCarGoods(oracleTrConn,
  1223. barcode,
  1224. kilnCarID,
  1225. goodsID,
  1226. productionData.KilnCarPosition.Value,
  1227. kilnCarBatchNo,
  1228. workUserID,
  1229. workUserCode,
  1230. workUserName,
  1231. sUserInfo);
  1232. if (!string.IsNullOrEmpty(errMsg))
  1233. {
  1234. return errMsg;
  1235. }
  1236. #endregion
  1237. //#region 装车后,更新所有以前操作的工序窑车信息
  1238. //errMsg = UpdateKilnCarInfoBybarcode(oracleTrConn, productionData);
  1239. //if (!string.IsNullOrEmpty(errMsg))
  1240. //{
  1241. // return errMsg;
  1242. //}
  1243. //#endregion
  1244. }
  1245. #region 窑车生产数据
  1246. #region 插入窑车生产数据表
  1247. if (lastcreatetime == null) //加此判断为的是,在登车时落产品,进行第二些登车时,不插重复数据
  1248. {
  1249. errMsg = AddKilnCarData(oracleTrConn,
  1250. accountDate,
  1251. kilnCarID,
  1252. kilnCarBatchNo,
  1253. workUserID,
  1254. workUserCode,
  1255. workUserName,
  1256. null,
  1257. sUserInfo, maxClassesSettingID);
  1258. #region 窑车生产者
  1259. if (!string.IsNullOrEmpty(errMsg))
  1260. {
  1261. return errMsg;
  1262. }
  1263. #endregion
  1264. }
  1265. #endregion
  1266. #endregion
  1267. }
  1268. return errMsg;
  1269. }
  1270. catch (Exception ex)
  1271. {
  1272. throw ex;
  1273. }
  1274. }
  1275. /// <summary>
  1276. /// 装车后,更新所有以前操作的工序窑车信息
  1277. /// </summary>
  1278. /// <param name="oracleTrConn">连接对象</param>
  1279. /// <param name="barcode">条码</param>
  1280. /// <param name="kilnCarID">窑车号</param>
  1281. /// <param name="goodsID">产品ID</param>
  1282. /// <param name="KilnCarPosition">窑车位置</param>
  1283. /// <param name="kilnCarBatchNo">装车批次</param>
  1284. /// <param name="sUserInfo">用户基本信息</param>
  1285. /// <returns>string</returns>
  1286. private static string UpdateKilnCarInfoBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  1287. {
  1288. string sql = "update TP_PM_ProductionData set "
  1289. + " KilnID=:KilnID,"
  1290. + "KilnCode=:KilnCode,"
  1291. + "KilnName=:KilnName,"
  1292. + "KilnCarID=:KilnCarID,"
  1293. + "KilnCarCode=:KilnCarCode,"
  1294. + "KilnCarName=:KilnCarName,"
  1295. + "KilnCarBatchNo=:KilnCarBatchNo,"
  1296. + "KilnCarPosition=:KilnCarPosition,"
  1297. + "isrefire=:isrefire "
  1298. + " where barcode=:barcode";
  1299. #region 参数
  1300. OracleParameter[] paras = new OracleParameter[] {
  1301. new OracleParameter(":KilnID",productionData.KilnID),
  1302. new OracleParameter(":KilnCode",productionData.KilnCode),
  1303. new OracleParameter(":KilnName",productionData.KilnName),
  1304. new OracleParameter(":KilnCarID",productionData.KilnCarID),
  1305. new OracleParameter(":KilnCarCode",productionData.KilnCarCode),
  1306. new OracleParameter(":KilnCarName",productionData.KilnCarName),
  1307. new OracleParameter(":KilnCarBatchNo",productionData.KilnCarBatchNo),
  1308. new OracleParameter(":KilnCarPosition",productionData.KilnCarPosition),
  1309. new OracleParameter(":isrefire",productionData.IsReFire),
  1310. new OracleParameter(":barcode",productionData.Barcode),
  1311. };
  1312. #endregion
  1313. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  1314. // 保存失败
  1315. if (result == Constant.INT_IS_ZERO)
  1316. {
  1317. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1318. }
  1319. // 保存成功返回null
  1320. return null;
  1321. }
  1322. /// <summary>
  1323. /// 入窑车计件
  1324. /// </summary>
  1325. /// <param name="oracleTrConn">数据连接对象</param>
  1326. /// <param name="procedure">工序对象</param>
  1327. /// <param name="barcodeTable">条码信息</param>
  1328. /// <param name="sUserInfo">基本</param>
  1329. /// <param name="goodsID">返回的产品ID</param>
  1330. /// <param name="goodsCode">返回的产品Code</param>
  1331. /// <param name="goodsName">返回的产品名称</param>
  1332. /// <returns>string</returns>
  1333. /// <remarks>
  1334. /// 张国印 2014.10.04 新建
  1335. /// </remarks>
  1336. private static string AddIntoKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1337. out int goodsID, out string goodsCode, out string goodsName)
  1338. {
  1339. try
  1340. {
  1341. goodsID = Constant.INT_IS_ZERO;
  1342. goodsCode = string.Empty;
  1343. goodsName = string.Empty;
  1344. string groutingUserCode = string.Empty;
  1345. // 获得账务日期
  1346. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1347. string errMsg = string.Empty;
  1348. // 生产工号
  1349. int workUserID = Constant.INT_IS_ZERO;
  1350. // 生产工号Code
  1351. string workUserCode = string.Empty;
  1352. // 生产工号Name
  1353. string workUserName = string.Empty;
  1354. // 本批采集的批次号
  1355. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1356. // 窑车批次号
  1357. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  1358. // 窑车状态
  1359. string kilnCarStatus = string.Empty;
  1360. //////////////////////////////////////////////////
  1361. DataView dv = barcodeTable.DefaultView;
  1362. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1363. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1364. {
  1365. ///////////////////////////////////////////////////
  1366. // 窑车Code
  1367. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1368. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1369. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1370. #region 校验窑车是否可入窑炉
  1371. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1372. if (!string.IsNullOrEmpty(errMsg))
  1373. {
  1374. return errMsg;
  1375. }
  1376. #endregion
  1377. // 窑炉ID
  1378. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1379. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1380. // 窑车ID
  1381. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1382. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1383. //备注信息
  1384. string Remarks = dr[0]["Remarks"].ToString();
  1385. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1386. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1387. if (!string.IsNullOrEmpty(errMsg))
  1388. {
  1389. return errMsg;
  1390. }
  1391. // 查询本次窑车产品的批次号
  1392. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1393. #region 窑车表存在,查询本次窑车产品的批次号 并更改入窑车时间
  1394. //更改窑车状态表入窑时间
  1395. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.IntoKiln, sUserInfo, procedure, kilnCarBatchNo);
  1396. if (!string.IsNullOrEmpty(errMsg))
  1397. {
  1398. return errMsg;
  1399. }
  1400. #endregion
  1401. DataView dvFilter = barcodeTable.DefaultView;
  1402. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1403. DataTable dtNew = dvFilter.ToTable();
  1404. int? maxClassesSettingID = null;
  1405. // 条码信息
  1406. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1407. foreach (DataRow barcodeRow in dtNew.Rows)
  1408. {
  1409. // 条码
  1410. string barcode = barcodeRow["Barcode"].ToString();
  1411. // 生产工号
  1412. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1413. workUserCode = barcodeRow["UserCode"].ToString();
  1414. workUserName = barcodeRow["UserName"].ToString();
  1415. // 查询新插入的生产数据ID
  1416. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1417. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1418. int productionDataID = 0;
  1419. if (!string.IsNullOrEmpty(idStr))
  1420. {
  1421. productionDataID = int.Parse(idStr);
  1422. }
  1423. else
  1424. {
  1425. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1426. }
  1427. int? ClassesSettingID = null;//班次配置ID
  1428. #region 添加生产者数据
  1429. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1430. if (!string.IsNullOrEmpty(errMsg))
  1431. {
  1432. return errMsg;
  1433. }
  1434. #endregion
  1435. maxClassesSettingID = ClassesSettingID;
  1436. #region 添加生产数据
  1437. ProductionDataEntity productionData = new ProductionDataEntity();
  1438. #region 属性赋值
  1439. productionData.ClassesSettingID = ClassesSettingID;
  1440. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1441. productionData.Barcode = barcode;
  1442. productionData.CentralizedBatchNo = centralizedBatchNo;
  1443. productionData.ProductionLineID = procedure.ProductionLineID;
  1444. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1445. productionData.ProductionLineName = procedure.ProductionlineName;
  1446. productionData.CompleteProcedureID = procedure.ProcedureID;
  1447. productionData.ProcedureCode = procedure.ProcedureCode;
  1448. productionData.ProcedureName = procedure.ProcedureName;
  1449. productionData.ProcedureModel = procedure.ProcedureModel;
  1450. productionData.ModelType = procedure.ModelType;
  1451. productionData.NodeType = procedure.NodeType;
  1452. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1453. productionData.ReworkProcedureID = null;
  1454. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1455. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1456. productionData.PieceType = procedure.PieceType;
  1457. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1458. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1459. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1460. ////// string sqlReFire = @"select
  1461. ////// isrefire
  1462. ////// from tp_pm_inproduction where barcode=:barcode
  1463. ////// ";
  1464. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1465. ////// new OracleParameter(":barcode",barcode),
  1466. ////// };
  1467. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1468. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1469. ////// {
  1470. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1471. ////// {
  1472. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1473. ////// }
  1474. ////// }
  1475. productionData.OrganizationID = procedure.OrganizationID;
  1476. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1477. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1478. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1479. productionData.UserID = workUserID;
  1480. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1481. productionData.UserName = barcodeRow["UserName"].ToString();
  1482. #region 窑炉窑车属性
  1483. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1484. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1485. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1486. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1487. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1488. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1489. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1490. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1491. productionData.Remarks = "";
  1492. #endregion
  1493. #endregion
  1494. string OutSpecialRepairflag = "0";//干补标识
  1495. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1496. if (!string.IsNullOrEmpty(errMsg))
  1497. {
  1498. return errMsg;
  1499. }
  1500. #endregion
  1501. #region 修改在产产品数据的当前工序,清空返工工序字段
  1502. InProductionEntity addInProductionEntity = new InProductionEntity();
  1503. addInProductionEntity.BarCode = barcode;
  1504. //流程工序
  1505. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1506. // 当前工序
  1507. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1508. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1509. //生产数据ID
  1510. addInProductionEntity.ProductionDataID = productionDataID;
  1511. // 工序模型
  1512. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1513. // 工序类别
  1514. addInProductionEntity.ModelType = procedure.ModelType;
  1515. // 生产工号
  1516. addInProductionEntity.UserID = workUserID;
  1517. // 缺陷标识
  1518. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1519. #region 更新在产表窑车窑炉字段
  1520. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1521. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1522. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1523. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1524. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1525. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1526. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1527. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1528. #endregion
  1529. // 执行修改
  1530. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1531. // 执行失败
  1532. if (!string.IsNullOrEmpty(errMsg))
  1533. {
  1534. return errMsg;
  1535. }
  1536. #endregion
  1537. //#region 添加生产者数据
  1538. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1539. //if (!string.IsNullOrEmpty(errMsg))
  1540. //{
  1541. // return errMsg;
  1542. //}
  1543. //#endregion
  1544. }
  1545. #region 插入窑车生产数据表
  1546. errMsg = AddKilnCarData(oracleTrConn,
  1547. accountDate,
  1548. kilnCarID,
  1549. kilnCarBatchNo,
  1550. workUserID,
  1551. workUserCode,
  1552. workUserName,
  1553. Remarks,
  1554. sUserInfo, maxClassesSettingID);
  1555. if (!string.IsNullOrEmpty(errMsg))
  1556. {
  1557. return errMsg;
  1558. }
  1559. #endregion
  1560. //#region 窑车生产者
  1561. //// 查询新插入的生产数据ID
  1562. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1563. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1564. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1565. //if (!string.IsNullOrEmpty(errMsg))
  1566. //{
  1567. // return errMsg;
  1568. //}
  1569. //#endregion
  1570. }
  1571. return errMsg;
  1572. }
  1573. catch (Exception ex)
  1574. {
  1575. throw ex;
  1576. }
  1577. }
  1578. /// <summary>
  1579. /// 校验窑车的工序与当前工序是否可以到达(重烧后,未走重烧入窑)
  1580. /// </summary>
  1581. /// <param name="oracleTrConn">数据连接</param>
  1582. /// <param name="barcode">产品条码</param>
  1583. /// <returns>string</returns>
  1584. private static string GetKilnCarProcedureIDByKilnCarID(IDBTransaction oracleTrConn, int KilnCarID, int ProcedureID)
  1585. {
  1586. string sql = @"select ProcedureID from TP_PM_KilnCarStatus where KilnCarID=:KilnCarID";
  1587. OracleParameter[] paras = new OracleParameter[] {
  1588. new OracleParameter(":KilnCarID", KilnCarID) ,
  1589. };
  1590. int currentProcedureID = 0;
  1591. DataSet result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1592. if (result != null && result.Tables[0].Rows.Count > 0)
  1593. {
  1594. currentProcedureID = Convert.ToInt32(result.Tables[0].Rows[0][0]);
  1595. }
  1596. sql = @"select pro.ProcedureID
  1597. from TP_PC_ProcedureFlow flow
  1598. inner join TP_PC_Procedure pro
  1599. on flow.arriveprocedureid = pro.procedureid
  1600. inner join TP_PC_ProductionLine line
  1601. on pro.ProductionLineID = line.ProductionLineID
  1602. where flow.ProcedureID = :currentProcedureID
  1603. and flow.FlowFlag = 2";
  1604. paras = new OracleParameter[] {
  1605. new OracleParameter(":currentProcedureID", currentProcedureID) ,
  1606. };
  1607. result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1608. int returnProcedureID = 0;
  1609. if (result != null && result.Tables[0].Rows.Count > 0)
  1610. {
  1611. if (result.Tables[0].Select("ProcedureID=" + ProcedureID).Length > 0)
  1612. {
  1613. returnProcedureID = 1;
  1614. }
  1615. }
  1616. // 保存失败
  1617. if (returnProcedureID == 0)
  1618. {
  1619. return string.Format("当前工序不允许进行操作", "条码", "保存");
  1620. }
  1621. return null;
  1622. }
  1623. /// <summary>
  1624. /// 出窑车计件
  1625. /// </summary>
  1626. /// <param name="oracleTrConn">数据连接对象</param>
  1627. /// <param name="procedure">工序对象</param>
  1628. /// <param name="barcodeTable">条码信息</param>
  1629. /// <param name="sUserInfo">用户基本信息</param>
  1630. /// <param name="goodsID">返回的产品ID</param>
  1631. /// <param name="goodsCode">返回的产品Code</param>
  1632. /// <param name="goodsName">返回的产品名称</param>
  1633. /// <returns>string</returns>
  1634. /// <remarks>
  1635. /// 张国印 2014.10.04 新建
  1636. /// </remarks>
  1637. private static string AddOutKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1638. out int goodsID, out string goodsCode, out string goodsName)
  1639. {
  1640. try
  1641. {
  1642. goodsID = Constant.INT_IS_ZERO;
  1643. goodsCode = string.Empty;
  1644. goodsName = string.Empty;
  1645. string groutingUserCode = string.Empty;
  1646. // 获得账务日期
  1647. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1648. string errMsg = string.Empty;
  1649. // 生产工号
  1650. int workUserID = Constant.INT_IS_ZERO;
  1651. // 生产工号Code
  1652. string workUserCode = string.Empty;
  1653. // 生产工号Name
  1654. string workUserName = string.Empty;
  1655. // 本批采集的批次号
  1656. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1657. // 窑车批次号
  1658. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  1659. // 窑车状态
  1660. string kilnCarStatus = string.Empty;
  1661. //////////////////////////////////////////////////
  1662. DataView dv = barcodeTable.DefaultView;
  1663. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1664. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1665. {
  1666. // 窑车Code
  1667. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1668. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1669. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1670. string Remarks = dr[0]["Remarks"].ToString();
  1671. #region 校验窑车是否可出窑炉
  1672. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1673. if (!string.IsNullOrEmpty(errMsg))
  1674. {
  1675. return errMsg;
  1676. }
  1677. #endregion
  1678. // 窑炉ID
  1679. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1680. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1681. // 窑车ID
  1682. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1683. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1684. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1685. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1686. if (!string.IsNullOrEmpty(errMsg))
  1687. {
  1688. return errMsg;
  1689. }
  1690. // 查询本次窑车产品的批次号
  1691. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1692. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  1693. //更改窑车状态表入窑时间
  1694. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.OutKiln, sUserInfo, procedure, kilnCarBatchNo);
  1695. if (!string.IsNullOrEmpty(errMsg))
  1696. {
  1697. return errMsg;
  1698. }
  1699. #endregion
  1700. //// 条码信息
  1701. DataView dvFilter = barcodeTable.DefaultView;
  1702. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1703. DataTable dtNew = dvFilter.ToTable();
  1704. int? maxClassesSettingID = null;
  1705. // 条码信息
  1706. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1707. foreach (DataRow barcodeRow in dtNew.Rows)
  1708. {
  1709. // 条码
  1710. string barcode = barcodeRow["Barcode"].ToString();
  1711. // 生产工号
  1712. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1713. workUserCode = barcodeRow["UserCode"].ToString();
  1714. workUserName = barcodeRow["UserName"].ToString();
  1715. // 查询新插入的生产数据ID
  1716. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1717. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1718. int productionDataID = 0;
  1719. if (!string.IsNullOrEmpty(idStr))
  1720. {
  1721. productionDataID = int.Parse(idStr);
  1722. }
  1723. else
  1724. {
  1725. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1726. }
  1727. int? ClassesSettingID = null;//班次配置ID
  1728. #region 添加生产者数据
  1729. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1730. if (!string.IsNullOrEmpty(errMsg))
  1731. {
  1732. return errMsg;
  1733. }
  1734. #endregion
  1735. maxClassesSettingID = ClassesSettingID;
  1736. #region 添加生产数据
  1737. ProductionDataEntity productionData = new ProductionDataEntity();
  1738. #region 属性赋值
  1739. productionData.ClassesSettingID = ClassesSettingID;
  1740. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1741. productionData.Barcode = barcode;
  1742. productionData.CentralizedBatchNo = centralizedBatchNo;
  1743. productionData.ProductionLineID = procedure.ProductionLineID;
  1744. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1745. productionData.ProductionLineName = procedure.ProductionlineName;
  1746. productionData.CompleteProcedureID = procedure.ProcedureID;
  1747. productionData.ProcedureCode = procedure.ProcedureCode;
  1748. productionData.ProcedureName = procedure.ProcedureName;
  1749. productionData.ProcedureModel = procedure.ProcedureModel;
  1750. productionData.ModelType = procedure.ModelType;
  1751. productionData.NodeType = procedure.NodeType;
  1752. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1753. productionData.ReworkProcedureID = null;
  1754. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1755. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1756. productionData.PieceType = procedure.PieceType;
  1757. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1758. ////// string sqlReFire = @"select
  1759. ////// isrefire
  1760. ////// from tp_pm_inproduction where barcode=:barcode
  1761. ////// ";
  1762. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1763. ////// new OracleParameter(":barcode",barcode),
  1764. ////// };
  1765. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1766. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1767. ////// {
  1768. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1769. ////// {
  1770. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1771. ////// }
  1772. ////// }
  1773. productionData.OrganizationID = procedure.OrganizationID;
  1774. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1775. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1776. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1777. productionData.UserID = workUserID;
  1778. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1779. productionData.UserName = barcodeRow["UserName"].ToString();
  1780. #region 窑炉窑车属性
  1781. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1782. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1783. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1784. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1785. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1786. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1787. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1788. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1789. productionData.Remarks = barcodeRow["Remarks"].ToString();
  1790. #endregion
  1791. #endregion
  1792. string OutSpecialRepairflag = "0";//干补标识
  1793. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1794. if (!string.IsNullOrEmpty(errMsg))
  1795. {
  1796. return errMsg;
  1797. }
  1798. #endregion
  1799. #region 修改在产产品数据的当前工序,清空返工工序字段
  1800. InProductionEntity addInProductionEntity = new InProductionEntity();
  1801. addInProductionEntity.BarCode = barcode;
  1802. //流程工序
  1803. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1804. // 当前工序
  1805. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1806. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1807. // 生产数据ID
  1808. addInProductionEntity.ProductionDataID = productionDataID;
  1809. // 工序模型
  1810. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1811. // 工序类别
  1812. addInProductionEntity.ModelType = procedure.ModelType;
  1813. // 生产工号
  1814. addInProductionEntity.UserID = workUserID;
  1815. // 缺陷标识
  1816. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1817. #region 更新在产表窑车窑炉字段
  1818. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1819. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1820. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1821. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1822. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1823. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1824. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1825. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1826. #endregion
  1827. // 执行修改
  1828. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1829. // 执行失败
  1830. if (!string.IsNullOrEmpty(errMsg))
  1831. {
  1832. return errMsg;
  1833. }
  1834. #endregion
  1835. //#region 添加生产者数据
  1836. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1837. //if (!string.IsNullOrEmpty(errMsg))
  1838. //{
  1839. // return errMsg;
  1840. //}
  1841. //#endregion
  1842. }
  1843. #region 插入窑车生产数据表
  1844. errMsg = AddKilnCarData(oracleTrConn,
  1845. accountDate,
  1846. kilnCarID,
  1847. kilnCarBatchNo,
  1848. workUserID,
  1849. workUserCode,
  1850. workUserName,
  1851. Remarks,
  1852. sUserInfo, maxClassesSettingID);
  1853. if (!string.IsNullOrEmpty(errMsg))
  1854. {
  1855. return errMsg;
  1856. }
  1857. #endregion
  1858. //#region 窑车生产者
  1859. //// 查询新插入的生产数据ID
  1860. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1861. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1862. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1863. //if (!string.IsNullOrEmpty(errMsg))
  1864. //{
  1865. // return errMsg;
  1866. //}
  1867. //#endregion
  1868. }
  1869. return errMsg;
  1870. }
  1871. catch (Exception ex)
  1872. {
  1873. throw ex;
  1874. }
  1875. }
  1876. /// <summary>
  1877. /// 卸窑车计件
  1878. /// </summary>
  1879. /// <param name="oracleTrConn">数据连接对象</param>
  1880. /// <param name="procedure">工序对象</param>
  1881. /// <param name="barcodeTable">条码信息</param>
  1882. /// <param name="sUserInfo">用户基本信息</param>
  1883. /// <param name="goodsID">返回的产品ID</param>
  1884. /// <param name="goodsCode">返回的产品Code</param>
  1885. /// <param name="goodsName">返回的产品名称</param>
  1886. /// <returns>string</returns>
  1887. /// <remarks>
  1888. /// 张国印 2014.10.04 新建
  1889. /// </remarks>
  1890. private static string AddUnloadingKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1891. out int goodsID, out string goodsCode, out string goodsName)
  1892. {
  1893. try
  1894. {
  1895. goodsID = Constant.INT_IS_ZERO;
  1896. goodsCode = string.Empty;
  1897. goodsName = string.Empty;
  1898. string groutingUserCode = string.Empty;
  1899. // 获得账务日期
  1900. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1901. string errMsg = string.Empty;
  1902. // 生产工号
  1903. int workUserID = Constant.INT_IS_ZERO;
  1904. // 生产工号Code
  1905. string workUserCode = string.Empty;
  1906. // 生产工号Name
  1907. string workUserName = string.Empty;
  1908. // 本批采集的批次号
  1909. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1910. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  1911. // 窑车批次号
  1912. string kilnCarBatchNo = null;//System.Guid.NewGuid().ToString();
  1913. // 窑车状态
  1914. string kilnCarStatus = string.Empty;
  1915. DataView dv = barcodeTable.DefaultView;
  1916. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1917. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1918. {
  1919. // 窑车Code
  1920. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1921. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1922. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1923. string Remarks = dr[0]["Remarks"].ToString();
  1924. #region 校验窑车是否可出窑炉
  1925. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1926. if (!string.IsNullOrEmpty(errMsg))
  1927. {
  1928. return errMsg;
  1929. }
  1930. #endregion
  1931. // 窑炉ID
  1932. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1933. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1934. // 窑车ID
  1935. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1936. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1937. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1938. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1939. if (!string.IsNullOrEmpty(errMsg))
  1940. {
  1941. return errMsg;
  1942. }
  1943. // 查询本次窑车产品的批次号
  1944. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1945. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  1946. //更改窑车状态表入窑时间
  1947. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.UnloadCar, sUserInfo, procedure, kilnCarBatchNo);
  1948. if (!string.IsNullOrEmpty(errMsg))
  1949. {
  1950. return errMsg;
  1951. }
  1952. #endregion
  1953. // 条码信息
  1954. DataView dvFilter = barcodeTable.DefaultView;
  1955. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1956. DataTable dtNew = dvFilter.ToTable();
  1957. int? maxClassesSettingID = null;
  1958. // 条码信息
  1959. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1960. foreach (DataRow barcodeRow in dtNew.Rows)
  1961. {
  1962. // 条码
  1963. string barcode = barcodeRow["Barcode"].ToString();
  1964. // 生产工号
  1965. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1966. workUserCode = barcodeRow["UserCode"].ToString();
  1967. workUserName = barcodeRow["UserName"].ToString();
  1968. // 查询新插入的生产数据ID
  1969. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1970. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1971. int productionDataID = 0;
  1972. if (!string.IsNullOrEmpty(idStr))
  1973. {
  1974. productionDataID = int.Parse(idStr);
  1975. }
  1976. else
  1977. {
  1978. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1979. }
  1980. int? ClassesSettingID = null;//班次配置ID
  1981. #region 添加生产者数据
  1982. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1983. if (!string.IsNullOrEmpty(errMsg))
  1984. {
  1985. return errMsg;
  1986. }
  1987. #endregion
  1988. maxClassesSettingID = ClassesSettingID;
  1989. #region 添加生产数据
  1990. ProductionDataEntity productionData = new ProductionDataEntity();
  1991. #region 属性赋值
  1992. productionData.ClassesSettingID = ClassesSettingID;
  1993. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1994. productionData.Barcode = barcode;
  1995. productionData.CentralizedBatchNo = centralizedBatchNo;
  1996. productionData.ProductionLineID = procedure.ProductionLineID;
  1997. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1998. productionData.ProductionLineName = procedure.ProductionlineName;
  1999. productionData.CompleteProcedureID = procedure.ProcedureID;
  2000. productionData.ProcedureCode = procedure.ProcedureCode;
  2001. productionData.ProcedureName = procedure.ProcedureName;
  2002. productionData.ProcedureModel = procedure.ProcedureModel;
  2003. productionData.ModelType = procedure.ModelType;
  2004. productionData.NodeType = procedure.NodeType;
  2005. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2006. productionData.ReworkProcedureID = null;
  2007. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2008. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2009. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2010. productionData.PieceType = procedure.PieceType;
  2011. ////// string sqlReFire = @"select
  2012. ////// isrefire
  2013. ////// from tp_pm_inproduction where barcode=:barcode
  2014. ////// ";
  2015. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  2016. ////// new OracleParameter(":barcode",barcode),
  2017. ////// };
  2018. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  2019. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  2020. ////// {
  2021. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  2022. ////// {
  2023. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  2024. ////// }
  2025. ////// }
  2026. productionData.OrganizationID = procedure.OrganizationID;
  2027. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  2028. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  2029. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  2030. productionData.UserID = workUserID;
  2031. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2032. productionData.UserName = barcodeRow["UserName"].ToString();
  2033. #region 窑炉窑车属性
  2034. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2035. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2036. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2037. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2038. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2039. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2040. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2041. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2042. productionData.Remarks = barcodeRow["Remarks"].ToString();
  2043. #endregion
  2044. #endregion
  2045. string OutSpecialRepairflag = "0";//干补标识
  2046. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2047. if (!string.IsNullOrEmpty(errMsg))
  2048. {
  2049. return errMsg;
  2050. }
  2051. #endregion
  2052. if (procedure.NodeType == Constant.ProcedureNodeType.Middle.GetHashCode())
  2053. {
  2054. #region 中间工序 修改在产产品数据的当前工序,清空返工工序字段
  2055. InProductionEntity addInProductionEntity = new InProductionEntity();
  2056. addInProductionEntity.BarCode = barcode;
  2057. //流程工序ID
  2058. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2059. // 当前工序
  2060. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2061. // 生产数据ID
  2062. addInProductionEntity.ProductionDataID = productionDataID;
  2063. // 工序模型
  2064. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2065. // 工序类别
  2066. addInProductionEntity.ModelType = procedure.ModelType;
  2067. // 生产工号
  2068. addInProductionEntity.UserID = workUserID;
  2069. // 缺陷标识
  2070. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2071. #region 更新在产表窑车窑炉字段
  2072. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2073. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2074. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2075. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2076. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2077. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2078. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2079. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2080. #endregion
  2081. // 执行修改
  2082. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2083. // 执行失败
  2084. if (!string.IsNullOrEmpty(errMsg))
  2085. {
  2086. return errMsg;
  2087. }
  2088. #endregion
  2089. }
  2090. else if (procedure.NodeType == Constant.ProcedureNodeType.End.GetHashCode())
  2091. {
  2092. #region 结束工序 添加成品数据 删除在产产品数据
  2093. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  2094. finishedProduct.BarCode = barcode;
  2095. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  2096. if (!string.IsNullOrEmpty(errMsg))
  2097. {
  2098. return errMsg;
  2099. }
  2100. InProductionEntity delInProductionEntity = new InProductionEntity();
  2101. delInProductionEntity.BarCode = barcode;
  2102. // 执行删除 在产数据
  2103. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  2104. // 执行失败
  2105. if (!string.IsNullOrEmpty(errMsg))
  2106. {
  2107. return errMsg;
  2108. }
  2109. #endregion
  2110. }
  2111. //#region 添加生产者数据
  2112. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2113. //if (!string.IsNullOrEmpty(errMsg))
  2114. //{
  2115. // return errMsg;
  2116. //}
  2117. //#endregion
  2118. }
  2119. #region 插入窑车生产数据表
  2120. errMsg = AddKilnCarData(oracleTrConn,
  2121. accountDate,
  2122. kilnCarID,
  2123. kilnCarBatchNo,
  2124. workUserID,
  2125. workUserCode,
  2126. workUserName,
  2127. Remarks,
  2128. sUserInfo, maxClassesSettingID);
  2129. if (!string.IsNullOrEmpty(errMsg))
  2130. {
  2131. return errMsg;
  2132. }
  2133. #endregion
  2134. //#region 窑车生产者
  2135. //// 查询新插入的生产数据ID
  2136. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  2137. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  2138. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  2139. //if (!string.IsNullOrEmpty(errMsg))
  2140. //{
  2141. // return errMsg;
  2142. //}
  2143. //#endregion
  2144. #region 删除TP_PM_KilnCarGoods数据 按照窑车ID
  2145. errMsg = DeleteKilnCarGoodsByKilnCarID(oracleTrConn, kilnCarID);
  2146. if (!string.IsNullOrEmpty(errMsg))
  2147. {
  2148. return errMsg;
  2149. }
  2150. #endregion
  2151. }
  2152. return errMsg;
  2153. }
  2154. catch (Exception ex)
  2155. {
  2156. throw ex;
  2157. }
  2158. }
  2159. /// <summary>
  2160. /// 窑车补件计件
  2161. /// </summary>
  2162. /// <param name="oracleTrConn">数据连接对象</param>
  2163. /// <param name="procedure">工序对象</param>
  2164. /// <param name="barcodeTable">条码信息</param>
  2165. /// <param name="sUserInfo">用户基本信息</param>
  2166. /// <param name="goodsID">返回的产品ID</param>
  2167. /// <param name="goodsCode">返回的产品Code</param>
  2168. /// <param name="goodsName">返回的产品名称</param>
  2169. /// <returns>string</returns>
  2170. /// <remarks>
  2171. /// 张国印 2014.10.05 新建
  2172. /// </remarks>
  2173. private static string AddKilnCarSupplement(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  2174. out int goodsID, out string goodsCode, out string goodsName)
  2175. {
  2176. try
  2177. {
  2178. goodsID = Constant.INT_IS_ZERO;
  2179. goodsCode = null;
  2180. goodsName = null;
  2181. string groutingUserCode = string.Empty;
  2182. // 获得账务日期
  2183. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  2184. string errMsg = "";
  2185. // 生产工号
  2186. int workUserID = Constant.INT_IS_ZERO;
  2187. // 生产工号Code
  2188. string workUserCode = string.Empty;
  2189. // 生产工号Name
  2190. string workUserName = string.Empty;
  2191. // 本批采集的批次号
  2192. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  2193. // 窑车Code
  2194. string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  2195. // 窑车批次号
  2196. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  2197. // 窑车状态
  2198. string kilnCarStatus = string.Empty;
  2199. #region 校验窑车是否可装车
  2200. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  2201. if (!string.IsNullOrEmpty(errMsg))
  2202. {
  2203. return errMsg;
  2204. }
  2205. #endregion
  2206. // 窑炉ID
  2207. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  2208. //// 窑车ID
  2209. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  2210. int kilnID = 0;
  2211. // 窑车ID
  2212. int kilnCarID = 0;
  2213. // 条码信息
  2214. foreach (DataRow barcodeRow in barcodeTable.Rows)
  2215. {
  2216. kilnID = Convert.ToInt32(barcodeRow["kilnID"]);
  2217. kilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2218. //窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  2219. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  2220. // 条码
  2221. string barcode = barcodeRow["Barcode"].ToString();
  2222. // 生产工号
  2223. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  2224. workUserCode = barcodeRow["UserCode"].ToString();
  2225. workUserName = barcodeRow["UserName"].ToString();
  2226. //#region 校验条码有效性
  2227. //errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2228. //if (!string.IsNullOrEmpty(errMsg))
  2229. //{
  2230. // return errMsg;
  2231. //}
  2232. //#endregion
  2233. if (procedure.CollectType == 1)
  2234. {
  2235. #region 校验条码有效性
  2236. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2237. if (!string.IsNullOrEmpty(errMsg))
  2238. {
  2239. return errMsg;
  2240. }
  2241. #endregion
  2242. }
  2243. else
  2244. {
  2245. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  2246. tp_pm_groutingdailydetail.goodscode,
  2247. tp_pm_groutingdailydetail.goodsname,
  2248. tp_pm_groutingdailydetail.usercode as groutingUserCode
  2249. from tp_pm_groutingdailydetail where barcode=:barcode
  2250. ";
  2251. OracleParameter[] ReFireparas = new OracleParameter[] {
  2252. new OracleParameter(":barcode",barcode),
  2253. };
  2254. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  2255. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  2256. {
  2257. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  2258. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  2259. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  2260. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  2261. }
  2262. }
  2263. // 查询新插入的生产数据ID
  2264. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  2265. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2266. int productionDataID = 0;
  2267. if (!string.IsNullOrEmpty(idStr))
  2268. {
  2269. productionDataID = int.Parse(idStr);
  2270. }
  2271. else
  2272. {
  2273. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2274. }
  2275. int? ClassesSettingID = null;//班次配置ID
  2276. #region 添加生产者数据
  2277. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  2278. if (!string.IsNullOrEmpty(errMsg))
  2279. {
  2280. return errMsg;
  2281. }
  2282. #endregion
  2283. #region 添加生产数据
  2284. ProductionDataEntity productionData = new ProductionDataEntity();
  2285. #region 属性赋值
  2286. productionData.ClassesSettingID = ClassesSettingID;
  2287. productionData.ProductionDataID = Convert.ToInt32(idStr);
  2288. productionData.Barcode = barcode;
  2289. productionData.CentralizedBatchNo = centralizedBatchNo;
  2290. productionData.ProductionLineID = procedure.ProductionLineID;
  2291. productionData.ProductionLineCode = procedure.ProductionlineCode;
  2292. productionData.ProductionLineName = procedure.ProductionlineName;
  2293. productionData.CompleteProcedureID = procedure.ProcedureID;
  2294. productionData.ProcedureCode = procedure.ProcedureCode;
  2295. productionData.ProcedureName = procedure.ProcedureName;
  2296. productionData.ProcedureModel = procedure.ProcedureModel;
  2297. productionData.ModelType = procedure.ModelType;
  2298. productionData.NodeType = procedure.NodeType;
  2299. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2300. productionData.ReworkProcedureID = null;
  2301. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2302. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2303. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2304. productionData.OrganizationID = procedure.OrganizationID;
  2305. productionData.GoodsID = goodsID;
  2306. productionData.GoodsCode = goodsCode;
  2307. productionData.GoodsName = goodsName;
  2308. productionData.UserID = workUserID;
  2309. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2310. productionData.UserName = barcodeRow["UserName"].ToString();
  2311. productionData.PieceType = procedure.PieceType;
  2312. #region 窑炉窑车属性
  2313. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2314. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2315. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2316. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2317. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2318. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2319. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2320. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2321. #endregion
  2322. #endregion
  2323. string OutSpecialRepairflag = "0";//干补标识
  2324. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2325. if (!string.IsNullOrEmpty(errMsg))
  2326. {
  2327. return errMsg;
  2328. }
  2329. #endregion
  2330. #region 修改在产产品数据的当前工序,清空返工工序字段
  2331. InProductionEntity addInProductionEntity = new InProductionEntity();
  2332. addInProductionEntity.BarCode = barcode;
  2333. //流程工序
  2334. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2335. // 当前工序
  2336. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  2337. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2338. //生产数据ID
  2339. addInProductionEntity.ProductionDataID = productionDataID;
  2340. // 工序模型
  2341. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2342. // 工序类别
  2343. addInProductionEntity.ModelType = procedure.ModelType;
  2344. // 生产工号
  2345. addInProductionEntity.UserID = workUserID;
  2346. // 缺陷标识
  2347. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2348. #region 更新在产表窑车窑炉字段
  2349. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2350. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2351. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2352. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2353. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2354. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2355. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2356. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2357. #endregion
  2358. // 执行修改
  2359. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2360. // 执行失败
  2361. if (!string.IsNullOrEmpty(errMsg))
  2362. {
  2363. return errMsg;
  2364. }
  2365. #endregion
  2366. //#region 添加生产者数据
  2367. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2368. //if (!string.IsNullOrEmpty(errMsg))
  2369. //{
  2370. // return errMsg;
  2371. //}
  2372. //#endregion
  2373. #region 插入窑车产品表
  2374. errMsg = AddKilnCarGoods(oracleTrConn,
  2375. barcode,
  2376. kilnCarID,
  2377. goodsID,
  2378. productionData.KilnCarPosition.Value,
  2379. kilnCarBatchNo,
  2380. workUserID,
  2381. workUserCode,
  2382. workUserName,
  2383. sUserInfo);
  2384. if (!string.IsNullOrEmpty(errMsg))
  2385. {
  2386. return errMsg;
  2387. }
  2388. #endregion
  2389. }
  2390. return errMsg;
  2391. }
  2392. catch (Exception ex)
  2393. {
  2394. throw ex;
  2395. }
  2396. }
  2397. /// <summary>
  2398. /// 插入窑车生产数据表(装车)
  2399. /// </summary>
  2400. /// <param name="oracleTrConn">连接对象</param>
  2401. /// <param name="accountDate">账务日期</param>
  2402. /// <param name="kilnCarID">窑车ID</param>
  2403. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2404. /// <param name="workUserID">生产工号ID</param>
  2405. /// <param name="workUserCode">生产工号Code</param>
  2406. /// <param name="workUserName">生产工号Name</param>
  2407. /// <param name="sUserInfo">用户基本信息</param>
  2408. /// <returns>string</returns>
  2409. private static string AddKilnCarDataCreateTime(IDBTransaction oracleTrConn,
  2410. DateTime accountDate,
  2411. int kilnCarID,
  2412. string kilnCarBatchNo,
  2413. int workUserID,
  2414. string workUserCode,
  2415. string workUserName,
  2416. string remarks,
  2417. DateTime? createtime,
  2418. SUserInfo sUserInfo)
  2419. {
  2420. #region SQL
  2421. string sql = "insert into tp_pm_kilncardata"
  2422. + " (kilncarbatchno,"
  2423. + " kilncarid,"
  2424. + " kilnid,"
  2425. + " productionlineid,"
  2426. + " procedureid,"
  2427. + " procedurecode,"
  2428. + " procedurename,"
  2429. + " proceduremodel,"
  2430. + " modeltype,"
  2431. + " piecetype,"
  2432. + " kilncarstatus,"
  2433. + " UserID,"
  2434. + " UserCode,"
  2435. + " UserName,"
  2436. + " loadingtime,"
  2437. + " intokilntime,"
  2438. + " outkilntime,"
  2439. + " unloadingtime,"
  2440. + " accountdate,"
  2441. + " accountid,"
  2442. + " createuserid,"
  2443. + " updateuserid,"
  2444. + " createtime,"
  2445. + " remarks)"
  2446. + " select "
  2447. + " :pkilncarbatchno,"
  2448. + " kilncarid,"
  2449. + " kilnid,"
  2450. + " productionlineid,"
  2451. + " procedureid,"
  2452. + " procedurecode,"
  2453. + " procedurename,"
  2454. + " proceduremodel,"
  2455. + " modeltype,"
  2456. + " piecetype,"
  2457. + " kilncarstatus,"
  2458. + " :puserID,"
  2459. + " :puserCode,"
  2460. + " :puserName,"
  2461. + " loadingtime,"
  2462. + " intokilntime,"
  2463. + " outkilntime,"
  2464. + " unloadingtime,"
  2465. + " :paccountdate,"
  2466. + " :paccountid,"
  2467. + " :pcreateuserid,"
  2468. + " :pupdateuserid,"
  2469. + " :createtime,"
  2470. + " :remarks"
  2471. + " from tp_pm_kilncarstatus"
  2472. + " where kilncarid = :pkilncarid";
  2473. #endregion
  2474. #region 参数
  2475. OracleParameter[] paras = new OracleParameter[] {
  2476. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2477. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2478. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2479. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2480. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2481. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2482. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2483. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2484. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2485. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2486. new OracleParameter(":createtime",OracleDbType.Date,Convert.ToDateTime(createtime),ParameterDirection.Input),
  2487. };
  2488. #endregion
  2489. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2490. // 保存失败
  2491. if (result != Constant.INT_IS_ONE)
  2492. {
  2493. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2494. }
  2495. // 保存成功返回null
  2496. return null;
  2497. }
  2498. /// <summary>
  2499. /// 插入窑车生产数据表
  2500. /// </summary>
  2501. /// <param name="oracleTrConn">连接对象</param>
  2502. /// <param name="accountDate">账务日期</param>
  2503. /// <param name="kilnCarID">窑车ID</param>
  2504. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2505. /// <param name="workUserID">生产工号ID</param>
  2506. /// <param name="workUserCode">生产工号Code</param>
  2507. /// <param name="workUserName">生产工号Name</param>
  2508. /// <param name="sUserInfo">用户基本信息</param>
  2509. /// <returns>string</returns>
  2510. private static string AddKilnCarData(IDBTransaction oracleTrConn,
  2511. DateTime accountDate,
  2512. int kilnCarID,
  2513. string kilnCarBatchNo,
  2514. int workUserID,
  2515. string workUserCode,
  2516. string workUserName,
  2517. string remarks,
  2518. SUserInfo sUserInfo, int? ClassesSettingID)
  2519. {
  2520. #region SQL
  2521. string sql = "insert into tp_pm_kilncardata"
  2522. + " (kilncarbatchno,"
  2523. + " kilncarid,"
  2524. + " kilnid,"
  2525. + " productionlineid,"
  2526. + " procedureid,"
  2527. + " procedurecode,"
  2528. + " procedurename,"
  2529. + " proceduremodel,"
  2530. + " modeltype,"
  2531. + " piecetype,"
  2532. + " kilncarstatus,"
  2533. + " UserID,"
  2534. + " UserCode,"
  2535. + " UserName,"
  2536. + " loadingtime,"
  2537. + " intokilntime,"
  2538. + " outkilntime,"
  2539. + " unloadingtime,"
  2540. + " accountdate,"
  2541. + " accountid,"
  2542. + " createuserid,"
  2543. + " updateuserid,"
  2544. + " classesSettingID,"
  2545. + " remarks)"
  2546. + " select "
  2547. + " :pkilncarbatchno,"
  2548. + " kilncarid,"
  2549. + " kilnid,"
  2550. + " productionlineid,"
  2551. + " procedureid,"
  2552. + " procedurecode,"
  2553. + " procedurename,"
  2554. + " proceduremodel,"
  2555. + " modeltype,"
  2556. + " piecetype,"
  2557. + " kilncarstatus,"
  2558. + " :puserID,"
  2559. + " :puserCode,"
  2560. + " :puserName,"
  2561. + " loadingtime,"
  2562. + " intokilntime,"
  2563. + " outkilntime,"
  2564. + " unloadingtime,"
  2565. + " :paccountdate,"
  2566. + " :paccountid,"
  2567. + " :pcreateuserid,"
  2568. + " :pupdateuserid,"
  2569. + " :classesSettingID,"
  2570. + " :remarks"
  2571. + " from tp_pm_kilncarstatus"
  2572. + " where kilncarid = :pkilncarid";
  2573. #endregion
  2574. #region 参数
  2575. OracleParameter[] paras = new OracleParameter[] {
  2576. new OracleParameter(":classesSettingID",OracleDbType.Int32,ClassesSettingID,ParameterDirection.Input),
  2577. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2578. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2579. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2580. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2581. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2582. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2583. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2584. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2585. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2586. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2587. };
  2588. #endregion
  2589. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2590. // 保存失败
  2591. if (result != Constant.INT_IS_ONE)
  2592. {
  2593. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2594. }
  2595. // 保存成功返回null
  2596. return null;
  2597. }
  2598. /// <summary>
  2599. /// 插入窑车产品表
  2600. /// </summary>
  2601. /// <param name="oracleTrConn">连接对象</param>
  2602. /// <param name="barcode">条码</param>
  2603. /// <param name="kilnCarID">窑车号</param>
  2604. /// <param name="goodsID">产品ID</param>
  2605. /// <param name="KilnCarPosition">窑车位置</param>
  2606. /// <param name="kilnCarBatchNo">装车批次</param>
  2607. /// <param name="sUserInfo">用户基本信息</param>
  2608. /// <returns>string</returns>
  2609. private static string AddKilnCarGoods(IDBTransaction oracleTrConn, string barcode, int kilnCarID, int goodsID, int KilnCarPosition, string kilnCarBatchNo, int workUserID,
  2610. string workUserCode,
  2611. string workUserName, SUserInfo sUserInfo)
  2612. {
  2613. string sqlExist = "select 1 from tp_pm_kilncargoods where barcode=:barcode and accountid=:accountid";
  2614. OracleParameter[] parasExist = new OracleParameter[] {
  2615. new OracleParameter(":barcode",barcode),
  2616. new OracleParameter(":accountid",sUserInfo.AccountID),
  2617. };
  2618. oracleTrConn.ExecuteNonQuery(sqlExist, parasExist);
  2619. DataSet dsExist = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  2620. if (dsExist != null && dsExist.Tables[0].Rows.Count == 0)
  2621. {
  2622. string sql = "insert into tp_pm_kilncargoods"
  2623. + " (barcode,"
  2624. + " kilncarid,"
  2625. + " goodsid,"
  2626. + " kilncarposition,"
  2627. + " kilncarbatchno,"
  2628. + " accountid,"
  2629. + " userid,"
  2630. + " usercode,"
  2631. + " username,"
  2632. + " createuserid,"
  2633. + " updateuserid)"
  2634. + " values"
  2635. + " (:barcode,"
  2636. + " :kilncarid,"
  2637. + " :goodsid,"
  2638. + " :kilncarposition,"
  2639. + " :kilncarbatchno,"
  2640. + " :accountid,"
  2641. + " :userid,"
  2642. + " :usercode,"
  2643. + " :username,"
  2644. + " :createuserid,"
  2645. + " :updateuserid)";
  2646. #region 参数
  2647. OracleParameter[] paras = new OracleParameter[] {
  2648. new OracleParameter(":barcode",barcode),
  2649. new OracleParameter(":kilncarid",kilnCarID),
  2650. new OracleParameter(":goodsid",goodsID),
  2651. new OracleParameter(":kilncarposition",KilnCarPosition),
  2652. new OracleParameter(":kilncarbatchno",kilnCarBatchNo),
  2653. new OracleParameter(":accountid",sUserInfo.AccountID),
  2654. new OracleParameter(":createuserid",sUserInfo.UserID),
  2655. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2656. new OracleParameter(":userid",workUserID),
  2657. new OracleParameter(":usercode",workUserCode),
  2658. new OracleParameter(":username",workUserName),
  2659. };
  2660. #endregion
  2661. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2662. // 保存失败
  2663. if (result != Constant.INT_IS_ONE)
  2664. {
  2665. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2666. }
  2667. }
  2668. // 保存成功返回null
  2669. return null;
  2670. }
  2671. /// <summary>
  2672. /// 查询本次批次号
  2673. /// </summary>
  2674. /// <param name="oracleTrConn">连接对象</param>
  2675. /// <param name="kilnCarID">窑车ID</param>
  2676. /// <returns>string</returns>
  2677. private static string GetKilnCarBatchNoByKilnCarID(IDBTransaction oracleTrConn, int kilnCarID)
  2678. {
  2679. string sql = "SELECT Max(KilnCarBatchNo) FROM TP_PM_KilnCarGoods where KilnCarID = :kilnCarID";
  2680. #region 参数
  2681. OracleParameter[] paras = new OracleParameter[] {
  2682. new OracleParameter(":kilnCarID",kilnCarID),
  2683. };
  2684. #endregion
  2685. string batchNo = oracleTrConn.GetSqlResultToStr(sql, paras);
  2686. if (!string.IsNullOrEmpty(batchNo))
  2687. {
  2688. return batchNo;
  2689. }
  2690. else
  2691. {
  2692. return System.Guid.NewGuid().ToString();
  2693. }
  2694. }
  2695. /// <summary>
  2696. /// 插入窑车状态表
  2697. /// </summary>
  2698. /// <param name="oracleTrConn">连接对象</param>
  2699. /// <param name="procedure">工序ID</param>
  2700. /// <param name="kilnCarID">窑车ID</param>
  2701. /// <param name="kilnID">窑炉ID</param>
  2702. /// <param name="sUserInfo">用户基本信息</param>
  2703. /// <returns>string</returns>
  2704. private static string AddkilnCarStatus(IDBTransaction oracleTrConn, ProcedureEntity procedure, int kilnCarID, int kilnID, string kilnCarBatchNo, SUserInfo sUserInfo)
  2705. {
  2706. #region SQL
  2707. string sql = " insert into tp_pm_kilncarstatus "
  2708. + " (kilncarid, "
  2709. + " kilnid, "
  2710. + " productionlineid, "
  2711. + " procedureid, "
  2712. + " procedurecode, "
  2713. + " procedurename, "
  2714. + " proceduremodel, "
  2715. + " modeltype, "
  2716. + " piecetype, "
  2717. + " kilncarstatus, "
  2718. + " loadingtime, "
  2719. + " accountid, "
  2720. + " createuserid, "
  2721. + " updateuserid,kilnCarBatchNo) "
  2722. + " values "
  2723. + " (:kilncarid, "
  2724. + " :kilnid, "
  2725. + " :productionlineid, "
  2726. + " :procedureid, "
  2727. + " :procedurecode, "
  2728. + " :procedurename, "
  2729. + " :proceduremodel, "
  2730. + " :modeltype, "
  2731. + " :piecetype, "
  2732. + " '0', "
  2733. + " sysdate, "
  2734. + " :accountid, "
  2735. + " :createuserid, "
  2736. + " :updateuserid,:kilnCarBatchNo)";
  2737. #endregion
  2738. #region 参数
  2739. OracleParameter[] paras = new OracleParameter[] {
  2740. new OracleParameter(":kilncarid",kilnCarID),
  2741. new OracleParameter(":kilnid",kilnID),
  2742. new OracleParameter(":productionlineid",procedure.ProductionLineID),
  2743. new OracleParameter(":procedureid",procedure.ProcedureID),
  2744. new OracleParameter(":procedurecode",procedure.ProcedureCode),
  2745. new OracleParameter(":procedurename",procedure.ProcedureName),
  2746. new OracleParameter(":proceduremodel",procedure.ProcedureModel),
  2747. new OracleParameter(":modeltype",procedure.ModelType),
  2748. new OracleParameter(":piecetype",procedure.PieceType),
  2749. new OracleParameter(":accountID",sUserInfo.AccountID),
  2750. new OracleParameter(":createuserid",sUserInfo.UserID),
  2751. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2752. new OracleParameter(":kilnCarBatchNo",kilnCarBatchNo),
  2753. };
  2754. #endregion
  2755. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2756. // 保存失败
  2757. if (result != Constant.INT_IS_ONE)
  2758. {
  2759. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2760. }
  2761. // 保存成功返回null
  2762. return null;
  2763. }
  2764. /// <summary>
  2765. /// 更新窑车状态表中的对应的时间
  2766. /// </summary>
  2767. /// <param name="oracleTrConn">数据连接</param>
  2768. /// <param name="kilnCarID">窑车ID</param>
  2769. /// <param name="pModelType">操作类型</param>
  2770. /// <param name="sUserInfo">用户基本信息</param>
  2771. /// <returns>
  2772. /// 张国印 2014.10.04 新建
  2773. /// </returns>
  2774. private static string UpdatekilnCarStatus(IDBTransaction oracleTrConn, int kilnCarID, Constant.ProcedureModelType pModelType, SUserInfo sUserInfo, ProcedureEntity procedure, string kilnCarBatchNo)
  2775. {
  2776. if (pModelType == Constant.ProcedureModelType.LoadCar)
  2777. {
  2778. //procedure.ProcedureID,
  2779. //procedure.ProcedureCode,
  2780. //procedure.ProcedureName,
  2781. //procedure.ModelType
  2782. #region 装窑车操作时,更新tp_pm_kilncarstatus的装车时间
  2783. #region SQL语句和参数
  2784. string sql = " Update tp_pm_kilncarstatus Set"
  2785. + " KilnCarStatus = :pKilnCarStatus, "
  2786. + " LoadingTime = sysdate, "
  2787. + " IntoKilnTime = null, "
  2788. + " OutKilnTime = null, "
  2789. + " UnloadingTime = null, "
  2790. + " UpdateUserID = :pUpdateUserID, "
  2791. + " ProcedureID = :ProcedureID, "
  2792. + " ProcedureCode = :ProcedureCode, "
  2793. + " ProcedureName = :ProcedureName, "
  2794. + " ModelType = :ModelType, "
  2795. + " kilnCarBatchNo = :kilnCarBatchNo "
  2796. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2797. OracleParameter[] paras = new OracleParameter[]
  2798. {
  2799. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  2800. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2801. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2802. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2803. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2804. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2805. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2806. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2807. new OracleParameter(":kilnCarBatchNo", OracleDbType.Varchar2, kilnCarBatchNo, ParameterDirection.Input),
  2808. };
  2809. #endregion
  2810. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2811. // 保存失败
  2812. if (result != Constant.INT_IS_ONE)
  2813. {
  2814. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2815. }
  2816. #endregion
  2817. }
  2818. else if (pModelType == Constant.ProcedureModelType.IntoKiln)
  2819. {
  2820. #region 入窑操作时,更新tp_pm_kilncarstatus的入窑时间
  2821. #region SQL语句和参数
  2822. string sql = " Update tp_pm_kilncarstatus Set"
  2823. + " KilnCarStatus = :pKilnCarStatus, "
  2824. + " IntoKilnTime = sysdate, "
  2825. + " UpdateUserID = :pUpdateUserID, "
  2826. + " ProcedureID = :ProcedureID, "
  2827. + " ProcedureCode = :ProcedureCode, "
  2828. + " ProcedureName = :ProcedureName, "
  2829. + " ModelType = :ModelType "
  2830. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2831. OracleParameter[] paras = new OracleParameter[]
  2832. {
  2833. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 1, ParameterDirection.Input),
  2834. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2835. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2836. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2837. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2838. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2839. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2840. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2841. };
  2842. #endregion
  2843. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2844. // 保存失败
  2845. if (result != Constant.INT_IS_ONE)
  2846. {
  2847. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2848. }
  2849. #endregion
  2850. }
  2851. else if (pModelType == Constant.ProcedureModelType.OutKiln)
  2852. {
  2853. #region 出窑操作时,更新tp_pm_kilncarstatus的出窑时间
  2854. #region SQL语句和参数
  2855. string sql = " Update tp_pm_kilncarstatus Set"
  2856. + " OutKilnTime = sysdate, "
  2857. + " UpdateUserID = :pUpdateUserID, "
  2858. + " ProcedureID = :ProcedureID, "
  2859. + " ProcedureCode = :ProcedureCode, "
  2860. + " ProcedureName = :ProcedureName, "
  2861. + " ModelType = :ModelType "
  2862. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2863. OracleParameter[] paras = new OracleParameter[]
  2864. {
  2865. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2866. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2867. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2868. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2869. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2870. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2871. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2872. };
  2873. #endregion
  2874. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2875. // 保存失败
  2876. if (result != Constant.INT_IS_ONE)
  2877. {
  2878. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2879. }
  2880. #endregion
  2881. }
  2882. else if (pModelType == Constant.ProcedureModelType.UnloadCar)
  2883. {
  2884. #region 卸窑车操作时,更新tp_pm_kilncarstatus的卸窑车时间
  2885. #region SQL语句和参数
  2886. string sql = " Update tp_pm_kilncarstatus Set"
  2887. + " KilnCarStatus = :pKilnCarStatus, "
  2888. //+ " LoadingTime = null, "
  2889. //+ " IntoKilnTime = null, "
  2890. //+ " OutKilnTime = null, "
  2891. + " UnloadingTime = sysdate, "
  2892. + " UpdateUserID = :pUpdateUserID, "
  2893. + " ProcedureID = :ProcedureID, "
  2894. + " ProcedureCode = :ProcedureCode, "
  2895. + " ProcedureName = :ProcedureName, "
  2896. + " ModelType = :ModelType "
  2897. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2898. OracleParameter[] paras = new OracleParameter[]
  2899. {
  2900. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  2901. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2902. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2903. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2904. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2905. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2906. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2907. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2908. };
  2909. #endregion
  2910. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2911. // 保存失败
  2912. if (result != Constant.INT_IS_ONE)
  2913. {
  2914. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2915. }
  2916. #endregion
  2917. }
  2918. // 保存成功返回null
  2919. return string.Empty;
  2920. }
  2921. /// <summary>
  2922. /// 校验窑车是否可用
  2923. /// </summary>
  2924. /// <param name="oracleTrConn">连接对象</param>
  2925. /// <param name="pProcedureId">工序ID</param>
  2926. /// <param name="kilnCarCode">窑车号</param>
  2927. /// <param name="pModelType">操作类型</param>
  2928. /// <param name="sUserInfo">用户基本信息</param>
  2929. /// <param name="kilnCarStatus">窑车状态</param>
  2930. /// <returns>string</returns>
  2931. private static string CheckKilnCarrStatus(IDBTransaction oracleTrConn, int pProcedureId, string kilnCarCode, int pModelType, SUserInfo sUserInfo, out string kilnCarStatus)
  2932. {
  2933. kilnCarStatus = string.Empty;
  2934. OracleParameter[] paras = new OracleParameter[]{
  2935. new OracleParameter("in_accountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  2936. new OracleParameter("in_kilnCarCode",OracleDbType.NVarchar2, kilnCarCode,ParameterDirection.Input),
  2937. new OracleParameter("in_modelType",OracleDbType.Int32, pModelType,ParameterDirection.Input),
  2938. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  2939. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  2940. new OracleParameter("in_procedureid",OracleDbType.Int32, pProcedureId,ParameterDirection.Input),
  2941. // 验证能否卸窑
  2942. new OracleParameter("in_UserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2943. };
  2944. DataSet returnDataSet = oracleTrConn.ExecStoredProcedure("PRO_PM_CheckKilnCar", paras);
  2945. string errMsg = paras[3].Value.ToString() == "null" ? string.Empty : paras[3].Value.ToString();
  2946. if (string.IsNullOrEmpty(errMsg))
  2947. {
  2948. if (pModelType == (int)Constant.ProcedureModelType.LoadCar)
  2949. {
  2950. kilnCarStatus = returnDataSet.Tables[0].Rows[0]["KilnCarStatus"].ToString();
  2951. }
  2952. }
  2953. return errMsg;
  2954. }
  2955. /// <summary>
  2956. /// 添加生产者
  2957. /// </summary>
  2958. /// <param name="oracleTrConn">连接对象</param>
  2959. /// <param name="accountDate">账务日期</param>
  2960. /// <param name="productionDataID">生产数据ID</param>
  2961. /// <param name="workUserID">生产工号ID</param>
  2962. /// <param name="workUserCode">生产工号Code</param>
  2963. /// <param name="sUserInfo">用户基本信息</param>
  2964. /// <returns>string</returns>
  2965. private static string AddProducer(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo, ref int? ClassesSettingID)
  2966. {
  2967. // 参数
  2968. OracleParameter[] paras;
  2969. #region 查询班次配置表是否有数据
  2970. string sql = "select max(ClassesSettingID)"
  2971. + " from tp_pc_classessetting"
  2972. + " where Valueflag =1 and AccountID = :accountID"
  2973. + " and UserID = :userID"
  2974. + " and AccountDate = :accountDate";
  2975. paras = new OracleParameter[] {
  2976. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2977. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2978. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2979. };
  2980. string countStr = oracleTrConn.GetSqlResultToStr(sql, paras);
  2981. int classesSettingID = 0;
  2982. #endregion
  2983. #region 没有班次配置数据,将工号所属员工插入班次配置表中
  2984. if (string.IsNullOrEmpty(countStr) || Constant.INT_IS_ZERO == int.Parse(countStr))
  2985. {
  2986. // 查询新插入的班次配置表ID
  2987. sql = "select SEQ_PC_ClassesSetting_ID.nextval from dual";
  2988. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2989. // 新插入的班次配置表ID
  2990. if (!string.IsNullOrEmpty(idStr))
  2991. {
  2992. classesSettingID = int.Parse(idStr);
  2993. }
  2994. else
  2995. {
  2996. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2997. }
  2998. ClassesSettingID = Convert.ToInt32(classesSettingID);
  2999. #region 班次配置总表
  3000. sql = "insert into tp_pc_classessetting"
  3001. + " (ClassesSettingID,accountdate, "
  3002. + " userid, "
  3003. + " usercode, "
  3004. + " accountid, "
  3005. + " createuserid, "
  3006. + " updateuserid,ORGANIZATIONID)"
  3007. + " select "
  3008. + " :classesSettingID, "
  3009. + " :accountdate, "
  3010. + " USERID, "
  3011. + " UserCode, "
  3012. + " accountid,"
  3013. + " :createuserid,"
  3014. + " :updateuserid,ORGANIZATIONID"
  3015. + " from TP_MST_User"
  3016. + " where UserID = :userID";
  3017. paras = new OracleParameter[] {
  3018. new OracleParameter(":classesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3019. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3020. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3021. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3022. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3023. };
  3024. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3025. // 失败
  3026. if (result != Constant.INT_IS_ONE)
  3027. {
  3028. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3029. }
  3030. #endregion
  3031. #region 班次配置明细SQL
  3032. sql = " insert into tp_pc_classesdetail"
  3033. + " (classessettingid,"
  3034. + " accountdate,"
  3035. + " userid,"
  3036. + " usercode,"
  3037. + " UJobsID,"
  3038. + " staffid,"
  3039. + " SJobsID,"
  3040. + " staffstatus,"
  3041. + " accountid,"
  3042. + " createuserid,"
  3043. + " updateuserid,Uorganizationid,Sorganizationid)"
  3044. + " select "
  3045. + " :classessettingid,"
  3046. + " :accountdate,"
  3047. + " userStaff.Userid,"
  3048. + " :usercode,"
  3049. + " userStaff.Ujobsid,"
  3050. + " userStaff.Staffid,"
  3051. + " staff.Jobs,"
  3052. + " staff.staffstatus,"
  3053. + " :accountID,"
  3054. + " :createuserid,"
  3055. + " :updateuserid,user2.organizationid,staff.organizationid"
  3056. + " from TP_MST_UserStaff userStaff"
  3057. + " inner join tp_hr_staff staff on staff.staffid = userStaff.Staffid"
  3058. + " inner join tp_mst_user user2 on userStaff.userid = user2.userid"
  3059. + " where (staff.StaffStatus = 1 or staff.StaffStatus = 2)"
  3060. + " and staff.ValueFlag = 1"
  3061. + " and staff.AccountID = :accountID"
  3062. + " and userStaff.UserID = :userID";
  3063. paras = new OracleParameter[] {
  3064. new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3065. new OracleParameter(":accountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3066. new OracleParameter(":usercode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  3067. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3068. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3069. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3070. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3071. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3072. };
  3073. result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3074. // 失败
  3075. if (result == Constant.INT_IS_ZERO)
  3076. {
  3077. return string.Format(Messages.MSG_CMN_W007, "生产工号[" + workUserCode + "]没有配置生产员工");
  3078. }
  3079. #endregion
  3080. }
  3081. else
  3082. {
  3083. ClassesSettingID = int.Parse(countStr);
  3084. }
  3085. #endregion
  3086. //#region 将班次配置表中的数据插入生产者表中
  3087. //sql = "insert into tp_pm_producer"
  3088. // + " (productiondataid,"
  3089. // + " staffid,"
  3090. // + " userid,"
  3091. // + " usercode,"
  3092. // + " UJobsID,"
  3093. // + " staffstatus,"
  3094. // + " SJobsID,"
  3095. // + " classessettingid"
  3096. // + " )"
  3097. // + " select :productiondataid,"
  3098. // + " staffid,"
  3099. // + " userid,"
  3100. // + " usercode,"
  3101. // + " UJobsID,"
  3102. // + " staffstatus,"
  3103. // + " SJobsID,"
  3104. // + " :classessettingid"
  3105. // + " from tp_pc_classesdetail"
  3106. // + " where ValueFlag = 1"
  3107. // + " and classessettingid = (select max(ClassesSettingID)"
  3108. // + " from TP_PC_ClassesSetting"
  3109. // + " where ValueFlag = 1 and AccountDate=:accountDate"
  3110. // + " and UserID = :userID)";
  3111. //paras = new OracleParameter[] {
  3112. // new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  3113. // new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID.ToString()=="0"?null:classesSettingID.ToString(),ParameterDirection.Input),
  3114. // new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3115. // new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3116. // };
  3117. //int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3118. //// 失败
  3119. //if (resultCount == Constant.INT_IS_ZERO)
  3120. //{
  3121. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3122. //}
  3123. //#endregion
  3124. return null;
  3125. }
  3126. /// <summary>
  3127. /// 窑车生产者
  3128. /// </summary>
  3129. /// <param name="oracleTrConn">连接对象</param>
  3130. /// <param name="accountDate">账务日期</param>
  3131. /// <param name="kilnCarDataID">窑车生产数据ID</param>
  3132. /// <param name="workUserID">生产工号ID</param>
  3133. /// <param name="sUserInfo">用户基本信息</param>
  3134. /// <returns>string</returns>
  3135. private static string AddKilnCarProducer(IDBTransaction oracleTrConn, DateTime accountDate, int kilnCarDataID, int workUserID, SUserInfo sUserInfo)
  3136. {
  3137. // 参数
  3138. OracleParameter[] paras;
  3139. #region 将班次配置表中的数据插入生产者表中
  3140. string sql = "insert into TP_PM_KilnCarProducer"
  3141. + " (KilnCarDataID,"
  3142. + " staffid,"
  3143. + " userid,"
  3144. + " usercode,"
  3145. + " Ujobsid,"
  3146. + " staffstatus,"
  3147. + " Sjobsid,"
  3148. + " classessettingid"
  3149. + " )"
  3150. + " select :kilnCarDataID,"
  3151. + " staffid,"
  3152. + " userid,"
  3153. + " usercode,"
  3154. + " Ujobsid,"
  3155. + " staffstatus,"
  3156. + " Sjobsid,"
  3157. + " classessettingid"
  3158. + " from tp_pc_classesdetail"
  3159. + " where ValueFlag = 1"
  3160. + " and classessettingid = (select max(ClassesSettingID)"
  3161. + " from TP_PC_ClassesSetting"
  3162. + " where ValueFlag = 1 and AccountDate=:accountDate"
  3163. + " and UserID = :userID)";
  3164. paras = new OracleParameter[] {
  3165. new OracleParameter(":kilnCarDataID",OracleDbType.Int32,kilnCarDataID,ParameterDirection.Input),
  3166. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3167. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3168. };
  3169. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3170. // 失败
  3171. if (resultCount == Constant.INT_IS_ZERO)
  3172. {
  3173. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3174. }
  3175. #endregion
  3176. return null;
  3177. }
  3178. /// <summary>
  3179. /// 添加生产数据
  3180. /// </summary>
  3181. /// <param name="oracleTrConn">连接对象</param>
  3182. /// <param name="accountDate">账务日期</param>
  3183. /// <param name="productionData">生产数据</param>
  3184. /// <param name="sUserInfo">用户基本信息</param>
  3185. /// <returns>string</returns>
  3186. /// <remarks>
  3187. /// 陈冰 2014.09.18 新建
  3188. /// </remarks>
  3189. private static string AddProductionDataCreateTime(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  3190. {
  3191. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3192. // string selectSql = @"select TP_PM_GroutingProduct.GroutingDate,
  3193. // TP_PM_GroutingProduct.GroutingUserID,
  3194. // TP_PM_GroutingProduct.GroutingUserCode,
  3195. // TP_PM_GroutingProduct.GroutingNum,
  3196. // TP_PM_GroutingProduct.GroutingMouldCode,
  3197. // TP_PM_GroutingProduct.MouldCode,
  3198. // TP_PM_GroutingDaily.GroutingDailyID,
  3199. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3200. // TP_PM_GroutingDaily.GroutingLineID,
  3201. // TP_PM_GroutingDaily.GroutingLineCode,
  3202. // TP_PM_GroutingDaily.GroutingLineName,
  3203. // TP_PM_GroutingDaily.GMouldTypeID,
  3204. // TP_PM_GroutingDaily.CanManyTimes,
  3205. // TP_PM_GroutingDailyDetail.GroutingLineDetailID
  3206. // from TP_PM_GroutingProduct
  3207. // left join TP_PM_GroutingDaily
  3208. // on TP_PM_GroutingProduct.GroutingDailyID=TP_PM_GroutingDaily.GroutingDailyID
  3209. // left join TP_PM_GroutingDailyDetail
  3210. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  3211. // where TP_PM_GroutingProduct.barcode=:barcode";
  3212. //这地方连了两张表,为了成检的时候,次品在次新增
  3213. string returnVal = "";
  3214. string selectSql = @"select
  3215. GroutingDate,
  3216. GroutingUserID,
  3217. GroutingUserCode,
  3218. GroutingNum,
  3219. GroutingMouldCode,
  3220. MouldCode,
  3221. GroutingDailyID,
  3222. GroutingDailyDetailID,
  3223. GroutingLineID,
  3224. GroutingLineCode,
  3225. GroutingLineName,
  3226. GMouldTypeID,
  3227. CanManyTimes,
  3228. GroutingLineDetailID,
  3229. SpecialRepairflag
  3230. from tp_pm_inproduction where barcode=:barcode
  3231. union
  3232. select
  3233. GroutingDate,
  3234. GroutingUserID,
  3235. GroutingUserCode,
  3236. GroutingNum,
  3237. GroutingMouldCode,
  3238. MouldCode,
  3239. GroutingDailyID,
  3240. GroutingDailyDetailID,
  3241. GroutingLineID,
  3242. GroutingLineCode,
  3243. GroutingLineName,
  3244. GMouldTypeID,
  3245. CanManyTimes,
  3246. GroutingLineDetailID,
  3247. SpecialRepairflag
  3248. from TP_PM_InProductionTrash where barcode=:barcode
  3249. ";
  3250. OracleParameter[] selectparas = new OracleParameter[] {
  3251. new OracleParameter(":barcode",productionData.Barcode),
  3252. };
  3253. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  3254. DateTime GroutingDate = new DateTime();
  3255. int GroutingUserID = 0, SpecialRepairflag = 0;
  3256. string GroutingUserCode = "";
  3257. int GroutingNum = 0;
  3258. string GroutingMouldCode = "";
  3259. string MouldCode = "";
  3260. //注浆日报ID
  3261. int GroutingDailyID = 0;
  3262. //注浆日报明细ID
  3263. int GroutingDailyDetailID = 0;
  3264. //成型生产线ID
  3265. int GroutingLineID = 0;
  3266. //成型生产线编码
  3267. string GroutingLineCode = "";
  3268. // 成型生产线名称
  3269. string GroutingLineName = "";
  3270. //成型线类型ID
  3271. int GMouldTypeID = 0;
  3272. // 能否多次注浆
  3273. int CanManyTimes = 0;
  3274. // 成型生产线明细ID
  3275. int GroutingLineDetailID = 0;
  3276. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3277. {
  3278. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3279. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3280. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3281. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3282. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3283. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3284. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3285. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3286. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3287. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3288. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3289. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3290. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3291. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3292. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3293. returnVal = SpecialRepairflag.ToString();
  3294. }
  3295. #endregion
  3296. #region 更新窑炉窑车属性
  3297. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3298. {
  3299. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3300. if (ds != null)
  3301. {
  3302. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3303. {
  3304. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3305. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3306. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3307. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3308. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3309. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3310. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3311. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3312. }
  3313. }
  3314. }
  3315. #endregion
  3316. //string sql = "select createtime from TP_PM_KilnCarGoods"
  3317. // + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  3318. //OracleParameter[] paras = new OracleParameter[] {
  3319. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3320. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3321. //};
  3322. //DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sql, paras);
  3323. //if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0)
  3324. //{
  3325. // sql = "update TP_PM_ProductionData set "
  3326. // + " CreateTime=:CreateTime"
  3327. // + " where barcode=:barcode and ProcedureID=:ProcedureID and KilnCarID=:KilnCarID and AccountID=:AccountID";
  3328. // paras = new OracleParameter[] {
  3329. // new OracleParameter(":CreateTime",Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"])),
  3330. // new OracleParameter(":barcode",productionData.Barcode),
  3331. // new OracleParameter(":ProcedureID",productionData.CompleteProcedureID),
  3332. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3333. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3334. // };
  3335. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3336. //}
  3337. #region SQL
  3338. string sql = "insert into tp_pm_productiondata"
  3339. + " ("
  3340. + " barcode,"
  3341. + " centralizedbatchno,"
  3342. + " productionlineid,"
  3343. + " productionlinecode,"
  3344. + " productionlinename,"
  3345. + " procedureid,"
  3346. + " procedurecode,"
  3347. + " procedurename,"
  3348. + " proceduremodel,"
  3349. + " modeltype,"
  3350. + " piecetype,"
  3351. + " isreworked,"
  3352. + " nodetype,"
  3353. + " ispublicbody,"
  3354. + " isrefire,"
  3355. + " organizationid,"
  3356. + " goodsid,"
  3357. + " goodscode,"
  3358. + " goodsname,"
  3359. + " userid,"
  3360. + " usercode,"
  3361. + " username,"
  3362. + " kilnid,"
  3363. + " kilncode,"
  3364. + " kilnname,"
  3365. + " kilncarid,"
  3366. + " kilncarcode,"
  3367. + " kilncarname,"
  3368. + " kilncarbatchno,"
  3369. + " kilncarposition,"
  3370. + " reworkprocedureid,"
  3371. + " reworkprocedurecode,"
  3372. + " reworkprocedurename,"
  3373. + " remarks,"
  3374. + " accountdate,"
  3375. + " accountid,"
  3376. + " GoodsLevelID,"
  3377. + " GoodsLevelTypeID,"
  3378. + " createuserid,"
  3379. + " updateuserid,"
  3380. + " GroutingDate,"
  3381. + " GroutingUserID,"
  3382. + " GroutingUserCode,"
  3383. + " GroutingNum,"
  3384. + " GroutingMouldCode,"
  3385. + " MouldCode,"
  3386. + "GroutingDailyID,"
  3387. + "GroutingDailyDetailID,"
  3388. + "GroutingLineID,"
  3389. + " GroutingLineCode,"
  3390. + "GroutingLineName,"
  3391. + "GMouldTypeID,"
  3392. + "CanManyTimes,"
  3393. + "GroutingLineDetailID,"
  3394. + "CreateTime,SpecialRepairflag"
  3395. + ")"
  3396. + " values"
  3397. + " ("
  3398. + " :barcode,"
  3399. + " :centralizedbatchno,"
  3400. + " :productionlineid,"
  3401. + " :productionlinecode,"
  3402. + " :productionlinename,"
  3403. + " :procedureid,"
  3404. + " :procedurecode,"
  3405. + " :procedurename,"
  3406. + " :proceduremodel,"
  3407. + " :modeltype,"
  3408. + " :piecetype,"
  3409. + " :isreworked,"
  3410. + " :nodetype,"
  3411. + " :ispublicbody,"
  3412. + " :isrefire,"
  3413. + " :organizationid,"
  3414. + " :goodsid,"
  3415. + " :goodscode,"
  3416. + " :goodsname,"
  3417. + " :userid,"
  3418. + " :usercode,"
  3419. + " :username,"
  3420. + " :kilnid,"
  3421. + " :kilncode,"
  3422. + " :kilnname,"
  3423. + " :kilncarid,"
  3424. + " :kilncarcode,"
  3425. + " :kilncarname,"
  3426. + " :kilncarbatchno,"
  3427. + " :kilncarposition,"
  3428. + " :reworkprocedureid,"
  3429. + " :reworkprocedurecode,"
  3430. + " :reworkprocedurename,"
  3431. + " :remarks,"
  3432. + " :accountdata,"
  3433. + " :accountid,"
  3434. + " :GoodsLevelID,"
  3435. + " :GoodsLevelTypeID,"
  3436. + " :createuserid,"
  3437. + " :updateuserid,"
  3438. + " :groutingdate,"
  3439. + " :groutinguserid,"
  3440. + " :groutingusercode,"
  3441. + " :groutingnum,"
  3442. + " :groutingmouldcode,"
  3443. + " :mouldcode,"
  3444. + ":groutingdailyid,"
  3445. + ":groutingdailydetailid,"
  3446. + ":groutinglineid,"
  3447. + " :groutinglinecode,"
  3448. + ":groutinglinename,"
  3449. + ":gmouldtypeid,"
  3450. + ":canmanytimes,"
  3451. + ":groutinglinedetailid,"
  3452. + ":CreateTime,:SpecialRepairflag"
  3453. + ")";
  3454. #endregion
  3455. #region OracleParameter
  3456. OracleParameter[] paras = new OracleParameter[] {
  3457. new OracleParameter(":barcode",productionData.Barcode),
  3458. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  3459. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  3460. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  3461. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  3462. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  3463. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  3464. new OracleParameter(":procedurename",productionData.ProcedureName),
  3465. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  3466. new OracleParameter(":modeltype",productionData.ModelType),
  3467. new OracleParameter(":piecetype",productionData.PieceType),
  3468. new OracleParameter(":isreworked",productionData.IsReworked),
  3469. new OracleParameter(":nodetype",productionData.NodeType),
  3470. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3471. new OracleParameter(":isrefire",productionData.IsReFire),
  3472. new OracleParameter(":organizationid",productionData.OrganizationID),
  3473. new OracleParameter(":goodsid",productionData.GoodsID),
  3474. new OracleParameter(":goodscode",productionData.GoodsCode),
  3475. new OracleParameter(":goodsname",productionData.GoodsName),
  3476. new OracleParameter(":userid",productionData.UserID),
  3477. new OracleParameter(":usercode",productionData.UserCode),
  3478. new OracleParameter(":username",productionData.UserName),
  3479. new OracleParameter(":kilnid",productionData.KilnID),
  3480. new OracleParameter(":kilncode",productionData.KilnCode),
  3481. new OracleParameter(":kilnname",productionData.KilnName),
  3482. new OracleParameter(":kilncarid",productionData.KilnCarID),
  3483. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  3484. new OracleParameter(":kilncarname",productionData.KilnCarName),
  3485. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  3486. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  3487. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  3488. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  3489. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  3490. new OracleParameter(":remarks",productionData.Remarks),
  3491. new OracleParameter(":accountdata",accountDate),
  3492. new OracleParameter(":accountid",sUserInfo.AccountID),
  3493. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  3494. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  3495. new OracleParameter(":createuserid",sUserInfo.UserID),
  3496. new OracleParameter(":updateuserid",sUserInfo.UserID),
  3497. new OracleParameter(":groutingdate",GroutingDate),
  3498. new OracleParameter(":groutinguserid",GroutingUserID),
  3499. new OracleParameter(":groutingusercode",GroutingUserCode),
  3500. new OracleParameter(":groutingnum",GroutingNum),
  3501. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  3502. new OracleParameter(":mouldcode",MouldCode),
  3503. new OracleParameter(":groutingdailyid",GroutingDailyID),
  3504. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  3505. new OracleParameter(":groutinglineid",GroutingLineID),
  3506. new OracleParameter(":groutinglinecode",GroutingLineCode),
  3507. new OracleParameter(":groutinglinename",GroutingLineName),
  3508. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  3509. new OracleParameter(":canmanytimes",CanManyTimes),
  3510. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  3511. new OracleParameter(":CreateTime",productionData.CreateTime),
  3512. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  3513. };
  3514. #endregion
  3515. foreach (OracleParameter para in paras)
  3516. {
  3517. if (string.IsNullOrEmpty(para.Value + ""))
  3518. {
  3519. para.Value = DBNull.Value;
  3520. }
  3521. }
  3522. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3523. OutSpecialRepairflag = returnVal;
  3524. // 失败
  3525. if (result != Constant.INT_IS_ONE)
  3526. {
  3527. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3528. }
  3529. // 成功返回null
  3530. return null;
  3531. }
  3532. /// <summary>
  3533. /// 添加生产数据
  3534. /// </summary>
  3535. /// <param name="oracleTrConn">连接对象</param>
  3536. /// <param name="accountDate">账务日期</param>
  3537. /// <param name="productionData">生产数据</param>
  3538. /// <param name="sUserInfo">用户基本信息</param>
  3539. /// <param name="isSendBody">是否交坯</param>
  3540. /// <returns>string</returns>
  3541. /// <remarks>
  3542. /// 陈冰 2014.09.18 新建
  3543. /// xuwei 2019-09-17 修改
  3544. /// </remarks>
  3545. private static string AddProductionDataDeliverMud(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag
  3546. , out DataSet outGroutingProduct,bool isSendBody=false)
  3547. {
  3548. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3549. string selectSql = "";
  3550. string returnVal = "";
  3551. //xuwei fix 2019-09-23 修正非交坯时 productionData.GroutingDailyDetailID 为空无法得到结果
  3552. //改用 条码查询
  3553. //selectSql = @"select GroutingDate,
  3554. // ClassesSettingID,
  3555. // UserID as GroutingUserID,
  3556. // UserCode as GroutingUserCode,
  3557. // GroutingCount as GroutingNum,
  3558. // GroutingMouldCode,
  3559. // MouldCode,
  3560. // GroutingDailyID,
  3561. // GroutingDailyDetailID,
  3562. // GroutingLineID,
  3563. // GroutingLineCode,
  3564. // GroutingLineName,
  3565. // GroutingLineDetailID,
  3566. // SpecialRepairflag,
  3567. // goodsid,
  3568. // goodscode,
  3569. // goodsname,
  3570. // GMouldTypeID,
  3571. // CanManyTimes,
  3572. // LogoID
  3573. // from tp_pm_GroutingDailyDetail
  3574. // where tp_pm_GroutingDailyDetail.GroutingDailyDetailID=:GroutingDailyDetailID";
  3575. //OracleParameter[] selectparas1 = new OracleParameter[] {
  3576. // new OracleParameter(":GroutingDailyDetailID",productionData.GroutingDailyDetailID),
  3577. //};
  3578. selectSql = @"select GroutingDate,
  3579. ClassesSettingID,
  3580. UserID as GroutingUserID,
  3581. UserCode as GroutingUserCode,
  3582. GroutingCount as GroutingNum,
  3583. GroutingMouldCode,
  3584. MouldCode,
  3585. GroutingDailyID,
  3586. GroutingDailyDetailID,
  3587. GroutingLineID,
  3588. GroutingLineCode,
  3589. GroutingLineName,
  3590. GroutingLineDetailID,
  3591. SpecialRepairflag,
  3592. goodsid,
  3593. goodscode,
  3594. goodsname,
  3595. GMouldTypeID,
  3596. CanManyTimes,
  3597. LogoID
  3598. from tp_pm_GroutingDailyDetail
  3599. where tp_pm_GroutingDailyDetail.Barcode=:Barcode";
  3600. OracleParameter[] selectparas1 = new OracleParameter[] {
  3601. new OracleParameter(":Barcode",productionData.Barcode),
  3602. };
  3603. //xuwei fix end
  3604. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas1);
  3605. DateTime GroutingDate = new DateTime();
  3606. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  3607. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  3608. int? ClassesSettingID = null;
  3609. int? LogoID = null;
  3610. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3611. {
  3612. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3613. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3614. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3615. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3616. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3617. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3618. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3619. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3620. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3621. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3622. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3623. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3624. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3625. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3626. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3627. returnVal = SpecialRepairflag.ToString();
  3628. if (productionData.IsPublicBody.ToString() != "1")
  3629. ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  3630. else
  3631. ClassesSettingID = productionData.ClassesSettingID == null ? Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]) : productionData.ClassesSettingID;
  3632. if (dsGroutingProduct.Tables[0].Rows[0]["LogoID"] != DBNull.Value)
  3633. {
  3634. LogoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["LogoID"]);
  3635. }
  3636. //xuwei fix begin
  3637. //2019-09-17
  3638. //更新注浆日报(交坯处理)
  3639. if(isSendBody)
  3640. {
  3641. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  3642. OracleParameter[] paras2 = new OracleParameter[] {
  3643. new OracleParameter(":deliveruserid",productionData.UserID),
  3644. new OracleParameter(":deliverusercode",productionData.UserCode),
  3645. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3646. };
  3647. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  3648. }
  3649. //更新 注浆日报 在产标识(BEGINNINGFLAG)
  3650. selectSql = "update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '1' where Barcode='" + productionData.Barcode + "'";
  3651. oracleTrConn.ExecuteNonQuery(selectSql);
  3652. //xuwei end
  3653. }
  3654. outGroutingProduct = dsGroutingProduct;
  3655. #endregion
  3656. #region 更新窑炉窑车属性
  3657. //if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3658. //{
  3659. // DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3660. // if (ds != null)
  3661. // {
  3662. // if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3663. // {
  3664. // productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3665. // productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3666. // productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3667. // productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3668. // productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3669. // productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3670. // productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3671. // productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3672. // }
  3673. // }
  3674. //}
  3675. #endregion
  3676. #region SQL
  3677. string sql = "insert into tp_pm_productiondataIn"
  3678. + " (productiondataid,"
  3679. + " barcode,"
  3680. + " centralizedbatchno,"
  3681. + " productionlineid,"
  3682. + " productionlinecode,"
  3683. + " productionlinename,"
  3684. + " procedureid,"
  3685. + " procedurecode,"
  3686. + " procedurename,"
  3687. + " proceduremodel,"
  3688. + " modeltype,"
  3689. + " piecetype,"
  3690. + " isreworked,"
  3691. + " nodetype,"
  3692. + " ispublicbody,"
  3693. + " isrefire,"
  3694. + " organizationid,"
  3695. + " goodsid,"
  3696. + " goodscode,"
  3697. + " goodsname,"
  3698. + " userid,"
  3699. + " usercode,"
  3700. + " username,"
  3701. + " kilnid,"
  3702. + " kilncode,"
  3703. + " kilnname,"
  3704. + " kilncarid,"
  3705. + " kilncarcode,"
  3706. + " kilncarname,"
  3707. + " kilncarbatchno,"
  3708. + " kilncarposition,"
  3709. + " reworkprocedureid,"
  3710. + " reworkprocedurecode,"
  3711. + " reworkprocedurename,"
  3712. + " remarks,"
  3713. + " accountdate,"
  3714. + " accountid,"
  3715. + " GoodsLevelID,"
  3716. + " GoodsLevelTypeID,"
  3717. + " createuserid,"
  3718. + " updateuserid,"
  3719. + " GroutingDate,"
  3720. + " GroutingUserID,"
  3721. + " GroutingUserCode,"
  3722. + " GroutingNum,"
  3723. + " GroutingMouldCode,"
  3724. + " MouldCode,"
  3725. + "GroutingDailyID,"
  3726. + "GroutingDailyDetailID,"
  3727. + "GroutingLineID,"
  3728. + " GroutingLineCode,"
  3729. + "GroutingLineName,"
  3730. + "GMouldTypeID,"
  3731. + "CanManyTimes,"
  3732. + "GroutingLineDetailID,"
  3733. + "SpecialRepairflag,"
  3734. + "ClassesSettingID,"
  3735. + "LogoID"
  3736. + ")"
  3737. + " values"
  3738. + " (:productiondataid,"
  3739. + " :barcode,"
  3740. + " :centralizedbatchno,"
  3741. + " :productionlineid,"
  3742. + " :productionlinecode,"
  3743. + " :productionlinename,"
  3744. + " :procedureid,"
  3745. + " :procedurecode,"
  3746. + " :procedurename,"
  3747. + " :proceduremodel,"
  3748. + " :modeltype,"
  3749. + " :piecetype,"
  3750. + " :isreworked,"
  3751. + " :nodetype,"
  3752. + " :ispublicbody,"
  3753. + " :isrefire,"
  3754. + " :organizationid,"
  3755. + " :goodsid,"
  3756. + " :goodscode,"
  3757. + " :goodsname,"
  3758. + " :userid,"
  3759. + " :usercode,"
  3760. + " :username,"
  3761. + " :kilnid,"
  3762. + " :kilncode,"
  3763. + " :kilnname,"
  3764. + " :kilncarid,"
  3765. + " :kilncarcode,"
  3766. + " :kilncarname,"
  3767. + " :kilncarbatchno,"
  3768. + " :kilncarposition,"
  3769. + " :reworkprocedureid,"
  3770. + " :reworkprocedurecode,"
  3771. + " :reworkprocedurename,"
  3772. + " :remarks,"
  3773. + " :accountdata,"
  3774. + " :accountid,"
  3775. + " :GoodsLevelID,"
  3776. + " :GoodsLevelTypeID,"
  3777. + " :createuserid,"
  3778. + " :updateuserid,"
  3779. + " :groutingdate,"
  3780. + " :groutinguserid,"
  3781. + " :groutingusercode,"
  3782. + " :groutingnum,"
  3783. + " :groutingmouldcode,"
  3784. + " :mouldcode,"
  3785. + ":groutingdailyid,"
  3786. + ":groutingdailydetailid,"
  3787. + ":groutinglineid,"
  3788. + " :groutinglinecode,"
  3789. + ":groutinglinename,"
  3790. + ":gmouldtypeid,"
  3791. + ":canmanytimes,"
  3792. + ":groutinglinedetailid,"
  3793. + ":specialRepairflag,"
  3794. + ":classesSettingID,"
  3795. + ":LogoID"
  3796. + ")";
  3797. #endregion
  3798. #region OracleParameter
  3799. OracleParameter[] paras = new OracleParameter[] {
  3800. new OracleParameter(":classesSettingID",ClassesSettingID),
  3801. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  3802. new OracleParameter(":barcode",productionData.Barcode),
  3803. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  3804. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  3805. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  3806. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  3807. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  3808. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  3809. new OracleParameter(":procedurename",productionData.ProcedureName),
  3810. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  3811. new OracleParameter(":modeltype",productionData.ModelType),
  3812. new OracleParameter(":piecetype",productionData.PieceType),
  3813. new OracleParameter(":isreworked",productionData.IsReworked),
  3814. new OracleParameter(":nodetype",productionData.NodeType),
  3815. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3816. new OracleParameter(":isrefire",productionData.IsReFire),
  3817. new OracleParameter(":organizationid",productionData.OrganizationID),
  3818. new OracleParameter(":goodsid",productionData.GoodsID),
  3819. new OracleParameter(":goodscode",productionData.GoodsCode),
  3820. new OracleParameter(":goodsname",productionData.GoodsName),
  3821. new OracleParameter(":userid",productionData.UserID),
  3822. new OracleParameter(":usercode",productionData.UserCode),
  3823. new OracleParameter(":username",productionData.UserName),
  3824. new OracleParameter(":kilnid",productionData.KilnID),
  3825. new OracleParameter(":kilncode",productionData.KilnCode),
  3826. new OracleParameter(":kilnname",productionData.KilnName),
  3827. new OracleParameter(":kilncarid",productionData.KilnCarID),
  3828. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  3829. new OracleParameter(":kilncarname",productionData.KilnCarName),
  3830. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  3831. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  3832. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  3833. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  3834. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  3835. new OracleParameter(":remarks",productionData.Remarks),
  3836. new OracleParameter(":accountdata",accountDate),
  3837. new OracleParameter(":accountid",sUserInfo.AccountID),
  3838. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  3839. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  3840. new OracleParameter(":createuserid",sUserInfo.UserID),
  3841. new OracleParameter(":updateuserid",sUserInfo.UserID),
  3842. new OracleParameter(":groutingdate",GroutingDate),
  3843. new OracleParameter(":groutinguserid",GroutingUserID),
  3844. new OracleParameter(":groutingusercode",GroutingUserCode),
  3845. new OracleParameter(":groutingnum",GroutingNum),
  3846. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  3847. new OracleParameter(":mouldcode",MouldCode),
  3848. new OracleParameter(":groutingdailyid",GroutingDailyID),
  3849. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  3850. new OracleParameter(":groutinglineid",GroutingLineID),
  3851. new OracleParameter(":groutinglinecode",GroutingLineCode),
  3852. new OracleParameter(":groutinglinename",GroutingLineName),
  3853. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  3854. new OracleParameter(":canmanytimes",CanManyTimes),
  3855. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  3856. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  3857. new OracleParameter(":LogoID",LogoID),
  3858. };
  3859. #endregion
  3860. foreach (OracleParameter para in paras)
  3861. {
  3862. if (string.IsNullOrEmpty(para.Value + ""))
  3863. {
  3864. para.Value = DBNull.Value;
  3865. }
  3866. }
  3867. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3868. OutSpecialRepairflag = returnVal;
  3869. // 失败
  3870. if (result != Constant.INT_IS_ONE)
  3871. {
  3872. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3873. }
  3874. // 成功返回null
  3875. return null;
  3876. }
  3877. /// <summary>
  3878. /// 添加生产数据
  3879. /// </summary>
  3880. /// <param name="oracleTrConn">连接对象</param>
  3881. /// <param name="accountDate">账务日期</param>
  3882. /// <param name="productionData">生产数据</param>
  3883. /// <param name="sUserInfo">用户基本信息</param>
  3884. /// <param name="isSendBody">是否交坯</param>
  3885. /// <returns>string</returns>
  3886. /// <remarks>
  3887. /// 陈冰 2014.09.18 新建
  3888. /// </remarks>
  3889. private static string AddProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag, bool isSendBody = false)
  3890. {
  3891. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3892. string selectSql = "";
  3893. string returnVal = "";
  3894. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  3895. {
  3896. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  3897. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  3898. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  3899. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3900. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  3901. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  3902. // TP_PM_GroutingDailyDetail.MouldCode,
  3903. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  3904. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3905. // TP_PM_GroutingDailyDetail.GroutingLineID,
  3906. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  3907. // TP_PM_GroutingDailyDetail.GroutingLineName,
  3908. // TP_PM_GroutingDaily.GMouldTypeID,
  3909. // TP_PM_GroutingDaily.CanManyTimes,
  3910. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  3911. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  3912. // from TP_PM_GroutingDaily
  3913. // inner join TP_PM_GroutingDailyDetail
  3914. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  3915. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  3916. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  3917. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  3918. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3919. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  3920. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  3921. TP_PM_GroutingDailyDetail.MouldCode,
  3922. TP_PM_GroutingDailyDetail.GroutingDailyID,
  3923. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3924. TP_PM_GroutingDailyDetail.GroutingLineID,
  3925. TP_PM_GroutingDailyDetail.GroutingLineCode,
  3926. TP_PM_GroutingDailyDetail.GroutingLineName,
  3927. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  3928. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  3929. (select GMouldTypeID
  3930. from TP_PM_GroutingDaily
  3931. where TP_PM_GroutingDaily.GroutingDailyID =
  3932. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  3933. (select CanManyTimes
  3934. from TP_PM_GroutingDaily
  3935. where TP_PM_GroutingDaily.GroutingDailyID =
  3936. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  3937. 0 as IsReFire
  3938. from TP_PM_GroutingDailyDetail
  3939. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  3940. }
  3941. else
  3942. {
  3943. //这地方连了两张表,为了成检的时候,次品在次新增
  3944. // selectSql = @"select
  3945. // GroutingDate,
  3946. // GroutingUserID,
  3947. // GroutingUserCode,
  3948. // GroutingNum,
  3949. // GroutingMouldCode,
  3950. // MouldCode,
  3951. // GroutingDailyID,
  3952. // GroutingDailyDetailID,
  3953. // GroutingLineID,
  3954. // GroutingLineCode,
  3955. // GroutingLineName,
  3956. // GMouldTypeID,
  3957. // CanManyTimes,
  3958. // GroutingLineDetailID,
  3959. // SpecialRepairflag,
  3960. // IsReFire
  3961. //
  3962. // from tp_pm_inproduction where barcode=:barcode
  3963. // union
  3964. // select
  3965. // GroutingDate,
  3966. // GroutingUserID,
  3967. // GroutingUserCode,
  3968. // GroutingNum,
  3969. // GroutingMouldCode,
  3970. // MouldCode,
  3971. // GroutingDailyID,
  3972. // GroutingDailyDetailID,
  3973. // GroutingLineID,
  3974. // GroutingLineCode,
  3975. // GroutingLineName,
  3976. // GMouldTypeID,
  3977. // CanManyTimes,
  3978. // GroutingLineDetailID,
  3979. // SpecialRepairflag,
  3980. // IsReFire
  3981. // from TP_PM_InProductionTrash where barcode=:barcode
  3982. // ";
  3983. selectSql = @"select
  3984. ip.GroutingDate,
  3985. ip.GroutingUserID,
  3986. ip.GroutingUserCode,
  3987. ip.GroutingNum,
  3988. ip.GroutingMouldCode,
  3989. ip.MouldCode,
  3990. ip.GroutingDailyID,
  3991. ip.GroutingDailyDetailID,
  3992. ip.GroutingLineID,
  3993. ip.GroutingLineCode,
  3994. ip.GroutingLineName,
  3995. ip.GMouldTypeID,
  3996. ip.CanManyTimes,
  3997. ip.GroutingLineDetailID,
  3998. ip.SpecialRepairflag,
  3999. ip.IsReFire,
  4000. ip.logoid,
  4001. gdd.ClassesSettingID
  4002. from tp_pm_inproduction ip inner join TP_PM_GroutingDailyDetail gdd on ip.GroutingDailyDetailID=gdd.GroutingDailyDetailID
  4003. where ip.barcode=:barcode
  4004. ";
  4005. }
  4006. OracleParameter[] selectparas = new OracleParameter[] {
  4007. new OracleParameter(":barcode",productionData.Barcode),
  4008. };
  4009. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4010. DateTime GroutingDate = new DateTime();
  4011. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4012. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4013. int IsReFire = 0;
  4014. int? logoID = null;
  4015. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4016. {
  4017. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4018. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4019. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4020. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4021. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4022. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4023. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4024. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4025. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4026. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4027. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4028. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4029. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4030. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4031. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4032. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4033. if (IsReFire > 0) //大于零代表重烧过
  4034. {
  4035. productionData.IsReFire = IsReFire;
  4036. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4037. }
  4038. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  4039. {
  4040. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  4041. }
  4042. //if (productionData.LogoID != null) //当前工序有商标
  4043. //{
  4044. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  4045. // {
  4046. // logoID = productionData.LogoID;
  4047. // //根据明细ID.update
  4048. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  4049. // OracleParameter[] paras2 = new OracleParameter[] {
  4050. // new OracleParameter(":logoid",productionData.LogoID)
  4051. // };
  4052. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  4053. // }
  4054. //}
  4055. //xuwei add begin
  4056. //2019-09-17
  4057. //更新注浆日报(交坯处理)
  4058. if (isSendBody)
  4059. {
  4060. if (productionData.IsPublicBody.ToString() != "1" || productionData.ClassesSettingID == null)
  4061. productionData.ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  4062. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  4063. OracleParameter[] paras2 = new OracleParameter[] {
  4064. new OracleParameter(":deliveruserid",productionData.UserID),
  4065. new OracleParameter(":deliverusercode",productionData.UserCode),
  4066. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4067. };
  4068. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  4069. }
  4070. returnVal = SpecialRepairflag.ToString();
  4071. }
  4072. #endregion
  4073. #region 更新窑炉窑车属性
  4074. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4075. {
  4076. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4077. if (ds != null)
  4078. {
  4079. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4080. {
  4081. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4082. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4083. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4084. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4085. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4086. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4087. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4088. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4089. }
  4090. }
  4091. }
  4092. #endregion
  4093. #region SQL
  4094. string sql = "insert into tp_pm_productiondataIn"
  4095. + " (productiondataid,"
  4096. + " barcode,"
  4097. + " centralizedbatchno,"
  4098. + " productionlineid,"
  4099. + " productionlinecode,"
  4100. + " productionlinename,"
  4101. + " procedureid,"
  4102. + " procedurecode,"
  4103. + " procedurename,"
  4104. + " proceduremodel,"
  4105. + " modeltype,"
  4106. + " piecetype,"
  4107. + " isreworked,"
  4108. + " nodetype,"
  4109. + " ispublicbody,"
  4110. + " isrefire,"
  4111. + " organizationid,"
  4112. + " goodsid,"
  4113. + " goodscode,"
  4114. + " goodsname,"
  4115. + " userid,"
  4116. + " usercode,"
  4117. + " username,"
  4118. + " kilnid,"
  4119. + " kilncode,"
  4120. + " kilnname,"
  4121. + " kilncarid,"
  4122. + " kilncarcode,"
  4123. + " kilncarname,"
  4124. + " kilncarbatchno,"
  4125. + " kilncarposition,"
  4126. + " reworkprocedureid,"
  4127. + " reworkprocedurecode,"
  4128. + " reworkprocedurename,"
  4129. + " remarks,"
  4130. + " accountdate,"
  4131. + " accountid,"
  4132. + " GoodsLevelID,"
  4133. + " GoodsLevelTypeID,"
  4134. + " createuserid,"
  4135. + " updateuserid,"
  4136. + " GroutingDate,"
  4137. + " GroutingUserID,"
  4138. + " GroutingUserCode,"
  4139. + " GroutingNum,"
  4140. + " GroutingMouldCode,"
  4141. + " MouldCode,"
  4142. + "GroutingDailyID,"
  4143. + "GroutingDailyDetailID,"
  4144. + "GroutingLineID,"
  4145. + " GroutingLineCode,"
  4146. + "GroutingLineName,"
  4147. + "GMouldTypeID,"
  4148. + "CanManyTimes,"
  4149. + "GroutingLineDetailID,"
  4150. + "SpecialRepairflag,"
  4151. + "ClassesSettingID,"
  4152. + "LogoID"
  4153. + ")"
  4154. + " values"
  4155. + " (:productiondataid,"
  4156. + " :barcode,"
  4157. + " :centralizedbatchno,"
  4158. + " :productionlineid,"
  4159. + " :productionlinecode,"
  4160. + " :productionlinename,"
  4161. + " :procedureid,"
  4162. + " :procedurecode,"
  4163. + " :procedurename,"
  4164. + " :proceduremodel,"
  4165. + " :modeltype,"
  4166. + " :piecetype,"
  4167. + " :isreworked,"
  4168. + " :nodetype,"
  4169. + " :ispublicbody,"
  4170. + " :isrefire,"
  4171. + " :organizationid,"
  4172. + " :goodsid,"
  4173. + " :goodscode,"
  4174. + " :goodsname,"
  4175. + " :userid,"
  4176. + " :usercode,"
  4177. + " :username,"
  4178. + " :kilnid,"
  4179. + " :kilncode,"
  4180. + " :kilnname,"
  4181. + " :kilncarid,"
  4182. + " :kilncarcode,"
  4183. + " :kilncarname,"
  4184. + " :kilncarbatchno,"
  4185. + " :kilncarposition,"
  4186. + " :reworkprocedureid,"
  4187. + " :reworkprocedurecode,"
  4188. + " :reworkprocedurename,"
  4189. + " :remarks,"
  4190. + " :accountdata,"
  4191. + " :accountid,"
  4192. + " :GoodsLevelID,"
  4193. + " :GoodsLevelTypeID,"
  4194. + " :createuserid,"
  4195. + " :updateuserid,"
  4196. + " :groutingdate,"
  4197. + " :groutinguserid,"
  4198. + " :groutingusercode,"
  4199. + " :groutingnum,"
  4200. + " :groutingmouldcode,"
  4201. + " :mouldcode,"
  4202. + ":groutingdailyid,"
  4203. + ":groutingdailydetailid,"
  4204. + ":groutinglineid,"
  4205. + " :groutinglinecode,"
  4206. + ":groutinglinename,"
  4207. + ":gmouldtypeid,"
  4208. + ":canmanytimes,"
  4209. + ":groutinglinedetailid,"
  4210. + ":specialRepairflag,"
  4211. + ":classesSettingID,"
  4212. + ":logoID"
  4213. + ")";
  4214. #endregion
  4215. #region OracleParameter
  4216. OracleParameter[] paras = new OracleParameter[] {
  4217. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4218. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4219. new OracleParameter(":barcode",productionData.Barcode),
  4220. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4221. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4222. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4223. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4224. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4225. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4226. new OracleParameter(":procedurename",productionData.ProcedureName),
  4227. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4228. new OracleParameter(":modeltype",productionData.ModelType),
  4229. new OracleParameter(":piecetype",productionData.PieceType),
  4230. new OracleParameter(":isreworked",productionData.IsReworked),
  4231. new OracleParameter(":nodetype",productionData.NodeType),
  4232. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4233. new OracleParameter(":isrefire",productionData.IsReFire),
  4234. new OracleParameter(":organizationid",productionData.OrganizationID),
  4235. new OracleParameter(":goodsid",productionData.GoodsID),
  4236. new OracleParameter(":goodscode",productionData.GoodsCode),
  4237. new OracleParameter(":goodsname",productionData.GoodsName),
  4238. new OracleParameter(":userid",productionData.UserID),
  4239. new OracleParameter(":usercode",productionData.UserCode),
  4240. new OracleParameter(":username",productionData.UserName),
  4241. new OracleParameter(":kilnid",productionData.KilnID),
  4242. new OracleParameter(":kilncode",productionData.KilnCode),
  4243. new OracleParameter(":kilnname",productionData.KilnName),
  4244. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4245. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4246. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4247. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4248. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4249. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4250. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4251. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4252. new OracleParameter(":remarks",productionData.Remarks),
  4253. new OracleParameter(":accountdata",accountDate),
  4254. new OracleParameter(":accountid",sUserInfo.AccountID),
  4255. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4256. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4257. new OracleParameter(":createuserid",sUserInfo.UserID),
  4258. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4259. new OracleParameter(":groutingdate",GroutingDate),
  4260. new OracleParameter(":groutinguserid",GroutingUserID),
  4261. new OracleParameter(":groutingusercode",GroutingUserCode),
  4262. new OracleParameter(":groutingnum",GroutingNum),
  4263. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4264. new OracleParameter(":mouldcode",MouldCode),
  4265. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4266. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4267. new OracleParameter(":groutinglineid",GroutingLineID),
  4268. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4269. new OracleParameter(":groutinglinename",GroutingLineName),
  4270. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4271. new OracleParameter(":canmanytimes",CanManyTimes),
  4272. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4273. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4274. new OracleParameter(":logoID",logoID),
  4275. };
  4276. #endregion
  4277. foreach (OracleParameter para in paras)
  4278. {
  4279. if (string.IsNullOrEmpty(para.Value + ""))
  4280. {
  4281. para.Value = DBNull.Value;
  4282. }
  4283. }
  4284. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4285. OutSpecialRepairflag = returnVal;
  4286. // 失败
  4287. if (result != Constant.INT_IS_ONE)
  4288. {
  4289. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4290. }
  4291. // 成功返回null
  4292. return null;
  4293. }
  4294. /// <summary>
  4295. /// 添加生产数据(单独为成检所做,因为成检可以从次品到其它,需要读一标识,别的不需要连接回收站表)
  4296. /// </summary>
  4297. /// <param name="oracleTrConn">连接对象</param>
  4298. /// <param name="accountDate">账务日期</param>
  4299. /// <param name="productionData">生产数据</param>
  4300. /// <param name="sUserInfo">用户基本信息</param>
  4301. /// <returns>string</returns>
  4302. /// <remarks>
  4303. /// 陈冰 2014.09.18 新建
  4304. /// </remarks>
  4305. private static string AddFinishCheckProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  4306. {
  4307. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  4308. string selectSql = "";
  4309. string returnVal = "";
  4310. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  4311. {
  4312. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  4313. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  4314. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4315. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4316. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4317. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4318. // TP_PM_GroutingDailyDetail.MouldCode,
  4319. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  4320. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4321. // TP_PM_GroutingDailyDetail.GroutingLineID,
  4322. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  4323. // TP_PM_GroutingDailyDetail.GroutingLineName,
  4324. // TP_PM_GroutingDaily.GMouldTypeID,
  4325. // TP_PM_GroutingDaily.CanManyTimes,
  4326. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4327. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  4328. // from TP_PM_GroutingDaily
  4329. // inner join TP_PM_GroutingDailyDetail
  4330. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  4331. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4332. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  4333. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4334. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4335. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4336. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4337. TP_PM_GroutingDailyDetail.MouldCode,
  4338. TP_PM_GroutingDailyDetail.GroutingDailyID,
  4339. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4340. TP_PM_GroutingDailyDetail.GroutingLineID,
  4341. TP_PM_GroutingDailyDetail.GroutingLineCode,
  4342. TP_PM_GroutingDailyDetail.GroutingLineName,
  4343. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4344. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  4345. (select GMouldTypeID
  4346. from TP_PM_GroutingDaily
  4347. where TP_PM_GroutingDaily.GroutingDailyID =
  4348. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  4349. (select CanManyTimes
  4350. from TP_PM_GroutingDaily
  4351. where TP_PM_GroutingDaily.GroutingDailyID =
  4352. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  4353. 0 as IsReFire
  4354. from TP_PM_GroutingDailyDetail
  4355. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4356. }
  4357. else
  4358. {
  4359. //这地方连了两张表,为了成检的时候,次品在次新增
  4360. selectSql = @"select
  4361. GroutingDate,
  4362. GroutingUserID,
  4363. GroutingUserCode,
  4364. GroutingNum,
  4365. GroutingMouldCode,
  4366. MouldCode,
  4367. GroutingDailyID,
  4368. GroutingDailyDetailID,
  4369. GroutingLineID,
  4370. GroutingLineCode,
  4371. GroutingLineName,
  4372. GMouldTypeID,
  4373. CanManyTimes,
  4374. GroutingLineDetailID,
  4375. SpecialRepairflag,
  4376. IsReFire,
  4377. Logoid
  4378. from tp_pm_inproduction where barcode=:barcode
  4379. union
  4380. select
  4381. GroutingDate,
  4382. GroutingUserID,
  4383. GroutingUserCode,
  4384. GroutingNum,
  4385. GroutingMouldCode,
  4386. MouldCode,
  4387. GroutingDailyID,
  4388. GroutingDailyDetailID,
  4389. GroutingLineID,
  4390. GroutingLineCode,
  4391. GroutingLineName,
  4392. GMouldTypeID,
  4393. CanManyTimes,
  4394. GroutingLineDetailID,
  4395. SpecialRepairflag,
  4396. IsReFire,
  4397. logoid
  4398. from TP_PM_InProductionTrash where barcode=:barcode
  4399. ";
  4400. }
  4401. OracleParameter[] selectparas = new OracleParameter[] {
  4402. new OracleParameter(":barcode",productionData.Barcode),
  4403. };
  4404. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4405. DateTime GroutingDate = new DateTime();
  4406. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4407. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4408. int IsReFire = 0;
  4409. int? logoid = null;
  4410. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4411. {
  4412. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4413. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4414. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4415. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4416. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4417. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4418. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4419. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4420. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4421. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4422. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4423. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4424. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4425. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4426. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4427. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4428. if (dsGroutingProduct.Tables[0].Rows[0]["logoid"].ToString() != "")
  4429. {
  4430. logoid = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoid"]);
  4431. }
  4432. if (IsReFire > 0) //大于零代表重烧过
  4433. {
  4434. productionData.IsReFire = IsReFire;
  4435. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4436. }
  4437. returnVal = SpecialRepairflag.ToString();
  4438. }
  4439. #endregion
  4440. #region 更新窑炉窑车属性
  4441. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4442. {
  4443. DataSet ds = GetFinishCheckKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4444. if (ds != null)
  4445. {
  4446. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4447. {
  4448. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4449. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4450. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4451. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4452. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4453. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4454. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4455. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4456. }
  4457. }
  4458. }
  4459. #endregion
  4460. if (Convert.ToInt32(productionData.GoodsLevelTypeID) == 6) //判断重烧必须有返工工序
  4461. {
  4462. if (productionData.ReworkProcedureID == null || Convert.ToInt32(productionData.ReworkProcedureID) == 0)
  4463. {
  4464. OutSpecialRepairflag = "";
  4465. return string.Format("产品分级【重烧】必须填写返工工序", "条码", "保存");
  4466. }
  4467. }
  4468. DateTime? checkTime = null;
  4469. if (productionData.IsPDA != null)
  4470. {
  4471. if (productionData.PDACheckTime != null)
  4472. {
  4473. // PDA端
  4474. if (productionData.PDACheckTime.ToString() != string.Empty)
  4475. {
  4476. checkTime = Convert.ToDateTime(productionData.PDACheckTime);
  4477. }
  4478. }
  4479. }
  4480. else
  4481. {
  4482. if (productionData.CheckTime != null)
  4483. {
  4484. // PDA端
  4485. if (productionData.CheckTime.ToString() != string.Empty)
  4486. {
  4487. checkTime = Convert.ToDateTime(productionData.CheckTime);
  4488. }
  4489. }
  4490. }
  4491. #region SQL
  4492. string sql = "insert into tp_pm_productiondataIn"
  4493. + " (productiondataid,"
  4494. + " barcode,"
  4495. + " centralizedbatchno,"
  4496. + " productionlineid,"
  4497. + " productionlinecode,"
  4498. + " productionlinename,"
  4499. + " procedureid,"
  4500. + " procedurecode,"
  4501. + " procedurename,"
  4502. + " proceduremodel,"
  4503. + " modeltype,"
  4504. + " piecetype,"
  4505. + " isreworked,"
  4506. + " nodetype,"
  4507. + " ispublicbody,"
  4508. + " isrefire,"
  4509. + " organizationid,"
  4510. + " goodsid,"
  4511. + " goodscode,"
  4512. + " goodsname,"
  4513. + " userid,"
  4514. + " usercode,"
  4515. + " username,"
  4516. + " kilnid,"
  4517. + " kilncode,"
  4518. + " kilnname,"
  4519. + " kilncarid,"
  4520. + " kilncarcode,"
  4521. + " kilncarname,"
  4522. + " kilncarbatchno,"
  4523. + " kilncarposition,"
  4524. + " reworkprocedureid,"
  4525. + " reworkprocedurecode,"
  4526. + " reworkprocedurename,"
  4527. + " remarks,"
  4528. + " accountdate,"
  4529. + " accountid,"
  4530. + " GoodsLevelID,"
  4531. + " GoodsLevelTypeID,"
  4532. + " createuserid,"
  4533. + " updateuserid,"
  4534. + " GroutingDate,"
  4535. + " GroutingUserID,"
  4536. + " GroutingUserCode,"
  4537. + " GroutingNum,"
  4538. + " GroutingMouldCode,"
  4539. + " MouldCode,"
  4540. + "GroutingDailyID,"
  4541. + "GroutingDailyDetailID,"
  4542. + "GroutingLineID,"
  4543. + " GroutingLineCode,"
  4544. + "GroutingLineName,"
  4545. + "GMouldTypeID,"
  4546. + "CanManyTimes,"
  4547. + "GroutingLineDetailID,"
  4548. + "SpecialRepairflag,"
  4549. + "ClassesSettingID,"
  4550. + "LogoID,"
  4551. + "CheckTime"
  4552. + ")"
  4553. + " values"
  4554. + " (:productiondataid,"
  4555. + " :barcode,"
  4556. + " :centralizedbatchno,"
  4557. + " :productionlineid,"
  4558. + " :productionlinecode,"
  4559. + " :productionlinename,"
  4560. + " :procedureid,"
  4561. + " :procedurecode,"
  4562. + " :procedurename,"
  4563. + " :proceduremodel,"
  4564. + " :modeltype,"
  4565. + " :piecetype,"
  4566. + " :isreworked,"
  4567. + " :nodetype,"
  4568. + " :ispublicbody,"
  4569. + " :isrefire,"
  4570. + " :organizationid,"
  4571. + " :goodsid,"
  4572. + " :goodscode,"
  4573. + " :goodsname,"
  4574. + " :userid,"
  4575. + " :usercode,"
  4576. + " :username,"
  4577. + " :kilnid,"
  4578. + " :kilncode,"
  4579. + " :kilnname,"
  4580. + " :kilncarid,"
  4581. + " :kilncarcode,"
  4582. + " :kilncarname,"
  4583. + " :kilncarbatchno,"
  4584. + " :kilncarposition,"
  4585. + " :reworkprocedureid,"
  4586. + " :reworkprocedurecode,"
  4587. + " :reworkprocedurename,"
  4588. + " :remarks,"
  4589. + " :accountdata,"
  4590. + " :accountid,"
  4591. + " :GoodsLevelID,"
  4592. + " :GoodsLevelTypeID,"
  4593. + " :createuserid,"
  4594. + " :updateuserid,"
  4595. + " :groutingdate,"
  4596. + " :groutinguserid,"
  4597. + " :groutingusercode,"
  4598. + " :groutingnum,"
  4599. + " :groutingmouldcode,"
  4600. + " :mouldcode,"
  4601. + ":groutingdailyid,"
  4602. + ":groutingdailydetailid,"
  4603. + ":groutinglineid,"
  4604. + " :groutinglinecode,"
  4605. + ":groutinglinename,"
  4606. + ":gmouldtypeid,"
  4607. + ":canmanytimes,"
  4608. + ":groutinglinedetailid,"
  4609. + ":specialRepairflag,"
  4610. + ":classesSettingID,"
  4611. + ":logoid,";
  4612. if (checkTime == null)
  4613. {
  4614. sql = sql + "sysdate";
  4615. }
  4616. else
  4617. {
  4618. sql = sql + ":checkTime";
  4619. }
  4620. sql = sql + ")";
  4621. #endregion
  4622. #region OracleParameter
  4623. OracleParameter[] paras = null;
  4624. if (checkTime != null)
  4625. {
  4626. paras = new OracleParameter[] {
  4627. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4628. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4629. new OracleParameter(":barcode",productionData.Barcode),
  4630. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4631. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4632. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4633. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4634. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4635. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4636. new OracleParameter(":procedurename",productionData.ProcedureName),
  4637. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4638. new OracleParameter(":modeltype",productionData.ModelType),
  4639. new OracleParameter(":piecetype",productionData.PieceType),
  4640. new OracleParameter(":isreworked",productionData.IsReworked),
  4641. new OracleParameter(":nodetype",productionData.NodeType),
  4642. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4643. new OracleParameter(":isrefire",productionData.IsReFire),
  4644. new OracleParameter(":organizationid",productionData.OrganizationID),
  4645. new OracleParameter(":goodsid",productionData.GoodsID),
  4646. new OracleParameter(":goodscode",productionData.GoodsCode),
  4647. new OracleParameter(":goodsname",productionData.GoodsName),
  4648. new OracleParameter(":userid",productionData.UserID),
  4649. new OracleParameter(":usercode",productionData.UserCode),
  4650. new OracleParameter(":username",productionData.UserName),
  4651. new OracleParameter(":kilnid",productionData.KilnID),
  4652. new OracleParameter(":kilncode",productionData.KilnCode),
  4653. new OracleParameter(":kilnname",productionData.KilnName),
  4654. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4655. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4656. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4657. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4658. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4659. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4660. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4661. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4662. new OracleParameter(":remarks",productionData.Remarks),
  4663. new OracleParameter(":accountdata",accountDate),
  4664. new OracleParameter(":accountid",sUserInfo.AccountID),
  4665. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4666. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4667. new OracleParameter(":createuserid",sUserInfo.UserID),
  4668. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4669. new OracleParameter(":groutingdate",GroutingDate),
  4670. new OracleParameter(":groutinguserid",GroutingUserID),
  4671. new OracleParameter(":groutingusercode",GroutingUserCode),
  4672. new OracleParameter(":groutingnum",GroutingNum),
  4673. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4674. new OracleParameter(":mouldcode",MouldCode),
  4675. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4676. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4677. new OracleParameter(":groutinglineid",GroutingLineID),
  4678. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4679. new OracleParameter(":groutinglinename",GroutingLineName),
  4680. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4681. new OracleParameter(":canmanytimes",CanManyTimes),
  4682. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4683. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4684. new OracleParameter(":logoid",logoid),
  4685. new OracleParameter(":checkTime",checkTime),
  4686. };
  4687. }
  4688. else
  4689. {
  4690. paras = new OracleParameter[] {
  4691. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4692. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4693. new OracleParameter(":barcode",productionData.Barcode),
  4694. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4695. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4696. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4697. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4698. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4699. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4700. new OracleParameter(":procedurename",productionData.ProcedureName),
  4701. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4702. new OracleParameter(":modeltype",productionData.ModelType),
  4703. new OracleParameter(":piecetype",productionData.PieceType),
  4704. new OracleParameter(":isreworked",productionData.IsReworked),
  4705. new OracleParameter(":nodetype",productionData.NodeType),
  4706. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4707. new OracleParameter(":isrefire",productionData.IsReFire),
  4708. new OracleParameter(":organizationid",productionData.OrganizationID),
  4709. new OracleParameter(":goodsid",productionData.GoodsID),
  4710. new OracleParameter(":goodscode",productionData.GoodsCode),
  4711. new OracleParameter(":goodsname",productionData.GoodsName),
  4712. new OracleParameter(":userid",productionData.UserID),
  4713. new OracleParameter(":usercode",productionData.UserCode),
  4714. new OracleParameter(":username",productionData.UserName),
  4715. new OracleParameter(":kilnid",productionData.KilnID),
  4716. new OracleParameter(":kilncode",productionData.KilnCode),
  4717. new OracleParameter(":kilnname",productionData.KilnName),
  4718. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4719. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4720. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4721. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4722. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4723. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4724. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4725. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4726. new OracleParameter(":remarks",productionData.Remarks),
  4727. new OracleParameter(":accountdata",accountDate),
  4728. new OracleParameter(":accountid",sUserInfo.AccountID),
  4729. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4730. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4731. new OracleParameter(":createuserid",sUserInfo.UserID),
  4732. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4733. new OracleParameter(":groutingdate",GroutingDate),
  4734. new OracleParameter(":groutinguserid",GroutingUserID),
  4735. new OracleParameter(":groutingusercode",GroutingUserCode),
  4736. new OracleParameter(":groutingnum",GroutingNum),
  4737. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4738. new OracleParameter(":mouldcode",MouldCode),
  4739. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4740. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4741. new OracleParameter(":groutinglineid",GroutingLineID),
  4742. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4743. new OracleParameter(":groutinglinename",GroutingLineName),
  4744. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4745. new OracleParameter(":canmanytimes",CanManyTimes),
  4746. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4747. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4748. new OracleParameter(":logoid",logoid),
  4749. };
  4750. }
  4751. #endregion
  4752. foreach (OracleParameter para in paras)
  4753. {
  4754. if (string.IsNullOrEmpty(para.Value + ""))
  4755. {
  4756. para.Value = DBNull.Value;
  4757. }
  4758. }
  4759. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4760. OutSpecialRepairflag = returnVal;
  4761. // 失败
  4762. if (result != Constant.INT_IS_ONE)
  4763. {
  4764. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4765. }
  4766. // 成功返回null
  4767. return null;
  4768. }
  4769. /// <summary>
  4770. /// 删除在产数据
  4771. /// </summary>
  4772. /// <param name="oracleTrConn">连接对象</param>
  4773. /// <param name="delInProductionEntity">在产数据对象</param>
  4774. /// <returns>string</returns>
  4775. /// <remarks>
  4776. /// 陈冰 2014.09.18 新建
  4777. /// </remarks>
  4778. private static string DeleteInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  4779. {
  4780. OracleParameter[] paras = new OracleParameter[] {
  4781. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4782. };
  4783. int result = 0;
  4784. //删除在产表之前,插入到产品回收表中
  4785. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  4786. {
  4787. OracleParameter[] parasPDA = new OracleParameter[] {
  4788. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4789. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4790. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4791. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  4792. };
  4793. string sqlInsert = @"insert into TP_PM_InProductionTrash
  4794. (
  4795. BarCode,
  4796. ProductionLineID,
  4797. ProductionLineCode,
  4798. ProductionLineName,
  4799. ProcedureModel,
  4800. ModelType,
  4801. DefectFlag,
  4802. ReworkProcedureID,
  4803. IsPublicBody,
  4804. IsReFire,
  4805. GoodsLevelID,
  4806. GoodsLevelTypeID,
  4807. GoodsID,
  4808. GoodsCode,
  4809. GoodsName,
  4810. UserID,
  4811. GroutingDailyID,
  4812. GroutingDailyDetailID,
  4813. GroutingDate,
  4814. GroutingLineID,
  4815. GroutingLineCode,
  4816. GroutingLineName,
  4817. GMouldTypeID,
  4818. CanManyTimes,
  4819. GroutingLineDetailID,
  4820. GroutingMouldCode,
  4821. MouldCode,
  4822. GroutingUserID,
  4823. GroutingUserCode,
  4824. GroutingNum,
  4825. Remarks,
  4826. KilnID,
  4827. KilnCode,
  4828. KilnName,
  4829. KilnCarID,
  4830. KilnCarCode,
  4831. KilnCarName,
  4832. KilnCarBatchNo,
  4833. KilnCarPosition,
  4834. AccountID,
  4835. ValueFlag,
  4836. CreateTime,
  4837. CreateUserID,
  4838. UpdateUserID,
  4839. SpecialRepairflag,
  4840. FlowProcedureID,
  4841. FlowProcedureTime,
  4842. ProcedureID,
  4843. ProcedureTime,
  4844. ProductionDataID,
  4845. logoid, ISREWORKFLAG, SEMICHECKID
  4846. )
  4847. select
  4848. BarCode,
  4849. ProductionLineID,
  4850. ProductionLineCode,
  4851. ProductionLineName,
  4852. ProcedureModel,
  4853. ModelType,
  4854. DefectFlag,
  4855. ReworkProcedureID,
  4856. IsPublicBody,
  4857. IsReFire,
  4858. GoodsLevelID,
  4859. GoodsLevelTypeID,
  4860. GoodsID,
  4861. GoodsCode,
  4862. GoodsName,
  4863. UserID,
  4864. GroutingDailyID,
  4865. GroutingDailyDetailID,
  4866. GroutingDate,
  4867. GroutingLineID,
  4868. GroutingLineCode,
  4869. GroutingLineName,
  4870. GMouldTypeID,
  4871. CanManyTimes,
  4872. GroutingLineDetailID,
  4873. GroutingMouldCode,
  4874. MouldCode,
  4875. GroutingUserID,
  4876. GroutingUserCode,
  4877. GroutingNum,
  4878. Remarks,
  4879. KilnID,
  4880. KilnCode,
  4881. KilnName,
  4882. KilnCarID,
  4883. KilnCarCode,
  4884. KilnCarName,
  4885. KilnCarBatchNo,
  4886. KilnCarPosition,
  4887. AccountID,
  4888. ValueFlag,
  4889. CreateTime,
  4890. :CreateUserID,
  4891. :UpdateUserID,
  4892. SpecialRepairflag,
  4893. :FlowProcedureID,
  4894. FlowProcedureTime,
  4895. :FlowProcedureID,
  4896. ProcedureTime,
  4897. ProductionDataID,
  4898. logoid, ISREWORKFLAG, SEMICHECKID
  4899. from TP_PM_InProduction
  4900. where barcode=:barcode
  4901. ";
  4902. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  4903. }
  4904. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  4905. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  4906. // 删除失败
  4907. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  4908. if (result == Constant.INT_IS_ZERO)
  4909. {
  4910. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4911. }
  4912. // 成功返回null
  4913. return null;
  4914. }
  4915. /// <summary>
  4916. /// 删除在产数据
  4917. /// </summary>
  4918. /// <param name="oracleTrConn">连接对象</param>
  4919. /// <param name="delInProductionEntity">在产数据对象</param>
  4920. /// <returns>string</returns>
  4921. /// <remarks>
  4922. /// 陈冰 2014.09.18 新建
  4923. /// </remarks>
  4924. private static string DeletePDAInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  4925. {
  4926. OracleParameter[] paras = new OracleParameter[] {
  4927. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4928. };
  4929. int result = 0;
  4930. //删除在产表之前,插入到产品回收表中
  4931. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  4932. {
  4933. OracleParameter[] parasPDA = new OracleParameter[] {
  4934. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4935. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  4936. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4937. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4938. new OracleParameter(":ProductionDataID",OracleDbType.Int32,delInProductionEntity.ProductionDataID,ParameterDirection.Input),
  4939. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,delInProductionEntity.GoodsLevelID,ParameterDirection.Input),
  4940. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,delInProductionEntity.GoodsLevelTypeID,ParameterDirection.Input),
  4941. };
  4942. //删除在产表前,在产表生产数据ID更新下,如不更新这样就不准了,例如,次品到次品 第一次不会影响,因为第一次TP_PM_InProductionTrash表里没有
  4943. // 如果第二次走次品到次品,才有效,下面的sqlInsert则没有效,因为在产表里没有数据插入不到回收表
  4944. string sqlupdate = "update TP_PM_InProductionTrash set ProductionDataID=:ProductionDataID where barcode=:barcode";
  4945. OracleParameter[] parasupdate = new OracleParameter[] {
  4946. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4947. new OracleParameter(":ProductionDataID",delInProductionEntity.ProductionDataID),
  4948. };
  4949. oracleTrConn.ExecuteNonQuery(sqlupdate, parasupdate);
  4950. string sqlInsert = @"insert into TP_PM_InProductionTrash
  4951. (
  4952. BarCode,
  4953. ProductionLineID,
  4954. ProductionLineCode,
  4955. ProductionLineName,
  4956. ProcedureModel,
  4957. ModelType,
  4958. DefectFlag,
  4959. ReworkProcedureID,
  4960. IsPublicBody,
  4961. IsReFire,
  4962. GoodsLevelID,
  4963. GoodsLevelTypeID,
  4964. GoodsID,
  4965. GoodsCode,
  4966. GoodsName,
  4967. UserID,
  4968. GroutingDailyID,
  4969. GroutingDailyDetailID,
  4970. GroutingDate,
  4971. GroutingLineID,
  4972. GroutingLineCode,
  4973. GroutingLineName,
  4974. GMouldTypeID,
  4975. CanManyTimes,
  4976. GroutingLineDetailID,
  4977. GroutingMouldCode,
  4978. MouldCode,
  4979. GroutingUserID,
  4980. GroutingUserCode,
  4981. GroutingNum,
  4982. Remarks,
  4983. KilnID,
  4984. KilnCode,
  4985. KilnName,
  4986. KilnCarID,
  4987. KilnCarCode,
  4988. KilnCarName,
  4989. KilnCarBatchNo,
  4990. KilnCarPosition,
  4991. AccountID,
  4992. ValueFlag,
  4993. CreateUserID,
  4994. UpdateUserID,
  4995. SpecialRepairflag,
  4996. FlowProcedureID,
  4997. FlowProcedureTime,
  4998. ProcedureID,
  4999. ProcedureTime,
  5000. ProductionDataID,
  5001. logoid, ISREWORKFLAG, SEMICHECKID
  5002. )
  5003. select
  5004. BarCode,
  5005. ProductionLineID,
  5006. ProductionLineCode,
  5007. ProductionLineName,
  5008. ProcedureModel,
  5009. ModelType,
  5010. DefectFlag,
  5011. ReworkProcedureID,
  5012. IsPublicBody,
  5013. IsReFire,
  5014. :GoodsLevelID,
  5015. :GoodsLevelTypeID,
  5016. GoodsID,
  5017. GoodsCode,
  5018. GoodsName,
  5019. UserID,
  5020. GroutingDailyID,
  5021. GroutingDailyDetailID,
  5022. GroutingDate,
  5023. GroutingLineID,
  5024. GroutingLineCode,
  5025. GroutingLineName,
  5026. GMouldTypeID,
  5027. CanManyTimes,
  5028. GroutingLineDetailID,
  5029. GroutingMouldCode,
  5030. MouldCode,
  5031. GroutingUserID,
  5032. GroutingUserCode,
  5033. GroutingNum,
  5034. Remarks,
  5035. KilnID,
  5036. KilnCode,
  5037. KilnName,
  5038. KilnCarID,
  5039. KilnCarCode,
  5040. KilnCarName,
  5041. KilnCarBatchNo,
  5042. KilnCarPosition,
  5043. AccountID,
  5044. ValueFlag,
  5045. :CreateUserID,
  5046. :UpdateUserID,
  5047. SpecialRepairflag,
  5048. :FlowProcedureID,
  5049. FlowProcedureTime,
  5050. :FlowProcedureID,
  5051. ProcedureTime,
  5052. :ProductionDataID,
  5053. logoid, ISREWORKFLAG, SEMICHECKID
  5054. from TP_PM_InProduction
  5055. where barcode=:barcode
  5056. ";
  5057. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  5058. }
  5059. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  5060. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  5061. // 删除失败
  5062. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  5063. if (result == Constant.INT_IS_ZERO)
  5064. {
  5065. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5066. }
  5067. // 成功返回null
  5068. return null;
  5069. }
  5070. /// <summary>
  5071. /// 根据窑车ID 删除窑车产品
  5072. /// </summary>
  5073. /// <param name="oracleTrConn">数据连接</param>
  5074. /// <param name="pKilnCarID">窑车ID</param>
  5075. /// <returns>
  5076. /// 张国印 2014.10.04 新建
  5077. /// </returns>
  5078. private static string DeleteKilnCarGoodsByKilnCarID(IDBTransaction oracleTrConn, int pKilnCarID)
  5079. {
  5080. string sql = "delete TP_PM_KilnCarGoods where KilnCarID = :pKilnCarID";
  5081. OracleParameter[] paras = new OracleParameter[] {
  5082. new OracleParameter(":pKilnCarID", OracleDbType.Int32, pKilnCarID, ParameterDirection.Input),
  5083. };
  5084. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5085. // 删除失败
  5086. if (result <= Constant.INT_IS_ZERO)
  5087. {
  5088. return string.Format(Messages.MSG_CMN_W001, "窑车产品", "保存");
  5089. }
  5090. // 成功返回null
  5091. return null;
  5092. }
  5093. /// <summary>
  5094. /// 添加产成品
  5095. /// </summary>
  5096. /// <param name="oracleTrConn">连接对象</param>
  5097. /// <param name="finishedProduct">产成品对象</param>
  5098. /// <param name="sUserInfo">用户基本信息</param>
  5099. /// <returns>string</returns>
  5100. /// <remarks>
  5101. /// 陈冰 2014.09.18 新建
  5102. /// </remarks>
  5103. private static string AddFinishedProduct(IDBTransaction oracleTrConn,
  5104. FinishedProductEntity finishedProduct, SUserInfo sUserInfo
  5105. , string finishedloadbatchno)
  5106. {
  5107. List<OracleParameter> paras = new List<OracleParameter>();
  5108. string sql = "";
  5109. #region
  5110. // add 2015/11/16
  5111. // if (finishedProduct.LogoID != null && Convert.ToInt32(finishedProduct.LogoID) > 0)
  5112. // {
  5113. // #region SQL
  5114. // //废弃
  5115. // sql = " insert into tp_pm_finishedproduct"
  5116. // + " (barcode, "
  5117. // + " productionlineid, "
  5118. // + " productionlinecode, "
  5119. // + " productionlinename, "
  5120. // + " ispublicbody, "
  5121. // + " isrefire, "
  5122. // + " GoodsLevelID, "
  5123. // + " GoodsLevelTypeID, "
  5124. // + " goodsid, "
  5125. // + " goodscode, "
  5126. // + " goodsname, "
  5127. // + " groutingdailyid, "
  5128. // + " groutingdailydetailid, "
  5129. // + " groutingdate, "
  5130. // + " groutinglineid, "
  5131. // + " groutinglinecode, "
  5132. // + " groutinglinename, "
  5133. // + " gmouldtypeid, "
  5134. // + " groutinglinedetailid, "
  5135. // + " groutingmouldcode, "
  5136. // + " mouldcode, "
  5137. // + " accountdate, "
  5138. // + " accountid, "
  5139. // + " createuserid, "
  5140. // + " updateuserid,"
  5141. // + " groutinguserid, "
  5142. // + " groutingusercode, "
  5143. // + " groutingnum, "
  5144. // + " kilnid, "
  5145. // + " kilncode, "
  5146. // + " kilnname, "
  5147. // + " kilncarid, "
  5148. // + " kilncarcode, "
  5149. // + " kilncarname, "
  5150. // + " kilncarbatchno, "
  5151. // + " kilncarposition, "
  5152. // + " specialRepairflag, "
  5153. // + " logoid "
  5154. // + ") "
  5155. // + " select barcode, "
  5156. // + " productionlineid, "
  5157. // + " productionlinecode, "
  5158. // + " productionlinename, "
  5159. // + " ispublicbody, "
  5160. // + " isrefire, ";
  5161. // #region 产品等级
  5162. // //if (finishedProduct.GoodsGrade == null)
  5163. // //{
  5164. // // sql = sql + " goodsgrade,";
  5165. // //}
  5166. // //// 最后一个工序如果是检验工序,可更改产品等级
  5167. // //else
  5168. // //{
  5169. // // sql = sql + " :goodsgrade, ";
  5170. // // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5171. // //}
  5172. // //如果包装时,产成品未走过成检,则直接视为正品
  5173. // int? GoodsLevelTypeID = null;
  5174. // int? GoodsLevelID = null;
  5175. // if (finishedProduct.GoodsLevelID == null)
  5176. // {
  5177. // string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5178. // (
  5179. // select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5180. // ") and AccountID=" + sUserInfo.AccountID;
  5181. // DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5182. // if (ds != null && ds.Tables[0].Rows.Count > 0)
  5183. // {
  5184. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5185. // {
  5186. // if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5187. // {
  5188. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5189. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5190. // }
  5191. // else
  5192. // {
  5193. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5194. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5195. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5196. // {
  5197. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5198. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5199. // }
  5200. // }
  5201. // }
  5202. // }
  5203. // else
  5204. // {
  5205. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5206. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5207. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5208. // {
  5209. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5210. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5211. // }
  5212. // }
  5213. // }
  5214. // if (finishedProduct.GoodsLevelID == null)
  5215. // {
  5216. // //sql = sql + " GoodsLevelID,";
  5217. // // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5218. // ////// sql = sql + @"
  5219. // ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5220. // ////// (
  5221. // ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5222. // ////// ) and AccountID=:AccountID),";
  5223. // sql = sql + GoodsLevelID.ToString() + " ,";
  5224. // }
  5225. // // 最后一个工序如果是检验工序,可更改产品等级
  5226. // else
  5227. // {
  5228. // sql = sql + " :GoodsLevelID, ";
  5229. // paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5230. // }
  5231. // if (finishedProduct.GoodsLevelTypeID == null)
  5232. // {
  5233. // //sql = sql + " GoodsLevelTypeID,";
  5234. // sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5235. // }
  5236. // // 最后一个工序如果是检验工序,可更改产品等级
  5237. // else
  5238. // {
  5239. // sql = sql + " :GoodsLevelTypeID, ";
  5240. // paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5241. // }
  5242. // #endregion
  5243. // sql = sql + " goodsid, "
  5244. // + " goodscode, "
  5245. // + " goodsname, "
  5246. // + " groutingdailyid, "
  5247. // + " groutingdailydetailid, "
  5248. // + " groutingdate, "
  5249. // + " groutinglineid, "
  5250. // + " groutinglinecode, "
  5251. // + " groutinglinename, "
  5252. // + " gmouldtypeid, "
  5253. // + " groutinglinedetailid, "
  5254. // + " groutingmouldcode, "
  5255. // + " mouldcode, "
  5256. // + " fun_cmn_getaccountdate(accountid), "
  5257. // + " accountid, "
  5258. // + " :createuserid, "
  5259. // + " :updateuserid, "
  5260. // + " groutinguserid, "
  5261. // + " groutingusercode, "
  5262. // + " groutingnum, "
  5263. // + " kilnid, "
  5264. // + " kilncode, "
  5265. // + " kilnname, "
  5266. // + " kilncarid, "
  5267. // + " kilncarcode, "
  5268. // + " kilncarname, "
  5269. // + " kilncarbatchno, "
  5270. // + " kilncarposition, "
  5271. // + " specialRepairflag, "
  5272. // + " :logoid "
  5273. // + " from tp_pm_inproduction "
  5274. // + " where Barcode=:barcode";
  5275. // #endregion
  5276. // paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5277. // paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5278. // paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5279. // paras.Add(new OracleParameter(":logoid", finishedProduct.LogoID));
  5280. // // end 2015/11/16
  5281. // }
  5282. // else
  5283. // {
  5284. #endregion
  5285. #region SQL
  5286. //废弃
  5287. sql = " insert into tp_pm_finishedproduct"
  5288. + " (barcode, "
  5289. + " productionlineid, "
  5290. + " productionlinecode, "
  5291. + " productionlinename, "
  5292. + " ispublicbody, "
  5293. + " isrefire, "
  5294. + " GoodsLevelID, "
  5295. + " GoodsLevelTypeID, "
  5296. + " goodsid, "
  5297. + " goodscode, "
  5298. + " goodsname, "
  5299. + " groutingdailyid, "
  5300. + " groutingdailydetailid, "
  5301. + " groutingdate, "
  5302. + " groutinglineid, "
  5303. + " groutinglinecode, "
  5304. + " groutinglinename, "
  5305. + " gmouldtypeid, "
  5306. + " groutinglinedetailid, "
  5307. + " groutingmouldcode, "
  5308. + " mouldcode, "
  5309. + " accountdate, "
  5310. + " accountid, "
  5311. + " createuserid, "
  5312. + " updateuserid,"
  5313. + " groutinguserid, "
  5314. + " groutingusercode, "
  5315. + " groutingnum, "
  5316. + " kilnid, "
  5317. + " kilncode, "
  5318. + " kilnname, "
  5319. + " kilncarid, "
  5320. + " kilncarcode, "
  5321. + " kilncarname, "
  5322. + " kilncarbatchno, "
  5323. + " kilncarposition, "
  5324. + " specialRepairflag, "
  5325. + " logoid,OnlyCode ,finishedloadbatchno"
  5326. + ") "
  5327. + " select barcode, "
  5328. + " productionlineid, "
  5329. + " productionlinecode, "
  5330. + " productionlinename, "
  5331. + " ispublicbody, "
  5332. + " isrefire, ";
  5333. #region 产品等级
  5334. //if (finishedProduct.GoodsGrade == null)
  5335. //{
  5336. // sql = sql + " goodsgrade,";
  5337. //}
  5338. //// 最后一个工序如果是检验工序,可更改产品等级
  5339. //else
  5340. //{
  5341. // sql = sql + " :goodsgrade, ";
  5342. // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5343. //}
  5344. //如果包装时,产成品未走过成检,则直接视为正品
  5345. int? GoodsLevelTypeID = null;
  5346. int? GoodsLevelID = null;
  5347. if (finishedProduct.GoodsLevelID == null)
  5348. {
  5349. string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5350. (
  5351. select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5352. ") and AccountID=" + sUserInfo.AccountID;
  5353. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5354. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5355. {
  5356. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5357. {
  5358. if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5359. {
  5360. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5361. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5362. }
  5363. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 4)//正品
  5364. {
  5365. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5366. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5367. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5368. {
  5369. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5370. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5371. }
  5372. }
  5373. else
  5374. {
  5375. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5376. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5377. }
  5378. }
  5379. }
  5380. else
  5381. {
  5382. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5383. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5384. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5385. {
  5386. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5387. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5388. }
  5389. }
  5390. }
  5391. if (finishedProduct.GoodsLevelID == null)
  5392. {
  5393. //sql = sql + " GoodsLevelID,";
  5394. // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5395. ////// sql = sql + @"
  5396. ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5397. ////// (
  5398. ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5399. ////// ) and AccountID=:AccountID),";
  5400. sql = sql + GoodsLevelID.ToString() + " ,";
  5401. }
  5402. // 最后一个工序如果是检验工序,可更改产品等级
  5403. else
  5404. {
  5405. sql = sql + " :GoodsLevelID, ";
  5406. paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5407. }
  5408. if (finishedProduct.GoodsLevelTypeID == null)
  5409. {
  5410. //sql = sql + " GoodsLevelTypeID,";
  5411. sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5412. }
  5413. // 最后一个工序如果是检验工序,可更改产品等级
  5414. else
  5415. {
  5416. sql = sql + " :GoodsLevelTypeID, ";
  5417. paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5418. }
  5419. #endregion
  5420. sql = sql + " goodsid, "
  5421. + " goodscode, "
  5422. + " goodsname, "
  5423. + " groutingdailyid, "
  5424. + " groutingdailydetailid, "
  5425. + " groutingdate, "
  5426. + " groutinglineid, "
  5427. + " groutinglinecode, "
  5428. + " groutinglinename, "
  5429. + " gmouldtypeid, "
  5430. + " groutinglinedetailid, "
  5431. + " groutingmouldcode, "
  5432. + " mouldcode, "
  5433. + " fun_cmn_getaccountdate(accountid), "
  5434. + " accountid, "
  5435. + " :createuserid, "
  5436. + " :updateuserid, "
  5437. + " groutinguserid, "
  5438. + " groutingusercode, "
  5439. + " groutingnum, "
  5440. + " kilnid, "
  5441. + " kilncode, "
  5442. + " kilnname, "
  5443. + " kilncarid, "
  5444. + " kilncarcode, "
  5445. + " kilncarname, "
  5446. + " kilncarbatchno, "
  5447. + " kilncarposition, "
  5448. + " specialRepairflag, "
  5449. + " logoid, "
  5450. + " (select OnlyCode from tp_pm_groutingdailydetail where barcode=:barcode), :finishedloadbatchno"
  5451. + " from tp_pm_inproduction "
  5452. + " where Barcode=:barcode";
  5453. #endregion
  5454. paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5455. paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5456. paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5457. paras.Add(new OracleParameter(":finishedloadbatchno", finishedloadbatchno));
  5458. //}
  5459. //paras.Add(new OracleParameter(":AccountID", sUserInfo.AccountID));
  5460. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  5461. // 保存失败
  5462. if (result != Constant.INT_IS_ONE)
  5463. {
  5464. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5465. }
  5466. // 保存成功返回null
  5467. return null;
  5468. }
  5469. /// <summary>
  5470. /// 添加在产产品数据
  5471. /// </summary>
  5472. /// <param name="oracleTrConn">连接对象</param>
  5473. /// <param name="inProduction">在产产品实体类</param>
  5474. /// <param name="sUserInfo">用户基本信息</param>
  5475. /// <param name="isSendBody">是否交坯</param>
  5476. /// <returns>string</returns>
  5477. /// <remarks>
  5478. /// 陈冰 2014.09.18 新建
  5479. /// </remarks>
  5480. private static string AddInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo, DataSet _dsDataset, bool isSendBody = false)
  5481. {
  5482. #region SQL
  5483. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  5484. OracleParameter[] parasExist = new OracleParameter[] {
  5485. new OracleParameter(":barcode",inProduction.BarCode.Trim()),
  5486. };
  5487. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  5488. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  5489. {
  5490. // 获取生产线ID,生产线名称,生产编码
  5491. string sql = @"select TP_PC_ProductionLine.ProductionLineID,TP_PC_ProductionLine.ProductionLineCode,TP_PC_ProductionLine.ProductionLineName
  5492. from TP_PC_Procedure inner join TP_PC_ProductionLine
  5493. on TP_PC_Procedure.ProductionLineID=TP_PC_ProductionLine.ProductionLineID
  5494. where TP_PC_Procedure.ProcedureID=:ProcedureID
  5495. ";
  5496. OracleParameter[] paras = new OracleParameter[] {
  5497. new OracleParameter(":ProcedureID",inProduction.FlowProcedureID),
  5498. };
  5499. dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5500. #region 获取生产线信息
  5501. int ProductionLineID = 0;//生产线ID
  5502. string ProductionLineCode = "", ProductionLineName = "";//生产线名称,编码
  5503. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5504. {
  5505. ProductionLineID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["ProductionLineID"]);
  5506. ProductionLineCode = dsresult.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  5507. ProductionLineName = dsresult.Tables[0].Rows[0]["ProductionLineName"].ToString();
  5508. }
  5509. #endregion
  5510. #region 获取注浆信息
  5511. // sql = @"select
  5512. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  5513. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  5514. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  5515. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  5516. // TP_PM_GroutingDailyDetail.MouldCode,
  5517. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  5518. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  5519. // TP_PM_GroutingDailyDetail.GroutingLineID,
  5520. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  5521. // TP_PM_GroutingDailyDetail.GroutingLineName,
  5522. // TP_PM_GroutingDaily.GMouldTypeID,
  5523. // TP_PM_GroutingDaily.CanManyTimes,
  5524. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  5525. // TP_PM_GroutingDailyDetail.SpecialRepairflag,
  5526. // TP_PM_GroutingDailyDetail.GoodsID,
  5527. // TP_PM_GroutingDailyDetail.GoodsCode,
  5528. // TP_PM_GroutingDailyDetail.GoodsName,
  5529. // TP_PM_GroutingDailyDetail.GroutingDate
  5530. // from TP_PM_GroutingDaily
  5531. // inner join TP_PM_GroutingDailyDetail
  5532. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  5533. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5534. // sql = @"select
  5535. // UserID as GroutingUserID,
  5536. // UserCode as GroutingUserCode,
  5537. // GroutingCount as GroutingNum,
  5538. // GroutingMouldCode,
  5539. // MouldCode,
  5540. // GroutingDailyID,
  5541. // GroutingDailyDetailID,
  5542. // GroutingLineID,
  5543. // GroutingLineCode,
  5544. // GroutingLineName,
  5545. // GroutingLineDetailID,
  5546. // SpecialRepairflag,
  5547. // GoodsID,
  5548. // GoodsCode,
  5549. // GoodsName,
  5550. // GroutingDate,
  5551. // (select GMouldTypeID
  5552. // from TP_PM_GroutingDaily
  5553. // where TP_PM_GroutingDaily.GroutingDailyID =
  5554. // TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  5555. // (select CanManyTimes
  5556. // from TP_PM_GroutingDaily
  5557. // where TP_PM_GroutingDaily.GroutingDailyID =
  5558. // TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes
  5559. // from TP_PM_GroutingDailyDetail
  5560. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5561. // sql = @"select
  5562. // GroutingUserID,
  5563. // GroutingUserCode,
  5564. // GroutingNum,
  5565. // GroutingMouldCode,
  5566. // MouldCode,
  5567. // GroutingDailyID,
  5568. // GroutingDailyDetailID,
  5569. // GroutingLineID,
  5570. // GroutingLineCode,
  5571. // GroutingLineName,
  5572. // GroutingLineDetailID,
  5573. // SpecialRepairflag,
  5574. // GoodsID,
  5575. // GoodsCode,
  5576. // GoodsName,
  5577. // GroutingDate,
  5578. // GMouldTypeID
  5579. // CanManyTimes
  5580. // from tp_pm_productiondata
  5581. // where tp_pm_productiondata.barcode=:barcode";
  5582. // paras = new OracleParameter[] {
  5583. // new OracleParameter(":barcode",inProduction.BarCode),
  5584. // };
  5585. dsresult = _dsDataset;
  5586. //dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5587. // 产品ID, 注浆登记ID, 注浆明细ID, 成型线ID 成型线类型ID 能否多次注浆 成型生产线明细ID
  5588. int goodsid = 0, groutingDailyID = 0, groutingdailydetailid = 0, groutinglineid = 0, gMouldTypeID = 0, canManyTimes = 0, groutingLineDetailID = 0;
  5589. // 产品编码, 产品名称 成型线编码 成型线名称 注浆模具编号 模具编号
  5590. string goodsCode = "", goodsName = "", groutingLineCode = "", groutingLineName = "", groutingmouldcode = "", mouldCode = "";
  5591. DateTime? groutingdate = null; // 注浆日期
  5592. int groutingUserID = 0, groutingNum = 0; //注浆工号ID,注浆次数
  5593. string groutingUserCode = "";//注浆工号
  5594. int? LogoID = null;
  5595. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5596. {
  5597. goodsid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GoodsID"]);
  5598. groutingDailyID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyID"]);
  5599. groutingdailydetailid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  5600. groutinglineid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineID"]);
  5601. groutingLineDetailID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineDetailID"]);
  5602. groutingdate = Convert.ToDateTime(dsresult.Tables[0].Rows[0]["GroutingDate"]);
  5603. goodsCode = dsresult.Tables[0].Rows[0]["GoodsCode"].ToString();
  5604. goodsName = dsresult.Tables[0].Rows[0]["GoodsName"].ToString();
  5605. groutingLineCode = dsresult.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  5606. groutingLineName = dsresult.Tables[0].Rows[0]["GroutingLineName"].ToString();
  5607. groutingmouldcode = dsresult.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  5608. mouldCode = dsresult.Tables[0].Rows[0]["MouldCode"].ToString();
  5609. groutingUserCode = dsresult.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  5610. groutingUserID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingUserID"]);
  5611. gMouldTypeID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GMouldTypeID"]);
  5612. canManyTimes = Convert.ToInt32(dsresult.Tables[0].Rows[0]["CanManyTimes"]);
  5613. groutingNum = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingNum"]);
  5614. if (dsresult.Tables[0].Rows[0]["logoid"].ToString() != "")
  5615. {
  5616. LogoID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["logoid"]);
  5617. }
  5618. }
  5619. #endregion
  5620. sql = " insert into tp_pm_inproduction"
  5621. + " ( barcode,"
  5622. + " productionlineid,"
  5623. + " productionlinecode,"
  5624. + " productionlinename,"
  5625. + " proceduremodel,"
  5626. + " modeltype,"
  5627. + " ispublicbody,"
  5628. + " goodsid,"
  5629. + " goodscode,"
  5630. + " goodsname,"
  5631. + " userid,"
  5632. + " groutingdailyid,"
  5633. + " groutingdailydetailid,"
  5634. + " groutingdate,"
  5635. + " groutinglineid,"
  5636. + " groutinglinecode,"
  5637. + " groutinglinename,"
  5638. + " gmouldtypeid,"
  5639. + " canmanytimes,"
  5640. + " groutinglinedetailid,"
  5641. + " groutingmouldcode,"
  5642. + " mouldcode,"
  5643. + " accountid,"
  5644. + " createuserid,"
  5645. + " updateuserid,GoodsLevelTypeID,"
  5646. + " GroutingUserID,"
  5647. + " GroutingUserCode,"
  5648. + " GroutingNum,"
  5649. + " SpecialRepairflag,"
  5650. + " FlowProcedureID,"
  5651. + " FlowProcedureTime,"
  5652. + " ProcedureID,"
  5653. + " ProcedureTime,"
  5654. + " ProductionDataID,logoid"
  5655. + " ) values ("
  5656. + " :barcode,"
  5657. + " :productionlineid,"
  5658. + " :productionlinecode,"
  5659. + " :productionlinename,"
  5660. + " :procedureModel,"
  5661. + " :modelType,"
  5662. + " :isPublicBody,"
  5663. + " :goodsid,"
  5664. + " :goodscode,"
  5665. + " :goodsname,"
  5666. + " :userID,"
  5667. + " :groutingdailyid,"
  5668. + " :groutingdailydetailid,"
  5669. + " :groutingdate,"
  5670. + " :groutinglineid,"
  5671. + " :groutinglinecode,"
  5672. + " :groutinglinename,"
  5673. + " :gmouldtypeid,"
  5674. + " :canmanytimes,"
  5675. + " :groutinglinedetailid,"
  5676. + " :groutingmouldcode,"
  5677. + " :mouldcode,"
  5678. + " :accountID,"
  5679. + " :createUserID,"
  5680. + " :updateUserID,"
  5681. + " null,"
  5682. + " :groutinguserid,"
  5683. + " :groutingusercode,"
  5684. + " :groutingnum,"
  5685. + " :specialRepairflag,"
  5686. + " :flowProcedureID,"
  5687. + " sysdate,"
  5688. + " :procedureID,"
  5689. + " sysdate,"
  5690. + " :productionDataID,:logoid"
  5691. + " ) ";
  5692. #endregion
  5693. paras = new OracleParameter[] {
  5694. new OracleParameter(":procedureModel",inProduction.ProcedureModel),
  5695. new OracleParameter(":modelType",inProduction.ModelType),
  5696. new OracleParameter(":isPublicBody",inProduction.IsPublicBody),
  5697. new OracleParameter(":userID",inProduction.UserID),
  5698. new OracleParameter(":accountID",sUserInfo.AccountID),
  5699. new OracleParameter(":createUserID",sUserInfo.UserID),
  5700. new OracleParameter(":updateUserID",sUserInfo.UserID),
  5701. new OracleParameter(":barcode",inProduction.BarCode),
  5702. new OracleParameter(":specialRepairflag",inProduction.SpecialRepairflag),
  5703. new OracleParameter(":productionlineid",ProductionLineID),//---开始赋值
  5704. new OracleParameter(":productionlinecode",ProductionLineCode),
  5705. new OracleParameter(":productionlinename",ProductionLineName),
  5706. new OracleParameter(":goodsid",goodsid),
  5707. new OracleParameter(":goodscode",goodsCode),
  5708. new OracleParameter(":goodsname",goodsName),
  5709. new OracleParameter(":groutingdailyid",groutingDailyID),
  5710. new OracleParameter(":groutingdailydetailid",groutingdailydetailid),
  5711. new OracleParameter(":groutingdate",groutingdate),
  5712. new OracleParameter(":groutinglineid",groutinglineid),
  5713. new OracleParameter(":groutinglinecode",groutingLineCode),
  5714. new OracleParameter(":groutinglinename",groutingLineName),
  5715. new OracleParameter(":gmouldtypeid",gMouldTypeID),
  5716. new OracleParameter(":canmanytimes",canManyTimes),
  5717. new OracleParameter(":groutinglinedetailid",groutingLineDetailID),
  5718. new OracleParameter(":groutingmouldcode",groutingmouldcode),
  5719. new OracleParameter(":mouldcode",mouldCode),
  5720. new OracleParameter(":groutinguserid",groutingUserID),
  5721. new OracleParameter(":groutingusercode",groutingUserCode),
  5722. new OracleParameter(":groutingnum",groutingNum),
  5723. new OracleParameter(":flowProcedureID",inProduction.FlowProcedureID),
  5724. new OracleParameter(":procedureID",inProduction.FlowProcedureID),
  5725. new OracleParameter(":productionDataID",inProduction.ProductionDataID),
  5726. new OracleParameter(":logoid",LogoID),
  5727. };
  5728. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5729. // 保存失败
  5730. if (result != Constant.INT_IS_ONE)
  5731. {
  5732. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5733. }
  5734. //xuwei fix begin
  5735. //2019-09-17
  5736. //更新用过条码
  5737. //交坯=4,在产=3
  5738. string barcodeStatus = isSendBody ? "4" : "3";
  5739. string updateUsedBarCode = "update TP_PM_USEDBARCODE set barcodestatus=" + barcodeStatus + " where barcode='" + inProduction.BarCode + "'";
  5740. oracleTrConn.ExecuteNonQuery(updateUsedBarCode);
  5741. //xuwei end
  5742. }
  5743. // 保存成功返回null
  5744. return null;
  5745. }
  5746. /// <summary>
  5747. /// 根据最大生产数据ID,获取窑车窑炉等信息
  5748. /// </summary>
  5749. /// <param name="oracleTrConn"></param>
  5750. /// <param name="barcode"></param>
  5751. /// <param name="sUserInfo"></param>
  5752. /// <returns></returns>
  5753. private static DataSet GetFinishCheckKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  5754. {
  5755. string sql = @"select
  5756. KilnID,
  5757. KilnCode,
  5758. KilnName,
  5759. KilnCarID,
  5760. KilnCarCode,
  5761. KilnCarName,
  5762. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5763. KilnCarPosition
  5764. from tp_pm_inproduction where barcode=:barcode
  5765. union
  5766. select
  5767. KilnID,
  5768. KilnCode,
  5769. KilnName,
  5770. KilnCarID,
  5771. KilnCarCode,
  5772. KilnCarName,
  5773. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5774. KilnCarPosition
  5775. from TP_PM_InProductionTrash where barcode=:barcode
  5776. ";
  5777. try
  5778. {
  5779. IDataParameter[] paras = new OracleParameter[]
  5780. {
  5781. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  5782. };
  5783. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  5784. if (returnDs != null
  5785. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  5786. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  5787. {
  5788. return returnDs;
  5789. }
  5790. else
  5791. {
  5792. return null;
  5793. }
  5794. }
  5795. catch (Exception ex)
  5796. {
  5797. throw ex;
  5798. }
  5799. }
  5800. /// <summary>
  5801. /// 根据最大生产数据ID,获取窑车窑炉等信息
  5802. /// </summary>
  5803. /// <param name="oracleTrConn"></param>
  5804. /// <param name="barcode"></param>
  5805. /// <param name="sUserInfo"></param>
  5806. /// <returns></returns>
  5807. private static DataSet GetKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  5808. {
  5809. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  5810. // (
  5811. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  5812. // )";
  5813. // string sql = @"select
  5814. // KilnID,
  5815. // KilnCode,
  5816. // KilnName,
  5817. // KilnCarID,
  5818. // KilnCarCode,
  5819. // KilnCarName,
  5820. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5821. // KilnCarPosition
  5822. // from tp_pm_inproduction where barcode=:barcode
  5823. // union
  5824. // select
  5825. // KilnID,
  5826. // KilnCode,
  5827. // KilnName,
  5828. // KilnCarID,
  5829. // KilnCarCode,
  5830. // KilnCarName,
  5831. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5832. // KilnCarPosition
  5833. // from TP_PM_InProductionTrash where barcode=:barcode
  5834. //";
  5835. string sql = @"select
  5836. KilnID,
  5837. KilnCode,
  5838. KilnName,
  5839. KilnCarID,
  5840. KilnCarCode,
  5841. KilnCarName,
  5842. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5843. KilnCarPosition
  5844. from tp_pm_inproduction where barcode=:barcode
  5845. ";
  5846. try
  5847. {
  5848. IDataParameter[] paras = new OracleParameter[]
  5849. {
  5850. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  5851. };
  5852. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  5853. if (returnDs != null
  5854. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  5855. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  5856. {
  5857. return returnDs;
  5858. }
  5859. else
  5860. {
  5861. return null;
  5862. }
  5863. }
  5864. catch (Exception ex)
  5865. {
  5866. throw ex;
  5867. }
  5868. }
  5869. /// <summary>
  5870. /// 修改在产数据
  5871. /// </summary>
  5872. /// <param name="oracleTrConn">连接对象</param>
  5873. /// <param name="inProduction">在产数据实体类</param>
  5874. /// <param name="sUserInfo">用户基本信息</param>
  5875. /// <returns>string</returns>
  5876. /// <remarks>
  5877. /// 陈冰 2014.09.18 新建
  5878. /// </remarks>
  5879. private static string UpdateInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo)
  5880. {
  5881. List<OracleParameter> paras = new List<OracleParameter>();
  5882. //paras.Add(new OracleParameter(":completeProcedureID", inProduction.CompleteProcedureID));
  5883. paras.Add(new OracleParameter(":procedureModel", inProduction.ProcedureModel));
  5884. paras.Add(new OracleParameter(":modelType", inProduction.ModelType));
  5885. paras.Add(new OracleParameter(":defectFlag", inProduction.DefectFlag));
  5886. paras.Add(new OracleParameter(":reworkProcedureID", inProduction.ReworkProcedureID));
  5887. paras.Add(new OracleParameter(":flowprocedureid", inProduction.FlowProcedureID));
  5888. paras.Add(new OracleParameter(":procedureID", inProduction.ProcedureID));
  5889. paras.Add(new OracleParameter(":productionDataID", inProduction.ProductionDataID));
  5890. #region SQL
  5891. string sql = " update TP_PM_InProduction "
  5892. //+ " set CompleteProcedureID = :completeProcedureID,"
  5893. + "set ProcedureModel = :procedureModel,"
  5894. + " ModelType = :modelType,"
  5895. + " DefectFlag = :defectFlag,"
  5896. + " flowprocedureid = :flowprocedureid,"
  5897. + " flowproceduretime = sysdate,"
  5898. + " procedureID = :procedureID,"
  5899. + " procedureTime = sysdate,"
  5900. + " productionDataID = :productionDataID,"
  5901. // + " GoodsLevelTypeID = :GoodsLevelTypeID,"
  5902. // 扫码后,返修标识清除
  5903. + " isreworkflag = '0',"
  5904. + " ReworkProcedureID = :reworkProcedureID,";
  5905. #region 只有交坯工序是才传值更改公坯字段
  5906. if (inProduction.IsPublicBody != null)
  5907. {
  5908. sql = sql + " IsPublicBody = :isPublicBody,";
  5909. paras.Add(new OracleParameter(":isPublicBody", inProduction.IsPublicBody));
  5910. }
  5911. #endregion
  5912. #region 只有走特定返工工序时才更改重烧字段
  5913. if (inProduction.IsReFire != null)
  5914. {
  5915. sql = sql + " IsReFire = :isReFire,";
  5916. paras.Add(new OracleParameter(":isReFire", inProduction.IsReFire));
  5917. }
  5918. #endregion
  5919. #region 只有成检时才更新产品分级字段
  5920. //if (inProduction.GoodsGrade != null)
  5921. //{
  5922. // sql = sql + " GoodsGrade = :goodsGrade,";
  5923. // paras.Add(new OracleParameter(":goodsGrade", inProduction.GoodsGrade));
  5924. //}
  5925. if (inProduction.GoodsLevelID != null)
  5926. {
  5927. sql = sql + " GoodsLevelID = :GoodsLevelID,";
  5928. paras.Add(new OracleParameter(":GoodsLevelID", inProduction.GoodsLevelID));
  5929. }
  5930. if (inProduction.GoodsLevelTypeID != null)
  5931. {
  5932. sql = sql + " GoodsLevelTypeID = :GoodsLevelTypeID,";
  5933. paras.Add(new OracleParameter(":GoodsLevelTypeID", inProduction.GoodsLevelTypeID));
  5934. }
  5935. #region 更新窑炉窑车属性
  5936. if (inProduction.ModelType == 1 || inProduction.ModelType == 2 || inProduction.ModelType == 3 || inProduction.ModelType == 4 || inProduction.ModelType == 6)
  5937. {
  5938. sql = sql + " KilnID = :KilnID,";
  5939. paras.Add(new OracleParameter(":KilnID", inProduction.KilnID));
  5940. sql = sql + " KilnCode = :KilnCode,";
  5941. paras.Add(new OracleParameter(":KilnCode", inProduction.KilnCode));
  5942. sql = sql + " KilnName = :KilnName,";
  5943. paras.Add(new OracleParameter(":KilnName", inProduction.KilnName));
  5944. sql = sql + " KilnCarID = :KilnCarID,";
  5945. paras.Add(new OracleParameter(":KilnCarID", inProduction.KilnCarID));
  5946. sql = sql + " KilnCarCode = :KilnCarCode,";
  5947. paras.Add(new OracleParameter(":KilnCarCode", inProduction.KilnCarCode));
  5948. sql = sql + " KilnCarName = :KilnCarName,";
  5949. paras.Add(new OracleParameter(":KilnCarName", inProduction.KilnCarName));
  5950. sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  5951. paras.Add(new OracleParameter(":KilnCarBatchNo", inProduction.KilnCarBatchNo));
  5952. sql = sql + " KilnCarPosition = :KilnCarPosition,";
  5953. paras.Add(new OracleParameter(":KilnCarPosition", inProduction.KilnCarPosition));
  5954. }
  5955. else
  5956. {
  5957. //
  5958. ////////DataSet ds = GetKilnCarInfo(oracleTrConn, inProduction.BarCode, sUserInfo);
  5959. ////////if (ds != null)
  5960. ////////{
  5961. //////// if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  5962. //////// {
  5963. //////// sql = sql + " KilnID = :KilnID,";
  5964. //////// paras.Add(new OracleParameter(":KilnID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"])));
  5965. //////// sql = sql + " KilnCode = :KilnCode,";
  5966. //////// paras.Add(new OracleParameter(":KilnCode", ds.Tables[0].Rows[0]["KilnCode"].ToString()));
  5967. //////// sql = sql + " KilnName = :KilnName,";
  5968. //////// paras.Add(new OracleParameter(":KilnName", ds.Tables[0].Rows[0]["KilnName"].ToString()));
  5969. //////// sql = sql + " KilnCarID = :KilnCarID,";
  5970. //////// paras.Add(new OracleParameter(":KilnCarID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"])));
  5971. //////// sql = sql + " KilnCarCode = :KilnCarCode,";
  5972. //////// paras.Add(new OracleParameter(":KilnCarCode", ds.Tables[0].Rows[0]["KilnCarCode"].ToString()));
  5973. //////// sql = sql + " KilnCarName = :KilnCarName,";
  5974. //////// paras.Add(new OracleParameter(":KilnCarName", ds.Tables[0].Rows[0]["KilnCarName"].ToString()));
  5975. //////// sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  5976. //////// paras.Add(new OracleParameter(":KilnCarBatchNo", ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString()));
  5977. //////// sql = sql + " KilnCarPosition = :KilnCarPosition,";
  5978. //////// paras.Add(new OracleParameter(":KilnCarPosition", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"])));
  5979. //////// }
  5980. ////////}
  5981. }
  5982. #endregion
  5983. #endregion
  5984. #region 更新在产商标
  5985. if (inProduction.LogoID != null)
  5986. {
  5987. sql = sql + " LogoID = :LogoID,";
  5988. paras.Add(new OracleParameter(":LogoID", inProduction.LogoID));
  5989. }
  5990. #endregion
  5991. sql = sql + " UserID = :userID,"
  5992. + " UpdateUserID = :updateUserID"
  5993. + " where Barcode = :barCode";
  5994. #endregion
  5995. paras.Add(new OracleParameter(":userID", inProduction.UserID));
  5996. paras.Add(new OracleParameter(":updateUserID", sUserInfo.UserID));
  5997. paras.Add(new OracleParameter(":barCode", inProduction.BarCode));
  5998. foreach (var para in paras)
  5999. {
  6000. if (para.Value + "" == "")
  6001. {
  6002. para.Value = DBNull.Value;
  6003. }
  6004. }
  6005. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  6006. // 保存失败
  6007. if (result != Constant.INT_IS_ONE)
  6008. {
  6009. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6010. }
  6011. // 保存成功返回null
  6012. return null;
  6013. }
  6014. /// <summary>
  6015. /// 校验条码有效
  6016. /// </summary>
  6017. /// <param name="oracleTrConn">连接对象</param>
  6018. /// <param name="procedureID">工序ID</param>
  6019. /// <param name="barcode">条码</param>
  6020. /// <param name="goodsID">返回的产品ID</param>
  6021. /// <param name="goodsCode">返回的产品Code</param>
  6022. /// <param name="goodsName">返回的产品名称</param>
  6023. /// <param name="groutingUserID">返回的注浆者ID</param>
  6024. /// <returns>string</returns>
  6025. /// <remarks>
  6026. /// 陈冰 2014.09.18 新建
  6027. /// </remarks>
  6028. private static string CheckBarcode(IDBTransaction oracleTrConn,
  6029. int procedureID,
  6030. string barcode,
  6031. out int goodsID,
  6032. out string goodsCode,
  6033. out string goodsName,
  6034. out string groutingUserCode,
  6035. SUserInfo sUserInfo
  6036. )
  6037. {
  6038. try
  6039. {
  6040. OracleParameter[] paras = new OracleParameter[]{
  6041. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  6042. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  6043. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  6044. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  6045. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6046. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6047. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  6048. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6049. };
  6050. oracleTrConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  6051. if (!"null".Equals(paras[3].Value + ""))
  6052. {
  6053. goodsID = Convert.ToInt32(paras[3].Value + "");
  6054. }
  6055. else
  6056. {
  6057. goodsID = 0;
  6058. }
  6059. goodsCode = paras[4].Value + "";
  6060. goodsName = paras[5].Value + "";
  6061. if (!"null".Equals(paras[6].Value + ""))
  6062. {
  6063. groutingUserCode = paras[6].Value + "";
  6064. }
  6065. else
  6066. {
  6067. groutingUserCode = null;
  6068. }
  6069. if ("null".Equals(paras[2].Value + ""))
  6070. {
  6071. return null;
  6072. }
  6073. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  6074. }
  6075. catch (Exception ex)
  6076. {
  6077. throw ex;
  6078. }
  6079. }
  6080. /// <summary>
  6081. /// 查询工序信息
  6082. /// </summary>
  6083. /// <param name="oracleTrConn">连接对象</param>
  6084. /// <param name="procedureID">工序ID</param>
  6085. /// <returns>工序实体</returns>
  6086. private static ProcedureEntity GetProcedurByID(IDBTransaction oracleTrConn, int procedureID)
  6087. {
  6088. ProcedureEntity procedureEntity = new ProcedureEntity();
  6089. string procsql = "pro_pm_searchProcedurbyID";
  6090. try
  6091. {
  6092. IDataParameter[] paras = new OracleParameter[]
  6093. {
  6094. new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input),
  6095. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  6096. };
  6097. DataSet returnDs = oracleTrConn.ExecStoredProcedure(procsql, paras);
  6098. if (returnDs != null
  6099. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6100. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6101. {
  6102. DataRow row = returnDs.Tables[0].Rows[0];
  6103. // 转实体
  6104. procedureEntity = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  6105. return procedureEntity;
  6106. }
  6107. else
  6108. {
  6109. return null;
  6110. }
  6111. }
  6112. catch (Exception ex)
  6113. {
  6114. throw ex;
  6115. }
  6116. }
  6117. #endregion
  6118. #region 检验
  6119. /// <summary>
  6120. /// 保存条码信息
  6121. /// </summary>
  6122. /// <param name="procedureID">工序ID</param>
  6123. /// <param name="productionDataEntitys">生产数据集</param>
  6124. /// <param name="sUserInfo">用户基本信息</param>
  6125. /// <returns>string</returns>
  6126. public static string AddCheckBarcode(int procedureID, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6127. {
  6128. string errMsg = "";
  6129. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6130. try
  6131. {
  6132. oracleTrConn.Connect();
  6133. #region 查询工序信息
  6134. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  6135. #endregion
  6136. #region 标准检验(半成品)
  6137. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal)
  6138. {
  6139. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6140. }
  6141. #endregion
  6142. #region 成品检验
  6143. else if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  6144. {
  6145. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6146. }
  6147. #endregion
  6148. #region 入窑前检验
  6149. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKilnCheck)
  6150. {
  6151. errMsg = AddIntoKilnCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6152. }
  6153. #endregion
  6154. // 没有错误 提交事务
  6155. if (string.IsNullOrEmpty(errMsg))
  6156. {
  6157. oracleTrConn.Commit();
  6158. }
  6159. }
  6160. catch (Exception ex)
  6161. {
  6162. oracleTrConn.Rollback();
  6163. throw ex;
  6164. }
  6165. finally
  6166. {
  6167. // 释放资源
  6168. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6169. {
  6170. oracleTrConn.Disconnect();
  6171. }
  6172. }
  6173. return errMsg;
  6174. }
  6175. /// <summary>
  6176. /// 入窑前检验
  6177. /// </summary>
  6178. /// <param name="oracleTrConn">连接对象</param>
  6179. /// <param name="procedure">工序</param>
  6180. /// <param name="productionDataEntitys">生产数据集</param>
  6181. /// <param name="sUserInfo">用户基本信息</param>
  6182. /// <returns>string</returns>
  6183. private static string AddIntoKilnCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6184. {
  6185. string errMsg = "";
  6186. // 获得账务日期
  6187. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6188. // 本批采集的批次号
  6189. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6190. #region 查询产品分级
  6191. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  6192. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  6193. #endregion
  6194. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6195. {
  6196. if (string.IsNullOrEmpty(productionData.Barcode))
  6197. {
  6198. throw new Exception("传入的条码号为空");
  6199. }
  6200. if (productionData.ProductionDataID != 0)
  6201. {
  6202. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  6203. if (!string.IsNullOrEmpty(errMsg))
  6204. {
  6205. return errMsg;
  6206. }
  6207. // 删除报废条码
  6208. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  6209. where tp_pm_scrapproduct.barcode=:barcode";
  6210. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  6211. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6212. };
  6213. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  6214. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6215. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6216. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6217. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6218. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6219. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6220. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6221. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  6222. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6223. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6224. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6225. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  6226. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  6227. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6228. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6229. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6230. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6231. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6232. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6233. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6234. CREATEUSERID, UPDATETIME, :UpdateUserID,
  6235. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6236. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6237. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6238. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  6239. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  6240. from TP_PM_InProductionTrash where barcode=:barcode ";
  6241. OracleParameter[] InProductparas = new OracleParameter[]{
  6242. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6243. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6244. };
  6245. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  6246. //删除回收站中的条码
  6247. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  6248. OracleParameter[] TrashProductparas = new OracleParameter[]{
  6249. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  6250. };
  6251. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  6252. }
  6253. int goodsID = Constant.INT_IS_ZERO;
  6254. string goodsCode = string.Empty;
  6255. string goodsName = string.Empty;
  6256. // 注浆者工号
  6257. string groutingUserCode = string.Empty;
  6258. #region 校验条码有效性
  6259. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6260. if (!string.IsNullOrEmpty(errMsg))
  6261. {
  6262. if (productionData.ProductionDataID == 0)
  6263. return errMsg;
  6264. }
  6265. #endregion
  6266. #region 获得产品分级ID
  6267. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  6268. // 获得产品分级ID
  6269. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  6270. #endregion
  6271. // 查询新插入的生产数据ID
  6272. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  6273. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6274. int productionDataID = 0;
  6275. if (!string.IsNullOrEmpty(idStr))
  6276. {
  6277. productionDataID = int.Parse(idStr);
  6278. }
  6279. else
  6280. {
  6281. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6282. }
  6283. int? ClassesSettingID = null;//班次配置ID
  6284. #region 添加生产者数据
  6285. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6286. if (!string.IsNullOrEmpty(errMsg))
  6287. {
  6288. return errMsg;
  6289. }
  6290. #endregion
  6291. #region 添加生产数据
  6292. #region 属性赋值
  6293. productionData.ClassesSettingID = ClassesSettingID;
  6294. productionData.ProductionDataID = Convert.ToInt32(idStr);
  6295. productionData.CentralizedBatchNo = centralizedBatchNo;
  6296. productionData.ProductionLineID = procedure.ProductionLineID;
  6297. productionData.ProductionLineCode = procedure.ProductionlineCode;
  6298. productionData.ProductionLineName = procedure.ProductionlineName;
  6299. productionData.ProcedureID = procedure.ProcedureID;
  6300. productionData.ProcedureCode = procedure.ProcedureCode;
  6301. productionData.ProcedureName = procedure.ProcedureName;
  6302. productionData.ProcedureModel = procedure.ProcedureModel;
  6303. productionData.ModelType = procedure.ModelType;
  6304. productionData.NodeType = procedure.NodeType;
  6305. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  6306. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6307. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  6308. productionData.OrganizationID = procedure.OrganizationID;
  6309. productionData.GoodsID = goodsID;
  6310. productionData.GoodsCode = goodsCode;
  6311. productionData.GoodsName = goodsName;
  6312. productionData.GoodsLevelID = productionData.GoodsLevelID;
  6313. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6314. //如果报废给此产品最状态赋值 wangxin 2015/4/1 因为删除掉了生产数据表中的产品最终状态
  6315. ////if (productionData.ProductionDefects != null)
  6316. ////{
  6317. //// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6318. //// {
  6319. //// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  6320. //// {
  6321. //// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  6322. //// break;
  6323. //// }
  6324. //// }
  6325. ////}
  6326. ////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  6327. ////{
  6328. //// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  6329. ////}
  6330. ////// string sqlReFire = @"select
  6331. ////// isrefire
  6332. ////// from tp_pm_inproduction where barcode=:barcode
  6333. ////// ";
  6334. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  6335. ////// new OracleParameter(":barcode",productionData.Barcode),
  6336. ////// };
  6337. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  6338. ////// //DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6339. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6340. ////// {
  6341. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  6342. ////// {
  6343. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6344. ////// }
  6345. ////// }
  6346. #endregion
  6347. string OutSpecialRepairflag = "0";//干补标识
  6348. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6349. errMsg = AddProductionDataWaster(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6350. if (!string.IsNullOrEmpty(errMsg))
  6351. {
  6352. return errMsg;
  6353. }
  6354. #endregion
  6355. //#region 添加生产者数据
  6356. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  6357. //if (!string.IsNullOrEmpty(errMsg))
  6358. //{
  6359. // return errMsg;
  6360. //}
  6361. //#endregion
  6362. #region 条码有缺陷
  6363. // 废品标识
  6364. bool scrapFlag = false;
  6365. // 存在缺陷 插入缺陷表
  6366. if (productionData.ProductionDefects != null)
  6367. {
  6368. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6369. {
  6370. #region 保存缺陷
  6371. productionDefect.ProductionDataID = productionDataID;
  6372. productionDefect.BarCode = productionData.Barcode;
  6373. productionDefect.ProductionLineID = procedure.ProductionLineID;
  6374. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6375. productionDefect.ProductionLineName = procedure.ProductionlineName;
  6376. productionDefect.ProcedureID = procedure.ProcedureID;
  6377. productionDefect.ProcedureCode = procedure.ProcedureCode;
  6378. productionDefect.ProcedureName = procedure.ProcedureName;
  6379. productionDefect.UserID = productionData.UserID;
  6380. productionDefect.UserCode = productionData.UserCode;
  6381. productionDefect.UserName = productionData.UserName;
  6382. productionDefect.GoodsID = productionData.GoodsID;
  6383. productionDefect.GoodsCode = productionData.GoodsCode;
  6384. productionDefect.GoodsName = productionData.GoodsName;
  6385. productionData.Remarks = productionData.Remarks;
  6386. productionDefect.ScrapResponFlag
  6387. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6388. // 保存缺陷
  6389. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6390. if (!string.IsNullOrEmpty(errMsg))
  6391. {
  6392. return errMsg;
  6393. }
  6394. #endregion
  6395. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  6396. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  6397. {
  6398. scrapFlag = true;
  6399. #region 添加废弃产品 删除在产产品数据
  6400. #region 添加废弃产品
  6401. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6402. #region 属性赋值
  6403. scrapProduct.BarCode = productionData.Barcode;
  6404. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  6405. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  6406. {
  6407. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  6408. }
  6409. else
  6410. {
  6411. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6412. }
  6413. scrapProduct.ScrapDate = accountDate;
  6414. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  6415. scrapProduct.Remarks = productionDefect.Remarks;
  6416. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6417. scrapProduct.Auditor = sUserInfo.UserID;
  6418. scrapProduct.AuditlDate = accountDate;
  6419. scrapProduct.AccountDate = accountDate;
  6420. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6421. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6422. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  6423. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  6424. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6425. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6426. scrapProduct.ScrapType = 1;
  6427. #endregion
  6428. // 保存报废
  6429. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6430. // 保存失败
  6431. if (!string.IsNullOrEmpty(errMsg))
  6432. {
  6433. return errMsg;
  6434. }
  6435. #endregion
  6436. #region 添加责任工序
  6437. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  6438. //xuwei fix 2019-09-26 使用通用方法判定
  6439. if (IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode) == 1)
  6440. procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  6441. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  6442. {
  6443. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6444. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6445. ResponProcedureEntity responProce = new ResponProcedureEntity();
  6446. #region 属性赋值
  6447. responProce.BarCode = productionData.Barcode;
  6448. responProce.ProductionDataID = productionDataID;
  6449. responProce.ProductionLineID = productionDefect.ProductionLineID;
  6450. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  6451. responProce.ProductionLineName = productionDefect.ProductionLineName;
  6452. responProce.ProcedureID = productionDefect.DefectProcedureID;
  6453. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  6454. responProce.ProcedureName = productionDefect.DefectProcedureName;
  6455. responProce.UserID = productionDefect.DefectUserID;
  6456. responProce.UserCode = productionDefect.DefectUserCode;
  6457. responProce.UserName = productionDefect.DefectUserName;
  6458. responProce.Remarks = productionDefect.Remarks;
  6459. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6460. #endregion
  6461. // 保存责任工序
  6462. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  6463. // 保存失败
  6464. if (!string.IsNullOrEmpty(errMsg))
  6465. {
  6466. return errMsg;
  6467. }
  6468. }
  6469. #endregion
  6470. #region 删除在产产品数据
  6471. InProductionEntity delInProductionEntity = new InProductionEntity();
  6472. delInProductionEntity.BarCode = productionData.Barcode;
  6473. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  6474. // 执行删除 在产数据
  6475. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  6476. // 执行失败
  6477. // if (!string.IsNullOrEmpty(errMsg)) 注释日期2015-12-28
  6478. // {
  6479. // return errMsg;
  6480. // }
  6481. #endregion
  6482. #endregion
  6483. }
  6484. #endregion
  6485. }
  6486. }
  6487. #endregion
  6488. // 条码有缺陷或者报废
  6489. //wangxin 20150414
  6490. //if (scrapFlag || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  6491. //{
  6492. #region 有缺陷 删除条码对应窑车产品
  6493. if (productionData.DefectFlag == Constant.GoodsLevelType.Defect.GetHashCode())
  6494. {
  6495. errMsg = DeleteKilnCarGoods(oracleTrConn, productionData.Barcode);
  6496. if (!string.IsNullOrEmpty(errMsg))
  6497. {
  6498. return errMsg;
  6499. }
  6500. }
  6501. #endregion
  6502. //}
  6503. //wangxin 20150414 end
  6504. // 条码没有报废
  6505. if (!scrapFlag)
  6506. {
  6507. #region 修改在产产品数据的当前工序
  6508. InProductionEntity inProductionEntity = new InProductionEntity();
  6509. inProductionEntity.BarCode = productionData.Barcode;
  6510. //流程工序
  6511. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  6512. // 当前工序
  6513. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6514. inProductionEntity.ProcedureID = procedure.ProcedureID;
  6515. // 生产数据ID
  6516. inProductionEntity.ProductionDataID = productionDataID;
  6517. // 工序模型
  6518. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6519. // 工序类别
  6520. inProductionEntity.ModelType = procedure.ModelType;
  6521. // 生产工号
  6522. inProductionEntity.UserID = productionData.UserID;
  6523. // 缺陷标识
  6524. inProductionEntity.DefectFlag = productionData.DefectFlag;
  6525. // 返工工序ID
  6526. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  6527. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  6528. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6529. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  6530. // 执行修改
  6531. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  6532. // 执行失败
  6533. if (!string.IsNullOrEmpty(errMsg))
  6534. {
  6535. return errMsg;
  6536. }
  6537. #endregion
  6538. }
  6539. }
  6540. return errMsg;
  6541. }
  6542. /// <summary>
  6543. /// 删除窑车产品
  6544. /// </summary>
  6545. /// <param name="oracleTrConn">数据连接</param>
  6546. /// <param name="barcode">产品条码</param>
  6547. /// <returns>string</returns>
  6548. private static string DeleteKilnCarGoods(IDBTransaction oracleTrConn, string barcode)
  6549. {
  6550. string sql = "delete TP_PM_KilnCarGoods where BarCode = :barcode";
  6551. OracleParameter[] paras = new OracleParameter[] { new OracleParameter(":barcode", barcode) };
  6552. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  6553. // 保存失败
  6554. if (result != Constant.INT_IS_ONE)
  6555. {
  6556. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6557. }
  6558. return null;
  6559. }
  6560. /// <summary>
  6561. /// 添加成品编辑
  6562. /// </summary>
  6563. /// <param name="oracleTrConn">数据连接</param>
  6564. /// <param name="procedure">工序对象</param>
  6565. /// <param name="productionDataEntitys">生产数据集</param>
  6566. /// <param name="sUserInfo">用户基本信息</param>
  6567. /// <returns>string</returns>
  6568. //private static string AddFinishCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6569. //{
  6570. // string errMsg = "";
  6571. // // 获得账务日期
  6572. // DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6573. // // 本批采集的批次号
  6574. // string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6575. // foreach (ProductionDataEntity productionData in productionDataEntitys)
  6576. // {
  6577. // if (string.IsNullOrEmpty(productionData.Barcode))
  6578. // {
  6579. // throw new Exception("传入的条码号为空");
  6580. // }
  6581. // int goodsID = Constant.INT_IS_ZERO;
  6582. // string goodsCode = string.Empty;
  6583. // string goodsName = string.Empty;
  6584. // // 注浆者工号
  6585. // string groutingUserCode = string.Empty;
  6586. // // 次品标识
  6587. // bool substandardFlag = false;
  6588. // #region 校验条码有效性
  6589. // errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6590. // if (!string.IsNullOrEmpty(errMsg))
  6591. // {
  6592. // if (productionData.ProductionDataID == 0)
  6593. // return errMsg;
  6594. // }
  6595. // #endregion
  6596. // #region 添加生产数据
  6597. // #region 属性赋值
  6598. // productionData.CentralizedBatchNo = centralizedBatchNo;
  6599. // productionData.ProductionLineID = procedure.ProductionLineID;
  6600. // productionData.ProductionLineCode = procedure.ProductionlineCode;
  6601. // productionData.ProductionLineName = procedure.ProductionlineName;
  6602. // productionData.CompleteProcedureID = procedure.ProcedureID;
  6603. // productionData.ProcedureCode = procedure.ProcedureCode;
  6604. // productionData.ProcedureName = procedure.ProcedureName;
  6605. // productionData.ProcedureModel = procedure.ProcedureModel;
  6606. // productionData.ModelType = procedure.ModelType;
  6607. // productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  6608. // // 重烧
  6609. // if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  6610. // {
  6611. // //productionData.GoodsLevelID = null;
  6612. // productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6613. // }
  6614. // // 次品
  6615. // else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6616. // {
  6617. // //productionData.GoodsLevelID = null;
  6618. // substandardFlag = true;
  6619. // }
  6620. // // 查询新插入的生产数据ID
  6621. // if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  6622. // {
  6623. // //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  6624. // //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  6625. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  6626. // DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6627. // if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6628. // {
  6629. // productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6630. // }
  6631. // }
  6632. // productionData.OrganizationID = procedure.OrganizationID;
  6633. // productionData.GoodsID = goodsID;
  6634. // productionData.GoodsCode = goodsCode;
  6635. // productionData.GoodsName = goodsName;
  6636. // productionData.GoodsLevelID = productionData.GoodsLevelID;
  6637. // productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6638. // //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6639. // //{
  6640. // // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  6641. // //}
  6642. // #endregion
  6643. // string OutSpecialRepairflag = "0";//干补标识
  6644. // errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6645. // if (!string.IsNullOrEmpty(errMsg))
  6646. // {
  6647. // return errMsg;
  6648. // }
  6649. // // 查询新插入的生产数据ID
  6650. // string sql = "select SEQ_PM_ProductionData_ID.Currval from dual";
  6651. // string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6652. // // 新插入的班次配置表ID
  6653. // int productionDataID = 0;
  6654. // if (!string.IsNullOrEmpty(idStr))
  6655. // {
  6656. // productionDataID = int.Parse(idStr);
  6657. // }
  6658. // else
  6659. // {
  6660. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6661. // }
  6662. // #endregion
  6663. // #region 添加生产者数据
  6664. // int? ClassesSettingID = null;//班次配置ID
  6665. // errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6666. // if (!string.IsNullOrEmpty(errMsg))
  6667. // {
  6668. // return errMsg;
  6669. // }
  6670. // #endregion
  6671. // #region 条码有缺陷
  6672. // #region 是次品 添加废弃产品
  6673. // if (substandardFlag)
  6674. // {
  6675. // #region 添加废弃产品
  6676. // ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6677. // #region 属性赋值
  6678. // scrapProduct.BarCode = productionData.Barcode;
  6679. // scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  6680. // scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6681. // scrapProduct.ScrapDate = accountDate;
  6682. // scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  6683. // scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6684. // scrapProduct.Auditor = sUserInfo.UserID;
  6685. // scrapProduct.AuditlDate = accountDate;
  6686. // scrapProduct.AccountDate = accountDate;
  6687. // scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6688. // scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6689. // #endregion
  6690. // // 保存报废
  6691. // errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6692. // // 保存失败
  6693. // if (!string.IsNullOrEmpty(errMsg))
  6694. // {
  6695. // return errMsg;
  6696. // }
  6697. // #endregion
  6698. // }
  6699. // #endregion
  6700. // // 存在缺陷 插入缺陷表
  6701. // if (productionData.ProductionDefects != null)
  6702. // {
  6703. // foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6704. // {
  6705. // #region 保存缺陷
  6706. // productionDefect.ProductionDataID = productionDataID;
  6707. // productionDefect.BarCode = productionData.Barcode;
  6708. // productionDefect.ProductionLineID = procedure.ProductionLineID;
  6709. // productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6710. // productionDefect.ProductionLineName = procedure.ProductionlineName;
  6711. // productionDefect.ProcedureID = procedure.ProcedureID;
  6712. // productionDefect.ProcedureCode = procedure.ProcedureCode;
  6713. // productionDefect.ProcedureName = procedure.ProcedureName;
  6714. // productionDefect.UserID = productionData.UserID;
  6715. // productionDefect.UserCode = productionData.UserCode;
  6716. // productionDefect.UserName = productionData.UserName;
  6717. // productionDefect.GoodsID = productionData.GoodsID;
  6718. // productionDefect.GoodsCode = productionData.GoodsCode;
  6719. // productionDefect.GoodsName = productionData.GoodsName;
  6720. // productionData.Remarks = productionData.Remarks;
  6721. // productionDefect.ScrapResponFlag
  6722. // = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6723. // // 保存缺陷
  6724. // errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6725. // if (!string.IsNullOrEmpty(errMsg))
  6726. // {
  6727. // return errMsg;
  6728. // }
  6729. // #endregion
  6730. // #region 是次品 添加废弃责任工序
  6731. // if (substandardFlag)
  6732. // {
  6733. // #region 添加责任工序
  6734. // ResponProcedureEntity responProce = new ResponProcedureEntity();
  6735. // // 查询新插入的废弃ID
  6736. // string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6737. // string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  6738. // #region 属性赋值
  6739. // responProce.BarCode = productionData.Barcode;
  6740. // responProce.ProductionDataID = productionDataID;
  6741. // responProce.ProductionLineID = productionDefect.ProductionLineID;
  6742. // responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  6743. // responProce.ProductionLineName = productionDefect.ProductionLineName;
  6744. // responProce.ProcedureID = productionDefect.DefectProcedureID;
  6745. // responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  6746. // responProce.ProcedureName = productionDefect.DefectProcedureName;
  6747. // responProce.UserID = productionDefect.DefectUserID;
  6748. // responProce.UserCode = productionDefect.DefectUserCode;
  6749. // responProce.UserName = productionDefect.DefectUserName;
  6750. // responProce.Remarks = productionDefect.Remarks;
  6751. // responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  6752. // #endregion
  6753. // // 保存责任工序
  6754. // errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  6755. // // 保存失败
  6756. // if (!string.IsNullOrEmpty(errMsg))
  6757. // {
  6758. // return errMsg;
  6759. // }
  6760. // #endregion
  6761. // }
  6762. // #endregion
  6763. // }
  6764. // }
  6765. // #endregion
  6766. // #region 条码是次品 删除在产产品数据
  6767. // if (substandardFlag)
  6768. // {
  6769. // #region 删除在产产品数据
  6770. // InProductionEntity delInProductionEntity = new InProductionEntity();
  6771. // delInProductionEntity.BarCode = productionData.Barcode;
  6772. // // 执行删除 在产数据
  6773. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  6774. // // 执行失败
  6775. // if (!string.IsNullOrEmpty(errMsg))
  6776. // {
  6777. // return errMsg;
  6778. // }
  6779. // #endregion
  6780. // }
  6781. // #endregion
  6782. // #region 条码不是次品
  6783. // if (!substandardFlag)
  6784. // {
  6785. // #region 中间工序/重烧 修改在产产品数据
  6786. // if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  6787. // || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  6788. // {
  6789. // #region 修改在产产品数据的当前工序
  6790. // InProductionEntity inProductionEntity = new InProductionEntity();
  6791. // inProductionEntity.BarCode = productionData.Barcode;
  6792. // // 当前工序
  6793. // inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6794. // // 工序模型
  6795. // inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6796. // // 工序类别
  6797. // inProductionEntity.ModelType = procedure.ModelType;
  6798. // // 生产工号
  6799. // inProductionEntity.UserID = productionData.UserID;
  6800. // // 重烧
  6801. // inProductionEntity.IsReFire = productionData.IsReFire;
  6802. // // 缺陷
  6803. // inProductionEntity.DefectFlag = productionData.DefectFlag;
  6804. // // 产品分级
  6805. // inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  6806. // // 返工工序ID
  6807. // inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  6808. // inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  6809. // inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6810. // // 执行修改
  6811. // errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  6812. // // 执行失败
  6813. // if (!string.IsNullOrEmpty(errMsg))
  6814. // {
  6815. // return errMsg;
  6816. // }
  6817. // #endregion
  6818. // }
  6819. // #endregion
  6820. // #region 结束工序 添加成品数据 删除在产产品数据
  6821. // else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  6822. // {
  6823. // #region 添加成品数据 删除在产产品数据
  6824. // FinishedProductEntity finishedProduct = new FinishedProductEntity();
  6825. // finishedProduct.BarCode = productionData.Barcode;
  6826. // errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo);
  6827. // if (!string.IsNullOrEmpty(errMsg))
  6828. // {
  6829. // return errMsg;
  6830. // }
  6831. // InProductionEntity delInProductionEntity = new InProductionEntity();
  6832. // delInProductionEntity.BarCode = productionData.Barcode;
  6833. // // 执行删除 在产数据
  6834. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  6835. // // 执行失败
  6836. // if (!string.IsNullOrEmpty(errMsg))
  6837. // {
  6838. // return errMsg;
  6839. // }
  6840. // #endregion
  6841. // }
  6842. // #endregion
  6843. // }
  6844. // #endregion
  6845. // }
  6846. // return errMsg;
  6847. //}
  6848. /// <summary>
  6849. /// 保存标准检验
  6850. /// </summary>
  6851. /// <param name="oracleTrConn">连接对象</param>
  6852. /// <param name="procedure">工序信息</param>
  6853. /// <param name="productionDataEntitys">生产数据集合</param>
  6854. /// <param name="sUserInfo">用户基本信息</param>
  6855. /// <returns>string</returns>
  6856. private static string AddNormalCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6857. {
  6858. string errMsg = "";
  6859. // 获得账务日期
  6860. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6861. // 本批采集的批次号
  6862. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6863. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  6864. #region 查询产品分级
  6865. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  6866. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  6867. #endregion
  6868. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6869. {
  6870. if (string.IsNullOrEmpty(productionData.Barcode))
  6871. {
  6872. throw new Exception("传入的条码号为空");
  6873. }
  6874. if (productionData.ProductionDataID != 0)
  6875. {
  6876. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  6877. if (!string.IsNullOrEmpty(errMsg))
  6878. {
  6879. return errMsg;
  6880. }
  6881. // 删除报废条码
  6882. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  6883. where tp_pm_scrapproduct.barcode=:barcode";
  6884. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  6885. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6886. };
  6887. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  6888. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6889. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6890. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6891. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6892. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6893. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6894. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6895. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  6896. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6897. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6898. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6899. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  6900. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  6901. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6902. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6903. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6904. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6905. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6906. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6907. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6908. CREATEUSERID, UPDATETIME, :UpdateUserID,
  6909. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6910. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6911. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6912. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  6913. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  6914. from TP_PM_InProductionTrash where barcode=:barcode ";
  6915. OracleParameter[] InProductparas = new OracleParameter[]{
  6916. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6917. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6918. };
  6919. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  6920. //删除回收站中的条码
  6921. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  6922. OracleParameter[] TrashProductparas = new OracleParameter[]{
  6923. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  6924. };
  6925. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  6926. }
  6927. int goodsID = Constant.INT_IS_ZERO;
  6928. string goodsCode = string.Empty;
  6929. string goodsName = string.Empty;
  6930. // 注浆者工号
  6931. string groutingUserCode = string.Empty;
  6932. #region 校验条码有效性
  6933. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6934. if (!string.IsNullOrEmpty(errMsg))
  6935. {
  6936. if (productionData.ProductionDataID == 0)
  6937. return errMsg;
  6938. }
  6939. #endregion
  6940. // 查询新插入的生产数据ID
  6941. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  6942. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6943. int? ClassesSettingID = null;//班次配置ID
  6944. // 新插入的班次配置表ID
  6945. int productionDataID = 0;
  6946. if (!string.IsNullOrEmpty(idStr))
  6947. {
  6948. productionDataID = int.Parse(idStr);
  6949. }
  6950. else
  6951. {
  6952. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6953. }
  6954. #region 添加生产者数据
  6955. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6956. if (!string.IsNullOrEmpty(errMsg))
  6957. {
  6958. return errMsg;
  6959. }
  6960. #endregion
  6961. #region 添加生产数据
  6962. #region 属性赋值
  6963. productionData.ClassesSettingID = ClassesSettingID;
  6964. productionData.ProductionDataID = Convert.ToInt32(idStr);
  6965. productionData.CentralizedBatchNo = centralizedBatchNo;
  6966. productionData.ProductionLineID = procedure.ProductionLineID;
  6967. productionData.ProductionLineCode = procedure.ProductionlineCode;
  6968. productionData.ProductionLineName = procedure.ProductionlineName;
  6969. productionData.CompleteProcedureID = procedure.ProcedureID;
  6970. productionData.ProcedureID = procedure.ProcedureID;
  6971. productionData.ProcedureCode = procedure.ProcedureCode;
  6972. productionData.ProcedureName = procedure.ProcedureName;
  6973. productionData.ProcedureModel = procedure.ProcedureModel;
  6974. productionData.ModelType = procedure.ModelType;
  6975. productionData.NodeType = procedure.NodeType;
  6976. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  6977. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6978. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  6979. productionData.OrganizationID = procedure.OrganizationID;
  6980. productionData.GoodsID = goodsID;
  6981. productionData.GoodsCode = goodsCode;
  6982. productionData.GoodsName = goodsName;
  6983. productionData.GoodsLevelID = productionData.GoodsLevelID;
  6984. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6985. ////////如果报废给此产品最状态赋值
  6986. //////if (productionData.ProductionDefects != null)
  6987. //////{
  6988. ////// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6989. ////// {
  6990. ////// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  6991. ////// {
  6992. ////// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  6993. ////// break;
  6994. ////// }
  6995. ////// }
  6996. //////}
  6997. //////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  6998. //////{
  6999. ////// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  7000. //////}
  7001. ////// string sqlReFire = @"select
  7002. ////// isrefire
  7003. ////// from tp_pm_inproduction where barcode=:barcode
  7004. ////// ";
  7005. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  7006. ////// new OracleParameter(":barcode",productionData.Barcode),
  7007. ////// };
  7008. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  7009. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  7010. ////// {
  7011. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  7012. ////// {
  7013. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  7014. ////// }
  7015. ////// }
  7016. #endregion
  7017. string OutSpecialRepairflag = "0";//干补标识
  7018. DataSet outDataSet = null;
  7019. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7020. //xuwei fix 2019-09-26 使用通用方法判定
  7021. // 2019-1016
  7022. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7023. {
  7024. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7025. if (isNodeBegin == 0)
  7026. {
  7027. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  7028. }
  7029. }
  7030. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7031. {
  7032. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  7033. }
  7034. else
  7035. {
  7036. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  7037. }
  7038. if (!string.IsNullOrEmpty(errMsg))
  7039. {
  7040. return errMsg;
  7041. }
  7042. if (productionData.ProductionDefects == null || productionData.ProductionDefects.Count == 0)
  7043. {
  7044. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  7045. }
  7046. #endregion
  7047. #region 获得产品分级ID
  7048. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  7049. // 获得产品分级ID
  7050. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  7051. #endregion
  7052. #region 开始节点
  7053. //xuwei remove 2019-09-26 此处应该是重复判定 移除
  7054. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7055. //xuwei fix 2019-09-26 使用通用方法判定
  7056. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7057. // 2019-1016
  7058. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7059. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7060. {
  7061. #region 添加在产产品数据
  7062. InProductionEntity addInProductionEntity = new InProductionEntity();
  7063. addInProductionEntity.ProductionDataID = productionData.ProductionDataID;
  7064. addInProductionEntity.BarCode = productionData.Barcode;
  7065. //流程工序
  7066. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7067. // 当前工序
  7068. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  7069. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  7070. //生产数据ID
  7071. addInProductionEntity.ProductionDataID = productionDataID;
  7072. // 工序模型
  7073. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7074. // 工序类别
  7075. addInProductionEntity.ModelType = procedure.ModelType;
  7076. // 正常坯
  7077. addInProductionEntity.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  7078. #endregion
  7079. // 生产工号
  7080. addInProductionEntity.UserID = productionData.UserID;
  7081. // 执行添加
  7082. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  7083. // 执行失败
  7084. if (!string.IsNullOrEmpty(errMsg))
  7085. {
  7086. return errMsg;
  7087. }
  7088. }
  7089. #endregion
  7090. #region 条码有缺陷
  7091. // 废品标识
  7092. bool scrapFlag = false;
  7093. // 存在缺陷 插入缺陷表
  7094. if (productionData.ProductionDefects != null)
  7095. {
  7096. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  7097. {
  7098. #region 保存缺陷
  7099. productionDefect.ProductionDataID = productionDataID;
  7100. productionDefect.BarCode = productionData.Barcode;
  7101. productionDefect.ProductionLineID = procedure.ProductionLineID;
  7102. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  7103. productionDefect.ProductionLineName = procedure.ProductionlineName;
  7104. productionDefect.ProcedureID = procedure.ProcedureID;
  7105. productionDefect.ProcedureCode = procedure.ProcedureCode;
  7106. productionDefect.ProcedureName = procedure.ProcedureName;
  7107. productionDefect.UserID = productionData.UserID;
  7108. productionDefect.UserCode = productionData.UserCode;
  7109. productionDefect.UserName = productionData.UserName;
  7110. productionDefect.GoodsID = productionData.GoodsID;
  7111. productionDefect.GoodsCode = productionData.GoodsCode;
  7112. productionDefect.GoodsName = productionData.GoodsName;
  7113. productionDefect.Remarks = productionData.Remarks;
  7114. productionDefect.ScrapResponFlag
  7115. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  7116. // 保存缺陷
  7117. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  7118. if (!string.IsNullOrEmpty(errMsg))
  7119. {
  7120. return errMsg;
  7121. }
  7122. #endregion
  7123. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  7124. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  7125. {
  7126. scrapFlag = true;
  7127. #region 添加废弃产品 删除在产产品数据
  7128. #region 添加废弃产品
  7129. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  7130. #region 属性赋值
  7131. scrapProduct.BarCode = productionData.Barcode;
  7132. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  7133. //xuwei remove 2019-09-26 此处是重复判定移除
  7134. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7135. //xuwei fix 2019-09-26 使用通用方法判定
  7136. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7137. // 2019-1016
  7138. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7139. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7140. {
  7141. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  7142. }
  7143. else
  7144. {
  7145. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  7146. }
  7147. scrapProduct.ScrapDate = accountDate;
  7148. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  7149. scrapProduct.Remarks = productionDefect.Remarks;
  7150. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  7151. scrapProduct.Auditor = sUserInfo.UserID;
  7152. scrapProduct.AuditlDate = accountDate;
  7153. scrapProduct.AccountDate = accountDate;
  7154. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  7155. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7156. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  7157. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7158. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7159. scrapProduct.ScrapType = 1;
  7160. scrapProduct.IsQualityStatistics = 1;
  7161. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  7162. #endregion
  7163. // 保存报废
  7164. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  7165. // 保存失败
  7166. if (!string.IsNullOrEmpty(errMsg))
  7167. {
  7168. return errMsg;
  7169. }
  7170. #endregion
  7171. #region 添加责任工序
  7172. //xuwei remove 2019-09-26 此处是重复判定移除
  7173. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7174. //xuwei fix 2019-09-26 使用通用方法判定
  7175. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7176. // 2019-1016
  7177. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7178. // 不是开始工序时。需要添加责任工序
  7179. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  7180. {
  7181. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  7182. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7183. ResponProcedureEntity responProce = new ResponProcedureEntity();
  7184. #region 属性赋值
  7185. responProce.BarCode = productionData.Barcode;
  7186. responProce.ProductionDataID = productionDataID;
  7187. responProce.ProductionLineID = productionDefect.ProductionLineID;
  7188. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  7189. responProce.ProductionLineName = productionDefect.ProductionLineName;
  7190. responProce.ProcedureID = productionDefect.DefectProcedureID;
  7191. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  7192. responProce.ProcedureName = productionDefect.DefectProcedureName;
  7193. responProce.UserID = productionDefect.DefectUserID;
  7194. responProce.UserCode = productionDefect.DefectUserCode;
  7195. responProce.UserName = productionDefect.DefectUserName;
  7196. responProce.Remarks = productionDefect.Remarks;
  7197. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7198. #endregion
  7199. // 保存责任工序
  7200. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  7201. // 保存失败
  7202. if (!string.IsNullOrEmpty(errMsg))
  7203. {
  7204. return errMsg;
  7205. }
  7206. }
  7207. #endregion
  7208. #region 删除在产产品数据
  7209. InProductionEntity delInProductionEntity = new InProductionEntity();
  7210. delInProductionEntity.BarCode = productionData.Barcode;
  7211. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  7212. // 执行删除 在产数据
  7213. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  7214. // 执行失败
  7215. if (!string.IsNullOrEmpty(errMsg))
  7216. {
  7217. return errMsg;
  7218. }
  7219. #endregion
  7220. #endregion
  7221. }
  7222. #endregion
  7223. }
  7224. }
  7225. #endregion
  7226. #region 条码没有报废
  7227. if (!scrapFlag)
  7228. {
  7229. #region 检验出缺陷 并且不是废品 修改在产产品数据
  7230. //xuwei remove 2019-09-26 此处是重复判定移除
  7231. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7232. //xuwei fix 2019-09-26 使用通用方法判定
  7233. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7234. // 2019-1016
  7235. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7236. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  7237. || procedure.NodeType == (int)Constant.ProcedureNodeType.Begin
  7238. || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  7239. {
  7240. #region 修改在产产品数据的当前工序
  7241. InProductionEntity inProductionEntity = new InProductionEntity();
  7242. inProductionEntity.ProductionDataID = Convert.ToInt32(idStr);
  7243. inProductionEntity.BarCode = productionData.Barcode;
  7244. // 当前工序
  7245. inProductionEntity.ProcedureID = procedure.ProcedureID;
  7246. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7247. // 工序模型
  7248. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7249. // 工序类别
  7250. inProductionEntity.ModelType = procedure.ModelType;
  7251. // 生产工号
  7252. inProductionEntity.UserID = productionData.UserID;
  7253. // 缺陷标识
  7254. inProductionEntity.DefectFlag = productionData.DefectFlag;
  7255. // 返工工序ID
  7256. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  7257. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7258. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  7259. // 执行修改
  7260. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  7261. // 执行失败
  7262. if (!string.IsNullOrEmpty(errMsg))
  7263. {
  7264. return errMsg;
  7265. }
  7266. #endregion
  7267. }
  7268. #endregion
  7269. #region 结束工序、没有缺陷 添加成品数据 删除在产产品数据
  7270. //else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7271. // && productionData.DefectFlag == Constant.DefectFlag.No.GetHashCode())
  7272. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7273. && productionData.GoodsLevelTypeID == Constant.GoodsLevelType.NoDefects.GetHashCode())
  7274. {
  7275. #region 添加成品数据 删除在产产品数据
  7276. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  7277. finishedProduct.BarCode = productionData.Barcode;
  7278. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  7279. if (!string.IsNullOrEmpty(errMsg))
  7280. {
  7281. return errMsg;
  7282. }
  7283. InProductionEntity delInProductionEntity = new InProductionEntity();
  7284. delInProductionEntity.BarCode = productionData.Barcode;
  7285. // 执行删除 在产数据
  7286. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  7287. // 执行失败
  7288. if (!string.IsNullOrEmpty(errMsg))
  7289. {
  7290. return errMsg;
  7291. }
  7292. #endregion
  7293. }
  7294. #endregion
  7295. }
  7296. #endregion
  7297. }
  7298. return errMsg;
  7299. }
  7300. ///// <summary>
  7301. ///// 报废更新产品数据最终状态
  7302. ///// </summary>
  7303. ///// <param name="oracleTrConn">连接对象</param>
  7304. ///// <param name="barcode">产品条码</param>
  7305. ///// <param name="sUserInfo">用记基本信息</param>
  7306. ///// <returns>string</returns>
  7307. ///// <remarks>
  7308. ///// 王鑫 2015.01.07 新建
  7309. ///// </remarks>
  7310. //private static string UpdateProductionDataGoodsEnding(IDBTransaction oracleTrConn, int productionDataID, int? goodsEnding, SUserInfo sUserInfo)
  7311. //{
  7312. // string sql = "update TP_PM_ProductionData set GoodsEnding=:goodsEnding where ProductionDataID = :productionDataID and AccountID=:accountid";
  7313. // OracleParameter[] paras = new OracleParameter[] {
  7314. // new OracleParameter(":goodsEnding",goodsEnding),
  7315. // new OracleParameter(":productionDataID",productionDataID),
  7316. // new OracleParameter(":accountid",sUserInfo.AccountID),
  7317. // };
  7318. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  7319. // // 更新失败
  7320. // if (result <= Constant.INT_IS_ZERO)
  7321. // {
  7322. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7323. // }
  7324. // // 成功返回null
  7325. // return null;
  7326. //}
  7327. /// <summary>
  7328. /// 添加责任工序
  7329. /// </summary>
  7330. /// <param name="oracleTrConn">连接对象</param>
  7331. /// <param name="responProce">责任工序</param>
  7332. /// <param name="productionDefect">缺陷数据</param>
  7333. /// <param name="sUserInfo">用户基本信息</param>
  7334. /// <returns>string</returns>
  7335. private static string AddResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  7336. {
  7337. OracleParameter[] oracleParameters = null;
  7338. string sql = null;
  7339. int result = 0;
  7340. // 查询新插入ID
  7341. if (productionDefect.DefectProcedureID != null)
  7342. {
  7343. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  7344. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7345. if (!string.IsNullOrEmpty(idStr))
  7346. {
  7347. responProce.ResponProcedureID = int.Parse(idStr);
  7348. }
  7349. else
  7350. {
  7351. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7352. }
  7353. #region SQL
  7354. sql = "insert into tp_pm_responprocedure"
  7355. + " (ResponProcedureID,"
  7356. + " scrapproductid,"
  7357. + " barcode,"
  7358. + " productiondataid,"
  7359. + " productionlineid,"
  7360. + " productionlinecode,"
  7361. + " productionlinename,"
  7362. + " procedureid,"
  7363. + " procedurecode,"
  7364. + " procedurename,"
  7365. + " userid,"
  7366. + " usercode,"
  7367. + " username,"
  7368. + " remarks,"
  7369. + " accountid,"
  7370. + " createuserid,"
  7371. + " updateuserid)"
  7372. + " values"
  7373. + " ("
  7374. + " :ResponProcedureID,"
  7375. + " :scrapproductid,"
  7376. + " :barcode,"
  7377. + " :productiondataid,"
  7378. + " :productionlineid,"
  7379. + " :productionlinecode,"
  7380. + " :productionlinename,"
  7381. + " :procedureid,"
  7382. + " :procedurecode,"
  7383. + " :procedurename,"
  7384. + " :userid,"
  7385. + " :usercode,"
  7386. + " :username,"
  7387. + " :remarks,"
  7388. + " :accountid,"
  7389. + " :createuserid,"
  7390. + " :updateuserid)";
  7391. #endregion
  7392. #region 参数
  7393. oracleParameters = new OracleParameter[] {
  7394. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  7395. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7396. new OracleParameter(":barcode",responProce.BarCode),
  7397. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  7398. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  7399. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  7400. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  7401. new OracleParameter(":procedureid",responProce.ProcedureID),
  7402. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  7403. new OracleParameter(":procedurename",responProce.ProcedureName),
  7404. new OracleParameter(":userid",responProce.UserID),
  7405. new OracleParameter(":usercode",responProce.UserCode),
  7406. new OracleParameter(":username",responProce.UserName),
  7407. new OracleParameter(":remarks",responProce.Remarks),
  7408. new OracleParameter(":accountid",sUserInfo.AccountID),
  7409. new OracleParameter(":createuserid",sUserInfo.UserID),
  7410. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7411. };
  7412. #endregion
  7413. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7414. // 保存失败
  7415. if (result != Constant.INT_IS_ONE)
  7416. {
  7417. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7418. }
  7419. //// 查询新插入ID
  7420. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  7421. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7422. //if (!string.IsNullOrEmpty(idStr))
  7423. //{
  7424. // responProce.ResponProcedureID = int.Parse(idStr);
  7425. //}
  7426. //else
  7427. //{
  7428. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7429. //}
  7430. }
  7431. #region 插入责任人
  7432. foreach (DefectResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  7433. {
  7434. #region SQL
  7435. sql = "insert into tp_pm_scrapresponsible"
  7436. + " (barcode,"
  7437. + " scrapproductid,"
  7438. + " staffid,"
  7439. + " userid,"
  7440. + " usercode,"
  7441. + " ujobsid,"
  7442. + " sjobsid,"
  7443. + " staffstatus,"
  7444. + " accountid,"
  7445. + " createuserid,"
  7446. + " updateuserid,"
  7447. + " responprocedureid,"
  7448. + " respontype)"
  7449. + " values"
  7450. + " (:barcode,"
  7451. + " :scrapproductid,"
  7452. + " :staffid,"
  7453. + " :userid,"
  7454. + " :usercode,"
  7455. + " :ujobsid,"
  7456. + " :sjobsid,"
  7457. + " :staffstatus,"
  7458. + " :accountid,"
  7459. + " :createuserid,"
  7460. + " :updateuserid,"
  7461. + " :responprocedureid,"
  7462. + " :respontype)";
  7463. #endregion
  7464. #region 参数
  7465. oracleParameters = new OracleParameter[] {
  7466. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7467. new OracleParameter(":barcode",responProce.BarCode),
  7468. new OracleParameter(":staffid",defectResponsible.StaffID),
  7469. new OracleParameter(":userid",defectResponsible.UserID),
  7470. new OracleParameter(":usercode",defectResponsible.UserCode),
  7471. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  7472. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  7473. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  7474. new OracleParameter(":accountid",sUserInfo.AccountID),
  7475. new OracleParameter(":createuserid",sUserInfo.UserID),
  7476. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7477. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  7478. new OracleParameter(":respontype",Constant.ScrapResponType.Procedure.GetHashCode()),
  7479. };
  7480. #endregion
  7481. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7482. // 保存失败
  7483. if (result != Constant.INT_IS_ONE)
  7484. {
  7485. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7486. }
  7487. }
  7488. #endregion
  7489. return null;
  7490. }
  7491. /// <summary>
  7492. /// 保存废弃产品
  7493. /// </summary>
  7494. /// <param name="oracleTrConn">连接对象</param>
  7495. /// <param name="scrapProduct">报废产品</param>
  7496. /// <param name="sUserInfo">用户基本信息</param>
  7497. /// <returns>string</returns>
  7498. private static string AddScrapProductRejectToReject(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7499. {
  7500. #region sql
  7501. string sql = "insert into tp_pm_scrapproduct"
  7502. + " (scrapproductid,barcode,"
  7503. + " productionlineid,"
  7504. + " productionlinecode,"
  7505. + " productionlinename,"
  7506. + " goodsid,"
  7507. + " goodscode,"
  7508. + " goodsname,"
  7509. + " groutingdailyid,"
  7510. + " groutingdailydetailid,"
  7511. + " groutingdate,"
  7512. + " groutinglineid,"
  7513. + " groutinglinecode,"
  7514. + " groutinglinename,"
  7515. + " gmouldtypeid,"
  7516. + " groutinglinedetailid,"
  7517. + " groutingmouldcode,"
  7518. + " mouldcode,"
  7519. + " scrapdate,"
  7520. + " rreason,"
  7521. + " remarks,"
  7522. + " auditstatus,"
  7523. + " auditor,"
  7524. + " auditdate,"
  7525. + " accountdate,"
  7526. + " accountid,"
  7527. + " createuserid,"
  7528. + " updateuserid,"
  7529. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7530. + " auditopinion,"
  7531. + " GroutingUserID,"
  7532. + " GroutingUserCode,"
  7533. + " GroutingNum,"
  7534. + " IsPublicBody,"
  7535. + " IsReFire,"
  7536. + " kilnid,"
  7537. + " kilncode,"
  7538. + " kilnname,"
  7539. + " kilncarid,"
  7540. + " kilncarcode,"
  7541. + " kilncarname,"
  7542. + " kilncarbatchno,"
  7543. + " kilncarposition,"
  7544. + " specialRepairflag,"
  7545. + " logoid,ProductionDataID, "
  7546. + " ProcedureID, "
  7547. + " ProcedureCode, "
  7548. + " ProcedureName, "
  7549. + " ScrapType "
  7550. + ")"
  7551. + " select :scrapproductid,trash.barcode,"
  7552. + " trash.productionlineid,"
  7553. + " trash.productionlinecode,"
  7554. + " trash.productionlinename,"
  7555. + " trash.goodsid,"
  7556. + " trash.goodscode,"
  7557. + " trash.goodsname,"
  7558. + " trash.groutingdailyid,"
  7559. + " trash.groutingdailydetailid,"
  7560. + " trash.groutingdate,"
  7561. + " trash.groutinglineid,"
  7562. + " trash.groutinglinecode,"
  7563. + " trash.groutinglinename,"
  7564. + " trash.gmouldtypeid,"
  7565. + " trash.groutinglinedetailid,"
  7566. + " trash.groutingmouldcode,"
  7567. + " trash.mouldcode,"
  7568. + " :scrapdate,"
  7569. + " :rreason,"
  7570. + " :remarks,"
  7571. + " :auditstatus,"
  7572. + " :auditor,"
  7573. // + " :auditdate,"
  7574. + " sysdate,"
  7575. + " :accountdate,"
  7576. + " trash.accountid,"
  7577. + " :createuserid,"
  7578. + " :updateuserid,"
  7579. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7580. + " :auditopinion,"
  7581. + " trash.GroutingUserID,"
  7582. + " trash.GroutingUserCode,"
  7583. + " trash.GroutingNum,"
  7584. + " trash.IsPublicBody,"
  7585. + " trash.IsReFire,"
  7586. + " trash.kilnid,"
  7587. + " trash.kilncode,"
  7588. + " trash.kilnname,"
  7589. + " trash.kilncarid,"
  7590. + " trash.kilncarcode,"
  7591. + " trash.kilncarname,"
  7592. + " trash.kilncarbatchno,"
  7593. + " trash.kilncarposition,"
  7594. + " trash.specialRepairflag,"
  7595. + " trash.logoid,:ProductionDataID,"
  7596. + " TP_PC_Procedure.ProcedureID, "
  7597. + " TP_PC_Procedure.ProcedureCode, "
  7598. + " TP_PC_Procedure.ProcedureName, "
  7599. + " :ScrapType "
  7600. + " from tp_pm_inproductiontrash trash"
  7601. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7602. + " where trash.barcode = :barcode";
  7603. #endregion
  7604. #region 参数
  7605. OracleParameter[] oracleParameters = null;
  7606. oracleParameters = new OracleParameter[] {
  7607. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7608. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7609. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7610. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7611. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7612. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7613. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7614. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7615. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7616. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7617. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7618. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7619. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7620. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7621. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7622. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7623. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  7624. };
  7625. #endregion
  7626. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7627. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  7628. //// 保存失败
  7629. //if (result != Constant.INT_IS_ONE)
  7630. //{
  7631. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7632. //}
  7633. return null;
  7634. }
  7635. /// <summary>
  7636. /// 保存废弃产品
  7637. /// </summary>
  7638. /// <param name="oracleTrConn">连接对象</param>
  7639. /// <param name="scrapProduct">报废产品</param>
  7640. /// <param name="sUserInfo">用户基本信息</param>
  7641. /// <returns>string</returns>
  7642. private static string AddScrapProduct(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7643. {
  7644. #region sql
  7645. string sql = "insert into tp_pm_scrapproduct"
  7646. + " (scrapproductid,barcode,"
  7647. + " productionlineid,"
  7648. + " productionlinecode,"
  7649. + " productionlinename,"
  7650. + " goodsid,"
  7651. + " goodscode,"
  7652. + " goodsname,"
  7653. + " groutingdailyid,"
  7654. + " groutingdailydetailid,"
  7655. + " groutingdate,"
  7656. + " groutinglineid,"
  7657. + " groutinglinecode,"
  7658. + " groutinglinename,"
  7659. + " gmouldtypeid,"
  7660. + " groutinglinedetailid,"
  7661. + " groutingmouldcode,"
  7662. + " mouldcode,"
  7663. + " scrapdate,"
  7664. + " rreason,"
  7665. + " remarks,"
  7666. + " auditstatus,"
  7667. + " auditor,"
  7668. + " auditdate,"
  7669. + " accountdate,"
  7670. + " accountid,"
  7671. + " createuserid,"
  7672. + " updateuserid,"
  7673. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7674. + " auditopinion,"
  7675. + " GroutingUserID,"
  7676. + " GroutingUserCode,"
  7677. + " GroutingNum,"
  7678. + " IsPublicBody,"
  7679. + " IsReFire,"
  7680. + " kilnid,"
  7681. + " kilncode,"
  7682. + " kilnname,"
  7683. + " kilncarid,"
  7684. + " kilncarcode,"
  7685. + " kilncarname,"
  7686. + " kilncarbatchno,"
  7687. + " kilncarposition,"
  7688. + " specialRepairflag,"
  7689. + " logoid,"
  7690. + " ProductionDataID, "
  7691. + " ProcedureID, "
  7692. + " ProcedureCode, "
  7693. + " ProcedureName, "
  7694. + " ScrapType "
  7695. + ")"
  7696. + " select :scrapproductid,barcode,"
  7697. + " InProduction.productionlineid,"
  7698. + " InProduction.productionlinecode,"
  7699. + " InProduction.productionlinename,"
  7700. + " InProduction.goodsid,"
  7701. + " InProduction.goodscode,"
  7702. + " InProduction.goodsname,"
  7703. + " InProduction.groutingdailyid,"
  7704. + " InProduction.groutingdailydetailid,"
  7705. + " InProduction.groutingdate,"
  7706. + " InProduction.groutinglineid,"
  7707. + " InProduction.groutinglinecode,"
  7708. + " InProduction.groutinglinename,"
  7709. + " InProduction.gmouldtypeid,"
  7710. + " InProduction.groutinglinedetailid,"
  7711. + " InProduction.groutingmouldcode,"
  7712. + " InProduction.mouldcode,"
  7713. + " :scrapdate,"
  7714. + " :rreason,"
  7715. + " :remarks,"
  7716. + " :auditstatus,"
  7717. + " :auditor,"
  7718. // + " :auditdate,"
  7719. + " sysdate,"
  7720. + " :accountdate,"
  7721. + " InProduction.accountid,"
  7722. + " :createuserid,"
  7723. + " :updateuserid,"
  7724. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7725. + " :auditopinion,"
  7726. + " InProduction.GroutingUserID,"
  7727. + " InProduction.GroutingUserCode,"
  7728. + " InProduction.GroutingNum,"
  7729. + " InProduction.IsPublicBody,"
  7730. + " InProduction.IsReFire,"
  7731. + " InProduction.kilnid,"
  7732. + " InProduction.kilncode,"
  7733. + " InProduction.kilnname,"
  7734. + " InProduction.kilncarid,"
  7735. + " InProduction.kilncarcode,"
  7736. + " InProduction.kilncarname,"
  7737. + " InProduction.kilncarbatchno,"
  7738. + " InProduction.kilncarposition,"
  7739. + " InProduction.specialRepairflag,"
  7740. + " InProduction.logoid,";
  7741. if (scrapProduct.IsQualityStatistics == null)
  7742. {
  7743. sql += " InProduction.ProductionDataID,";
  7744. }
  7745. else
  7746. {
  7747. sql += " :ProductionDataID,";
  7748. }
  7749. sql += " TP_PC_Procedure.ProcedureID, "
  7750. + " TP_PC_Procedure.ProcedureCode, "
  7751. + " TP_PC_Procedure.ProcedureName, "
  7752. + " :ScrapType"
  7753. + " from TP_PM_InProduction InProduction"
  7754. + " left join TP_PC_Procedure on InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7755. + " where InProduction.barcode = :barcode";
  7756. #endregion
  7757. #region 参数
  7758. OracleParameter[] oracleParameters = null;
  7759. if (scrapProduct.IsQualityStatistics == null)
  7760. {
  7761. oracleParameters = new OracleParameter[] {
  7762. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7763. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7764. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7765. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7766. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7767. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7768. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7769. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7770. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7771. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7772. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7773. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7774. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7775. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7776. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7777. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7778. };
  7779. }
  7780. else
  7781. {
  7782. oracleParameters = new OracleParameter[] {
  7783. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7784. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7785. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7786. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7787. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7788. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7789. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7790. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7791. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7792. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7793. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7794. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7795. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7796. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7797. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7798. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7799. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  7800. };
  7801. }
  7802. #endregion
  7803. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7804. if (result == 0)
  7805. {
  7806. sql = "insert into tp_pm_scrapproduct"
  7807. + " (scrapproductid,barcode,"
  7808. + " productionlineid,"
  7809. + " productionlinecode,"
  7810. + " productionlinename,"
  7811. + " goodsid,"
  7812. + " goodscode,"
  7813. + " goodsname,"
  7814. + " groutingdailyid,"
  7815. + " groutingdailydetailid,"
  7816. + " groutingdate,"
  7817. + " groutinglineid,"
  7818. + " groutinglinecode,"
  7819. + " groutinglinename,"
  7820. + " gmouldtypeid,"
  7821. + " groutinglinedetailid,"
  7822. + " groutingmouldcode,"
  7823. + " mouldcode,"
  7824. + " scrapdate,"
  7825. + " rreason,"
  7826. + " remarks,"
  7827. + " auditstatus,"
  7828. + " auditor,"
  7829. + " auditdate,"
  7830. + " accountdate,"
  7831. + " accountid,"
  7832. + " createuserid,"
  7833. + " updateuserid,"
  7834. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7835. + " auditopinion,"
  7836. + " GroutingUserID,"
  7837. + " GroutingUserCode,"
  7838. + " GroutingNum,"
  7839. + " IsPublicBody,"
  7840. + " IsReFire,"
  7841. + " kilnid,"
  7842. + " kilncode,"
  7843. + " kilnname,"
  7844. + " kilncarid,"
  7845. + " kilncarcode,"
  7846. + " kilncarname,"
  7847. + " kilncarbatchno,"
  7848. + " kilncarposition,"
  7849. + " specialRepairflag,"
  7850. + " logoid,"
  7851. + " ProductionDataID,"
  7852. + " ProcedureID, "
  7853. + " ProcedureCode, "
  7854. + " ProcedureName, "
  7855. + " ScrapType "
  7856. + ")"
  7857. + " select :scrapproductid,trash.barcode,"
  7858. + " trash.productionlineid,"
  7859. + " trash.productionlinecode,"
  7860. + " trash.productionlinename,"
  7861. + " trash.goodsid,"
  7862. + " trash.goodscode,"
  7863. + " trash.goodsname,"
  7864. + " trash.groutingdailyid,"
  7865. + " trash.groutingdailydetailid,"
  7866. + " trash.groutingdate,"
  7867. + " trash.groutinglineid,"
  7868. + " trash.groutinglinecode,"
  7869. + " trash.groutinglinename,"
  7870. + " trash.gmouldtypeid,"
  7871. + " trash.groutinglinedetailid,"
  7872. + " trash.groutingmouldcode,"
  7873. + " trash.mouldcode,"
  7874. + " :scrapdate,"
  7875. + " :rreason,"
  7876. + " :remarks,"
  7877. + " :auditstatus,"
  7878. + " :auditor,"
  7879. //+ " :auditdate,"
  7880. + " sysdate,"
  7881. + " :accountdate,"
  7882. + " trash.accountid,"
  7883. + " :createuserid,"
  7884. + " :updateuserid,"
  7885. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7886. + " :auditopinion,"
  7887. + " trash.GroutingUserID,"
  7888. + " trash.GroutingUserCode,"
  7889. + " trash.GroutingNum,"
  7890. + " trash.IsPublicBody,"
  7891. + " trash.IsReFire,"
  7892. + " trash.kilnid,"
  7893. + " trash.kilncode,"
  7894. + " trash.kilnname,"
  7895. + " trash.kilncarid,"
  7896. + " trash.kilncarcode,"
  7897. + " trash.kilncarname,"
  7898. + " trash.kilncarbatchno,"
  7899. + " trash.kilncarposition,"
  7900. + " trash.specialRepairflag,"
  7901. + " trash.logoid,";
  7902. if (scrapProduct.IsQualityStatistics == null)
  7903. {
  7904. sql += " trash.ProductionDataID,";
  7905. }
  7906. else
  7907. {
  7908. sql += " :ProductionDataID,";
  7909. }
  7910. sql += //" trash.ProductionDataID," +
  7911. " TP_PC_Procedure.ProcedureID, "
  7912. + " TP_PC_Procedure.ProcedureCode, "
  7913. + " TP_PC_Procedure.ProcedureName, "
  7914. + " :ScrapType "
  7915. + " from TP_PM_InProductionTrash trash"
  7916. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7917. + " where trash.barcode = :barcode";
  7918. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7919. }
  7920. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  7921. //// 保存失败
  7922. //if (result != Constant.INT_IS_ONE)
  7923. //{
  7924. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7925. //}
  7926. return null;
  7927. }
  7928. /// <summary>
  7929. /// 保存缺陷
  7930. /// </summary>
  7931. /// <param name="oracleTrConn">连接对象</param>
  7932. /// <param name="productionDefect">缺陷数据</param>
  7933. /// <param name="sUserInfo">用户基本信息</param>
  7934. /// <returns>string</returns>
  7935. private static string AddDefect(IDBTransaction oracleTrConn, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  7936. {
  7937. // 查询新插入的生产数据ID
  7938. string sql = "select SEQ_PM_Defect_DefectID.nextval from dual";
  7939. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7940. int productionDefectID = 0;
  7941. if (!string.IsNullOrEmpty(idStr))
  7942. {
  7943. productionDefectID = int.Parse(idStr);
  7944. }
  7945. else
  7946. {
  7947. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7948. }
  7949. #region SQL
  7950. sql = "insert into tp_pm_defect"
  7951. + " ( ProductionDefectID,"
  7952. + " productiondataid,"
  7953. + " barcode,"
  7954. + " productionlineid,"
  7955. + " productionlinecode,"
  7956. + " productionlinename,"
  7957. + " procedureid,"
  7958. + " procedurecode,"
  7959. + " procedurename,"
  7960. + " userid,"
  7961. + " usercode,"
  7962. + " username,"
  7963. + " goodsid,"
  7964. + " goodscode,"
  7965. + " goodsname,"
  7966. + " defectid,"
  7967. + " defectcode,"
  7968. + " defectname,"
  7969. + " defectpositionid,"
  7970. + " defectpositioncode,"
  7971. + " defectpositionname,"
  7972. + " scrapResponFlag,"
  7973. + " defectproductiondataid,"
  7974. + " defectprocedureid,"
  7975. + " defectprocedurecode,"
  7976. + " defectprocedurename,"
  7977. + " defectuserid,"
  7978. + " defectusercode,"
  7979. + " defectusername,"
  7980. + " defectjobs,"
  7981. + " remarks,"
  7982. + " accountid,"
  7983. + " createuserid,"
  7984. + " defectfine,"
  7985. + " misseduserid,"
  7986. + " missedusercode,"
  7987. + " missedusername,"
  7988. + " updateuserid,SpecialDefect,DefectDeductionNum,CheckTime)"
  7989. + " values"
  7990. + " ("
  7991. + " :ProductionDefectID,"
  7992. + " :productiondataid,"
  7993. + " :barcode,"
  7994. + " :productionlineid,"
  7995. + " :productionlinecode,"
  7996. + " :productionlinename,"
  7997. + " :procedureid,"
  7998. + " :procedurecode,"
  7999. + " :procedurename,"
  8000. + " :userid,"
  8001. + " :usercode,"
  8002. + " :username,"
  8003. + " :goodsid,"
  8004. + " :goodscode,"
  8005. + " :goodsname,"
  8006. + " :defectid,"
  8007. + " :defectcode,"
  8008. + " :defectname,"
  8009. + " :defectpositionid,"
  8010. + " :defectpositioncode,"
  8011. + " :defectpositionname,"
  8012. + " :scrapResponFlag,"
  8013. + " :defectproductiondataid,"
  8014. + " :defectprocedureid,"
  8015. + " :defectprocedurecode,"
  8016. + " :defectprocedurename,"
  8017. + " :defectuserid,"
  8018. + " :defectusercode,"
  8019. + " :defectusername,"
  8020. + " :defectjobs,"
  8021. + " :remarks,"
  8022. + " :accountid,"
  8023. + " :createuserid,"
  8024. + " :defectfine,"
  8025. + " :misseduserid,"
  8026. + " :missedusercode,"
  8027. + " :missedusername,"
  8028. + " :updateuserid,:SpecialDefect,:DefectDeductionNum,:CheckTime)";
  8029. #endregion
  8030. #region 参数
  8031. OracleParameter[] oracleParameters = null;
  8032. if (productionDefect.IsPDA == null)
  8033. {
  8034. oracleParameters = new OracleParameter[] {
  8035. new OracleParameter(":ProductionDefectID",productionDefectID),
  8036. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  8037. new OracleParameter(":barcode",productionDefect.BarCode),
  8038. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  8039. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  8040. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  8041. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  8042. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  8043. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  8044. new OracleParameter(":userid",productionDefect.UserID),
  8045. new OracleParameter(":usercode",productionDefect.UserCode),
  8046. new OracleParameter(":username",productionDefect.UserName),
  8047. new OracleParameter(":goodsid",productionDefect.GoodsID),
  8048. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  8049. new OracleParameter(":goodsname",productionDefect.GoodsName),
  8050. new OracleParameter(":defectid",productionDefect.DefectID),
  8051. new OracleParameter(":defectcode",productionDefect.DefectCode),
  8052. new OracleParameter(":defectname",productionDefect.DefectName),
  8053. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  8054. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  8055. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  8056. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  8057. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  8058. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  8059. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  8060. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  8061. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  8062. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  8063. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  8064. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  8065. new OracleParameter(":remarks",productionDefect.Remarks),
  8066. new OracleParameter(":accountid",sUserInfo.AccountID),
  8067. new OracleParameter(":createuserid",sUserInfo.UserID),
  8068. new OracleParameter(":defectfine",productionDefect.DefectFine),
  8069. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  8070. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  8071. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  8072. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8073. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  8074. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  8075. new OracleParameter(":CheckTime",productionDefect.CheckTime.ToString()==string.Empty?null:productionDefect.CheckTime),
  8076. };
  8077. }
  8078. else
  8079. {
  8080. DateTime? pdaCheckTime = null;
  8081. if (productionDefect.PDACheckTime != null)
  8082. {
  8083. if (productionDefect.PDACheckTime.ToString() != string.Empty)
  8084. {
  8085. pdaCheckTime = Convert.ToDateTime(productionDefect.PDACheckTime);
  8086. }
  8087. }
  8088. oracleParameters = new OracleParameter[] {
  8089. new OracleParameter(":ProductionDefectID",productionDefectID),
  8090. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  8091. new OracleParameter(":barcode",productionDefect.BarCode),
  8092. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  8093. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  8094. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  8095. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  8096. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  8097. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  8098. new OracleParameter(":userid",productionDefect.UserID),
  8099. new OracleParameter(":usercode",productionDefect.UserCode),
  8100. new OracleParameter(":username",productionDefect.UserName),
  8101. new OracleParameter(":goodsid",productionDefect.GoodsID),
  8102. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  8103. new OracleParameter(":goodsname",productionDefect.GoodsName),
  8104. new OracleParameter(":defectid",productionDefect.DefectID),
  8105. new OracleParameter(":defectcode",productionDefect.DefectCode),
  8106. new OracleParameter(":defectname",productionDefect.DefectName),
  8107. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  8108. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  8109. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  8110. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  8111. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  8112. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  8113. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  8114. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  8115. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  8116. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  8117. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  8118. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  8119. new OracleParameter(":remarks",productionDefect.Remarks),
  8120. new OracleParameter(":accountid",sUserInfo.AccountID),
  8121. new OracleParameter(":createuserid",sUserInfo.UserID),
  8122. new OracleParameter(":defectfine",productionDefect.DefectFine),
  8123. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  8124. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  8125. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  8126. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8127. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  8128. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  8129. new OracleParameter(":CheckTime",pdaCheckTime),
  8130. };
  8131. }
  8132. #endregion
  8133. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8134. // 保存失败
  8135. if (result != Constant.INT_IS_ONE)
  8136. {
  8137. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8138. }
  8139. //// 查询新插入的生产数据ID
  8140. //sql = "select SEQ_PM_Defect_DefectID.Currval from dual";
  8141. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8142. //int productionDefectID = 0;
  8143. //if (!string.IsNullOrEmpty(idStr))
  8144. //{
  8145. // productionDefectID = int.Parse(idStr);
  8146. //}
  8147. //else
  8148. //{
  8149. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8150. //}
  8151. #region 插入生产缺陷责任者
  8152. if (productionDefect.DefectResponsibles != null)
  8153. {
  8154. foreach (DefectResponsibleEntity DefectResponsible in productionDefect.DefectResponsibles)
  8155. {
  8156. #region SQL
  8157. sql = "insert into tp_pm_defectresponsible"
  8158. + " (productiondefectid,"
  8159. + " staffid,"
  8160. + " userid,"
  8161. + " usercode,"
  8162. + " Ujobsid,"
  8163. + " SJobsID,"
  8164. + " staffstatus,"
  8165. + " accountid,"
  8166. + " createuserid,"
  8167. + " updateuserid)"
  8168. + " values"
  8169. + " (:productiondefectid,"
  8170. + " :staffid,"
  8171. + " :userid,"
  8172. + " :usercode,"
  8173. + " :ujobsid,"
  8174. + " :sjobsid,"
  8175. + " :staffstatus,"
  8176. + " :accountid,"
  8177. + " :createuserid,"
  8178. + " :updateuserid)";
  8179. #endregion
  8180. #region 参数
  8181. oracleParameters = new OracleParameter[] {
  8182. new OracleParameter(":productiondefectid",productionDefectID),
  8183. new OracleParameter(":staffid",DefectResponsible.StaffID),
  8184. new OracleParameter(":userid",DefectResponsible.UserID),
  8185. new OracleParameter(":usercode",DefectResponsible.UserCode),
  8186. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  8187. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  8188. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  8189. new OracleParameter(":accountid",sUserInfo.AccountID),
  8190. new OracleParameter(":createuserid",sUserInfo.UserID),
  8191. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8192. };
  8193. #endregion
  8194. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8195. // 保存失败
  8196. if (result != Constant.INT_IS_ONE)
  8197. {
  8198. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8199. }
  8200. }
  8201. }
  8202. #endregion
  8203. #region 插入生产漏检缺陷责任者
  8204. if (productionDefect.DefectMissedResponsibles != null)
  8205. {
  8206. foreach (DefectMissedResponsibleEntity DefectMissedResponsible in productionDefect.DefectMissedResponsibles)
  8207. {
  8208. #region SQL
  8209. sql = "insert into TP_PM_DefectMissedResponsible"
  8210. + " (productiondefectid,"
  8211. + " staffid,"
  8212. + " userid,"
  8213. + " usercode,"
  8214. + " Ujobsid,"
  8215. + " SJobsID,"
  8216. + " staffstatus,"
  8217. + " accountid,"
  8218. + " createuserid,"
  8219. + " updateuserid)"
  8220. + " values"
  8221. + " (:productiondefectid,"
  8222. + " :staffid,"
  8223. + " :userid,"
  8224. + " :usercode,"
  8225. + " :ujobsid,"
  8226. + " :sjobsid,"
  8227. + " :staffstatus,"
  8228. + " :accountid,"
  8229. + " :createuserid,"
  8230. + " :updateuserid)";
  8231. #endregion
  8232. #region 参数
  8233. oracleParameters = new OracleParameter[] {
  8234. new OracleParameter(":productiondefectid",productionDefectID),
  8235. new OracleParameter(":staffid",DefectMissedResponsible.StaffID),
  8236. new OracleParameter(":userid",DefectMissedResponsible.UserID),
  8237. new OracleParameter(":usercode",DefectMissedResponsible.UserCode),
  8238. new OracleParameter(":ujobsid",DefectMissedResponsible.UJobsID),
  8239. new OracleParameter(":sjobsid",DefectMissedResponsible.SJobsID),
  8240. new OracleParameter(":staffstatus",DefectMissedResponsible.StaffStatus),
  8241. new OracleParameter(":accountid",sUserInfo.AccountID),
  8242. new OracleParameter(":createuserid",sUserInfo.UserID),
  8243. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8244. };
  8245. #endregion
  8246. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8247. // 保存失败
  8248. if (result != Constant.INT_IS_ONE)
  8249. {
  8250. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8251. }
  8252. }
  8253. }
  8254. #endregion
  8255. #region 添加图片
  8256. if (productionDefect.DefectImages != null)
  8257. {
  8258. DateTime upTime = DateTime.Now;
  8259. foreach (DefectImageEntity defectImage in productionDefect.DefectImages)
  8260. {
  8261. // 图片路径为空。上传图片返回路径
  8262. if (string.IsNullOrEmpty(defectImage.ImagePath))
  8263. {
  8264. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic
  8265. .UpLoadImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8266. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8267. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8268. }
  8269. else
  8270. {
  8271. // 安卓端上传的图片
  8272. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic
  8273. .MoveImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8274. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8275. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8276. }
  8277. #region 保存图片
  8278. sql = "insert into tp_pm_defectimage"
  8279. + " ("
  8280. + " productiondefectid,"
  8281. + " barcode,"
  8282. + " thumbnailpath,"
  8283. + " imagepath,"
  8284. + " accountid,"
  8285. + " createuserid,"
  8286. + " updateuserid)"
  8287. + " values"
  8288. + " ("
  8289. + " :productiondefectid,"
  8290. + " :barcode,"
  8291. + " :thumbnailpath,"
  8292. + " :imagepath,"
  8293. + " :accountid,"
  8294. + " :createuserid,"
  8295. + " :updateuserid)";
  8296. oracleParameters = new OracleParameter[] {
  8297. new OracleParameter(":productiondefectid",productionDefectID),
  8298. new OracleParameter(":barcode",productionDefect.BarCode),
  8299. new OracleParameter(":thumbnailpath",defectImage.ThumbnailPath),
  8300. new OracleParameter(":imagepath",defectImage.ImagePath),
  8301. new OracleParameter(":accountid",sUserInfo.AccountID),
  8302. new OracleParameter(":createuserid",sUserInfo.UserID),
  8303. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8304. };
  8305. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8306. // 保存失败
  8307. if (result != Constant.INT_IS_ONE)
  8308. {
  8309. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8310. }
  8311. #endregion
  8312. }
  8313. }
  8314. #endregion
  8315. // 保存成功返回null
  8316. return null;
  8317. }
  8318. #endregion
  8319. #region 进度考核奖惩
  8320. /// <summary>
  8321. /// 根据传入的实体保存 进度考核奖惩记录
  8322. /// </summary>
  8323. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8324. /// <param name="sUserInfo">用户基本信息</param>
  8325. /// <param name="pStatus">新增还是编辑枚举</param>
  8326. /// <returns>PMResultEntity操作结果状态信息</returns>
  8327. public static PMResultEntity SaveStaffProgressRAPInfo(PMProgressRAPEntity pProgressRAPEntity, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
  8328. {
  8329. PMResultEntity resultEnity = new PMResultEntity();
  8330. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8331. try
  8332. {
  8333. if (pProgressRAPEntity == null)
  8334. {
  8335. resultEnity.OperateStatus = 0;
  8336. return resultEnity;
  8337. }
  8338. oracleTrConn.Connect();
  8339. if (pStatus == WCFConstant.FormMode.Add)
  8340. {
  8341. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.nextval from dual");
  8342. #region 新建时插入数据
  8343. string strSql1 = "Insert Into TP_PM_ProgressRAP (RAPID,"
  8344. + "STAFFID"
  8345. + ",RAPTYPE"
  8346. + ",REASON"
  8347. + ",RAPDATE"
  8348. + ",RAPAMOUNT"
  8349. + ",REMARKS"
  8350. + ",AUDITSTATUS"
  8351. + ",ACCOUNTID"
  8352. + ",CREATEUSERID"
  8353. + ",UPDATEUSERID)"
  8354. + " Values ("
  8355. + ":RAPID"
  8356. + ",:pSTAFFID"
  8357. + ",:pRAPTYPE"
  8358. + ",:pREASON"
  8359. + ",:pRAPDATE"
  8360. + ",:pRAPAMOUNT"
  8361. + ",:pREMARKS"
  8362. + ",:pAUDITSTATUS"
  8363. + ",:pACCOUNTID"
  8364. + ",:pCREATEUSERID"
  8365. + ",:pUPDATEUSERID"
  8366. + ")";
  8367. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8368. {
  8369. new OracleParameter(":RAPID", OracleDbType.Int32, Convert.ToInt32(strSeq) , ParameterDirection.Input),
  8370. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8371. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8372. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8373. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8374. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8375. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8376. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32, 0 , ParameterDirection.Input),
  8377. new OracleParameter(":pACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8378. new OracleParameter(":pCREATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8379. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8380. };
  8381. #endregion
  8382. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql1, parmetersSql1);
  8383. //string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.Currval from dual");
  8384. resultEnity.OperateKey = Convert.ToInt32(strSeq);
  8385. }
  8386. else
  8387. {
  8388. #region 判断数据是否可以编辑
  8389. string strSlq2 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8390. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8391. {
  8392. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8393. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8394. };
  8395. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq2, parmetersSql2);
  8396. if (string.IsNullOrEmpty(strAuditStatus))
  8397. {
  8398. oracleTrConn.Rollback();
  8399. oracleTrConn.Disconnect();
  8400. resultEnity.OperateStatus = -2;
  8401. return resultEnity;
  8402. }
  8403. if (!"0".Equals(strAuditStatus))
  8404. {
  8405. //不是待审批状态
  8406. oracleTrConn.Rollback();
  8407. oracleTrConn.Disconnect();
  8408. resultEnity.OperateStatus = -1;
  8409. return resultEnity;
  8410. }
  8411. #endregion
  8412. #region 编辑时更新数据
  8413. string strSql3 = "Update TP_PM_ProgressRAP Set "
  8414. + "RAPTYPE = :pRAPTYPE"
  8415. + ",REASON = :pREASON"
  8416. + ",RAPDATE = :pRAPDATE"
  8417. + ",RAPAMOUNT = :pRAPAMOUNT"
  8418. + ",REMARKS = :pREMARKS"
  8419. + ",UPDATEUSERID = :pUPDATEUSERID"
  8420. + " Where RAPID = :pRAPID And STAFFID = :pSTAFFID And AccountID = :pAccountID";
  8421. OracleParameter[] parmetersSql3 = new OracleParameter[]
  8422. {
  8423. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8424. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8425. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8426. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8427. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8428. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8429. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8430. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8431. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8432. };
  8433. #endregion
  8434. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
  8435. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8436. }
  8437. oracleTrConn.Commit();
  8438. oracleTrConn.Disconnect();
  8439. return resultEnity;
  8440. }
  8441. catch (Exception ex)
  8442. {
  8443. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8444. {
  8445. oracleTrConn.Rollback();
  8446. oracleTrConn.Disconnect();
  8447. }
  8448. throw ex;
  8449. }
  8450. finally
  8451. {
  8452. if (oracleTrConn.ConnState == ConnectionState.Open)
  8453. {
  8454. oracleTrConn.Disconnect();
  8455. }
  8456. }
  8457. }
  8458. /// <summary>
  8459. /// 进度考核奖惩审批
  8460. /// </summary>
  8461. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8462. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  8463. /// <param name="sUserInfo">用户基本信息</param>
  8464. /// <returns>PMResultEntity操作结果状态信息</returns>
  8465. public static PMResultEntity SaveStaffProgressRAPApprovalInfo(PMProgressRAPEntity pProgressRAPEntity, bool pState, SUserInfo sUserInfo)
  8466. {
  8467. PMResultEntity resultEnity = new PMResultEntity();
  8468. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8469. try
  8470. {
  8471. if (pProgressRAPEntity == null)
  8472. {
  8473. resultEnity.OperateStatus = 0;
  8474. return resultEnity;
  8475. }
  8476. oracleTrConn.Connect();
  8477. #region 判断数据是否可以编辑
  8478. string strSlq1 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8479. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8480. {
  8481. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8482. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8483. };
  8484. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq1, parmetersSql1);
  8485. if (string.IsNullOrEmpty(strAuditStatus))
  8486. {
  8487. oracleTrConn.Rollback();
  8488. oracleTrConn.Disconnect();
  8489. resultEnity.OperateStatus = -2;
  8490. return resultEnity;
  8491. }
  8492. if (!"0".Equals(strAuditStatus))
  8493. {
  8494. //不是待审批状态
  8495. oracleTrConn.Rollback();
  8496. oracleTrConn.Disconnect();
  8497. resultEnity.OperateStatus = -1;
  8498. return resultEnity;
  8499. }
  8500. #endregion
  8501. #region 更新审批数据
  8502. int intAuditStatus = 2; //2:审核未通过
  8503. if (pState)
  8504. {
  8505. intAuditStatus = 1; //1:审核通过;
  8506. }
  8507. string strSql2 = "Update TP_PM_ProgressRAP Set "
  8508. + "AUDITSTATUS = :pAUDITSTATUS"
  8509. + ",AUDITOR = :pAUDITOR"
  8510. + ",AuditlDate = sysdate"
  8511. + ",ACCOUNTDATE = FUN_CMN_GetAccountDate(:pAccountID1)"
  8512. + ",UPDATEUSERID = :pUPDATEUSERID"
  8513. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8514. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8515. {
  8516. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32,intAuditStatus, ParameterDirection.Input),
  8517. new OracleParameter(":pAUDITOR", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8518. new OracleParameter(":pAccountID1", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8519. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8520. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8521. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8522. };
  8523. #endregion
  8524. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  8525. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8526. oracleTrConn.Commit();
  8527. oracleTrConn.Disconnect();
  8528. return resultEnity;
  8529. }
  8530. catch (Exception ex)
  8531. {
  8532. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8533. {
  8534. oracleTrConn.Rollback();
  8535. oracleTrConn.Disconnect();
  8536. }
  8537. throw ex;
  8538. }
  8539. finally
  8540. {
  8541. if (oracleTrConn.ConnState == ConnectionState.Open)
  8542. {
  8543. oracleTrConn.Disconnect();
  8544. }
  8545. }
  8546. }
  8547. /// <summary>
  8548. /// 设置进度考核奖惩停用
  8549. /// </summary>
  8550. /// <param name="pRAPID">进度考核奖惩编号</param>
  8551. /// <param name="sUserInfo">用户基本信息</param>
  8552. /// <returns>PMResultEntity操作结果状态信息</returns>
  8553. public static PMResultEntity SetStaffProgressRAPValueFlag(int pRAPID, SUserInfo sUserInfo)
  8554. {
  8555. PMResultEntity resultEnity = new PMResultEntity();
  8556. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8557. try
  8558. {
  8559. oracleTrConn.Connect();
  8560. string sql = "Select max(SettlementFlag) From TP_PM_ProgressRAP Where RAPID =" + pRAPID + " And AuditStatus = 0 And ValueFlag = 1";
  8561. string strSettlementFlag = oracleTrConn.GetSqlResultToStr(sql);
  8562. if (!string.IsNullOrEmpty(strSettlementFlag))
  8563. {
  8564. if ("1".Equals(strSettlementFlag)) //工资结算标识 1:已经结算 0:未结算
  8565. {
  8566. oracleTrConn.Rollback();
  8567. oracleTrConn.Disconnect();
  8568. resultEnity.OperateStatus = -3;
  8569. return resultEnity;
  8570. }
  8571. string sqlString = "Update TP_PM_ProgressRAP Set ValueFlag = 0,UpdateUserID = :pUpdateUserID"
  8572. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8573. OracleParameter[] parmetersSql = new OracleParameter[]
  8574. {
  8575. new OracleParameter(":pUpdateUserID", OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  8576. new OracleParameter(":pRAPID", OracleDbType.Int32, pRAPID , ParameterDirection.Input),
  8577. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8578. };
  8579. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmetersSql);
  8580. oracleTrConn.Commit();
  8581. oracleTrConn.Disconnect();
  8582. return resultEnity;
  8583. }
  8584. else
  8585. {
  8586. oracleTrConn.Rollback();
  8587. oracleTrConn.Disconnect();
  8588. resultEnity.OperateStatus = -2;
  8589. return resultEnity;
  8590. }
  8591. }
  8592. catch (Exception ex)
  8593. {
  8594. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8595. {
  8596. oracleTrConn.Rollback();
  8597. oracleTrConn.Disconnect();
  8598. }
  8599. throw ex;
  8600. }
  8601. finally
  8602. {
  8603. if (oracleTrConn.ConnState == ConnectionState.Open)
  8604. {
  8605. oracleTrConn.Disconnect();
  8606. }
  8607. }
  8608. }
  8609. #endregion
  8610. #endregion
  8611. #region 私有方法
  8612. /// <summary>
  8613. /// 将窑车号下的条码转换成Table
  8614. /// </summary>
  8615. /// <param name="oracleTrConn">数据连接</param>
  8616. /// <param name="productionTable">手机传入的Table</param>
  8617. /// <param name="sUserInfo">用户基本信息</param>
  8618. /// <returns>DataTable</returns>
  8619. private static DataTable CarNoInfoConvertToTable(IDBTransaction oracleTrConn, DataTable productionTable, SUserInfo sUserInfo)
  8620. {
  8621. if (productionTable != null
  8622. && productionTable.Rows.Count > Constant.INT_IS_ZERO)
  8623. {
  8624. DataRow row = productionTable.Rows[Constant.INT_IS_ZERO];
  8625. string sql = "select carGoods.Barcode,"
  8626. + " carGoods.KilnCarID,"
  8627. + " car.KilncarCode,"
  8628. + " car.KilncarName,"
  8629. + " kiln.kilnid,"
  8630. + " kiln.kilnCode,"
  8631. + " kiln.kilnName,"
  8632. + " carGoods.Kilncarposition,"
  8633. + " carGoods.KilnCarBatchNo,"
  8634. + " carGoods.GoodsID,"
  8635. + " goods.GoodsCode,"
  8636. + " goods.GoodsName,"
  8637. + " :userID as UserID,"
  8638. + " :userCode as UserCode,"
  8639. + " :userName as UserName,"
  8640. + " :Remarks as Remarks"
  8641. + " from TP_PM_KilnCarGoods carGoods"
  8642. + " inner join TP_MST_KilnCar car on car.KilnCarID = carGoods.KilnCarID"
  8643. + " inner join TP_MST_Kiln kiln on kiln.KilnID = car.KilnID"
  8644. + " inner join TP_MST_Goods goods on goods.goodsid = carGoods.GoodsID"
  8645. + " where car.kilncarcode = :kilncarcode and carGoods.AccountID = :accountID";
  8646. OracleParameter[] oracleParameters = new OracleParameter[] {
  8647. new OracleParameter(":userID",row["UserID"].ToString()),
  8648. new OracleParameter(":userCode",row["UserCode"].ToString()),
  8649. new OracleParameter(":userName",row["UserName"].ToString()),
  8650. new OracleParameter(":kilncarcode",row["KilnCarCode"].ToString()),
  8651. new OracleParameter(":accountID",sUserInfo.AccountID),
  8652. new OracleParameter(":Remarks",row["Remarks"].ToString()),
  8653. };
  8654. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  8655. if (ds != null
  8656. && ds.Tables.Count > Constant.INT_IS_ZERO
  8657. && ds.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  8658. {
  8659. return ds.Tables[0];
  8660. }
  8661. return productionTable;
  8662. }
  8663. return productionTable;
  8664. }
  8665. #endregion
  8666. #region PDA端保存条码
  8667. /// <summary>
  8668. /// 添加成品编辑
  8669. /// </summary>
  8670. /// <param name="oracleTrConn">数据连接</param>
  8671. /// <param name="procedure">工序对象</param>
  8672. /// <param name="productionDataEntitys">生产数据集</param>
  8673. /// <param name="sUserInfo">用户基本信息</param>
  8674. /// <returns>string</returns>
  8675. private static string AddFinishCheckPDA(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  8676. {
  8677. string errMsg = "";
  8678. // 获得账务日期
  8679. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  8680. // 本批采集的批次号
  8681. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  8682. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  8683. foreach (ProductionDataEntity productionData in productionDataEntitys)
  8684. {
  8685. bool RejectToReject = false;
  8686. if (string.IsNullOrEmpty(productionData.Barcode))
  8687. {
  8688. throw new Exception("传入的条码号为空");
  8689. }
  8690. int goodsID = Constant.INT_IS_ZERO;
  8691. string goodsCode = string.Empty;
  8692. string goodsName = string.Empty;
  8693. // 注浆者工号
  8694. string groutingUserCode = string.Empty;
  8695. // 次品标识
  8696. bool substandardFlag = false;
  8697. #region 校验条码有效性
  8698. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  8699. if (!string.IsNullOrEmpty(errMsg))
  8700. {
  8701. // 编辑重烧时,会提示不可到达;编辑次品时,会提示已经报废
  8702. //if (productionData.ProductionDataID == 0)
  8703. //if (!errMsg.Contains("次品"))
  8704. return errMsg;
  8705. }
  8706. #endregion
  8707. #region 修改条码
  8708. if (productionData.ProductionDataID > 0) //表示编辑条码
  8709. {
  8710. #region 验证改判有效期
  8711. // 前台已有相关验证,但还是产生了超期改判,后台保存前增加验证。
  8712. string sqlString = "select pdin.createtime from tp_pm_productiondatain pdin where pdin.productiondataid = " + productionData.ProductionDataID;
  8713. DateTime createtime = Convert.ToDateTime(oracleTrConn.GetSqlResultToObj(sqlString)).Date;
  8714. // 参数验证用服务端当前设置
  8715. sqlString = "SELECT sst.settingvalue\n" +
  8716. " FROM tp_mst_systemsetting sst\n" +
  8717. " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  8718. " AND sst.settingcode = 'S_PM_009'";
  8719. string strValue = oracleTrConn.GetSqlResultToStr(sqlString);
  8720. int days = 0;
  8721. int pDays = 0;
  8722. if (int.TryParse(strValue, out pDays))
  8723. {
  8724. days = pDays;
  8725. }
  8726. if (days != 0 && createtime <= DateTime.Now.Date.AddDays(-days))
  8727. {
  8728. return string.Format(Messages.MSG_S_PM_009, createtime.ToString("yyyy-MM-dd"), days.ToString(), createtime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  8729. }
  8730. #endregion
  8731. //
  8732. string sqlOPTimeStamp = "";
  8733. OracleParameter[] parmetersSql = null;
  8734. #region 验证在产时间戳
  8735. if (productionData.OPTimeStampPDA == null) // 表示PC端,因为只有安卓端才给此数据字段给值
  8736. {
  8737. sqlOPTimeStamp = @"select
  8738. 1
  8739. from TP_PM_InProduction
  8740. where
  8741. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp = :OPTimeStamp
  8742. union
  8743. select
  8744. 1
  8745. from Tp_Pm_Inproductiontrash
  8746. where
  8747. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp = :OPTimeStamp ";
  8748. parmetersSql = new OracleParameter[]
  8749. {
  8750. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, productionData.OPTimeStamp, ParameterDirection.Input),
  8751. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8752. };
  8753. }
  8754. else
  8755. {
  8756. sqlOPTimeStamp = @"select
  8757. 1
  8758. from TP_PM_InProduction
  8759. where
  8760. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')
  8761. union
  8762. select
  8763. 1
  8764. from Tp_Pm_Inproductiontrash
  8765. where
  8766. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')";
  8767. parmetersSql = new OracleParameter[]
  8768. {
  8769. new OracleParameter(":OPTimeStamp", OracleDbType.NVarchar2, productionData.OPTimeStampPDA, ParameterDirection.Input),
  8770. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8771. };
  8772. }
  8773. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlOPTimeStamp, parmetersSql);
  8774. if (returnDataset != null
  8775. && returnDataset.Tables[0].Rows.Count == 0)
  8776. {
  8777. return "数据已经被修改,请重新进行编辑";
  8778. }
  8779. #endregion
  8780. //如果原来是次品
  8781. if (productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode())
  8782. {
  8783. //改为次品
  8784. if (productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode())
  8785. {
  8786. // 删除生产数据及相关表与报损表
  8787. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8788. if (!string.IsNullOrEmpty(errMsg))
  8789. {
  8790. return errMsg;
  8791. }
  8792. RejectToReject = true;
  8793. } //改为不是次品
  8794. else if (productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Reject.GetHashCode())
  8795. {
  8796. // 删除生产数据及相关表与报损表
  8797. errMsg = DeleteSubstandardToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8798. if (!string.IsNullOrEmpty(errMsg))
  8799. {
  8800. return errMsg;
  8801. }
  8802. }
  8803. }
  8804. else
  8805. {
  8806. // 原来产品分级不是次品
  8807. errMsg = DeleteNormalToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8808. if (!string.IsNullOrEmpty(errMsg))
  8809. {
  8810. return errMsg;
  8811. }
  8812. }
  8813. }
  8814. else // wangx 2016-12-13 防止同时两个人新建数据,加判断条件
  8815. {
  8816. string sqlCurrrentProcedure = @"select Flowprocedureid from tp_pm_inproduction where BarCode=:BarCode";
  8817. OracleParameter[] parmetersSql = null;
  8818. parmetersSql = new OracleParameter[]
  8819. {
  8820. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8821. };
  8822. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlCurrrentProcedure, parmetersSql);
  8823. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 begin
  8824. //if (returnDataset != null
  8825. // && returnDataset.Tables[0].Rows.Count > 0)
  8826. //{
  8827. // if (Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID)
  8828. // {
  8829. // return "【此条码生产数据已被修改,请重开画面后再扫描】";
  8830. // }
  8831. //}
  8832. if (returnDataset == null ||
  8833. returnDataset.Tables.Count == 0 ||
  8834. returnDataset.Tables[0].Rows.Count == 0 ||
  8835. Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID
  8836. )
  8837. {
  8838. return "【此条码生产数据已被修改,请重新扫描此条码】";
  8839. }
  8840. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 end
  8841. }
  8842. #endregion
  8843. // 查询新插入的生产数据ID
  8844. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  8845. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8846. int productionDataID = 0;
  8847. if (!string.IsNullOrEmpty(idStr))
  8848. {
  8849. productionDataID = int.Parse(idStr);
  8850. }
  8851. else
  8852. {
  8853. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8854. }
  8855. int? ClassesSettingID = null;//班次配置ID
  8856. #region 添加生产者数据
  8857. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  8858. if (!string.IsNullOrEmpty(errMsg))
  8859. {
  8860. return errMsg;
  8861. }
  8862. #endregion
  8863. #region 添加生产数据
  8864. #region 属性赋值
  8865. productionData.ClassesSettingID = ClassesSettingID;
  8866. productionData.ProductionDataID = Convert.ToInt32(idStr);
  8867. productionData.CentralizedBatchNo = centralizedBatchNo;
  8868. productionData.ProductionLineID = procedure.ProductionLineID;
  8869. productionData.ProductionLineCode = procedure.ProductionlineCode;
  8870. productionData.ProductionLineName = procedure.ProductionlineName;
  8871. productionData.CompleteProcedureID = procedure.ProcedureID;
  8872. productionData.ProcedureCode = procedure.ProcedureCode;
  8873. productionData.ProcedureName = procedure.ProcedureName;
  8874. productionData.ProcedureModel = procedure.ProcedureModel;
  8875. productionData.ModelType = procedure.ModelType;
  8876. productionData.NodeType = procedure.NodeType;
  8877. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  8878. // 重烧
  8879. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  8880. {
  8881. //productionData.GoodsLevelID = null;
  8882. //productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  8883. productionData.IsReFire = (int)Constant.ReFireFlag.No;//产品分级的时候,并不标记,走过重烧第一个结点之后,更新此字段
  8884. }
  8885. // 次品
  8886. else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  8887. {
  8888. //productionData.GoodsLevelID = null;
  8889. substandardFlag = true;
  8890. }
  8891. // 查询新插入的生产数据ID
  8892. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  8893. // {
  8894. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  8895. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  8896. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  8897. // {
  8898. ////// string sqlReFire = @"select
  8899. ////// isrefire
  8900. ////// from tp_pm_inproduction where barcode=:barcode
  8901. ////// union
  8902. ////// select
  8903. ////// isrefire
  8904. ////// from TP_PM_InProductionTrash where barcode=:barcode
  8905. ////// ";
  8906. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  8907. ////// new OracleParameter(":barcode", productionData.Barcode),
  8908. ////// };
  8909. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  8910. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  8911. ////// {
  8912. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  8913. ////// }
  8914. // }
  8915. productionData.OrganizationID = procedure.OrganizationID;
  8916. productionData.GoodsID = goodsID;
  8917. productionData.GoodsCode = goodsCode;
  8918. productionData.GoodsName = goodsName;
  8919. productionData.GoodsLevelID = productionData.GoodsLevelID;
  8920. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  8921. //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  8922. //{
  8923. // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  8924. //}
  8925. //else
  8926. //{
  8927. // productionData.GoodsEnding = null;
  8928. //}
  8929. #endregion
  8930. string OutSpecialRepairflag = "0";//干补标识
  8931. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  8932. errMsg = AddFinishCheckProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  8933. if (!string.IsNullOrEmpty(errMsg))
  8934. {
  8935. return errMsg;
  8936. }
  8937. #endregion
  8938. //#region 添加生产者数据
  8939. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  8940. //if (!string.IsNullOrEmpty(errMsg))
  8941. //{
  8942. // return errMsg;
  8943. //}
  8944. //#endregion
  8945. #region 条码有缺陷
  8946. #region 是次品 添加废弃产品
  8947. string ResponProcedureidStr = "";
  8948. if (substandardFlag)
  8949. {
  8950. #region 修改在产产品数据的当前工序,防止直接报损在产工序没有改过来,记录的是上一个工序
  8951. string updateInInProductionForScrap = @"Update tp_pm_inproduction
  8952. set FlowProcedureID=:flowProcedureID,ProcedureID=:flowProcedureID where barcode=:barcode";
  8953. List<OracleParameter> paras = new List<OracleParameter>();
  8954. paras.Add(new OracleParameter(":barcode", productionData.Barcode));
  8955. paras.Add(new OracleParameter(":flowProcedureID", procedure.ProcedureID));
  8956. oracleTrConn.ExecuteNonQuery(updateInInProductionForScrap, paras.ToArray());
  8957. #endregion
  8958. #region 添加废弃产品
  8959. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  8960. #region 属性赋值
  8961. scrapProduct.BarCode = productionData.Barcode;
  8962. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  8963. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  8964. scrapProduct.ScrapDate = accountDate;
  8965. scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  8966. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  8967. scrapProduct.Auditor = sUserInfo.UserID;
  8968. scrapProduct.AuditlDate = accountDate;
  8969. scrapProduct.AccountDate = accountDate;
  8970. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  8971. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  8972. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  8973. // 查询新插入的废弃ID
  8974. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  8975. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  8976. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  8977. scrapProduct.ScrapType = 1;
  8978. scrapProduct.IsQualityStatistics = 1;//新加的,因为这个报损方法是共通的,用于区别是哪里传进去的
  8979. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  8980. #endregion
  8981. if (!RejectToReject) //不是次品到次品 wangxin 20150417
  8982. {
  8983. // 保存报废
  8984. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  8985. }
  8986. else
  8987. {
  8988. // 保存报废
  8989. errMsg = AddScrapProductRejectToReject(oracleTrConn, scrapProduct, sUserInfo);
  8990. }
  8991. //不是次品到次品 wangxin 20150417
  8992. // 保存失败
  8993. if (!string.IsNullOrEmpty(errMsg))
  8994. {
  8995. return errMsg;
  8996. }
  8997. #endregion
  8998. }
  8999. #endregion
  9000. // 存在缺陷 插入缺陷表
  9001. if (productionData.ProductionDefects != null)
  9002. {
  9003. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  9004. {
  9005. #region 保存缺陷
  9006. productionDefect.ProductionDataID = productionDataID;
  9007. productionDefect.BarCode = productionData.Barcode;
  9008. productionDefect.ProductionLineID = procedure.ProductionLineID;
  9009. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  9010. productionDefect.ProductionLineName = procedure.ProductionlineName;
  9011. productionDefect.ProcedureID = procedure.ProcedureID;
  9012. productionDefect.ProcedureCode = procedure.ProcedureCode;
  9013. productionDefect.ProcedureName = procedure.ProcedureName;
  9014. productionDefect.UserID = productionData.UserID;
  9015. productionDefect.UserCode = productionData.UserCode;
  9016. productionDefect.UserName = productionData.UserName;
  9017. productionDefect.GoodsID = productionData.GoodsID;
  9018. productionDefect.GoodsCode = productionData.GoodsCode;
  9019. productionDefect.GoodsName = productionData.GoodsName;
  9020. productionData.Remarks = productionData.Remarks;
  9021. productionDefect.ScrapResponFlag
  9022. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  9023. // 保存缺陷
  9024. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  9025. if (!string.IsNullOrEmpty(errMsg))
  9026. {
  9027. return errMsg;
  9028. }
  9029. #endregion
  9030. #region 是次品 添加废弃责任工序
  9031. if (substandardFlag)
  9032. {
  9033. //if (productionDefect.DefectProcedureID != null)
  9034. {
  9035. #region 添加责任工序
  9036. ResponProcedureEntity responProce = new ResponProcedureEntity();
  9037. //// 查询新插入的废弃ID
  9038. //string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  9039. //string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9040. #region 属性赋值
  9041. responProce.BarCode = productionData.Barcode;
  9042. responProce.ProductionDataID = productionDataID;
  9043. responProce.ProductionLineID = productionDefect.ProductionLineID;
  9044. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  9045. responProce.ProductionLineName = productionDefect.ProductionLineName;
  9046. responProce.ProcedureID = productionDefect.DefectProcedureID;
  9047. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  9048. responProce.ProcedureName = productionDefect.DefectProcedureName;
  9049. responProce.UserID = productionDefect.DefectUserID;
  9050. responProce.UserCode = productionDefect.DefectUserCode;
  9051. responProce.UserName = productionDefect.DefectUserName;
  9052. responProce.Remarks = productionDefect.Remarks;
  9053. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9054. #endregion
  9055. // 保存责任工序
  9056. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  9057. // 保存失败
  9058. if (!string.IsNullOrEmpty(errMsg))
  9059. {
  9060. return errMsg;
  9061. }
  9062. #endregion
  9063. }
  9064. }
  9065. #endregion
  9066. }
  9067. }
  9068. #endregion
  9069. #region 条码是次品 删除在产产品数据
  9070. if (substandardFlag)
  9071. {
  9072. #region 删除在产产品数据
  9073. InProductionEntity delInProductionEntity = new InProductionEntity();
  9074. delInProductionEntity.BarCode = productionData.Barcode;
  9075. delInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9076. delInProductionEntity.ProductionDataID = productionDataID;
  9077. delInProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9078. delInProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9079. // 执行删除 在产数据
  9080. errMsg = DeletePDAInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  9081. // 执行失败
  9082. if (!string.IsNullOrEmpty(errMsg))
  9083. {
  9084. return errMsg;
  9085. }
  9086. #endregion
  9087. }
  9088. #endregion
  9089. #region 条码不是次品
  9090. if (!substandardFlag)
  9091. {
  9092. #region 中间工序/重烧 修改在产产品数据
  9093. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  9094. || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  9095. {
  9096. #region 修改在产产品数据的当前工序
  9097. InProductionEntity inProductionEntity = new InProductionEntity();
  9098. inProductionEntity.BarCode = productionData.Barcode;
  9099. //流程工序
  9100. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  9101. // 当前工序
  9102. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9103. inProductionEntity.ProcedureID = procedure.ProcedureID;
  9104. //生产数据ID
  9105. inProductionEntity.ProductionDataID = productionDataID;
  9106. // 工序模型
  9107. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  9108. // 工序类别
  9109. inProductionEntity.ModelType = procedure.ModelType;
  9110. // 生产工号
  9111. inProductionEntity.UserID = productionData.UserID;
  9112. // 重烧
  9113. inProductionEntity.IsReFire = productionData.IsReFire;
  9114. // 缺陷
  9115. inProductionEntity.DefectFlag = productionData.DefectFlag;
  9116. // 产品分级
  9117. inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  9118. // 返工工序ID
  9119. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  9120. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9121. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9122. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  9123. // 执行修改
  9124. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  9125. // 执行失败
  9126. if (!string.IsNullOrEmpty(errMsg))
  9127. {
  9128. return errMsg;
  9129. }
  9130. #endregion
  9131. }
  9132. #endregion
  9133. #region 结束工序 添加成品数据 删除在产产品数据
  9134. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  9135. {
  9136. #region 添加成品数据 删除在产产品数据
  9137. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  9138. finishedProduct.BarCode = productionData.Barcode;
  9139. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  9140. if (!string.IsNullOrEmpty(errMsg))
  9141. {
  9142. return errMsg;
  9143. }
  9144. InProductionEntity delInProductionEntity = new InProductionEntity();
  9145. delInProductionEntity.BarCode = productionData.Barcode;
  9146. // 执行删除 在产数据
  9147. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  9148. // 执行失败
  9149. if (!string.IsNullOrEmpty(errMsg))
  9150. {
  9151. return errMsg;
  9152. }
  9153. #endregion
  9154. }
  9155. #endregion
  9156. }
  9157. #endregion
  9158. }
  9159. return errMsg;
  9160. }
  9161. /// <summary>
  9162. /// 编辑后删除生产数据
  9163. /// </summary>
  9164. /// <param name="productionDataID">生产数据ID</param>
  9165. /// <returns>int</returns>
  9166. public static string DeleteSubstandardToSubstandardByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9167. {
  9168. int deleteRow = 0;
  9169. try
  9170. {
  9171. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9172. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9173. (
  9174. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9175. )";
  9176. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9177. where
  9178. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9179. ";
  9180. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9181. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9182. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9183. where TP_PM_DefectResponsible.Productiondefectid in
  9184. (
  9185. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9186. )";
  9187. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9188. where TP_PM_DefectImage.Productiondefectid in
  9189. (
  9190. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9191. )";
  9192. // string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  9193. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  9194. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  9195. OracleParameter[] paras = new OracleParameter[]{
  9196. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9197. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9198. };
  9199. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9200. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9201. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9202. };
  9203. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9204. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9205. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9206. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9207. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9208. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  9209. // 有错误
  9210. if (deleteRow == 0)
  9211. {
  9212. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9213. }
  9214. return null;
  9215. }
  9216. catch (Exception ex)
  9217. {
  9218. throw ex;
  9219. }
  9220. }
  9221. /// <summary>
  9222. /// 编辑后删除生产数据
  9223. /// </summary>
  9224. /// <param name="productionDataID">生产数据ID</param>
  9225. /// <returns>int</returns>
  9226. public static string DeleteSubstandardToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9227. {
  9228. int deleteRow = 0;
  9229. try
  9230. {
  9231. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9232. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9233. (
  9234. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9235. )";
  9236. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9237. where
  9238. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9239. ";
  9240. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9241. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9242. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9243. where TP_PM_DefectResponsible.Productiondefectid in
  9244. (
  9245. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9246. )";
  9247. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9248. where TP_PM_DefectImage.Productiondefectid in
  9249. (
  9250. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9251. )";
  9252. //string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  9253. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  9254. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  9255. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  9256. string sqlInsert = @"insert into TP_PM_InProduction
  9257. (
  9258. BarCode,
  9259. ProductionLineID,
  9260. ProductionLineCode,
  9261. ProductionLineName,
  9262. ProcedureModel,
  9263. ModelType,
  9264. DefectFlag,
  9265. ReworkProcedureID,
  9266. IsPublicBody,
  9267. IsReFire,
  9268. GoodsLevelID,
  9269. GoodsLevelTypeID,
  9270. GoodsID,
  9271. GoodsCode,
  9272. GoodsName,
  9273. UserID,
  9274. GroutingDailyID,
  9275. GroutingDailyDetailID,
  9276. GroutingDate,
  9277. GroutingLineID,
  9278. GroutingLineCode,
  9279. GroutingLineName,
  9280. GMouldTypeID,
  9281. CanManyTimes,
  9282. GroutingLineDetailID,
  9283. GroutingMouldCode,
  9284. MouldCode,
  9285. GroutingUserID,
  9286. GroutingUserCode,
  9287. GroutingNum,
  9288. Remarks,
  9289. KilnID,
  9290. KilnCode,
  9291. KilnName,
  9292. KilnCarID,
  9293. KilnCarCode,
  9294. KilnCarName,
  9295. KilnCarBatchNo,
  9296. KilnCarPosition,
  9297. AccountID,
  9298. ValueFlag,
  9299. CreateTime,
  9300. CreateUserID,
  9301. UpdateTime,
  9302. UpdateUserID,
  9303. OPTimeStamp,
  9304. SpecialRepairflag,
  9305. FlowProcedureID,
  9306. FlowProcedureTime,
  9307. ProcedureID,
  9308. ProcedureTime,
  9309. ProductionDataID,
  9310. logoid, ISREWORKFLAG, SEMICHECKID
  9311. )
  9312. select
  9313. BarCode,
  9314. ProductionLineID,
  9315. ProductionLineCode,
  9316. ProductionLineName,
  9317. ProcedureModel,
  9318. ModelType,
  9319. DefectFlag,
  9320. ReworkProcedureID,
  9321. IsPublicBody,
  9322. IsReFire,
  9323. GoodsLevelID,
  9324. GoodsLevelTypeID,
  9325. GoodsID,
  9326. GoodsCode,
  9327. GoodsName,
  9328. UserID,
  9329. GroutingDailyID,
  9330. GroutingDailyDetailID,
  9331. GroutingDate,
  9332. GroutingLineID,
  9333. GroutingLineCode,
  9334. GroutingLineName,
  9335. GMouldTypeID,
  9336. CanManyTimes,
  9337. GroutingLineDetailID,
  9338. GroutingMouldCode,
  9339. MouldCode,
  9340. GroutingUserID,
  9341. GroutingUserCode,
  9342. GroutingNum,
  9343. Remarks,
  9344. KilnID,
  9345. KilnCode,
  9346. KilnName,
  9347. KilnCarID,
  9348. KilnCarCode,
  9349. KilnCarName,
  9350. KilnCarBatchNo,
  9351. KilnCarPosition,
  9352. AccountID,
  9353. ValueFlag,
  9354. CreateTime,
  9355. CreateUserID,
  9356. UpdateTime,
  9357. UpdateUserID,
  9358. OPTimeStamp,
  9359. SpecialRepairflag,
  9360. FlowProcedureID,
  9361. FlowProcedureTime,
  9362. ProcedureID,
  9363. ProcedureTime,
  9364. ProductionDataID,
  9365. logoid, ISREWORKFLAG, SEMICHECKID
  9366. from TP_PM_InProductionTrash
  9367. where barcode=:barcode
  9368. ";
  9369. string sqlDelete = @"delete from TP_PM_InProductionTrash where barcode=:barcode";
  9370. OracleParameter[] paras = new OracleParameter[]{
  9371. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9372. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9373. };
  9374. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9375. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9376. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9377. };
  9378. OracleParameter[] Existparas = new OracleParameter[]{
  9379. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9380. };
  9381. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9382. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9383. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9384. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9385. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9386. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  9387. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, Existparas);
  9388. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  9389. {
  9390. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsert, Existparas);
  9391. }
  9392. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelete, Existparas);
  9393. // 有错误
  9394. if (deleteRow == 0)
  9395. {
  9396. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9397. }
  9398. return null;
  9399. }
  9400. catch (Exception ex)
  9401. {
  9402. throw ex;
  9403. }
  9404. }
  9405. /// <summary>
  9406. /// 编辑后删除生产数据
  9407. /// </summary>
  9408. /// <param name="productionDataID">生产数据ID</param>
  9409. /// <returns>int</returns>
  9410. public static string DeleteNormalToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9411. {
  9412. int deleteRow = 0;
  9413. try
  9414. {
  9415. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9416. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9417. (
  9418. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9419. )";
  9420. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9421. where
  9422. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9423. ";
  9424. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9425. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9426. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9427. where TP_PM_DefectResponsible.Productiondefectid in
  9428. (
  9429. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9430. )";
  9431. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9432. where TP_PM_DefectImage.Productiondefectid in
  9433. (
  9434. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9435. )";
  9436. OracleParameter[] paras = new OracleParameter[]{
  9437. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9438. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9439. };
  9440. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9441. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9442. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9443. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9444. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9445. // 有错误
  9446. if (deleteRow == 0)
  9447. {
  9448. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9449. }
  9450. return null;
  9451. }
  9452. catch (Exception ex)
  9453. {
  9454. throw ex;
  9455. }
  9456. }
  9457. /// <summary>
  9458. /// 保存条码信息
  9459. /// </summary>
  9460. /// <param name="procedureID">工序ID</param>
  9461. /// <param name="productionDataEntitys">生产数据集</param>
  9462. /// <param name="sUserInfo">用户基本信息</param>
  9463. /// <returns>string</returns>
  9464. public static string AddCheckBarcodePDA(int procedureID, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  9465. {
  9466. string errMsg = "";
  9467. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  9468. try
  9469. {
  9470. oracleTrConn.Connect();
  9471. #region 查询工序信息
  9472. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  9473. #endregion
  9474. #region 标准检验(半成品)
  9475. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal)
  9476. {
  9477. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9478. }
  9479. #endregion
  9480. #region 成品检验
  9481. else if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  9482. {
  9483. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9484. }
  9485. #endregion
  9486. #region 入窑前检验
  9487. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKilnCheck)
  9488. {
  9489. errMsg = AddIntoKilnCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9490. }
  9491. #endregion
  9492. // 没有错误 提交事务
  9493. if (string.IsNullOrEmpty(errMsg))
  9494. {
  9495. oracleTrConn.Commit();
  9496. }
  9497. }
  9498. catch (Exception ex)
  9499. {
  9500. oracleTrConn.Rollback();
  9501. throw ex;
  9502. }
  9503. finally
  9504. {
  9505. // 释放资源
  9506. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  9507. {
  9508. oracleTrConn.Disconnect();
  9509. }
  9510. }
  9511. return errMsg;
  9512. }
  9513. #endregion
  9514. /// <summary>
  9515. /// 校验干补条码有效
  9516. /// </summary>
  9517. /// <param name="oracleTrConn">连接对象</param>
  9518. /// <param name="procedureID">工序ID</param>
  9519. /// <param name="barcode">条码</param>
  9520. /// <param name="goodsID">返回的产品ID</param>
  9521. /// <param name="goodsCode">返回的产品Code</param>
  9522. /// <param name="goodsName">返回的产品名称</param>
  9523. /// <param name="groutingUserID">返回的注浆者ID</param>
  9524. /// <returns>string</returns>
  9525. /// <remarks>
  9526. /// 袁新成 2015.3.27 新建
  9527. /// </remarks>
  9528. private static string CheckDryRepairBarcode(IDBTransaction oracleTrConn,
  9529. int procedureID,
  9530. string barcode,
  9531. out int goodsID,
  9532. out string goodsCode,
  9533. out string goodsName,
  9534. out string groutingUserCode,
  9535. SUserInfo sUserInfo
  9536. )
  9537. {
  9538. try
  9539. {
  9540. OracleParameter[] paras = new OracleParameter[]{
  9541. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  9542. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  9543. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  9544. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  9545. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  9546. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  9547. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  9548. };
  9549. oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  9550. if (!"null".Equals(paras[3].Value + ""))
  9551. {
  9552. goodsID = Convert.ToInt32(paras[3].Value + "");
  9553. }
  9554. else
  9555. {
  9556. goodsID = 0;
  9557. }
  9558. goodsCode = paras[4].Value + "";
  9559. goodsName = paras[5].Value + "";
  9560. if (!"null".Equals(paras[6].Value + ""))
  9561. {
  9562. groutingUserCode = paras[6].Value + "";
  9563. }
  9564. else
  9565. {
  9566. groutingUserCode = null;
  9567. }
  9568. if ("null".Equals(paras[2].Value + ""))
  9569. {
  9570. return null;
  9571. }
  9572. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  9573. }
  9574. catch (Exception ex)
  9575. {
  9576. throw ex;
  9577. }
  9578. }
  9579. /// <summary>
  9580. /// 干补标准计件
  9581. /// </summary>
  9582. /// <param name="oracleTrConn">数据连接对象</param>
  9583. /// <param name="procedure">工序对象</param>
  9584. /// <param name="barcodeTable">条码信息</param>
  9585. /// <param name="sUserInfo">用户基本信息</param>
  9586. /// <param name="goodsID">返回的产品ID</param>
  9587. /// <param name="goodsCode">返回的产品Code</param>
  9588. /// <param name="goodsName">返回的产品名称</param>
  9589. /// <param name="groutingUserID">返回的注浆者ID</param>
  9590. /// <returns>string</returns>
  9591. /// <remarks>
  9592. /// 袁新成 2015.3.26 新建
  9593. /// </remarks>
  9594. private static string AddDryRepairWorkPiece(IDBTransaction oracleTrConn,
  9595. ProcedureEntity procedure,
  9596. DataTable barcodeTable,
  9597. SUserInfo sUserInfo,
  9598. out int goodsID,
  9599. out string goodsCode,
  9600. out string goodsName,
  9601. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  9602. {
  9603. try
  9604. {
  9605. int deleteRow = 0;
  9606. goodsID = Constant.INT_IS_ZERO;
  9607. goodsCode = null;
  9608. goodsName = null;
  9609. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  9610. // 获得账务日期
  9611. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  9612. string errMsg = string.Empty;
  9613. // 本批采集的批次号
  9614. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  9615. // 条码信息
  9616. string logoName_Temp = "";
  9617. string logoCode_Temp = "";
  9618. string groutingdate_Temp = "";
  9619. foreach (DataRow barcodeRow in barcodeTable.Rows)
  9620. {
  9621. // 条码
  9622. string barcode = barcodeRow["Barcode"].ToString();
  9623. if (string.IsNullOrEmpty(barcode))
  9624. {
  9625. throw new Exception("传入的条码号为空");
  9626. }
  9627. // 生产工号
  9628. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  9629. // 生产工号
  9630. string workUserCode = barcodeRow["UserCode"].ToString();
  9631. //#region 校验条码有效性
  9632. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  9633. //if (!string.IsNullOrEmpty(errMsg))
  9634. //{
  9635. // return errMsg;
  9636. //}
  9637. //#endregion
  9638. if (procedure.CollectType == 1)
  9639. {
  9640. #region 校验条码有效性
  9641. errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  9642. if (!string.IsNullOrEmpty(errMsg))
  9643. {
  9644. logoName = "";
  9645. logoCode = "";
  9646. groutingdate = "";
  9647. return errMsg;
  9648. }
  9649. #endregion
  9650. }
  9651. else
  9652. {
  9653. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  9654. tp_pm_groutingdailydetail.goodscode,
  9655. tp_pm_groutingdailydetail.goodsname,
  9656. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  9657. tp_pm_groutingdailydetail.groutingdate,
  9658. tp_mst_logo.logoid,
  9659. tp_mst_logo.logocode,
  9660. tp_mst_logo.logoname
  9661. from tp_pm_groutingdailydetail
  9662. left join tp_mst_logo
  9663. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  9664. where tp_pm_groutingdailydetail.barcode=:barcode
  9665. ";
  9666. OracleParameter[] paras = new OracleParameter[] {
  9667. new OracleParameter(":barcode",barcode),
  9668. };
  9669. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  9670. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  9671. {
  9672. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  9673. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  9674. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  9675. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  9676. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  9677. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  9678. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  9679. logoName_Temp = logoName;
  9680. logoCode_Temp = logoCode;
  9681. groutingdate_Temp = groutingdate;
  9682. }
  9683. }
  9684. #region 数据处理
  9685. #region 处理废弃数据并转回收数据为在产数据
  9686. string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  9687. OracleParameter[] queryparas = new OracleParameter[]{
  9688. new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  9689. };
  9690. DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  9691. if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  9692. {
  9693. errMsg = "未设定干补等级";
  9694. logoName = "";
  9695. logoCode = "";
  9696. groutingdate = "";
  9697. return errMsg;
  9698. }
  9699. string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  9700. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  9701. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  9702. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  9703. UpdateUserID=:UpdateUserID
  9704. where BarCode=:barcode
  9705. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  9706. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  9707. */
  9708. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  9709. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  9710. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  9711. UpdateUserID=:UpdateUserID
  9712. where BarCode=:barcode
  9713. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  9714. and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  9715. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9716. new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  9717. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9718. new OracleParameter(":barcode1",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9719. new OracleParameter(":SpecialRepairUserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  9720. new OracleParameter(":SpecialRepairUserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  9721. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  9722. };
  9723. //modify wangx 20150623
  9724. OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  9725. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9726. };
  9727. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  9728. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  9729. string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  9730. oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  9731. //modify wangx 20150623 end
  9732. #region
  9733. //第五步,插入干补工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  9734. // 查询新插入的生产数据ID
  9735. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  9736. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  9737. int productionDataID = 0;
  9738. if (!string.IsNullOrEmpty(idStr))
  9739. {
  9740. productionDataID = int.Parse(idStr);
  9741. }
  9742. else
  9743. {
  9744. logoName = "";
  9745. logoCode = "";
  9746. groutingdate = "";
  9747. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9748. }
  9749. int? ClassesSettingID = null;//班次配置ID
  9750. #region 第五步 添加生产者数据
  9751. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  9752. if (!string.IsNullOrEmpty(errMsg))
  9753. {
  9754. logoName = "";
  9755. logoCode = "";
  9756. groutingdate = "";
  9757. return errMsg;
  9758. }
  9759. #endregion
  9760. ProductionDataEntity productionData = new ProductionDataEntity();
  9761. #region 属性赋值
  9762. productionData.ClassesSettingID = ClassesSettingID;
  9763. productionData.ProductionDataID = Convert.ToInt32(idStr);
  9764. productionData.Barcode = barcode;
  9765. productionData.CentralizedBatchNo = centralizedBatchNo;
  9766. productionData.ProductionLineID = procedure.ProductionLineID;
  9767. productionData.ProductionLineCode = procedure.ProductionlineCode;
  9768. productionData.ProductionLineName = procedure.ProductionlineName;
  9769. productionData.CompleteProcedureID = procedure.ProcedureID;
  9770. productionData.ProcedureCode = procedure.ProcedureCode;
  9771. productionData.ProcedureName = procedure.ProcedureName;
  9772. productionData.ProcedureModel = procedure.ProcedureModel;
  9773. productionData.ModelType = procedure.ModelType;
  9774. productionData.NodeType = procedure.NodeType;
  9775. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  9776. productionData.ReworkProcedureID = null;
  9777. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  9778. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  9779. //设置干补标识,产品分级类别=9干补
  9780. productionData.GoodsLevelTypeID = 9;
  9781. productionData.GoodsLevelID = int.Parse(goodsLevelID);
  9782. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  9783. productionData.OrganizationID = procedure.OrganizationID;
  9784. productionData.GoodsID = goodsID;
  9785. productionData.GoodsCode = goodsCode;
  9786. productionData.GoodsName = goodsName;
  9787. productionData.UserID = workUserID;
  9788. productionData.UserCode = barcodeRow["UserCode"].ToString();
  9789. productionData.UserName = barcodeRow["UserName"].ToString();
  9790. productionData.PieceType = procedure.PieceType;
  9791. if (barcodeRow["LogoID"].ToString() != "")
  9792. {
  9793. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  9794. }
  9795. string sqlReFire = @"select
  9796. isrefire,
  9797. logoid
  9798. from tp_pm_inproduction where barcode=:barcode
  9799. union
  9800. select
  9801. isrefire,
  9802. logoid
  9803. from TP_PM_InProductionTrash where barcode=:barcode
  9804. union
  9805. select
  9806. isrefire,
  9807. logoid
  9808. from TP_PM_FinishedProduct where barcode=:barcode ";
  9809. OracleParameter[] ReFireparas = new OracleParameter[] {
  9810. new OracleParameter(":barcode",barcode),
  9811. };
  9812. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  9813. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  9814. {
  9815. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  9816. {
  9817. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  9818. }
  9819. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  9820. {
  9821. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  9822. }
  9823. }
  9824. #endregion 属性赋值
  9825. string OutSpecialRepairflag = "0";//干补标识
  9826. productionData.SpecialRepairflag = 1;
  9827. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9828. if (!string.IsNullOrEmpty(errMsg))
  9829. {
  9830. logoName = "";
  9831. logoCode = "";
  9832. groutingdate = "";
  9833. return errMsg;
  9834. }
  9835. #endregion
  9836. //第二步,回收站中数据回到在产中,设置干补标识。
  9837. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  9838. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  9839. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  9840. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  9841. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  9842. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  9843. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  9844. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  9845. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  9846. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  9847. KILNID, KILNCODE, KILNNAME, KILNCARID,
  9848. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  9849. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  9850. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  9851. :PROCEDUREMODEL, :MODELTYPE, REWORKPROCEDUREID,
  9852. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  9853. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  9854. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  9855. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  9856. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  9857. CREATEUSERID, UPDATETIME, :UpdateUserID,
  9858. ISREFIRE, null, null, DEFECTFLAG,
  9859. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  9860. KILNID, KILNCODE, KILNNAME, KILNCARID,
  9861. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,1,FlowProcedureID ,
  9862. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  9863. from TP_PM_InProductionTrash where barcode=:barcode ";
  9864. OracleParameter[] InProductparas = new OracleParameter[]{
  9865. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  9866. // new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  9867. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9868. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  9869. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  9870. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  9871. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  9872. };
  9873. //第三步,删除回收站中的条码
  9874. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  9875. OracleParameter[] TrashProductparas = new OracleParameter[]{
  9876. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  9877. };
  9878. //第四步,更新注浆表干补标识
  9879. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  9880. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  9881. // where barcode=:barcode)";
  9882. string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  9883. where barcode=:barcode";
  9884. OracleParameter[] GroutingProductparas = new OracleParameter[]{
  9885. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  9886. };
  9887. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  9888. // where barcode=:barcode ";
  9889. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  9890. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  9891. // };
  9892. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  9893. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  9894. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  9895. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  9896. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  9897. // 失败
  9898. if (deleteRow == Constant.INT_IS_ZERO)
  9899. {
  9900. logoName = "";
  9901. logoCode = "";
  9902. groutingdate = "";
  9903. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9904. }
  9905. #endregion
  9906. //#region 第五步 添加生产者数据
  9907. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  9908. //if (!string.IsNullOrEmpty(errMsg))
  9909. //{
  9910. // return errMsg;
  9911. //}
  9912. //#endregion
  9913. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  9914. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  9915. OracleParameter[] Paras = new OracleParameter[] {
  9916. new OracleParameter(":barcode",OracleDbType.Varchar2,
  9917. barcode,ParameterDirection.Input)
  9918. };
  9919. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  9920. if (ds.Tables[0].Rows.Count == 0)
  9921. {
  9922. // 2 生产数据恢复到在产生产数据
  9923. sql = @"insert into tp_pm_productiondatain
  9924. (
  9925. ProductionDataID,
  9926. BarCode,
  9927. CentralizedBatchNo,
  9928. ProductionLineID,
  9929. ProductionLineCode,
  9930. ProductionLineName,
  9931. ProcedureID,
  9932. ProcedureCode,
  9933. ProcedureName,
  9934. ProcedureModel,
  9935. ModelType,
  9936. PieceType,
  9937. IsReworked,
  9938. NodeType,
  9939. IsPublicBody,
  9940. IsReFire,
  9941. GoodsLevelID,
  9942. GoodsLevelTypeID,
  9943. SpecialRepairFlag,
  9944. OrganizationID,
  9945. GoodsID,
  9946. GoodsCode,
  9947. GoodsName,
  9948. UserID,
  9949. UserCode,
  9950. UserName,
  9951. ClassesSettingID,
  9952. KilnID,
  9953. KilnCode,
  9954. KilnName,
  9955. KilnCarID,
  9956. KilnCarCode,
  9957. KilnCarName,
  9958. KilnCarBatchNo,
  9959. KilnCarPosition,
  9960. ReworkProcedureID,
  9961. ReworkProcedureCode,
  9962. ReworkProcedureName,
  9963. GroutingDailyID,
  9964. GroutingDailyDetailID,
  9965. GroutingLineID,
  9966. GroutingLineCode,
  9967. GroutingLineName,
  9968. GMouldTypeID,
  9969. CanManyTimes,
  9970. GroutingLineDetailID,
  9971. GroutingDate,
  9972. GroutingMouldCode,
  9973. MouldCode,
  9974. GroutingUserID,
  9975. GroutingUserCode,
  9976. GroutingNum,
  9977. Remarks,
  9978. AccountDate,
  9979. SettlementFlag,
  9980. AccountID,
  9981. ValueFlag,
  9982. CreateTime,
  9983. CreateUserID,
  9984. UpdateTime,
  9985. UpdateUserID,
  9986. OPTimeStamp,
  9987. TriggerFlag,
  9988. logoid,
  9989. BackOutTime,BackOutUserID,BackOutUserCode
  9990. )
  9991. select
  9992. ProductionDataID,
  9993. BarCode,
  9994. CentralizedBatchNo,
  9995. ProductionLineID,
  9996. ProductionLineCode,
  9997. ProductionLineName,
  9998. ProcedureID,
  9999. ProcedureCode,
  10000. ProcedureName,
  10001. ProcedureModel,
  10002. ModelType,
  10003. PieceType,
  10004. IsReworked,
  10005. NodeType,
  10006. IsPublicBody,
  10007. IsReFire,
  10008. GoodsLevelID,
  10009. GoodsLevelTypeID,
  10010. SpecialRepairFlag,
  10011. OrganizationID,
  10012. GoodsID,
  10013. GoodsCode,
  10014. GoodsName,
  10015. UserID,
  10016. UserCode,
  10017. UserName,
  10018. ClassesSettingID,
  10019. KilnID,
  10020. KilnCode,
  10021. KilnName,
  10022. KilnCarID,
  10023. KilnCarCode,
  10024. KilnCarName,
  10025. KilnCarBatchNo,
  10026. KilnCarPosition,
  10027. ReworkProcedureID,
  10028. ReworkProcedureCode,
  10029. ReworkProcedureName,
  10030. GroutingDailyID,
  10031. GroutingDailyDetailID,
  10032. GroutingLineID,
  10033. GroutingLineCode,
  10034. GroutingLineName,
  10035. GMouldTypeID,
  10036. CanManyTimes,
  10037. GroutingLineDetailID,
  10038. GroutingDate,
  10039. GroutingMouldCode,
  10040. MouldCode,
  10041. GroutingUserID,
  10042. GroutingUserCode,
  10043. GroutingNum,
  10044. Remarks,
  10045. AccountDate,
  10046. SettlementFlag,
  10047. AccountID,
  10048. ValueFlag,
  10049. CreateTime,
  10050. CreateUserID,
  10051. UpdateTime,
  10052. UpdateUserID,
  10053. OPTimeStamp,
  10054. 1,
  10055. logoid,
  10056. BackOutTime,BackOutUserID,BackOutUserCode
  10057. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  10058. ";
  10059. oracleTrConn.ExecuteNonQuery(sql, Paras);
  10060. }
  10061. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  10062. #endregion 数据处理
  10063. }
  10064. logoName = logoName_Temp;
  10065. logoCode = logoCode_Temp;
  10066. groutingdate = groutingdate_Temp;
  10067. return errMsg;
  10068. }
  10069. catch (Exception ex)
  10070. {
  10071. throw ex;
  10072. }
  10073. }
  10074. /// <summary>
  10075. /// 添加干补生产数据
  10076. /// </summary>
  10077. /// <param name="oracleTrConn">连接对象</param>
  10078. /// <param name="accountDate">账务日期</param>
  10079. /// <param name="productionData">生产数据</param>
  10080. /// <param name="sUserInfo">用户基本信息</param>
  10081. /// <returns>string</returns>
  10082. /// <remarks>
  10083. /// 袁新成 2015.04.1 新建
  10084. /// </remarks>
  10085. private static string AddDryRepairProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  10086. {
  10087. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  10088. string selectSql = "";
  10089. string returnVal = "";
  10090. //这地方连了两张表,为了成检的时候,次品在次新增
  10091. selectSql = @"select
  10092. GroutingDate,
  10093. GroutingUserID,
  10094. GroutingUserCode,
  10095. GroutingNum,
  10096. GroutingMouldCode,
  10097. MouldCode,
  10098. GroutingDailyID,
  10099. GroutingDailyDetailID,
  10100. GroutingLineID,
  10101. GroutingLineCode,
  10102. GroutingLineName,
  10103. GMouldTypeID,
  10104. CanManyTimes,
  10105. GroutingLineDetailID,
  10106. SpecialRepairflag
  10107. from tp_pm_inproduction where barcode=:barcode
  10108. union
  10109. select
  10110. GroutingDate,
  10111. GroutingUserID,
  10112. GroutingUserCode,
  10113. GroutingNum,
  10114. GroutingMouldCode,
  10115. MouldCode,
  10116. GroutingDailyID,
  10117. GroutingDailyDetailID,
  10118. GroutingLineID,
  10119. GroutingLineCode,
  10120. GroutingLineName,
  10121. GMouldTypeID,
  10122. CanManyTimes,
  10123. GroutingLineDetailID,
  10124. SpecialRepairflag
  10125. from TP_PM_InProductionTrash where barcode=:barcode
  10126. ";
  10127. OracleParameter[] selectparas = new OracleParameter[] {
  10128. new OracleParameter(":barcode",productionData.Barcode),
  10129. };
  10130. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  10131. if (dsGroutingProduct == null || dsGroutingProduct.Tables[0].Rows.Count == 0)
  10132. {
  10133. selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  10134. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  10135. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  10136. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  10137. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  10138. TP_PM_GroutingDailyDetail.MouldCode,
  10139. TP_PM_GroutingDailyDetail.GroutingDailyID,
  10140. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  10141. TP_PM_GroutingDailyDetail.GroutingLineID,
  10142. TP_PM_GroutingDailyDetail.GroutingLineCode,
  10143. TP_PM_GroutingDailyDetail.GroutingLineName,
  10144. TP_PM_GroutingDaily.GMouldTypeID,
  10145. TP_PM_GroutingDaily.CanManyTimes,
  10146. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  10147. TP_PM_GroutingDailyDetail.SpecialRepairflag
  10148. from TP_PM_GroutingDaily
  10149. left join TP_PM_GroutingDailyDetail
  10150. on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  10151. where TP_PM_GroutingDailyDetail.barcode=:barcode
  10152. ";
  10153. dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  10154. }
  10155. DateTime GroutingDate = new DateTime();
  10156. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  10157. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  10158. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  10159. {
  10160. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  10161. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  10162. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  10163. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  10164. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  10165. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  10166. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  10167. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  10168. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  10169. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  10170. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  10171. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  10172. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  10173. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  10174. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  10175. returnVal = SpecialRepairflag.ToString();
  10176. }
  10177. #endregion
  10178. #region 更新窑炉窑车属性
  10179. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  10180. {
  10181. DataSet ds = GetDryRepairKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  10182. if (ds != null)
  10183. {
  10184. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  10185. {
  10186. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  10187. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  10188. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  10189. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  10190. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  10191. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  10192. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  10193. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  10194. }
  10195. }
  10196. }
  10197. #endregion
  10198. #region SQL
  10199. string sql = "insert into tp_pm_productiondataIn"
  10200. + " (productiondataid,"
  10201. + " barcode,"
  10202. + " centralizedbatchno,"
  10203. + " productionlineid,"
  10204. + " productionlinecode,"
  10205. + " productionlinename,"
  10206. + " procedureid,"
  10207. + " procedurecode,"
  10208. + " procedurename,"
  10209. + " proceduremodel,"
  10210. + " modeltype,"
  10211. + " piecetype,"
  10212. + " isreworked,"
  10213. + " nodetype,"
  10214. + " ispublicbody,"
  10215. + " isrefire,"
  10216. + " organizationid,"
  10217. + " goodsid,"
  10218. + " goodscode,"
  10219. + " goodsname,"
  10220. + " userid,"
  10221. + " usercode,"
  10222. + " username,"
  10223. + " kilnid,"
  10224. + " kilncode,"
  10225. + " kilnname,"
  10226. + " kilncarid,"
  10227. + " kilncarcode,"
  10228. + " kilncarname,"
  10229. + " kilncarbatchno,"
  10230. + " kilncarposition,"
  10231. + " reworkprocedureid,"
  10232. + " reworkprocedurecode,"
  10233. + " reworkprocedurename,"
  10234. + " remarks,"
  10235. + " accountdate,"
  10236. + " accountid,"
  10237. + " GoodsLevelID,"
  10238. + " GoodsLevelTypeID,"
  10239. + " createuserid,"
  10240. + " updateuserid,"
  10241. + " GroutingDate,"
  10242. + " GroutingUserID,"
  10243. + " GroutingUserCode,"
  10244. + " GroutingNum,"
  10245. + " GroutingMouldCode,"
  10246. + " MouldCode,"
  10247. + "GroutingDailyID,"
  10248. + "GroutingDailyDetailID,"
  10249. + "GroutingLineID,"
  10250. + " GroutingLineCode,"
  10251. + "GroutingLineName,"
  10252. + "GMouldTypeID,"
  10253. + "CanManyTimes,"
  10254. + "GroutingLineDetailID,"
  10255. + "SpecialRepairflag,"
  10256. + "ClassesSettingID,"
  10257. + "LogoID"
  10258. + ")"
  10259. + " values"
  10260. + " (:productiondataid,"
  10261. + " :barcode,"
  10262. + " :centralizedbatchno,"
  10263. + " :productionlineid,"
  10264. + " :productionlinecode,"
  10265. + " :productionlinename,"
  10266. + " :procedureid,"
  10267. + " :procedurecode,"
  10268. + " :procedurename,"
  10269. + " :proceduremodel,"
  10270. + " :modeltype,"
  10271. + " :piecetype,"
  10272. + " :isreworked,"
  10273. + " :nodetype,"
  10274. + " :ispublicbody,"
  10275. + " :isrefire,"
  10276. + " :organizationid,"
  10277. + " :goodsid,"
  10278. + " :goodscode,"
  10279. + " :goodsname,"
  10280. + " :userid,"
  10281. + " :usercode,"
  10282. + " :username,"
  10283. + " :kilnid,"
  10284. + " :kilncode,"
  10285. + " :kilnname,"
  10286. + " :kilncarid,"
  10287. + " :kilncarcode,"
  10288. + " :kilncarname,"
  10289. + " :kilncarbatchno,"
  10290. + " :kilncarposition,"
  10291. + " :reworkprocedureid,"
  10292. + " :reworkprocedurecode,"
  10293. + " :reworkprocedurename,"
  10294. + " :remarks,"
  10295. + " :accountdata,"
  10296. + " :accountid,"
  10297. + " :GoodsLevelID,"
  10298. + " :GoodsLevelTypeID,"
  10299. + " :createuserid,"
  10300. + " :updateuserid,"
  10301. + " :groutingdate,"
  10302. + " :groutinguserid,"
  10303. + " :groutingusercode,"
  10304. + " :groutingnum,"
  10305. + " :groutingmouldcode,"
  10306. + " :mouldcode,"
  10307. + ":groutingdailyid,"
  10308. + ":groutingdailydetailid,"
  10309. + ":groutinglineid,"
  10310. + " :groutinglinecode,"
  10311. + ":groutinglinename,"
  10312. + ":gmouldtypeid,"
  10313. + ":canmanytimes,"
  10314. + ":groutinglinedetailid,"
  10315. + ":specialRepairflag,"
  10316. + ":classesSettingID,"
  10317. + ":logoID"
  10318. + ")";
  10319. #endregion
  10320. #region OracleParameter
  10321. OracleParameter[] paras = new OracleParameter[] {
  10322. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  10323. new OracleParameter(":barcode",productionData.Barcode),
  10324. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  10325. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  10326. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  10327. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  10328. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  10329. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  10330. new OracleParameter(":procedurename",productionData.ProcedureName),
  10331. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  10332. new OracleParameter(":modeltype",productionData.ModelType),
  10333. new OracleParameter(":piecetype",productionData.PieceType),
  10334. new OracleParameter(":isreworked",productionData.IsReworked),
  10335. new OracleParameter(":nodetype",productionData.NodeType),
  10336. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  10337. new OracleParameter(":isrefire",productionData.IsReFire),
  10338. new OracleParameter(":organizationid",productionData.OrganizationID),
  10339. new OracleParameter(":goodsid",productionData.GoodsID),
  10340. new OracleParameter(":goodscode",productionData.GoodsCode),
  10341. new OracleParameter(":goodsname",productionData.GoodsName),
  10342. new OracleParameter(":userid",productionData.UserID),
  10343. new OracleParameter(":usercode",productionData.UserCode),
  10344. new OracleParameter(":username",productionData.UserName),
  10345. new OracleParameter(":kilnid",productionData.KilnID),
  10346. new OracleParameter(":kilncode",productionData.KilnCode),
  10347. new OracleParameter(":kilnname",productionData.KilnName),
  10348. new OracleParameter(":kilncarid",productionData.KilnCarID),
  10349. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  10350. new OracleParameter(":kilncarname",productionData.KilnCarName),
  10351. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  10352. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  10353. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  10354. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  10355. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  10356. new OracleParameter(":remarks",productionData.Remarks),
  10357. new OracleParameter(":accountdata",accountDate),
  10358. new OracleParameter(":accountid",sUserInfo.AccountID),
  10359. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  10360. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  10361. new OracleParameter(":createuserid",sUserInfo.UserID),
  10362. new OracleParameter(":updateuserid",sUserInfo.UserID),
  10363. new OracleParameter(":groutingdate",GroutingDate),
  10364. new OracleParameter(":groutinguserid",GroutingUserID),
  10365. new OracleParameter(":groutingusercode",GroutingUserCode),
  10366. new OracleParameter(":groutingnum",GroutingNum),
  10367. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  10368. new OracleParameter(":mouldcode",MouldCode),
  10369. new OracleParameter(":groutingdailyid",GroutingDailyID),
  10370. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  10371. new OracleParameter(":groutinglineid",GroutingLineID),
  10372. new OracleParameter(":groutinglinecode",GroutingLineCode),
  10373. new OracleParameter(":groutinglinename",GroutingLineName),
  10374. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  10375. new OracleParameter(":canmanytimes",CanManyTimes),
  10376. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  10377. new OracleParameter(":specialRepairflag",productionData.SpecialRepairflag),
  10378. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  10379. new OracleParameter(":logoID",productionData.LogoID),
  10380. };
  10381. #endregion
  10382. foreach (OracleParameter para in paras)
  10383. {
  10384. if (string.IsNullOrEmpty(para.Value + ""))
  10385. {
  10386. para.Value = DBNull.Value;
  10387. }
  10388. }
  10389. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  10390. OutSpecialRepairflag = returnVal;
  10391. // 失败
  10392. if (result != Constant.INT_IS_ONE)
  10393. {
  10394. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10395. }
  10396. // 成功返回null
  10397. return null;
  10398. }
  10399. /// <summary>
  10400. /// 根据最大生产数据ID,获取窑车窑炉等信息
  10401. /// </summary>
  10402. /// <param name="oracleTrConn"></param>
  10403. /// <param name="barcode"></param>
  10404. /// <param name="sUserInfo"></param>
  10405. /// <returns></returns>
  10406. private static DataSet GetDryRepairKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  10407. {
  10408. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  10409. // (
  10410. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  10411. // )";
  10412. string sql = @"select
  10413. KilnID,
  10414. KilnCode,
  10415. KilnName,
  10416. KilnCarID,
  10417. KilnCarCode,
  10418. KilnCarName,
  10419. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10420. KilnCarPosition
  10421. from tp_pm_inproduction where barcode=:barcode
  10422. union
  10423. select
  10424. KilnID,
  10425. KilnCode,
  10426. KilnName,
  10427. KilnCarID,
  10428. KilnCarCode,
  10429. KilnCarName,
  10430. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10431. KilnCarPosition
  10432. from TP_PM_InProductionTrash where barcode=:barcode
  10433. ";
  10434. try
  10435. {
  10436. IDataParameter[] paras = new OracleParameter[]
  10437. {
  10438. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  10439. };
  10440. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  10441. if (returnDs != null
  10442. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  10443. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  10444. {
  10445. return returnDs;
  10446. }
  10447. else
  10448. {
  10449. sql = @"select
  10450. KilnID,
  10451. KilnCode,
  10452. KilnName,
  10453. KilnCarID,
  10454. KilnCarCode,
  10455. KilnCarName,
  10456. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10457. KilnCarPosition
  10458. from TP_PM_FINISHEDPRODUCT where barcode=:barcode";
  10459. returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  10460. if (returnDs != null
  10461. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  10462. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  10463. {
  10464. return returnDs;
  10465. }
  10466. else
  10467. {
  10468. return null;
  10469. }
  10470. }
  10471. }
  10472. catch (Exception ex)
  10473. {
  10474. throw ex;
  10475. }
  10476. }
  10477. /// <summary>
  10478. /// 更新漏扫的成型工号
  10479. /// </summary>
  10480. /// <param name="groutingUserCode">成型工号</param>
  10481. /// <param name="missingID">漏扫ID</param>
  10482. /// <param name="sUserInfo">用户基本信息</param>
  10483. /// <returns>int</returns>
  10484. public static int UpdateGroutingUserCodeByMissingID(string groutingUserCode, int missingID, SUserInfo sUserInfo)
  10485. {
  10486. int UpdateRow = 0;
  10487. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10488. try
  10489. {
  10490. oracleTrConn.Connect();
  10491. //string sql = "select userid from tp_mst_user where usercode=:usercode and valueflag=1 and isworker=1 and accountid=:accountid";
  10492. //OracleParameter[] paras = new OracleParameter[]{
  10493. // new OracleParameter(":usercode",OracleDbType.Varchar2, groutingUserCode,ParameterDirection.Input),
  10494. // new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10495. //};
  10496. //DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  10497. //if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  10498. //{
  10499. // oracleTrConn.Commit();
  10500. // UpdateRow = -1;
  10501. // return UpdateRow;//成型工号无效
  10502. //}
  10503. // 20150605 wangxin begin
  10504. string[] subGroutingUserCode = groutingUserCode.Trim(',').Split(',');
  10505. bool isError = false;
  10506. int FirstUserID = 0;
  10507. string sql = "";
  10508. OracleParameter[] paras = null;
  10509. DataSet returnDataset = null;
  10510. for (int i = 0; i < subGroutingUserCode.Length; i++)
  10511. {
  10512. sql = "select userid from tp_mst_user where usercode=:usercode and valueflag=1 and isworker=1 and accountid=:accountid";
  10513. paras = new OracleParameter[]{
  10514. new OracleParameter(":usercode",OracleDbType.Varchar2, subGroutingUserCode[i],ParameterDirection.Input),
  10515. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10516. };
  10517. returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  10518. if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  10519. {
  10520. isError = true;
  10521. break;
  10522. }
  10523. if (i == 0)
  10524. {
  10525. FirstUserID = Convert.ToInt32(returnDataset.Tables[0].Rows[0]["userid"]);
  10526. }
  10527. }
  10528. if (isError)
  10529. {
  10530. oracleTrConn.Commit();
  10531. UpdateRow = -1;
  10532. return UpdateRow;//成型工号无效
  10533. }
  10534. // 20150605 wangxin end
  10535. sql = "update TP_PM_BarCodeMissing set Missuserid=:Missuserid, Missusercode=:Missusercode where missid=:missid";
  10536. paras = new OracleParameter[]{
  10537. //new OracleParameter(":Missuserid",OracleDbType.Int32,Convert.ToInt32(returnDataset.Tables[0].Rows[0]["userid"]),ParameterDirection.Input),
  10538. new OracleParameter(":Missuserid",OracleDbType.Int32,FirstUserID,ParameterDirection.Input),
  10539. new OracleParameter(":Missusercode", OracleDbType.Varchar2, groutingUserCode.Trim(','), ParameterDirection.Input),
  10540. new OracleParameter(":missid", OracleDbType.Int32, missingID, ParameterDirection.Input),
  10541. };
  10542. UpdateRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  10543. if (UpdateRow > 0)
  10544. {
  10545. oracleTrConn.Commit();
  10546. }
  10547. else
  10548. {
  10549. oracleTrConn.Rollback();
  10550. }
  10551. }
  10552. catch (Exception ex)
  10553. {
  10554. oracleTrConn.Rollback();
  10555. throw ex;
  10556. }
  10557. finally
  10558. {
  10559. // 释放资源
  10560. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10561. {
  10562. oracleTrConn.Disconnect();
  10563. }
  10564. }
  10565. return UpdateRow;
  10566. }
  10567. /// <summary>
  10568. /// 在入窑工序检验窑车号是否存在
  10569. /// </summary>
  10570. /// <param name="kilncarcode">窑车编码</param>
  10571. /// <param name="procedureid">工序ID</param>
  10572. /// <param name="sUserInfo">用户基本信息</param>
  10573. /// <returns></returns>
  10574. public static int CheckKilnCarByIntoCar(string kilncarcode, int procedureid, SUserInfo sUserInfo)
  10575. {
  10576. int UpdateRow = 0;
  10577. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10578. try
  10579. {
  10580. oracleTrConn.Connect();
  10581. // 判断窑车编码是否有效
  10582. string sql = "select kilncarid from tp_mst_kilncar where kilncarcode=:kilncarcode and valueflag=1 and accountid=:accountid";
  10583. OracleParameter[] paras = new OracleParameter[]{
  10584. new OracleParameter(":kilncarcode",OracleDbType.Varchar2, kilncarcode,ParameterDirection.Input),
  10585. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10586. };
  10587. DataSet dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10588. int kilncarid = 0;
  10589. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10590. {
  10591. oracleTrConn.Commit();
  10592. UpdateRow = -99;
  10593. return UpdateRow;//窑车编码无效
  10594. }
  10595. kilncarid = Convert.ToInt32(dsExists.Tables[0].Rows[0]["kilncarid"]);//窑车ID
  10596. //判断此窑车号有无产品
  10597. sql = "select barcode,KilnCarBatchNo from TP_PM_KilnCarGoods where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1";
  10598. paras = new OracleParameter[]{
  10599. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10600. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10601. };
  10602. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sql, paras);
  10603. if (dsGoods != null && dsGoods.Tables[0].Rows.Count == 0)
  10604. {
  10605. oracleTrConn.Commit();
  10606. UpdateRow = -98;
  10607. return UpdateRow;//窑车己无产品
  10608. }
  10609. // 判断窑车编码是否在入窑工序
  10610. sql = "select 1 from TP_PM_InProduction where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and FlowProcedureID=:FlowProcedureID";
  10611. paras = new OracleParameter[]{
  10612. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10613. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10614. new OracleParameter(":FlowProcedureID", OracleDbType.Int32, procedureid, ParameterDirection.Input),
  10615. };
  10616. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10617. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10618. {
  10619. oracleTrConn.Commit();
  10620. UpdateRow = -97;
  10621. return UpdateRow;//窑车号没有入窑,不可以撤销
  10622. }
  10623. int KilnCarDataID = 0;//窑车生产数据ID
  10624. string KilnCarBatchNo = "";
  10625. // 遍历窑车产品
  10626. bool isError = false;//默认没有错误
  10627. for (int i = 0; i < dsGoods.Tables[0].Rows.Count; i++)
  10628. {
  10629. #region 先查询生产数据最后3条
  10630. string sqlString = @"select ProductionDataID,
  10631. ProcedureID,
  10632. ProcedureModel,
  10633. ModelType,
  10634. ReworkProcedureID,
  10635. UserID
  10636. from (select ProductionDataID,
  10637. ProcedureID,
  10638. ProcedureModel,
  10639. ModelType,
  10640. ReworkProcedureID,
  10641. UserID
  10642. from Tp_Pm_ProductiondataIn
  10643. where barcode = :barcode
  10644. and valueflag = 1 and ModelType<>1 and ModelType<>2
  10645. order by ProductionDataID desc)
  10646. where rownum <=1";//where rownum <=3";
  10647. paras = new OracleParameter[]{
  10648. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10649. };
  10650. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  10651. if (productionData == null
  10652. || productionData.Tables.Count == Constant.INT_IS_ZERO
  10653. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  10654. {
  10655. //errMsg = Messages.MSG_PM_W016;
  10656. isError = true;
  10657. break;
  10658. }
  10659. #endregion
  10660. #region 回滚在产数据
  10661. sqlString = @"update TP_PM_InProduction
  10662. set FlowProcedureID = :flowProcedureID,
  10663. ProcedureModel = :procedureModel,
  10664. ProcedureID = :flowProcedureID,
  10665. ModelType = :modelType,
  10666. ReworkProcedureID = :reworkProcedureID,
  10667. UserID = :userID,
  10668. updateuserid = :updateuserid
  10669. where barcode = :barcode";
  10670. paras = new OracleParameter[]{
  10671. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  10672. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//2-->1
  10673. new OracleParameter(":procedureModel",OracleDbType.Int32,
  10674. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  10675. new OracleParameter(":modelType",OracleDbType.Int32,
  10676. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  10677. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  10678. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  10679. new OracleParameter(":userID",OracleDbType.Int32,
  10680. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  10681. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10682. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10683. };
  10684. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10685. if (UpdateRow == Constant.INT_IS_ZERO)
  10686. {
  10687. // 保存失败
  10688. isError = true;
  10689. break;
  10690. }
  10691. #endregion
  10692. #region 删除生产者和最后一条生产数据
  10693. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  10694. paras = new OracleParameter[]{
  10695. new OracleParameter(":productionDataID",OracleDbType.Int32,
  10696. productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  10697. //new OracleParameter(":productionDataID2",OracleDbType.Int32,
  10698. // productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  10699. new OracleParameter(":barcode",OracleDbType.Varchar2,
  10700. dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10701. };
  10702. //modify 2015/05/13 wangx GoodsLevelTypeID=12 撤销入窑
  10703. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=12 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  10704. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  10705. int? GoodsLevelID = null;
  10706. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  10707. {
  10708. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  10709. }
  10710. //modify end
  10711. sqlString = "update TP_PM_ProductionDataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID;
  10712. if (GoodsLevelID != null)
  10713. {
  10714. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  10715. sqlString += ",GoodsLevelTypeID=12";
  10716. }
  10717. //sqlString += " where ProductionDataID=:productionDataID or ProductionDataID=:productionDataID2";
  10718. sqlString += " where barcode=:barcode and ProductionDataID>:productionDataID "; //or ProductionDataID=:productionDataID2
  10719. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10720. if (UpdateRow == Constant.INT_IS_ZERO)
  10721. {
  10722. // 保存失败
  10723. isError = true;
  10724. break;
  10725. }
  10726. #endregion
  10727. #region 删除窑车产品
  10728. sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  10729. paras = new OracleParameter[]{
  10730. new OracleParameter(":barCode",OracleDbType.Varchar2,
  10731. dsGoods.Tables[0].Rows[i]["barcode"],ParameterDirection.Input),
  10732. };
  10733. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10734. if (UpdateRow == Constant.INT_IS_ZERO)
  10735. {
  10736. // 保存失败
  10737. isError = true;
  10738. break;
  10739. }
  10740. #endregion
  10741. #region 读取窑车生产数据,进行撤销
  10742. sql = @"select KilnCarDataID, ProductionLineID,ProcedureID,
  10743. ProcedureCode,ProcedureName,ProcedureModel,ModelType,PieceType
  10744. from TP_PM_KilnCarData where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and KilnCarBatchNo=:KilnCarBatchNo order by KilnCarDataID ";
  10745. paras = new OracleParameter[]{
  10746. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  10747. kilncarid,ParameterDirection.Input),
  10748. new OracleParameter(":accountid",OracleDbType.Int32,
  10749. sUserInfo.AccountID,ParameterDirection.Input),
  10750. new OracleParameter(":KilnCarBatchNo",OracleDbType.Varchar2,
  10751. dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString(),ParameterDirection.Input),
  10752. };
  10753. KilnCarBatchNo = dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString();
  10754. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10755. if (dsExists != null && dsExists.Tables[0].Rows.Count > 0)
  10756. {
  10757. //最后窑车生产数据ID赋值 撤二步骤
  10758. KilnCarDataID = Convert.ToInt32(dsExists.Tables[0].Rows[0]["KilnCarDataID"]);
  10759. sqlString = @"update TP_PM_KilnCarStatus set
  10760. ProductionLineID=:ProductionLineID
  10761. ,ProcedureID=:ProcedureID
  10762. ,ProcedureCode=:ProcedureCode
  10763. ,ProcedureName=:ProcedureName
  10764. ,ProcedureModel=:ProcedureModel
  10765. ,ModelType=:ModelType
  10766. ,PieceType=:PieceType
  10767. ,KilnCarStatus=0,LoadingTime=null,IntoKilnTime=null,OutKilnTime=null,UnloadingTime=null
  10768. where KilnCarID=:KilnCarID";
  10769. paras = new OracleParameter[]{
  10770. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  10771. dsExists.Tables[0].Rows[0]["ProductionLineID"],ParameterDirection.Input),
  10772. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  10773. dsExists.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),
  10774. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  10775. dsExists.Tables[0].Rows[0]["ProcedureCode"].ToString(),ParameterDirection.Input),
  10776. new OracleParameter(":ProcedureModel",OracleDbType.Varchar2,
  10777. dsExists.Tables[0].Rows[0]["ProcedureModel"].ToString(),ParameterDirection.Input),
  10778. new OracleParameter(":ModelType",OracleDbType.Int32,
  10779. Convert.ToInt32(dsExists.Tables[0].Rows[0]["ModelType"]),ParameterDirection.Input),
  10780. new OracleParameter(":PieceType",OracleDbType.Varchar2,
  10781. dsExists.Tables[0].Rows[0]["PieceType"].ToString(),ParameterDirection.Input),
  10782. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  10783. kilncarid,ParameterDirection.Input),
  10784. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  10785. dsExists.Tables[0].Rows[0]["ProcedureName"].ToString(),ParameterDirection.Input),
  10786. };
  10787. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10788. if (UpdateRow == Constant.INT_IS_ZERO)
  10789. {
  10790. // 保存失败
  10791. isError = true;
  10792. break;
  10793. }
  10794. }
  10795. #endregion
  10796. }
  10797. //modify wangx 20150606 begin
  10798. string updateSql = "update TP_PM_KilnCarData set valueflag=0,UpdateUserID=" + sUserInfo.UserID + " where KilnCarDataID>=" + KilnCarDataID + " and KilnCarBatchNo=" + KilnCarBatchNo;
  10799. int row = oracleTrConn.ExecuteNonQuery(updateSql);
  10800. //modify wangx 20150606 end
  10801. if (isError) //有错误消息
  10802. {
  10803. UpdateRow = -1;//失败
  10804. oracleTrConn.Rollback();
  10805. }
  10806. else
  10807. {
  10808. UpdateRow = 1;//成功
  10809. oracleTrConn.Commit();
  10810. }
  10811. }
  10812. catch (Exception ex)
  10813. {
  10814. oracleTrConn.Rollback();
  10815. throw ex;
  10816. }
  10817. finally
  10818. {
  10819. // 释放资源
  10820. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10821. {
  10822. oracleTrConn.Disconnect();
  10823. }
  10824. }
  10825. return UpdateRow;
  10826. }
  10827. /// <summary>
  10828. /// 在入窑工序检验窑车号是否存在
  10829. /// </summary>
  10830. /// <param name="kilncarcode">窑车编码</param>
  10831. /// <param name="procedureid">工序ID</param>
  10832. /// <param name="sUserInfo">用户基本信息</param>
  10833. /// <returns></returns>
  10834. public static int CheckKilnCarByIntoCar2(string kilncarcode, int procedureid, SUserInfo sUserInfo)
  10835. {
  10836. int UpdateRow = 0;
  10837. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10838. try
  10839. {
  10840. oracleTrConn.Connect();
  10841. // 判断窑车编码是否有效
  10842. string sql = "select kilncarid from tp_mst_kilncar where kilncarcode=:kilncarcode and valueflag=1 and accountid=:accountid";
  10843. OracleParameter[] paras = new OracleParameter[]{
  10844. new OracleParameter(":kilncarcode",OracleDbType.Varchar2, kilncarcode,ParameterDirection.Input),
  10845. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10846. };
  10847. DataSet dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10848. int kilncarid = 0;
  10849. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10850. {
  10851. oracleTrConn.Commit();
  10852. UpdateRow = -99;
  10853. return UpdateRow;//窑车编码无效
  10854. }
  10855. kilncarid = Convert.ToInt32(dsExists.Tables[0].Rows[0]["kilncarid"]);//窑车ID
  10856. //判断此窑车号有无产品
  10857. sql = "select barcode,KilnCarBatchNo from TP_PM_KilnCarGoods where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1";
  10858. paras = new OracleParameter[]{
  10859. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10860. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10861. };
  10862. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sql, paras);
  10863. if (dsGoods != null && dsGoods.Tables[0].Rows.Count == 0)
  10864. {
  10865. oracleTrConn.Commit();
  10866. UpdateRow = -98;
  10867. return UpdateRow;//窑车己无产品
  10868. }
  10869. // 判断窑车编码是否在入窑工序
  10870. sql = "select 1 from TP_PM_InProduction where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and FlowProcedureID=:FlowProcedureID";
  10871. paras = new OracleParameter[]{
  10872. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10873. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10874. new OracleParameter(":FlowProcedureID", OracleDbType.Int32, procedureid, ParameterDirection.Input),
  10875. };
  10876. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10877. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10878. {
  10879. oracleTrConn.Commit();
  10880. UpdateRow = -97;
  10881. return UpdateRow;//窑车号没有入窑,不可以撤销
  10882. }
  10883. int KilnCarDataID = 0;//窑车生产数据ID
  10884. // 遍历窑车产品
  10885. bool isError = false;//默认没有错误
  10886. for (int i = 0; i < dsGoods.Tables[0].Rows.Count; i++)
  10887. {
  10888. #region 先查询生产数据最后3条
  10889. string sqlString = @"select ProductionDataID,
  10890. ProcedureID,
  10891. ProcedureModel,
  10892. ModelType,
  10893. ReworkProcedureID,
  10894. UserID,
  10895. logoid
  10896. from (select ProductionDataID,
  10897. ProcedureID,
  10898. ProcedureModel,
  10899. ModelType,
  10900. ReworkProcedureID,
  10901. UserID,
  10902. logoid
  10903. from Tp_Pm_ProductiondataIn
  10904. where barcode = :barcode
  10905. and valueflag = 1 and ModelType<>2
  10906. order by ProductionDataID desc)
  10907. where rownum <=1";
  10908. paras = new OracleParameter[]{
  10909. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10910. };
  10911. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  10912. if (productionData == null
  10913. || productionData.Tables.Count == Constant.INT_IS_ZERO
  10914. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  10915. {
  10916. //errMsg = Messages.MSG_PM_W016;
  10917. isError = true;
  10918. break;
  10919. }
  10920. #endregion
  10921. #region 回滚在产数据
  10922. sqlString = @"update TP_PM_InProduction
  10923. set FlowProcedureID = :flowProcedureID,
  10924. ProcedureModel = :procedureModel,
  10925. ProcedureID = :flowProcedureID,
  10926. ModelType = :modelType,
  10927. ReworkProcedureID = :reworkProcedureID,
  10928. UserID = :userID,
  10929. updateuserid = :updateuserid,
  10930. logoid = :logoid
  10931. where barcode = :barcode";
  10932. paras = new OracleParameter[]{
  10933. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  10934. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//2-->1
  10935. new OracleParameter(":procedureModel",OracleDbType.Int32,
  10936. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  10937. new OracleParameter(":modelType",OracleDbType.Int32,
  10938. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  10939. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  10940. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  10941. new OracleParameter(":userID",OracleDbType.Int32,
  10942. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  10943. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10944. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10945. new OracleParameter(":logoid",OracleDbType.Int32, productionData.Tables[0].Rows[0]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[0]["logoid"],ParameterDirection.Input),
  10946. };
  10947. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10948. if (UpdateRow == Constant.INT_IS_ZERO)
  10949. {
  10950. // 保存失败
  10951. isError = true;
  10952. break;
  10953. }
  10954. #endregion
  10955. #region 删除生产者和最后一条生产数据
  10956. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  10957. paras = new OracleParameter[]{
  10958. new OracleParameter(":productionDataID",OracleDbType.Int32,
  10959. productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  10960. new OracleParameter(":barcode",OracleDbType.Varchar2,
  10961. dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10962. };
  10963. //modify 2015/05/13 wangx GoodsLevelTypeID=12 撤销入窑
  10964. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=12 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  10965. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  10966. int? GoodsLevelID = null;
  10967. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  10968. {
  10969. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  10970. }
  10971. //modify end
  10972. sqlString = "update TP_PM_ProductionDataIn set valueflag=0,updateuserid= " + sUserInfo.UserID;
  10973. if (GoodsLevelID != null)
  10974. {
  10975. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  10976. sqlString += ",GoodsLevelTypeID=12";
  10977. }
  10978. //sqlString += " where ProductionDataID=:productionDataID or ProductionDataID=:productionDataID2";
  10979. sqlString += " where barcode=:barcode and ProductionDataID>:productionDataID "; //or ProductionDataID=:productionDataID2
  10980. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10981. if (UpdateRow == Constant.INT_IS_ZERO)
  10982. {
  10983. // 保存失败
  10984. isError = true;
  10985. break;
  10986. }
  10987. #endregion
  10988. //#region 删除窑车产品
  10989. //sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  10990. //paras = new OracleParameter[]{
  10991. // new OracleParameter(":barCode",OracleDbType.Varchar2,
  10992. // dsGoods.Tables[0].Rows[i]["barcode"],ParameterDirection.Input),
  10993. //};
  10994. //UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10995. //if (UpdateRow == Constant.INT_IS_ZERO)
  10996. //{
  10997. // // 保存失败
  10998. // isError = true;
  10999. // break;
  11000. //}
  11001. //#endregion
  11002. #region 读取窑车生产数据,进行撤销
  11003. sql = @"select KilnCarDataID, ProductionLineID,ProcedureID,
  11004. ProcedureCode,ProcedureName,ProcedureModel,ModelType,PieceType
  11005. from TP_PM_KilnCarData where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and KilnCarBatchNo=:KilnCarBatchNo order by KilnCarDataID ";
  11006. paras = new OracleParameter[]{
  11007. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  11008. kilncarid,ParameterDirection.Input),
  11009. new OracleParameter(":accountid",OracleDbType.Int32,
  11010. sUserInfo.AccountID,ParameterDirection.Input),
  11011. new OracleParameter(":KilnCarBatchNo",OracleDbType.Varchar2,
  11012. dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString(),ParameterDirection.Input),
  11013. };
  11014. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  11015. if (dsExists != null && dsExists.Tables[0].Rows.Count > 0)
  11016. {
  11017. //最后窑车生产数据ID赋值
  11018. KilnCarDataID = Convert.ToInt32(dsExists.Tables[0].Rows[dsExists.Tables[0].Rows.Count - 1]["KilnCarDataID"]);
  11019. sqlString = @"update TP_PM_KilnCarStatus set
  11020. ProductionLineID=:ProductionLineID
  11021. ,ProcedureID=:ProcedureID
  11022. ,ProcedureCode=:ProcedureCode
  11023. ,ProcedureName=:ProcedureName
  11024. ,ProcedureModel=:ProcedureModel
  11025. ,ModelType=:ModelType
  11026. ,PieceType=:PieceType
  11027. ,KilnCarStatus=0,IntoKilnTime=null,OutKilnTime=null,UnloadingTime=null
  11028. where KilnCarID=:KilnCarID";
  11029. paras = new OracleParameter[]{
  11030. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  11031. dsExists.Tables[0].Rows[0]["ProductionLineID"],ParameterDirection.Input),
  11032. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  11033. dsExists.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),
  11034. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  11035. dsExists.Tables[0].Rows[0]["ProcedureCode"].ToString(),ParameterDirection.Input),
  11036. new OracleParameter(":ProcedureModel",OracleDbType.Varchar2,
  11037. dsExists.Tables[0].Rows[0]["ProcedureModel"].ToString(),ParameterDirection.Input),
  11038. new OracleParameter(":ModelType",OracleDbType.Int32,
  11039. Convert.ToInt32(dsExists.Tables[0].Rows[0]["ModelType"]),ParameterDirection.Input),
  11040. new OracleParameter(":PieceType",OracleDbType.Varchar2,
  11041. dsExists.Tables[0].Rows[0]["PieceType"].ToString(),ParameterDirection.Input),
  11042. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  11043. kilncarid,ParameterDirection.Input),
  11044. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  11045. dsExists.Tables[0].Rows[0]["ProcedureName"].ToString(),ParameterDirection.Input),
  11046. };
  11047. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  11048. if (UpdateRow == Constant.INT_IS_ZERO)
  11049. {
  11050. // 保存失败
  11051. isError = true;
  11052. break;
  11053. }
  11054. }
  11055. #endregion
  11056. }
  11057. //modify wangx 20150606 begin
  11058. string updateSql = "update TP_PM_KilnCarData set valueflag=0,UpdateUserID=" + sUserInfo.UserID + " where KilnCarDataID=" + KilnCarDataID;
  11059. int row = oracleTrConn.ExecuteNonQuery(updateSql);
  11060. //modify wangx 20150606 end
  11061. if (isError) //有错误消息
  11062. {
  11063. UpdateRow = -1;//失败
  11064. oracleTrConn.Rollback();
  11065. }
  11066. else
  11067. {
  11068. UpdateRow = 1;//成功
  11069. oracleTrConn.Commit();
  11070. }
  11071. }
  11072. catch (Exception ex)
  11073. {
  11074. oracleTrConn.Rollback();
  11075. throw ex;
  11076. }
  11077. finally
  11078. {
  11079. // 释放资源
  11080. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11081. {
  11082. oracleTrConn.Disconnect();
  11083. }
  11084. }
  11085. return UpdateRow;
  11086. }
  11087. /// <summary>
  11088. /// 保存盘点单
  11089. /// </summary>
  11090. /// <param name="inProductionEntity"></param>
  11091. /// <param name="remarks"></param>
  11092. /// <param name="sUserInfo"></param>
  11093. /// <returns></returns>
  11094. public static int SaveInChecked(InProductionEntity[] inProductionEntity, string remarks, SUserInfo sUserInfo)
  11095. {
  11096. int returnRows = 0;
  11097. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11098. try
  11099. {
  11100. if (inProductionEntity[0].ReworkProcedureID == 0)
  11101. {
  11102. //盘点单号
  11103. string InCheckedNo = string.Format("IPC{0}", DateTime.Now.ToString("yyyyMMddHHmmss"));
  11104. //获得账务日期
  11105. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  11106. //备注
  11107. string Remarks = remarks;
  11108. oracleTrConn.Connect();
  11109. //盘点单ID
  11110. string sql = "select SEQ_PM_InChecked_ID.nextval from dual";
  11111. int InCheckedID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  11112. #region 插入盘点单主表信息
  11113. sql = @"insert into TP_PM_InChecked
  11114. (
  11115. InCheckedID,
  11116. InCheckedNo,
  11117. AccountDate,
  11118. Remarks,
  11119. AccountID,
  11120. CreateUserID,
  11121. UpdateUserID,
  11122. INCHECKNAME
  11123. ) values
  11124. ( :InCheckedID,
  11125. :InCheckedNo,
  11126. :AccountDate,
  11127. :Remarks,
  11128. :AccountID,
  11129. :CreateUserID,
  11130. :UpdateUserID,
  11131. :INCHECKNAME
  11132. )";
  11133. OracleParameter[] Paras = new OracleParameter[] {
  11134. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11135. InCheckedID,ParameterDirection.Input),
  11136. new OracleParameter(":InCheckedNo",OracleDbType.NVarchar2,
  11137. InCheckedNo,ParameterDirection.Input),
  11138. new OracleParameter(":AccountDate",OracleDbType.Date,
  11139. accountDate,ParameterDirection.Input),
  11140. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  11141. Remarks,ParameterDirection.Input),
  11142. new OracleParameter(":AccountID",OracleDbType.Int32,
  11143. sUserInfo.AccountID,ParameterDirection.Input),
  11144. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  11145. sUserInfo.UserID,ParameterDirection.Input),
  11146. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  11147. sUserInfo.UserID,ParameterDirection.Input),
  11148. new OracleParameter(":INCHECKNAME",OracleDbType.NVarchar2,
  11149. inProductionEntity[0].CompleteProcedureName,ParameterDirection.Input),
  11150. };
  11151. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11152. #endregion
  11153. //string barcodes = "";
  11154. List<OracleParameter> parameters = null;
  11155. //int row = 0;
  11156. //foreach (InProductionEntity entity in inProductionEntity)
  11157. //{
  11158. // barcodes += entity.BarCode + ",";
  11159. // row++;
  11160. // if (row > 15) //为了15查数据库一次
  11161. // {
  11162. // barcodes = barcodes.TrimEnd(',') + '|';
  11163. // row = 0;//重置
  11164. // }
  11165. //}
  11166. //barcodes = barcodes.TrimEnd(',');
  11167. //string[] subsplit = barcodes.Split('|');
  11168. // foreach (InProductionEntity entity in inProductionEntity)foreach (InProductionEntity entity in inProductionEntity)
  11169. //foreach (string entity in subsplit)
  11170. //{
  11171. //barcodes += entity.BarCode + ",";
  11172. //barcodes = barcodes.TrimEnd(','); //在产产品是唯一的,直接根据条码查询,并插入到盘点明细
  11173. sql = @"
  11174. insert into TP_PM_InCheckedDetail
  11175. (
  11176. InCheckedID,
  11177. BarCode,
  11178. InCheckedNo,
  11179. ProductionLineID,
  11180. ProductionLineCode,
  11181. ProductionLineName,
  11182. ProcedureID,
  11183. ProcedureTime,
  11184. ProcedureModel,
  11185. ModelType,
  11186. DefectFlag,
  11187. ReworkProcedureID,
  11188. IsPublicBody,
  11189. IsReFire,
  11190. SpecialRepairFlag,
  11191. GoodsLevelID,
  11192. GoodsLevelTypeID,
  11193. GoodsID,
  11194. GoodsCode,
  11195. GoodsName,
  11196. UserID,
  11197. GroutingDailyID,
  11198. GroutingDailyDetailID,
  11199. GroutingDate,
  11200. GroutingLineID,
  11201. GroutingLineCode,
  11202. GroutingLineName,
  11203. GMouldTypeID,
  11204. CanManyTimes,
  11205. GroutingLineDetailID,
  11206. GroutingMouldCode,
  11207. MouldCode,
  11208. GroutingUserID,
  11209. GroutingUserCode,
  11210. GroutingNum,
  11211. Remarks,
  11212. KilnID,
  11213. KilnCode,
  11214. KilnName,
  11215. KilnCarID,
  11216. KilnCarCode,
  11217. KilnCarName,
  11218. KilnCarBatchNo,
  11219. KilnCarPosition,
  11220. AccountID,
  11221. CreateUserID,
  11222. UpdateUserID,
  11223. valueflag,
  11224. logoid,
  11225. ISREWORKFLAG,INSCRAPFLAG
  11226. )
  11227. select
  11228. :InCheckedID,
  11229. inp.BarCode,
  11230. :InCheckedNo,
  11231. inp.ProductionLineID,
  11232. inp.ProductionLineCode,
  11233. inp.ProductionLineName,
  11234. inp.ProcedureID,
  11235. inp.ProcedureTime,
  11236. inp.ProcedureModel,
  11237. inp.ModelType,
  11238. inp.DefectFlag,
  11239. inp.ReworkProcedureID,
  11240. inp.IsPublicBody,
  11241. inp.IsReFire,
  11242. inp.SpecialRepairFlag,
  11243. inp.GoodsLevelID,
  11244. inp.GoodsLevelTypeID,
  11245. inp.GoodsID,
  11246. inp.GoodsCode,
  11247. inp.GoodsName,
  11248. inp.UserID,
  11249. inp.GroutingDailyID,
  11250. inp.GroutingDailyDetailID,
  11251. inp.GroutingDate,
  11252. inp.GroutingLineID,
  11253. inp.GroutingLineCode,
  11254. inp.GroutingLineName,
  11255. inp.GMouldTypeID,
  11256. inp.CanManyTimes,
  11257. inp.GroutingLineDetailID,
  11258. inp.GroutingMouldCode,
  11259. inp.MouldCode,
  11260. inp.GroutingUserID,
  11261. inp.GroutingUserCode,
  11262. inp.GroutingNum,
  11263. inp.Remarks,
  11264. inp.KilnID,
  11265. inp.KilnCode,
  11266. inp.KilnName,
  11267. inp.KilnCarID,
  11268. inp.KilnCarCode,
  11269. inp.KilnCarName,
  11270. inp.KilnCarBatchNo,
  11271. inp.KilnCarPosition,
  11272. :AccountID,
  11273. :CreateUserID,
  11274. :UpdateUserID,
  11275. 1,
  11276. inp.logoid,
  11277. inp.ISREWORKFLAG,inp.INSCRAPFLAG
  11278. from TP_PM_InProduction inp
  11279. LEFT JOIN tp_mst_goods g
  11280. ON g.goodsid = inp.goodsid
  11281. LEFT JOIN tp_mst_goodsType gt
  11282. ON gt.goodstypeid = g.goodstypeid
  11283. where 1=1
  11284. ";
  11285. //sql += "AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ";
  11286. parameters = new List<OracleParameter>();
  11287. // 工序IDS
  11288. if (!string.IsNullOrEmpty(inProductionEntity[0].ProcedureIDS))
  11289. {
  11290. sql += "AND instr(','||:ProcedureIDS||',',','||inp.FlowProcedureID||',')>0 ";
  11291. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, inProductionEntity[0].ProcedureIDS, ParameterDirection.Input));
  11292. }
  11293. // 完成日期
  11294. if (inProductionEntity[0].StartCompleteDate != null)
  11295. {
  11296. sql = sql + " AND inp.ProcedureTime >= :Createdate AND inp.ProcedureTime <= :EndDate ";
  11297. parameters.Add(new OracleParameter(":Createdate", OracleDbType.Date, inProductionEntity[0].StartCompleteDate, ParameterDirection.Input));
  11298. parameters.Add(new OracleParameter(":EndDate", OracleDbType.Date, inProductionEntity[0].EndCompleteDate, ParameterDirection.Input));
  11299. }
  11300. // 编码IDS
  11301. if (!string.IsNullOrEmpty(inProductionEntity[0].GoodsCodeList))
  11302. {
  11303. sql += "AND instr(','||:GoodsIDS||',',','||inp.GoodsID||',')>0 ";
  11304. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, inProductionEntity[0].GoodsCodeList, ParameterDirection.Input));
  11305. }
  11306. // 产品类型
  11307. if (!string.IsNullOrEmpty(inProductionEntity[0].GoodsTypeCode))
  11308. {
  11309. sql += "AND instr(gt.goodstypecode, :GoodsTypeCode)=1 ";
  11310. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, inProductionEntity[0].GoodsTypeCode, ParameterDirection.Input));
  11311. }
  11312. parameters.Add(new OracleParameter(":InCheckedID", OracleDbType.Int32, InCheckedID, ParameterDirection.Input));
  11313. parameters.Add(new OracleParameter(":InCheckedNo", OracleDbType.Varchar2, InCheckedNo, ParameterDirection.Input));
  11314. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  11315. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11316. parameters.Add(new OracleParameter(":UpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11317. returnRows += oracleTrConn.ExecuteNonQuery(sql, parameters.ToArray());
  11318. #region 插入盘点工号列表
  11319. foreach (DataRow r in inProductionEntity[0].UserTable.Rows)
  11320. {
  11321. if (r["userid"] != DBNull.Value)
  11322. {
  11323. sql = @" Insert into tp_pm_incheckeduser
  11324. (
  11325. incheckedid,
  11326. userCode,
  11327. userid
  11328. )
  11329. values
  11330. (
  11331. :inchecked,
  11332. :userCode,
  11333. :userid
  11334. )
  11335. ";
  11336. Paras = new OracleParameter[] {
  11337. new OracleParameter(":inchecked",OracleDbType.Int32,
  11338. InCheckedID,ParameterDirection.Input),
  11339. new OracleParameter(":userCode",OracleDbType.NVarchar2,
  11340. r["userCode"],ParameterDirection.Input),
  11341. new OracleParameter(":userid",OracleDbType.Int32,
  11342. r["userid"],ParameterDirection.Input),
  11343. };
  11344. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11345. }
  11346. }
  11347. #endregion
  11348. }
  11349. else
  11350. {
  11351. string sql = @"Update TP_PM_InChecked set Incheckname=:Incheckname,Remarks=:Remarks,updateuserid=:updateuserid where InCheckedID=:InCheckedID";
  11352. OracleParameter[] Paras = new OracleParameter[] {
  11353. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11354. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11355. new OracleParameter(":Incheckname",OracleDbType.NVarchar2,
  11356. inProductionEntity[0].CompleteProcedureName,ParameterDirection.Input),
  11357. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  11358. remarks,ParameterDirection.Input),
  11359. new OracleParameter(":updateuserid",OracleDbType.Int32,
  11360. sUserInfo.UserID,ParameterDirection.Input),
  11361. };
  11362. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11363. sql = @"delete from tp_pm_incheckeduser where InCheckedID=:InCheckedID";
  11364. Paras = new OracleParameter[] {
  11365. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11366. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11367. };
  11368. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11369. #region 插入盘点工号列表
  11370. foreach (DataRow r in inProductionEntity[0].UserTable.Rows)
  11371. {
  11372. if (string.IsNullOrEmpty(r["userCode"].ToString()) ||
  11373. string.IsNullOrEmpty(r["userid"].ToString()))
  11374. {
  11375. continue;
  11376. }
  11377. sql = @" Insert into tp_pm_incheckeduser
  11378. (
  11379. incheckedid,
  11380. userCode,
  11381. userid
  11382. )
  11383. values
  11384. (
  11385. :inchecked,
  11386. :userCode,
  11387. :userid
  11388. )
  11389. ";
  11390. Paras = new OracleParameter[] {
  11391. new OracleParameter(":inchecked",OracleDbType.Int32,
  11392. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11393. new OracleParameter(":userCode",OracleDbType.NVarchar2,
  11394. r["userCode"],ParameterDirection.Input),
  11395. new OracleParameter(":userid",OracleDbType.Int32,
  11396. r["userid"],ParameterDirection.Input),
  11397. };
  11398. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11399. }
  11400. #endregion
  11401. }
  11402. if (returnRows == 0)
  11403. {
  11404. oracleTrConn.Rollback();
  11405. oracleTrConn.Disconnect();
  11406. }
  11407. else
  11408. {
  11409. oracleTrConn.Commit();
  11410. oracleTrConn.Disconnect();
  11411. }
  11412. }
  11413. catch (Exception ex)
  11414. {
  11415. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11416. {
  11417. oracleTrConn.Rollback();
  11418. oracleTrConn.Disconnect();
  11419. }
  11420. throw ex;
  11421. }
  11422. finally
  11423. {
  11424. if (oracleTrConn.ConnState == ConnectionState.Open)
  11425. {
  11426. oracleTrConn.Disconnect();
  11427. }
  11428. }
  11429. return returnRows;
  11430. }
  11431. /// <summary>
  11432. /// 更新盘点单
  11433. /// </summary>
  11434. /// <param name="InCheckedID">盘点单号</param>
  11435. /// <param name="BarCode">产品条码</param>
  11436. /// <param name="sUserInfo">用户基本信息</param>
  11437. /// <returns></returns>
  11438. public static int UpdateInChecked(int InCheckedID, string BarCode, SUserInfo sUserInfo)
  11439. {
  11440. int returnRows = 0;
  11441. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11442. try
  11443. {
  11444. // 转换条码
  11445. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  11446. OracleParameter[] paras1 = new OracleParameter[]{
  11447. new OracleParameter(":barcode",OracleDbType.Varchar2, BarCode,ParameterDirection.Input),
  11448. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  11449. };
  11450. BarCode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  11451. string sql = @"select 1 from TP_PM_InProduction where barcode=:barcode";
  11452. OracleParameter[] Paras = new OracleParameter[] {
  11453. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  11454. BarCode,ParameterDirection.Input)
  11455. };
  11456. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11457. if (ds != null && ds.Tables[0].Rows.Count == 0)
  11458. {
  11459. returnRows = -2;//该产品不在生产线
  11460. return returnRows;
  11461. }
  11462. sql = @"select InCheckedFlag,CHECKEDUSERID as Userid from TP_PM_InCheckedDetail where InCheckedID=:InCheckedID and BarCode=:BarCode and Valueflag=1";
  11463. Paras = new OracleParameter[] {
  11464. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11465. InCheckedID,ParameterDirection.Input),
  11466. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  11467. BarCode,ParameterDirection.Input)
  11468. };
  11469. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11470. if (ds != null && ds.Tables[0].Rows.Count == 0)
  11471. {
  11472. sql = @"select InCheckedNo from TP_PM_InChecked where InCheckedID=:InCheckedID";
  11473. Paras = new OracleParameter[] {
  11474. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11475. InCheckedID,ParameterDirection.Input),
  11476. };
  11477. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11478. string InCheckedNo = ds.Tables[0].Rows[0]["InCheckedNo"].ToString();//肯定会有盘点单号,所以就没有加判断
  11479. //在产不在生产线上,属于盘赢
  11480. sql = @"
  11481. insert into TP_PM_InCheckedDetail
  11482. (
  11483. InCheckedID,
  11484. BarCode,
  11485. InCheckedNo,
  11486. ProductionLineID,
  11487. ProductionLineCode,
  11488. ProductionLineName,
  11489. ProcedureID,
  11490. ProcedureTime,
  11491. ProcedureModel,
  11492. ModelType,
  11493. DefectFlag,
  11494. ReworkProcedureID,
  11495. IsPublicBody,
  11496. IsReFire,
  11497. SpecialRepairFlag,
  11498. GoodsLevelID,
  11499. GoodsLevelTypeID,
  11500. GoodsID,
  11501. GoodsCode,
  11502. GoodsName,
  11503. UserID,
  11504. GroutingDailyID,
  11505. GroutingDailyDetailID,
  11506. GroutingDate,
  11507. GroutingLineID,
  11508. GroutingLineCode,
  11509. GroutingLineName,
  11510. GMouldTypeID,
  11511. CanManyTimes,
  11512. GroutingLineDetailID,
  11513. GroutingMouldCode,
  11514. MouldCode,
  11515. GroutingUserID,
  11516. GroutingUserCode,
  11517. GroutingNum,
  11518. Remarks,
  11519. KilnID,
  11520. KilnCode,
  11521. KilnName,
  11522. KilnCarID,
  11523. KilnCarCode,
  11524. KilnCarName,
  11525. KilnCarBatchNo,
  11526. KilnCarPosition,
  11527. AccountID,
  11528. CreateUserID,
  11529. UpdateUserID,
  11530. InCheckedFlag,
  11531. CheckedDate,
  11532. CheckedUserID,
  11533. logoid
  11534. )
  11535. select
  11536. :InCheckedID,
  11537. BarCode,
  11538. :InCheckedNo,
  11539. ProductionLineID,
  11540. ProductionLineCode,
  11541. ProductionLineName,
  11542. ProcedureID,
  11543. ProcedureTime,
  11544. ProcedureModel,
  11545. ModelType,
  11546. DefectFlag,
  11547. ReworkProcedureID,
  11548. IsPublicBody,
  11549. IsReFire,
  11550. SpecialRepairFlag,
  11551. GoodsLevelID,
  11552. GoodsLevelTypeID,
  11553. GoodsID,
  11554. GoodsCode,
  11555. GoodsName,
  11556. UserID,
  11557. GroutingDailyID,
  11558. GroutingDailyDetailID,
  11559. GroutingDate,
  11560. GroutingLineID,
  11561. GroutingLineCode,
  11562. GroutingLineName,
  11563. GMouldTypeID,
  11564. CanManyTimes,
  11565. GroutingLineDetailID,
  11566. GroutingMouldCode,
  11567. MouldCode,
  11568. GroutingUserID,
  11569. GroutingUserCode,
  11570. GroutingNum,
  11571. Remarks,
  11572. KilnID,
  11573. KilnCode,
  11574. KilnName,
  11575. KilnCarID,
  11576. KilnCarCode,
  11577. KilnCarName,
  11578. KilnCarBatchNo,
  11579. KilnCarPosition,
  11580. :AccountID,
  11581. :CreateUserID,
  11582. :UpdateUserID,
  11583. :InCheckedFlag,
  11584. sysdate,
  11585. :CheckedUserID,
  11586. logoid
  11587. from TP_PM_InProduction where 1=1
  11588. ";
  11589. ;
  11590. List<OracleParameter> parameters = new List<OracleParameter>();
  11591. sql += "AND instr(','||:barcode||',',','||TP_PM_InProduction.barcode||',')>0 ";
  11592. parameters.Add(new OracleParameter(":InCheckedID", OracleDbType.Int32, InCheckedID, ParameterDirection.Input));
  11593. parameters.Add(new OracleParameter(":InCheckedNo", OracleDbType.Varchar2, InCheckedNo, ParameterDirection.Input));
  11594. parameters.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, BarCode, ParameterDirection.Input));
  11595. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  11596. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11597. parameters.Add(new OracleParameter(":UpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11598. parameters.Add(new OracleParameter(":InCheckedFlag", OracleDbType.Int32, Constant.InCheckedFlag.InCheckedWin.GetHashCode(), ParameterDirection.Input));
  11599. parameters.Add(new OracleParameter(":CheckedUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11600. returnRows += oracleTrConn.ExecuteNonQuery(sql, parameters.ToArray());
  11601. returnRows = 10;
  11602. }
  11603. else
  11604. {
  11605. int InCheckedFlag = Convert.ToInt32(ds.Tables[0].Rows[0]["InCheckedFlag"]);
  11606. if (InCheckedFlag == 1)
  11607. {
  11608. if (Convert.ToInt32(ds.Tables[0].Rows[0]["Userid"]) != sUserInfo.UserID)
  11609. {
  11610. returnRows = -22;//己被其他工号盘点
  11611. }
  11612. else
  11613. {
  11614. returnRows = -24;//己被自己工号盘点
  11615. }
  11616. return returnRows;
  11617. }
  11618. else if (InCheckedFlag == 2)
  11619. {
  11620. if (Convert.ToInt32(ds.Tables[0].Rows[0]["Userid"]) != sUserInfo.UserID)
  11621. {
  11622. returnRows = -23;//己被其他工号盘盈
  11623. }
  11624. else
  11625. {
  11626. returnRows = -25;//己被自己工号盘盈
  11627. }
  11628. return returnRows;
  11629. }
  11630. sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and BarCode=:BarCode and InCheckedFlag=:whereInCheckedFlag";
  11631. Paras = new OracleParameter[] {
  11632. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  11633. sUserInfo.UserID,ParameterDirection.Input),
  11634. new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
  11635. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  11636. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11637. InCheckedID,ParameterDirection.Input),
  11638. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  11639. BarCode,ParameterDirection.Input),
  11640. new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
  11641. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  11642. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  11643. sUserInfo.UserID,ParameterDirection.Input),
  11644. };
  11645. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11646. returnRows = 1;//防止多次盘点此条码,下面在回滚回来,代码是有作用
  11647. }
  11648. if (returnRows == 0)
  11649. {
  11650. oracleTrConn.Rollback();
  11651. oracleTrConn.Disconnect();
  11652. }
  11653. else
  11654. {
  11655. oracleTrConn.Commit();
  11656. oracleTrConn.Disconnect();
  11657. }
  11658. }
  11659. catch (Exception ex)
  11660. {
  11661. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11662. {
  11663. oracleTrConn.Rollback();
  11664. oracleTrConn.Disconnect();
  11665. }
  11666. throw ex;
  11667. }
  11668. finally
  11669. {
  11670. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11671. {
  11672. oracleTrConn.Disconnect();
  11673. }
  11674. }
  11675. return returnRows;
  11676. }
  11677. /// <summary>
  11678. /// 停用盘点单
  11679. /// </summary>
  11680. /// <param name="InCheckedID">盘点单号</param>
  11681. /// <returns></returns>
  11682. public static int DisableInChecked(int InCheckedID, SUserInfo sUserInfo)
  11683. {
  11684. int returnRows = 0;
  11685. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11686. try
  11687. {
  11688. string sql = "update TP_PM_InChecked set valueflag='0', updateuserid=:updateuserid where InCheckedID=:InCheckedID and valueflag='1'";
  11689. OracleParameter[] Paras = new OracleParameter[] {
  11690. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11691. InCheckedID,ParameterDirection.Input),
  11692. new OracleParameter(":updateuserid",OracleDbType.Int32,
  11693. sUserInfo.UserID,ParameterDirection.Input)
  11694. };
  11695. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11696. if (returnRows == 0)
  11697. {
  11698. oracleTrConn.Rollback();
  11699. oracleTrConn.Disconnect();
  11700. }
  11701. else
  11702. {
  11703. oracleTrConn.Commit();
  11704. oracleTrConn.Disconnect();
  11705. }
  11706. }
  11707. catch (Exception ex)
  11708. {
  11709. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11710. {
  11711. oracleTrConn.Rollback();
  11712. oracleTrConn.Disconnect();
  11713. }
  11714. throw ex;
  11715. }
  11716. finally
  11717. {
  11718. if (oracleTrConn.ConnState == ConnectionState.Open)
  11719. {
  11720. oracleTrConn.Disconnect();
  11721. }
  11722. }
  11723. return returnRows;
  11724. }
  11725. /// <summary>
  11726. /// 撤销包装
  11727. /// </summary>
  11728. /// <param name="barcode">产品条码</param>
  11729. /// <returns></returns>
  11730. public static ServiceResultEntity AddChancelFinishedproduct(string barcode, SUserInfo sUserInfo)
  11731. {
  11732. ServiceResultEntity entity = new ServiceResultEntity();
  11733. int returnRows = 0;
  11734. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11735. try
  11736. {
  11737. //xuwei add 2019-10-15 修正 撤销包装时 副品变正品
  11738. int goodsLevelID;
  11739. int goodsLevelTypeID;
  11740. //xuwei end
  11741. // 转换注浆条码
  11742. barcode = CommonModuleLogic.CommonModuleLogic.GetBarcode(oracleTrConn, barcode, sUserInfo);
  11743. DateTime? createTime = null;
  11744. // 1 条码是否在产成品表中
  11745. string sql = "select createTime,FHUserCode,GoodsCode,GoodsLevelID,GoodsLevelTypeID from tp_pm_finishedproduct where barcode=:barcode and valueflag=1";
  11746. OracleParameter[] Paras = new OracleParameter[] {
  11747. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11748. barcode,ParameterDirection.Input)
  11749. };
  11750. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11751. if (ds.Tables[0].Rows.Count == 0)
  11752. {
  11753. //不存在产成品
  11754. returnRows = -1;
  11755. oracleTrConn.Rollback();
  11756. oracleTrConn.Disconnect();
  11757. entity.Result = returnRows;
  11758. return entity;
  11759. }
  11760. else
  11761. {
  11762. //wangx 2017-02-10 已经交接不允许撤销
  11763. if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0]["FHUserCode"].ToString()))
  11764. {
  11765. entity.Result = -200; //已交接,不能再次进行交接
  11766. entity.Message = "此产品【" + ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "】已交接,不能进行该操作";
  11767. oracleTrConn.Rollback();
  11768. oracleTrConn.Disconnect();
  11769. return entity;
  11770. }
  11771. //wangx 2017-02-10 end
  11772. createTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["createTime"]); // 成品时间
  11773. //xuwei add 2019-10-15 修正 撤销包装时 副品变正品
  11774. goodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  11775. goodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["goodsLevelTypeID"]);
  11776. //xuwei end
  11777. }
  11778. #region 是否启用成品撤销限制天数
  11779. if (createTime != null)
  11780. {
  11781. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  11782. Paras = new OracleParameter[] {
  11783. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  11784. Constant.SettingType.S_PM_005.ToString(),ParameterDirection.Input),
  11785. new OracleParameter(":accountid",OracleDbType.Int32,
  11786. sUserInfo.AccountID,ParameterDirection.Input)
  11787. };
  11788. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11789. if (ds != null && ds.Tables[0].Rows.Count > 0)
  11790. {
  11791. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  11792. {
  11793. // 开启了限制
  11794. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(createTime),
  11795. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_005.ToString(), sUserInfo);
  11796. if (Convert.ToInt32(resultEntity.Result) < 0)
  11797. {
  11798. //超过成品撤销限制天数
  11799. returnRows = -200;
  11800. oracleTrConn.Rollback();
  11801. oracleTrConn.Disconnect();
  11802. entity.Result = returnRows;
  11803. entity.Message = resultEntity.Message;
  11804. return entity;
  11805. }
  11806. }
  11807. }
  11808. }
  11809. #endregion
  11810. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  11811. Paras = new OracleParameter[] {
  11812. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11813. barcode,ParameterDirection.Input)
  11814. };
  11815. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11816. if (ds.Tables[0].Rows.Count == 0)
  11817. {
  11818. // 2 生产数据恢复到在产生产数据 xuwei 不用处理
  11819. sql = @"insert into tp_pm_productiondatain
  11820. (
  11821. ProductionDataID,
  11822. BarCode,
  11823. CentralizedBatchNo,
  11824. ProductionLineID,
  11825. ProductionLineCode,
  11826. ProductionLineName,
  11827. ProcedureID,
  11828. ProcedureCode,
  11829. ProcedureName,
  11830. ProcedureModel,
  11831. ModelType,
  11832. PieceType,
  11833. IsReworked,
  11834. NodeType,
  11835. IsPublicBody,
  11836. IsReFire,
  11837. GoodsLevelID,
  11838. GoodsLevelTypeID,
  11839. SpecialRepairFlag,
  11840. OrganizationID,
  11841. GoodsID,
  11842. GoodsCode,
  11843. GoodsName,
  11844. UserID,
  11845. UserCode,
  11846. UserName,
  11847. ClassesSettingID,
  11848. KilnID,
  11849. KilnCode,
  11850. KilnName,
  11851. KilnCarID,
  11852. KilnCarCode,
  11853. KilnCarName,
  11854. KilnCarBatchNo,
  11855. KilnCarPosition,
  11856. ReworkProcedureID,
  11857. ReworkProcedureCode,
  11858. ReworkProcedureName,
  11859. GroutingDailyID,
  11860. GroutingDailyDetailID,
  11861. GroutingLineID,
  11862. GroutingLineCode,
  11863. GroutingLineName,
  11864. GMouldTypeID,
  11865. CanManyTimes,
  11866. GroutingLineDetailID,
  11867. GroutingDate,
  11868. GroutingMouldCode,
  11869. MouldCode,
  11870. GroutingUserID,
  11871. GroutingUserCode,
  11872. GroutingNum,
  11873. Remarks,
  11874. AccountDate,
  11875. SettlementFlag,
  11876. AccountID,
  11877. ValueFlag,
  11878. CreateTime,
  11879. CreateUserID,
  11880. UpdateTime,
  11881. UpdateUserID,
  11882. OPTimeStamp,
  11883. TriggerFlag,
  11884. LogoID,
  11885. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  11886. )
  11887. select
  11888. ProductionDataID,
  11889. BarCode,
  11890. CentralizedBatchNo,
  11891. ProductionLineID,
  11892. ProductionLineCode,
  11893. ProductionLineName,
  11894. ProcedureID,
  11895. ProcedureCode,
  11896. ProcedureName,
  11897. ProcedureModel,
  11898. ModelType,
  11899. PieceType,
  11900. IsReworked,
  11901. NodeType,
  11902. IsPublicBody,
  11903. IsReFire,
  11904. GoodsLevelID,
  11905. GoodsLevelTypeID,
  11906. SpecialRepairFlag,
  11907. OrganizationID,
  11908. GoodsID,
  11909. GoodsCode,
  11910. GoodsName,
  11911. UserID,
  11912. UserCode,
  11913. UserName,
  11914. ClassesSettingID,
  11915. KilnID,
  11916. KilnCode,
  11917. KilnName,
  11918. KilnCarID,
  11919. KilnCarCode,
  11920. KilnCarName,
  11921. KilnCarBatchNo,
  11922. KilnCarPosition,
  11923. ReworkProcedureID,
  11924. ReworkProcedureCode,
  11925. ReworkProcedureName,
  11926. GroutingDailyID,
  11927. GroutingDailyDetailID,
  11928. GroutingLineID,
  11929. GroutingLineCode,
  11930. GroutingLineName,
  11931. GMouldTypeID,
  11932. CanManyTimes,
  11933. GroutingLineDetailID,
  11934. GroutingDate,
  11935. GroutingMouldCode,
  11936. MouldCode,
  11937. GroutingUserID,
  11938. GroutingUserCode,
  11939. GroutingNum,
  11940. Remarks,
  11941. AccountDate,
  11942. SettlementFlag,
  11943. AccountID,
  11944. ValueFlag,
  11945. CreateTime,
  11946. CreateUserID,
  11947. UpdateTime,
  11948. UpdateUserID,
  11949. OPTimeStamp,
  11950. 1,
  11951. LogoID,
  11952. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  11953. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  11954. ";
  11955. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11956. }
  11957. // 3 停用在产生产数据包装数据
  11958. sql = "update TP_PM_ProductionDataIn set valueflag=0,updateuserID=" + sUserInfo.UserID
  11959. + " where ProductionDataID=(select max(ProductionDataID) from TP_PM_ProductionDataIn where barcode=:barcode and valueflag=1)";
  11960. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11961. // 4 插入在产数据
  11962. //xuwei fix 2019-10-15 修正 撤销包装时 副品变正品
  11963. sql = $@"insert into TP_PM_InProduction
  11964. (
  11965. BarCode,
  11966. ProductionLineID,
  11967. ProductionLineCode,
  11968. ProductionLineName,
  11969. FlowProcedureID,
  11970. FlowProcedureTime,
  11971. ProcedureID,
  11972. ProcedureTime,
  11973. ProductionDataID,
  11974. ProcedureModel,
  11975. ModelType,
  11976. DefectFlag,
  11977. ReworkProcedureID,
  11978. IsPublicBody,
  11979. IsReFire,
  11980. SpecialRepairFlag,
  11981. GoodsLevelID,
  11982. GoodsLevelTypeID,
  11983. GoodsID,
  11984. GoodsCode,
  11985. GoodsName,
  11986. UserID,
  11987. GroutingDailyID,
  11988. GroutingDailyDetailID,
  11989. GroutingDate,
  11990. GroutingLineID,
  11991. GroutingLineCode,
  11992. GroutingLineName,
  11993. GMouldTypeID,
  11994. CanManyTimes,
  11995. GroutingLineDetailID,
  11996. GroutingMouldCode,
  11997. MouldCode,
  11998. GroutingUserID,
  11999. GroutingUserCode,
  12000. GroutingNum,
  12001. Remarks,
  12002. KilnID,
  12003. KilnCode,
  12004. KilnName,
  12005. KilnCarID,
  12006. KilnCarCode,
  12007. KilnCarName,
  12008. KilnCarBatchNo,
  12009. KilnCarPosition,
  12010. AccountID,
  12011. ValueFlag,
  12012. CreateTime,
  12013. CreateUserID,
  12014. UpdateTime,
  12015. UpdateUserID,
  12016. OPTimeStamp,
  12017. LogoID
  12018. )
  12019. select
  12020. BarCode,
  12021. ProductionLineID,
  12022. ProductionLineCode,
  12023. ProductionLineName,
  12024. ProcedureID,
  12025. CreateTime,
  12026. ProcedureID,
  12027. CreateTime,
  12028. ProductionDataID,
  12029. ProcedureModel,
  12030. ModelType,
  12031. 0,
  12032. ReworkProcedureID,
  12033. IsPublicBody,
  12034. IsReFire,
  12035. SpecialRepairFlag,
  12036. {goodsLevelID} AS GoodsLevelID,
  12037. {goodsLevelTypeID} AS GoodsLevelTypeID,
  12038. GoodsID,
  12039. GoodsCode,
  12040. GoodsName,
  12041. UserID,
  12042. GroutingDailyID,
  12043. GroutingDailyDetailID,
  12044. GroutingDate,
  12045. GroutingLineID,
  12046. GroutingLineCode,
  12047. GroutingLineName,
  12048. GMouldTypeID,
  12049. CanManyTimes,
  12050. GroutingLineDetailID,
  12051. GroutingMouldCode,
  12052. MouldCode,
  12053. GroutingUserID,
  12054. GroutingUserCode,
  12055. GroutingNum,
  12056. Remarks,
  12057. KilnID,
  12058. KilnCode,
  12059. KilnName,
  12060. KilnCarID,
  12061. KilnCarCode,
  12062. KilnCarName,
  12063. KilnCarBatchNo,
  12064. KilnCarPosition,
  12065. AccountID,
  12066. ValueFlag,
  12067. CreateTime,
  12068. CreateUserID,
  12069. UpdateTime,
  12070. UpdateUserID,
  12071. OPTimeStamp,
  12072. LogoID
  12073. from TP_PM_ProductionData where TP_PM_ProductionData.ProductionDataID=(select max(ProductionDataID) from TP_PM_ProductionData where barcode=:barcode and valueflag=1)";
  12074. //xuwei end
  12075. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12076. // 5 删除产成品表
  12077. sql = "delete from tp_pm_finishedproduct where barcode=:barcode and valueflag=1";
  12078. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12079. if (returnRows <= 0)
  12080. {
  12081. oracleTrConn.Rollback();
  12082. oracleTrConn.Disconnect();
  12083. }
  12084. else
  12085. {
  12086. oracleTrConn.Commit();
  12087. oracleTrConn.Disconnect();
  12088. }
  12089. }
  12090. catch (Exception ex)
  12091. {
  12092. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12093. {
  12094. oracleTrConn.Rollback();
  12095. oracleTrConn.Disconnect();
  12096. }
  12097. throw ex;
  12098. }
  12099. finally
  12100. {
  12101. if (oracleTrConn.ConnState == ConnectionState.Open)
  12102. {
  12103. oracleTrConn.Disconnect();
  12104. }
  12105. }
  12106. entity.Result = returnRows;
  12107. return entity;
  12108. }
  12109. /// <summary>
  12110. /// 公坯设定
  12111. /// </summary>
  12112. /// <param name="barcode">产品条码</param>
  12113. /// <returns></returns>
  12114. public static int AddPublicBodyProduct(string barcode, SUserInfo sUserInfo)
  12115. {
  12116. int returnRows = 0;
  12117. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12118. try
  12119. {
  12120. // 1 条码是否在在产表中
  12121. string sql = "select ispublicbody from tp_pm_inproduction where barcode=:barcode and valueflag=1";
  12122. OracleParameter[] Paras = new OracleParameter[] {
  12123. new OracleParameter(":barcode",OracleDbType.Varchar2,
  12124. barcode,ParameterDirection.Input)
  12125. };
  12126. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  12127. if (ds.Tables[0].Rows.Count == 0)
  12128. {
  12129. //不存在生产线上,
  12130. returnRows = -1;
  12131. oracleTrConn.Rollback();
  12132. oracleTrConn.Disconnect();
  12133. return returnRows;
  12134. }
  12135. else
  12136. {
  12137. if (ds.Tables[0].Rows[0]["ispublicbody"].ToString() == "1")
  12138. {
  12139. returnRows = -2;
  12140. oracleTrConn.Rollback();
  12141. oracleTrConn.Disconnect();
  12142. return returnRows;
  12143. }
  12144. }
  12145. // 2 TP_PM_GroutingDailyDetail 在产盘点明细
  12146. sql = "update TP_PM_GroutingDailyDetail set ispublicbody=1 where barcode=:barcode";
  12147. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12148. // 3 TP_PM_InCheckedDetail
  12149. sql = "update TP_PM_InCheckedDetail set ispublicbody=1 where barcode=:barcode";
  12150. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12151. // 4 TP_PM_InProduction
  12152. sql = "update TP_PM_InProduction set ispublicbody=1 where barcode=:barcode";
  12153. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12154. // 5 TP_PM_InProductionTrash
  12155. sql = "update TP_PM_InProductionTrash set ispublicbody=1 where barcode=:barcode";
  12156. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12157. // 6 TP_PM_ProductionDataIn
  12158. sql = "update TP_PM_ProductionDataIn set ispublicbody=1 where barcode=:barcode";
  12159. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12160. // 7 TP_PM_ScrapProduct
  12161. sql = "update TP_PM_ScrapProduct set ispublicbody=1 where barcode=:barcode";
  12162. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12163. if (returnRows <= 0)
  12164. {
  12165. oracleTrConn.Rollback();
  12166. oracleTrConn.Disconnect();
  12167. }
  12168. else
  12169. {
  12170. oracleTrConn.Commit();
  12171. oracleTrConn.Disconnect();
  12172. }
  12173. }
  12174. catch (Exception ex)
  12175. {
  12176. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12177. {
  12178. oracleTrConn.Rollback();
  12179. oracleTrConn.Disconnect();
  12180. }
  12181. throw ex;
  12182. }
  12183. finally
  12184. {
  12185. if (oracleTrConn.ConnState == ConnectionState.Open)
  12186. {
  12187. oracleTrConn.Disconnect();
  12188. }
  12189. }
  12190. return returnRows;
  12191. }
  12192. /// <summary>
  12193. /// 交坯保存校验(首节点)
  12194. /// </summary>
  12195. /// <param name="oracleTrConn">连接对象</param>
  12196. /// <param name="procedureID">工序ID</param>
  12197. /// <param name="barcode">条码</param>
  12198. /// <param name="goodsID">返回的产品ID</param>
  12199. /// <param name="goodsCode">返回的产品Code</param>
  12200. /// <param name="goodsName">返回的产品名称</param>
  12201. /// <param name="groutingUserID">返回的注浆者ID</param>
  12202. /// <returns>string</returns>
  12203. /// <remarks>
  12204. /// 陈冰 2014.09.18 新建
  12205. /// </remarks>
  12206. private static string CheckBarcodeDeliverMud(IDBTransaction oracleTrConn,
  12207. int procedureID,
  12208. string barcode,
  12209. out int goodsID,
  12210. out string goodsCode,
  12211. out string goodsName,
  12212. out string groutingUserCode,
  12213. SUserInfo sUserInfo, ref int? GroutingDailyDetailID
  12214. )
  12215. {
  12216. try
  12217. {
  12218. string sql = "select barcodestatus,barcode,GroutingDailyDetailid from TP_PM_USEDBARCODE where barcode=:barcode";
  12219. OracleParameter[] paras = new OracleParameter[]{
  12220. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  12221. };
  12222. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  12223. string ErrorMessage = "";
  12224. if (ds != null && ds.Tables[0].Rows.Count == 0)
  12225. {
  12226. ErrorMessage = "无效条码";
  12227. }
  12228. else
  12229. {
  12230. //不等于空的时候
  12231. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  12232. {
  12233. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + ds.Tables[0].Rows[0]["barcode"].ToString() + "'";
  12234. string newbarcode = oracleTrConn.GetSqlResultToStr(sql);
  12235. ErrorMessage = "条码已被替换,新条码为" + newbarcode;
  12236. }
  12237. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  12238. {
  12239. ErrorMessage = "产品开模时已损坏";
  12240. }
  12241. // 已经交坯
  12242. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" ||
  12243. ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4")
  12244. {
  12245. //ErrorMessage = "产品已交坯";
  12246. ErrorMessage = "产品已在产";
  12247. }
  12248. }
  12249. string sqlString = @"select
  12250. GroutingDailyDetailid,
  12251. GoodsID,
  12252. GoodsCode,
  12253. GoodsName,
  12254. UserCode as GroutingUserCode,
  12255. groutingcount as GroutingNum,
  12256. GroutingMouldCode as MouldCode,
  12257. ispublicbody,
  12258. Groutingdate,
  12259. SpecialRepairFlag
  12260. from
  12261. tp_pm_GroutingDailyDetail
  12262. where tp_pm_GroutingDailyDetail.groutingdailydetailid=:groutingdailydetailid";
  12263. paras = new OracleParameter[]{
  12264. new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  12265. };
  12266. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  12267. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  12268. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  12269. goodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  12270. groutingUserCode = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  12271. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  12272. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  12273. paras = new OracleParameter[]{
  12274. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  12275. new OracleParameter(":ProcedureID",procedureID),
  12276. };
  12277. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sqlExistGoods, paras);
  12278. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  12279. {
  12280. ErrorMessage = @"条码[" + barcode +
  12281. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  12282. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  12283. }
  12284. return ErrorMessage;
  12285. }
  12286. catch (Exception ex)
  12287. {
  12288. throw ex;
  12289. }
  12290. }
  12291. /// <summary>
  12292. /// 标准计件(单点采集)
  12293. /// </summary>
  12294. /// <param name="oracleTrConn">数据连接对象</param>
  12295. /// <param name="procedure">工序对象</param>
  12296. /// <param name="barcodeTable">条码信息</param>
  12297. /// <param name="sUserInfo">用户基本信息</param>
  12298. /// <param name="goodsID">返回的产品ID</param>
  12299. /// <param name="goodsCode">返回的产品Code</param>
  12300. /// <param name="goodsName">返回的产品名称</param>
  12301. /// <param name="groutingUserID">返回的注浆者ID</param>
  12302. /// <returns>string</returns>
  12303. /// <remarks>
  12304. /// 陈冰 2014.09.18 新建
  12305. /// </remarks>
  12306. private static string AddNormalWorkPiece2(IDBTransaction oracleTrConn,
  12307. ProcedureEntity procedure,
  12308. DataTable barcodeTable,
  12309. SUserInfo sUserInfo,
  12310. out int goodsID,
  12311. out string goodsCode,
  12312. out string goodsName,
  12313. out string groutingUserCode)
  12314. {
  12315. try
  12316. {
  12317. goodsID = Constant.INT_IS_ZERO;
  12318. goodsCode = null;
  12319. goodsName = null;
  12320. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  12321. // 获得账务日期
  12322. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  12323. string errMsg = string.Empty;
  12324. // 本批采集的批次号
  12325. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  12326. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  12327. // 条码信息
  12328. foreach (DataRow barcodeRow in barcodeTable.Rows)
  12329. {
  12330. // 条码
  12331. string barcode = barcodeRow["Barcode"].ToString();
  12332. if (string.IsNullOrEmpty(barcode))
  12333. {
  12334. throw new Exception("传入的条码号为空");
  12335. }
  12336. // 生产工号
  12337. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  12338. // 生产工号
  12339. string workUserCode = barcodeRow["UserCode"].ToString();
  12340. //生产数据ID
  12341. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  12342. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  12343. int? GroutingDailyDetailID = null;//注浆明细ID
  12344. if (procedure.CollectType == 1)
  12345. {
  12346. // ccc todo
  12347. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12348. if(procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12349. {
  12350. #region 校验条码有效性
  12351. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  12352. if (!string.IsNullOrEmpty(errMsg))
  12353. {
  12354. return errMsg;
  12355. }
  12356. #endregion
  12357. }
  12358. else
  12359. {
  12360. #region 校验条码有效性
  12361. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  12362. if (!string.IsNullOrEmpty(errMsg))
  12363. {
  12364. return errMsg;
  12365. }
  12366. #endregion
  12367. }
  12368. }
  12369. else
  12370. {
  12371. // string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12372. // tp_pm_groutingdailydetail.goodscode,
  12373. // tp_pm_groutingdailydetail.goodsname,
  12374. // tp_pm_groutingdailydetail.usercode as groutingUserCode
  12375. // from tp_pm_groutingdailydetail where barcode=:barcode
  12376. // ";
  12377. string sqlGroutingInfo = "";
  12378. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12379. // tp_pm_groutingdailydetail.goodscode,
  12380. // tp_pm_groutingdailydetail.goodsname,
  12381. // tp_pm_groutingdailydetail.usercode as groutingUserCode
  12382. // from tp_pm_groutingdailydetail where barcode=:barcode
  12383. // ";
  12384. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  12385. //{
  12386. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12387. tp_pm_groutingdailydetail.goodscode,
  12388. tp_pm_groutingdailydetail.goodsname,
  12389. tp_pm_groutingdailydetail.usercode as groutingUserCode
  12390. from tp_pm_groutingdailydetail where groutingdailydetailid in
  12391. (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  12392. ";
  12393. //}
  12394. OracleParameter[] ReFireparas = new OracleParameter[] {
  12395. new OracleParameter(":barcode",barcode),
  12396. };
  12397. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  12398. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  12399. {
  12400. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  12401. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  12402. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  12403. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  12404. }
  12405. }
  12406. int? ClassesSettingID = null;//班次配置ID
  12407. #region 添加生产者数据
  12408. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12409. {
  12410. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  12411. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  12412. {
  12413. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  12414. }
  12415. else
  12416. {
  12417. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12418. }
  12419. }
  12420. else
  12421. {
  12422. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12423. }
  12424. if (!string.IsNullOrEmpty(errMsg))
  12425. {
  12426. return errMsg;
  12427. }
  12428. #endregion
  12429. #region 添加生产数据
  12430. ProductionDataEntity productionData = new ProductionDataEntity();
  12431. #region 属性赋值
  12432. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  12433. productionData.ClassesSettingID = ClassesSettingID;
  12434. productionData.ProductionDataID = productionDataID;
  12435. productionData.Barcode = barcode;
  12436. productionData.CentralizedBatchNo = centralizedBatchNo;
  12437. productionData.ProductionLineID = procedure.ProductionLineID;
  12438. productionData.ProductionLineCode = procedure.ProductionlineCode;
  12439. productionData.ProductionLineName = procedure.ProductionlineName;
  12440. productionData.CompleteProcedureID = procedure.ProcedureID;
  12441. productionData.ProcedureCode = procedure.ProcedureCode;
  12442. productionData.ProcedureName = procedure.ProcedureName;
  12443. productionData.ProcedureModel = procedure.ProcedureModel;
  12444. productionData.ModelType = procedure.ModelType;
  12445. productionData.NodeType = procedure.NodeType;
  12446. productionData.PieceType = procedure.PieceType;
  12447. if (procedure.IsSpecialRework == 0)
  12448. {
  12449. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12450. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  12451. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  12452. //xuwei 2019-09-18 交坯节点判定 0引用 不做处理
  12453. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  12454. {
  12455. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  12456. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12457. }
  12458. ////// else
  12459. ////// {
  12460. ////// string sqlReFire = @"select
  12461. ////// isrefire
  12462. ////// from tp_pm_inproduction where barcode=:barcode
  12463. ////// ";
  12464. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  12465. ////// new OracleParameter(":barcode",barcode),
  12466. ////// };
  12467. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  12468. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  12469. ////// {
  12470. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  12471. ////// {
  12472. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  12473. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  12474. ////// //{
  12475. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12476. ////// //}
  12477. ////// }
  12478. ////// }
  12479. ////// }
  12480. }
  12481. else
  12482. {
  12483. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12484. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12485. }
  12486. productionData.ReworkProcedureID = null;
  12487. #region 交坯判断
  12488. // 交坯节点
  12489. if (barcodeTable.Columns.Contains("IsPublicBody"))
  12490. {
  12491. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  12492. }
  12493. // 非交坯节点
  12494. else
  12495. {
  12496. // 正常坯
  12497. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  12498. }
  12499. #endregion
  12500. productionData.OrganizationID = procedure.OrganizationID;
  12501. productionData.GoodsID = goodsID;
  12502. productionData.GoodsCode = goodsCode;
  12503. productionData.GoodsName = goodsName;
  12504. productionData.UserID = workUserID;
  12505. productionData.UserCode = barcodeRow["UserCode"].ToString();
  12506. productionData.UserName = barcodeRow["UserName"].ToString();
  12507. #endregion
  12508. string OutSpecialRepairflag = "0";//干补标识
  12509. DataSet outDataSet = null;
  12510. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  12511. //xuwei fix 2019-09-26 使用通用方法判定
  12512. // 2019-1016
  12513. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12514. {
  12515. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  12516. if (isNodeBegin == 0)
  12517. {
  12518. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  12519. }
  12520. }
  12521. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12522. {
  12523. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  12524. }
  12525. else
  12526. {
  12527. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  12528. }
  12529. if (!string.IsNullOrEmpty(errMsg))
  12530. {
  12531. return errMsg;
  12532. }
  12533. #endregion
  12534. #region 开始节点
  12535. //xuwei remove 2019-09-26 此处为重复判定移除
  12536. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  12537. //xuwei fix 2019-09-26 使用通用方法判定
  12538. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  12539. // 2019-1016
  12540. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  12541. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12542. {
  12543. #region 添加在产产品数据
  12544. InProductionEntity addInProductionEntity = new InProductionEntity();
  12545. addInProductionEntity.BarCode = barcode;
  12546. //流程工序ID
  12547. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12548. // 当前工序
  12549. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12550. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  12551. // 工序模型
  12552. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12553. // 工序类别
  12554. addInProductionEntity.ModelType = procedure.ModelType;
  12555. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  12556. addInProductionEntity.ProductionDataID = productionDataID;
  12557. #region 交坯判断
  12558. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12559. #endregion
  12560. // 生产工号
  12561. addInProductionEntity.UserID = workUserID;
  12562. // 执行添加
  12563. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  12564. // 执行失败
  12565. if (!string.IsNullOrEmpty(errMsg))
  12566. {
  12567. return errMsg;
  12568. }
  12569. #endregion
  12570. }
  12571. #endregion
  12572. #region 中间节点
  12573. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  12574. {
  12575. #region 修改在产产品数据的当前工序,清空返工工序字段
  12576. InProductionEntity addInProductionEntity = new InProductionEntity();
  12577. addInProductionEntity.BarCode = barcode;
  12578. //流程工序ID
  12579. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12580. // 当前工序
  12581. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12582. //当前生产数据ID
  12583. addInProductionEntity.ProductionDataID = productionDataID;
  12584. // 工序模型
  12585. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12586. // 工序类别
  12587. addInProductionEntity.ModelType = procedure.ModelType;
  12588. // 生产工号
  12589. addInProductionEntity.UserID = workUserID;
  12590. // 缺陷标识
  12591. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  12592. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  12593. if (procedure.IsSpecialRework == 0)
  12594. {
  12595. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12596. }
  12597. else
  12598. {
  12599. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12600. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12601. }
  12602. #region 交坯判断
  12603. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12604. #endregion
  12605. // 执行修改
  12606. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  12607. // 执行失败
  12608. if (!string.IsNullOrEmpty(errMsg))
  12609. {
  12610. return errMsg;
  12611. }
  12612. #endregion
  12613. }
  12614. #endregion
  12615. #region 结束节点
  12616. else
  12617. {
  12618. #region 添加成品数据 删除在产产品数据
  12619. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  12620. finishedProduct.BarCode = barcode;
  12621. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  12622. if (!string.IsNullOrEmpty(errMsg))
  12623. {
  12624. return errMsg;
  12625. }
  12626. InProductionEntity delInProductionEntity = new InProductionEntity();
  12627. delInProductionEntity.BarCode = barcode;
  12628. // 执行删除 在产数据
  12629. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  12630. // 执行失败
  12631. if (!string.IsNullOrEmpty(errMsg))
  12632. {
  12633. return errMsg;
  12634. }
  12635. #endregion
  12636. }
  12637. #endregion
  12638. }
  12639. return errMsg;
  12640. }
  12641. catch (Exception ex)
  12642. {
  12643. throw ex;
  12644. }
  12645. }
  12646. /// <summary>
  12647. /// 标准计件
  12648. /// </summary>
  12649. /// <param name="oracleTrConn">数据连接对象</param>
  12650. /// <param name="procedure">工序对象</param>
  12651. /// <param name="barcodeTable">条码信息</param>
  12652. /// <param name="sUserInfo">用户基本信息</param>
  12653. /// <param name="goodsID">返回的产品ID</param>
  12654. /// <param name="goodsCode">返回的产品Code</param>
  12655. /// <param name="goodsName">返回的产品名称</param>
  12656. /// <param name="groutingUserID">返回的注浆者ID</param>
  12657. /// <returns>string</returns>
  12658. /// <remarks>
  12659. /// 陈冰 2014.09.18 新建
  12660. /// </remarks>
  12661. private static string AddNormalWorkPieceSinglePoint(IDBTransaction oracleTrConn,
  12662. ProcedureEntity procedure,
  12663. DataTable barcodeTable,
  12664. SUserInfo sUserInfo,
  12665. int goodsID,
  12666. string goodsCode,
  12667. string goodsName,
  12668. string groutingUserCode,
  12669. int? arvGroutingDailyDetailID,
  12670. bool isSendBody = false)
  12671. {
  12672. try
  12673. {
  12674. //goodsID = Constant.INT_IS_ZERO;
  12675. //goodsCode = null;
  12676. //goodsName = null;
  12677. //groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  12678. // 获得账务日期
  12679. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  12680. string errMsg = string.Empty;
  12681. // 本批采集的批次号
  12682. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  12683. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  12684. // 条码信息
  12685. foreach (DataRow barcodeRow in barcodeTable.Rows)
  12686. {
  12687. // 条码
  12688. string barcode = barcodeRow["Barcode"].ToString();
  12689. if (string.IsNullOrEmpty(barcode))
  12690. {
  12691. throw new Exception("传入的条码号为空");
  12692. }
  12693. // 生产工号
  12694. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  12695. // 生产工号
  12696. string workUserCode = barcodeRow["UserCode"].ToString();
  12697. //生产数据ID
  12698. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  12699. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  12700. int? GroutingDailyDetailID = arvGroutingDailyDetailID;//注浆明细ID
  12701. if (procedure.CollectType == 1)
  12702. {
  12703. // ccc todo
  12704. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12705. if(procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12706. {
  12707. #region 校验条码有效性
  12708. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  12709. if (!string.IsNullOrEmpty(errMsg))
  12710. {
  12711. return errMsg;
  12712. }
  12713. #endregion
  12714. }
  12715. else
  12716. {
  12717. #region 校验条码有效性
  12718. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  12719. if (!string.IsNullOrEmpty(errMsg))
  12720. {
  12721. return errMsg;
  12722. }
  12723. #endregion
  12724. }
  12725. }
  12726. else
  12727. {
  12728. // string sqlGroutingInfo = "";
  12729. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12730. // tp_pm_groutingdailydetail.goodscode,
  12731. // tp_pm_groutingdailydetail.goodsname,
  12732. // tp_pm_groutingdailydetail.usercode as groutingUserCode,
  12733. // tp_pm_groutingdailydetail.GroutingDailyDetailID
  12734. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  12735. // (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  12736. // ";
  12737. // OracleParameter[] ReFireparas = new OracleParameter[] {
  12738. // new OracleParameter(":barcode",barcode),
  12739. // };
  12740. // DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  12741. // if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  12742. // {
  12743. // GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  12744. // goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  12745. // goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  12746. // goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  12747. // groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  12748. // }
  12749. }
  12750. int? ClassesSettingID = null;//班次配置ID
  12751. #region 添加生产者数据
  12752. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12753. {
  12754. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  12755. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  12756. {
  12757. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  12758. }
  12759. else
  12760. {
  12761. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12762. }
  12763. }
  12764. else
  12765. {
  12766. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12767. }
  12768. if (!string.IsNullOrEmpty(errMsg))
  12769. {
  12770. return errMsg;
  12771. }
  12772. #endregion
  12773. #region 添加生产数据
  12774. ProductionDataEntity productionData = new ProductionDataEntity();
  12775. if (barcodeTable.Columns.Contains("Remarks"))
  12776. {
  12777. productionData.Remarks = barcodeRow["Remarks"] + "";
  12778. }
  12779. #region 属性赋值
  12780. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  12781. productionData.ClassesSettingID = ClassesSettingID;
  12782. productionData.ProductionDataID = productionDataID;
  12783. productionData.Barcode = barcode;
  12784. productionData.CentralizedBatchNo = centralizedBatchNo;
  12785. productionData.ProductionLineID = procedure.ProductionLineID;
  12786. productionData.ProductionLineCode = procedure.ProductionlineCode;
  12787. productionData.ProductionLineName = procedure.ProductionlineName;
  12788. productionData.CompleteProcedureID = procedure.ProcedureID;
  12789. productionData.ProcedureCode = procedure.ProcedureCode;
  12790. productionData.ProcedureName = procedure.ProcedureName;
  12791. productionData.ProcedureModel = procedure.ProcedureModel;
  12792. productionData.ModelType = procedure.ModelType;
  12793. productionData.NodeType = procedure.NodeType;
  12794. productionData.PieceType = procedure.PieceType;
  12795. if (barcodeRow["LogoID"].ToString() != "")
  12796. {
  12797. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  12798. }
  12799. if (procedure.IsSpecialRework == 0)
  12800. {
  12801. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12802. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  12803. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  12804. //xuwei fix 2019-09-18 交坯节点判定修改
  12805. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  12806. if (isSendBody)//是交坯节点,肯定不会是重烧
  12807. {
  12808. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  12809. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12810. }
  12811. ////// else
  12812. ////// {
  12813. ////// string sqlReFire = @"select
  12814. ////// isrefire
  12815. ////// from tp_pm_inproduction where barcode=:barcode
  12816. ////// ";
  12817. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  12818. ////// new OracleParameter(":barcode",barcode),
  12819. ////// };
  12820. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  12821. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  12822. ////// {
  12823. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  12824. ////// {
  12825. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  12826. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  12827. ////// //{
  12828. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12829. ////// //}
  12830. ////// }
  12831. ////// }
  12832. ////// }
  12833. }
  12834. else
  12835. {
  12836. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12837. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12838. }
  12839. productionData.ReworkProcedureID = null;
  12840. #region 交坯判断
  12841. // 交坯节点
  12842. if (barcodeTable.Columns.Contains("IsPublicBody"))
  12843. {
  12844. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  12845. }
  12846. // 非交坯节点
  12847. else
  12848. {
  12849. // 正常坯
  12850. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  12851. }
  12852. #endregion
  12853. productionData.OrganizationID = procedure.OrganizationID;
  12854. productionData.GoodsID = goodsID;
  12855. productionData.GoodsCode = goodsCode;
  12856. productionData.GoodsName = goodsName;
  12857. productionData.UserID = workUserID;
  12858. productionData.UserCode = barcodeRow["UserCode"].ToString();
  12859. productionData.UserName = barcodeRow["UserName"].ToString();
  12860. #endregion
  12861. string OutSpecialRepairflag = "0";//干补标识
  12862. DataSet outDataSet = null;
  12863. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  12864. //xuwei fix 2019-09-26 使用通用方法判定
  12865. // 2019-1016
  12866. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  12867. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  12868. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12869. {
  12870. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  12871. if (isNodeBegin == 0)
  12872. {
  12873. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  12874. }
  12875. }
  12876. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12877. {
  12878. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  12879. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet, isSendBody);
  12880. }
  12881. else
  12882. {
  12883. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  12884. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, isSendBody);
  12885. }
  12886. if (!string.IsNullOrEmpty(errMsg))
  12887. {
  12888. return errMsg;
  12889. }
  12890. #endregion
  12891. #region 开始节点
  12892. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12893. {
  12894. #region 添加在产产品数据
  12895. InProductionEntity addInProductionEntity = new InProductionEntity();
  12896. addInProductionEntity.BarCode = barcode;
  12897. //流程工序ID
  12898. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12899. // 当前工序
  12900. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12901. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  12902. // 工序模型
  12903. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12904. // 工序类别
  12905. addInProductionEntity.ModelType = procedure.ModelType;
  12906. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  12907. addInProductionEntity.ProductionDataID = productionDataID;
  12908. #region 交坯判断
  12909. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12910. #endregion
  12911. // 生产工号
  12912. addInProductionEntity.UserID = workUserID;
  12913. // 执行添加
  12914. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  12915. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet, isSendBody);
  12916. // 执行失败
  12917. if (!string.IsNullOrEmpty(errMsg))
  12918. {
  12919. return errMsg;
  12920. }
  12921. #endregion
  12922. }
  12923. #endregion
  12924. #region 中间节点
  12925. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  12926. {
  12927. #region 修改在产产品数据的当前工序,清空返工工序字段
  12928. InProductionEntity addInProductionEntity = new InProductionEntity();
  12929. addInProductionEntity.BarCode = barcode;
  12930. //流程工序ID
  12931. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12932. // 当前工序
  12933. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12934. //当前生产数据ID
  12935. addInProductionEntity.ProductionDataID = productionDataID;
  12936. // 工序模型
  12937. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12938. // 工序类别
  12939. addInProductionEntity.ModelType = procedure.ModelType;
  12940. // 生产工号
  12941. addInProductionEntity.UserID = workUserID;
  12942. // 缺陷标识
  12943. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  12944. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  12945. if (procedure.IsSpecialRework == 0)
  12946. {
  12947. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12948. }
  12949. else
  12950. {
  12951. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12952. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12953. }
  12954. addInProductionEntity.LogoID = productionData.LogoID == 0 ? null : productionData.LogoID;
  12955. #region 交坯判断
  12956. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12957. #endregion
  12958. // 执行修改
  12959. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  12960. // 执行失败
  12961. if (!string.IsNullOrEmpty(errMsg))
  12962. {
  12963. return errMsg;
  12964. }
  12965. #endregion
  12966. }
  12967. #endregion
  12968. #region 结束节点
  12969. else
  12970. {
  12971. #region 添加成品数据 删除在产产品数据
  12972. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  12973. finishedProduct.BarCode = barcode;
  12974. finishedProduct.LogoID = productionData.LogoID;
  12975. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  12976. if (!string.IsNullOrEmpty(errMsg))
  12977. {
  12978. return errMsg;
  12979. }
  12980. InProductionEntity delInProductionEntity = new InProductionEntity();
  12981. delInProductionEntity.BarCode = barcode;
  12982. // 执行删除 在产数据
  12983. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  12984. // 执行失败
  12985. if (!string.IsNullOrEmpty(errMsg))
  12986. {
  12987. return errMsg;
  12988. }
  12989. #endregion
  12990. }
  12991. #endregion
  12992. }
  12993. return errMsg;
  12994. }
  12995. catch (Exception ex)
  12996. {
  12997. throw ex;
  12998. }
  12999. }
  13000. /// <summary>
  13001. /// 清除在产残留数据(清除选择)
  13002. /// </summary>
  13003. /// <param name="barcodes">产品条码集</param>
  13004. /// <returns></returns>
  13005. public static int SaveClearInproduction(string barcodes, SUserInfo sUserInfo)
  13006. {
  13007. int returnRows = 0;
  13008. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13009. try
  13010. {
  13011. string sql = "";
  13012. string[] subbarcode = barcodes.Split(',');
  13013. OracleParameter[] Paras = null;
  13014. for (int i = 0; i < subbarcode.Length; i++)
  13015. {
  13016. // 0.登窑、入窑、出窑工序的产品不能清除
  13017. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  13018. Paras = new OracleParameter[] {
  13019. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13020. subbarcode[i],ParameterDirection.Input)
  13021. };
  13022. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  13023. if (!string.IsNullOrWhiteSpace(modeltype))
  13024. {
  13025. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  13026. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  13027. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  13028. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  13029. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln)
  13030. {
  13031. continue;
  13032. }
  13033. }
  13034. // 返工标识或者是报损标识不允许清除 2016-07-12
  13035. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  13036. Paras = new OracleParameter[] {
  13037. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13038. subbarcode[i],ParameterDirection.Input)
  13039. };
  13040. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13041. if (ds != null && ds.Tables[0].Rows.Count > 0)
  13042. {
  13043. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  13044. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  13045. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  13046. {
  13047. returnRows = -1;
  13048. break;
  13049. }
  13050. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  13051. {
  13052. returnRows = -2;
  13053. break;
  13054. }
  13055. }
  13056. // 返工标识或者是报损标识不允许清除 end
  13057. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13058. sql = @"insert into tp_pm_inproduction_tmp
  13059. (
  13060. BARCODE,
  13061. PRODUCTIONLINEID,
  13062. PRODUCTIONLINECODE,
  13063. PRODUCTIONLINENAME,
  13064. PROCEDUREMODEL,
  13065. MODELTYPE,
  13066. REWORKPROCEDUREID,
  13067. ISPUBLICBODY,
  13068. GOODSID,
  13069. GOODSCODE,
  13070. GOODSNAME,
  13071. USERID,
  13072. GROUTINGDAILYID,
  13073. GROUTINGDAILYDETAILID,
  13074. GROUTINGDATE,
  13075. GROUTINGLINEID,
  13076. GROUTINGLINECODE,
  13077. GROUTINGLINENAME,
  13078. GMOULDTYPEID,
  13079. CANMANYTIMES,
  13080. GROUTINGLINEDETAILID,
  13081. GROUTINGMOULDCODE,
  13082. MOULDCODE,
  13083. REMARKS,
  13084. ACCOUNTID,
  13085. VALUEFLAG,
  13086. CREATETIME,
  13087. CREATEUSERID,
  13088. UPDATETIME,
  13089. UPDATEUSERID,
  13090. OPTIMESTAMP,
  13091. ISREFIRE,
  13092. GOODSLEVELID,
  13093. GOODSLEVELTYPEID,
  13094. DEFECTFLAG,
  13095. GROUTINGUSERID,
  13096. GROUTINGUSERCODE,
  13097. GROUTINGNUM,
  13098. KILNID,
  13099. KILNCODE,
  13100. KILNNAME,
  13101. KILNCARID,
  13102. KILNCARCODE,
  13103. KILNCARNAME,
  13104. KILNCARBATCHNO,
  13105. KILNCARPOSITION,
  13106. SPECIALREPAIRFLAG,
  13107. FLOWPROCEDUREID,
  13108. FLOWPROCEDURETIME,
  13109. PROCEDUREID,
  13110. PROCEDURETIME,
  13111. PRODUCTIONDATAID,
  13112. trashflag,
  13113. Deletedtime,
  13114. logoid,
  13115. IsReworkFlag,
  13116. SemiCheckID,
  13117. DELETEDUSERID,
  13118. DELETEDUSERCODE
  13119. )
  13120. select
  13121. BARCODE,
  13122. PRODUCTIONLINEID,
  13123. PRODUCTIONLINECODE,
  13124. PRODUCTIONLINENAME,
  13125. PROCEDUREMODEL,
  13126. MODELTYPE,
  13127. REWORKPROCEDUREID,
  13128. ISPUBLICBODY,
  13129. GOODSID,
  13130. GOODSCODE,
  13131. GOODSNAME,
  13132. USERID,
  13133. GROUTINGDAILYID,
  13134. GROUTINGDAILYDETAILID,
  13135. GROUTINGDATE,
  13136. GROUTINGLINEID,
  13137. GROUTINGLINECODE,
  13138. GROUTINGLINENAME,
  13139. GMOULDTYPEID,
  13140. CANMANYTIMES,
  13141. GROUTINGLINEDETAILID,
  13142. GROUTINGMOULDCODE,
  13143. MOULDCODE,
  13144. REMARKS,
  13145. ACCOUNTID,
  13146. VALUEFLAG,
  13147. CREATETIME,
  13148. CREATEUSERID,
  13149. UPDATETIME,
  13150. UPDATEUSERID,
  13151. OPTIMESTAMP,
  13152. ISREFIRE,
  13153. GOODSLEVELID,
  13154. GOODSLEVELTYPEID,
  13155. DEFECTFLAG,
  13156. GROUTINGUSERID,
  13157. GROUTINGUSERCODE,
  13158. GROUTINGNUM,
  13159. KILNID,
  13160. KILNCODE,
  13161. KILNNAME,
  13162. KILNCARID,
  13163. KILNCARCODE,
  13164. KILNCARNAME,
  13165. KILNCARBATCHNO,
  13166. KILNCARPOSITION,
  13167. SPECIALREPAIRFLAG,
  13168. FLOWPROCEDUREID,
  13169. FLOWPROCEDURETIME,
  13170. PROCEDUREID,
  13171. PROCEDURETIME,
  13172. PRODUCTIONDATAID,
  13173. INSCRAPFLAG,
  13174. sysdate,
  13175. logoid,
  13176. IsReworkFlag,
  13177. SemiCheckID,
  13178. " + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  13179. "' from tp_pm_inproduction p where p.barcode = :barcode";
  13180. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13181. //删除在产数据
  13182. sql = "delete from tp_pm_inproduction p where p.barcode =:barcode";
  13183. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13184. //删除在产生产数据
  13185. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  13186. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13187. }
  13188. if (returnRows <= 0)
  13189. {
  13190. oracleTrConn.Rollback();
  13191. oracleTrConn.Disconnect();
  13192. }
  13193. else
  13194. {
  13195. oracleTrConn.Commit();
  13196. oracleTrConn.Disconnect();
  13197. }
  13198. }
  13199. catch (Exception ex)
  13200. {
  13201. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13202. {
  13203. oracleTrConn.Rollback();
  13204. oracleTrConn.Disconnect();
  13205. }
  13206. throw ex;
  13207. }
  13208. finally
  13209. {
  13210. if (oracleTrConn.ConnState == ConnectionState.Open)
  13211. {
  13212. oracleTrConn.Disconnect();
  13213. }
  13214. }
  13215. return returnRows;
  13216. }
  13217. #region 清除在产残留数据(批量)
  13218. /// <summary>
  13219. /// 清除在产残留数据(批量清除)
  13220. /// </summary>
  13221. /// <param name="barcodes">产品条码集</param>
  13222. /// <returns></returns>
  13223. public static int SaveClearAllInproduction(SUserInfo user, RPT010401_SE se)
  13224. {
  13225. int returnRows = 0;
  13226. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13227. try
  13228. {
  13229. List<OracleParameter> parameters = new List<OracleParameter>();
  13230. StringBuilder sql = new StringBuilder(GetClearInproductionData(user.AccountID));
  13231. if (se != null)
  13232. {
  13233. //生产线IDS
  13234. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  13235. {
  13236. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction.ProductionLineID||',')>0 ");
  13237. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  13238. }
  13239. //完成工序IDS
  13240. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  13241. {
  13242. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ");
  13243. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  13244. }
  13245. // 生产时间--开始
  13246. if (se.UpdateTimeStart.HasValue)
  13247. {
  13248. sql.Append(" AND TP_PM_InProduction.Proceduretime >= :UpdateTimeStart ");
  13249. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  13250. }
  13251. // 生产时间--结束
  13252. if (se.UpdateTimeEnd.HasValue)
  13253. {
  13254. sql.Append(" AND TP_PM_InProduction.Proceduretime <= :UpdateTimeEnd ");
  13255. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  13256. }
  13257. // 是否清除报损待审产品
  13258. if (se.inscrapflag == 0)
  13259. {
  13260. sql.Append(" AND TP_PM_InProduction.inscrapflag=0 ");
  13261. }
  13262. else
  13263. {
  13264. sql.Append(" AND TP_PM_InProduction.inscrapflag in (0,1) ");
  13265. }
  13266. // 是否清除返工产品
  13267. if (se.IsReworkFlag == 0)
  13268. {
  13269. sql.Append(" AND TP_PM_InProduction.IsReworkFlag=0 ");
  13270. }
  13271. else
  13272. {
  13273. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  13274. //sql.Append(" AND TP_PM_InProduction.IsReworkFlag in (0,1) ");
  13275. }
  13276. }
  13277. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13278. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  13279. (
  13280. BARCODE,
  13281. PRODUCTIONLINEID,
  13282. PRODUCTIONLINECODE,
  13283. PRODUCTIONLINENAME,
  13284. PROCEDUREMODEL,
  13285. MODELTYPE,
  13286. REWORKPROCEDUREID,
  13287. ISPUBLICBODY,
  13288. GOODSID,
  13289. GOODSCODE,
  13290. GOODSNAME,
  13291. USERID,
  13292. GROUTINGDAILYID,
  13293. GROUTINGDAILYDETAILID,
  13294. GROUTINGDATE,
  13295. GROUTINGLINEID,
  13296. GROUTINGLINECODE,
  13297. GROUTINGLINENAME,
  13298. GMOULDTYPEID,
  13299. CANMANYTIMES,
  13300. GROUTINGLINEDETAILID,
  13301. GROUTINGMOULDCODE,
  13302. MOULDCODE,
  13303. REMARKS,
  13304. ACCOUNTID,
  13305. VALUEFLAG,
  13306. CREATETIME,
  13307. CREATEUSERID,
  13308. UPDATETIME,
  13309. UPDATEUSERID,
  13310. OPTIMESTAMP,
  13311. ISREFIRE,
  13312. GOODSLEVELID,
  13313. GOODSLEVELTYPEID,
  13314. DEFECTFLAG,
  13315. GROUTINGUSERID,
  13316. GROUTINGUSERCODE,
  13317. GROUTINGNUM,
  13318. KILNID,
  13319. KILNCODE,
  13320. KILNNAME,
  13321. KILNCARID,
  13322. KILNCARCODE,
  13323. KILNCARNAME,
  13324. KILNCARBATCHNO,
  13325. KILNCARPOSITION,
  13326. SPECIALREPAIRFLAG,
  13327. FLOWPROCEDUREID,
  13328. FLOWPROCEDURETIME,
  13329. PROCEDUREID,
  13330. PROCEDURETIME,
  13331. PRODUCTIONDATAID,
  13332. trashflag,
  13333. Deletedtime,
  13334. logoid,
  13335. IsReworkFlag,
  13336. SemiCheckID,
  13337. DELETEDUSERID,
  13338. DELETEDUSERCODE
  13339. )
  13340. select
  13341. BARCODE,
  13342. PRODUCTIONLINEID,
  13343. PRODUCTIONLINECODE,
  13344. PRODUCTIONLINENAME,
  13345. PROCEDUREMODEL,
  13346. MODELTYPE,
  13347. REWORKPROCEDUREID,
  13348. ISPUBLICBODY,
  13349. GOODSID,
  13350. GOODSCODE,
  13351. GOODSNAME,
  13352. USERID,
  13353. GROUTINGDAILYID,
  13354. GROUTINGDAILYDETAILID,
  13355. GROUTINGDATE,
  13356. GROUTINGLINEID,
  13357. GROUTINGLINECODE,
  13358. GROUTINGLINENAME,
  13359. GMOULDTYPEID,
  13360. CANMANYTIMES,
  13361. GROUTINGLINEDETAILID,
  13362. GROUTINGMOULDCODE,
  13363. MOULDCODE,
  13364. REMARKS,
  13365. ACCOUNTID,
  13366. VALUEFLAG,
  13367. CREATETIME,
  13368. CREATEUSERID,
  13369. UPDATETIME,
  13370. UPDATEUSERID,
  13371. OPTIMESTAMP,
  13372. ISREFIRE,
  13373. GOODSLEVELID,
  13374. GOODSLEVELTYPEID,
  13375. DEFECTFLAG,
  13376. GROUTINGUSERID,
  13377. GROUTINGUSERCODE,
  13378. GROUTINGNUM,
  13379. KILNID,
  13380. KILNCODE,
  13381. KILNNAME,
  13382. KILNCARID,
  13383. KILNCARCODE,
  13384. KILNCARNAME,
  13385. KILNCARBATCHNO,
  13386. KILNCARPOSITION,
  13387. SPECIALREPAIRFLAG,
  13388. FLOWPROCEDUREID,
  13389. FLOWPROCEDURETIME,
  13390. PROCEDUREID,
  13391. PROCEDURETIME,
  13392. PRODUCTIONDATAID,
  13393. INSCRAPFLAG,
  13394. sysdate,
  13395. logoid,
  13396. IsReworkFlag,
  13397. SemiCheckID,"
  13398. + user.UserID + ",'" + user.UserCode +
  13399. "' from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  13400. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13401. //删除在产数据
  13402. updatsql1 = "delete from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  13403. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13404. //删除在产生产数据
  13405. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  13406. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13407. if (returnRows == 0)
  13408. {
  13409. oracleTrConn.Rollback();
  13410. oracleTrConn.Disconnect();
  13411. }
  13412. else
  13413. {
  13414. oracleTrConn.Commit();
  13415. oracleTrConn.Disconnect();
  13416. }
  13417. }
  13418. catch (Exception ex)
  13419. {
  13420. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13421. {
  13422. oracleTrConn.Rollback();
  13423. oracleTrConn.Disconnect();
  13424. }
  13425. throw ex;
  13426. }
  13427. return returnRows;
  13428. }
  13429. /// <summary>
  13430. /// 获取批量数据
  13431. /// </summary>
  13432. /// <returns></returns>
  13433. private static string GetClearInproductionData(int accountid)
  13434. {
  13435. string selSql =
  13436. "SELECT " +
  13437. " TP_PM_InProduction.BarCode " +
  13438. " FROM TP_PM_InProduction " +
  13439. " Where TP_PM_InProduction.ValueFlag = '1' " +
  13440. " and TP_PM_InProduction.modeltype not in (1,2,3)" +
  13441. " and TP_PM_InProduction.AccountID= " + accountid;
  13442. return selSql;
  13443. }
  13444. #endregion
  13445. #region
  13446. /// <summary>
  13447. /// 清除在产加收站残留数据(清除选择)
  13448. /// </summary>
  13449. /// <param name="barcodes">产品条码集</param>
  13450. /// <returns></returns>
  13451. public static int SaveClearInproductionTrash(string barcodes, SUserInfo user)
  13452. {
  13453. int returnRows = 0;
  13454. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13455. try
  13456. {
  13457. string sql = "";
  13458. string[] subbarcode = barcodes.Split(',');
  13459. OracleParameter[] Paras = null;
  13460. for (int i = 0; i < subbarcode.Length; i++)
  13461. {
  13462. Paras = new OracleParameter[] {
  13463. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13464. subbarcode[i],ParameterDirection.Input)
  13465. };
  13466. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13467. sql = @"insert into tp_pm_inproduction_tmp
  13468. (
  13469. BARCODE,
  13470. PRODUCTIONLINEID,
  13471. PRODUCTIONLINECODE,
  13472. PRODUCTIONLINENAME,
  13473. PROCEDUREMODEL,
  13474. MODELTYPE,
  13475. REWORKPROCEDUREID,
  13476. ISPUBLICBODY,
  13477. GOODSID,
  13478. GOODSCODE,
  13479. GOODSNAME,
  13480. USERID,
  13481. GROUTINGDAILYID,
  13482. GROUTINGDAILYDETAILID,
  13483. GROUTINGDATE,
  13484. GROUTINGLINEID,
  13485. GROUTINGLINECODE,
  13486. GROUTINGLINENAME,
  13487. GMOULDTYPEID,
  13488. CANMANYTIMES,
  13489. GROUTINGLINEDETAILID,
  13490. GROUTINGMOULDCODE,
  13491. MOULDCODE,
  13492. REMARKS,
  13493. ACCOUNTID,
  13494. VALUEFLAG,
  13495. CREATETIME,
  13496. CREATEUSERID,
  13497. UPDATETIME,
  13498. UPDATEUSERID,
  13499. OPTIMESTAMP,
  13500. ISREFIRE,
  13501. GOODSLEVELID,
  13502. GOODSLEVELTYPEID,
  13503. DEFECTFLAG,
  13504. GROUTINGUSERID,
  13505. GROUTINGUSERCODE,
  13506. GROUTINGNUM,
  13507. KILNID,
  13508. KILNCODE,
  13509. KILNNAME,
  13510. KILNCARID,
  13511. KILNCARCODE,
  13512. KILNCARNAME,
  13513. KILNCARBATCHNO,
  13514. KILNCARPOSITION,
  13515. SPECIALREPAIRFLAG,
  13516. FLOWPROCEDUREID,
  13517. FLOWPROCEDURETIME,
  13518. PROCEDUREID,
  13519. PROCEDURETIME,
  13520. PRODUCTIONDATAID,
  13521. trashflag,
  13522. Deletedtime,
  13523. logoid,
  13524. IsReworkFlag,
  13525. SemiCheckID,
  13526. DELETEDUSERID,
  13527. DELETEDUSERCODE
  13528. )
  13529. select
  13530. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13531. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13532. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13533. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13534. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13535. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13536. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13537. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13538. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13539. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13540. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13541. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13542. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  13543. + user.UserID + ",'" + user.UserCode +
  13544. "' from TP_PM_InProductionTrash p where p.barcode = :barcode";
  13545. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13546. //删除在产回收站数据
  13547. sql = "delete from TP_PM_InProductionTrash p where p.barcode =:barcode";
  13548. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13549. //删除在产生产数据
  13550. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  13551. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13552. }
  13553. if (returnRows == 0)
  13554. {
  13555. oracleTrConn.Rollback();
  13556. oracleTrConn.Disconnect();
  13557. }
  13558. else
  13559. {
  13560. oracleTrConn.Commit();
  13561. oracleTrConn.Disconnect();
  13562. }
  13563. }
  13564. catch (Exception ex)
  13565. {
  13566. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13567. {
  13568. oracleTrConn.Rollback();
  13569. oracleTrConn.Disconnect();
  13570. }
  13571. throw ex;
  13572. }
  13573. finally
  13574. {
  13575. if (oracleTrConn.ConnState == ConnectionState.Open)
  13576. {
  13577. oracleTrConn.Disconnect();
  13578. }
  13579. }
  13580. return returnRows;
  13581. }
  13582. #endregion
  13583. #region 清除在产回收站残留数据(批量)
  13584. /// <summary>
  13585. /// 清除在产残留数据(批量清除)
  13586. /// </summary>
  13587. /// <param name="barcodes">产品条码集</param>
  13588. /// <returns></returns>
  13589. public static int SaveClearAllInproductionTrash(SUserInfo user, FPM2110_SE se)
  13590. {
  13591. int returnRows = 0;
  13592. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13593. try
  13594. {
  13595. List<OracleParameter> parameters = new List<OracleParameter>();
  13596. StringBuilder sql = new StringBuilder(GetClearInproductionTrashData(user.AccountID));
  13597. if (se != null)
  13598. {
  13599. //生产线IDS
  13600. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  13601. {
  13602. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProductionTrash.ProductionLineID||',')>0 ");
  13603. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  13604. }
  13605. //完成工序IDS
  13606. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  13607. {
  13608. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProductionTrash.ProcedureID||',')>0 ");
  13609. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  13610. }
  13611. // 生产时间--开始
  13612. if (se.UpdateTimeStart.HasValue)
  13613. {
  13614. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime >= :UpdateTimeStart ");
  13615. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  13616. }
  13617. // 生产时间--结束
  13618. if (se.UpdateTimeEnd.HasValue)
  13619. {
  13620. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime <= :UpdateTimeEnd ");
  13621. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  13622. }
  13623. //报废日期开始
  13624. if (se.ScrapDataStart.HasValue)
  13625. {
  13626. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  13627. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  13628. }
  13629. //报废日期结束
  13630. if (se.ScrapDataEnd.HasValue)
  13631. {
  13632. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  13633. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  13634. }
  13635. // 产品分级
  13636. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  13637. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  13638. }
  13639. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13640. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  13641. (
  13642. BARCODE,
  13643. PRODUCTIONLINEID,
  13644. PRODUCTIONLINECODE,
  13645. PRODUCTIONLINENAME,
  13646. PROCEDUREMODEL,
  13647. MODELTYPE,
  13648. REWORKPROCEDUREID,
  13649. ISPUBLICBODY,
  13650. GOODSID,
  13651. GOODSCODE,
  13652. GOODSNAME,
  13653. USERID,
  13654. GROUTINGDAILYID,
  13655. GROUTINGDAILYDETAILID,
  13656. GROUTINGDATE,
  13657. GROUTINGLINEID,
  13658. GROUTINGLINECODE,
  13659. GROUTINGLINENAME,
  13660. GMOULDTYPEID,
  13661. CANMANYTIMES,
  13662. GROUTINGLINEDETAILID,
  13663. GROUTINGMOULDCODE,
  13664. MOULDCODE,
  13665. REMARKS,
  13666. ACCOUNTID,
  13667. VALUEFLAG,
  13668. CREATETIME,
  13669. CREATEUSERID,
  13670. UPDATETIME,
  13671. UPDATEUSERID,
  13672. OPTIMESTAMP,
  13673. ISREFIRE,
  13674. GOODSLEVELID,
  13675. GOODSLEVELTYPEID,
  13676. DEFECTFLAG,
  13677. GROUTINGUSERID,
  13678. GROUTINGUSERCODE,
  13679. GROUTINGNUM,
  13680. KILNID,
  13681. KILNCODE,
  13682. KILNNAME,
  13683. KILNCARID,
  13684. KILNCARCODE,
  13685. KILNCARNAME,
  13686. KILNCARBATCHNO,
  13687. KILNCARPOSITION,
  13688. SPECIALREPAIRFLAG,
  13689. FLOWPROCEDUREID,
  13690. FLOWPROCEDURETIME,
  13691. PROCEDUREID,
  13692. PROCEDURETIME,
  13693. PRODUCTIONDATAID,
  13694. trashflag,
  13695. Deletedtime,
  13696. logoid,
  13697. IsReworkFlag,
  13698. SemiCheckID,
  13699. DELETEDUSERID,
  13700. DELETEDUSERCODE
  13701. )
  13702. select
  13703. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13704. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13705. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13706. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13707. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13708. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13709. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13710. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13711. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13712. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13713. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13714. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13715. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  13716. + user.UserID + ",'" + user.UserCode +
  13717. "' from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  13718. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13719. //删除在产数据
  13720. updatsql1 = "delete from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  13721. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13722. //删除在产生产数据
  13723. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  13724. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13725. if (returnRows == 0)
  13726. {
  13727. oracleTrConn.Rollback();
  13728. oracleTrConn.Disconnect();
  13729. }
  13730. else
  13731. {
  13732. oracleTrConn.Commit();
  13733. oracleTrConn.Disconnect();
  13734. }
  13735. }
  13736. catch (Exception ex)
  13737. {
  13738. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13739. {
  13740. oracleTrConn.Rollback();
  13741. oracleTrConn.Disconnect();
  13742. }
  13743. throw ex;
  13744. }
  13745. finally
  13746. {
  13747. if (oracleTrConn.ConnState == ConnectionState.Open)
  13748. {
  13749. oracleTrConn.Disconnect();
  13750. }
  13751. }
  13752. return returnRows;
  13753. }
  13754. /// <summary>
  13755. /// 获取批量数据
  13756. /// </summary>
  13757. /// <returns></returns>
  13758. private static string GetClearInproductionTrashData(int accountid)
  13759. {
  13760. string selSql =
  13761. "SELECT " +
  13762. " TP_PM_InProductionTrash.BarCode " +
  13763. " FROM TP_PM_InProductionTrash " +
  13764. " left join tp_pm_scrapproduct " +
  13765. " on tp_pm_scrapproduct.barcode=TP_PM_InProductionTrash.barcode " +
  13766. " Where 1=1 and TP_PM_InProductionTrash.ValueFlag = 1 " +
  13767. " and TP_PM_InProductionTrash.AccountID= " + accountid;
  13768. return selSql;
  13769. }
  13770. #endregion
  13771. /// <summary>
  13772. /// 清除在产临时表残留数据(清除选择)
  13773. /// </summary>
  13774. /// <param name="barcodes">产品条码集</param>
  13775. /// <returns></returns>
  13776. public static int SaveClearInproductionTmp(string barcodes)
  13777. {
  13778. int returnRows = 0;
  13779. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13780. try
  13781. {
  13782. string sql = "";
  13783. string[] subbarcode = barcodes.Split(',');
  13784. OracleParameter[] Paras = null;
  13785. for (int i = 0; i < subbarcode.Length; i++)
  13786. {
  13787. Paras = new OracleParameter[] {
  13788. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13789. subbarcode[i],ParameterDirection.Input)
  13790. };
  13791. //删除在产临时表数据
  13792. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  13793. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13794. }
  13795. if (returnRows == 0)
  13796. {
  13797. oracleTrConn.Rollback();
  13798. oracleTrConn.Disconnect();
  13799. }
  13800. else
  13801. {
  13802. oracleTrConn.Commit();
  13803. oracleTrConn.Disconnect();
  13804. }
  13805. }
  13806. catch (Exception ex)
  13807. {
  13808. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13809. {
  13810. oracleTrConn.Rollback();
  13811. oracleTrConn.Disconnect();
  13812. }
  13813. throw ex;
  13814. }
  13815. finally
  13816. {
  13817. if (oracleTrConn.ConnState == ConnectionState.Open)
  13818. {
  13819. oracleTrConn.Disconnect();
  13820. }
  13821. }
  13822. return returnRows;
  13823. }
  13824. #region 清除在产回收站残留数据(批量)
  13825. /// <summary>
  13826. /// 清除在产残留数据(批量清除)
  13827. /// </summary>
  13828. /// <param name="barcodes">产品条码集</param>
  13829. /// <returns></returns>
  13830. public static int SaveClearAllInproductionTmp(SUserInfo user, FPM2112_SE se)
  13831. {
  13832. int returnRows = 0;
  13833. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13834. try
  13835. {
  13836. List<OracleParameter> parameters = new List<OracleParameter>();
  13837. StringBuilder sql = new StringBuilder(GetClearInproductionTmpData(user.AccountID));
  13838. if (se != null)
  13839. {
  13840. //生产线IDS
  13841. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  13842. {
  13843. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction_Tmp.ProductionLineID||',')>0 ");
  13844. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  13845. }
  13846. //完成工序IDS
  13847. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  13848. {
  13849. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction_Tmp.ProcedureID||',')>0 ");
  13850. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  13851. }
  13852. // 生产时间--开始
  13853. if (se.UpdateTimeStart.HasValue)
  13854. {
  13855. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime >= :UpdateTimeStart ");
  13856. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  13857. }
  13858. // 生产时间--结束
  13859. if (se.UpdateTimeEnd.HasValue)
  13860. {
  13861. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime <= :UpdateTimeEnd ");
  13862. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  13863. }
  13864. //报废日期开始
  13865. if (se.ScrapDataStart.HasValue)
  13866. {
  13867. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  13868. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  13869. }
  13870. //报废日期结束
  13871. if (se.ScrapDataEnd.HasValue)
  13872. {
  13873. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  13874. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  13875. }
  13876. if (se.GooddLevelTypeID != null)
  13877. {
  13878. // 产品分级
  13879. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  13880. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  13881. }
  13882. //在产or 回收站
  13883. sql.Append(" AND TP_PM_InProduction_Tmp.TrashFlag = :TrashFlag ");
  13884. parameters.Add(new OracleParameter(":TrashFlag", OracleDbType.Int32, se.TrashFlag, ParameterDirection.Input));
  13885. }
  13886. //删除在产临时表数据
  13887. string updatsql1 = "delete from TP_PM_InProduction_Tmp p where p.barcode in (" + sql.ToString() + ")";
  13888. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13889. if (returnRows == 0)
  13890. {
  13891. oracleTrConn.Rollback();
  13892. oracleTrConn.Disconnect();
  13893. }
  13894. else
  13895. {
  13896. oracleTrConn.Commit();
  13897. oracleTrConn.Disconnect();
  13898. }
  13899. }
  13900. catch (Exception ex)
  13901. {
  13902. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13903. {
  13904. oracleTrConn.Rollback();
  13905. oracleTrConn.Disconnect();
  13906. }
  13907. throw ex;
  13908. }
  13909. finally
  13910. {
  13911. if (oracleTrConn.ConnState == ConnectionState.Open)
  13912. {
  13913. oracleTrConn.Disconnect();
  13914. }
  13915. }
  13916. return returnRows;
  13917. }
  13918. /// <summary>
  13919. /// 获取批量数据
  13920. /// </summary>
  13921. /// <returns></returns>
  13922. private static string GetClearInproductionTmpData(int accountid)
  13923. {
  13924. string selSql =
  13925. "SELECT " +
  13926. " TP_PM_InProduction_Tmp.BarCode " +
  13927. " FROM TP_PM_InProduction_Tmp " +
  13928. " left join tp_pm_scrapproduct " +
  13929. " on tp_pm_scrapproduct.barcode=TP_PM_InProduction_Tmp.barcode " +
  13930. " Where 1=1 and TP_PM_InProduction_Tmp.ValueFlag = 1 " +
  13931. " and TP_PM_InProduction_Tmp.AccountID= " + accountid;
  13932. return selSql;
  13933. }
  13934. #endregion
  13935. #region 恢复数据
  13936. /// <summary>
  13937. /// 恢复数据
  13938. /// </summary>
  13939. /// <param name="barcodes">产品条码集</param>
  13940. /// <returns></returns>
  13941. public static int ResetBarCode(string barcode)
  13942. {
  13943. int returnRows = 0;
  13944. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13945. try
  13946. {
  13947. string sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  13948. OracleParameter[] Paras = Paras = new OracleParameter[] {
  13949. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13950. barcode,ParameterDirection.Input)
  13951. };
  13952. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13953. if (ds != null && ds.Tables[0].Rows.Count == 0)
  13954. {
  13955. oracleTrConn.Rollback();
  13956. oracleTrConn.Disconnect();
  13957. return -1; //此条码没有清除,不能恢复
  13958. }
  13959. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  13960. {
  13961. sql = @"insert into tp_pm_inproduction select
  13962. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13963. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13964. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13965. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13966. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13967. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13968. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13969. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13970. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13971. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13972. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13973. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13974. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  13975. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  13976. }
  13977. else
  13978. {
  13979. sql = @"insert into tp_pm_inproductiontrash select
  13980. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13981. PROCEDUREMODEL, MODELTYPE,
  13982. defectflag,
  13983. REWORKPROCEDUREID,
  13984. ISPUBLICBODY,
  13985. ISRefire,
  13986. GOODSLEVELID, GOODSLEVELTYPEID,
  13987. GOODSID, GOODSCODE, GOODSNAME,
  13988. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13989. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13990. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13991. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13992. REMARKS,
  13993. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13994. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  13995. ACCOUNTID, VALUEFLAG, CREATETIME,
  13996. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13997. SpecialRepairFlag,FlowProcedureID
  13998. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  13999. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  14000. }
  14001. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14002. //将生产数据表中的数据插入到在产生产数据表中
  14003. sql = @"insert into tp_pm_productiondatain
  14004. select
  14005. pd.PRODUCTIONDATAID,
  14006. pd.BARCODE,
  14007. pd.CENTRALIZEDBATCHNO,
  14008. pd.PRODUCTIONLINEID,
  14009. pd.PRODUCTIONLINECODE,
  14010. pd.PRODUCTIONLINENAME,
  14011. pd.PROCEDUREID,
  14012. pd.PROCEDURECODE,
  14013. pd.PROCEDURENAME,
  14014. pd.PROCEDUREMODEL,
  14015. pd.MODELTYPE,
  14016. pd.PIECETYPE,
  14017. pd.ISREWORKED,
  14018. pd.NODETYPE,
  14019. pd.ISPUBLICBODY,
  14020. pd.ISREFIRE,
  14021. pd.ORGANIZATIONID,
  14022. pd.GOODSID,
  14023. pd.GOODSCODE,
  14024. pd.GOODSNAME,
  14025. pd.USERID,
  14026. pd.USERCODE,
  14027. pd.USERNAME,
  14028. pd.KILNID,
  14029. pd.KILNCODE,
  14030. pd.KILNNAME,
  14031. pd.KILNCARID,
  14032. pd.KILNCARCODE,
  14033. pd.KILNCARNAME,
  14034. pd.KILNCARBATCHNO,
  14035. pd.KILNCARPOSITION,
  14036. pd.REWORKPROCEDUREID,
  14037. pd.REWORKPROCEDURECODE,
  14038. pd.REWORKPROCEDURENAME,
  14039. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  14040. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  14041. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  14042. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  14043. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  14044. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  14045. '1',pd.LOGOID,
  14046. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  14047. from tp_pm_productiondata pd
  14048. where pd.barcode = :barcode
  14049. and pd.productiondataid not in
  14050. (select pp.productiondataid
  14051. from tp_pm_productiondatain pp
  14052. where pp.barcode = :barcode)";
  14053. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14054. //删除在产临时表数据
  14055. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  14056. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14057. if (returnRows == 0)
  14058. {
  14059. oracleTrConn.Rollback();
  14060. oracleTrConn.Disconnect();
  14061. }
  14062. else
  14063. {
  14064. oracleTrConn.Commit();
  14065. oracleTrConn.Disconnect();
  14066. }
  14067. }
  14068. catch (Exception ex)
  14069. {
  14070. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14071. {
  14072. oracleTrConn.Rollback();
  14073. oracleTrConn.Disconnect();
  14074. }
  14075. throw ex;
  14076. }
  14077. finally
  14078. {
  14079. if (oracleTrConn.ConnState == ConnectionState.Open)
  14080. {
  14081. oracleTrConn.Disconnect();
  14082. }
  14083. }
  14084. return returnRows;
  14085. }
  14086. /// <summary>
  14087. /// 批量恢复数据
  14088. /// </summary>
  14089. /// <param name="barcodes">产品条码集</param>
  14090. /// <returns></returns>
  14091. public static int ResetSelectedBarCode(string barcodes)
  14092. {
  14093. int returnRows = 0;
  14094. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14095. try
  14096. {
  14097. string sql = "";
  14098. string[] subbarcode = barcodes.Split(',');
  14099. OracleParameter[] Paras = null;
  14100. DataSet ds = null;
  14101. for (int i = 0; i < subbarcode.Length; i++)
  14102. {
  14103. sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  14104. Paras = Paras = new OracleParameter[] {
  14105. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14106. subbarcode[i],ParameterDirection.Input)
  14107. };
  14108. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14109. if (ds != null && ds.Tables[0].Rows.Count == 0)
  14110. {
  14111. oracleTrConn.Rollback();
  14112. oracleTrConn.Disconnect();
  14113. return -1; //此条码没有清除,不能恢复
  14114. }
  14115. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  14116. {
  14117. sql = @"insert into tp_pm_inproduction select
  14118. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  14119. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  14120. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  14121. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  14122. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  14123. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  14124. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  14125. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  14126. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  14127. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  14128. KILNID, KILNCODE, KILNNAME, KILNCARID,
  14129. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  14130. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  14131. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  14132. }
  14133. else
  14134. {
  14135. sql = @"insert into tp_pm_inproductiontrash select
  14136. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  14137. PROCEDUREMODEL, MODELTYPE,
  14138. defectflag,
  14139. REWORKPROCEDUREID,
  14140. ISPUBLICBODY,
  14141. ISRefire,
  14142. GOODSLEVELID, GOODSLEVELTYPEID,
  14143. GOODSID, GOODSCODE, GOODSNAME,
  14144. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  14145. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  14146. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  14147. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  14148. REMARKS,
  14149. KILNID, KILNCODE, KILNNAME, KILNCARID,
  14150. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  14151. ACCOUNTID, VALUEFLAG, CREATETIME,
  14152. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  14153. SpecialRepairFlag,FlowProcedureID
  14154. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  14155. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  14156. }
  14157. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14158. //将生产数据表中的数据插入到在产生产数据表中
  14159. sql = @"insert into tp_pm_productiondatain
  14160. select pd.PRODUCTIONDATAID,
  14161. pd.BARCODE,
  14162. pd.CENTRALIZEDBATCHNO,
  14163. pd.PRODUCTIONLINEID,
  14164. pd.PRODUCTIONLINECODE,
  14165. pd.PRODUCTIONLINENAME,
  14166. pd.PROCEDUREID,
  14167. pd.PROCEDURECODE,
  14168. pd.PROCEDURENAME,
  14169. pd.PROCEDUREMODEL,
  14170. pd.MODELTYPE,
  14171. pd.PIECETYPE,
  14172. pd.ISREWORKED,
  14173. pd.NODETYPE,
  14174. pd.ISPUBLICBODY,
  14175. pd.ISREFIRE,
  14176. pd.ORGANIZATIONID,
  14177. pd.GOODSID,
  14178. pd.GOODSCODE,
  14179. pd.GOODSNAME,
  14180. pd.USERID,
  14181. pd.USERCODE,
  14182. pd.USERNAME,
  14183. pd.KILNID,
  14184. pd.KILNCODE,
  14185. pd.KILNNAME,
  14186. pd.KILNCARID,
  14187. pd.KILNCARCODE,
  14188. pd.KILNCARNAME,
  14189. pd.KILNCARBATCHNO,
  14190. pd.KILNCARPOSITION,
  14191. pd.REWORKPROCEDUREID,
  14192. pd.REWORKPROCEDURECODE,
  14193. pd.REWORKPROCEDURENAME,
  14194. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  14195. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  14196. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  14197. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  14198. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  14199. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  14200. '1',pd.LOGOID,
  14201. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  14202. from tp_pm_productiondata pd
  14203. where pd.barcode = :barcode
  14204. and pd.productiondataid not in
  14205. (select pp.productiondataid
  14206. from tp_pm_productiondatain pp
  14207. where pp.barcode = :barcode)";
  14208. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14209. //删除在产临时表数据
  14210. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  14211. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14212. }
  14213. if (returnRows == 0)
  14214. {
  14215. oracleTrConn.Rollback();
  14216. oracleTrConn.Disconnect();
  14217. }
  14218. else
  14219. {
  14220. oracleTrConn.Commit();
  14221. oracleTrConn.Disconnect();
  14222. }
  14223. }
  14224. catch (Exception ex)
  14225. {
  14226. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14227. {
  14228. oracleTrConn.Rollback();
  14229. oracleTrConn.Disconnect();
  14230. }
  14231. throw ex;
  14232. }
  14233. finally
  14234. {
  14235. if (oracleTrConn.ConnState == ConnectionState.Open)
  14236. {
  14237. oracleTrConn.Disconnect();
  14238. }
  14239. }
  14240. return returnRows;
  14241. }
  14242. #endregion
  14243. /// <summary>
  14244. /// 撤销特殊工序撤销
  14245. /// </summary>
  14246. /// <param name="barcode">产品条码</param>
  14247. /// <returns></returns>
  14248. public static ServiceResultEntity AddChancelBarCode(string barcode, SUserInfo sUserInfo)
  14249. {
  14250. ServiceResultEntity entity = new ServiceResultEntity();
  14251. int returnRows = 0;
  14252. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14253. try
  14254. {
  14255. // 转换注浆条码
  14256. barcode = CommonModuleLogic.CommonModuleLogic.GetBarcode(oracleTrConn, barcode, sUserInfo);
  14257. DateTime? flowProcedureTime = null;
  14258. // 1 条码是否有效
  14259. string sql = "select 1 from TP_PM_GroutingDailyDetail where barcode=:barcode and valueflag=1";
  14260. OracleParameter[] Paras = new OracleParameter[] {
  14261. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14262. barcode,ParameterDirection.Input)
  14263. };
  14264. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14265. if (ds.Tables[0].Rows.Count == 0)
  14266. {
  14267. //无效条码
  14268. returnRows = -1;
  14269. oracleTrConn.Rollback();
  14270. oracleTrConn.Disconnect();
  14271. entity.Result = returnRows;
  14272. return entity;
  14273. }
  14274. // 2.看看是否在产,如果在产看看是否已经损坯标识
  14275. int? ProcedureID = null;
  14276. // 撤销时,需要判定当前工序,而不是流程工序,干补时,当前工序是干补,流程工序是报损时的工序。
  14277. //sql = "select InScrapFlag,flowProcedureID,IsReworkFlag,flowProcedureTime from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14278. sql = "select InScrapFlag,ProcedureID,IsReworkFlag,ProcedureTime from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14279. Paras = new OracleParameter[] {
  14280. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14281. barcode,ParameterDirection.Input)
  14282. };
  14283. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14284. if (ds.Tables[0].Rows.Count == 0) //不存在在产信息
  14285. {
  14286. // 不在产,看看是否有成品
  14287. sql = @"select 1 from TP_PM_FinishedProduct where barcode=:barcode";
  14288. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14289. if (ds.Tables[0].Rows.Count > 0)
  14290. {
  14291. //生产完成
  14292. returnRows = -2;
  14293. oracleTrConn.Rollback();
  14294. oracleTrConn.Disconnect();
  14295. entity.Result = returnRows;
  14296. return entity;
  14297. }
  14298. else
  14299. {
  14300. //条码不在生产线上
  14301. returnRows = -7;
  14302. oracleTrConn.Rollback();
  14303. oracleTrConn.Disconnect();
  14304. entity.Result = returnRows;
  14305. return entity;
  14306. }
  14307. }
  14308. else
  14309. {
  14310. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  14311. {
  14312. //申请报废
  14313. returnRows = -3;
  14314. oracleTrConn.Rollback();
  14315. oracleTrConn.Disconnect();
  14316. entity.Result = returnRows;
  14317. return entity;
  14318. }
  14319. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  14320. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  14321. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  14322. {
  14323. //申请报废
  14324. returnRows = -9;
  14325. oracleTrConn.Rollback();
  14326. oracleTrConn.Disconnect();
  14327. entity.Result = returnRows;
  14328. return entity;
  14329. }
  14330. //ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["flowProcedureID"]); //条码完成工序
  14331. //flowProcedureTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["flowProcedureTime"]); // 流程工序时间
  14332. ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]); //条码完成工序
  14333. flowProcedureTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["ProcedureTime"]); // 完成工序时间
  14334. }
  14335. // 此工序所在条码是否是特殊工序,即可以撤销工序
  14336. sql = "select UnDoFlag from tp_pc_procedure where procedureid=:procdureid and valueflag=1";
  14337. Paras = new OracleParameter[] {
  14338. new OracleParameter(":procdureid",OracleDbType.Int32,
  14339. ProcedureID,ParameterDirection.Input)
  14340. };
  14341. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14342. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14343. {
  14344. if (ds.Tables[0].Rows[0]["UnDoFlag"].ToString() != "1")
  14345. {
  14346. //此条码所在工序不允许进行撤销
  14347. returnRows = -4;
  14348. oracleTrConn.Rollback();
  14349. oracleTrConn.Disconnect();
  14350. entity.Result = returnRows;
  14351. return entity;
  14352. }
  14353. }
  14354. // 如果不合格,查询报损表里是否回收
  14355. sql = "select recyclingflag from TP_PM_ScrapProduct "
  14356. + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) "
  14357. + " from TP_PM_ScrapProduct "
  14358. + " where BarCode=:BarCode and ValueFlag=1)"
  14359. + " and ValueFlag=1";
  14360. Paras = new OracleParameter[]{
  14361. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  14362. };
  14363. DataSet dsResult2 = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14364. if (dsResult2 != null && dsResult2.Tables[0].Rows.Count > 0)
  14365. {
  14366. if (Convert.ToInt32(dsResult2.Tables[0].Rows[0]["recyclingflag"]) > 0)
  14367. {
  14368. returnRows = -200;
  14369. oracleTrConn.Rollback();
  14370. oracleTrConn.Disconnect();
  14371. entity.Result = returnRows;
  14372. entity.Message = "此产品已经回收,不能撤销";
  14373. return entity;
  14374. }
  14375. }
  14376. // 判断是否有撤销范围权限
  14377. sql = @"select 1 from TP_MST_UserPurview where UserID=:UserID and (PurviewID=:PurviewID or PurviewID=-1) and PurviewType=13";
  14378. Paras = new OracleParameter[] {
  14379. new OracleParameter(":PurviewID",OracleDbType.Int32,
  14380. ProcedureID,ParameterDirection.Input),
  14381. new OracleParameter(":UserID",OracleDbType.Int32,
  14382. sUserInfo.UserID,ParameterDirection.Input)
  14383. };
  14384. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14385. if (ds != null && ds.Tables[0].Rows.Count == 0)
  14386. {
  14387. //此用户无此工序撤销权限
  14388. returnRows = -8;
  14389. oracleTrConn.Rollback();
  14390. oracleTrConn.Disconnect();
  14391. entity.Result = returnRows;
  14392. return entity;
  14393. }
  14394. //
  14395. #region 是否启用交坯撤销限制天数
  14396. if (flowProcedureTime != null)
  14397. {
  14398. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  14399. Paras = new OracleParameter[] {
  14400. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  14401. Constant.SettingType.S_PM_004.ToString(),ParameterDirection.Input),
  14402. new OracleParameter(":accountid",OracleDbType.Int32,
  14403. sUserInfo.AccountID,ParameterDirection.Input)
  14404. };
  14405. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14406. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14407. {
  14408. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  14409. {
  14410. // 开启了限制
  14411. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(flowProcedureTime),
  14412. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_004.ToString(), sUserInfo);
  14413. if (Convert.ToInt32(resultEntity.Result) < 0)
  14414. {
  14415. //计件撤销限制天数
  14416. returnRows = -200;
  14417. oracleTrConn.Rollback();
  14418. oracleTrConn.Disconnect();
  14419. entity.Result = returnRows;
  14420. entity.Message = resultEntity.Message;
  14421. return entity;
  14422. }
  14423. }
  14424. }
  14425. }
  14426. #endregion
  14427. // 进行撤销
  14428. string sqlString = @"select ProductionDataID,
  14429. ProcedureID,
  14430. ProcedureModel,
  14431. ModelType,
  14432. ReworkProcedureID,
  14433. UserID,
  14434. logoid,
  14435. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  14436. from (select ProductionDataID,
  14437. ProcedureID,
  14438. ProcedureModel,
  14439. ModelType,
  14440. ReworkProcedureID,
  14441. UserID,
  14442. logoid
  14443. from Tp_Pm_ProductiondataIn
  14444. where barcode = :barcode
  14445. and valueflag = 1 and ModelType<>8
  14446. order by ProductionDataID desc) t
  14447. where rownum <= 2";
  14448. Paras = new OracleParameter[]{
  14449. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14450. };
  14451. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, Paras);
  14452. if (productionData == null
  14453. || productionData.Tables.Count == Constant.INT_IS_ZERO
  14454. //|| productionData.Tables[0].Rows.Count != Constant.INT_IS_TWO
  14455. )
  14456. {
  14457. // 条码至少要有2次数据采集
  14458. //条码没有此工序前数据
  14459. returnRows = -5;
  14460. oracleTrConn.Rollback();
  14461. oracleTrConn.Disconnect();
  14462. entity.Result = returnRows;
  14463. return entity;
  14464. }
  14465. //xuwei fix 2019-09-25 tables只有一行记录 rows[1]无记录 改成rows[0]?
  14466. object pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count-1]["p8id"];
  14467. if (pid == null || pid == DBNull.Value)
  14468. {
  14469. pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["ProcedureID"];
  14470. }
  14471. #region 回滚在产数据
  14472. //xuwei fix 2019-09-23 加条件限制 如果是首节点 删除在产产品数据 否则 更新在产产品数据
  14473. if (productionData.Tables[0].Rows.Count == 1)
  14474. {
  14475. sqlString = "delete from TP_PM_InProduction where barcode=:barcode"; //wangxin 20150406
  14476. //sqlString += " where ProductionDataID=:productionDataID";
  14477. //新添加的 begin
  14478. Paras = new OracleParameter[]{
  14479. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14480. barcode,ParameterDirection.Input),
  14481. };
  14482. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14483. returnRows += rows;
  14484. if (rows == Constant.INT_IS_ZERO)
  14485. {
  14486. // 保存失败
  14487. //没有任何影响行
  14488. returnRows = -6;
  14489. oracleTrConn.Rollback();
  14490. oracleTrConn.Disconnect();
  14491. entity.Result = returnRows;
  14492. return entity;
  14493. }
  14494. //xuwei add 2019-09-23 更新回生产状态 BEGINNINGFLAG = '0'
  14495. oracleTrConn.ExecuteNonQuery($"update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '0' where BARCODE = '{barcode}'");
  14496. //xuwei fix 2019-09-25 加条件判断 如果是首节点 回退到注浆1
  14497. sql = $"update TP_PM_USEDBARCODE set barcodestatus=1 where BarCode='{barcode}'";
  14498. rows = oracleTrConn.ExecuteNonQuery(sql);
  14499. returnRows += rows;
  14500. }
  14501. else
  14502. {
  14503. //xuwei 下述代码为原代码 并未判定首节点
  14504. sqlString = @"update TP_PM_InProduction
  14505. set FlowProcedureID = :flowProcedureID,
  14506. ProcedureModel = :procedureModel,
  14507. ProcedureID = :ProcedureID,
  14508. ModelType = :modelType,
  14509. ReworkProcedureID = :reworkProcedureID,
  14510. UserID = :userID,
  14511. updateuserid = :updateuserid,
  14512. ProductionDataID = :ProductionDataID
  14513. --logoid = :logoid
  14514. where barcode = :barcode";
  14515. Paras = new OracleParameter[]{
  14516. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  14517. productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  14518. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  14519. pid,ParameterDirection.Input),
  14520. new OracleParameter(":procedureModel",OracleDbType.Int32,
  14521. productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  14522. new OracleParameter(":modelType",OracleDbType.Int32,
  14523. productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  14524. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  14525. productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  14526. new OracleParameter(":userID",OracleDbType.Int32,
  14527. productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  14528. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  14529. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14530. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  14531. productionData.Tables[0].Rows[1]["ProductionDataID"],ParameterDirection.Input)
  14532. //new OracleParameter(":logoid",OracleDbType.Int32,
  14533. // productionData.Tables[0].Rows[1]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[1]["logoid"],ParameterDirection.Input),
  14534. };
  14535. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14536. returnRows += rows;
  14537. if (rows == Constant.INT_IS_ZERO)
  14538. {
  14539. // 保存失败
  14540. //没有任何影响行
  14541. returnRows = -6;
  14542. oracleTrConn.Rollback();
  14543. oracleTrConn.Disconnect();
  14544. entity.Result = returnRows;
  14545. return entity;
  14546. }
  14547. }
  14548. //modify end
  14549. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  14550. //sqlString += " where ProductionDataID=:productionDataID";
  14551. //新添加的 begin
  14552. Paras = new OracleParameter[]{
  14553. new OracleParameter(":productionDataID",OracleDbType.Int32,
  14554. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  14555. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14556. barcode,ParameterDirection.Input),
  14557. };
  14558. //新添加的 end
  14559. sqlString += " where ProductionDataID=:productionDataID and barcode=:barcode";
  14560. int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14561. returnRows += rutenRows;
  14562. if (rutenRows == Constant.INT_IS_ZERO)
  14563. {
  14564. // 保存失败
  14565. //没有任何影响行
  14566. returnRows = -6;
  14567. oracleTrConn.Rollback();
  14568. oracleTrConn.Disconnect();
  14569. entity.Result = returnRows;
  14570. return entity;
  14571. }
  14572. #endregion
  14573. if (returnRows <= 0)
  14574. {
  14575. oracleTrConn.Rollback();
  14576. oracleTrConn.Disconnect();
  14577. }
  14578. else
  14579. {
  14580. oracleTrConn.Commit();
  14581. oracleTrConn.Disconnect();
  14582. }
  14583. }
  14584. catch (Exception ex)
  14585. {
  14586. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14587. {
  14588. oracleTrConn.Rollback();
  14589. oracleTrConn.Disconnect();
  14590. }
  14591. throw ex;
  14592. }
  14593. finally
  14594. {
  14595. if (oracleTrConn.ConnState == ConnectionState.Open)
  14596. {
  14597. oracleTrConn.Disconnect();
  14598. }
  14599. }
  14600. entity.Result = returnRows;
  14601. return entity;
  14602. }
  14603. /// <summary>
  14604. /// 交坯特殊工序撤销
  14605. /// </summary>
  14606. /// <param name="barcode">产品条码</param>
  14607. /// <returns></returns>
  14608. public static ServiceResultEntity AddChancelDeliverMudBarCode(string barcode, SUserInfo sUserInfo)
  14609. {
  14610. ServiceResultEntity entity = new ServiceResultEntity();
  14611. int returnRows = 0;
  14612. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14613. try
  14614. {
  14615. DateTime? deliverTime = null;
  14616. // 1 条码是否有效
  14617. string sql = "select DeliverTime from TP_PM_GroutingDailyDetail where barcode=:barcode and valueflag=1";
  14618. OracleParameter[] Paras = new OracleParameter[] {
  14619. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14620. barcode,ParameterDirection.Input)
  14621. };
  14622. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14623. if (ds.Tables[0].Rows.Count == 0)
  14624. {
  14625. //无效条码
  14626. returnRows = -1;
  14627. oracleTrConn.Rollback();
  14628. oracleTrConn.Disconnect();
  14629. entity.Result = returnRows;
  14630. return entity;
  14631. }
  14632. else
  14633. {
  14634. if (ds.Tables[0].Rows[0]["DeliverTime"].ToString() != "")
  14635. {
  14636. deliverTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["DeliverTime"]);
  14637. }
  14638. }
  14639. // 2.看看是否在产,如果在产看看是否已经损坯标识
  14640. int? ProcedureID = null;
  14641. //xuwei fix 2019-09-27 选出交坏判定字段
  14642. //sql = "select InScrapFlag,flowProcedureID,IsReworkFlag,Specialrepairflag from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14643. sql = "select MODELTYPE,InScrapFlag,flowProcedureID,IsReworkFlag,Specialrepairflag from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14644. Paras = new OracleParameter[] {
  14645. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14646. barcode,ParameterDirection.Input)
  14647. };
  14648. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14649. if (ds.Tables[0].Rows.Count == 0) //不存在在产信息
  14650. {
  14651. // 不在产,看看是否有成品
  14652. sql = @"select 1 from TP_PM_FinishedProduct where barcode=:barcode";
  14653. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14654. if (ds.Tables[0].Rows.Count > 0)
  14655. {
  14656. //生产完成
  14657. returnRows = -2;
  14658. oracleTrConn.Rollback();
  14659. oracleTrConn.Disconnect();
  14660. entity.Result = returnRows;
  14661. return entity;
  14662. }
  14663. else
  14664. {
  14665. //条码不在生产线上
  14666. returnRows = -7;
  14667. oracleTrConn.Rollback();
  14668. oracleTrConn.Disconnect();
  14669. entity.Result = returnRows;
  14670. return entity;
  14671. }
  14672. }
  14673. else
  14674. {
  14675. //xuwei add 2019-09-27 如果是非交坯工序不能在此节点撤销 5是交坯模型
  14676. if(ds.Tables[0].Rows[0]["MODELTYPE"].ToString() != "5")
  14677. {
  14678. //非交坯工序,不能交坯撤销
  14679. returnRows = -200;
  14680. oracleTrConn.Rollback();
  14681. oracleTrConn.Disconnect();
  14682. entity.Result = returnRows;
  14683. entity.Message = "非交坯工序,不能交坯撤销";
  14684. return entity;
  14685. }
  14686. //xuwei end
  14687. if (ds.Tables[0].Rows[0]["Specialrepairflag"].ToString() == "1")
  14688. {
  14689. //干补后不允许撤销
  14690. returnRows = -200;
  14691. oracleTrConn.Rollback();
  14692. oracleTrConn.Disconnect();
  14693. entity.Result = returnRows;
  14694. entity.Message = "干补后不允许撤销";
  14695. return entity;
  14696. }
  14697. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  14698. {
  14699. //申请报废
  14700. returnRows = -3;
  14701. oracleTrConn.Rollback();
  14702. oracleTrConn.Disconnect();
  14703. entity.Result = returnRows;
  14704. return entity;
  14705. }
  14706. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  14707. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  14708. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  14709. {
  14710. //申请报废
  14711. returnRows = -8;
  14712. oracleTrConn.Rollback();
  14713. oracleTrConn.Disconnect();
  14714. entity.Result = returnRows;
  14715. return entity;
  14716. }
  14717. ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["flowProcedureID"]); //条码完成工序
  14718. }
  14719. //// 此工序所在条码是否是特殊工序,即可以撤销工序
  14720. //sql = "select UnDoFlag from tp_pc_procedure where procedureid=:procdureid and valueflag=1";
  14721. //Paras = new OracleParameter[] {
  14722. // new OracleParameter(":procdureid",OracleDbType.Int32,
  14723. // ProcedureID,ParameterDirection.Input)
  14724. //};
  14725. //ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14726. //if (ds != null && ds.Tables[0].Rows.Count > 0)
  14727. //{
  14728. // if (ds.Tables[0].Rows[0]["UnDoFlag"].ToString() != "1")
  14729. // {
  14730. // //此条码所在工序不允许进行撤销
  14731. // returnRows = -4;
  14732. // oracleTrConn.Rollback();
  14733. // oracleTrConn.Disconnect();
  14734. // return returnRows;
  14735. // }
  14736. //}
  14737. #region 是否启用交坯撤销限制天数
  14738. if (deliverTime != null)
  14739. {
  14740. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  14741. Paras = new OracleParameter[] {
  14742. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  14743. Constant.SettingType.S_PM_003.ToString(),ParameterDirection.Input),
  14744. new OracleParameter(":accountid",OracleDbType.Int32,
  14745. sUserInfo.AccountID,ParameterDirection.Input)
  14746. };
  14747. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14748. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14749. {
  14750. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  14751. {
  14752. // 开启了限制
  14753. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(deliverTime),
  14754. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_003.ToString(), sUserInfo);
  14755. if (Convert.ToInt32(resultEntity.Result) < 0)
  14756. {
  14757. //超过交坯撤销限制天数
  14758. returnRows = -200;
  14759. oracleTrConn.Rollback();
  14760. oracleTrConn.Disconnect();
  14761. entity.Result = returnRows;
  14762. entity.Message = resultEntity.Message;
  14763. return entity;
  14764. }
  14765. }
  14766. }
  14767. }
  14768. #endregion
  14769. // 进行撤销
  14770. string sqlString = @"select ProductionDataID,
  14771. ProcedureID,
  14772. ProcedureModel,
  14773. ModelType,
  14774. ReworkProcedureID,
  14775. UserID,
  14776. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  14777. from (select ProductionDataID,
  14778. ProcedureID,
  14779. ProcedureModel,
  14780. ModelType,
  14781. ReworkProcedureID,
  14782. UserID
  14783. from Tp_Pm_ProductiondataIn
  14784. where barcode = :barcode
  14785. and valueflag = 1 and ModelType<>8
  14786. order by ProductionDataID desc) t
  14787. where rownum <= 2";
  14788. Paras = new OracleParameter[]{
  14789. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14790. };
  14791. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, Paras);
  14792. if (productionData == null
  14793. || productionData.Tables.Count == Constant.INT_IS_ZERO
  14794. )
  14795. {
  14796. // 条码至少要有1次数据采集
  14797. //条码没有此工序前数据
  14798. returnRows = -5; //条码至少要有1次数据采集
  14799. oracleTrConn.Rollback();
  14800. oracleTrConn.Disconnect();
  14801. entity.Result = returnRows;
  14802. return entity;
  14803. }
  14804. //if (productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  14805. //{
  14806. // // 条码至少要有1次数据采集
  14807. // //条码没有此工序前数据
  14808. // returnRows = -55; //条码已经经过多个工序,不允许撤销
  14809. // oracleTrConn.Rollback();
  14810. // oracleTrConn.Disconnect();
  14811. // entity.Result = returnRows;
  14812. // return entity;
  14813. //}
  14814. //xuwei fix 2019-09-25 tables只有一行记录 rows[1]无记录 改成rows[0]?
  14815. object pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["p8id"];
  14816. if (pid == null || pid == DBNull.Value)
  14817. {
  14818. pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["ProcedureID"];
  14819. }
  14820. #region 回滚在产数据
  14821. // sqlString = @"update TP_PM_InProduction
  14822. // set FlowProcedureID = :flowProcedureID,
  14823. // ProcedureModel = :procedureModel,
  14824. // ProcedureID = :flowProcedureID,
  14825. // ModelType = :modelType,
  14826. // ReworkProcedureID = :reworkProcedureID,
  14827. // UserID = :userID,
  14828. // updateuserid = :updateuserid
  14829. // where barcode = :barcode";
  14830. // Paras = new OracleParameter[]{
  14831. // new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  14832. // productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  14833. // new OracleParameter(":procedureModel",OracleDbType.Int32,
  14834. // productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  14835. // new OracleParameter(":modelType",OracleDbType.Int32,
  14836. // productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  14837. // new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  14838. // productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  14839. // new OracleParameter(":userID",OracleDbType.Int32,
  14840. // productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  14841. // new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  14842. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14843. // };
  14844. // int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14845. // returnRows += rutenRows;
  14846. // if (rutenRows == Constant.INT_IS_ZERO)
  14847. // {
  14848. // // 保存失败
  14849. // //没有任何影响行
  14850. // returnRows = -6;
  14851. // oracleTrConn.Rollback();
  14852. // oracleTrConn.Disconnect();
  14853. // return returnRows;
  14854. // }
  14855. int rutenRows = 0;
  14856. //modify end
  14857. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  14858. //sqlString += " where ProductionDataID=:productionDataID";
  14859. //新添加的 begin
  14860. Paras = new OracleParameter[]{
  14861. new OracleParameter(":productionDataID",OracleDbType.Int32,
  14862. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  14863. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14864. barcode,ParameterDirection.Input),
  14865. };
  14866. //新添加的 end
  14867. sqlString += " where ProductionDataID=:productionDataID and barcode=:barcode";
  14868. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14869. returnRows += rutenRows;
  14870. if (rutenRows == Constant.INT_IS_ZERO)
  14871. {
  14872. // 保存失败
  14873. //没有任何影响行
  14874. returnRows = -6;
  14875. oracleTrConn.Rollback();
  14876. oracleTrConn.Disconnect();
  14877. entity.Result = returnRows;
  14878. return entity;
  14879. }
  14880. //modify end
  14881. //xuwei fix 2019-09-23 加条件限制 如果是首节点 删除在产产品数据
  14882. if (productionData.Tables[0].Rows.Count == 1)
  14883. {
  14884. sqlString = "delete from TP_PM_InProduction where barcode=:barcode"; //wangxin 20150406
  14885. //sqlString += " where ProductionDataID=:productionDataID";
  14886. //新添加的 begin
  14887. Paras = new OracleParameter[]{
  14888. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14889. barcode,ParameterDirection.Input),
  14890. };
  14891. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14892. returnRows += rutenRows;
  14893. if (rutenRows == Constant.INT_IS_ZERO)
  14894. {
  14895. // 保存失败
  14896. //没有任何影响行
  14897. returnRows = -6;
  14898. oracleTrConn.Rollback();
  14899. oracleTrConn.Disconnect();
  14900. entity.Result = returnRows;
  14901. return entity;
  14902. }
  14903. //xuwei add 2019-09-23 更新回生产状态 BEGINNINGFLAG = '0'
  14904. oracleTrConn.ExecuteNonQuery($"update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '0' where BARCODE = '{barcode}'");
  14905. }
  14906. else
  14907. {
  14908. //xuwei 下述代码为原代码 并未判定首节点
  14909. sqlString = @"update TP_PM_InProduction
  14910. set FlowProcedureID = :flowProcedureID,
  14911. ProcedureModel = :procedureModel,
  14912. ProcedureID = :ProcedureID,
  14913. ModelType = :modelType,
  14914. ReworkProcedureID = :reworkProcedureID,
  14915. UserID = :userID,
  14916. updateuserid = :updateuserid,
  14917. ProductionDataID = :ProductionDataID
  14918. --logoid = :logoid
  14919. where barcode = :barcode";
  14920. Paras = new OracleParameter[]{
  14921. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  14922. productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  14923. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  14924. pid,ParameterDirection.Input),
  14925. new OracleParameter(":procedureModel",OracleDbType.Int32,
  14926. productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  14927. new OracleParameter(":modelType",OracleDbType.Int32,
  14928. productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  14929. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  14930. productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  14931. new OracleParameter(":userID",OracleDbType.Int32,
  14932. productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  14933. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  14934. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14935. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  14936. productionData.Tables[0].Rows[1]["ProductionDataID"],ParameterDirection.Input)
  14937. //new OracleParameter(":logoid",OracleDbType.Int32,
  14938. // productionData.Tables[0].Rows[1]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[1]["logoid"],ParameterDirection.Input),
  14939. };
  14940. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14941. returnRows += rows;
  14942. if (rows == Constant.INT_IS_ZERO)
  14943. {
  14944. // 保存失败
  14945. //没有任何影响行
  14946. returnRows = -6;
  14947. oracleTrConn.Rollback();
  14948. oracleTrConn.Disconnect();
  14949. entity.Result = returnRows;
  14950. return entity;
  14951. }
  14952. }
  14953. #endregion
  14954. // 更新注浆明交坯标识把已经交坯改回,正常交坯
  14955. 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
  14956. Paras = new OracleParameter[]{
  14957. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14958. barcode,ParameterDirection.Input),
  14959. };
  14960. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14961. returnRows += rutenRows;
  14962. // TODO 回退到注浆 1 还是 在产 3
  14963. //xuwei fix 2019-09-23 加条件判断 如果是首节点 回退到注浆1 否则回退到在产 3
  14964. if (productionData.Tables[0].Rows.Count==1)
  14965. {
  14966. sql = "update TP_PM_USEDBARCODE set barcodestatus=1 where BarCode=:barcode";
  14967. }
  14968. else
  14969. {
  14970. sql = "update TP_PM_USEDBARCODE set barcodestatus=3 where BarCode=:barcode";
  14971. }
  14972. Paras = new OracleParameter[]{
  14973. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14974. barcode,ParameterDirection.Input),
  14975. };
  14976. rutenRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  14977. returnRows += rutenRows;
  14978. if (returnRows <= 0)
  14979. {
  14980. oracleTrConn.Rollback();
  14981. oracleTrConn.Disconnect();
  14982. }
  14983. else
  14984. {
  14985. oracleTrConn.Commit();
  14986. oracleTrConn.Disconnect();
  14987. }
  14988. }
  14989. catch (Exception ex)
  14990. {
  14991. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14992. {
  14993. oracleTrConn.Rollback();
  14994. oracleTrConn.Disconnect();
  14995. }
  14996. throw ex;
  14997. }
  14998. finally
  14999. {
  15000. if (oracleTrConn.ConnState == ConnectionState.Open)
  15001. {
  15002. oracleTrConn.Disconnect();
  15003. }
  15004. }
  15005. entity.Result = returnRows;
  15006. return entity;
  15007. }
  15008. #region
  15009. /// <summary>
  15010. /// 清除未盘点残留数据(清除选择)
  15011. /// </summary>
  15012. /// <param name="inCheckedID">盘点单ID</param>
  15013. /// <param name="barcodes">条码集</param>
  15014. /// <returns></returns>
  15015. public static int SaveClearInChecked(int inCheckedID, string barcodes, SUserInfo sUserInfo)
  15016. {
  15017. int returnRows = 0;
  15018. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15019. try
  15020. {
  15021. string sql = "";
  15022. string[] subbarcodes = barcodes.Split(',');
  15023. OracleParameter[] Paras = null;
  15024. for (int i = 0; i < subbarcodes.Length; i++)
  15025. {
  15026. // 0.登窑、入窑、出窑工序的产品不能清除
  15027. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  15028. Paras = new OracleParameter[] {
  15029. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15030. subbarcodes[i],ParameterDirection.Input),
  15031. };
  15032. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  15033. if (!string.IsNullOrWhiteSpace(modeltype))
  15034. {
  15035. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  15036. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  15037. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  15038. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  15039. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln ||
  15040. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.CarAdd)
  15041. {
  15042. continue;
  15043. }
  15044. }
  15045. // 返工标识或者是报损标识不允许清除 2016-07-12
  15046. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  15047. Paras = new OracleParameter[] {
  15048. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15049. subbarcodes[i],ParameterDirection.Input)
  15050. };
  15051. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15052. if (ds != null && ds.Tables[0].Rows.Count > 0)
  15053. {
  15054. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15055. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  15056. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  15057. {
  15058. returnRows = -1;
  15059. break;
  15060. }
  15061. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  15062. {
  15063. returnRows = -2;
  15064. break;
  15065. }
  15066. }
  15067. // 1.清除未盘点数据
  15068. 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'";
  15069. Paras = new OracleParameter[] {
  15070. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15071. subbarcodes[i],ParameterDirection.Input),
  15072. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  15073. inCheckedID,ParameterDirection.Input)
  15074. };
  15075. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15076. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  15077. // sql = @"insert into tp_pm_inproduction_tmp
  15078. // select * from tp_pm_inproduction p where p.barcode = :barcode";
  15079. sql = "INSERT INTO tp_pm_inproduction_tmp\n" +
  15080. " (barcode\n" +
  15081. " ,productionlineid\n" +
  15082. " ,productionlinecode\n" +
  15083. " ,productionlinename\n" +
  15084. " ,proceduremodel\n" +
  15085. " ,modeltype\n" +
  15086. " ,reworkprocedureid\n" +
  15087. " ,ispublicbody\n" +
  15088. " ,goodsid\n" +
  15089. " ,goodscode\n" +
  15090. " ,goodsname\n" +
  15091. " ,userid\n" +
  15092. " ,groutingdailyid\n" +
  15093. " ,groutingdailydetailid\n" +
  15094. " ,groutingdate\n" +
  15095. " ,groutinglineid\n" +
  15096. " ,groutinglinecode\n" +
  15097. " ,groutinglinename\n" +
  15098. " ,gmouldtypeid\n" +
  15099. " ,canmanytimes\n" +
  15100. " ,groutinglinedetailid\n" +
  15101. " ,groutingmouldcode\n" +
  15102. " ,mouldcode\n" +
  15103. " ,remarks\n" +
  15104. " ,accountid\n" +
  15105. " ,valueflag\n" +
  15106. " ,createtime\n" +
  15107. " ,createuserid\n" +
  15108. " ,updatetime\n" +
  15109. " ,updateuserid\n" +
  15110. " ,optimestamp\n" +
  15111. " ,isrefire\n" +
  15112. " ,goodslevelid\n" +
  15113. " ,goodsleveltypeid\n" +
  15114. " ,defectflag\n" +
  15115. " ,groutinguserid\n" +
  15116. " ,groutingusercode\n" +
  15117. " ,groutingnum\n" +
  15118. " ,kilnid\n" +
  15119. " ,kilncode\n" +
  15120. " ,kilnname\n" +
  15121. " ,kilncarid\n" +
  15122. " ,kilncarcode\n" +
  15123. " ,kilncarname\n" +
  15124. " ,kilncarbatchno\n" +
  15125. " ,kilncarposition\n" +
  15126. " ,specialrepairflag\n" +
  15127. " ,flowprocedureid\n" +
  15128. " ,flowproceduretime\n" +
  15129. " ,procedureid\n" +
  15130. " ,proceduretime\n" +
  15131. " ,productiondataid\n" +
  15132. " ,deleteduserid\n" +
  15133. " ,deletedusercode\n" +
  15134. " --,trashflag\n" +
  15135. " --,deletedtime\n" +
  15136. " ,logoid)\n" +
  15137. " SELECT barcode\n" +
  15138. " ,productionlineid\n" +
  15139. " ,productionlinecode\n" +
  15140. " ,productionlinename\n" +
  15141. " ,proceduremodel\n" +
  15142. " ,modeltype\n" +
  15143. " ,reworkprocedureid\n" +
  15144. " ,ispublicbody\n" +
  15145. " ,goodsid\n" +
  15146. " ,goodscode\n" +
  15147. " ,goodsname\n" +
  15148. " ,userid\n" +
  15149. " ,groutingdailyid\n" +
  15150. " ,groutingdailydetailid\n" +
  15151. " ,groutingdate\n" +
  15152. " ,groutinglineid\n" +
  15153. " ,groutinglinecode\n" +
  15154. " ,groutinglinename\n" +
  15155. " ,gmouldtypeid\n" +
  15156. " ,canmanytimes\n" +
  15157. " ,groutinglinedetailid\n" +
  15158. " ,groutingmouldcode\n" +
  15159. " ,mouldcode\n" +
  15160. " ,remarks\n" +
  15161. " ,accountid\n" +
  15162. " ,valueflag\n" +
  15163. " ,createtime\n" +
  15164. " ,createuserid\n" +
  15165. " ,updatetime\n" +
  15166. " ,updateuserid\n" +
  15167. " ,optimestamp\n" +
  15168. " ,isrefire\n" +
  15169. " ,goodslevelid\n" +
  15170. " ,goodsleveltypeid\n" +
  15171. " ,defectflag\n" +
  15172. " ,groutinguserid\n" +
  15173. " ,groutingusercode\n" +
  15174. " ,groutingnum\n" +
  15175. " ,kilnid\n" +
  15176. " ,kilncode\n" +
  15177. " ,kilnname\n" +
  15178. " ,kilncarid\n" +
  15179. " ,kilncarcode\n" +
  15180. " ,kilncarname\n" +
  15181. " ,kilncarbatchno\n" +
  15182. " ,kilncarposition\n" +
  15183. " ,specialrepairflag\n" +
  15184. " ,flowprocedureid\n" +
  15185. " ,flowproceduretime\n" +
  15186. " ,procedureid\n" +
  15187. " ,proceduretime\n" +
  15188. " ,productiondataid\n" +
  15189. " ,:deleteduserid\n" +
  15190. " ,:deletedusercode\n" +
  15191. " --,inscrapflag\n" +
  15192. " ,logoid\n" +
  15193. " FROM tp_pm_inproduction p\n" +
  15194. " WHERE p.barcode = :barcode\n" +
  15195. " AND p.modeltype not in (1,2,3,6)\n" +
  15196. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15197. //" AND p.IsReworkFlag <> '1' AND p.InScrapFlag <> '1' \n" +
  15198. " AND p.IsReworkFlag = '0' AND p.InScrapFlag = '0' \n" +
  15199. "";
  15200. Paras = new OracleParameter[] {
  15201. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15202. subbarcodes[i],ParameterDirection.Input),
  15203. new OracleParameter(":deleteduserid",OracleDbType.Int32,
  15204. sUserInfo.UserID,ParameterDirection.Input),
  15205. new OracleParameter(":deletedusercode",OracleDbType.NVarchar2,
  15206. sUserInfo.UserCode,ParameterDirection.Input),
  15207. };
  15208. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15209. // 3 删除在产数据
  15210. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15211. //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'";
  15212. 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'";
  15213. Paras = new OracleParameter[] {
  15214. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15215. subbarcodes[i],ParameterDirection.Input),
  15216. };
  15217. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15218. if (returnRows > 0)
  15219. {
  15220. // 4. 删除在产生产数据
  15221. sql = @" delete from tp_pm_productiondatain p where p.barcode = :barcode";
  15222. Paras = new OracleParameter[] {
  15223. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15224. subbarcodes[i],ParameterDirection.Input),
  15225. };
  15226. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15227. }
  15228. }
  15229. if (returnRows <= 0)
  15230. {
  15231. oracleTrConn.Rollback();
  15232. oracleTrConn.Disconnect();
  15233. }
  15234. else
  15235. {
  15236. oracleTrConn.Commit();
  15237. oracleTrConn.Disconnect();
  15238. }
  15239. }
  15240. catch (Exception ex)
  15241. {
  15242. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15243. {
  15244. oracleTrConn.Rollback();
  15245. oracleTrConn.Disconnect();
  15246. }
  15247. throw ex;
  15248. }
  15249. finally
  15250. {
  15251. if (oracleTrConn.ConnState == ConnectionState.Open)
  15252. {
  15253. oracleTrConn.Disconnect();
  15254. }
  15255. }
  15256. return returnRows;
  15257. }
  15258. /// <summary>
  15259. /// 清除未盘点残留数据(根据条件进行选择)
  15260. /// </summary>
  15261. /// <param name="inCheckedID">盘点单ID</param>
  15262. /// <param name="procedureIDs">完成工序集</param>
  15263. /// <param name="goodsCodes">产品编码集</param>
  15264. /// <returns></returns>
  15265. public static int SaveClearInCheckedAll(int inCheckedID, string procedureIDs, string goodsCodes, DateTime? startDateTime, DateTime? endDateTime, SUserInfo sUserInfo)
  15266. {
  15267. int returnRows = 0;
  15268. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15269. try
  15270. {
  15271. OracleParameter[] Paras = null;
  15272. string Insql = "";
  15273. // 1 查出根据条件进行未盘点数据
  15274. // 0.登窑、入窑、出窑工序的产品不能清除
  15275. Insql = @"select p.barcode from TP_PM_INCHECKEDDETAIL p "
  15276. + " inner join tp_pm_inproduction pin on pin.barcode = p.barcode and p.PROCEDUREID = pin.PROCEDUREID"
  15277. + " 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'";
  15278. if (!string.IsNullOrEmpty(procedureIDs))
  15279. {
  15280. Insql += " and p.PROCEDUREID in (" + procedureIDs + ")";
  15281. }
  15282. if (!string.IsNullOrEmpty(goodsCodes))
  15283. {
  15284. Insql += " and p.GoodsID in (" + goodsCodes + ")";
  15285. }
  15286. if (startDateTime != null)
  15287. {
  15288. Insql += Insql + " AND pin.ProcedureTime >= :Createdate AND pin.ProcedureTime <= :EndDate ";
  15289. Paras = new OracleParameter[] {
  15290. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  15291. new OracleParameter(":Createdate", OracleDbType.Date, startDateTime, ParameterDirection.Input),
  15292. new OracleParameter(":EndDate", OracleDbType.Date, endDateTime, ParameterDirection.Input),
  15293. };
  15294. }
  15295. else
  15296. {
  15297. Paras = new OracleParameter[] {
  15298. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  15299. };
  15300. }
  15301. string sql = "";
  15302. // 1.清除未盘点数据
  15303. 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'";
  15304. //Paras = new OracleParameter[] {
  15305. // new OracleParameter(":InCheckedID",OracleDbType.Int32,
  15306. // inCheckedID,ParameterDirection.Input)
  15307. // };
  15308. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15309. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  15310. sql = @"insert into tp_pm_inproduction_tmp
  15311. (
  15312. BARCODE,
  15313. PRODUCTIONLINEID,
  15314. PRODUCTIONLINECODE,
  15315. PRODUCTIONLINENAME,
  15316. PROCEDUREMODEL,
  15317. MODELTYPE,
  15318. REWORKPROCEDUREID,
  15319. ISPUBLICBODY,
  15320. GOODSID,
  15321. GOODSCODE,
  15322. GOODSNAME,
  15323. USERID,
  15324. GROUTINGDAILYID,
  15325. GROUTINGDAILYDETAILID,
  15326. GROUTINGDATE,
  15327. GROUTINGLINEID,
  15328. GROUTINGLINECODE,
  15329. GROUTINGLINENAME,
  15330. GMOULDTYPEID,
  15331. CANMANYTIMES,
  15332. GROUTINGLINEDETAILID,
  15333. GROUTINGMOULDCODE,
  15334. MOULDCODE,
  15335. REMARKS,
  15336. ACCOUNTID,
  15337. VALUEFLAG,
  15338. CREATETIME,
  15339. CREATEUSERID,
  15340. UPDATETIME,
  15341. UPDATEUSERID,
  15342. OPTIMESTAMP,
  15343. ISREFIRE,
  15344. GOODSLEVELID,
  15345. GOODSLEVELTYPEID,
  15346. DEFECTFLAG,
  15347. GROUTINGUSERID,
  15348. GROUTINGUSERCODE,
  15349. GROUTINGNUM,
  15350. KILNID,
  15351. KILNCODE,
  15352. KILNNAME,
  15353. KILNCARID,
  15354. KILNCARCODE,
  15355. KILNCARNAME,
  15356. KILNCARBATCHNO,
  15357. KILNCARPOSITION,
  15358. SPECIALREPAIRFLAG,
  15359. FLOWPROCEDUREID,
  15360. FLOWPROCEDURETIME,
  15361. PROCEDUREID,
  15362. PROCEDURETIME,
  15363. PRODUCTIONDATAID,
  15364. trashflag,
  15365. Deletedtime,
  15366. logoid,
  15367. IsReworkFlag,
  15368. SemiCheckID,
  15369. DELETEDUSERID,
  15370. DELETEDUSERCODE
  15371. )
  15372. select
  15373. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15374. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  15375. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  15376. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15377. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15378. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15379. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  15380. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15381. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  15382. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15383. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15384. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  15385. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,sysdate,logoid,ISREWORKFLAG,SEMICHECKID,"
  15386. + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  15387. "' from tp_pm_inproduction pp where pp.barcode in (" + Insql + ")";
  15388. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15389. // 4. 删除在产生产数据
  15390. sql = @" delete from tp_pm_productiondatain pp where pp.barcode in(" + Insql + ")";
  15391. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15392. // 3 删除在产数据
  15393. sql = @" delete from tp_pm_inproduction pp where pp.barcode in(" + Insql + ")";
  15394. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15395. sql = @" update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '3' where p.INCHECKEDFLAG='9' and p.InCheckedID=" + inCheckedID;
  15396. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15397. if (returnRows == 0)
  15398. {
  15399. oracleTrConn.Rollback();
  15400. oracleTrConn.Disconnect();
  15401. }
  15402. else
  15403. {
  15404. oracleTrConn.Commit();
  15405. oracleTrConn.Disconnect();
  15406. }
  15407. }
  15408. catch (Exception ex)
  15409. {
  15410. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15411. {
  15412. oracleTrConn.Rollback();
  15413. oracleTrConn.Disconnect();
  15414. }
  15415. throw ex;
  15416. }
  15417. finally
  15418. {
  15419. if (oracleTrConn.ConnState == ConnectionState.Open)
  15420. {
  15421. oracleTrConn.Disconnect();
  15422. }
  15423. }
  15424. return returnRows;
  15425. }
  15426. /// <summary>
  15427. /// 设置条码商标
  15428. /// </summary>
  15429. /// <returns></returns>
  15430. public static int SaveBarCodeLogo(string barcode, int logoid, SUserInfo sUserInfo)
  15431. {
  15432. int returnRows = 0;
  15433. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15434. try
  15435. {
  15436. // 转换条码
  15437. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  15438. OracleParameter[] paras1 = new OracleParameter[]{
  15439. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  15440. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  15441. };
  15442. barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  15443. OracleParameter[] Paras = null;
  15444. object oldLogoID = null;
  15445. object pid = null;
  15446. string sql = "";
  15447. sql = @"select logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  15448. oldLogoID = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  15449. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  15450. });
  15451. // 1.更新注浆明细
  15452. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15453. Paras = new OracleParameter[] {
  15454. new OracleParameter(":logoid",OracleDbType.Int32,
  15455. logoid,ParameterDirection.Input),
  15456. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15457. sUserInfo.UserID,ParameterDirection.Input),
  15458. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15459. barcode,ParameterDirection.Input)
  15460. };
  15461. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15462. // 2.在产产品
  15463. sql = @"update tp_pm_inproduction set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15464. //Paras = new OracleParameter[] {
  15465. // new OracleParameter(":logoid",OracleDbType.Int32,
  15466. // logoid,ParameterDirection.Input),
  15467. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15468. // sUserInfo.UserID,ParameterDirection.Input),
  15469. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15470. // barcode,ParameterDirection.Input)
  15471. // };
  15472. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15473. if (returnRows > 0)
  15474. {
  15475. sql = @"select ProcedureID from tp_pm_inproduction where barcode=:barcode";
  15476. pid = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  15477. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  15478. });
  15479. }
  15480. // 3.在产回收站
  15481. sql = @"update tp_pm_inproductiontrash set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15482. //Paras = new OracleParameter[] {
  15483. // new OracleParameter(":logoid",OracleDbType.Int32,
  15484. // logoid,ParameterDirection.Input),
  15485. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15486. // sUserInfo.UserID,ParameterDirection.Input),
  15487. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15488. // barcode,ParameterDirection.Input)
  15489. // };
  15490. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15491. // 4.在产临时表
  15492. sql = @"update tp_pm_inproduction_tmp set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15493. //Paras = new OracleParameter[] {
  15494. // new OracleParameter(":logoid",OracleDbType.Int32,
  15495. // logoid,ParameterDirection.Input),
  15496. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15497. // sUserInfo.UserID,ParameterDirection.Input),
  15498. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15499. // barcode,ParameterDirection.Input)
  15500. // };
  15501. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15502. // 5.成品表
  15503. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15504. //Paras = new OracleParameter[] {
  15505. // new OracleParameter(":logoid",OracleDbType.Int32,
  15506. // logoid,ParameterDirection.Input),
  15507. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15508. // sUserInfo.UserID,ParameterDirection.Input),
  15509. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15510. // barcode,ParameterDirection.Input)
  15511. // };
  15512. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15513. // 6 在产盘点明细
  15514. sql = @"update TP_PM_InCheckedDetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15515. //Paras = new OracleParameter[] {
  15516. // new OracleParameter(":logoid",OracleDbType.Int32,
  15517. // logoid,ParameterDirection.Input),
  15518. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15519. // sUserInfo.UserID,ParameterDirection.Input),
  15520. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15521. // barcode,ParameterDirection.Input)
  15522. // };
  15523. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15524. // 7 半成品检验登记
  15525. sql = @"update TP_PM_SemiCheck set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15526. //Paras = new OracleParameter[] {
  15527. // new OracleParameter(":logoid",OracleDbType.Int32,
  15528. // logoid,ParameterDirection.Input),
  15529. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15530. // sUserInfo.UserID,ParameterDirection.Input),
  15531. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15532. // barcode,ParameterDirection.Input)
  15533. // };
  15534. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15535. // 8 废弃产品
  15536. sql = @"update TP_PM_ScrapProduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15537. //Paras = new OracleParameter[] {
  15538. // new OracleParameter(":logoid",OracleDbType.Int32,
  15539. // logoid,ParameterDirection.Input),
  15540. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15541. // sUserInfo.UserID,ParameterDirection.Input),
  15542. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15543. // barcode,ParameterDirection.Input)
  15544. // };
  15545. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15546. // 9 在产生产数据
  15547. sql = @"update TP_PM_ProductionDataIn set Triggerflag=1, logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15548. //Paras = new OracleParameter[] {
  15549. // new OracleParameter(":logoid",OracleDbType.Int32,
  15550. // logoid,ParameterDirection.Input),
  15551. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15552. // sUserInfo.UserID,ParameterDirection.Input),
  15553. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15554. // barcode,ParameterDirection.Input)
  15555. // };
  15556. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15557. // 10 生产数据
  15558. sql = @"update TP_PM_ProductionData set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15559. //Paras = new OracleParameter[] {
  15560. // new OracleParameter(":logoid",OracleDbType.Int32,
  15561. // logoid,ParameterDirection.Input),
  15562. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15563. // sUserInfo.UserID,ParameterDirection.Input),
  15564. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15565. // barcode,ParameterDirection.Input)
  15566. // };
  15567. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15568. // 变更履历
  15569. sql =
  15570. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  15571. " (BARCODE\n" +
  15572. " ,OLDLOGOID\n" +
  15573. " ,NEWLOGOID\n" +
  15574. " ,PROCEDUREID\n" +
  15575. " ,REMARKS\n" +
  15576. " ,ACCOUNTID\n" +
  15577. " ,CREATETIME\n" +
  15578. " ,CREATEUSERID)\n" +
  15579. "VALUES\n" +
  15580. " (:BARCODE\n" +
  15581. " ,:OLDLOGOID\n" +
  15582. " ,:NEWLOGOID\n" +
  15583. " ,:PROCEDUREID\n" +
  15584. " ,NULL\n" +
  15585. " ,:ACCOUNTID\n" +
  15586. " ,SYSDATE\n" +
  15587. " ,:CREATEUSERID)";
  15588. Paras = new OracleParameter[] {
  15589. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  15590. oldLogoID,ParameterDirection.Input),
  15591. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  15592. logoid,ParameterDirection.Input),
  15593. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  15594. pid,ParameterDirection.Input),
  15595. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  15596. sUserInfo.AccountID,ParameterDirection.Input),
  15597. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  15598. sUserInfo.UserID,ParameterDirection.Input),
  15599. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  15600. barcode,ParameterDirection.Input)
  15601. };
  15602. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15603. //if (returnRows == 0)
  15604. //{
  15605. // oracleTrConn.Rollback();
  15606. // oracleTrConn.Disconnect();
  15607. //}
  15608. //else
  15609. {
  15610. oracleTrConn.Commit();
  15611. oracleTrConn.Disconnect();
  15612. }
  15613. }
  15614. catch (Exception ex)
  15615. {
  15616. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15617. {
  15618. oracleTrConn.Rollback();
  15619. oracleTrConn.Disconnect();
  15620. }
  15621. throw ex;
  15622. }
  15623. return returnRows;
  15624. }
  15625. /// <summary>
  15626. /// 设置产成品商标
  15627. /// </summary>
  15628. /// <param name="barcodes"></param>
  15629. /// <param name="logoid"></param>
  15630. /// <param name="sUserInfo"></param>
  15631. /// <returns></returns>
  15632. public static int SetFinishedLogo(string[] barcodes, int logoid, SUserInfo sUserInfo)
  15633. {
  15634. int returnRows = 0;
  15635. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15636. try
  15637. {
  15638. OracleParameter[] Paras = null;
  15639. object oldLogoID = null;
  15640. object gdid = null;
  15641. //object pid = null;
  15642. string sql = "";
  15643. DataTable dataTable = null;
  15644. foreach (string barcode in barcodes)
  15645. {
  15646. sql = @"select groutingdailydetailid, logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  15647. dataTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
  15648. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  15649. });
  15650. if (dataTable == null || dataTable.Rows.Count == 0)
  15651. {
  15652. continue;
  15653. }
  15654. gdid = dataTable.Rows[0]["groutingdailydetailid"];
  15655. oldLogoID = dataTable.Rows[0]["logoid"];
  15656. // 1.更新注浆明细
  15657. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15658. Paras = new OracleParameter[] {
  15659. new OracleParameter(":logoid",OracleDbType.Int32,
  15660. logoid,ParameterDirection.Input),
  15661. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15662. sUserInfo.UserID,ParameterDirection.Input),
  15663. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15664. barcode,ParameterDirection.Input)
  15665. };
  15666. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15667. // 5.成品表
  15668. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15669. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15670. // 变更履历
  15671. sql =
  15672. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  15673. " (BARCODE\n" +
  15674. " ,OLDLOGOID\n" +
  15675. " ,NEWLOGOID\n" +
  15676. //" ,PROCEDUREID\n" +
  15677. " ,REMARKS\n" +
  15678. " ,ACCOUNTID\n" +
  15679. " ,CREATETIME\n" +
  15680. " ,CREATEUSERID)\n" +
  15681. "VALUES\n" +
  15682. " (:BARCODE\n" +
  15683. " ,:OLDLOGOID\n" +
  15684. " ,:NEWLOGOID\n" +
  15685. //" ,:PROCEDUREID\n" +
  15686. " ,NULL\n" +
  15687. " ,:ACCOUNTID\n" +
  15688. " ,SYSDATE\n" +
  15689. " ,:CREATEUSERID)";
  15690. Paras = new OracleParameter[] {
  15691. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  15692. oldLogoID,ParameterDirection.Input),
  15693. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  15694. logoid,ParameterDirection.Input),
  15695. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  15696. // pid,ParameterDirection.Input),
  15697. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  15698. sUserInfo.AccountID,ParameterDirection.Input),
  15699. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  15700. sUserInfo.UserID,ParameterDirection.Input),
  15701. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  15702. barcode,ParameterDirection.Input)
  15703. };
  15704. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15705. }
  15706. //if (returnRows == 0)
  15707. //{
  15708. // oracleTrConn.Rollback();
  15709. // oracleTrConn.Disconnect();
  15710. //}
  15711. //else
  15712. {
  15713. oracleTrConn.Commit();
  15714. oracleTrConn.Disconnect();
  15715. }
  15716. }
  15717. catch (Exception ex)
  15718. {
  15719. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15720. {
  15721. oracleTrConn.Rollback();
  15722. oracleTrConn.Disconnect();
  15723. }
  15724. throw ex;
  15725. }
  15726. return returnRows;
  15727. }
  15728. /// <summary>
  15729. /// 设置产成品订单
  15730. /// </summary>
  15731. /// <param name="barcodes"></param>
  15732. /// <param name="orderid"></param>
  15733. /// <param name="sUserInfo"></param>
  15734. /// <returns></returns>
  15735. public static int SetHandoveredOrder(string[] barcodes, int orderID, SUserInfo sUserInfo)
  15736. {
  15737. int returnRows = 0;
  15738. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15739. try
  15740. {
  15741. string sql = @"update tp_pm_finishedproduct set FHOrderID=:FHOrderID,updateuserid=:updateuserid where barcode=:barcode and FHOrderID is not null";
  15742. OracleParameter[] Paras = new OracleParameter[] {
  15743. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15744. "",ParameterDirection.Input),
  15745. new OracleParameter(":FHOrderID",OracleDbType.Int32,
  15746. orderID,ParameterDirection.Input),
  15747. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15748. sUserInfo.UserID,ParameterDirection.Input)
  15749. };
  15750. foreach (string barcode in barcodes)
  15751. {
  15752. Paras[0].Value = barcode;
  15753. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15754. }
  15755. oracleTrConn.Commit();
  15756. oracleTrConn.Disconnect();
  15757. }
  15758. catch (Exception ex)
  15759. {
  15760. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15761. {
  15762. oracleTrConn.Rollback();
  15763. oracleTrConn.Disconnect();
  15764. }
  15765. throw ex;
  15766. }
  15767. return returnRows;
  15768. }
  15769. #endregion
  15770. /// <summary>
  15771. /// 添加生产数据
  15772. /// </summary>
  15773. /// <param name="oracleTrConn">连接对象</param>
  15774. /// <param name="accountDate">账务日期</param>
  15775. /// <param name="productionData">生产数据</param>
  15776. /// <param name="sUserInfo">用户基本信息</param>
  15777. /// <returns>string</returns>
  15778. /// <remarks>
  15779. /// 陈冰 2014.09.18 新建
  15780. /// </remarks>
  15781. private static string AddProductionDataWaster(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  15782. {
  15783. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  15784. string selectSql = "";
  15785. string returnVal = "";
  15786. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  15787. //xuwei fix 2019-09-26 使用通用方法判定
  15788. // 2019-1016
  15789. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  15790. //if (isNodeBegin == 1) productionData.NodeType = (int)Constant.ProcedureNodeType.Begin;
  15791. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)
  15792. {
  15793. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  15794. if (isNodeBegin == 0)
  15795. {
  15796. productionData.NodeType = (int)Constant.ProcedureNodeType.Middle;
  15797. }
  15798. }
  15799. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  15800. {
  15801. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  15802. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  15803. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  15804. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  15805. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  15806. TP_PM_GroutingDailyDetail.MouldCode,
  15807. TP_PM_GroutingDailyDetail.GroutingDailyID,
  15808. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  15809. TP_PM_GroutingDailyDetail.GroutingLineID,
  15810. TP_PM_GroutingDailyDetail.GroutingLineCode,
  15811. TP_PM_GroutingDailyDetail.GroutingLineName,
  15812. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  15813. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  15814. (select GMouldTypeID
  15815. from TP_PM_GroutingDaily
  15816. where TP_PM_GroutingDaily.GroutingDailyID =
  15817. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  15818. (select CanManyTimes
  15819. from TP_PM_GroutingDaily
  15820. where TP_PM_GroutingDaily.GroutingDailyID =
  15821. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  15822. 0 as IsReFire
  15823. from TP_PM_GroutingDailyDetail
  15824. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  15825. }
  15826. else
  15827. {
  15828. selectSql = @"select
  15829. GroutingDate,
  15830. userid as GroutingUserID,
  15831. usercode as GroutingUserCode,
  15832. Groutingcount as GroutingNum,
  15833. GroutingMouldCode,
  15834. MouldCode,
  15835. GroutingDailyID,
  15836. GroutingDailyDetailID,
  15837. GroutingLineID,
  15838. GroutingLineCode,
  15839. GroutingLineName,
  15840. GMouldTypeID,
  15841. CanManyTimes,
  15842. GroutingLineDetailID,
  15843. SpecialRepairflag,
  15844. 0 as IsReFire,
  15845. logoid
  15846. from TP_PM_GroutingDailyDetail where barcode=:barcode
  15847. ";
  15848. }
  15849. OracleParameter[] selectparas = new OracleParameter[] {
  15850. new OracleParameter(":barcode",productionData.Barcode),
  15851. };
  15852. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  15853. DateTime GroutingDate = new DateTime();
  15854. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  15855. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  15856. int IsReFire = 0;
  15857. int? logoID = null;
  15858. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  15859. {
  15860. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  15861. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  15862. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  15863. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  15864. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  15865. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  15866. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  15867. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  15868. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  15869. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  15870. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  15871. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  15872. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  15873. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  15874. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  15875. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  15876. if (IsReFire > 0) //大于零代表重烧过
  15877. {
  15878. productionData.IsReFire = IsReFire;
  15879. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  15880. }
  15881. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  15882. {
  15883. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  15884. }
  15885. //if (productionData.LogoID != null) //当前工序有商标
  15886. //{
  15887. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  15888. // {
  15889. // logoID = productionData.LogoID;
  15890. // //根据明细ID.update
  15891. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  15892. // OracleParameter[] paras2 = new OracleParameter[] {
  15893. // new OracleParameter(":logoid",productionData.LogoID)
  15894. // };
  15895. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  15896. // }
  15897. //}
  15898. returnVal = SpecialRepairflag.ToString();
  15899. }
  15900. #endregion
  15901. #region 更新窑炉窑车属性
  15902. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  15903. {
  15904. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  15905. if (ds != null)
  15906. {
  15907. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  15908. {
  15909. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  15910. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  15911. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  15912. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  15913. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  15914. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  15915. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  15916. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  15917. }
  15918. }
  15919. }
  15920. #endregion
  15921. #region SQL
  15922. string sql = "insert into tp_pm_productiondataIn"
  15923. + " (productiondataid,"
  15924. + " barcode,"
  15925. + " centralizedbatchno,"
  15926. + " productionlineid,"
  15927. + " productionlinecode,"
  15928. + " productionlinename,"
  15929. + " procedureid,"
  15930. + " procedurecode,"
  15931. + " procedurename,"
  15932. + " proceduremodel,"
  15933. + " modeltype,"
  15934. + " piecetype,"
  15935. + " isreworked,"
  15936. + " nodetype,"
  15937. + " ispublicbody,"
  15938. + " isrefire,"
  15939. + " organizationid,"
  15940. + " goodsid,"
  15941. + " goodscode,"
  15942. + " goodsname,"
  15943. + " userid,"
  15944. + " usercode,"
  15945. + " username,"
  15946. + " kilnid,"
  15947. + " kilncode,"
  15948. + " kilnname,"
  15949. + " kilncarid,"
  15950. + " kilncarcode,"
  15951. + " kilncarname,"
  15952. + " kilncarbatchno,"
  15953. + " kilncarposition,"
  15954. + " reworkprocedureid,"
  15955. + " reworkprocedurecode,"
  15956. + " reworkprocedurename,"
  15957. + " remarks,"
  15958. + " accountdate,"
  15959. + " accountid,"
  15960. + " GoodsLevelID,"
  15961. + " GoodsLevelTypeID,"
  15962. + " createuserid,"
  15963. + " updateuserid,"
  15964. + " GroutingDate,"
  15965. + " GroutingUserID,"
  15966. + " GroutingUserCode,"
  15967. + " GroutingNum,"
  15968. + " GroutingMouldCode,"
  15969. + " MouldCode,"
  15970. + "GroutingDailyID,"
  15971. + "GroutingDailyDetailID,"
  15972. + "GroutingLineID,"
  15973. + " GroutingLineCode,"
  15974. + "GroutingLineName,"
  15975. + "GMouldTypeID,"
  15976. + "CanManyTimes,"
  15977. + "GroutingLineDetailID,"
  15978. + "SpecialRepairflag,"
  15979. + "ClassesSettingID,"
  15980. + "LogoID"
  15981. + ")"
  15982. + " values"
  15983. + " (:productiondataid,"
  15984. + " :barcode,"
  15985. + " :centralizedbatchno,"
  15986. + " :productionlineid,"
  15987. + " :productionlinecode,"
  15988. + " :productionlinename,"
  15989. + " :procedureid,"
  15990. + " :procedurecode,"
  15991. + " :procedurename,"
  15992. + " :proceduremodel,"
  15993. + " :modeltype,"
  15994. + " :piecetype,"
  15995. + " :isreworked,"
  15996. + " :nodetype,"
  15997. + " :ispublicbody,"
  15998. + " :isrefire,"
  15999. + " :organizationid,"
  16000. + " :goodsid,"
  16001. + " :goodscode,"
  16002. + " :goodsname,"
  16003. + " :userid,"
  16004. + " :usercode,"
  16005. + " :username,"
  16006. + " :kilnid,"
  16007. + " :kilncode,"
  16008. + " :kilnname,"
  16009. + " :kilncarid,"
  16010. + " :kilncarcode,"
  16011. + " :kilncarname,"
  16012. + " :kilncarbatchno,"
  16013. + " :kilncarposition,"
  16014. + " :reworkprocedureid,"
  16015. + " :reworkprocedurecode,"
  16016. + " :reworkprocedurename,"
  16017. + " :remarks,"
  16018. + " :accountdata,"
  16019. + " :accountid,"
  16020. + " :GoodsLevelID,"
  16021. + " :GoodsLevelTypeID,"
  16022. + " :createuserid,"
  16023. + " :updateuserid,"
  16024. + " :groutingdate,"
  16025. + " :groutinguserid,"
  16026. + " :groutingusercode,"
  16027. + " :groutingnum,"
  16028. + " :groutingmouldcode,"
  16029. + " :mouldcode,"
  16030. + ":groutingdailyid,"
  16031. + ":groutingdailydetailid,"
  16032. + ":groutinglineid,"
  16033. + " :groutinglinecode,"
  16034. + ":groutinglinename,"
  16035. + ":gmouldtypeid,"
  16036. + ":canmanytimes,"
  16037. + ":groutinglinedetailid,"
  16038. + ":specialRepairflag,"
  16039. + ":classesSettingID,"
  16040. + ":logoID"
  16041. + ")";
  16042. #endregion
  16043. #region OracleParameter
  16044. OracleParameter[] paras = new OracleParameter[] {
  16045. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  16046. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  16047. new OracleParameter(":barcode",productionData.Barcode),
  16048. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  16049. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  16050. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  16051. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  16052. new OracleParameter(":procedureid",productionData.ProcedureID),
  16053. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  16054. new OracleParameter(":procedurename",productionData.ProcedureName),
  16055. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  16056. new OracleParameter(":modeltype",productionData.ModelType),
  16057. new OracleParameter(":piecetype",productionData.PieceType),
  16058. new OracleParameter(":isreworked",productionData.IsReworked),
  16059. new OracleParameter(":nodetype",productionData.NodeType),
  16060. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  16061. new OracleParameter(":isrefire",productionData.IsReFire),
  16062. new OracleParameter(":organizationid",productionData.OrganizationID),
  16063. new OracleParameter(":goodsid",productionData.GoodsID),
  16064. new OracleParameter(":goodscode",productionData.GoodsCode),
  16065. new OracleParameter(":goodsname",productionData.GoodsName),
  16066. new OracleParameter(":userid",productionData.UserID),
  16067. new OracleParameter(":usercode",productionData.UserCode),
  16068. new OracleParameter(":username",productionData.UserName),
  16069. new OracleParameter(":kilnid",productionData.KilnID),
  16070. new OracleParameter(":kilncode",productionData.KilnCode),
  16071. new OracleParameter(":kilnname",productionData.KilnName),
  16072. new OracleParameter(":kilncarid",productionData.KilnCarID),
  16073. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  16074. new OracleParameter(":kilncarname",productionData.KilnCarName),
  16075. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  16076. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  16077. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  16078. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  16079. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  16080. new OracleParameter(":remarks",productionData.Remarks),
  16081. new OracleParameter(":accountdata",accountDate),
  16082. new OracleParameter(":accountid",sUserInfo.AccountID),
  16083. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  16084. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  16085. new OracleParameter(":createuserid",sUserInfo.UserID),
  16086. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16087. new OracleParameter(":groutingdate",GroutingDate),
  16088. new OracleParameter(":groutinguserid",GroutingUserID),
  16089. new OracleParameter(":groutingusercode",GroutingUserCode),
  16090. new OracleParameter(":groutingnum",GroutingNum),
  16091. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  16092. new OracleParameter(":mouldcode",MouldCode),
  16093. new OracleParameter(":groutingdailyid",GroutingDailyID),
  16094. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  16095. new OracleParameter(":groutinglineid",GroutingLineID),
  16096. new OracleParameter(":groutinglinecode",GroutingLineCode),
  16097. new OracleParameter(":groutinglinename",GroutingLineName),
  16098. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  16099. new OracleParameter(":canmanytimes",CanManyTimes),
  16100. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  16101. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  16102. new OracleParameter(":logoID",logoID),
  16103. };
  16104. #endregion
  16105. foreach (OracleParameter para in paras)
  16106. {
  16107. if (string.IsNullOrEmpty(para.Value + ""))
  16108. {
  16109. para.Value = DBNull.Value;
  16110. }
  16111. }
  16112. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  16113. OutSpecialRepairflag = returnVal;
  16114. // 失败
  16115. if (result != Constant.INT_IS_ONE)
  16116. {
  16117. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16118. }
  16119. // 成功返回null
  16120. return null;
  16121. }
  16122. #region 保存半检登记
  16123. /// <summary>
  16124. /// 保存半检登记
  16125. /// </summary>
  16126. /// <param name="entity">半检实体类</param>
  16127. /// <param name="sUserInfo">用户基本信息</param>
  16128. /// <returns>ServiceResultEntity</returns>
  16129. /// <remarks>
  16130. /// 王鑫 2016.06.27 新建
  16131. /// </remarks>
  16132. public static ServiceResultEntity AddSemiCheck(SemiCheckEntity[] entityobj, SUserInfo sUserInfo)
  16133. {
  16134. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16135. oracleTrConn.IgnoreCase = false;
  16136. ServiceResultEntity resultEntity = new ServiceResultEntity();
  16137. try
  16138. {
  16139. oracleTrConn.Connect();
  16140. SemiCheckEntity entity = entityobj[0];
  16141. string errMsg = "";
  16142. if (entity.SemiCheckCategory == 1) // 半检登记
  16143. {
  16144. errMsg = AddNormalSemiCheck(oracleTrConn, entity, sUserInfo);
  16145. }
  16146. else if (entity.SemiCheckCategory == 2)// 复检登记
  16147. {
  16148. errMsg = AddReSemiCheck(oracleTrConn, entity, sUserInfo);
  16149. }
  16150. else if (entity.SemiCheckCategory == 3)// 撤销复检
  16151. {
  16152. errMsg = AddCancelSemiCheck(oracleTrConn, entity, sUserInfo);
  16153. }
  16154. // 没有错误 提交事务
  16155. if (string.IsNullOrEmpty(errMsg))
  16156. {
  16157. oracleTrConn.Commit();
  16158. }
  16159. else
  16160. {
  16161. resultEntity.Message = errMsg;
  16162. }
  16163. }
  16164. catch (Exception ex)
  16165. {
  16166. oracleTrConn.Rollback();
  16167. throw ex;
  16168. }
  16169. finally
  16170. {
  16171. // 释放资源
  16172. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  16173. {
  16174. oracleTrConn.Disconnect();
  16175. }
  16176. }
  16177. return resultEntity;
  16178. }
  16179. #endregion
  16180. /// <summary>
  16181. /// 半检数据
  16182. /// </summary>
  16183. /// <param name="oracleTrConn">数据连接对象</param>
  16184. /// <param name="entity">半检实体类</param>
  16185. /// <param name="sUserInfo">用户基本信息</param>
  16186. /// <returns>string</returns>
  16187. /// <remarks>
  16188. /// 王鑫 2016.06.27 新建
  16189. /// </remarks>
  16190. private static string AddNormalSemiCheck(IDBTransaction oracleTrConn,
  16191. SemiCheckEntity entity,
  16192. SUserInfo sUserInfo)
  16193. {
  16194. try
  16195. {
  16196. // 获得账务日期
  16197. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  16198. string errMsg = string.Empty;
  16199. // 本批采集的批次号
  16200. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  16201. // 条码
  16202. string barcode = entity.BarCode;
  16203. if (string.IsNullOrEmpty(barcode))
  16204. {
  16205. throw new Exception("传入的条码号为空");
  16206. }
  16207. // 半检工号ID
  16208. int workUserID = Convert.ToInt32(entity.SemiCheckUserID);
  16209. // 半检工号编码
  16210. string workUserCode = entity.SemiCheckUserCode;
  16211. // 查询新插入的半检数据ID
  16212. string sql = "select SEQ_PM_SemiCheck_ID.nextval from dual";
  16213. string idStr = "";
  16214. if (entity.SemiCheckEditType == 1) //新增
  16215. {
  16216. idStr = oracleTrConn.GetSqlResultToStr(sql);
  16217. }
  16218. else if (entity.SemiCheckEditType == 2) //编辑返工
  16219. {
  16220. if (entity.SemiCheckType != "0") //正常
  16221. {
  16222. idStr = oracleTrConn.GetSqlResultToStr(sql);
  16223. }
  16224. }
  16225. else if (entity.SemiCheckEditType == 3) //编辑不合格
  16226. {
  16227. if (entity.SemiCheckType != "0") //正常
  16228. {
  16229. idStr = oracleTrConn.GetSqlResultToStr(sql);
  16230. }
  16231. }
  16232. // 保存时再验证,前台已有缺陷不能为空的验证,但还是产生了无责任和缺陷记录的数据,后台保存时增加验证。
  16233. if (!string.IsNullOrEmpty(idStr) && (entity.SemiCheckDefects == null || entity.SemiCheckDefects.Count == 0))
  16234. {
  16235. errMsg = "缺陷责任记录不能为空";
  16236. return errMsg;
  16237. }
  16238. if (entity.SemiCheckEditType == 1) //新增
  16239. {
  16240. #region 校验条码有效性
  16241. errMsg = CheckBarcodeByNew(oracleTrConn, barcode, sUserInfo);
  16242. if (!string.IsNullOrEmpty(errMsg))
  16243. {
  16244. return errMsg;
  16245. }
  16246. #endregion
  16247. #region 添加半检数据
  16248. entity.SemiCheckID = Convert.ToInt32(idStr);
  16249. if (entity.SemiCheckType == "2")
  16250. {
  16251. errMsg = AddSemiCheckDataNoPass(oracleTrConn, entity, sUserInfo);
  16252. }
  16253. else
  16254. {
  16255. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  16256. }
  16257. if (!string.IsNullOrEmpty(errMsg))
  16258. {
  16259. return errMsg;
  16260. }
  16261. #endregion
  16262. #region 条码有缺陷
  16263. #region 是次品 添加废弃产品
  16264. string ResponProcedureidStr = "";
  16265. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  16266. {
  16267. #region 添加废弃产品
  16268. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  16269. #region 属性赋值
  16270. scrapProduct.BarCode = entity.BarCode;
  16271. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  16272. // 不能责任人吗? TODO 单独责任时,没有插入废品数据。
  16273. //scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  16274. scrapProduct.ResponType = (int)Constant.ScrapResponType.Person;
  16275. scrapProduct.ScrapDate = accountDate;// sysdate
  16276. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  16277. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  16278. scrapProduct.Auditor = sUserInfo.UserID;
  16279. scrapProduct.AuditlDate = accountDate;// sysdate
  16280. scrapProduct.AccountDate = accountDate;
  16281. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  16282. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  16283. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16284. {
  16285. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  16286. }
  16287. scrapProduct.GoodsLevelTypeID = 13;
  16288. //scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  16289. // 查询新插入的废弃ID
  16290. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  16291. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  16292. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16293. scrapProduct.ScrapType = 2;
  16294. #endregion
  16295. // 保存报废
  16296. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  16297. // 保存失败
  16298. if (!string.IsNullOrEmpty(errMsg))
  16299. {
  16300. return errMsg;
  16301. }
  16302. #endregion
  16303. }
  16304. #endregion
  16305. // 存在缺陷 插入缺陷表
  16306. if (entity.SemiCheckDefects != null)
  16307. {
  16308. int row = 0;
  16309. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  16310. {
  16311. if (row == 0)
  16312. {
  16313. #region 保存缺陷
  16314. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  16315. semiCheckDefect.ScrapResponFlag
  16316. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  16317. // 保存缺陷
  16318. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  16319. if (!string.IsNullOrEmpty(errMsg))
  16320. {
  16321. return errMsg;
  16322. }
  16323. #endregion
  16324. #region 是不合格 添加废弃责任工序
  16325. if (entity.SemiCheckType == "2")
  16326. {
  16327. //if (semiCheckDefect.DefectProcedureID != null)
  16328. {
  16329. #region 添加责任工序
  16330. ResponProcedureEntity responProce = new ResponProcedureEntity();
  16331. // 新建-不合格 获取生产线及生产数据ID
  16332. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  16333. OracleParameter[] oracleParameters = new OracleParameter[] {
  16334. new OracleParameter(":barcode",entity.BarCode),
  16335. };
  16336. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  16337. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16338. {
  16339. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  16340. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  16341. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  16342. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  16343. }
  16344. //新建-不合格 获取生产线及生产数据ID end
  16345. #region 属性赋值
  16346. responProce.BarCode = entity.BarCode;
  16347. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  16348. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  16349. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  16350. responProce.UserID = semiCheckDefect.DefectUserID;
  16351. responProce.UserCode = semiCheckDefect.DefectUserCode;
  16352. responProce.UserName = semiCheckDefect.DefectUserName;
  16353. responProce.Remarks = semiCheckDefect.Remarks;
  16354. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16355. #endregion
  16356. // 保存责任工序
  16357. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  16358. // 保存失败
  16359. if (!string.IsNullOrEmpty(errMsg))
  16360. {
  16361. return errMsg;
  16362. }
  16363. #endregion
  16364. }
  16365. }
  16366. #endregion
  16367. }
  16368. row++;
  16369. }
  16370. }
  16371. #endregion
  16372. #region 条码是不合格 删除在产产品数据
  16373. if (entity.SemiCheckType == "2") //新建时不合格
  16374. {
  16375. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  16376. sql = @"update TP_PM_InProduction set GoodsLevelID=
  16377. (
  16378. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16379. )
  16380. ,GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  16381. where barcode=:barcode";
  16382. OracleParameter[] oracleParameters = new OracleParameter[] {
  16383. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  16384. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  16385. new OracleParameter(":accountid",sUserInfo.AccountID),
  16386. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16387. new OracleParameter(":barcode",entity.BarCode),
  16388. // new OracleParameter(":createuserid",sUserInfo.UserID),
  16389. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16390. };
  16391. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16392. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  16393. string sqlInsert = @"insert into TP_PM_InProductionTrash
  16394. (
  16395. BarCode,
  16396. ProductionLineID,
  16397. ProductionLineCode,
  16398. ProductionLineName,
  16399. ProcedureModel,
  16400. ModelType,
  16401. DefectFlag,
  16402. ReworkProcedureID,
  16403. IsPublicBody,
  16404. IsReFire,
  16405. GoodsLevelID,
  16406. GoodsLevelTypeID,
  16407. GoodsID,
  16408. GoodsCode,
  16409. GoodsName,
  16410. UserID,
  16411. GroutingDailyID,
  16412. GroutingDailyDetailID,
  16413. GroutingDate,
  16414. GroutingLineID,
  16415. GroutingLineCode,
  16416. GroutingLineName,
  16417. GMouldTypeID,
  16418. CanManyTimes,
  16419. GroutingLineDetailID,
  16420. GroutingMouldCode,
  16421. MouldCode,
  16422. GroutingUserID,
  16423. GroutingUserCode,
  16424. GroutingNum,
  16425. Remarks,
  16426. KilnID,
  16427. KilnCode,
  16428. KilnName,
  16429. KilnCarID,
  16430. KilnCarCode,
  16431. KilnCarName,
  16432. KilnCarBatchNo,
  16433. KilnCarPosition,
  16434. AccountID,
  16435. ValueFlag,
  16436. CreateUserID,
  16437. UpdateUserID,
  16438. SpecialRepairflag,
  16439. FlowProcedureID,
  16440. FlowProcedureTime,
  16441. ProcedureID,
  16442. ProcedureTime,
  16443. ProductionDataID,
  16444. logoid,
  16445. ISREWORKFLAG, SEMICHECKID
  16446. )
  16447. select
  16448. BarCode,
  16449. ProductionLineID,
  16450. ProductionLineCode,
  16451. ProductionLineName,
  16452. ProcedureModel,
  16453. ModelType,
  16454. DefectFlag,
  16455. ReworkProcedureID,
  16456. IsPublicBody,
  16457. IsReFire,
  16458. -- GoodsLevelID,
  16459. --GoodsLevelTypeID,
  16460. (
  16461. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16462. )
  16463. ,13,
  16464. GoodsID,
  16465. GoodsCode,
  16466. GoodsName,
  16467. UserID,
  16468. GroutingDailyID,
  16469. GroutingDailyDetailID,
  16470. GroutingDate,
  16471. GroutingLineID,
  16472. GroutingLineCode,
  16473. GroutingLineName,
  16474. GMouldTypeID,
  16475. CanManyTimes,
  16476. GroutingLineDetailID,
  16477. GroutingMouldCode,
  16478. MouldCode,
  16479. GroutingUserID,
  16480. GroutingUserCode,
  16481. GroutingNum,
  16482. Remarks,
  16483. KilnID,
  16484. KilnCode,
  16485. KilnName,
  16486. KilnCarID,
  16487. KilnCarCode,
  16488. KilnCarName,
  16489. KilnCarBatchNo,
  16490. KilnCarPosition,
  16491. AccountID,
  16492. ValueFlag,
  16493. :CreateUserID,
  16494. :UpdateUserID,
  16495. SpecialRepairflag,
  16496. FlowProcedureID,
  16497. FlowProcedureTime,
  16498. FlowProcedureID,
  16499. ProcedureTime,
  16500. ProductionDataID,
  16501. logoid,
  16502. ISREWORKFLAG, SEMICHECKID
  16503. from TP_PM_InProduction
  16504. where barcode=:barcode
  16505. ";
  16506. oracleParameters = new OracleParameter[] {
  16507. new OracleParameter(":barcode",entity.BarCode),
  16508. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16509. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16510. new OracleParameter(":accountid",sUserInfo.AccountID),
  16511. };
  16512. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16513. // 删除在产数据
  16514. sql = "delete tp_pm_inproduction where barcode = :barcode";
  16515. oracleParameters = new OracleParameter[] {
  16516. new OracleParameter(":barcode",entity.BarCode),
  16517. };
  16518. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16519. }
  16520. else if (entity.SemiCheckType == "1") //返工
  16521. {
  16522. sql = @"update TP_PM_InProduction set IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  16523. where barcode=:barcode";
  16524. OracleParameter[] oracleParameters = new OracleParameter[] {
  16525. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16526. new OracleParameter(":barcode",entity.BarCode),
  16527. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16528. };
  16529. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16530. }
  16531. #endregion
  16532. }
  16533. else if (entity.SemiCheckEditType == 2) //编辑返工
  16534. {
  16535. #region 校验条码有效性
  16536. errMsg = CheckBarcodeByEditRework(oracleTrConn, barcode, sUserInfo);
  16537. if (!string.IsNullOrEmpty(errMsg))
  16538. {
  16539. return errMsg;
  16540. }
  16541. #endregion
  16542. #region 删除当前半检数据
  16543. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  16544. if (!string.IsNullOrEmpty(errMsg))
  16545. {
  16546. return errMsg;
  16547. }
  16548. #endregion
  16549. if (entity.SemiCheckType != "0") //正常
  16550. {
  16551. #region 添加半检数据
  16552. entity.SemiCheckID = Convert.ToInt32(idStr);
  16553. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  16554. if (!string.IsNullOrEmpty(errMsg))
  16555. {
  16556. return errMsg;
  16557. }
  16558. #endregion
  16559. }
  16560. #region 条码有缺陷
  16561. #region 是次品 添加废弃产品
  16562. string ResponProcedureidStr = "";
  16563. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  16564. {
  16565. #region 添加废弃产品
  16566. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  16567. #region 属性赋值
  16568. scrapProduct.BarCode = entity.BarCode;
  16569. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  16570. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  16571. scrapProduct.ScrapDate = accountDate;
  16572. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  16573. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  16574. scrapProduct.Auditor = sUserInfo.UserID;
  16575. scrapProduct.AuditlDate = accountDate;
  16576. scrapProduct.AccountDate = accountDate;
  16577. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  16578. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  16579. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  16580. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  16581. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16582. {
  16583. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  16584. }
  16585. scrapProduct.GoodsLevelTypeID = 13;
  16586. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  16587. // 查询新插入的废弃ID
  16588. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  16589. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  16590. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16591. scrapProduct.ScrapType = 2;
  16592. #endregion
  16593. // 保存报废
  16594. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  16595. // 保存失败
  16596. if (!string.IsNullOrEmpty(errMsg))
  16597. {
  16598. return errMsg;
  16599. }
  16600. #endregion
  16601. }
  16602. #endregion
  16603. // 存在缺陷 插入缺陷表
  16604. if (entity.SemiCheckDefects != null)
  16605. {
  16606. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  16607. {
  16608. #region 保存缺陷
  16609. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  16610. semiCheckDefect.ScrapResponFlag
  16611. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  16612. // 保存缺陷
  16613. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  16614. if (!string.IsNullOrEmpty(errMsg))
  16615. {
  16616. return errMsg;
  16617. }
  16618. #endregion
  16619. #region 是不合格 添加废弃责任工序
  16620. if (entity.SemiCheckType == "2")
  16621. {
  16622. //if (semiCheckDefect.DefectProcedureID != null)
  16623. {
  16624. #region 添加责任工序
  16625. ResponProcedureEntity responProce = new ResponProcedureEntity();
  16626. // 获取生产线及生产数据ID
  16627. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  16628. OracleParameter[] oracleParameters = new OracleParameter[] {
  16629. new OracleParameter(":barcode",entity.BarCode),
  16630. };
  16631. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  16632. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16633. {
  16634. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  16635. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  16636. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  16637. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  16638. }
  16639. //获取生产线及生产数据ID end
  16640. #region 属性赋值
  16641. responProce.BarCode = entity.BarCode;
  16642. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  16643. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  16644. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  16645. responProce.UserID = semiCheckDefect.DefectUserID;
  16646. responProce.UserCode = semiCheckDefect.DefectUserCode;
  16647. responProce.UserName = semiCheckDefect.DefectUserName;
  16648. responProce.Remarks = semiCheckDefect.Remarks;
  16649. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16650. #endregion
  16651. // 保存责任工序
  16652. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  16653. // 保存失败
  16654. if (!string.IsNullOrEmpty(errMsg))
  16655. {
  16656. return errMsg;
  16657. }
  16658. #endregion
  16659. }
  16660. }
  16661. #endregion
  16662. }
  16663. }
  16664. #endregion
  16665. #region 条码是不合格 删除在产产品数据
  16666. if (entity.SemiCheckType == "2") //编辑时不合格
  16667. {
  16668. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  16669. sql = @"update TP_PM_InProduction set GoodsLevelID= (
  16670. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16671. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,IsReworkFlag=0,
  16672. updateuserid=:updateuserid
  16673. where barcode=:barcode";
  16674. OracleParameter[] oracleParameters = new OracleParameter[] {
  16675. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  16676. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  16677. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16678. new OracleParameter(":barcode",entity.BarCode),
  16679. //new OracleParameter(":createuserid",sUserInfo.UserID),
  16680. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16681. new OracleParameter(":accountid",sUserInfo.AccountID),
  16682. };
  16683. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16684. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  16685. string sqlInsert = @"insert into TP_PM_InProductionTrash
  16686. (
  16687. BarCode,
  16688. ProductionLineID,
  16689. ProductionLineCode,
  16690. ProductionLineName,
  16691. ProcedureModel,
  16692. ModelType,
  16693. DefectFlag,
  16694. ReworkProcedureID,
  16695. IsPublicBody,
  16696. IsReFire,
  16697. GoodsLevelID,
  16698. GoodsLevelTypeID,
  16699. GoodsID,
  16700. GoodsCode,
  16701. GoodsName,
  16702. UserID,
  16703. GroutingDailyID,
  16704. GroutingDailyDetailID,
  16705. GroutingDate,
  16706. GroutingLineID,
  16707. GroutingLineCode,
  16708. GroutingLineName,
  16709. GMouldTypeID,
  16710. CanManyTimes,
  16711. GroutingLineDetailID,
  16712. GroutingMouldCode,
  16713. MouldCode,
  16714. GroutingUserID,
  16715. GroutingUserCode,
  16716. GroutingNum,
  16717. Remarks,
  16718. KilnID,
  16719. KilnCode,
  16720. KilnName,
  16721. KilnCarID,
  16722. KilnCarCode,
  16723. KilnCarName,
  16724. KilnCarBatchNo,
  16725. KilnCarPosition,
  16726. AccountID,
  16727. ValueFlag,
  16728. CreateUserID,
  16729. UpdateUserID,
  16730. SpecialRepairflag,
  16731. FlowProcedureID,
  16732. FlowProcedureTime,
  16733. ProcedureID,
  16734. ProcedureTime,
  16735. ProductionDataID,
  16736. logoid, SEMICHECKID
  16737. )
  16738. select
  16739. BarCode,
  16740. ProductionLineID,
  16741. ProductionLineCode,
  16742. ProductionLineName,
  16743. ProcedureModel,
  16744. ModelType,
  16745. DefectFlag,
  16746. ReworkProcedureID,
  16747. IsPublicBody,
  16748. IsReFire,
  16749. -- GoodsLevelID,
  16750. --GoodsLevelTypeID,
  16751. (
  16752. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16753. )
  16754. ,13,
  16755. GoodsID,
  16756. GoodsCode,
  16757. GoodsName,
  16758. UserID,
  16759. GroutingDailyID,
  16760. GroutingDailyDetailID,
  16761. GroutingDate,
  16762. GroutingLineID,
  16763. GroutingLineCode,
  16764. GroutingLineName,
  16765. GMouldTypeID,
  16766. CanManyTimes,
  16767. GroutingLineDetailID,
  16768. GroutingMouldCode,
  16769. MouldCode,
  16770. GroutingUserID,
  16771. GroutingUserCode,
  16772. GroutingNum,
  16773. Remarks,
  16774. KilnID,
  16775. KilnCode,
  16776. KilnName,
  16777. KilnCarID,
  16778. KilnCarCode,
  16779. KilnCarName,
  16780. KilnCarBatchNo,
  16781. KilnCarPosition,
  16782. AccountID,
  16783. ValueFlag,
  16784. :CreateUserID,
  16785. :UpdateUserID,
  16786. SpecialRepairflag,
  16787. FlowProcedureID,
  16788. FlowProcedureTime,
  16789. FlowProcedureID,
  16790. ProcedureTime,
  16791. ProductionDataID,
  16792. logoid,
  16793. :SemiCheckID
  16794. from TP_PM_InProduction
  16795. where barcode=:barcode
  16796. ";
  16797. oracleParameters = new OracleParameter[] {
  16798. new OracleParameter(":barcode",entity.BarCode),
  16799. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16800. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16801. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16802. new OracleParameter(":accountid",sUserInfo.AccountID),
  16803. };
  16804. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16805. // 删除在产数据
  16806. sql = "delete tp_pm_inproduction where barcode = :barcode";
  16807. oracleParameters = new OracleParameter[] {
  16808. new OracleParameter(":barcode",entity.BarCode),
  16809. };
  16810. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16811. }
  16812. else if (entity.SemiCheckType == "1") //返工
  16813. {
  16814. sql = @"update TP_PM_InProduction set IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  16815. where barcode=:barcode";
  16816. OracleParameter[] oracleParameters = new OracleParameter[] {
  16817. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16818. new OracleParameter(":barcode",entity.BarCode),
  16819. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16820. };
  16821. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16822. }
  16823. else if (entity.SemiCheckType == "0") //正常
  16824. {
  16825. sql = @"update TP_PM_InProduction set IsReworkFlag=0,SemiCheckID=null,updateuserid=:updateuserid
  16826. where barcode=:barcode";
  16827. OracleParameter[] oracleParameters = new OracleParameter[] {
  16828. new OracleParameter(":barcode",entity.BarCode),
  16829. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16830. };
  16831. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16832. }
  16833. #endregion
  16834. }
  16835. else if (entity.SemiCheckEditType == 3) //编辑不合格
  16836. {
  16837. #region 校验条码有效性
  16838. errMsg = CheckBarcodeByEditNoPass(oracleTrConn, barcode, sUserInfo);
  16839. if (!string.IsNullOrEmpty(errMsg))
  16840. {
  16841. return errMsg;
  16842. }
  16843. #endregion
  16844. #region 删除当前半检数据
  16845. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  16846. if (!string.IsNullOrEmpty(errMsg))
  16847. {
  16848. return errMsg;
  16849. }
  16850. #endregion
  16851. if (entity.SemiCheckType != "0") //正常
  16852. {
  16853. #region 添加半检数据
  16854. entity.SemiCheckID = Convert.ToInt32(idStr);
  16855. errMsg = AddSemiCheckDataTrash(oracleTrConn, entity, sUserInfo);
  16856. if (!string.IsNullOrEmpty(errMsg))
  16857. {
  16858. return errMsg;
  16859. }
  16860. #endregion
  16861. }
  16862. #region 条码是不合格 删除在产产品数据
  16863. OracleParameter[] spParameters = null;
  16864. int spResult = 0;
  16865. if (entity.SemiCheckType == "2") //编辑时不合格
  16866. {
  16867. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  16868. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  16869. " from TP_PM_ScrapProduct sp\n" +
  16870. " where sp.barcode = :barcode\n" +
  16871. " and sp.auditstatus = 1\n" +
  16872. " and sp.valueflag = '1'\n" +
  16873. " and sp.scraptype = '2'";
  16874. spParameters = new OracleParameter[] {
  16875. new OracleParameter(":barcode",entity.BarCode),
  16876. };
  16877. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  16878. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  16879. spParameters = new OracleParameter[] {
  16880. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16881. new OracleParameter(":scrapproductid",scrapproductid),
  16882. };
  16883. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16884. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  16885. //oracleParameters = new OracleParameter[] {
  16886. // new OracleParameter(":barcode",entity.BarCode),
  16887. //};
  16888. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16889. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  16890. //OracleParameter[] oracleParameters = new OracleParameter[] {
  16891. // new OracleParameter(":barcode",entity.BarCode),
  16892. //};
  16893. //int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16894. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  16895. //oracleParameters = new OracleParameter[] {
  16896. // new OracleParameter(":barcode",entity.BarCode),
  16897. //};
  16898. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16899. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  16900. ////oracleParameters = new OracleParameter[] {
  16901. //// new OracleParameter(":barcode",entity.BarCode),
  16902. ////};
  16903. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16904. #endregion
  16905. #region 2.修改在产回收站表中的数据(产品等级【13不合格】,半检登记ID=新记录的半检登记ID)。
  16906. sql = @"update TP_PM_InProductionTrash set GoodsLevelID= (
  16907. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16908. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID where barcode=:barcode";
  16909. OracleParameter[] oracleParameters = new OracleParameter[] {
  16910. new OracleParameter(":barcode",entity.BarCode),
  16911. new OracleParameter(":accountid",sUserInfo.AccountID),
  16912. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  16913. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16914. };
  16915. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16916. #endregion
  16917. #region 条码有缺陷
  16918. #region 是次品 添加废弃产品
  16919. string ResponProcedureidStr = "";
  16920. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  16921. {
  16922. #region 添加废弃产品
  16923. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  16924. #region 属性赋值
  16925. scrapProduct.BarCode = entity.BarCode;
  16926. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  16927. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  16928. scrapProduct.ScrapDate = accountDate;
  16929. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  16930. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  16931. scrapProduct.Auditor = sUserInfo.UserID;
  16932. scrapProduct.AuditlDate = accountDate;
  16933. scrapProduct.AccountDate = accountDate;
  16934. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  16935. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  16936. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16937. {
  16938. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  16939. }
  16940. scrapProduct.GoodsLevelTypeID = 13;
  16941. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  16942. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  16943. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  16944. // 查询新插入的废弃ID
  16945. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  16946. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  16947. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16948. scrapProduct.ScrapType = 2;
  16949. #endregion
  16950. // 保存报废
  16951. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  16952. // 保存失败
  16953. if (!string.IsNullOrEmpty(errMsg))
  16954. {
  16955. return errMsg;
  16956. }
  16957. #endregion
  16958. }
  16959. #endregion
  16960. // 存在缺陷 插入缺陷表
  16961. if (entity.SemiCheckDefects != null)
  16962. {
  16963. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  16964. {
  16965. #region 保存缺陷
  16966. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  16967. semiCheckDefect.ScrapResponFlag
  16968. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  16969. // 保存缺陷
  16970. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  16971. if (!string.IsNullOrEmpty(errMsg))
  16972. {
  16973. return errMsg;
  16974. }
  16975. #endregion
  16976. #region 是不合格 添加废弃责任工序
  16977. if (entity.SemiCheckType == "2")
  16978. {
  16979. //if (semiCheckDefect.DefectProcedureID != null)
  16980. {
  16981. #region 添加责任工序
  16982. ResponProcedureEntity responProce = new ResponProcedureEntity();
  16983. // 取生产线及生产数据ID
  16984. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProductionTrash where barcode=:barcode";
  16985. oracleParameters = new OracleParameter[] {
  16986. new OracleParameter(":barcode",entity.BarCode),
  16987. };
  16988. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  16989. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16990. {
  16991. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  16992. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  16993. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  16994. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  16995. }
  16996. //获取生产线及生产数据ID end
  16997. #region 属性赋值
  16998. responProce.BarCode = entity.BarCode;
  16999. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  17000. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  17001. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  17002. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  17003. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  17004. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  17005. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  17006. responProce.UserID = semiCheckDefect.DefectUserID;
  17007. responProce.UserCode = semiCheckDefect.DefectUserCode;
  17008. responProce.UserName = semiCheckDefect.DefectUserName;
  17009. responProce.Remarks = semiCheckDefect.Remarks;
  17010. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  17011. #endregion
  17012. // 保存责任工序
  17013. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  17014. // 保存失败
  17015. if (!string.IsNullOrEmpty(errMsg))
  17016. {
  17017. return errMsg;
  17018. }
  17019. #endregion
  17020. }
  17021. }
  17022. #endregion
  17023. }
  17024. }
  17025. #endregion
  17026. }
  17027. else if (entity.SemiCheckType == "1") //返工
  17028. {
  17029. #region 1.从在产回收站中把数据恢复到在产表中。
  17030. string sqlInsert = @"insert into TP_PM_InProduction
  17031. (
  17032. BarCode,
  17033. ProductionLineID,
  17034. ProductionLineCode,
  17035. ProductionLineName,
  17036. ProcedureModel,
  17037. ModelType,
  17038. DefectFlag,
  17039. ReworkProcedureID,
  17040. IsPublicBody,
  17041. IsReFire,
  17042. GoodsLevelID,
  17043. GoodsLevelTypeID,
  17044. GoodsID,
  17045. GoodsCode,
  17046. GoodsName,
  17047. UserID,
  17048. GroutingDailyID,
  17049. GroutingDailyDetailID,
  17050. GroutingDate,
  17051. GroutingLineID,
  17052. GroutingLineCode,
  17053. GroutingLineName,
  17054. GMouldTypeID,
  17055. CanManyTimes,
  17056. GroutingLineDetailID,
  17057. GroutingMouldCode,
  17058. MouldCode,
  17059. GroutingUserID,
  17060. GroutingUserCode,
  17061. GroutingNum,
  17062. Remarks,
  17063. KilnID,
  17064. KilnCode,
  17065. KilnName,
  17066. KilnCarID,
  17067. KilnCarCode,
  17068. KilnCarName,
  17069. KilnCarBatchNo,
  17070. KilnCarPosition,
  17071. AccountID,
  17072. ValueFlag,
  17073. CreateUserID,
  17074. UpdateUserID,
  17075. SpecialRepairflag,
  17076. FlowProcedureID,
  17077. FlowProcedureTime,
  17078. ProcedureID,
  17079. ProcedureTime,
  17080. ProductionDataID,
  17081. logoid,
  17082. IsReworkFlag,
  17083. SemiCheckID
  17084. )
  17085. select
  17086. BarCode,
  17087. ProductionLineID,
  17088. ProductionLineCode,
  17089. ProductionLineName,
  17090. ProcedureModel,
  17091. ModelType,
  17092. DefectFlag,
  17093. ReworkProcedureID,
  17094. IsPublicBody,
  17095. IsReFire,
  17096. null,
  17097. null,
  17098. GoodsID,
  17099. GoodsCode,
  17100. GoodsName,
  17101. UserID,
  17102. GroutingDailyID,
  17103. GroutingDailyDetailID,
  17104. GroutingDate,
  17105. GroutingLineID,
  17106. GroutingLineCode,
  17107. GroutingLineName,
  17108. GMouldTypeID,
  17109. CanManyTimes,
  17110. GroutingLineDetailID,
  17111. GroutingMouldCode,
  17112. MouldCode,
  17113. GroutingUserID,
  17114. GroutingUserCode,
  17115. GroutingNum,
  17116. Remarks,
  17117. KilnID,
  17118. KilnCode,
  17119. KilnName,
  17120. KilnCarID,
  17121. KilnCarCode,
  17122. KilnCarName,
  17123. KilnCarBatchNo,
  17124. KilnCarPosition,
  17125. AccountID,
  17126. ValueFlag,
  17127. :CreateUserID,
  17128. :UpdateUserID,
  17129. SpecialRepairflag,
  17130. FlowProcedureID,
  17131. FlowProcedureTime,
  17132. FlowProcedureID,
  17133. ProcedureTime,
  17134. ProductionDataID,
  17135. logoid,
  17136. 1,
  17137. :SemiCheckID
  17138. from TP_PM_InProductionTrash
  17139. where barcode=:barcode
  17140. ";
  17141. OracleParameter[] oracleParameters = new OracleParameter[] {
  17142. new OracleParameter(":barcode",entity.BarCode),
  17143. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  17144. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  17145. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  17146. };
  17147. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  17148. #endregion
  17149. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  17150. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  17151. " from TP_PM_ScrapProduct sp\n" +
  17152. " where sp.barcode = :barcode\n" +
  17153. " and sp.auditstatus = 1\n" +
  17154. " and sp.valueflag = '1'\n" +
  17155. " and sp.scraptype = '2'";
  17156. spParameters = new OracleParameter[] {
  17157. new OracleParameter(":barcode",entity.BarCode),
  17158. };
  17159. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  17160. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  17161. spParameters = new OracleParameter[] {
  17162. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17163. new OracleParameter(":scrapproductid",scrapproductid),
  17164. };
  17165. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17166. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  17167. //oracleParameters = new OracleParameter[] {
  17168. // new OracleParameter(":barcode",entity.BarCode),
  17169. //};
  17170. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17171. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  17172. //oracleParameters = new OracleParameter[] {
  17173. // new OracleParameter(":barcode",entity.BarCode),
  17174. //};
  17175. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17176. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  17177. //oracleParameters = new OracleParameter[] {
  17178. // new OracleParameter(":barcode",entity.BarCode),
  17179. //};
  17180. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17181. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  17182. ////oracleParameters = new OracleParameter[] {
  17183. //// new OracleParameter(":barcode",entity.BarCode),
  17184. ////};
  17185. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17186. #endregion
  17187. #region 3.删除在产产品数据
  17188. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  17189. oracleParameters = new OracleParameter[] {
  17190. new OracleParameter(":barcode",entity.BarCode),
  17191. };
  17192. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17193. #endregion
  17194. #region 4.更新半检数据产品分级
  17195. sql = "update TP_PM_SemiCheck set GoodsLevelID=null,GoodsLevelTypeID=null where SemiCheckID=:SemiCheckID";
  17196. oracleParameters = new OracleParameter[] {
  17197. new OracleParameter(":SemiCheckID",idStr),
  17198. };
  17199. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17200. #endregion
  17201. #region 存在缺陷 插入缺陷表
  17202. if (entity.SemiCheckDefects != null)
  17203. {
  17204. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  17205. {
  17206. #region 保存缺陷
  17207. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  17208. semiCheckDefect.ScrapResponFlag
  17209. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  17210. // 保存缺陷
  17211. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  17212. if (!string.IsNullOrEmpty(errMsg))
  17213. {
  17214. return errMsg;
  17215. }
  17216. #endregion
  17217. }
  17218. }
  17219. #endregion
  17220. }
  17221. else if (entity.SemiCheckType == "0") //正常
  17222. {
  17223. #region 1.从在产回收站中把数据恢复到在产表中。
  17224. string sqlInsert = @"insert into TP_PM_InProduction
  17225. (
  17226. BarCode,
  17227. ProductionLineID,
  17228. ProductionLineCode,
  17229. ProductionLineName,
  17230. ProcedureModel,
  17231. ModelType,
  17232. DefectFlag,
  17233. ReworkProcedureID,
  17234. IsPublicBody,
  17235. IsReFire,
  17236. GoodsLevelID,
  17237. GoodsLevelTypeID,
  17238. GoodsID,
  17239. GoodsCode,
  17240. GoodsName,
  17241. UserID,
  17242. GroutingDailyID,
  17243. GroutingDailyDetailID,
  17244. GroutingDate,
  17245. GroutingLineID,
  17246. GroutingLineCode,
  17247. GroutingLineName,
  17248. GMouldTypeID,
  17249. CanManyTimes,
  17250. GroutingLineDetailID,
  17251. GroutingMouldCode,
  17252. MouldCode,
  17253. GroutingUserID,
  17254. GroutingUserCode,
  17255. GroutingNum,
  17256. Remarks,
  17257. KilnID,
  17258. KilnCode,
  17259. KilnName,
  17260. KilnCarID,
  17261. KilnCarCode,
  17262. KilnCarName,
  17263. KilnCarBatchNo,
  17264. KilnCarPosition,
  17265. AccountID,
  17266. ValueFlag,
  17267. CreateUserID,
  17268. UpdateUserID,
  17269. SpecialRepairflag,
  17270. FlowProcedureID,
  17271. FlowProcedureTime,
  17272. ProcedureID,
  17273. ProcedureTime,
  17274. ProductionDataID,
  17275. logoid,
  17276. IsReworkFlag,
  17277. SemiCheckID
  17278. )
  17279. select
  17280. BarCode,
  17281. ProductionLineID,
  17282. ProductionLineCode,
  17283. ProductionLineName,
  17284. ProcedureModel,
  17285. ModelType,
  17286. DefectFlag,
  17287. ReworkProcedureID,
  17288. IsPublicBody,
  17289. IsReFire,
  17290. null,
  17291. null,
  17292. GoodsID,
  17293. GoodsCode,
  17294. GoodsName,
  17295. UserID,
  17296. GroutingDailyID,
  17297. GroutingDailyDetailID,
  17298. GroutingDate,
  17299. GroutingLineID,
  17300. GroutingLineCode,
  17301. GroutingLineName,
  17302. GMouldTypeID,
  17303. CanManyTimes,
  17304. GroutingLineDetailID,
  17305. GroutingMouldCode,
  17306. MouldCode,
  17307. GroutingUserID,
  17308. GroutingUserCode,
  17309. GroutingNum,
  17310. Remarks,
  17311. KilnID,
  17312. KilnCode,
  17313. KilnName,
  17314. KilnCarID,
  17315. KilnCarCode,
  17316. KilnCarName,
  17317. KilnCarBatchNo,
  17318. KilnCarPosition,
  17319. AccountID,
  17320. ValueFlag,
  17321. :CreateUserID,
  17322. :UpdateUserID,
  17323. SpecialRepairflag,
  17324. FlowProcedureID,
  17325. FlowProcedureTime,
  17326. FlowProcedureID,
  17327. ProcedureTime,
  17328. ProductionDataID,
  17329. logoid,
  17330. 0,
  17331. null
  17332. from TP_PM_InProductionTrash
  17333. where barcode=:barcode
  17334. ";
  17335. OracleParameter[] oracleParameters = new OracleParameter[] {
  17336. new OracleParameter(":barcode",entity.BarCode),
  17337. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  17338. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  17339. };
  17340. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  17341. #endregion
  17342. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  17343. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  17344. " from TP_PM_ScrapProduct sp\n" +
  17345. " where sp.barcode = :barcode\n" +
  17346. " and sp.auditstatus = 1\n" +
  17347. " and sp.valueflag = '1'\n" +
  17348. " and sp.scraptype = '2'";
  17349. spParameters = new OracleParameter[] {
  17350. new OracleParameter(":barcode",entity.BarCode),
  17351. };
  17352. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  17353. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  17354. spParameters = new OracleParameter[] {
  17355. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17356. new OracleParameter(":scrapproductid",scrapproductid),
  17357. };
  17358. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17359. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  17360. //oracleParameters = new OracleParameter[] {
  17361. // new OracleParameter(":barcode",entity.BarCode),
  17362. //};
  17363. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17364. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  17365. //oracleParameters = new OracleParameter[] {
  17366. // new OracleParameter(":barcode",entity.BarCode),
  17367. //};
  17368. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17369. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  17370. //oracleParameters = new OracleParameter[] {
  17371. // new OracleParameter(":barcode",entity.BarCode),
  17372. //};
  17373. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17374. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  17375. ////oracleParameters = new OracleParameter[] {
  17376. //// new OracleParameter(":barcode",entity.BarCode),
  17377. ////};
  17378. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17379. #endregion
  17380. #region 3.删除在产回收站产品数据
  17381. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  17382. oracleParameters = new OracleParameter[] {
  17383. new OracleParameter(":barcode",entity.BarCode),
  17384. };
  17385. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17386. #endregion
  17387. }
  17388. #endregion
  17389. }
  17390. return errMsg;
  17391. }
  17392. catch (Exception ex)
  17393. {
  17394. throw ex;
  17395. }
  17396. }
  17397. /// <summary>
  17398. /// 校验条码有效(新建)
  17399. /// </summary>
  17400. /// <param name="oracleTrConn">连接对象</param>
  17401. /// <param name="barcode">条码</param>
  17402. /// <param name="sUserInfo">登录用户信息</param>
  17403. /// <returns>string</returns>
  17404. /// <remarks>
  17405. /// 王鑫 2016.06.27 新建
  17406. /// </remarks>
  17407. private static string CheckBarcodeByNew(IDBTransaction oracleTrConn,
  17408. string barcode,
  17409. SUserInfo sUserInfo
  17410. )
  17411. {
  17412. try
  17413. {
  17414. OracleParameter[] paras = new OracleParameter[]{
  17415. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17416. };
  17417. // 重复登记的问题 for update
  17418. string sql = @"
  17419. select InScrapFlag,
  17420. KilnCarID,
  17421. KilnCarName,
  17422. IsReworkFlag,
  17423. SemiCheckID from TP_PM_InProduction where barcode=:barcode for update
  17424. ";
  17425. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17426. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  17427. {
  17428. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  17429. {
  17430. return "条码[" + barcode + "]已经报损待审批";
  17431. }
  17432. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  17433. {
  17434. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  17435. }
  17436. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  17437. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  17438. {
  17439. return "条码[" + barcode + "]已经半检返工中";
  17440. }
  17441. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  17442. {
  17443. return "条码[" + barcode + "]已经半检返修中";
  17444. }
  17445. }
  17446. else
  17447. {
  17448. return "条码[" + barcode + "]不在在产流程";
  17449. }
  17450. return null;
  17451. }
  17452. catch (Exception ex)
  17453. {
  17454. throw ex;
  17455. }
  17456. }
  17457. /// <summary>
  17458. /// 校验条码有效(编辑返工)
  17459. /// </summary>
  17460. /// <param name="oracleTrConn">连接对象</param>
  17461. /// <param name="barcode">条码</param>
  17462. /// <param name="sUserInfo">登录用户信息</param>
  17463. /// <returns>string</returns>
  17464. /// <remarks>
  17465. /// 王鑫 2016.06.27 新建
  17466. /// </remarks>
  17467. private static string CheckBarcodeByEditRework(IDBTransaction oracleTrConn,
  17468. string barcode,
  17469. SUserInfo sUserInfo
  17470. )
  17471. {
  17472. try
  17473. {
  17474. OracleParameter[] paras = new OracleParameter[]{
  17475. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17476. };
  17477. // 重复登记的问题 for update
  17478. string sql = @"
  17479. select InScrapFlag,
  17480. KilnCarID,
  17481. KilnCarName,
  17482. IsReworkFlag,
  17483. SemiCheckID from TP_PM_InProduction where barcode=:barcode for update
  17484. ";
  17485. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17486. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  17487. {
  17488. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  17489. {
  17490. return "条码[" + barcode + "]已经报损待审批";
  17491. }
  17492. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  17493. {
  17494. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  17495. }
  17496. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  17497. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "1")
  17498. {
  17499. return "条码[" + barcode + "]不在返工中";
  17500. }
  17501. }
  17502. else
  17503. {
  17504. return "条码[" + barcode + "]不在在产流程";
  17505. }
  17506. return null;
  17507. }
  17508. catch (Exception ex)
  17509. {
  17510. throw ex;
  17511. }
  17512. }
  17513. /// <summary>
  17514. /// 校验条码有效(编辑不合格)
  17515. /// </summary>
  17516. /// <param name="oracleTrConn">连接对象</param>
  17517. /// <param name="barcode">条码</param>
  17518. /// <param name="sUserInfo">登录用户信息</param>
  17519. /// <returns>string</returns>
  17520. /// <remarks>
  17521. /// 王鑫 2016.06.27 新建
  17522. /// </remarks>
  17523. private static string CheckBarcodeByEditNoPass(IDBTransaction oracleTrConn,
  17524. string barcode,
  17525. SUserInfo sUserInfo
  17526. )
  17527. {
  17528. try
  17529. {
  17530. OracleParameter[] paras = new OracleParameter[]{
  17531. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17532. };
  17533. // 重复登记的问题 for update
  17534. string sql = @" select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=13 for update";
  17535. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17536. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  17537. {
  17538. return "条码[" + barcode + "]不在在产回收站中";
  17539. }
  17540. return null;
  17541. }
  17542. catch (Exception ex)
  17543. {
  17544. throw ex;
  17545. }
  17546. }
  17547. /// <summary>
  17548. /// 添加半成品检验数据
  17549. /// </summary>
  17550. /// <param name="oracleTrConn">连接对象</param>
  17551. /// <param name="accountDate">账务日期</param>
  17552. /// <param name="productionData">生产数据</param>
  17553. /// <param name="sUserInfo">用户基本信息</param>
  17554. /// <returns>string</returns>
  17555. /// <remarks>
  17556. /// 陈冰 2014.09.18 新建
  17557. /// </remarks>
  17558. private static string AddSemiCheckData(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  17559. {
  17560. #region SQL
  17561. string sql = "insert into tp_pm_semicheck"
  17562. + " (semicheckid,"
  17563. + " barcode,"
  17564. + " productionlineid,"
  17565. + " procedureid,"
  17566. + " proceduretime,"
  17567. + " proceduremodel,"
  17568. + " modeltype,"
  17569. + " organizationid,"
  17570. + " goodsid,"
  17571. + " goodscode,"
  17572. + " userid,"
  17573. + " usercode,"
  17574. + " productiondataid,"
  17575. + " logoid,"
  17576. + " ispublicbody,"
  17577. + " specialrepairflag,"
  17578. + " goodslevelid,"
  17579. + " goodsleveltypeid,"
  17580. + " groutingdailyid,"
  17581. + " groutingdailydetailid,"
  17582. + " groutinglineid,"
  17583. + " groutinglinecode,"
  17584. + " groutinglinename,"
  17585. + " gmouldtypeid,"
  17586. + " canmanytimes,"
  17587. + " groutinglinedetailid,"
  17588. + " groutingdate,"
  17589. + " groutingmouldcode,"
  17590. + " mouldcode,"
  17591. + " groutinguserid,"
  17592. + " groutingusercode,"
  17593. + " groutingnum,"
  17594. + " semichecktype,"
  17595. + " semicheckuserID,"
  17596. + " semicheckusercode,"
  17597. + " semichecktime,"
  17598. + " remarks,"
  17599. + " accountid,"
  17600. + " createuserid,"
  17601. + " updateuserid,"
  17602. + " reworkprocedureid,"
  17603. + " reworkprocedurecode,"
  17604. + " reworkuserid,"
  17605. + " reworkusercode"
  17606. + ")"
  17607. + " select"
  17608. + " :semicheckid,"
  17609. + " TP_PM_InProduction.barcode,"
  17610. + " TP_PM_InProduction.productionlineid,"
  17611. + " TP_PM_InProduction.procedureid,"
  17612. + " TP_PM_InProduction.proceduretime,"
  17613. + " TP_PM_InProduction.proceduremodel,"
  17614. + " TP_PM_InProduction.modeltype,"
  17615. + " tp_pc_procedure.organizationid,"
  17616. + " TP_PM_InProduction.goodsid,"
  17617. + " TP_PM_InProduction.goodscode,"
  17618. + " TP_PM_InProduction.userid,"
  17619. + " tp_mst_user.usercode,"
  17620. + " TP_PM_InProduction.productiondataid,"
  17621. + " TP_PM_InProduction.logoid,"
  17622. + " TP_PM_InProduction.ispublicbody,"
  17623. + " TP_PM_InProduction.specialrepairflag,"
  17624. + " TP_PM_InProduction.goodslevelid,"
  17625. + " TP_PM_InProduction.goodsleveltypeid,"
  17626. + " TP_PM_InProduction.groutingdailyid,"
  17627. + " TP_PM_InProduction.groutingdailydetailid,"
  17628. + " TP_PM_InProduction.groutinglineid,"
  17629. + " TP_PM_InProduction.groutinglinecode,"
  17630. + " TP_PM_InProduction.groutinglinename,"
  17631. + " TP_PM_InProduction.gmouldtypeid,"
  17632. + " TP_PM_InProduction.canmanytimes,"
  17633. + " TP_PM_InProduction.groutinglinedetailid,"
  17634. + " TP_PM_InProduction.groutingdate,"
  17635. + " TP_PM_InProduction.groutingmouldcode,"
  17636. + " TP_PM_InProduction.mouldcode,"
  17637. + " TP_PM_InProduction.groutinguserid,"
  17638. + " TP_PM_InProduction.groutingusercode,"
  17639. + " TP_PM_InProduction.groutingnum,"
  17640. + " :semichecktype,"
  17641. + " :semicheckuserID,"
  17642. + " :semicheckusercode,"
  17643. + " sysdate,"
  17644. + " :remarks,"
  17645. + " :accountid,"
  17646. + " :createuserid,"
  17647. + " :updateuserid,"
  17648. + " :reworkprocedureid,"
  17649. + " :reworkprocedurecode,"
  17650. + " :reworkuserid,"
  17651. + " :reworkusercode"
  17652. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  17653. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  17654. + " where TP_PM_InProduction.barcode=:barcode";
  17655. #endregion
  17656. #region OracleParameter
  17657. OracleParameter[] paras = new OracleParameter[] {
  17658. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17659. new OracleParameter(":semichecktype",entity.SemiCheckType),
  17660. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  17661. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  17662. new OracleParameter(":remarks",entity.Remarks),
  17663. new OracleParameter(":accountid",sUserInfo.AccountID),
  17664. new OracleParameter(":createuserid",sUserInfo.UserID),
  17665. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17666. new OracleParameter(":barcode",entity.BarCode),
  17667. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  17668. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  17669. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  17670. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  17671. };
  17672. #endregion
  17673. foreach (OracleParameter para in paras)
  17674. {
  17675. if (string.IsNullOrEmpty(para.Value + ""))
  17676. {
  17677. para.Value = DBNull.Value;
  17678. }
  17679. }
  17680. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  17681. // 失败
  17682. if (result != Constant.INT_IS_ONE)
  17683. {
  17684. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17685. }
  17686. // 成功返回null
  17687. return null;
  17688. }
  17689. /// <summary>
  17690. /// 添加半成品检验数据(不合格)
  17691. /// </summary>
  17692. /// <param name="oracleTrConn">连接对象</param>
  17693. /// <param name="accountDate">账务日期</param>
  17694. /// <param name="productionData">生产数据</param>
  17695. /// <param name="sUserInfo">用户基本信息</param>
  17696. /// <returns>string</returns>
  17697. /// <remarks>
  17698. /// 陈冰 2014.09.18 新建
  17699. /// </remarks>
  17700. private static string AddSemiCheckDataNoPass(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  17701. {
  17702. #region SQL
  17703. string sql = "insert into tp_pm_semicheck"
  17704. + " (semicheckid,"
  17705. + " barcode,"
  17706. + " productionlineid,"
  17707. + " procedureid,"
  17708. + " proceduretime,"
  17709. + " proceduremodel,"
  17710. + " modeltype,"
  17711. + " organizationid,"
  17712. + " goodsid,"
  17713. + " goodscode,"
  17714. + " userid,"
  17715. + " usercode,"
  17716. + " productiondataid,"
  17717. + " logoid,"
  17718. + " ispublicbody,"
  17719. + " specialrepairflag,"
  17720. + " goodslevelid,"
  17721. + " goodsleveltypeid,"
  17722. + " groutingdailyid,"
  17723. + " groutingdailydetailid,"
  17724. + " groutinglineid,"
  17725. + " groutinglinecode,"
  17726. + " groutinglinename,"
  17727. + " gmouldtypeid,"
  17728. + " canmanytimes,"
  17729. + " groutinglinedetailid,"
  17730. + " groutingdate,"
  17731. + " groutingmouldcode,"
  17732. + " mouldcode,"
  17733. + " groutinguserid,"
  17734. + " groutingusercode,"
  17735. + " groutingnum,"
  17736. + " semichecktype,"
  17737. + " semicheckuserID,"
  17738. + " semicheckusercode,"
  17739. + " semichecktime,"
  17740. + " remarks,"
  17741. + " accountid,"
  17742. + " createuserid,"
  17743. + " updateuserid,"
  17744. + " reworkprocedureid,"
  17745. + " reworkprocedurecode,"
  17746. + " reworkuserid,"
  17747. + " reworkusercode"
  17748. + ")"
  17749. + " select"
  17750. + " :semicheckid,"
  17751. + " TP_PM_InProduction.barcode,"
  17752. + " TP_PM_InProduction.productionlineid,"
  17753. + " TP_PM_InProduction.procedureid,"
  17754. + " TP_PM_InProduction.proceduretime,"
  17755. + " TP_PM_InProduction.proceduremodel,"
  17756. + " TP_PM_InProduction.modeltype,"
  17757. + " tp_pc_procedure.organizationid,"
  17758. + " TP_PM_InProduction.goodsid,"
  17759. + " TP_PM_InProduction.goodscode,"
  17760. + " TP_PM_InProduction.userid,"
  17761. + " tp_mst_user.usercode,"
  17762. + " TP_PM_InProduction.productiondataid,"
  17763. + " TP_PM_InProduction.logoid,"
  17764. + " TP_PM_InProduction.ispublicbody,"
  17765. + " TP_PM_InProduction.specialrepairflag,"
  17766. + " (select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid),"
  17767. + " 13,"
  17768. + " TP_PM_InProduction.groutingdailyid,"
  17769. + " TP_PM_InProduction.groutingdailydetailid,"
  17770. + " TP_PM_InProduction.groutinglineid,"
  17771. + " TP_PM_InProduction.groutinglinecode,"
  17772. + " TP_PM_InProduction.groutinglinename,"
  17773. + " TP_PM_InProduction.gmouldtypeid,"
  17774. + " TP_PM_InProduction.canmanytimes,"
  17775. + " TP_PM_InProduction.groutinglinedetailid,"
  17776. + " TP_PM_InProduction.groutingdate,"
  17777. + " TP_PM_InProduction.groutingmouldcode,"
  17778. + " TP_PM_InProduction.mouldcode,"
  17779. + " TP_PM_InProduction.groutinguserid,"
  17780. + " TP_PM_InProduction.groutingusercode,"
  17781. + " TP_PM_InProduction.groutingnum,"
  17782. + " :semichecktype,"
  17783. + " :semicheckuserID,"
  17784. + " :semicheckusercode,"
  17785. + " sysdate,"
  17786. + " :remarks,"
  17787. + " :accountid,"
  17788. + " :createuserid,"
  17789. + " :updateuserid,"
  17790. + " :reworkprocedureid,"
  17791. + " :reworkprocedurecode,"
  17792. + " :reworkuserid,"
  17793. + " :reworkusercode"
  17794. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  17795. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  17796. + " where TP_PM_InProduction.barcode=:barcode";
  17797. #endregion
  17798. #region OracleParameter
  17799. OracleParameter[] paras = new OracleParameter[] {
  17800. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17801. new OracleParameter(":semichecktype",entity.SemiCheckType),
  17802. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  17803. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  17804. new OracleParameter(":remarks",entity.Remarks),
  17805. new OracleParameter(":accountid",sUserInfo.AccountID),
  17806. new OracleParameter(":createuserid",sUserInfo.UserID),
  17807. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17808. new OracleParameter(":accountid",sUserInfo.AccountID),
  17809. new OracleParameter(":barcode",entity.BarCode),
  17810. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  17811. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  17812. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  17813. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  17814. };
  17815. #endregion
  17816. foreach (OracleParameter para in paras)
  17817. {
  17818. if (string.IsNullOrEmpty(para.Value + ""))
  17819. {
  17820. para.Value = DBNull.Value;
  17821. }
  17822. }
  17823. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  17824. // 失败
  17825. if (result != Constant.INT_IS_ONE)
  17826. {
  17827. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17828. }
  17829. // 成功返回null
  17830. return null;
  17831. }
  17832. /// <summary>
  17833. /// 添加半成品检验数据
  17834. /// </summary>
  17835. /// <param name="oracleTrConn">连接对象</param>
  17836. /// <param name="accountDate">账务日期</param>
  17837. /// <param name="productionData">生产数据</param>
  17838. /// <param name="sUserInfo">用户基本信息</param>
  17839. /// <returns>string</returns>
  17840. /// <remarks>
  17841. /// 陈冰 2014.09.18 新建
  17842. /// </remarks>
  17843. private static string AddSemiCheckDataTrash(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  17844. {
  17845. #region SQL
  17846. string sql = "insert into tp_pm_semicheck"
  17847. + " (semicheckid,"
  17848. + " barcode,"
  17849. + " productionlineid,"
  17850. + " procedureid,"
  17851. + " proceduretime,"
  17852. + " proceduremodel,"
  17853. + " modeltype,"
  17854. + " organizationid,"
  17855. + " goodsid,"
  17856. + " goodscode,"
  17857. + " userid,"
  17858. + " usercode,"
  17859. + " productiondataid,"
  17860. + " logoid,"
  17861. + " ispublicbody,"
  17862. + " specialrepairflag,"
  17863. + " goodslevelid,"
  17864. + " goodsleveltypeid,"
  17865. + " groutingdailyid,"
  17866. + " groutingdailydetailid,"
  17867. + " groutinglineid,"
  17868. + " groutinglinecode,"
  17869. + " groutinglinename,"
  17870. + " gmouldtypeid,"
  17871. + " canmanytimes,"
  17872. + " groutinglinedetailid,"
  17873. + " groutingdate,"
  17874. + " groutingmouldcode,"
  17875. + " mouldcode,"
  17876. + " groutinguserid,"
  17877. + " groutingusercode,"
  17878. + " groutingnum,"
  17879. + " semichecktype,"
  17880. + " semicheckuserID,"
  17881. + " semicheckusercode,"
  17882. + " semichecktime,"
  17883. + " remarks,"
  17884. + " accountid,"
  17885. + " createuserid,"
  17886. + " updateuserid,"
  17887. + " reworkprocedureid,"
  17888. + " reworkprocedurecode,"
  17889. + " reworkuserid,"
  17890. + " reworkusercode"
  17891. + ")"
  17892. + " select"
  17893. + " :semicheckid,"
  17894. + " trash.barcode,"
  17895. + " trash.productionlineid,"
  17896. + " trash.procedureid,"
  17897. + " trash.proceduretime,"
  17898. + " trash.proceduremodel,"
  17899. + " trash.modeltype,"
  17900. + " tp_pc_procedure.organizationid,"
  17901. + " trash.goodsid,"
  17902. + " trash.goodscode,"
  17903. + " trash.userid,"
  17904. + " tp_mst_user.usercode,"
  17905. + " trash.productiondataid,"
  17906. + " trash.logoid,"
  17907. + " trash.ispublicbody,"
  17908. + " trash.specialrepairflag,"
  17909. + " trash.goodslevelid,"
  17910. + " trash.goodsleveltypeid,"
  17911. + " trash.groutingdailyid,"
  17912. + " trash.groutingdailydetailid,"
  17913. + " trash.groutinglineid,"
  17914. + " trash.groutinglinecode,"
  17915. + " trash.groutinglinename,"
  17916. + " trash.gmouldtypeid,"
  17917. + " trash.canmanytimes,"
  17918. + " trash.groutinglinedetailid,"
  17919. + " trash.groutingdate,"
  17920. + " trash.groutingmouldcode,"
  17921. + " trash.mouldcode,"
  17922. + " trash.groutinguserid,"
  17923. + " trash.groutingusercode,"
  17924. + " trash.groutingnum,"
  17925. + " :semichecktype,"
  17926. + " :semicheckuserID,"
  17927. + " :semicheckusercode,"
  17928. + " sysdate,"
  17929. + " :remarks,"
  17930. + " :accountid,"
  17931. + " :createuserid,"
  17932. + " :updateuserid,"
  17933. + " :reworkprocedureid,"
  17934. + " :reworkprocedurecode,"
  17935. + " :reworkuserid,"
  17936. + " :reworkusercode"
  17937. + " from TP_PM_InProductionTrash trash left join tp_mst_user on trash.UserID=tp_mst_user.userid "
  17938. + " left join tp_pc_procedure on trash.ProcedureID=tp_pc_procedure.ProcedureID "
  17939. + " where trash.barcode=:barcode";
  17940. #endregion
  17941. #region OracleParameter
  17942. OracleParameter[] paras = new OracleParameter[] {
  17943. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17944. new OracleParameter(":semichecktype",entity.SemiCheckType),
  17945. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  17946. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  17947. new OracleParameter(":remarks",entity.Remarks),
  17948. new OracleParameter(":accountid",sUserInfo.AccountID),
  17949. new OracleParameter(":createuserid",sUserInfo.UserID),
  17950. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17951. new OracleParameter(":barcode",entity.BarCode),
  17952. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  17953. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  17954. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  17955. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  17956. };
  17957. #endregion
  17958. foreach (OracleParameter para in paras)
  17959. {
  17960. if (string.IsNullOrEmpty(para.Value + ""))
  17961. {
  17962. para.Value = DBNull.Value;
  17963. }
  17964. }
  17965. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  17966. // 失败
  17967. if (result != Constant.INT_IS_ONE)
  17968. {
  17969. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17970. }
  17971. // 成功返回null
  17972. return null;
  17973. }
  17974. /// <summary>
  17975. /// 添加半成品检验数据
  17976. /// </summary>
  17977. /// <param name="oracleTrConn">连接对象</param>
  17978. /// <param name="accountDate">账务日期</param>
  17979. /// <param name="productionData">生产数据</param>
  17980. /// <param name="sUserInfo">用户基本信息</param>
  17981. /// <returns>string</returns>
  17982. /// <remarks>
  17983. /// 陈冰 2014.09.18 新建
  17984. /// </remarks>
  17985. private static string SetSemiCheckDataValueFlag(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  17986. {
  17987. #region SQL
  17988. string sql = @"update TP_PM_SemiCheck
  17989. set BackOutUserID=:BackOutUserID,
  17990. BackOutUserCode=:BackOutUserCode,
  17991. BackOutFlag=1,
  17992. BackOutTime=sysdate,
  17993. ValueFlag='0',
  17994. updateuserid=:updateuserid
  17995. where semicheckid=:semicheckid";
  17996. #region OracleParameter
  17997. OracleParameter[] paras = new OracleParameter[] {
  17998. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17999. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18000. new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  18001. new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  18002. };
  18003. #endregion
  18004. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  18005. string sql2 = @"update TP_PM_SemiCheckDefect
  18006. set
  18007. ValueFlag='0',
  18008. updateuserid=:updateuserid
  18009. where semicheckid=:semicheckid";
  18010. string sql3 = @"update TP_PM_SCDefectResponsible
  18011. set
  18012. ValueFlag='0',
  18013. updateuserid=:updateuserid
  18014. where semicheckid=:semicheckid";
  18015. #endregion
  18016. #region OracleParameter
  18017. paras = new OracleParameter[] {
  18018. new OracleParameter(":semicheckid",entity.SemiCheckID),
  18019. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18020. };
  18021. #endregion
  18022. foreach (OracleParameter para in paras)
  18023. {
  18024. if (string.IsNullOrEmpty(para.Value + ""))
  18025. {
  18026. para.Value = DBNull.Value;
  18027. }
  18028. }
  18029. result += oracleTrConn.ExecuteNonQuery(sql2, paras);
  18030. result += oracleTrConn.ExecuteNonQuery(sql3, paras);
  18031. // 失败
  18032. if (result == Constant.INT_IS_ZERO)
  18033. {
  18034. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18035. }
  18036. // 成功返回null
  18037. return null;
  18038. }
  18039. /// <summary>
  18040. /// 保存半检缺陷
  18041. /// </summary>
  18042. /// <param name="oracleTrConn">连接对象</param>
  18043. /// <param name="productionDefect">缺陷数据</param>
  18044. /// <param name="sUserInfo">用户基本信息</param>
  18045. /// <returns>string</returns>
  18046. private static string AddSemiCheckDefect(IDBTransaction oracleTrConn, SemiCheckDefectEntity semiCheckDefect, SUserInfo sUserInfo)
  18047. {
  18048. // 查询新插入的半检缺陷ID
  18049. string sql = "select SEQ_PM_SemiCheckDefect_ID.nextval from dual";
  18050. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  18051. int semiCheckDefectID = 0;
  18052. if (!string.IsNullOrEmpty(idStr))
  18053. {
  18054. semiCheckDefectID = int.Parse(idStr);
  18055. }
  18056. else
  18057. {
  18058. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18059. }
  18060. #region SQL
  18061. sql = "insert into TP_PM_SemiCheckDefect"
  18062. + " (semicheckdefectid,"
  18063. + " semicheckid,"
  18064. + " defectid,"
  18065. + " defectcode,"
  18066. + " defectname,"
  18067. + " defectpositionid,"
  18068. + " defectpositioncode,"
  18069. + " defectpositionname,"
  18070. + " scrapResponFlag,"
  18071. + " defectproductiondataid,"
  18072. + " defectprocedureid,"
  18073. + " defectuserid,"
  18074. + " defectusercode,"
  18075. + " remarks,"
  18076. + " accountid,"
  18077. + " createuserid,"
  18078. + " updateuserid)"
  18079. + " values"
  18080. + " ("
  18081. + " :semicheckdefectid,"
  18082. + " :semicheckid,"
  18083. + " :defectid,"
  18084. + " :defectcode,"
  18085. + " :defectname,"
  18086. + " :defectpositionid,"
  18087. + " :defectpositioncode,"
  18088. + " :defectpositionname,"
  18089. + " :scrapResponFlag,"
  18090. + " :defectproductiondataid,"
  18091. + " :defectprocedureid,"
  18092. + " :defectuserid,"
  18093. + " :defectusercode,"
  18094. + " :remarks,"
  18095. + " :accountid,"
  18096. + " :createuserid,"
  18097. + " :updateuserid)";
  18098. #endregion
  18099. #region 参数
  18100. OracleParameter[] oracleParameters = new OracleParameter[] {
  18101. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  18102. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  18103. new OracleParameter(":defectid",semiCheckDefect.DefectID),
  18104. new OracleParameter(":defectcode",semiCheckDefect.DefectCode),
  18105. new OracleParameter(":defectname",semiCheckDefect.DefectName),
  18106. new OracleParameter(":defectpositionid",semiCheckDefect.DefectPositionID),
  18107. new OracleParameter(":defectpositioncode",semiCheckDefect.DefectPositionCode),
  18108. new OracleParameter(":defectpositionname",semiCheckDefect.DefectPositionName),
  18109. new OracleParameter(":scrapResponFlag",semiCheckDefect.ScrapResponFlag),
  18110. new OracleParameter(":defectproductiondataid",semiCheckDefect.DefectProductionDataID),
  18111. new OracleParameter(":defectprocedureid",semiCheckDefect.DefectProcedureID),
  18112. new OracleParameter(":defectuserid",semiCheckDefect.DefectUserID),
  18113. new OracleParameter(":defectusercode",semiCheckDefect.DefectUserCode),
  18114. new OracleParameter(":remarks",semiCheckDefect.Remarks),
  18115. new OracleParameter(":accountid",sUserInfo.AccountID),
  18116. new OracleParameter(":createuserid",sUserInfo.UserID),
  18117. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18118. };
  18119. #endregion
  18120. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18121. // 保存失败
  18122. if (result != Constant.INT_IS_ONE)
  18123. {
  18124. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18125. }
  18126. #region 插入生产缺陷责任者
  18127. if (semiCheckDefect.DefectResponsibles != null)
  18128. {
  18129. foreach (SemiCheckResponsibleEntity DefectResponsible in semiCheckDefect.DefectResponsibles)
  18130. {
  18131. #region SQL
  18132. sql = "insert into TP_PM_SCDefectResponsible"
  18133. + " (semicheckdefectid,"
  18134. + " staffid,"
  18135. + " semicheckid,"
  18136. + " userid,"
  18137. + " usercode,"
  18138. + " Ujobsid,"
  18139. + " SJobsID,"
  18140. + " staffstatus,"
  18141. + " accountid,"
  18142. + " createuserid,"
  18143. + " updateuserid)"
  18144. + " values"
  18145. + " (:semicheckdefectid,"
  18146. + " :staffid,"
  18147. + " :semicheckid,"
  18148. + " :userid,"
  18149. + " :usercode,"
  18150. + " :ujobsid,"
  18151. + " :sjobsid,"
  18152. + " :staffstatus,"
  18153. + " :accountid,"
  18154. + " :createuserid,"
  18155. + " :updateuserid)";
  18156. #endregion
  18157. #region 参数
  18158. oracleParameters = new OracleParameter[] {
  18159. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  18160. new OracleParameter(":staffid",DefectResponsible.StaffID),
  18161. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  18162. new OracleParameter(":userid",DefectResponsible.UserID),
  18163. new OracleParameter(":usercode",DefectResponsible.UserCode),
  18164. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  18165. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  18166. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  18167. new OracleParameter(":accountid",sUserInfo.AccountID),
  18168. new OracleParameter(":createuserid",sUserInfo.UserID),
  18169. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18170. };
  18171. #endregion
  18172. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18173. // 保存失败
  18174. if (result != Constant.INT_IS_ONE)
  18175. {
  18176. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18177. }
  18178. }
  18179. }
  18180. #endregion
  18181. return null;
  18182. }
  18183. /// <summary>
  18184. /// 添加责任工序
  18185. /// </summary>
  18186. /// <param name="oracleTrConn">连接对象</param>
  18187. /// <param name="responProce">责任工序</param>
  18188. /// <param name="productionDefect">缺陷数据</param>
  18189. /// <param name="sUserInfo">用户基本信息</param>
  18190. /// <returns>string</returns>
  18191. private static string AddSemiCheckResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, SemiCheckDefectEntity productionDefect, SUserInfo sUserInfo)
  18192. {
  18193. OracleParameter[] oracleParameters = null;
  18194. string sql = null;
  18195. int result = 0;
  18196. // 查询新插入ID
  18197. if (responProce.ProcedureID != null)
  18198. {
  18199. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  18200. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  18201. if (!string.IsNullOrEmpty(idStr))
  18202. {
  18203. responProce.ResponProcedureID = int.Parse(idStr);
  18204. }
  18205. else
  18206. {
  18207. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18208. }
  18209. #region SQL
  18210. sql = "insert into tp_pm_responprocedure"
  18211. + " (ResponProcedureID,"
  18212. + " scrapproductid,"
  18213. + " barcode,"
  18214. + " productiondataid,"
  18215. + " productionlineid,"
  18216. + " productionlinecode,"
  18217. + " productionlinename,"
  18218. + " procedureid,"
  18219. + " procedurecode,"
  18220. + " procedurename,"
  18221. + " userid,"
  18222. + " usercode,"
  18223. + " username,"
  18224. + " remarks,"
  18225. + " accountid,"
  18226. + " createuserid,"
  18227. + " updateuserid)"
  18228. + " values"
  18229. + " ("
  18230. + " :ResponProcedureID,"
  18231. + " :scrapproductid,"
  18232. + " :barcode,"
  18233. + " :productiondataid,"
  18234. + " :productionlineid,"
  18235. + " :productionlinecode,"
  18236. + " :productionlinename,"
  18237. + " :procedureid,"
  18238. + " :procedurecode,"
  18239. + " :procedurename,"
  18240. + " :userid,"
  18241. + " :usercode,"
  18242. + " :username,"
  18243. + " :remarks,"
  18244. + " :accountid,"
  18245. + " :createuserid,"
  18246. + " :updateuserid)";
  18247. #endregion
  18248. #region 参数
  18249. oracleParameters = new OracleParameter[] {
  18250. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  18251. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  18252. new OracleParameter(":barcode",responProce.BarCode),
  18253. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  18254. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  18255. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  18256. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  18257. new OracleParameter(":procedureid",responProce.ProcedureID),
  18258. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  18259. new OracleParameter(":procedurename",responProce.ProcedureName),
  18260. new OracleParameter(":userid",responProce.UserID),
  18261. new OracleParameter(":usercode",responProce.UserCode),
  18262. new OracleParameter(":username",responProce.UserName),
  18263. new OracleParameter(":remarks",responProce.Remarks),
  18264. new OracleParameter(":accountid",sUserInfo.AccountID),
  18265. new OracleParameter(":createuserid",sUserInfo.UserID),
  18266. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18267. };
  18268. #endregion
  18269. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18270. // 保存失败
  18271. if (result != Constant.INT_IS_ONE)
  18272. {
  18273. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18274. }
  18275. //// 查询新插入ID
  18276. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  18277. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  18278. //if (!string.IsNullOrEmpty(idStr))
  18279. //{
  18280. // responProce.ResponProcedureID = int.Parse(idStr);
  18281. //}
  18282. //else
  18283. //{
  18284. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18285. //}
  18286. }
  18287. #region 插入责任人
  18288. foreach (SemiCheckResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  18289. {
  18290. #region SQL
  18291. sql = "insert into tp_pm_scrapresponsible"
  18292. + " (barcode,"
  18293. + " scrapproductid,"
  18294. + " staffid,"
  18295. + " userid,"
  18296. + " usercode,"
  18297. + " ujobsid,"
  18298. + " sjobsid,"
  18299. + " staffstatus,"
  18300. + " accountid,"
  18301. + " createuserid,"
  18302. + " updateuserid,"
  18303. + " responprocedureid,"
  18304. + " respontype)"
  18305. + " values"
  18306. + " (:barcode,"
  18307. + " :scrapproductid,"
  18308. + " :staffid,"
  18309. + " :userid,"
  18310. + " :usercode,"
  18311. + " :ujobsid,"
  18312. + " :sjobsid,"
  18313. + " :staffstatus,"
  18314. + " :accountid,"
  18315. + " :createuserid,"
  18316. + " :updateuserid,"
  18317. + " :responprocedureid,"
  18318. + " :respontype)";
  18319. #endregion
  18320. #region 参数
  18321. oracleParameters = new OracleParameter[] {
  18322. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  18323. new OracleParameter(":barcode",responProce.BarCode),
  18324. new OracleParameter(":staffid",defectResponsible.StaffID),
  18325. new OracleParameter(":userid",defectResponsible.UserID),
  18326. new OracleParameter(":usercode",defectResponsible.UserCode),
  18327. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  18328. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  18329. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  18330. new OracleParameter(":accountid",sUserInfo.AccountID),
  18331. new OracleParameter(":createuserid",sUserInfo.UserID),
  18332. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18333. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  18334. new OracleParameter(":respontype", (responProce.ResponProcedureID == null? (int)Constant.ScrapResponType.Person:(int)Constant.ScrapResponType.Procedure)),
  18335. };
  18336. #endregion
  18337. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18338. // 保存失败
  18339. if (result != Constant.INT_IS_ONE)
  18340. {
  18341. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18342. }
  18343. }
  18344. #endregion
  18345. return null;
  18346. }
  18347. #region 复检
  18348. /// <summary>
  18349. /// 复检数据
  18350. /// </summary>
  18351. /// <param name="oracleTrConn">数据连接对象</param>
  18352. /// <param name="entity">半检实体类</param>
  18353. /// <param name="sUserInfo">用户基本信息</param>
  18354. /// <returns>string</returns>
  18355. /// <remarks>
  18356. /// 王鑫 2016.06.28 新建
  18357. /// </remarks>
  18358. private static string AddReSemiCheck(IDBTransaction oracleTrConn,
  18359. SemiCheckEntity entity,
  18360. SUserInfo sUserInfo)
  18361. {
  18362. try
  18363. {
  18364. // 获得账务日期
  18365. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  18366. string errMsg = string.Empty;
  18367. #region 校验条码有效性
  18368. errMsg = CheckBarcodeByEditRework(oracleTrConn, entity.BarCode, sUserInfo);
  18369. if (!string.IsNullOrEmpty(errMsg))
  18370. {
  18371. return errMsg;
  18372. }
  18373. #endregion
  18374. //------------------------------
  18375. #region 条码是不合格 删除在产产品数据
  18376. if (entity.ReSemiCheckType == "2") //编辑时不合格
  18377. {
  18378. #region 修改半检登记的复检状态=2不合格(返)、复检工号=当前工号、复检时间=sysdate。
  18379. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='2' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  18380. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  18381. OracleParameter[] oracleParameters = new OracleParameter[] {
  18382. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  18383. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  18384. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18385. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18386. };
  18387. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18388. // 保存失败
  18389. if (result != Constant.INT_IS_ONE)
  18390. {
  18391. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18392. }
  18393. #endregion
  18394. #region 条码有缺陷
  18395. #region 是次品 添加废弃产品
  18396. string ResponProcedureidStr = "";
  18397. if (entity.ReSemiCheckType == "2") //新建时不合格,直接报损
  18398. {
  18399. #region 添加废弃产品
  18400. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  18401. #region 属性赋值
  18402. scrapProduct.BarCode = entity.BarCode;
  18403. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  18404. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  18405. scrapProduct.ScrapDate = accountDate;
  18406. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASSREWORK;
  18407. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  18408. scrapProduct.Auditor = sUserInfo.UserID;
  18409. scrapProduct.AuditlDate = accountDate;
  18410. scrapProduct.AccountDate = accountDate;
  18411. sqlUpdate = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=" + sUserInfo.AccountID;
  18412. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate);
  18413. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18414. {
  18415. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  18416. }
  18417. scrapProduct.GoodsLevelTypeID = 14;
  18418. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  18419. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  18420. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  18421. // 查询新插入的废弃ID
  18422. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  18423. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  18424. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18425. scrapProduct.ScrapType = 3;
  18426. #endregion
  18427. // 保存报废
  18428. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  18429. // 保存失败
  18430. if (!string.IsNullOrEmpty(errMsg))
  18431. {
  18432. return errMsg;
  18433. }
  18434. #endregion
  18435. }
  18436. #endregion
  18437. // 存在缺陷 插入缺陷表
  18438. if (entity.SemiCheckDefects != null)
  18439. {
  18440. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  18441. {
  18442. #region 保存缺陷
  18443. //semiCheckDefect.SemiCheckID = Convert.ToInt32(semiCheckDefect.SemiCheckID);
  18444. //semiCheckDefect.ScrapResponFlag
  18445. // = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  18446. //// 保存缺陷
  18447. //errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  18448. //if (!string.IsNullOrEmpty(errMsg))
  18449. //{
  18450. // return errMsg;
  18451. //}
  18452. #endregion
  18453. #region 是不合格 添加废弃责任工序
  18454. if (entity.ReSemiCheckType == "2")
  18455. {
  18456. //if (semiCheckDefect.DefectProcedureID != null)
  18457. {
  18458. #region 添加责任工序
  18459. ResponProcedureEntity responProce = new ResponProcedureEntity();
  18460. #region 属性赋值
  18461. responProce.BarCode = entity.BarCode;
  18462. // 新建-不合格 获取生产线及生产数据ID
  18463. sqlUpdate = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  18464. oracleParameters = new OracleParameter[] {
  18465. new OracleParameter(":barcode",entity.BarCode),
  18466. };
  18467. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate, oracleParameters);
  18468. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18469. {
  18470. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  18471. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  18472. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  18473. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  18474. }
  18475. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  18476. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  18477. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  18478. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  18479. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  18480. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  18481. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  18482. responProce.UserID = semiCheckDefect.DefectUserID;
  18483. responProce.UserCode = semiCheckDefect.DefectUserCode;
  18484. responProce.UserName = semiCheckDefect.DefectUserName;
  18485. responProce.Remarks = semiCheckDefect.Remarks;
  18486. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18487. #endregion
  18488. // 保存责任工序
  18489. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  18490. // 保存失败
  18491. if (!string.IsNullOrEmpty(errMsg))
  18492. {
  18493. return errMsg;
  18494. }
  18495. #endregion
  18496. }
  18497. }
  18498. #endregion
  18499. }
  18500. }
  18501. #endregion
  18502. // 1.在产表产品设置产品等级【14不合格返】。
  18503. string sql = @"update TP_PM_InProduction set GoodsLevelID=
  18504. (
  18505. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  18506. ),GoodsLevelTypeID=14,updateuserid=:updateuserid
  18507. where barcode=:barcode";
  18508. oracleParameters = new OracleParameter[] {
  18509. new OracleParameter(":accountid", sUserInfo.AccountID),
  18510. // new OracleParameter(":updateuserid",scrapProduct.GoodsLevelTypeID),
  18511. new OracleParameter(":barcode",entity.BarCode),
  18512. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18513. };
  18514. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18515. // 2.将在产数据保存到在产回收站表中(产品等级【14不合格返】)。
  18516. string sqlInsert = @"insert into TP_PM_InProductionTrash
  18517. (
  18518. BarCode,
  18519. ProductionLineID,
  18520. ProductionLineCode,
  18521. ProductionLineName,
  18522. ProcedureModel,
  18523. ModelType,
  18524. DefectFlag,
  18525. ReworkProcedureID,
  18526. IsPublicBody,
  18527. IsReFire,
  18528. GoodsLevelID,
  18529. GoodsLevelTypeID,
  18530. GoodsID,
  18531. GoodsCode,
  18532. GoodsName,
  18533. UserID,
  18534. GroutingDailyID,
  18535. GroutingDailyDetailID,
  18536. GroutingDate,
  18537. GroutingLineID,
  18538. GroutingLineCode,
  18539. GroutingLineName,
  18540. GMouldTypeID,
  18541. CanManyTimes,
  18542. GroutingLineDetailID,
  18543. GroutingMouldCode,
  18544. MouldCode,
  18545. GroutingUserID,
  18546. GroutingUserCode,
  18547. GroutingNum,
  18548. Remarks,
  18549. KilnID,
  18550. KilnCode,
  18551. KilnName,
  18552. KilnCarID,
  18553. KilnCarCode,
  18554. KilnCarName,
  18555. KilnCarBatchNo,
  18556. KilnCarPosition,
  18557. AccountID,
  18558. ValueFlag,
  18559. CreateUserID,
  18560. UpdateUserID,
  18561. SpecialRepairflag,
  18562. FlowProcedureID,
  18563. FlowProcedureTime,
  18564. ProcedureID,
  18565. ProcedureTime,
  18566. ProductionDataID,
  18567. logoid,
  18568. SemiCheckID
  18569. )
  18570. select
  18571. BarCode,
  18572. ProductionLineID,
  18573. ProductionLineCode,
  18574. ProductionLineName,
  18575. ProcedureModel,
  18576. ModelType,
  18577. DefectFlag,
  18578. ReworkProcedureID,
  18579. IsPublicBody,
  18580. IsReFire,
  18581. --GoodsLevelID,
  18582. --GoodsLevelTypeID,
  18583. (
  18584. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  18585. ),14,
  18586. GoodsID,
  18587. GoodsCode,
  18588. GoodsName,
  18589. UserID,
  18590. GroutingDailyID,
  18591. GroutingDailyDetailID,
  18592. GroutingDate,
  18593. GroutingLineID,
  18594. GroutingLineCode,
  18595. GroutingLineName,
  18596. GMouldTypeID,
  18597. CanManyTimes,
  18598. GroutingLineDetailID,
  18599. GroutingMouldCode,
  18600. MouldCode,
  18601. GroutingUserID,
  18602. GroutingUserCode,
  18603. GroutingNum,
  18604. Remarks,
  18605. KilnID,
  18606. KilnCode,
  18607. KilnName,
  18608. KilnCarID,
  18609. KilnCarCode,
  18610. KilnCarName,
  18611. KilnCarBatchNo,
  18612. KilnCarPosition,
  18613. AccountID,
  18614. ValueFlag,
  18615. :CreateUserID,
  18616. :UpdateUserID,
  18617. SpecialRepairflag,
  18618. FlowProcedureID,
  18619. FlowProcedureTime,
  18620. FlowProcedureID,
  18621. ProcedureTime,
  18622. ProductionDataID,
  18623. logoid,
  18624. SemiCheckID
  18625. from TP_PM_InProduction
  18626. where barcode=:barcode
  18627. ";
  18628. oracleParameters = new OracleParameter[] {
  18629. new OracleParameter(":barcode",entity.BarCode),
  18630. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  18631. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18632. new OracleParameter(":accountid", sUserInfo.AccountID),
  18633. };
  18634. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  18635. // 删除在产数据
  18636. sql = "delete tp_pm_inproduction where barcode = :barcode";
  18637. oracleParameters = new OracleParameter[] {
  18638. new OracleParameter(":barcode",entity.BarCode),
  18639. };
  18640. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18641. }
  18642. else if (entity.ReSemiCheckType == "1") //正常
  18643. {
  18644. #region 修改半检登记的复检状态=1合格(返)、复检工号=当前工号、复检时间=sysdate。
  18645. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='1' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  18646. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  18647. OracleParameter[] oracleParameters = new OracleParameter[] {
  18648. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  18649. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  18650. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18651. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18652. };
  18653. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18654. // 保存失败
  18655. if (result != Constant.INT_IS_ONE)
  18656. {
  18657. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18658. }
  18659. #endregion
  18660. #region 3.修改在产产品数据,在产表产品设置非返工状态(IsReworkFlag = '0'),半检登记ID=null(半检登记ID不变)。
  18661. string sql = "update tp_pm_inproduction set IsReworkFlag='0',UpdateUserID=:UpdateUserID where barcode = :barcode";
  18662. oracleParameters = new OracleParameter[] {
  18663. new OracleParameter(":barcode",entity.BarCode),
  18664. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18665. };
  18666. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18667. #endregion
  18668. }
  18669. #endregion
  18670. //------------------------------
  18671. return errMsg;
  18672. }
  18673. catch (Exception ex)
  18674. {
  18675. throw ex;
  18676. }
  18677. }
  18678. #endregion
  18679. #region 撤销复检
  18680. /// <summary>
  18681. /// 撤销复检数据
  18682. /// </summary>
  18683. /// <param name="oracleTrConn">数据连接对象</param>
  18684. /// <param name="entity">半检实体类</param>
  18685. /// <param name="sUserInfo">用户基本信息</param>
  18686. /// <returns>string</returns>
  18687. /// <remarks>
  18688. /// 王鑫 2016.06.28 新建
  18689. /// </remarks>
  18690. private static string AddCancelSemiCheck(IDBTransaction oracleTrConn,
  18691. SemiCheckEntity entity,
  18692. SUserInfo sUserInfo)
  18693. {
  18694. try
  18695. {
  18696. // 获得账务日期
  18697. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  18698. string errMsg = string.Empty;
  18699. string sql = null;
  18700. #region 校验条码有效性
  18701. if (entity.ReSemiCheckType == "1") //撤销合格
  18702. {
  18703. errMsg = CheckBarcodeByCancelReSemiCheckPass(oracleTrConn, entity.BarCode, sUserInfo);
  18704. }
  18705. else if (entity.ReSemiCheckType == "2") //撤销不合格
  18706. {
  18707. errMsg = CheckBarcodeByCancelReSemiCheckNoPass(oracleTrConn, entity.BarCode, sUserInfo);
  18708. }
  18709. if (!string.IsNullOrEmpty(errMsg))
  18710. {
  18711. return errMsg;
  18712. }
  18713. #endregion
  18714. if (entity.ReSemiCheckType == "1") //撤销合格
  18715. {
  18716. #region 在产表产品设置返工状态(IsReworkFlag = '1')。
  18717. sql = "update tp_pm_inproduction set IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  18718. OracleParameter[] oracleParameters = new OracleParameter[] {
  18719. new OracleParameter(":barcode",entity.BarCode),
  18720. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18721. };
  18722. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18723. #endregion
  18724. #region .半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  18725. // 复检撤销不需要记录撤销标识 - chenxy
  18726. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  18727. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  18728. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  18729. where SemiCheckID=:SemiCheckID";
  18730. oracleParameters = new OracleParameter[] {
  18731. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18732. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18733. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  18734. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  18735. };
  18736. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18737. // 保存失败
  18738. if (result != Constant.INT_IS_ONE)
  18739. {
  18740. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18741. }
  18742. #endregion
  18743. }
  18744. else if (entity.ReSemiCheckType == "2") //撤销不合格
  18745. {
  18746. #region 从在产回收站中把数据恢复到在产表中。
  18747. string sqlInsert = @"insert into TP_PM_InProduction
  18748. (
  18749. BarCode,
  18750. ProductionLineID,
  18751. ProductionLineCode,
  18752. ProductionLineName,
  18753. ProcedureModel,
  18754. ModelType,
  18755. DefectFlag,
  18756. ReworkProcedureID,
  18757. IsPublicBody,
  18758. IsReFire,
  18759. GoodsLevelID,
  18760. GoodsLevelTypeID,
  18761. GoodsID,
  18762. GoodsCode,
  18763. GoodsName,
  18764. UserID,
  18765. GroutingDailyID,
  18766. GroutingDailyDetailID,
  18767. GroutingDate,
  18768. GroutingLineID,
  18769. GroutingLineCode,
  18770. GroutingLineName,
  18771. GMouldTypeID,
  18772. CanManyTimes,
  18773. GroutingLineDetailID,
  18774. GroutingMouldCode,
  18775. MouldCode,
  18776. GroutingUserID,
  18777. GroutingUserCode,
  18778. GroutingNum,
  18779. Remarks,
  18780. KilnID,
  18781. KilnCode,
  18782. KilnName,
  18783. KilnCarID,
  18784. KilnCarCode,
  18785. KilnCarName,
  18786. KilnCarBatchNo,
  18787. KilnCarPosition,
  18788. AccountID,
  18789. ValueFlag,
  18790. CreateUserID,
  18791. UpdateUserID,
  18792. SpecialRepairflag,
  18793. FlowProcedureID,
  18794. FlowProcedureTime,
  18795. ProcedureID,
  18796. ProcedureTime,
  18797. ProductionDataID,
  18798. logoid,
  18799. SemiCheckID
  18800. )
  18801. select
  18802. BarCode,
  18803. ProductionLineID,
  18804. ProductionLineCode,
  18805. ProductionLineName,
  18806. ProcedureModel,
  18807. ModelType,
  18808. DefectFlag,
  18809. ReworkProcedureID,
  18810. IsPublicBody,
  18811. IsReFire,
  18812. GoodsLevelID,
  18813. GoodsLevelTypeID,
  18814. GoodsID,
  18815. GoodsCode,
  18816. GoodsName,
  18817. UserID,
  18818. GroutingDailyID,
  18819. GroutingDailyDetailID,
  18820. GroutingDate,
  18821. GroutingLineID,
  18822. GroutingLineCode,
  18823. GroutingLineName,
  18824. GMouldTypeID,
  18825. CanManyTimes,
  18826. GroutingLineDetailID,
  18827. GroutingMouldCode,
  18828. MouldCode,
  18829. GroutingUserID,
  18830. GroutingUserCode,
  18831. GroutingNum,
  18832. Remarks,
  18833. KilnID,
  18834. KilnCode,
  18835. KilnName,
  18836. KilnCarID,
  18837. KilnCarCode,
  18838. KilnCarName,
  18839. KilnCarBatchNo,
  18840. KilnCarPosition,
  18841. AccountID,
  18842. ValueFlag,
  18843. :CreateUserID,
  18844. :UpdateUserID,
  18845. SpecialRepairflag,
  18846. FlowProcedureID,
  18847. FlowProcedureTime,
  18848. FlowProcedureID,
  18849. ProcedureTime,
  18850. ProductionDataID,
  18851. logoid,
  18852. SemiCheckID
  18853. from TP_PM_InProductionTrash
  18854. where barcode=:barcode
  18855. ";
  18856. OracleParameter[] oracleParameters = new OracleParameter[] {
  18857. new OracleParameter(":barcode",entity.BarCode),
  18858. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  18859. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18860. };
  18861. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  18862. #endregion
  18863. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  18864. OracleParameter[] spParameters = null;
  18865. int spResult = 0;
  18866. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  18867. " from TP_PM_ScrapProduct sp\n" +
  18868. " where sp.barcode = :barcode\n" +
  18869. " and sp.auditstatus = 1\n" +
  18870. " and sp.valueflag = '1'\n" +
  18871. " and sp.scraptype = '3'";
  18872. spParameters = new OracleParameter[] {
  18873. new OracleParameter(":barcode",entity.BarCode),
  18874. };
  18875. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  18876. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  18877. spParameters = new OracleParameter[] {
  18878. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18879. new OracleParameter(":scrapproductid",scrapproductid),
  18880. };
  18881. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  18882. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  18883. //oracleParameters = new OracleParameter[] {
  18884. // new OracleParameter(":barcode",entity.BarCode),
  18885. //};
  18886. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  18887. //string sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  18888. //oracleParameters = new OracleParameter[] {
  18889. // new OracleParameter(":barcode",entity.BarCode),
  18890. // };
  18891. //result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18892. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  18893. //oracleParameters = new OracleParameter[] {
  18894. // new OracleParameter(":barcode",entity.BarCode),
  18895. // };
  18896. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18897. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  18898. ////oracleParameters = new OracleParameter[] {
  18899. //// new OracleParameter(":barcode",entity.BarCode),
  18900. //// };
  18901. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18902. #endregion
  18903. #region 删除在产回收站数据
  18904. sql = "delete TP_PM_InProductionTrash where barcode = :barcode";
  18905. oracleParameters = new OracleParameter[] {
  18906. new OracleParameter(":barcode",entity.BarCode),
  18907. };
  18908. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18909. #endregion
  18910. #region .在产表产品设置返工状态(IsReworkFlag = '1')。
  18911. sql = "update tp_pm_inproduction set IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  18912. oracleParameters = new OracleParameter[] {
  18913. new OracleParameter(":barcode",entity.BarCode),
  18914. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18915. };
  18916. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18917. #endregion
  18918. #region 6.半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  18919. // 复检撤销不需要记录撤销标识 - chenxy
  18920. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  18921. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  18922. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  18923. where SemiCheckID=:SemiCheckID";
  18924. oracleParameters = new OracleParameter[] {
  18925. //new OracleParameter(":ReSemiCheckUserID",entity.ReSemiCheckUserID),
  18926. //new OracleParameter(":ReSemiCheckUserCode",entity.ReSemiCheckUserCode),
  18927. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18928. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18929. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  18930. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  18931. };
  18932. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18933. // 保存失败
  18934. if (result != Constant.INT_IS_ONE)
  18935. {
  18936. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18937. }
  18938. #endregion
  18939. }
  18940. return errMsg;
  18941. }
  18942. catch (Exception ex)
  18943. {
  18944. throw ex;
  18945. }
  18946. }
  18947. #endregion
  18948. /// <summary>
  18949. /// 校验条码有效(撤销复检-不合格)
  18950. /// </summary>
  18951. /// <param name="oracleTrConn">连接对象</param>
  18952. /// <param name="barcode">条码</param>
  18953. /// <param name="sUserInfo">登录用户信息</param>
  18954. /// <returns>string</returns>
  18955. /// <remarks>
  18956. /// 王鑫 2016.06.28 新建
  18957. /// </remarks>
  18958. private static string CheckBarcodeByCancelReSemiCheckNoPass(IDBTransaction oracleTrConn,
  18959. string barcode,
  18960. SUserInfo sUserInfo
  18961. )
  18962. {
  18963. try
  18964. {
  18965. OracleParameter[] paras = new OracleParameter[]{
  18966. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  18967. };
  18968. string sql = @"
  18969. select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=14 and SemiCheckID is not null
  18970. ";
  18971. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  18972. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  18973. {
  18974. return "条码[" + barcode + "]不在在产回收站中";
  18975. }
  18976. return null;
  18977. }
  18978. catch (Exception ex)
  18979. {
  18980. throw ex;
  18981. }
  18982. }
  18983. /// <summary>
  18984. /// 校验条码有效(撤销复检-合格)
  18985. /// </summary>
  18986. /// <param name="oracleTrConn">连接对象</param>
  18987. /// <param name="barcode">条码</param>
  18988. /// <param name="sUserInfo">登录用户信息</param>
  18989. /// <returns>string</returns>
  18990. /// <remarks>
  18991. /// 王鑫 2016.06.28 新建
  18992. /// </remarks>
  18993. private static string CheckBarcodeByCancelReSemiCheckPass(IDBTransaction oracleTrConn,
  18994. string barcode,
  18995. SUserInfo sUserInfo
  18996. )
  18997. {
  18998. try
  18999. {
  19000. OracleParameter[] paras = new OracleParameter[]{
  19001. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  19002. };
  19003. string sql = @"
  19004. select InScrapFlag,
  19005. KilnCarID,
  19006. KilnCarName,
  19007. IsReworkFlag,
  19008. SemiCheckID from TP_PM_InProduction where barcode=:barcode
  19009. ";
  19010. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19011. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19012. {
  19013. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  19014. {
  19015. return "条码[" + barcode + "]已经报损待审批";
  19016. }
  19017. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  19018. {
  19019. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  19020. }
  19021. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  19022. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  19023. {
  19024. return "条码[" + barcode + "]是半检返工状态";
  19025. }
  19026. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  19027. {
  19028. return "条码[" + barcode + "]是半检返修状态";
  19029. }
  19030. if (string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["SemiCheckID"].ToString()))
  19031. {
  19032. return "条码[" + barcode + "]已经做过其他操作,不能撤销";
  19033. }
  19034. }
  19035. else
  19036. {
  19037. return "条码[" + barcode + "]不在在产流程";
  19038. }
  19039. return null;
  19040. }
  19041. catch (Exception ex)
  19042. {
  19043. throw ex;
  19044. }
  19045. }
  19046. #region 生产订单 wangx 2017-2-7
  19047. /// <summary>
  19048. /// 保存订单
  19049. /// </summary>
  19050. /// <param name="order"></param>
  19051. /// <param name="sUserInfo"></param>
  19052. /// <returns></returns>
  19053. public static ServiceResultEntity SaveOrder(OrderEntity order, SUserInfo sUserInfo)
  19054. {
  19055. ServiceResultEntity entity = new ServiceResultEntity();
  19056. int returnRows = 0;
  19057. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19058. try
  19059. {
  19060. string sql = string.Empty;
  19061. OracleParameter[] Paras = null;
  19062. DataSet ds = null;
  19063. #region 查询订单号是否有重复
  19064. sql = "select OrderID from TP_PM_Order where OrderNo=:OrderNo and AccountID=:AccountID";
  19065. Paras = new OracleParameter[] {
  19066. new OracleParameter(":OrderNo",OracleDbType.Varchar2,
  19067. order.OrderNo,ParameterDirection.Input),
  19068. new OracleParameter(":AccountID",OracleDbType.Int32,
  19069. sUserInfo.AccountID,ParameterDirection.Input)
  19070. };
  19071. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  19072. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19073. {
  19074. if (order.OrderID == 0 || (order.OrderID != Convert.ToInt32(ds.Tables[0].Rows[0]["OrderID"])))
  19075. {
  19076. //重复订单号
  19077. returnRows = -1;
  19078. oracleTrConn.Rollback();
  19079. oracleTrConn.Disconnect();
  19080. entity.Result = returnRows;
  19081. entity.Message = "系统存在相同的生产订单号!";
  19082. return entity;
  19083. }
  19084. }
  19085. #endregion
  19086. #region 添加、编辑生产订单
  19087. if (order.OrderID == 0)
  19088. {
  19089. string sqlText = "SELECT SEQ_PM_Order_OrderID.NEXTVAL FROM dual";
  19090. int newOrderID = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  19091. sql = @"Insert into TP_PM_Order
  19092. (
  19093. OrderID,
  19094. OrderNo,
  19095. OrderDate,
  19096. Remarks,
  19097. AccountID,
  19098. ValueFlag,
  19099. CreateTime,
  19100. CreateUserID,
  19101. UpdateTime,
  19102. UpdateUserID
  19103. )
  19104. Values
  19105. (
  19106. :OrderID,
  19107. :OrderNo,
  19108. :OrderDate,
  19109. :Remarks,
  19110. :AccountID,
  19111. :ValueFlag,
  19112. sysdate,
  19113. :CreateUserID,
  19114. sysdate,
  19115. :UpdateUserID
  19116. )";
  19117. Paras = new OracleParameter[] {
  19118. new OracleParameter(":OrderID",OracleDbType.Int32,newOrderID,ParameterDirection.Input),
  19119. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  19120. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  19121. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  19122. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  19123. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19124. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19125. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  19126. };
  19127. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  19128. }
  19129. else
  19130. {
  19131. sql = @"Update TP_PM_Order
  19132. set
  19133. OrderNo=:OrderNo,
  19134. OrderDate=:OrderDate,
  19135. Remarks=:Remarks,
  19136. ValueFlag=:ValueFlag,
  19137. UpdateUserID=:UpdateUserID
  19138. where OrderID=:OrderID
  19139. ";
  19140. Paras = new OracleParameter[] {
  19141. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  19142. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  19143. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  19144. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  19145. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  19146. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19147. };
  19148. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  19149. }
  19150. #endregion
  19151. if (returnRows <= 0)
  19152. {
  19153. oracleTrConn.Rollback();
  19154. oracleTrConn.Disconnect();
  19155. }
  19156. else
  19157. {
  19158. oracleTrConn.Commit();
  19159. oracleTrConn.Disconnect();
  19160. }
  19161. }
  19162. catch (Exception ex)
  19163. {
  19164. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  19165. {
  19166. oracleTrConn.Rollback();
  19167. oracleTrConn.Disconnect();
  19168. }
  19169. throw ex;
  19170. }
  19171. finally
  19172. {
  19173. if (oracleTrConn.ConnState == ConnectionState.Open)
  19174. {
  19175. oracleTrConn.Disconnect();
  19176. }
  19177. }
  19178. entity.Result = returnRows;
  19179. return entity;
  19180. }
  19181. /// <summary>
  19182. /// 启用、停用订单标识
  19183. /// </summary>
  19184. /// <param name="order"></param>
  19185. /// <param name="sUserInfo"></param>
  19186. /// <returns></returns>
  19187. public static ServiceResultEntity ChangeOrderFlag(OrderEntity order, SUserInfo sUserInfo)
  19188. {
  19189. ServiceResultEntity entity = new ServiceResultEntity();
  19190. int returnRows = 0;
  19191. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19192. try
  19193. {
  19194. string sql = string.Empty;
  19195. OracleParameter[] Paras = null;
  19196. #region 添加、编辑生产订单
  19197. sql = @"Update TP_PM_Order
  19198. set
  19199. ValueFlag=:ValueFlag,
  19200. UpdateUserID=:UpdateUserID
  19201. where OrderID=:OrderID
  19202. ";
  19203. Paras = new OracleParameter[] {
  19204. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  19205. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19206. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  19207. };
  19208. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  19209. #endregion
  19210. if (returnRows <= 0)
  19211. {
  19212. oracleTrConn.Rollback();
  19213. oracleTrConn.Disconnect();
  19214. }
  19215. else
  19216. {
  19217. oracleTrConn.Commit();
  19218. oracleTrConn.Disconnect();
  19219. }
  19220. }
  19221. catch (Exception ex)
  19222. {
  19223. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  19224. {
  19225. oracleTrConn.Rollback();
  19226. oracleTrConn.Disconnect();
  19227. }
  19228. throw ex;
  19229. }
  19230. entity.Result = returnRows;
  19231. return entity;
  19232. }
  19233. #endregion
  19234. #region 保存交接
  19235. /// <summary>
  19236. /// 保存交接校验
  19237. /// </summary>
  19238. /// <param name="orderid"></param>
  19239. /// <param name="dtData"></param>
  19240. /// <param name="sUserInfo"></param>
  19241. /// <returns></returns>
  19242. public static ServiceResultEntity SaveFinishedHandover(int orderid, DataTable dtData, SUserInfo sUserInfo)
  19243. {
  19244. ServiceResultEntity entity = new ServiceResultEntity();
  19245. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19246. try
  19247. {
  19248. string sql = string.Empty;
  19249. OracleParameter[] Paras = null;
  19250. DataSet ds = null;
  19251. bool isError = false;
  19252. oracleTrConn.Connect();
  19253. // 包装装板,产成品交接不限制
  19254. //string GoodsModel = string.Empty;
  19255. //int? logoID = null;
  19256. //string logoName = string.Empty;
  19257. //int PlateLimitNum = 0;
  19258. //string _isEnable_S_PM_011 = "0";
  19259. //// 2.产成品交接是否限制同型号
  19260. //string _isEnable_S_PM_012 = "0";
  19261. //// 3.产成品交接是否限制每板装板数量(必须先启用限制同型号);
  19262. //string _isEnable_S_PM_013 = "0";
  19263. //// 读取系统设置
  19264. //sql = "select settingcode,settingvalue from tp_mst_systemsetting where settingcode in ('S_PM_011','S_PM_012','S_PM_013') and accountid=" + sUserInfo.AccountID;
  19265. //ds = oracleTrConn.GetSqlResultToDs(sql);
  19266. //foreach (DataRow dr in ds.Tables[0].Rows)
  19267. //{
  19268. // if (dr["settingcode"] == "S_PM_011")
  19269. // _isEnable_S_PM_011 = dr["settingcode"].ToString();
  19270. // else if (dr["settingcode"] == "S_PM_012")
  19271. // _isEnable_S_PM_012 = dr["settingcode"].ToString();
  19272. // else if (dr["settingcode"] == "S_PM_013")
  19273. // _isEnable_S_PM_013 = dr["settingcode"].ToString();
  19274. //}
  19275. // 本批交接的批次号
  19276. string fhBatchNo = System.Guid.NewGuid().ToString();
  19277. for (int i = 0; i < dtData.Rows.Count; i++)
  19278. {
  19279. #region 产品是否在产成表中
  19280. sql = "select FHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode";
  19281. Paras = new OracleParameter[]{
  19282. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  19283. };
  19284. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  19285. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19286. {
  19287. #region 是否交接过
  19288. string fhUserCode = ds.Tables[0].Rows[0]["FHUserCode"].ToString();
  19289. if (!string.IsNullOrEmpty(fhUserCode))
  19290. {
  19291. entity.Result = -2; //已交接,不能再次进行交接
  19292. entity.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】已交接,不能再次进行交接";
  19293. isError = true;
  19294. break;
  19295. }
  19296. #endregion
  19297. }
  19298. else
  19299. {
  19300. #region 不是产成品
  19301. entity.Result = -1; //不是产成品
  19302. entity.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】不是产成品";
  19303. isError = true;
  19304. break;
  19305. #endregion
  19306. }
  19307. #endregion
  19308. /* 包装装板,产成品交接不限制
  19309. if (i == 0)
  19310. {
  19311. #region 记录产品型号,最大限制数量,商标
  19312. GoodsModel = dtData.Rows[i]["GoodsModel"].ToString();
  19313. logoID = Convert.ToInt32(dtData.Rows[i]["logoID"]);
  19314. logoName = dtData.Rows[i]["logoName"].ToString();
  19315. sql = "select PlateLimitNum from TP_MST_Goods where GoodsID=:GoodsID";
  19316. Paras = new OracleParameter[]{
  19317. new OracleParameter(":GoodsID",OracleDbType.Int32, ds.Tables[0].Rows[0]["GoodsID"],ParameterDirection.Input),
  19318. };
  19319. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  19320. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19321. {
  19322. if (_isEnable_S_PM_013 == "1" && _isEnable_S_PM_012 == "1")
  19323. {
  19324. PlateLimitNum = Convert.ToInt32(ds.Tables[0].Rows[0]["PlateLimitNum"]);
  19325. }
  19326. }
  19327. #endregion
  19328. }
  19329. else
  19330. {
  19331. #region 启用限制同商标
  19332. if (_isEnable_S_PM_011 == "1")
  19333. {
  19334. if (Convert.ToInt32(dtData.Rows[0]["logoid"]) != logoID)
  19335. {
  19336. entity.Result = -3;
  19337. entity.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的商标【"
  19338. + dtData.Rows[0]["logoname"] + "】与此批次商标【" + logoName + "】不同,不能进行该操作。 ";
  19339. isError = true;
  19340. break;
  19341. }
  19342. }
  19343. #endregion
  19344. #region 启用限制同型号
  19345. if (_isEnable_S_PM_012 == "1")
  19346. {
  19347. if (dtData.Rows[0]["GoodsModel"].ToString() != GoodsModel)
  19348. {
  19349. entity.Result = -4;
  19350. entity.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的型号【"
  19351. + dtData.Rows[0]["GoodsModel"] + "】与此批次型号【" + GoodsModel + "】不同,不能进行该操作。 ";
  19352. isError = true;
  19353. break;
  19354. }
  19355. }
  19356. #endregion
  19357. #region 产品列表是否大于限制条数
  19358. if (PlateLimitNum > 0)
  19359. {
  19360. if (dtData.Rows.Count > PlateLimitNum)
  19361. {
  19362. entity.Result = -5;
  19363. entity.Message = "产品列表数量大于每板装板数量【" + PlateLimitNum + "】";
  19364. isError = true;
  19365. break;
  19366. }
  19367. }
  19368. #endregion
  19369. }
  19370. */
  19371. #region 更新产成品相关信息
  19372. sql = @"update TP_PM_FinishedProduct
  19373. set FHUserID=:FHUserID,
  19374. FHUserCode=:FHUserCode,
  19375. FHBatchNo=:FHBatchNo,
  19376. FHTime=sysdate,
  19377. FHOrderID=:FHOrderID,
  19378. UpdateUserID=:UpdateUserID
  19379. where Barcode=:Barcode";
  19380. Paras = new OracleParameter[]{
  19381. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  19382. new OracleParameter(":FHUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  19383. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  19384. new OracleParameter(":FHUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  19385. new OracleParameter(":FHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
  19386. new OracleParameter(":FHOrderID",OracleDbType.Int32, orderid,ParameterDirection.Input),
  19387. };
  19388. oracleTrConn.ExecuteNonQuery(sql, Paras);
  19389. #endregion
  19390. }
  19391. if (isError)
  19392. {
  19393. oracleTrConn.Rollback();
  19394. oracleTrConn.Disconnect();
  19395. }
  19396. else
  19397. {
  19398. entity.Result = 1;
  19399. oracleTrConn.Commit();
  19400. oracleTrConn.Disconnect();
  19401. }
  19402. }
  19403. catch (Exception ex)
  19404. {
  19405. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  19406. {
  19407. oracleTrConn.Rollback();
  19408. oracleTrConn.Disconnect();
  19409. }
  19410. throw ex;
  19411. }
  19412. finally
  19413. {
  19414. if (oracleTrConn.ConnState == ConnectionState.Open)
  19415. {
  19416. oracleTrConn.Disconnect();
  19417. }
  19418. }
  19419. return entity;
  19420. }
  19421. #endregion
  19422. /// <summary>
  19423. /// 撤销产成品交接
  19424. /// </summary>
  19425. /// <param name="barcode"></param>
  19426. /// <param name="sUserInfo"></param>
  19427. /// <returns></returns>
  19428. public static ServiceResultEntity SaveCancelFinishedHandoverByBarcode(string barcode, SUserInfo sUserInfo)
  19429. {
  19430. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19431. try
  19432. {
  19433. ServiceResultEntity resultEntity = new ServiceResultEntity();
  19434. // 1.判断产品是否在产成品表中
  19435. string sql = @"select
  19436. FHUserID,
  19437. FHUserCode,
  19438. GoodsID,
  19439. GoodsCode,
  19440. GoodsName
  19441. from TP_PM_FinishedProduct
  19442. where BarCode=:BarCode";
  19443. OracleParameter[] paras = new OracleParameter[]{
  19444. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19445. };
  19446. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19447. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19448. {
  19449. // 在产成品表中
  19450. #region 是否交接过
  19451. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  19452. if (string.IsNullOrEmpty(fhUserCode))
  19453. {
  19454. resultEntity.Result = -1; //未交接,不能撤销
  19455. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  19456. return resultEntity;
  19457. }
  19458. #endregion
  19459. }
  19460. else
  19461. {
  19462. resultEntity.Result = -2; //不能产成品,不能撤销
  19463. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  19464. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19465. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19466. {
  19467. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  19468. }
  19469. else
  19470. {
  19471. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  19472. }
  19473. return resultEntity;
  19474. }
  19475. #region 查询产品相关信息
  19476. // 撤销记录
  19477. string sqlString = "INSERT INTO TP_PM_FHUndo\n" +
  19478. " (GroutingDailyDetailID\n" +
  19479. " ,GoodsLevelTypeID\n" +
  19480. " ,FHUserID\n" +
  19481. " ,FHUserCode\n" +
  19482. " ,FHBatchNo\n" +
  19483. " ,FHTime\n" +
  19484. " ,FHOrderID\n" +
  19485. " ,OnlyCode\n" +
  19486. " ,FINISHEDLOADBATCHNO\n" +
  19487. " ,AccountID\n" +
  19488. " ,CreateUserID)\n" +
  19489. " SELECT t.groutingdailydetailid\n" +
  19490. " ,t.GoodsLevelTypeID\n" +
  19491. " ,t.fhuserid\n" +
  19492. " ,t.fhusercode\n" +
  19493. " ,t.fhbatchno\n" +
  19494. " ,t.fhtime\n" +
  19495. " ,t.FHOrderID\n" +
  19496. " ,t.onlycode\n" +
  19497. " ,t.FINISHEDLOADBATCHNO\n" +
  19498. " ,t.AccountID\n" +
  19499. " ,:UpdateUserID\n" +
  19500. " FROM TP_PM_FinishedProduct t\n" +
  19501. " WHERE t.barcode = :BarCode";
  19502. paras = new OracleParameter[]{
  19503. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19504. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19505. };
  19506. int resultRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  19507. // SAP同步后再成品交接撤销的,记录撤销标识
  19508. string sapsql = "select count(*) from tsap_hegii_FinishedProduct t where t.barcode = :BarCode and rownum=1";
  19509. OracleParameter[] sapparas = new OracleParameter[]{
  19510. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19511. };
  19512. int sapcount = Convert.ToInt32( oracleTrConn.GetSqlResultToObj(sapsql, sapparas));
  19513. if (sapcount > 0)
  19514. {
  19515. sapsql = "update tp_pm_groutingdailydetail set SAPFHUndoFlag = '1' where barcode=:BarCode";
  19516. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  19517. }
  19518. sql = @"Update TP_PM_FinishedProduct
  19519. set FHUserID=null,
  19520. FHUserCode=null,
  19521. FHBatchNo=null,
  19522. FHTime=null,
  19523. FHOrderID=null,FINISHEDLOADBATCHNO=null,
  19524. UpdateUserID=:UpdateUserID
  19525. where BarCode=:BarCode";
  19526. resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  19527. if (resultRow == 0)
  19528. {
  19529. oracleTrConn.Rollback();
  19530. oracleTrConn.Disconnect();
  19531. }
  19532. else
  19533. {
  19534. resultEntity.Result = 1;
  19535. oracleTrConn.Commit();
  19536. oracleTrConn.Disconnect();
  19537. }
  19538. #endregion
  19539. return resultEntity;
  19540. }
  19541. catch (Exception ex)
  19542. {
  19543. throw ex;
  19544. }
  19545. }
  19546. /// <summary>
  19547. /// 更改产成品交接订单号
  19548. /// </summary>
  19549. /// <param name="barcode"></param>
  19550. /// <param name="orderid"></param>
  19551. /// <param name="sUserInfo"></param>
  19552. /// <returns></returns>
  19553. public static ServiceResultEntity SaveChangeFinishedHandoverByBarcode(string barcode, int orderid, SUserInfo sUserInfo)
  19554. {
  19555. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19556. try
  19557. {
  19558. ServiceResultEntity resultEntity = new ServiceResultEntity();
  19559. // 1.判断产品是否在产成品表中
  19560. string sql = @"select
  19561. FHUserID,
  19562. FHUserCode,
  19563. GoodsID,
  19564. GoodsCode,
  19565. GoodsName
  19566. from TP_PM_FinishedProduct
  19567. where BarCode=:BarCode";
  19568. OracleParameter[] paras = new OracleParameter[]{
  19569. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19570. };
  19571. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19572. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19573. {
  19574. // 在产成品表中
  19575. #region 是否交接过
  19576. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  19577. if (string.IsNullOrEmpty(fhUserCode))
  19578. {
  19579. resultEntity.Result = -1; //未交接,不能撤销
  19580. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  19581. return resultEntity;
  19582. }
  19583. #endregion
  19584. }
  19585. else
  19586. {
  19587. resultEntity.Result = -2; //不能产成品,不能撤销
  19588. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  19589. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19590. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19591. {
  19592. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  19593. }
  19594. else
  19595. {
  19596. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  19597. }
  19598. return resultEntity;
  19599. }
  19600. #region 查询产品相关信息
  19601. sql = @"Update TP_PM_FinishedProduct
  19602. set
  19603. FHOrderID=:FHOrderID,
  19604. UpdateUserID=:UpdateUserID
  19605. where BarCode=:BarCode";
  19606. paras = new OracleParameter[]{
  19607. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19608. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19609. new OracleParameter(":FHOrderID",OracleDbType.Int32,orderid,ParameterDirection.Input),
  19610. };
  19611. int resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  19612. if (resultRow == 0)
  19613. {
  19614. oracleTrConn.Rollback();
  19615. oracleTrConn.Disconnect();
  19616. }
  19617. else
  19618. {
  19619. resultEntity.Result = 1;
  19620. oracleTrConn.Commit();
  19621. oracleTrConn.Disconnect();
  19622. }
  19623. #endregion
  19624. return resultEntity;
  19625. }
  19626. catch (Exception ex)
  19627. {
  19628. throw ex;
  19629. }
  19630. }
  19631. /// <summary>
  19632. /// 回收标准计件
  19633. /// </summary>
  19634. /// <param name="oracleTrConn">数据连接对象</param>
  19635. /// <param name="procedure">工序对象</param>
  19636. /// <param name="barcodeTable">条码信息</param>
  19637. /// <param name="sUserInfo">用户基本信息</param>
  19638. /// <param name="goodsID">返回的产品ID</param>
  19639. /// <param name="goodsCode">返回的产品Code</param>
  19640. /// <param name="goodsName">返回的产品名称</param>
  19641. /// <param name="groutingUserID">返回的注浆者ID</param>
  19642. /// <returns>string</returns>
  19643. /// <remarks>
  19644. /// 王鑫 2017.7.20 新建
  19645. /// </remarks>
  19646. private static string AddRecydingFlagWorkPiece(IDBTransaction oracleTrConn,
  19647. ProcedureEntity procedure,
  19648. DataTable barcodeTable,
  19649. SUserInfo sUserInfo,
  19650. out int goodsID,
  19651. out string goodsCode,
  19652. out string goodsName,
  19653. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  19654. {
  19655. try
  19656. {
  19657. int deleteRow = 0;
  19658. goodsID = Constant.INT_IS_ZERO;
  19659. goodsCode = null;
  19660. goodsName = null;
  19661. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  19662. // 获得账务日期
  19663. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  19664. string errMsg = string.Empty;
  19665. // 本批采集的批次号
  19666. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  19667. // 条码信息
  19668. string logoName_Temp = "";
  19669. string logoCode_Temp = "";
  19670. string groutingdate_Temp = "";
  19671. foreach (DataRow barcodeRow in barcodeTable.Rows)
  19672. {
  19673. // 条码
  19674. string barcode = barcodeRow["Barcode"].ToString();
  19675. if (string.IsNullOrEmpty(barcode))
  19676. {
  19677. throw new Exception("传入的条码号为空");
  19678. }
  19679. // 生产工号
  19680. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  19681. // 生产工号
  19682. string workUserCode = barcodeRow["UserCode"].ToString();
  19683. //#region 校验条码有效性
  19684. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  19685. //if (!string.IsNullOrEmpty(errMsg))
  19686. //{
  19687. // return errMsg;
  19688. //}
  19689. //#endregion
  19690. if (procedure.CollectType == 1)
  19691. {
  19692. #region 校验条码有效性
  19693. errMsg = CheckRecyclingFlagBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  19694. if (!string.IsNullOrEmpty(errMsg))
  19695. {
  19696. logoName = "";
  19697. logoCode = "";
  19698. groutingdate = "";
  19699. return errMsg;
  19700. }
  19701. #endregion
  19702. }
  19703. else
  19704. {
  19705. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  19706. tp_pm_groutingdailydetail.goodscode,
  19707. tp_pm_groutingdailydetail.goodsname,
  19708. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  19709. tp_pm_groutingdailydetail.groutingdate,
  19710. tp_mst_logo.logoid,
  19711. tp_mst_logo.logocode,
  19712. tp_mst_logo.logoname
  19713. from tp_pm_groutingdailydetail
  19714. left join tp_mst_logo
  19715. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  19716. where tp_pm_groutingdailydetail.barcode=:barcode
  19717. ";
  19718. OracleParameter[] paras = new OracleParameter[] {
  19719. new OracleParameter(":barcode",barcode),
  19720. };
  19721. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  19722. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  19723. {
  19724. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  19725. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  19726. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  19727. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  19728. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  19729. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  19730. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  19731. logoName_Temp = logoName;
  19732. logoCode_Temp = logoCode;
  19733. groutingdate_Temp = groutingdate;
  19734. }
  19735. }
  19736. #region 数据处理
  19737. #region 处理废弃数据并转回收数据为在产数据
  19738. //////string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  19739. //////OracleParameter[] queryparas = new OracleParameter[]{
  19740. ////// new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  19741. //////};
  19742. //////DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  19743. //////if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  19744. //////{
  19745. ////// errMsg = "未设定干补等级";
  19746. ////// logoName = "";
  19747. ////// logoCode = "";
  19748. ////// groutingdate = "";
  19749. ////// return errMsg;
  19750. //////}
  19751. //////string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  19752. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  19753. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  19754. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  19755. UpdateUserID=:UpdateUserID
  19756. where BarCode=:barcode
  19757. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  19758. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  19759. */
  19760. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  19761. ////// string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  19762. ////// SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  19763. ////// UpdateUserID=:UpdateUserID
  19764. ////// where BarCode=:barcode
  19765. ////// and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  19766. ////// and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  19767. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set RecyclingFlag=1,
  19768. UpdateUserID=:UpdateUserID,RecyclingUserID=:RecyclingUserID,RecyclingUserCode=:RecyclingUserCode,
  19769. RecyclingTime=sysdate
  19770. where BarCode=:barcode
  19771. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode and ValueFlag=1)
  19772. and ValueFlag=1 ";
  19773. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  19774. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  19775. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19776. new OracleParameter(":RecyclingUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19777. new OracleParameter(":RecyclingUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  19778. };
  19779. oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  19780. string sqlUpdateGROUTString = @"update TP_PM_GROUTINGDAILYDETAIL set RecyclingFlag=1,
  19781. UpdateUserID=:UpdateUserID
  19782. where BarCode=:barcode ";
  19783. OracleParameter[] GROUTparas = new OracleParameter[]{
  19784. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  19785. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19786. };
  19787. oracleTrConn.ExecuteNonQuery(sqlUpdateGROUTString, GROUTparas);
  19788. //modify wangx 20150623
  19789. //////OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  19790. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  19791. //////};
  19792. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  19793. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  19794. //////string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  19795. //////oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  19796. //modify wangx 20150623 end
  19797. #region
  19798. //第五步,插入回收工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  19799. // 查询新插入的生产数据ID
  19800. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  19801. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  19802. int productionDataID = 0;
  19803. if (!string.IsNullOrEmpty(idStr))
  19804. {
  19805. productionDataID = int.Parse(idStr);
  19806. }
  19807. else
  19808. {
  19809. logoName = "";
  19810. logoCode = "";
  19811. groutingdate = "";
  19812. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19813. }
  19814. int? ClassesSettingID = null;//班次配置ID
  19815. #region 第五步 添加生产者数据
  19816. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  19817. if (!string.IsNullOrEmpty(errMsg))
  19818. {
  19819. logoName = "";
  19820. logoCode = "";
  19821. groutingdate = "";
  19822. return errMsg;
  19823. }
  19824. #endregion
  19825. ProductionDataEntity productionData = new ProductionDataEntity();
  19826. #region 属性赋值
  19827. productionData.ClassesSettingID = ClassesSettingID;
  19828. productionData.ProductionDataID = Convert.ToInt32(idStr);
  19829. productionData.Barcode = barcode;
  19830. productionData.CentralizedBatchNo = centralizedBatchNo;
  19831. productionData.ProductionLineID = procedure.ProductionLineID;
  19832. productionData.ProductionLineCode = procedure.ProductionlineCode;
  19833. productionData.ProductionLineName = procedure.ProductionlineName;
  19834. productionData.CompleteProcedureID = procedure.ProcedureID;
  19835. productionData.ProcedureCode = procedure.ProcedureCode;
  19836. productionData.ProcedureName = procedure.ProcedureName;
  19837. productionData.ProcedureModel = procedure.ProcedureModel;
  19838. productionData.ModelType = procedure.ModelType;
  19839. productionData.NodeType = procedure.NodeType;
  19840. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  19841. productionData.ReworkProcedureID = null;
  19842. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  19843. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  19844. //设置干补标识,产品分级类别=9干补
  19845. ////productionData.GoodsLevelTypeID = 9;
  19846. //productionData.GoodsLevelID = int.Parse(goodsLevelID);
  19847. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  19848. productionData.OrganizationID = procedure.OrganizationID;
  19849. productionData.GoodsID = goodsID;
  19850. productionData.GoodsCode = goodsCode;
  19851. productionData.GoodsName = goodsName;
  19852. productionData.UserID = workUserID;
  19853. productionData.UserCode = barcodeRow["UserCode"].ToString();
  19854. productionData.UserName = barcodeRow["UserName"].ToString();
  19855. productionData.PieceType = procedure.PieceType;
  19856. if (barcodeRow["LogoID"].ToString() != "")
  19857. {
  19858. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  19859. }
  19860. string sqlReFire = @"select
  19861. isrefire,
  19862. logoid,GoodsLevelID,GoodsLevelTypeID
  19863. from tp_pm_inproduction where barcode=:barcode
  19864. union
  19865. select
  19866. isrefire,
  19867. logoid,GoodsLevelID,GoodsLevelTypeID
  19868. from TP_PM_InProductionTrash where barcode=:barcode
  19869. union
  19870. select
  19871. isrefire,
  19872. logoid,GoodsLevelID,GoodsLevelTypeID
  19873. from TP_PM_FinishedProduct where barcode=:barcode ";
  19874. OracleParameter[] ReFireparas = new OracleParameter[] {
  19875. new OracleParameter(":barcode",barcode),
  19876. };
  19877. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  19878. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  19879. {
  19880. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  19881. {
  19882. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  19883. }
  19884. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  19885. {
  19886. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  19887. }
  19888. if (dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"].ToString() != string.Empty)
  19889. {
  19890. productionData.GoodsLevelTypeID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  19891. productionData.GoodsLevelID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelID"]);
  19892. }
  19893. }
  19894. #endregion 属性赋值
  19895. productionData.SpecialRepairflag = 0;
  19896. string OutSpecialRepairflag = "0";// 没有什么特殊的,同干补保存生产数据共用同一个方法
  19897. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  19898. if (!string.IsNullOrEmpty(errMsg))
  19899. {
  19900. logoName = "";
  19901. logoCode = "";
  19902. groutingdate = "";
  19903. return errMsg;
  19904. }
  19905. #endregion
  19906. //第二步,回收站中数据回到在产中,设置干补标识。
  19907. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  19908. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  19909. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  19910. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  19911. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  19912. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  19913. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  19914. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  19915. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  19916. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  19917. KILNID, KILNCODE, KILNNAME, KILNCARID,
  19918. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  19919. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  19920. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  19921. :PROCEDUREMODEL, :MODELTYPE, null,
  19922. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  19923. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  19924. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  19925. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  19926. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  19927. CREATEUSERID, UPDATETIME, :UpdateUserID,
  19928. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, 1,
  19929. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  19930. KILNID, KILNCODE, KILNNAME, KILNCARID,
  19931. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,:ProcedureID ,--FlowProcedureID
  19932. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  19933. from TP_PM_InProductionTrash where barcode=:barcode ";
  19934. OracleParameter[] InProductparas = new OracleParameter[]{
  19935. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  19936. ////new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  19937. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  19938. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  19939. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  19940. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  19941. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  19942. };
  19943. //第三步,删除回收站中的条码
  19944. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  19945. OracleParameter[] TrashProductparas = new OracleParameter[]{
  19946. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  19947. };
  19948. //第四步,更新注浆表干补标识
  19949. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  19950. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  19951. // where barcode=:barcode)";
  19952. ////// string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  19953. ////// where barcode=:barcode";
  19954. ////// OracleParameter[] GroutingProductparas = new OracleParameter[]{
  19955. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  19956. ////// };
  19957. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  19958. // where barcode=:barcode ";
  19959. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  19960. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  19961. // };
  19962. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  19963. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  19964. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  19965. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  19966. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  19967. // 失败
  19968. if (deleteRow == Constant.INT_IS_ZERO)
  19969. {
  19970. logoName = "";
  19971. logoCode = "";
  19972. groutingdate = "";
  19973. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19974. }
  19975. #endregion
  19976. //#region 第五步 添加生产者数据
  19977. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  19978. //if (!string.IsNullOrEmpty(errMsg))
  19979. //{
  19980. // return errMsg;
  19981. //}
  19982. //#endregion
  19983. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  19984. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  19985. OracleParameter[] Paras = new OracleParameter[] {
  19986. new OracleParameter(":barcode",OracleDbType.Varchar2,
  19987. barcode,ParameterDirection.Input)
  19988. };
  19989. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  19990. if (ds.Tables[0].Rows.Count == 0)
  19991. {
  19992. // 2 生产数据恢复到在产生产数据
  19993. sql = @"insert into tp_pm_productiondatain
  19994. (
  19995. ProductionDataID,
  19996. BarCode,
  19997. CentralizedBatchNo,
  19998. ProductionLineID,
  19999. ProductionLineCode,
  20000. ProductionLineName,
  20001. ProcedureID,
  20002. ProcedureCode,
  20003. ProcedureName,
  20004. ProcedureModel,
  20005. ModelType,
  20006. PieceType,
  20007. IsReworked,
  20008. NodeType,
  20009. IsPublicBody,
  20010. IsReFire,
  20011. GoodsLevelID,
  20012. GoodsLevelTypeID,
  20013. SpecialRepairFlag,
  20014. OrganizationID,
  20015. GoodsID,
  20016. GoodsCode,
  20017. GoodsName,
  20018. UserID,
  20019. UserCode,
  20020. UserName,
  20021. ClassesSettingID,
  20022. KilnID,
  20023. KilnCode,
  20024. KilnName,
  20025. KilnCarID,
  20026. KilnCarCode,
  20027. KilnCarName,
  20028. KilnCarBatchNo,
  20029. KilnCarPosition,
  20030. ReworkProcedureID,
  20031. ReworkProcedureCode,
  20032. ReworkProcedureName,
  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. Remarks,
  20048. AccountDate,
  20049. SettlementFlag,
  20050. AccountID,
  20051. ValueFlag,
  20052. CreateTime,
  20053. CreateUserID,
  20054. UpdateTime,
  20055. UpdateUserID,
  20056. OPTimeStamp,
  20057. TriggerFlag,
  20058. logoid,
  20059. BackOutTime,BackOutUserID,BackOutUserCode
  20060. )
  20061. select
  20062. ProductionDataID,
  20063. BarCode,
  20064. CentralizedBatchNo,
  20065. ProductionLineID,
  20066. ProductionLineCode,
  20067. ProductionLineName,
  20068. ProcedureID,
  20069. ProcedureCode,
  20070. ProcedureName,
  20071. ProcedureModel,
  20072. ModelType,
  20073. PieceType,
  20074. IsReworked,
  20075. NodeType,
  20076. IsPublicBody,
  20077. IsReFire,
  20078. GoodsLevelID,
  20079. GoodsLevelTypeID,
  20080. SpecialRepairFlag,
  20081. OrganizationID,
  20082. GoodsID,
  20083. GoodsCode,
  20084. GoodsName,
  20085. UserID,
  20086. UserCode,
  20087. UserName,
  20088. ClassesSettingID,
  20089. KilnID,
  20090. KilnCode,
  20091. KilnName,
  20092. KilnCarID,
  20093. KilnCarCode,
  20094. KilnCarName,
  20095. KilnCarBatchNo,
  20096. KilnCarPosition,
  20097. ReworkProcedureID,
  20098. ReworkProcedureCode,
  20099. ReworkProcedureName,
  20100. GroutingDailyID,
  20101. GroutingDailyDetailID,
  20102. GroutingLineID,
  20103. GroutingLineCode,
  20104. GroutingLineName,
  20105. GMouldTypeID,
  20106. CanManyTimes,
  20107. GroutingLineDetailID,
  20108. GroutingDate,
  20109. GroutingMouldCode,
  20110. MouldCode,
  20111. GroutingUserID,
  20112. GroutingUserCode,
  20113. GroutingNum,
  20114. Remarks,
  20115. AccountDate,
  20116. SettlementFlag,
  20117. AccountID,
  20118. ValueFlag,
  20119. CreateTime,
  20120. CreateUserID,
  20121. UpdateTime,
  20122. UpdateUserID,
  20123. OPTimeStamp,
  20124. 1,
  20125. logoid,
  20126. BackOutTime,BackOutUserID,BackOutUserCode
  20127. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  20128. ";
  20129. oracleTrConn.ExecuteNonQuery(sql, Paras);
  20130. }
  20131. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  20132. #endregion 数据处理
  20133. }
  20134. logoName = logoName_Temp;
  20135. logoCode = logoCode_Temp;
  20136. groutingdate = groutingdate_Temp;
  20137. return errMsg;
  20138. }
  20139. catch (Exception ex)
  20140. {
  20141. throw ex;
  20142. }
  20143. }
  20144. /// <summary>
  20145. /// 校验回收条码有效
  20146. /// </summary>
  20147. /// <param name="oracleTrConn">连接对象</param>
  20148. /// <param name="procedureID">工序ID</param>
  20149. /// <param name="barcode">条码</param>
  20150. /// <param name="goodsID">返回的产品ID</param>
  20151. /// <param name="goodsCode">返回的产品Code</param>
  20152. /// <param name="goodsName">返回的产品名称</param>
  20153. /// <param name="groutingUserID">返回的注浆者ID</param>
  20154. /// <returns>string</returns>
  20155. /// <remarks>
  20156. /// 王鑫 2017.7.20 新建
  20157. /// </remarks>
  20158. private static string CheckRecyclingFlagBarcode(IDBTransaction oracleTrConn,
  20159. int procedureID,
  20160. string barcode,
  20161. out int goodsID,
  20162. out string goodsCode,
  20163. out string goodsName,
  20164. out string groutingUserCode,
  20165. SUserInfo sUserInfo
  20166. )
  20167. {
  20168. try
  20169. {
  20170. //OracleParameter[] paras = new OracleParameter[]{
  20171. // new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  20172. // new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  20173. // new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  20174. // new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  20175. // new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  20176. // new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  20177. // new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  20178. //};
  20179. //oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  20180. //if (!"null".Equals(paras[3].Value + ""))
  20181. //{
  20182. // goodsID = Convert.ToInt32(paras[3].Value + "");
  20183. //}
  20184. //else
  20185. //{
  20186. // goodsID = 0;
  20187. //}
  20188. //goodsCode = paras[4].Value + "";
  20189. //goodsName = paras[5].Value + "";
  20190. //if (!"null".Equals(paras[6].Value + ""))
  20191. //{
  20192. // groutingUserCode = paras[6].Value + "";
  20193. //}
  20194. //else
  20195. //{
  20196. // groutingUserCode = null;
  20197. //}
  20198. //if ("null".Equals(paras[2].Value + ""))
  20199. //{
  20200. // return null;
  20201. //}
  20202. //return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  20203. string errorMessage = string.Empty;
  20204. goodsID = 0; goodsCode = string.Empty; goodsName = string.Empty; groutingUserCode = string.Empty;
  20205. string sqlString = @"select settingcode,settingvalue,settingdefaultvalues from tp_mst_systemsetting
  20206. where Accountid=:Accountid and settingcode in ('S_PM_017','S_PM_018','S_PM_019','S_PM_020')";
  20207. OracleParameter[] paras = new OracleParameter[]{
  20208. new OracleParameter("Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  20209. };
  20210. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20211. #region 读出系统配置 17(损坯可否回收) 18(半检不合格可否回收) 19(复检不合格可否回收) 20(次品可否回收)
  20212. int S_PM_017_Value = 0, S_PM_018_Value = 0, S_PM_019_Value = 0, S_PM_020_Value = 0;
  20213. if (ds != null && ds.Tables[0].Rows.Count > 0)
  20214. {
  20215. foreach (DataRow r in ds.Tables[0].Rows)
  20216. {
  20217. if (r["settingcode"].ToString() == "S_PM_017")
  20218. {
  20219. S_PM_017_Value = Convert.ToInt32(r["settingvalue"]);
  20220. }
  20221. else if (r["settingcode"].ToString() == "S_PM_018")
  20222. {
  20223. S_PM_018_Value = Convert.ToInt32(r["settingvalue"]);
  20224. }
  20225. else if (r["settingcode"].ToString() == "S_PM_019")
  20226. {
  20227. S_PM_019_Value = Convert.ToInt32(r["settingvalue"]);
  20228. }
  20229. else if (r["settingcode"].ToString() == "S_PM_020")
  20230. {
  20231. S_PM_020_Value = Convert.ToInt32(r["settingvalue"]);
  20232. }
  20233. }
  20234. }
  20235. #endregion
  20236. #region 第1步 查当前工序在系统是否存在
  20237. sqlString = @"select NodeType,ModelType from tp_pc_procedure where procedureid=:procedureid and ValueFlag=1";
  20238. paras = new OracleParameter[]{
  20239. new OracleParameter(":procedureid",procedureID),
  20240. };
  20241. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20242. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20243. {
  20244. errorMessage = "当前工序在系统中不存在";
  20245. return errorMessage;
  20246. }
  20247. #endregion
  20248. #region 第2步 查产品是否有效
  20249. sqlString = @"select distinct GoodsID, GoodsCode,GoodsName,UserCode,DeliverFlag
  20250. from TP_PM_GroutingDailyDetail where BarCode=:barCode and ValueFlag=1 ";
  20251. paras = new OracleParameter[]{
  20252. new OracleParameter(":barCode",barcode),
  20253. };
  20254. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20255. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20256. {
  20257. // 是否被替换
  20258. string sql = @"select count(barcode),max(newbarcode) from TP_PM_BarCodeRecord where BarCode=:barcode";
  20259. OracleParameter[] paras2 = new OracleParameter[]{
  20260. new OracleParameter(":barCode",barcode) };
  20261. DataSet ds2 = oracleTrConn.GetSqlResultToDs(sql, paras2);
  20262. if (ds2 != null && Convert.ToInt32(ds2.Tables[0].Rows[0][0]) == 0)
  20263. {
  20264. // 无效条件
  20265. errorMessage = "无效条码[" + barcode + "]";
  20266. }
  20267. else
  20268. {
  20269. errorMessage = "条码[" + barcode + "]已经被[" + ds2.Tables[0].Rows[0][1] + "]替换";
  20270. }
  20271. }
  20272. else
  20273. {
  20274. if (Convert.ToInt32(ds.Tables[0].Rows[0]["DeliverFlag"]) != 1)
  20275. {
  20276. errorMessage = "条码[" + barcode + "]未交坯,不能回收";
  20277. }
  20278. else
  20279. {
  20280. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  20281. goodsName = ds.Tables[0].Rows[0]["goodsName"].ToString();
  20282. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  20283. groutingUserCode = ds.Tables[0].Rows[0]["UserCode"].ToString();
  20284. }
  20285. }
  20286. if (!string.IsNullOrEmpty(errorMessage))
  20287. {
  20288. return errorMessage;
  20289. }
  20290. #endregion
  20291. #region 第3步 查产品是否在当前工序配置
  20292. sqlString = @"select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  20293. paras = new OracleParameter[]{
  20294. new OracleParameter(":GoodsID",goodsID),
  20295. new OracleParameter(":ProcedureID",procedureID),
  20296. };
  20297. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20298. if (Convert.ToInt32(ds.Tables[0].Rows[0][0]) != 1)
  20299. {
  20300. errorMessage =
  20301. @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + goodsCode + "]没有在该工序中配置";
  20302. }
  20303. if (!string.IsNullOrEmpty(errorMessage))
  20304. {
  20305. return errorMessage;
  20306. }
  20307. #endregion
  20308. #region 第4步,校验在产产品不能回收
  20309. string sqlString2 = "select InScrapFlag,ISREWORKFLAG from tp_pm_inproduction where barcode=:barcode";
  20310. OracleParameter[] parasNew = new OracleParameter[]{
  20311. new OracleParameter(":barcode",barcode) };
  20312. DataSet dsNew = oracleTrConn.GetSqlResultToDs(sqlString2, parasNew);
  20313. if (dsNew != null && dsNew.Tables[0].Rows.Count > 0)
  20314. {
  20315. if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["InScrapFlag"]) == 1)
  20316. {
  20317. errorMessage = "报损待审产品不能回收";
  20318. }
  20319. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  20320. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 1)
  20321. {
  20322. errorMessage = "半检返工中不能回收";
  20323. }
  20324. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 2)
  20325. {
  20326. errorMessage = "半检返工中不能回收";
  20327. }
  20328. else
  20329. {
  20330. errorMessage = "在产产品不能回收";
  20331. }
  20332. }
  20333. if (!string.IsNullOrEmpty(errorMessage))
  20334. {
  20335. return errorMessage;
  20336. }
  20337. #endregion
  20338. #region 第4步,校验报损表数据是否可以回收
  20339. sqlString = @"select GoodsLevelID,GoodsLevelTypeID,ScrapType,SpecialRepairFlag,RecyclingFlag,AuditStatus,SpecialRepairUserID from TP_PM_ScrapProduct where barcode=:barcode
  20340. and ValueFlag=1 and CreateTime=
  20341. (select max(CreateTime) from TP_PM_ScrapProduct where barcode=:barcode
  20342. and ValueFlag=1 )";
  20343. paras = new OracleParameter[]{
  20344. new OracleParameter(":barcode",barcode),
  20345. };
  20346. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20347. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20348. {
  20349. errorMessage = "不存在回收数据,不能回收";
  20350. }
  20351. else
  20352. {
  20353. if (Convert.ToInt32(ds.Tables[0].Rows[0]["AuditStatus"]) == 1 &&
  20354. Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) != 9 &&
  20355. Convert.ToInt32(ds.Tables[0].Rows[0]["RecyclingFlag"]) == 0)
  20356. {
  20357. // 可回收
  20358. string sqlString3 = "select 1 from tp_pm_inproductiontrash where barcode=:barcode";
  20359. OracleParameter[] parasNewt = new OracleParameter[]{
  20360. new OracleParameter(":barcode",barcode) };
  20361. DataSet dsNewt = oracleTrConn.GetSqlResultToDs(sqlString3, parasNewt);
  20362. if (dsNewt == null || dsNewt.Tables[0].Rows.Count == 0)
  20363. {
  20364. errorMessage = "报损数据被清除,不能回收";
  20365. }
  20366. }
  20367. else
  20368. {
  20369. errorMessage = "不存在回收数据,不能回收";
  20370. }
  20371. if (!string.IsNullOrEmpty(errorMessage))
  20372. {
  20373. if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 0)
  20374. {
  20375. // 损坯
  20376. if (S_PM_017_Value == 0)
  20377. {
  20378. errorMessage = "系统参数产品回收-报损未启用";
  20379. }
  20380. }
  20381. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 1)
  20382. {
  20383. // 成检
  20384. if (S_PM_020_Value == 0)
  20385. {
  20386. errorMessage = "系统参数产品回收-次品未启用";
  20387. }
  20388. }
  20389. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 2)
  20390. {
  20391. // 半检
  20392. if (S_PM_018_Value == 0)
  20393. {
  20394. errorMessage = "系统参数产品回收-半检不合格未启用";
  20395. }
  20396. }
  20397. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 3)
  20398. {
  20399. // 复检
  20400. if (S_PM_019_Value == 0)
  20401. {
  20402. errorMessage = "系统参数产品回收-复检不合格未启用";
  20403. }
  20404. }
  20405. }
  20406. }
  20407. #endregion
  20408. return errorMessage;
  20409. }
  20410. catch (Exception ex)
  20411. {
  20412. throw ex;
  20413. }
  20414. }
  20415. /// <summary>
  20416. /// 按条码判定是否为首节点
  20417. /// 从TP_PM_GroutingDailyDetail表中的BEGINNINGFLAG字段判定是否为首节点
  20418. /// "0":非首节点,"1":首节点
  20419. /// </summary>
  20420. /// <param name="oracleTrConn">数据连接</param>
  20421. /// <param name="barCode">条码</param>
  20422. /// <returns>是否首节点</returns>
  20423. /// xuwei add 2019-09-23
  20424. //public static bool IsNodeBegin(IDBTransaction oracleTrConn, string barCode)
  20425. //{
  20426. // bool result = false;
  20427. // try
  20428. // {
  20429. // if (barCode != "")
  20430. // {
  20431. // string flag = oracleTrConn.GetSqlResultToStr($@"select BEGINNINGFLAG as flag
  20432. // from TP_PM_GroutingDailyDetail
  20433. // where BARCODE = {barCode}");
  20434. // if (flag == "") throw new Exception("条码无效!请检查!");
  20435. // result = flag == "0" ? true : false;
  20436. // }
  20437. // }
  20438. // catch (Exception ex)
  20439. // {
  20440. // throw ex;
  20441. // }
  20442. // return result;
  20443. //}
  20444. //public static bool IsNodeBegin(IDBConnection oracleTrConn, string barCode)
  20445. //{
  20446. // bool result = false;
  20447. // try
  20448. // {
  20449. // if (barCode != "")
  20450. // {
  20451. // string flag = oracleTrConn.GetSqlResultToStr($@"select BEGINNINGFLAG as flag
  20452. // from TP_PM_GroutingDailyDetail
  20453. // where BARCODE = {barCode}");
  20454. // if (flag == "") throw new Exception("条码无效!请检查!");
  20455. // result = flag == "0" ? true : false;
  20456. // }
  20457. // }
  20458. // catch (Exception ex)
  20459. // {
  20460. // throw ex;
  20461. // }
  20462. // return result;
  20463. //}
  20464. /// <summary>
  20465. /// 按条码判定是否为首节点(调整为复用方法)
  20466. /// 从TP_PM_GroutingDailyDetail表中的BEGINNINGFLAG字段判定是否为首节点
  20467. /// "0":非首节点,"1":首节点,"-1":条码无效
  20468. /// </summary>
  20469. /// <param name="oracleTrConn">数据连接</param>
  20470. /// <param name="barCode">条码</param>
  20471. /// <returns>是否首节点</returns>
  20472. /// xuwei add 2019-09-26
  20473. public static int IsNodeBegin<T>(T oracleTrConn, string barCode)
  20474. {
  20475. Type t = typeof(T);
  20476. int result = -1;
  20477. try
  20478. {
  20479. if (barCode != "")
  20480. {
  20481. OracleParameter[] parasNew = new OracleParameter[]{
  20482. new OracleParameter(":barcode",barCode) };
  20483. string flag = t.GetMethod("GetSqlResultToStr")
  20484. .Invoke(oracleTrConn, new object[] { $@"select BEGINNINGFLAG as flag
  20485. from TP_PM_GroutingDailyDetail
  20486. where BARCODE = :barcode", parasNew }).ToString();
  20487. //if (flag == "") throw new Exception("无效条码,请检查!");
  20488. //xuwei fix 2019-09-26 找不到和非首节点均返回0
  20489. // 返修指定首节点时,判断错误
  20490. if (string.IsNullOrWhiteSpace(flag))
  20491. {
  20492. return -1;
  20493. }
  20494. result = (flag == "0" ? 1 : 0);
  20495. }
  20496. }
  20497. catch (Exception ex)
  20498. {
  20499. throw ex;
  20500. }
  20501. return result;
  20502. }
  20503. }
  20504. }