PMModuleLogicDAL.cs 1.2 MB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991
  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. if (barcodeTable == null || barcodeTable.Rows.Count == 0)
  44. {
  45. return null;
  46. }
  47. // 实例返回的Talbe
  48. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  49. DataRow dr = dtBarCode.NewRow();
  50. string errMsg = "";
  51. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  52. oracleTrConn.IgnoreCase = false;
  53. try
  54. {
  55. DataSet dsReturnSinglePoint = null;
  56. oracleTrConn.Connect();
  57. int goodsID = Constant.INT_IS_ZERO;
  58. string goodsCode = null;
  59. string goodsName = null;
  60. string groutingUserCode = string.Empty;
  61. string logoCode = string.Empty;
  62. string logoName = string.Empty;
  63. string groutingdate = string.Empty;
  64. #region 查询工序信息
  65. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  66. procedureInfo = procedure;
  67. #endregion
  68. if (barcodeTable.Columns.Contains("IsPDA"))
  69. {
  70. if (procedure.ModelType != (int)Constant.ProcedureModelType.DeliverMud)
  71. {
  72. if (barcodeTable.Columns.Contains("IsPublicBody"))
  73. {
  74. barcodeTable.Columns.Remove("IsPublicBody");
  75. barcodeTable.Columns.Remove("IsPDA");
  76. }
  77. }
  78. }
  79. #region 防止多次重复提交,导致数据重复
  80. // 通过锁定表tp_pm_usedbarcode中的条码,防止多次重复提交,导致数据重复
  81. // TODO PDA还没有修改,暂时注释。PDA(集中采集画面)点击保存时如果不成功提示消息后,清除了当前画面中的数据。应该不清空数据,可以继续保存。
  82. //string barcodes = null;
  83. //foreach (DataRow item in barcodeTable.Rows)
  84. //{
  85. // if (barcodes != null)
  86. // {
  87. // barcodes += ",";
  88. // }
  89. // barcodes += item["Barcode"].ToString();
  90. //}
  91. //if (barcodes != null)
  92. //{
  93. // string sql = "select uc.barcode from tp_pm_usedbarcode uc where uc.barcode in (" + barcodes + ") for update nowait";
  94. // try
  95. // {
  96. // oracleTrConn.GetSqlResultToDt(sql);
  97. // }
  98. // catch (Exception ex)
  99. // {
  100. // // 判断异常类型
  101. // if (ex.Message.IndexOf("ORA-00054") > -1)
  102. // {
  103. // dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码正在被处理中,请稍后再操作。";
  104. // dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = "0";
  105. // dtBarCode.Rows.Add(dr);
  106. // return dtBarCode;
  107. // }
  108. // throw ex;
  109. // }
  110. //}
  111. #endregion
  112. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  113. //xuwei fix 2019-09-26 按原条理判定首节点得到正确的返回结果
  114. // 2019-1016
  115. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  116. {
  117. int nodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, barcodeTable.Rows[0]["Barcode"].ToString());
  118. if (nodeBegin == 1)
  119. {
  120. procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  121. }
  122. else if (nodeBegin == 0)
  123. {
  124. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  125. }
  126. }
  127. //if (nodeBegin == -1) errMsg = "条码不正确,请检查!";
  128. #region 标准计件和坯库
  129. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal
  130. || procedure.ModelType == (int)Constant.ProcedureModelType.AdobeStock)
  131. {
  132. if (procedure.CollectType == 1)
  133. {
  134. #region 集中采集
  135. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  136. out goodsID, out goodsCode, out goodsName, out groutingUserCode);
  137. #endregion
  138. }
  139. else
  140. {
  141. #region 单点采集
  142. int? GroutingDailyDetailID = null;
  143. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  144. {
  145. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  146. }
  147. else
  148. {
  149. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  150. }
  151. if (dsReturnSinglePoint != null)
  152. {
  153. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  154. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  155. {
  156. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  157. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  158. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  159. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  160. barcodeTable.Rows[0]["barcode"] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  161. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  162. goodsID, goodsCode, goodsName, groutingUserCode, null);
  163. }
  164. }
  165. #endregion
  166. }
  167. }
  168. #endregion
  169. #region 交坯
  170. else if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)
  171. {
  172. if (procedure.CollectType == 1)
  173. {
  174. #region 集中采集
  175. //xuwei fix begin 2019-09-17
  176. //加入最后一个参数 true,识别为交坏
  177. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  178. out goodsID, out goodsCode, out goodsName, out groutingUserCode, true);
  179. //xuwei end
  180. #endregion
  181. }
  182. else
  183. {
  184. #region 单点采集
  185. int? GroutingDailyDetailID = null;
  186. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  187. {
  188. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  189. }
  190. else
  191. {
  192. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  193. }
  194. //dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  195. if (dsReturnSinglePoint != null)
  196. {
  197. //if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  198. //{
  199. // dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  200. //}
  201. //else
  202. //{
  203. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  204. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  205. {
  206. if (procedure.DeliverType == 0) //手动模式
  207. {
  208. if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  209. {
  210. if (barcodeTable.Rows[0]["IsPublicBody"].ToString() != "1")
  211. {
  212. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  213. }
  214. else
  215. {
  216. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  217. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  218. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  219. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  220. //xuwei fix begin 2019-09-17
  221. //加入最后一个参数 true,识别为交坏
  222. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  223. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  224. if (!string.IsNullOrEmpty(errMsg))
  225. {
  226. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  227. }
  228. // wangx 2016-10-10 是否设置过期未交坯
  229. else
  230. {
  231. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  232. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  233. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  234. if (sqlSettingValue != "0")
  235. {
  236. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  237. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  238. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  239. if (Convert.ToInt32(resultEntity.Result) < 0)
  240. {
  241. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  242. errMsg = resultEntity.Message;
  243. }
  244. }
  245. // wangx end
  246. }
  247. }
  248. }
  249. else
  250. {
  251. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  252. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  253. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  254. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  255. //xuwei fix begin 2019-09-17
  256. //加入最后一个参数 true,识别为交坏
  257. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  258. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  259. if (!string.IsNullOrEmpty(errMsg))
  260. {
  261. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  262. }
  263. // wangx 2016-10-10 是否设置过期未交坯
  264. else
  265. {
  266. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  267. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  268. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  269. if (sqlSettingValue != "0")
  270. {
  271. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  272. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  273. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  274. if (Convert.ToInt32(resultEntity.Result) < 0)
  275. {
  276. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  277. errMsg = resultEntity.Message;
  278. }
  279. }
  280. // wangx end
  281. }
  282. }
  283. }
  284. else //2016-07-05
  285. {
  286. // 自动模式 .查出型工号,单点采集前台并没有传值,更新barcodeTable表对应的字段
  287. string sql = @"select tp_mst_user.userid,tp_mst_user.usercode,tp_mst_user.username from TP_PM_GroutingDailyDetail
  288. left join tp_mst_user
  289. on TP_PM_GroutingDailyDetail.userid=tp_mst_user.userid
  290. where TP_PM_GroutingDailyDetail.barcode='" + barcodeTable.Rows[0]["barcode"].ToString() + "'";
  291. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  292. if (ds != null && ds.Tables[0].Rows.Count > 0)
  293. {
  294. barcodeTable.Rows[0]["UserCode"] = ds.Tables[0].Rows[0]["UserCode"];
  295. barcodeTable.Rows[0]["UserID"] = ds.Tables[0].Rows[0]["UserID"];
  296. barcodeTable.Rows[0]["UserName"] = ds.Tables[0].Rows[0]["UserName"];
  297. }
  298. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  299. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  300. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  301. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  302. //xuwei fix begin 2019-09-17
  303. //加入最后一个参数 true,识别为交坏
  304. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  305. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  306. if (!string.IsNullOrEmpty(errMsg))
  307. {
  308. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  309. }
  310. // wangx 2016-10-10 是否设置过期未交坯
  311. else
  312. {
  313. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  314. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  315. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  316. if (sqlSettingValue != "0")
  317. {
  318. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  319. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  320. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  321. if (Convert.ToInt32(resultEntity.Result) < 0)
  322. {
  323. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  324. errMsg = resultEntity.Message;
  325. }
  326. }
  327. // wangx end
  328. }
  329. //
  330. }
  331. //}
  332. }
  333. }
  334. #endregion
  335. }
  336. }
  337. #endregion
  338. #region 装窑车
  339. else if (procedure.ModelType == (int)Constant.ProcedureModelType.LoadCar)
  340. {
  341. errMsg = AddLoadKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  342. out goodsID, out goodsCode, out goodsName);
  343. }
  344. #endregion
  345. #region 窑车补件
  346. else if (procedure.ModelType == (int)Constant.ProcedureModelType.CarAdd)
  347. {
  348. errMsg = AddKilnCarSupplement(oracleTrConn, procedure, barcodeTable, sUserInfo,
  349. out goodsID, out goodsCode, out goodsName);
  350. }
  351. #endregion
  352. #region 入窑
  353. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKiln)
  354. {
  355. // PDA传入的窑车号。没有传入条码信息 需要转换
  356. /* modify by chenxy 2016-04-05 begin
  357. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  358. * 入窑时窑车上的产品需要重新获取。
  359. */
  360. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  361. // modify by chenxy 2016-04-05 end
  362. {
  363. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  364. }
  365. errMsg = AddIntoKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  366. out goodsID, out goodsCode, out goodsName);
  367. }
  368. #endregion
  369. #region 出窑
  370. else if (procedure.ModelType == (int)Constant.ProcedureModelType.OutKiln)
  371. {
  372. // PDA传入的窑车号。没有传入条码信息 需要转换
  373. /* modify by chenxy 2016-04-05 begin
  374. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  375. * 入窑时窑车上的产品需要重新获取。
  376. */
  377. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  378. // modify by chenxy 2016-04-05 end
  379. {
  380. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  381. }
  382. errMsg = AddOutKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  383. out goodsID, out goodsCode, out goodsName);
  384. }
  385. #endregion
  386. #region 卸窑车
  387. else if (procedure.ModelType == (int)Constant.ProcedureModelType.UnloadCar)
  388. {
  389. // PDA传入的窑车号。没有传入条码信息 需要转换
  390. /* modify by chenxy 2016-04-05 begin
  391. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  392. * 入窑时窑车上的产品需要重新获取。
  393. */
  394. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  395. // modify by chenxy 2016-04-05 end
  396. {
  397. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  398. }
  399. errMsg = AddUnloadingKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  400. out goodsID, out goodsCode, out goodsName);
  401. }
  402. #endregion
  403. #region 干补
  404. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SpecialRepair)
  405. {
  406. errMsg = AddDryRepairWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  407. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  408. }
  409. #endregion
  410. #region 回收
  411. else if (procedure.ModelType == (int)Constant.ProcedureModelType.Recovery)
  412. {
  413. errMsg = AddRecydingFlagWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  414. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  415. }
  416. #endregion
  417. #region 构造返回的DataTable
  418. if ((procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud
  419. || procedure.ModelType == (int)Constant.ProcedureModelType.Normal) && procedure.CollectType == 2)
  420. {
  421. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()];
  422. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()];
  423. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()];
  424. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()];
  425. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()];
  426. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()];
  427. //新添加的
  428. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  429. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  430. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  431. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  432. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  433. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  434. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  435. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  436. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  437. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  438. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  439. dr[Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()];
  440. dr[Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()];
  441. }
  442. else
  443. {
  444. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = (errMsg == null ? "" : errMsg);
  445. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = goodsID;
  446. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = goodsCode;
  447. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = goodsName;
  448. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = groutingUserCode;
  449. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = logoCode;
  450. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = logoName;
  451. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = groutingdate;
  452. //dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  453. //dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  454. //dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  455. //dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  456. //dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  457. //dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  458. //dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  459. //dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  460. //dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  461. //dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  462. }
  463. dtBarCode.Rows.Add(dr);
  464. #endregion
  465. // 没有错误 提交事务
  466. if (string.IsNullOrEmpty(errMsg))
  467. {
  468. oracleTrConn.Commit();
  469. }
  470. }
  471. catch (Exception ex)
  472. {
  473. oracleTrConn.Rollback();
  474. throw ex;
  475. }
  476. finally
  477. {
  478. // 释放资源
  479. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  480. {
  481. oracleTrConn.Disconnect();
  482. }
  483. }
  484. return dtBarCode;
  485. }
  486. #region 是否公坯
  487. /// <summary>
  488. /// 是否公坯
  489. /// </summary>
  490. /// <param name="barcode">产品条码</param>
  491. /// <returns>int</returns>
  492. public static int IsPubilcByBarCode(IDBTransaction oracleTrConn, string barcode)
  493. {
  494. int isPubilcBody = 0;
  495. try
  496. {
  497. string sqlString = @"
  498. select
  499. ispublicbody
  500. from tp_pm_inproduction where barcode=:barcode
  501. union
  502. select
  503. ispublicbody
  504. from TP_PM_InProductionTrash where barcode=:barcode
  505. ";
  506. OracleParameter[] paras = new OracleParameter[]{
  507. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  508. };
  509. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  510. if (ds != null && ds.Tables[0].Rows.Count > 0)
  511. {
  512. isPubilcBody = Convert.ToInt32(ds.Tables[0].Rows[0]["ispublicbody"]);
  513. }
  514. return isPubilcBody;
  515. }
  516. catch (Exception ex)
  517. {
  518. throw ex;
  519. }
  520. }
  521. #endregion
  522. /// <summary>
  523. /// 标准计件
  524. /// </summary>
  525. /// <param name="oracleTrConn">数据连接对象</param>
  526. /// <param name="procedure">工序对象</param>
  527. /// <param name="barcodeTable">条码信息</param>
  528. /// <param name="sUserInfo">用户基本信息</param>
  529. /// <param name="goodsID">返回的产品ID</param>
  530. /// <param name="goodsCode">返回的产品Code</param>
  531. /// <param name="goodsName">返回的产品名称</param>
  532. /// <param name="groutingUserID">返回的注浆者ID</param>
  533. /// <returns>string</returns>
  534. /// <remarks>
  535. /// 陈冰 2014.09.18 新建
  536. /// </remarks>
  537. private static string AddNormalWorkPiece(IDBTransaction oracleTrConn,
  538. ProcedureEntity procedure,
  539. DataTable barcodeTable,
  540. SUserInfo sUserInfo,
  541. out int goodsID,
  542. out string goodsCode,
  543. out string goodsName,
  544. out string groutingUserCode,
  545. bool isSendBody = false
  546. )
  547. {
  548. try
  549. {
  550. goodsID = Constant.INT_IS_ZERO;
  551. goodsCode = null;
  552. goodsName = null;
  553. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  554. // 获得账务日期
  555. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  556. string errMsg = string.Empty;
  557. // 本批采集的批次号
  558. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  559. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  560. // 条码信息
  561. foreach (DataRow barcodeRow in barcodeTable.Rows)
  562. {
  563. // 条码
  564. string barcode = barcodeRow["Barcode"].ToString();
  565. if (string.IsNullOrEmpty(barcode))
  566. {
  567. throw new Exception("传入的条码号为空");
  568. }
  569. // 生产工号
  570. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  571. // 生产工号
  572. string workUserCode = barcodeRow["UserCode"].ToString();
  573. int? GroutingDailyDetailID = null;//注浆明细ID
  574. if (procedure.CollectType == 1)
  575. {
  576. #region 集中采集 校验条码
  577. // ccc todo
  578. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  579. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  580. {
  581. #region 校验条码有效性
  582. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  583. if (!string.IsNullOrEmpty(errMsg))
  584. {
  585. return errMsg;
  586. }
  587. #endregion
  588. }
  589. else
  590. {
  591. #region 校验条码有效性
  592. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  593. if (!string.IsNullOrEmpty(errMsg))
  594. {
  595. return errMsg;
  596. }
  597. #endregion
  598. }
  599. #endregion
  600. }
  601. else
  602. {
  603. #region 单点采集 获取注浆日报明细
  604. string sqlGroutingInfo = "";
  605. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  606. tp_pm_groutingdailydetail.goodscode,
  607. tp_pm_groutingdailydetail.goodsname,
  608. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  609. tp_pm_groutingdailydetail.GroutingDailyDetailID
  610. from tp_pm_groutingdailydetail where barcode = :barcode";
  611. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  612. //(select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)";
  613. OracleParameter[] ReFireparas = new OracleParameter[] {
  614. new OracleParameter(":barcode",barcode),
  615. };
  616. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  617. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  618. {
  619. GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  620. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  621. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  622. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  623. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  624. }
  625. #endregion
  626. }
  627. int? ClassesSettingID = null;//班次配置ID
  628. #region 添加生产者数据
  629. //生产数据ID
  630. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  631. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  632. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  633. {
  634. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  635. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  636. {
  637. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  638. }
  639. else
  640. {
  641. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  642. }
  643. }
  644. else
  645. {
  646. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  647. }
  648. if (!string.IsNullOrEmpty(errMsg))
  649. {
  650. return errMsg;
  651. }
  652. #endregion
  653. //xuwei fix 2019-09-23 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  654. //xuwei fix 2019-09-26 使用通用方法判定
  655. //if (IsNodeBegin<IDBTransaction>(oracleTrConn, barcode) == 1)
  656. // procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  657. #region 添加生产数据
  658. ProductionDataEntity productionData = new ProductionDataEntity();
  659. #region 属性赋值
  660. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  661. productionData.ClassesSettingID = ClassesSettingID;
  662. productionData.ProductionDataID = productionDataID;
  663. productionData.Barcode = barcode;
  664. productionData.CentralizedBatchNo = centralizedBatchNo;
  665. productionData.ProductionLineID = procedure.ProductionLineID;
  666. productionData.ProductionLineCode = procedure.ProductionlineCode;
  667. productionData.ProductionLineName = procedure.ProductionlineName;
  668. productionData.CompleteProcedureID = procedure.ProcedureID;
  669. productionData.ProcedureCode = procedure.ProcedureCode;
  670. productionData.ProcedureName = procedure.ProcedureName;
  671. productionData.ProcedureModel = procedure.ProcedureModel;
  672. productionData.ModelType = procedure.ModelType;
  673. productionData.NodeType = procedure.NodeType;
  674. productionData.PieceType = procedure.PieceType;
  675. if (barcodeRow["LogoID"].ToString() != "")
  676. {
  677. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  678. }
  679. if (procedure.IsSpecialRework == 0)
  680. {
  681. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  682. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  683. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  684. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  685. {
  686. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  687. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  688. }
  689. ////// else
  690. ////// {
  691. ////// string sqlReFire = @"select
  692. ////// isrefire
  693. ////// from tp_pm_inproduction where barcode=:barcode
  694. ////// ";
  695. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  696. ////// new OracleParameter(":barcode",barcode),
  697. ////// };
  698. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  699. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  700. ////// {
  701. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  702. ////// {
  703. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  704. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  705. ////// //{
  706. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  707. ////// //}
  708. ////// }
  709. ////// }
  710. ////// }
  711. }
  712. else
  713. {
  714. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  715. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  716. }
  717. productionData.ReworkProcedureID = null;
  718. #region 交坯判断
  719. // 交坯节点
  720. if (barcodeTable.Columns.Contains("IsPublicBody"))
  721. {
  722. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  723. }
  724. // 非交坯节点
  725. else
  726. {
  727. // 正常坯
  728. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  729. }
  730. #endregion
  731. productionData.OrganizationID = procedure.OrganizationID;
  732. productionData.GoodsID = goodsID;
  733. productionData.GoodsCode = goodsCode;
  734. productionData.GoodsName = goodsName;
  735. productionData.UserID = workUserID;
  736. productionData.UserCode = barcodeRow["UserCode"].ToString();
  737. productionData.UserName = barcodeRow["UserName"].ToString();
  738. #endregion
  739. string OutSpecialRepairflag = "0";//干补标识
  740. DataSet outDataSet = null;
  741. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  742. {
  743. //添加首节点数据 (在产生产数据)
  744. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  745. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet,isSendBody);
  746. }
  747. else
  748. {
  749. //添加非首节点数据
  750. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  751. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag,isSendBody);
  752. }
  753. if (!string.IsNullOrEmpty(errMsg))
  754. {
  755. return errMsg;
  756. }
  757. #endregion
  758. #region 开始节点
  759. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  760. {
  761. #region 添加在产产品数据
  762. InProductionEntity addInProductionEntity = new InProductionEntity();
  763. addInProductionEntity.BarCode = barcode;
  764. //流程工序ID
  765. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  766. // 当前工序
  767. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  768. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  769. // 工序模型
  770. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  771. // 工序类别
  772. addInProductionEntity.ModelType = procedure.ModelType;
  773. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  774. addInProductionEntity.ProductionDataID = productionDataID;
  775. #region 交坯判断
  776. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  777. #endregion
  778. // 生产工号
  779. addInProductionEntity.UserID = workUserID;
  780. // 执行添加
  781. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  782. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet,isSendBody);
  783. // 执行失败
  784. if (!string.IsNullOrEmpty(errMsg))
  785. {
  786. return errMsg;
  787. }
  788. #endregion
  789. }
  790. #endregion
  791. #region 中间节点
  792. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  793. {
  794. #region 修改在产产品数据的当前工序,清空返工工序字段
  795. InProductionEntity addInProductionEntity = new InProductionEntity();
  796. addInProductionEntity.BarCode = barcode;
  797. //流程工序ID
  798. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  799. // 当前工序
  800. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  801. //当前生产数据ID
  802. addInProductionEntity.ProductionDataID = productionDataID;
  803. // 工序模型
  804. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  805. // 工序类别
  806. addInProductionEntity.ModelType = procedure.ModelType;
  807. // 生产工号
  808. addInProductionEntity.UserID = workUserID;
  809. addInProductionEntity.LogoID = productionData.LogoID;
  810. // 缺陷标识
  811. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  812. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  813. if (procedure.IsSpecialRework == 0)
  814. {
  815. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  816. }
  817. else
  818. {
  819. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  820. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  821. }
  822. #region 交坯判断
  823. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  824. #endregion
  825. // 执行修改
  826. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  827. // 执行失败
  828. if (!string.IsNullOrEmpty(errMsg))
  829. {
  830. return errMsg;
  831. }
  832. #endregion
  833. }
  834. #endregion
  835. #region 结束节点
  836. else
  837. {
  838. #region 添加成品数据 删除在产产品数据
  839. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  840. finishedProduct.BarCode = barcode;
  841. finishedProduct.LogoID = productionData.LogoID;
  842. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  843. if (!string.IsNullOrEmpty(errMsg))
  844. {
  845. return errMsg;
  846. }
  847. InProductionEntity delInProductionEntity = new InProductionEntity();
  848. delInProductionEntity.BarCode = barcode;
  849. // 执行删除 在产数据
  850. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  851. // 执行失败
  852. if (!string.IsNullOrEmpty(errMsg))
  853. {
  854. return errMsg;
  855. }
  856. #endregion
  857. }
  858. #endregion
  859. }
  860. return errMsg;
  861. }
  862. catch (Exception ex)
  863. {
  864. throw ex;
  865. }
  866. }
  867. /// <summary>
  868. /// 添加生产者(交坯单独调用,特殊)
  869. /// </summary>
  870. /// <param name="oracleTrConn">连接对象</param>
  871. /// <param name="accountDate">账务日期</param>
  872. /// <param name="productionDataID">生产数据ID</param>
  873. /// <param name="workUserID">生产工号ID</param>
  874. /// <param name="workUserCode">生产工号Code</param>
  875. /// <param name="sUserInfo">用户基本信息</param>
  876. /// <returns>string</returns>
  877. private static string AddProducerDeliverAdobe(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo)
  878. {
  879. // 参数
  880. OracleParameter[] paras;
  881. #region 将班次配置表中的数据插入生产者表中
  882. string sql = "insert into tp_pm_producer"
  883. + " (productiondataid,"
  884. + " staffid,"
  885. + " userid,"
  886. + " usercode,"
  887. + " UJobsID,"
  888. + " staffstatus,"
  889. + " SJobsID"
  890. + " )"
  891. + " select distinct :productiondataid,"
  892. + " staffid,"
  893. + " userid,"
  894. + " usercode,"
  895. + " UJobsID,"
  896. + " staffstatus,"
  897. + " SJobsID"
  898. + " "
  899. + " from TP_PM_GroutingProducer"
  900. + " where UserID = :userID";
  901. paras = new OracleParameter[] {
  902. new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  903. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  904. };
  905. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  906. // 失败
  907. if (resultCount == Constant.INT_IS_ZERO)
  908. {
  909. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  910. }
  911. #endregion
  912. return null;
  913. }
  914. /// <summary>
  915. /// 装车后,更新所有以前操作的工序窑车信息
  916. /// </summary>
  917. /// <param name="oracleTrConn">连接对象</param>
  918. /// <param name="barcode">条码</param>
  919. /// <param name="kilnCarID">窑车号</param>
  920. /// <param name="goodsID">产品ID</param>
  921. /// <param name="KilnCarPosition">窑车位置</param>
  922. /// <param name="kilnCarBatchNo">装车批次</param>
  923. /// <param name="sUserInfo">用户基本信息</param>
  924. /// <returns>string</returns>
  925. private static string UpdateRefineBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  926. {
  927. string sql = "update TP_PM_ProductionData set "
  928. + " IsReFire=:IsReFire"
  929. + " where barcode=:barcode";
  930. #region 参数
  931. OracleParameter[] paras = new OracleParameter[] {
  932. new OracleParameter(":IsReFire",(int)Constant.GoodsLevelType.ReFire),
  933. new OracleParameter(":barcode",productionData.Barcode),
  934. };
  935. #endregion
  936. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  937. // 保存失败
  938. if (result == Constant.INT_IS_ZERO)
  939. {
  940. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  941. }
  942. // 保存成功返回null
  943. return null;
  944. }
  945. /// <summary>
  946. /// 装窑车计件
  947. /// </summary>
  948. /// <param name="oracleTrConn">数据连接对象</param>
  949. /// <param name="procedure">工序对象</param>
  950. /// <param name="barcodeTable">条码信息</param>
  951. /// <param name="sUserInfo">用户基本信息</param>
  952. /// <param name="goodsID">返回的产品ID</param>
  953. /// <param name="goodsCode">返回的产品Code</param>
  954. /// <param name="goodsName">返回的产品名称</param>
  955. /// <returns>string</returns>
  956. /// <remarks>
  957. /// 陈冰 2014.09.18 新建
  958. /// </remarks>
  959. private static string AddLoadKilnCar(IDBTransaction oracleTrConn,
  960. ProcedureEntity procedure,
  961. DataTable barcodeTable,
  962. SUserInfo sUserInfo,
  963. out int goodsID,
  964. out string goodsCode,
  965. out string goodsName)
  966. {
  967. try
  968. {
  969. goodsID = Constant.INT_IS_ZERO;
  970. goodsCode = null;
  971. goodsName = null;
  972. string groutingUserCode = string.Empty;
  973. // 获得账务日期
  974. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  975. string errMsg = string.Empty;
  976. // 生产工号
  977. int workUserID = Constant.INT_IS_ZERO;
  978. // 生产工号Code
  979. string workUserCode = string.Empty;
  980. // 生产工号Name
  981. string workUserName = string.Empty;
  982. // 本批采集的批次号
  983. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  984. // 窑车批次号
  985. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  986. // 窑车状态
  987. string kilnCarStatus = string.Empty;
  988. //////////////////////////////////////////////////
  989. DataView dv = barcodeTable.DefaultView;
  990. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  991. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  992. {
  993. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  994. // 窑炉ID
  995. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  996. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  997. // 窑车ID
  998. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  999. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1000. // 窑车Code
  1001. // string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1002. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1003. #region 校验窑车是否可装车
  1004. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1005. if (!string.IsNullOrEmpty(errMsg))
  1006. {
  1007. return errMsg;
  1008. }
  1009. #endregion
  1010. #region 如果窑车状态为空,需要插入窑车状态表
  1011. if (string.IsNullOrEmpty(kilnCarStatus))
  1012. {
  1013. // 自动生成窑车烧成批次号
  1014. kilnCarBatchNo = GetFiredKilnCarBatchNo(oracleTrConn, kilnCarID);
  1015. // 插入窑车状态表
  1016. errMsg = AddkilnCarStatus(oracleTrConn, procedure, kilnCarID, kilnID, kilnCarBatchNo, sUserInfo);
  1017. if (!string.IsNullOrEmpty(errMsg))
  1018. {
  1019. return errMsg;
  1020. }
  1021. }
  1022. #endregion
  1023. #region 窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  1024. // 查询本次窑车产品的批次号
  1025. else
  1026. {
  1027. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1028. // 更改窑车状态表入窑时间
  1029. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.LoadCar, sUserInfo, procedure, kilnCarBatchNo);
  1030. if (!string.IsNullOrEmpty(errMsg))
  1031. {
  1032. return errMsg;
  1033. }
  1034. }
  1035. #endregion
  1036. // 条码信息
  1037. DataView dvFilter = barcodeTable.DefaultView;
  1038. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1039. DataTable dtNew = dvFilter.ToTable();
  1040. // 条码信息
  1041. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1042. //--------------------------------
  1043. string sqllast = "select max(createtime) as createtime from TP_PM_KilnCarGoods"
  1044. + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  1045. OracleParameter[] paras = new OracleParameter[] {
  1046. new OracleParameter(":KilnCarID",kilnCarID),
  1047. new OracleParameter(":AccountID",sUserInfo.AccountID),
  1048. };
  1049. DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sqllast, paras);
  1050. object lastcreatetime = null;
  1051. if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0 && dsReturn.Tables[0].Rows[0]["CreateTime"].ToString() != "")
  1052. {
  1053. lastcreatetime = Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"]);
  1054. }
  1055. //--------------------------------
  1056. int? maxClassesSettingID = null;
  1057. foreach (DataRow barcodeRow in dtNew.Rows)
  1058. {
  1059. // 条码
  1060. string barcode = barcodeRow["Barcode"].ToString();
  1061. // 生产工号
  1062. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1063. workUserCode = barcodeRow["UserCode"].ToString();
  1064. workUserName = barcodeRow["UserName"].ToString();
  1065. #region 校验条码有效性
  1066. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  1067. if (!string.IsNullOrEmpty(errMsg))
  1068. {
  1069. return errMsg;
  1070. }
  1071. #endregion
  1072. // 查询新插入的生产数据ID
  1073. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1074. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1075. int productionDataID = 0;
  1076. if (!string.IsNullOrEmpty(idStr))
  1077. {
  1078. productionDataID = int.Parse(idStr);
  1079. }
  1080. else
  1081. {
  1082. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1083. }
  1084. int? ClassesSettingID = null;//班次配置ID
  1085. #region 添加生产者数据
  1086. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1087. if (!string.IsNullOrEmpty(errMsg))
  1088. {
  1089. return errMsg;
  1090. }
  1091. #endregion
  1092. maxClassesSettingID = ClassesSettingID;
  1093. #region 添加生产数据
  1094. ProductionDataEntity productionData = new ProductionDataEntity();
  1095. #region 属性赋值
  1096. productionData.ClassesSettingID = ClassesSettingID;
  1097. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1098. productionData.Barcode = barcode;
  1099. productionData.CentralizedBatchNo = centralizedBatchNo;
  1100. productionData.ProductionLineID = procedure.ProductionLineID;
  1101. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1102. productionData.ProductionLineName = procedure.ProductionlineName;
  1103. productionData.CompleteProcedureID = procedure.ProcedureID;
  1104. productionData.ProcedureCode = procedure.ProcedureCode;
  1105. productionData.ProcedureName = procedure.ProcedureName;
  1106. productionData.ProcedureModel = procedure.ProcedureModel;
  1107. productionData.ModelType = procedure.ModelType;
  1108. productionData.NodeType = procedure.NodeType;
  1109. productionData.ReworkProcedureID = null;
  1110. productionData.PieceType = procedure.PieceType;
  1111. //productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  1112. if (procedure.IsSpecialRework == 0)
  1113. {
  1114. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1115. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1116. }
  1117. else
  1118. {
  1119. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1120. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  1121. }
  1122. //productionData.GoodsGrade = (int)Constant.GoodsLevelType.NoDefects;
  1123. //if (lastcreatetime != null)
  1124. //{
  1125. // productionData.CreateTime = Convert.ToDateTime(lastcreatetime);
  1126. //}
  1127. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1128. ////string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1129. ////DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  1130. ////if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1131. ////{
  1132. //// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1133. //// {
  1134. //// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1135. //// }
  1136. ////}
  1137. productionData.OrganizationID = procedure.OrganizationID;
  1138. productionData.GoodsID = goodsID;
  1139. productionData.GoodsCode = goodsCode;
  1140. productionData.GoodsName = goodsName;
  1141. productionData.UserID = workUserID;
  1142. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1143. productionData.UserName = barcodeRow["UserName"].ToString();
  1144. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1145. #region 窑炉窑车属性
  1146. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1147. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1148. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1149. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1150. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1151. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1152. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1153. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1154. #endregion
  1155. #endregion
  1156. string OutSpecialRepairflag = "0";//干补标识
  1157. //if (lastcreatetime == null)
  1158. //{
  1159. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1160. //}
  1161. //else
  1162. //{
  1163. // errMsg = AddProductionDataCreateTime(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1164. //}
  1165. if (!string.IsNullOrEmpty(errMsg))
  1166. {
  1167. return errMsg;
  1168. }
  1169. #endregion
  1170. #region 修改在产产品数据的当前工序,清空返工工序字段
  1171. InProductionEntity addInProductionEntity = new InProductionEntity();
  1172. addInProductionEntity.BarCode = barcode;
  1173. //流程工序
  1174. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1175. // 当前工序
  1176. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1177. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1178. //生产数据ID
  1179. addInProductionEntity.ProductionDataID = productionDataID;
  1180. // 工序模型
  1181. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1182. // 工序类别
  1183. addInProductionEntity.ModelType = procedure.ModelType;
  1184. // 生产工号
  1185. addInProductionEntity.UserID = workUserID;
  1186. // 缺陷标识
  1187. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1188. #region 更新在产表窑车窑炉字段
  1189. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1190. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1191. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1192. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1193. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1194. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1195. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1196. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1197. #endregion
  1198. if (procedure.IsSpecialRework == 0)
  1199. {
  1200. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1201. }
  1202. else
  1203. {
  1204. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1205. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1206. }
  1207. // 执行修改
  1208. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1209. // 执行失败
  1210. if (!string.IsNullOrEmpty(errMsg))
  1211. {
  1212. return errMsg;
  1213. }
  1214. #endregion
  1215. //#region 添加生产者数据
  1216. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1217. //if (!string.IsNullOrEmpty(errMsg))
  1218. //{
  1219. // return errMsg;
  1220. //}
  1221. //#endregion
  1222. //errMsg = UpdateKilnCarCreatetimeInfoBybarcode(oracleTrConn, productionData, sUserInfo);
  1223. //if (!string.IsNullOrEmpty(errMsg))
  1224. //{
  1225. // return errMsg;
  1226. //}
  1227. #region 插入窑车产品表
  1228. errMsg = AddKilnCarGoods(oracleTrConn,
  1229. barcode,
  1230. kilnCarID,
  1231. goodsID,
  1232. productionData.KilnCarPosition.Value,
  1233. kilnCarBatchNo,
  1234. workUserID,
  1235. workUserCode,
  1236. workUserName,
  1237. sUserInfo);
  1238. if (!string.IsNullOrEmpty(errMsg))
  1239. {
  1240. return errMsg;
  1241. }
  1242. #endregion
  1243. //#region 装车后,更新所有以前操作的工序窑车信息
  1244. //errMsg = UpdateKilnCarInfoBybarcode(oracleTrConn, productionData);
  1245. //if (!string.IsNullOrEmpty(errMsg))
  1246. //{
  1247. // return errMsg;
  1248. //}
  1249. //#endregion
  1250. }
  1251. #region 窑车生产数据
  1252. #region 插入窑车生产数据表
  1253. if (lastcreatetime == null) //加此判断为的是,在登车时落产品,进行第二些登车时,不插重复数据
  1254. {
  1255. errMsg = AddKilnCarData(oracleTrConn,
  1256. accountDate,
  1257. kilnCarID,
  1258. kilnCarBatchNo,
  1259. workUserID,
  1260. workUserCode,
  1261. workUserName,
  1262. null,
  1263. sUserInfo, maxClassesSettingID);
  1264. #region 窑车生产者
  1265. if (!string.IsNullOrEmpty(errMsg))
  1266. {
  1267. return errMsg;
  1268. }
  1269. #endregion
  1270. }
  1271. #endregion
  1272. #endregion
  1273. }
  1274. return errMsg;
  1275. }
  1276. catch (Exception ex)
  1277. {
  1278. throw ex;
  1279. }
  1280. }
  1281. /// <summary>
  1282. /// 装车后,更新所有以前操作的工序窑车信息
  1283. /// </summary>
  1284. /// <param name="oracleTrConn">连接对象</param>
  1285. /// <param name="barcode">条码</param>
  1286. /// <param name="kilnCarID">窑车号</param>
  1287. /// <param name="goodsID">产品ID</param>
  1288. /// <param name="KilnCarPosition">窑车位置</param>
  1289. /// <param name="kilnCarBatchNo">装车批次</param>
  1290. /// <param name="sUserInfo">用户基本信息</param>
  1291. /// <returns>string</returns>
  1292. private static string UpdateKilnCarInfoBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  1293. {
  1294. string sql = "update TP_PM_ProductionData set "
  1295. + " KilnID=:KilnID,"
  1296. + "KilnCode=:KilnCode,"
  1297. + "KilnName=:KilnName,"
  1298. + "KilnCarID=:KilnCarID,"
  1299. + "KilnCarCode=:KilnCarCode,"
  1300. + "KilnCarName=:KilnCarName,"
  1301. + "KilnCarBatchNo=:KilnCarBatchNo,"
  1302. + "KilnCarPosition=:KilnCarPosition,"
  1303. + "isrefire=:isrefire "
  1304. + " where barcode=:barcode";
  1305. #region 参数
  1306. OracleParameter[] paras = new OracleParameter[] {
  1307. new OracleParameter(":KilnID",productionData.KilnID),
  1308. new OracleParameter(":KilnCode",productionData.KilnCode),
  1309. new OracleParameter(":KilnName",productionData.KilnName),
  1310. new OracleParameter(":KilnCarID",productionData.KilnCarID),
  1311. new OracleParameter(":KilnCarCode",productionData.KilnCarCode),
  1312. new OracleParameter(":KilnCarName",productionData.KilnCarName),
  1313. new OracleParameter(":KilnCarBatchNo",productionData.KilnCarBatchNo),
  1314. new OracleParameter(":KilnCarPosition",productionData.KilnCarPosition),
  1315. new OracleParameter(":isrefire",productionData.IsReFire),
  1316. new OracleParameter(":barcode",productionData.Barcode),
  1317. };
  1318. #endregion
  1319. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  1320. // 保存失败
  1321. if (result == Constant.INT_IS_ZERO)
  1322. {
  1323. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1324. }
  1325. // 保存成功返回null
  1326. return null;
  1327. }
  1328. /// <summary>
  1329. /// 入窑车计件
  1330. /// </summary>
  1331. /// <param name="oracleTrConn">数据连接对象</param>
  1332. /// <param name="procedure">工序对象</param>
  1333. /// <param name="barcodeTable">条码信息</param>
  1334. /// <param name="sUserInfo">基本</param>
  1335. /// <param name="goodsID">返回的产品ID</param>
  1336. /// <param name="goodsCode">返回的产品Code</param>
  1337. /// <param name="goodsName">返回的产品名称</param>
  1338. /// <returns>string</returns>
  1339. /// <remarks>
  1340. /// 张国印 2014.10.04 新建
  1341. /// </remarks>
  1342. private static string AddIntoKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1343. out int goodsID, out string goodsCode, out string goodsName)
  1344. {
  1345. try
  1346. {
  1347. goodsID = Constant.INT_IS_ZERO;
  1348. goodsCode = string.Empty;
  1349. goodsName = string.Empty;
  1350. string groutingUserCode = string.Empty;
  1351. // 获得账务日期
  1352. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1353. string errMsg = string.Empty;
  1354. // 生产工号
  1355. int workUserID = Constant.INT_IS_ZERO;
  1356. // 生产工号Code
  1357. string workUserCode = string.Empty;
  1358. // 生产工号Name
  1359. string workUserName = string.Empty;
  1360. // 本批采集的批次号
  1361. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1362. // 窑车批次号
  1363. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  1364. // 窑车状态
  1365. string kilnCarStatus = string.Empty;
  1366. //////////////////////////////////////////////////
  1367. DataView dv = barcodeTable.DefaultView;
  1368. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1369. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1370. {
  1371. ///////////////////////////////////////////////////
  1372. // 窑车Code
  1373. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1374. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1375. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1376. #region 校验窑车是否可入窑炉
  1377. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1378. if (!string.IsNullOrEmpty(errMsg))
  1379. {
  1380. return errMsg;
  1381. }
  1382. #endregion
  1383. // 窑炉ID
  1384. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1385. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1386. // 窑车ID
  1387. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1388. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1389. //备注信息
  1390. string Remarks = dr[0]["Remarks"].ToString();
  1391. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1392. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1393. if (!string.IsNullOrEmpty(errMsg))
  1394. {
  1395. return errMsg;
  1396. }
  1397. // 查询本次窑车产品的批次号
  1398. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1399. #region 窑车表存在,查询本次窑车产品的批次号 并更改入窑车时间
  1400. //更改窑车状态表入窑时间
  1401. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.IntoKiln, sUserInfo, procedure, kilnCarBatchNo);
  1402. if (!string.IsNullOrEmpty(errMsg))
  1403. {
  1404. return errMsg;
  1405. }
  1406. #endregion
  1407. DataView dvFilter = barcodeTable.DefaultView;
  1408. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1409. DataTable dtNew = dvFilter.ToTable();
  1410. int? maxClassesSettingID = null;
  1411. // 条码信息
  1412. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1413. foreach (DataRow barcodeRow in dtNew.Rows)
  1414. {
  1415. // 条码
  1416. string barcode = barcodeRow["Barcode"].ToString();
  1417. // 生产工号
  1418. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1419. workUserCode = barcodeRow["UserCode"].ToString();
  1420. workUserName = barcodeRow["UserName"].ToString();
  1421. // 查询新插入的生产数据ID
  1422. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1423. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1424. int productionDataID = 0;
  1425. if (!string.IsNullOrEmpty(idStr))
  1426. {
  1427. productionDataID = int.Parse(idStr);
  1428. }
  1429. else
  1430. {
  1431. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1432. }
  1433. int? ClassesSettingID = null;//班次配置ID
  1434. #region 添加生产者数据
  1435. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1436. if (!string.IsNullOrEmpty(errMsg))
  1437. {
  1438. return errMsg;
  1439. }
  1440. #endregion
  1441. maxClassesSettingID = ClassesSettingID;
  1442. #region 添加生产数据
  1443. ProductionDataEntity productionData = new ProductionDataEntity();
  1444. #region 属性赋值
  1445. productionData.ClassesSettingID = ClassesSettingID;
  1446. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1447. productionData.Barcode = barcode;
  1448. productionData.CentralizedBatchNo = centralizedBatchNo;
  1449. productionData.ProductionLineID = procedure.ProductionLineID;
  1450. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1451. productionData.ProductionLineName = procedure.ProductionlineName;
  1452. productionData.CompleteProcedureID = procedure.ProcedureID;
  1453. productionData.ProcedureCode = procedure.ProcedureCode;
  1454. productionData.ProcedureName = procedure.ProcedureName;
  1455. productionData.ProcedureModel = procedure.ProcedureModel;
  1456. productionData.ModelType = procedure.ModelType;
  1457. productionData.NodeType = procedure.NodeType;
  1458. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1459. productionData.ReworkProcedureID = null;
  1460. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1461. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1462. productionData.PieceType = procedure.PieceType;
  1463. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1464. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1465. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1466. ////// string sqlReFire = @"select
  1467. ////// isrefire
  1468. ////// from tp_pm_inproduction where barcode=:barcode
  1469. ////// ";
  1470. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1471. ////// new OracleParameter(":barcode",barcode),
  1472. ////// };
  1473. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1474. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1475. ////// {
  1476. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1477. ////// {
  1478. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1479. ////// }
  1480. ////// }
  1481. productionData.OrganizationID = procedure.OrganizationID;
  1482. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1483. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1484. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1485. productionData.UserID = workUserID;
  1486. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1487. productionData.UserName = barcodeRow["UserName"].ToString();
  1488. #region 窑炉窑车属性
  1489. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1490. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1491. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1492. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1493. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1494. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1495. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1496. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1497. productionData.Remarks = "";
  1498. #endregion
  1499. #endregion
  1500. string OutSpecialRepairflag = "0";//干补标识
  1501. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1502. if (!string.IsNullOrEmpty(errMsg))
  1503. {
  1504. return errMsg;
  1505. }
  1506. #endregion
  1507. #region 修改在产产品数据的当前工序,清空返工工序字段
  1508. InProductionEntity addInProductionEntity = new InProductionEntity();
  1509. addInProductionEntity.BarCode = barcode;
  1510. //流程工序
  1511. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1512. // 当前工序
  1513. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1514. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1515. //生产数据ID
  1516. addInProductionEntity.ProductionDataID = productionDataID;
  1517. // 工序模型
  1518. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1519. // 工序类别
  1520. addInProductionEntity.ModelType = procedure.ModelType;
  1521. // 生产工号
  1522. addInProductionEntity.UserID = workUserID;
  1523. // 缺陷标识
  1524. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1525. #region 更新在产表窑车窑炉字段
  1526. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1527. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1528. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1529. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1530. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1531. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1532. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1533. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1534. #endregion
  1535. // 执行修改
  1536. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1537. // 执行失败
  1538. if (!string.IsNullOrEmpty(errMsg))
  1539. {
  1540. return errMsg;
  1541. }
  1542. #endregion
  1543. //#region 添加生产者数据
  1544. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1545. //if (!string.IsNullOrEmpty(errMsg))
  1546. //{
  1547. // return errMsg;
  1548. //}
  1549. //#endregion
  1550. }
  1551. #region 插入窑车生产数据表
  1552. errMsg = AddKilnCarData(oracleTrConn,
  1553. accountDate,
  1554. kilnCarID,
  1555. kilnCarBatchNo,
  1556. workUserID,
  1557. workUserCode,
  1558. workUserName,
  1559. Remarks,
  1560. sUserInfo, maxClassesSettingID);
  1561. if (!string.IsNullOrEmpty(errMsg))
  1562. {
  1563. return errMsg;
  1564. }
  1565. #endregion
  1566. //#region 窑车生产者
  1567. //// 查询新插入的生产数据ID
  1568. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1569. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1570. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1571. //if (!string.IsNullOrEmpty(errMsg))
  1572. //{
  1573. // return errMsg;
  1574. //}
  1575. //#endregion
  1576. }
  1577. return errMsg;
  1578. }
  1579. catch (Exception ex)
  1580. {
  1581. throw ex;
  1582. }
  1583. }
  1584. /// <summary>
  1585. /// 校验窑车的工序与当前工序是否可以到达(重烧后,未走重烧入窑)
  1586. /// </summary>
  1587. /// <param name="oracleTrConn">数据连接</param>
  1588. /// <param name="barcode">产品条码</param>
  1589. /// <returns>string</returns>
  1590. private static string GetKilnCarProcedureIDByKilnCarID(IDBTransaction oracleTrConn, int KilnCarID, int ProcedureID)
  1591. {
  1592. string sql = @"select ProcedureID from TP_PM_KilnCarStatus where KilnCarID=:KilnCarID";
  1593. OracleParameter[] paras = new OracleParameter[] {
  1594. new OracleParameter(":KilnCarID", KilnCarID) ,
  1595. };
  1596. int currentProcedureID = 0;
  1597. DataSet result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1598. if (result != null && result.Tables[0].Rows.Count > 0)
  1599. {
  1600. currentProcedureID = Convert.ToInt32(result.Tables[0].Rows[0][0]);
  1601. }
  1602. sql = @"select pro.ProcedureID
  1603. from TP_PC_ProcedureFlow flow
  1604. inner join TP_PC_Procedure pro
  1605. on flow.arriveprocedureid = pro.procedureid
  1606. inner join TP_PC_ProductionLine line
  1607. on pro.ProductionLineID = line.ProductionLineID
  1608. where flow.ProcedureID = :currentProcedureID
  1609. and flow.FlowFlag = 2";
  1610. paras = new OracleParameter[] {
  1611. new OracleParameter(":currentProcedureID", currentProcedureID) ,
  1612. };
  1613. result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1614. int returnProcedureID = 0;
  1615. if (result != null && result.Tables[0].Rows.Count > 0)
  1616. {
  1617. if (result.Tables[0].Select("ProcedureID=" + ProcedureID).Length > 0)
  1618. {
  1619. returnProcedureID = 1;
  1620. }
  1621. }
  1622. // 保存失败
  1623. if (returnProcedureID == 0)
  1624. {
  1625. return string.Format("当前工序不允许进行操作", "条码", "保存");
  1626. }
  1627. return null;
  1628. }
  1629. /// <summary>
  1630. /// 出窑车计件
  1631. /// </summary>
  1632. /// <param name="oracleTrConn">数据连接对象</param>
  1633. /// <param name="procedure">工序对象</param>
  1634. /// <param name="barcodeTable">条码信息</param>
  1635. /// <param name="sUserInfo">用户基本信息</param>
  1636. /// <param name="goodsID">返回的产品ID</param>
  1637. /// <param name="goodsCode">返回的产品Code</param>
  1638. /// <param name="goodsName">返回的产品名称</param>
  1639. /// <returns>string</returns>
  1640. /// <remarks>
  1641. /// 张国印 2014.10.04 新建
  1642. /// </remarks>
  1643. private static string AddOutKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1644. out int goodsID, out string goodsCode, out string goodsName)
  1645. {
  1646. try
  1647. {
  1648. goodsID = Constant.INT_IS_ZERO;
  1649. goodsCode = string.Empty;
  1650. goodsName = string.Empty;
  1651. string groutingUserCode = string.Empty;
  1652. // 获得账务日期
  1653. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1654. string errMsg = string.Empty;
  1655. // 生产工号
  1656. int workUserID = Constant.INT_IS_ZERO;
  1657. // 生产工号Code
  1658. string workUserCode = string.Empty;
  1659. // 生产工号Name
  1660. string workUserName = string.Empty;
  1661. // 本批采集的批次号
  1662. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1663. // 窑车批次号
  1664. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  1665. // 窑车状态
  1666. string kilnCarStatus = string.Empty;
  1667. //////////////////////////////////////////////////
  1668. DataView dv = barcodeTable.DefaultView;
  1669. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1670. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1671. {
  1672. // 窑车Code
  1673. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1674. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1675. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1676. string Remarks = dr[0]["Remarks"].ToString();
  1677. #region 校验窑车是否可出窑炉
  1678. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1679. if (!string.IsNullOrEmpty(errMsg))
  1680. {
  1681. return errMsg;
  1682. }
  1683. #endregion
  1684. // 窑炉ID
  1685. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1686. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1687. // 窑车ID
  1688. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1689. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1690. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1691. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1692. if (!string.IsNullOrEmpty(errMsg))
  1693. {
  1694. return errMsg;
  1695. }
  1696. // 查询本次窑车产品的批次号
  1697. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1698. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  1699. //更改窑车状态表入窑时间
  1700. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.OutKiln, sUserInfo, procedure, kilnCarBatchNo);
  1701. if (!string.IsNullOrEmpty(errMsg))
  1702. {
  1703. return errMsg;
  1704. }
  1705. #endregion
  1706. //// 条码信息
  1707. DataView dvFilter = barcodeTable.DefaultView;
  1708. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1709. DataTable dtNew = dvFilter.ToTable();
  1710. int? maxClassesSettingID = null;
  1711. // 条码信息
  1712. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1713. foreach (DataRow barcodeRow in dtNew.Rows)
  1714. {
  1715. // 条码
  1716. string barcode = barcodeRow["Barcode"].ToString();
  1717. // 生产工号
  1718. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1719. workUserCode = barcodeRow["UserCode"].ToString();
  1720. workUserName = barcodeRow["UserName"].ToString();
  1721. // 查询新插入的生产数据ID
  1722. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1723. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1724. int productionDataID = 0;
  1725. if (!string.IsNullOrEmpty(idStr))
  1726. {
  1727. productionDataID = int.Parse(idStr);
  1728. }
  1729. else
  1730. {
  1731. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1732. }
  1733. int? ClassesSettingID = null;//班次配置ID
  1734. #region 添加生产者数据
  1735. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1736. if (!string.IsNullOrEmpty(errMsg))
  1737. {
  1738. return errMsg;
  1739. }
  1740. #endregion
  1741. maxClassesSettingID = ClassesSettingID;
  1742. #region 添加生产数据
  1743. ProductionDataEntity productionData = new ProductionDataEntity();
  1744. #region 属性赋值
  1745. productionData.ClassesSettingID = ClassesSettingID;
  1746. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1747. productionData.Barcode = barcode;
  1748. productionData.CentralizedBatchNo = centralizedBatchNo;
  1749. productionData.ProductionLineID = procedure.ProductionLineID;
  1750. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1751. productionData.ProductionLineName = procedure.ProductionlineName;
  1752. productionData.CompleteProcedureID = procedure.ProcedureID;
  1753. productionData.ProcedureCode = procedure.ProcedureCode;
  1754. productionData.ProcedureName = procedure.ProcedureName;
  1755. productionData.ProcedureModel = procedure.ProcedureModel;
  1756. productionData.ModelType = procedure.ModelType;
  1757. productionData.NodeType = procedure.NodeType;
  1758. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1759. productionData.ReworkProcedureID = null;
  1760. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1761. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1762. productionData.PieceType = procedure.PieceType;
  1763. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1764. ////// string sqlReFire = @"select
  1765. ////// isrefire
  1766. ////// from tp_pm_inproduction where barcode=:barcode
  1767. ////// ";
  1768. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1769. ////// new OracleParameter(":barcode",barcode),
  1770. ////// };
  1771. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1772. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1773. ////// {
  1774. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1775. ////// {
  1776. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1777. ////// }
  1778. ////// }
  1779. productionData.OrganizationID = procedure.OrganizationID;
  1780. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1781. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1782. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1783. productionData.UserID = workUserID;
  1784. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1785. productionData.UserName = barcodeRow["UserName"].ToString();
  1786. #region 窑炉窑车属性
  1787. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1788. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1789. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1790. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1791. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1792. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1793. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1794. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1795. productionData.Remarks = barcodeRow["Remarks"].ToString();
  1796. #endregion
  1797. #endregion
  1798. string OutSpecialRepairflag = "0";//干补标识
  1799. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1800. if (!string.IsNullOrEmpty(errMsg))
  1801. {
  1802. return errMsg;
  1803. }
  1804. #endregion
  1805. #region 修改在产产品数据的当前工序,清空返工工序字段
  1806. InProductionEntity addInProductionEntity = new InProductionEntity();
  1807. addInProductionEntity.BarCode = barcode;
  1808. //流程工序
  1809. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1810. // 当前工序
  1811. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1812. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1813. // 生产数据ID
  1814. addInProductionEntity.ProductionDataID = productionDataID;
  1815. // 工序模型
  1816. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1817. // 工序类别
  1818. addInProductionEntity.ModelType = procedure.ModelType;
  1819. // 生产工号
  1820. addInProductionEntity.UserID = workUserID;
  1821. // 缺陷标识
  1822. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1823. #region 更新在产表窑车窑炉字段
  1824. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1825. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1826. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1827. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1828. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1829. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1830. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1831. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1832. #endregion
  1833. // 执行修改
  1834. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1835. // 执行失败
  1836. if (!string.IsNullOrEmpty(errMsg))
  1837. {
  1838. return errMsg;
  1839. }
  1840. #endregion
  1841. //#region 添加生产者数据
  1842. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1843. //if (!string.IsNullOrEmpty(errMsg))
  1844. //{
  1845. // return errMsg;
  1846. //}
  1847. //#endregion
  1848. }
  1849. #region 插入窑车生产数据表
  1850. errMsg = AddKilnCarData(oracleTrConn,
  1851. accountDate,
  1852. kilnCarID,
  1853. kilnCarBatchNo,
  1854. workUserID,
  1855. workUserCode,
  1856. workUserName,
  1857. Remarks,
  1858. sUserInfo, maxClassesSettingID);
  1859. if (!string.IsNullOrEmpty(errMsg))
  1860. {
  1861. return errMsg;
  1862. }
  1863. #endregion
  1864. //#region 窑车生产者
  1865. //// 查询新插入的生产数据ID
  1866. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1867. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1868. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1869. //if (!string.IsNullOrEmpty(errMsg))
  1870. //{
  1871. // return errMsg;
  1872. //}
  1873. //#endregion
  1874. }
  1875. return errMsg;
  1876. }
  1877. catch (Exception ex)
  1878. {
  1879. throw ex;
  1880. }
  1881. }
  1882. /// <summary>
  1883. /// 卸窑车计件
  1884. /// </summary>
  1885. /// <param name="oracleTrConn">数据连接对象</param>
  1886. /// <param name="procedure">工序对象</param>
  1887. /// <param name="barcodeTable">条码信息</param>
  1888. /// <param name="sUserInfo">用户基本信息</param>
  1889. /// <param name="goodsID">返回的产品ID</param>
  1890. /// <param name="goodsCode">返回的产品Code</param>
  1891. /// <param name="goodsName">返回的产品名称</param>
  1892. /// <returns>string</returns>
  1893. /// <remarks>
  1894. /// 张国印 2014.10.04 新建
  1895. /// </remarks>
  1896. private static string AddUnloadingKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1897. out int goodsID, out string goodsCode, out string goodsName)
  1898. {
  1899. try
  1900. {
  1901. goodsID = Constant.INT_IS_ZERO;
  1902. goodsCode = string.Empty;
  1903. goodsName = string.Empty;
  1904. string groutingUserCode = string.Empty;
  1905. // 获得账务日期
  1906. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1907. string errMsg = string.Empty;
  1908. // 生产工号
  1909. int workUserID = Constant.INT_IS_ZERO;
  1910. // 生产工号Code
  1911. string workUserCode = string.Empty;
  1912. // 生产工号Name
  1913. string workUserName = string.Empty;
  1914. // 本批采集的批次号
  1915. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1916. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  1917. // 窑车批次号
  1918. string kilnCarBatchNo = null;//System.Guid.NewGuid().ToString();
  1919. // 窑车状态
  1920. string kilnCarStatus = string.Empty;
  1921. DataView dv = barcodeTable.DefaultView;
  1922. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1923. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1924. {
  1925. // 窑车Code
  1926. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1927. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1928. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1929. string Remarks = dr[0]["Remarks"].ToString();
  1930. #region 校验窑车是否可出窑炉
  1931. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1932. if (!string.IsNullOrEmpty(errMsg))
  1933. {
  1934. return errMsg;
  1935. }
  1936. #endregion
  1937. // 窑炉ID
  1938. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1939. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1940. // 窑车ID
  1941. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1942. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1943. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1944. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1945. if (!string.IsNullOrEmpty(errMsg))
  1946. {
  1947. return errMsg;
  1948. }
  1949. // 查询本次窑车产品的批次号
  1950. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1951. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  1952. //更改窑车状态表入窑时间
  1953. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.UnloadCar, sUserInfo, procedure, kilnCarBatchNo);
  1954. if (!string.IsNullOrEmpty(errMsg))
  1955. {
  1956. return errMsg;
  1957. }
  1958. #endregion
  1959. // 条码信息
  1960. DataView dvFilter = barcodeTable.DefaultView;
  1961. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1962. DataTable dtNew = dvFilter.ToTable();
  1963. int? maxClassesSettingID = null;
  1964. // 条码信息
  1965. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1966. foreach (DataRow barcodeRow in dtNew.Rows)
  1967. {
  1968. // 条码
  1969. string barcode = barcodeRow["Barcode"].ToString();
  1970. // 生产工号
  1971. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1972. workUserCode = barcodeRow["UserCode"].ToString();
  1973. workUserName = barcodeRow["UserName"].ToString();
  1974. // 查询新插入的生产数据ID
  1975. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1976. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1977. int productionDataID = 0;
  1978. if (!string.IsNullOrEmpty(idStr))
  1979. {
  1980. productionDataID = int.Parse(idStr);
  1981. }
  1982. else
  1983. {
  1984. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1985. }
  1986. int? ClassesSettingID = null;//班次配置ID
  1987. #region 添加生产者数据
  1988. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1989. if (!string.IsNullOrEmpty(errMsg))
  1990. {
  1991. return errMsg;
  1992. }
  1993. #endregion
  1994. maxClassesSettingID = ClassesSettingID;
  1995. #region 添加生产数据
  1996. ProductionDataEntity productionData = new ProductionDataEntity();
  1997. #region 属性赋值
  1998. productionData.ClassesSettingID = ClassesSettingID;
  1999. productionData.ProductionDataID = Convert.ToInt32(idStr);
  2000. productionData.Barcode = barcode;
  2001. productionData.CentralizedBatchNo = centralizedBatchNo;
  2002. productionData.ProductionLineID = procedure.ProductionLineID;
  2003. productionData.ProductionLineCode = procedure.ProductionlineCode;
  2004. productionData.ProductionLineName = procedure.ProductionlineName;
  2005. productionData.CompleteProcedureID = procedure.ProcedureID;
  2006. productionData.ProcedureCode = procedure.ProcedureCode;
  2007. productionData.ProcedureName = procedure.ProcedureName;
  2008. productionData.ProcedureModel = procedure.ProcedureModel;
  2009. productionData.ModelType = procedure.ModelType;
  2010. productionData.NodeType = procedure.NodeType;
  2011. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2012. productionData.ReworkProcedureID = null;
  2013. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2014. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2015. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2016. productionData.PieceType = procedure.PieceType;
  2017. ////// string sqlReFire = @"select
  2018. ////// isrefire
  2019. ////// from tp_pm_inproduction where barcode=:barcode
  2020. ////// ";
  2021. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  2022. ////// new OracleParameter(":barcode",barcode),
  2023. ////// };
  2024. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  2025. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  2026. ////// {
  2027. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  2028. ////// {
  2029. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  2030. ////// }
  2031. ////// }
  2032. productionData.OrganizationID = procedure.OrganizationID;
  2033. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  2034. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  2035. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  2036. productionData.UserID = workUserID;
  2037. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2038. productionData.UserName = barcodeRow["UserName"].ToString();
  2039. #region 窑炉窑车属性
  2040. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2041. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2042. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2043. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2044. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2045. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2046. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2047. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2048. productionData.Remarks = barcodeRow["Remarks"].ToString();
  2049. #endregion
  2050. #endregion
  2051. string OutSpecialRepairflag = "0";//干补标识
  2052. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2053. if (!string.IsNullOrEmpty(errMsg))
  2054. {
  2055. return errMsg;
  2056. }
  2057. #endregion
  2058. if (procedure.NodeType == Constant.ProcedureNodeType.Middle.GetHashCode())
  2059. {
  2060. #region 中间工序 修改在产产品数据的当前工序,清空返工工序字段
  2061. InProductionEntity addInProductionEntity = new InProductionEntity();
  2062. addInProductionEntity.BarCode = barcode;
  2063. //流程工序ID
  2064. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2065. // 当前工序
  2066. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2067. // 生产数据ID
  2068. addInProductionEntity.ProductionDataID = productionDataID;
  2069. // 工序模型
  2070. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2071. // 工序类别
  2072. addInProductionEntity.ModelType = procedure.ModelType;
  2073. // 生产工号
  2074. addInProductionEntity.UserID = workUserID;
  2075. // 缺陷标识
  2076. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2077. #region 更新在产表窑车窑炉字段
  2078. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2079. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2080. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2081. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2082. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2083. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2084. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2085. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2086. #endregion
  2087. // 执行修改
  2088. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2089. // 执行失败
  2090. if (!string.IsNullOrEmpty(errMsg))
  2091. {
  2092. return errMsg;
  2093. }
  2094. #endregion
  2095. }
  2096. else if (procedure.NodeType == Constant.ProcedureNodeType.End.GetHashCode())
  2097. {
  2098. #region 结束工序 添加成品数据 删除在产产品数据
  2099. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  2100. finishedProduct.BarCode = barcode;
  2101. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  2102. if (!string.IsNullOrEmpty(errMsg))
  2103. {
  2104. return errMsg;
  2105. }
  2106. InProductionEntity delInProductionEntity = new InProductionEntity();
  2107. delInProductionEntity.BarCode = barcode;
  2108. // 执行删除 在产数据
  2109. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  2110. // 执行失败
  2111. if (!string.IsNullOrEmpty(errMsg))
  2112. {
  2113. return errMsg;
  2114. }
  2115. #endregion
  2116. }
  2117. //#region 添加生产者数据
  2118. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2119. //if (!string.IsNullOrEmpty(errMsg))
  2120. //{
  2121. // return errMsg;
  2122. //}
  2123. //#endregion
  2124. }
  2125. #region 插入窑车生产数据表
  2126. errMsg = AddKilnCarData(oracleTrConn,
  2127. accountDate,
  2128. kilnCarID,
  2129. kilnCarBatchNo,
  2130. workUserID,
  2131. workUserCode,
  2132. workUserName,
  2133. Remarks,
  2134. sUserInfo, maxClassesSettingID);
  2135. if (!string.IsNullOrEmpty(errMsg))
  2136. {
  2137. return errMsg;
  2138. }
  2139. #endregion
  2140. //#region 窑车生产者
  2141. //// 查询新插入的生产数据ID
  2142. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  2143. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  2144. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  2145. //if (!string.IsNullOrEmpty(errMsg))
  2146. //{
  2147. // return errMsg;
  2148. //}
  2149. //#endregion
  2150. #region 删除TP_PM_KilnCarGoods数据 按照窑车ID
  2151. errMsg = DeleteKilnCarGoodsByKilnCarID(oracleTrConn, kilnCarID);
  2152. if (!string.IsNullOrEmpty(errMsg))
  2153. {
  2154. return errMsg;
  2155. }
  2156. #endregion
  2157. }
  2158. return errMsg;
  2159. }
  2160. catch (Exception ex)
  2161. {
  2162. throw ex;
  2163. }
  2164. }
  2165. /// <summary>
  2166. /// 窑车补件计件
  2167. /// </summary>
  2168. /// <param name="oracleTrConn">数据连接对象</param>
  2169. /// <param name="procedure">工序对象</param>
  2170. /// <param name="barcodeTable">条码信息</param>
  2171. /// <param name="sUserInfo">用户基本信息</param>
  2172. /// <param name="goodsID">返回的产品ID</param>
  2173. /// <param name="goodsCode">返回的产品Code</param>
  2174. /// <param name="goodsName">返回的产品名称</param>
  2175. /// <returns>string</returns>
  2176. /// <remarks>
  2177. /// 张国印 2014.10.05 新建
  2178. /// </remarks>
  2179. private static string AddKilnCarSupplement(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  2180. out int goodsID, out string goodsCode, out string goodsName)
  2181. {
  2182. try
  2183. {
  2184. goodsID = Constant.INT_IS_ZERO;
  2185. goodsCode = null;
  2186. goodsName = null;
  2187. string groutingUserCode = string.Empty;
  2188. // 获得账务日期
  2189. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  2190. string errMsg = "";
  2191. // 生产工号
  2192. int workUserID = Constant.INT_IS_ZERO;
  2193. // 生产工号Code
  2194. string workUserCode = string.Empty;
  2195. // 生产工号Name
  2196. string workUserName = string.Empty;
  2197. // 本批采集的批次号
  2198. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  2199. // 窑车Code
  2200. string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  2201. // 窑车批次号
  2202. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  2203. // 窑车状态
  2204. string kilnCarStatus = string.Empty;
  2205. #region 校验窑车是否可装车
  2206. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  2207. if (!string.IsNullOrEmpty(errMsg))
  2208. {
  2209. return errMsg;
  2210. }
  2211. #endregion
  2212. // 窑炉ID
  2213. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  2214. //// 窑车ID
  2215. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  2216. int kilnID = 0;
  2217. // 窑车ID
  2218. int kilnCarID = 0;
  2219. // 条码信息
  2220. foreach (DataRow barcodeRow in barcodeTable.Rows)
  2221. {
  2222. kilnID = Convert.ToInt32(barcodeRow["kilnID"]);
  2223. kilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2224. //窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  2225. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  2226. // 条码
  2227. string barcode = barcodeRow["Barcode"].ToString();
  2228. // 生产工号
  2229. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  2230. workUserCode = barcodeRow["UserCode"].ToString();
  2231. workUserName = barcodeRow["UserName"].ToString();
  2232. //#region 校验条码有效性
  2233. //errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2234. //if (!string.IsNullOrEmpty(errMsg))
  2235. //{
  2236. // return errMsg;
  2237. //}
  2238. //#endregion
  2239. if (procedure.CollectType == 1)
  2240. {
  2241. #region 校验条码有效性
  2242. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2243. if (!string.IsNullOrEmpty(errMsg))
  2244. {
  2245. return errMsg;
  2246. }
  2247. #endregion
  2248. }
  2249. else
  2250. {
  2251. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  2252. tp_pm_groutingdailydetail.goodscode,
  2253. tp_pm_groutingdailydetail.goodsname,
  2254. tp_pm_groutingdailydetail.usercode as groutingUserCode
  2255. from tp_pm_groutingdailydetail where barcode=:barcode
  2256. ";
  2257. OracleParameter[] ReFireparas = new OracleParameter[] {
  2258. new OracleParameter(":barcode",barcode),
  2259. };
  2260. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  2261. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  2262. {
  2263. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  2264. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  2265. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  2266. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  2267. }
  2268. }
  2269. // 查询新插入的生产数据ID
  2270. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  2271. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2272. int productionDataID = 0;
  2273. if (!string.IsNullOrEmpty(idStr))
  2274. {
  2275. productionDataID = int.Parse(idStr);
  2276. }
  2277. else
  2278. {
  2279. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2280. }
  2281. int? ClassesSettingID = null;//班次配置ID
  2282. #region 添加生产者数据
  2283. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  2284. if (!string.IsNullOrEmpty(errMsg))
  2285. {
  2286. return errMsg;
  2287. }
  2288. #endregion
  2289. #region 添加生产数据
  2290. ProductionDataEntity productionData = new ProductionDataEntity();
  2291. #region 属性赋值
  2292. productionData.ClassesSettingID = ClassesSettingID;
  2293. productionData.ProductionDataID = Convert.ToInt32(idStr);
  2294. productionData.Barcode = barcode;
  2295. productionData.CentralizedBatchNo = centralizedBatchNo;
  2296. productionData.ProductionLineID = procedure.ProductionLineID;
  2297. productionData.ProductionLineCode = procedure.ProductionlineCode;
  2298. productionData.ProductionLineName = procedure.ProductionlineName;
  2299. productionData.CompleteProcedureID = procedure.ProcedureID;
  2300. productionData.ProcedureCode = procedure.ProcedureCode;
  2301. productionData.ProcedureName = procedure.ProcedureName;
  2302. productionData.ProcedureModel = procedure.ProcedureModel;
  2303. productionData.ModelType = procedure.ModelType;
  2304. productionData.NodeType = procedure.NodeType;
  2305. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2306. productionData.ReworkProcedureID = null;
  2307. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2308. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2309. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2310. productionData.OrganizationID = procedure.OrganizationID;
  2311. productionData.GoodsID = goodsID;
  2312. productionData.GoodsCode = goodsCode;
  2313. productionData.GoodsName = goodsName;
  2314. productionData.UserID = workUserID;
  2315. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2316. productionData.UserName = barcodeRow["UserName"].ToString();
  2317. productionData.PieceType = procedure.PieceType;
  2318. #region 窑炉窑车属性
  2319. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2320. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2321. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2322. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2323. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2324. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2325. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2326. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2327. #endregion
  2328. #endregion
  2329. string OutSpecialRepairflag = "0";//干补标识
  2330. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2331. if (!string.IsNullOrEmpty(errMsg))
  2332. {
  2333. return errMsg;
  2334. }
  2335. #endregion
  2336. #region 修改在产产品数据的当前工序,清空返工工序字段
  2337. InProductionEntity addInProductionEntity = new InProductionEntity();
  2338. addInProductionEntity.BarCode = barcode;
  2339. //流程工序
  2340. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2341. // 当前工序
  2342. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  2343. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2344. //生产数据ID
  2345. addInProductionEntity.ProductionDataID = productionDataID;
  2346. // 工序模型
  2347. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2348. // 工序类别
  2349. addInProductionEntity.ModelType = procedure.ModelType;
  2350. // 生产工号
  2351. addInProductionEntity.UserID = workUserID;
  2352. // 缺陷标识
  2353. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2354. #region 更新在产表窑车窑炉字段
  2355. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2356. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2357. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2358. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2359. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2360. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2361. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2362. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2363. #endregion
  2364. // 执行修改
  2365. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2366. // 执行失败
  2367. if (!string.IsNullOrEmpty(errMsg))
  2368. {
  2369. return errMsg;
  2370. }
  2371. #endregion
  2372. //#region 添加生产者数据
  2373. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2374. //if (!string.IsNullOrEmpty(errMsg))
  2375. //{
  2376. // return errMsg;
  2377. //}
  2378. //#endregion
  2379. #region 插入窑车产品表
  2380. errMsg = AddKilnCarGoods(oracleTrConn,
  2381. barcode,
  2382. kilnCarID,
  2383. goodsID,
  2384. productionData.KilnCarPosition.Value,
  2385. kilnCarBatchNo,
  2386. workUserID,
  2387. workUserCode,
  2388. workUserName,
  2389. sUserInfo);
  2390. if (!string.IsNullOrEmpty(errMsg))
  2391. {
  2392. return errMsg;
  2393. }
  2394. #endregion
  2395. }
  2396. return errMsg;
  2397. }
  2398. catch (Exception ex)
  2399. {
  2400. throw ex;
  2401. }
  2402. }
  2403. /// <summary>
  2404. /// 插入窑车生产数据表(装车)
  2405. /// </summary>
  2406. /// <param name="oracleTrConn">连接对象</param>
  2407. /// <param name="accountDate">账务日期</param>
  2408. /// <param name="kilnCarID">窑车ID</param>
  2409. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2410. /// <param name="workUserID">生产工号ID</param>
  2411. /// <param name="workUserCode">生产工号Code</param>
  2412. /// <param name="workUserName">生产工号Name</param>
  2413. /// <param name="sUserInfo">用户基本信息</param>
  2414. /// <returns>string</returns>
  2415. private static string AddKilnCarDataCreateTime(IDBTransaction oracleTrConn,
  2416. DateTime accountDate,
  2417. int kilnCarID,
  2418. string kilnCarBatchNo,
  2419. int workUserID,
  2420. string workUserCode,
  2421. string workUserName,
  2422. string remarks,
  2423. DateTime? createtime,
  2424. SUserInfo sUserInfo)
  2425. {
  2426. #region SQL
  2427. string sql = "insert into tp_pm_kilncardata"
  2428. + " (kilncarbatchno,"
  2429. + " kilncarid,"
  2430. + " kilnid,"
  2431. + " productionlineid,"
  2432. + " procedureid,"
  2433. + " procedurecode,"
  2434. + " procedurename,"
  2435. + " proceduremodel,"
  2436. + " modeltype,"
  2437. + " piecetype,"
  2438. + " kilncarstatus,"
  2439. + " UserID,"
  2440. + " UserCode,"
  2441. + " UserName,"
  2442. + " loadingtime,"
  2443. + " intokilntime,"
  2444. + " outkilntime,"
  2445. + " unloadingtime,"
  2446. + " accountdate,"
  2447. + " accountid,"
  2448. + " createuserid,"
  2449. + " updateuserid,"
  2450. + " createtime,"
  2451. + " remarks)"
  2452. + " select "
  2453. + " :pkilncarbatchno,"
  2454. + " kilncarid,"
  2455. + " kilnid,"
  2456. + " productionlineid,"
  2457. + " procedureid,"
  2458. + " procedurecode,"
  2459. + " procedurename,"
  2460. + " proceduremodel,"
  2461. + " modeltype,"
  2462. + " piecetype,"
  2463. + " kilncarstatus,"
  2464. + " :puserID,"
  2465. + " :puserCode,"
  2466. + " :puserName,"
  2467. + " loadingtime,"
  2468. + " intokilntime,"
  2469. + " outkilntime,"
  2470. + " unloadingtime,"
  2471. + " :paccountdate,"
  2472. + " :paccountid,"
  2473. + " :pcreateuserid,"
  2474. + " :pupdateuserid,"
  2475. + " :createtime,"
  2476. + " :remarks"
  2477. + " from tp_pm_kilncarstatus"
  2478. + " where kilncarid = :pkilncarid";
  2479. #endregion
  2480. #region 参数
  2481. OracleParameter[] paras = new OracleParameter[] {
  2482. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2483. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2484. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2485. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2486. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2487. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2488. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2489. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2490. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2491. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2492. new OracleParameter(":createtime",OracleDbType.Date,Convert.ToDateTime(createtime),ParameterDirection.Input),
  2493. };
  2494. #endregion
  2495. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2496. // 保存失败
  2497. if (result != Constant.INT_IS_ONE)
  2498. {
  2499. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2500. }
  2501. // 保存成功返回null
  2502. return null;
  2503. }
  2504. /// <summary>
  2505. /// 插入窑车生产数据表
  2506. /// </summary>
  2507. /// <param name="oracleTrConn">连接对象</param>
  2508. /// <param name="accountDate">账务日期</param>
  2509. /// <param name="kilnCarID">窑车ID</param>
  2510. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2511. /// <param name="workUserID">生产工号ID</param>
  2512. /// <param name="workUserCode">生产工号Code</param>
  2513. /// <param name="workUserName">生产工号Name</param>
  2514. /// <param name="sUserInfo">用户基本信息</param>
  2515. /// <returns>string</returns>
  2516. private static string AddKilnCarData(IDBTransaction oracleTrConn,
  2517. DateTime accountDate,
  2518. int kilnCarID,
  2519. string kilnCarBatchNo,
  2520. int workUserID,
  2521. string workUserCode,
  2522. string workUserName,
  2523. string remarks,
  2524. SUserInfo sUserInfo, int? ClassesSettingID)
  2525. {
  2526. #region SQL
  2527. string sql = "insert into tp_pm_kilncardata"
  2528. + " (kilncarbatchno,"
  2529. + " kilncarid,"
  2530. + " kilnid,"
  2531. + " productionlineid,"
  2532. + " procedureid,"
  2533. + " procedurecode,"
  2534. + " procedurename,"
  2535. + " proceduremodel,"
  2536. + " modeltype,"
  2537. + " piecetype,"
  2538. + " kilncarstatus,"
  2539. + " UserID,"
  2540. + " UserCode,"
  2541. + " UserName,"
  2542. + " loadingtime,"
  2543. + " intokilntime,"
  2544. + " outkilntime,"
  2545. + " unloadingtime,"
  2546. + " accountdate,"
  2547. + " accountid,"
  2548. + " createuserid,"
  2549. + " updateuserid,"
  2550. + " classesSettingID,"
  2551. + " remarks)"
  2552. + " select "
  2553. + " :pkilncarbatchno,"
  2554. + " kilncarid,"
  2555. + " kilnid,"
  2556. + " productionlineid,"
  2557. + " procedureid,"
  2558. + " procedurecode,"
  2559. + " procedurename,"
  2560. + " proceduremodel,"
  2561. + " modeltype,"
  2562. + " piecetype,"
  2563. + " kilncarstatus,"
  2564. + " :puserID,"
  2565. + " :puserCode,"
  2566. + " :puserName,"
  2567. + " loadingtime,"
  2568. + " intokilntime,"
  2569. + " outkilntime,"
  2570. + " unloadingtime,"
  2571. + " :paccountdate,"
  2572. + " :paccountid,"
  2573. + " :pcreateuserid,"
  2574. + " :pupdateuserid,"
  2575. + " :classesSettingID,"
  2576. + " :remarks"
  2577. + " from tp_pm_kilncarstatus"
  2578. + " where kilncarid = :pkilncarid";
  2579. #endregion
  2580. #region 参数
  2581. OracleParameter[] paras = new OracleParameter[] {
  2582. new OracleParameter(":classesSettingID",OracleDbType.Int32,ClassesSettingID,ParameterDirection.Input),
  2583. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2584. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2585. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2586. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2587. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2588. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2589. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2590. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2591. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2592. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2593. };
  2594. #endregion
  2595. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2596. // 保存失败
  2597. if (result != Constant.INT_IS_ONE)
  2598. {
  2599. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2600. }
  2601. // 保存成功返回null
  2602. return null;
  2603. }
  2604. /// <summary>
  2605. /// 插入窑车产品表
  2606. /// </summary>
  2607. /// <param name="oracleTrConn">连接对象</param>
  2608. /// <param name="barcode">条码</param>
  2609. /// <param name="kilnCarID">窑车号</param>
  2610. /// <param name="goodsID">产品ID</param>
  2611. /// <param name="KilnCarPosition">窑车位置</param>
  2612. /// <param name="kilnCarBatchNo">装车批次</param>
  2613. /// <param name="sUserInfo">用户基本信息</param>
  2614. /// <returns>string</returns>
  2615. private static string AddKilnCarGoods(IDBTransaction oracleTrConn, string barcode, int kilnCarID, int goodsID, int KilnCarPosition, string kilnCarBatchNo, int workUserID,
  2616. string workUserCode,
  2617. string workUserName, SUserInfo sUserInfo)
  2618. {
  2619. string sqlExist = "select 1 from tp_pm_kilncargoods where barcode=:barcode and accountid=:accountid";
  2620. OracleParameter[] parasExist = new OracleParameter[] {
  2621. new OracleParameter(":barcode",barcode),
  2622. new OracleParameter(":accountid",sUserInfo.AccountID),
  2623. };
  2624. oracleTrConn.ExecuteNonQuery(sqlExist, parasExist);
  2625. DataSet dsExist = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  2626. if (dsExist != null && dsExist.Tables[0].Rows.Count == 0)
  2627. {
  2628. string sql = "insert into tp_pm_kilncargoods"
  2629. + " (barcode,"
  2630. + " kilncarid,"
  2631. + " goodsid,"
  2632. + " kilncarposition,"
  2633. + " kilncarbatchno,"
  2634. + " accountid,"
  2635. + " userid,"
  2636. + " usercode,"
  2637. + " username,"
  2638. + " createuserid,"
  2639. + " updateuserid)"
  2640. + " values"
  2641. + " (:barcode,"
  2642. + " :kilncarid,"
  2643. + " :goodsid,"
  2644. + " :kilncarposition,"
  2645. + " :kilncarbatchno,"
  2646. + " :accountid,"
  2647. + " :userid,"
  2648. + " :usercode,"
  2649. + " :username,"
  2650. + " :createuserid,"
  2651. + " :updateuserid)";
  2652. #region 参数
  2653. OracleParameter[] paras = new OracleParameter[] {
  2654. new OracleParameter(":barcode",barcode),
  2655. new OracleParameter(":kilncarid",kilnCarID),
  2656. new OracleParameter(":goodsid",goodsID),
  2657. new OracleParameter(":kilncarposition",KilnCarPosition),
  2658. new OracleParameter(":kilncarbatchno",kilnCarBatchNo),
  2659. new OracleParameter(":accountid",sUserInfo.AccountID),
  2660. new OracleParameter(":createuserid",sUserInfo.UserID),
  2661. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2662. new OracleParameter(":userid",workUserID),
  2663. new OracleParameter(":usercode",workUserCode),
  2664. new OracleParameter(":username",workUserName),
  2665. };
  2666. #endregion
  2667. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2668. // 保存失败
  2669. if (result != Constant.INT_IS_ONE)
  2670. {
  2671. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2672. }
  2673. }
  2674. // 保存成功返回null
  2675. return null;
  2676. }
  2677. /// <summary>
  2678. /// 查询本次批次号
  2679. /// </summary>
  2680. /// <param name="oracleTrConn">连接对象</param>
  2681. /// <param name="kilnCarID">窑车ID</param>
  2682. /// <returns>string</returns>
  2683. private static string GetKilnCarBatchNoByKilnCarID(IDBTransaction oracleTrConn, int kilnCarID)
  2684. {
  2685. string sql = "SELECT Max(KilnCarBatchNo) FROM TP_PM_KilnCarGoods where KilnCarID = :kilnCarID";
  2686. #region 参数
  2687. OracleParameter[] paras = new OracleParameter[] {
  2688. new OracleParameter(":kilnCarID",kilnCarID),
  2689. };
  2690. #endregion
  2691. string batchNo = oracleTrConn.GetSqlResultToStr(sql, paras);
  2692. if (!string.IsNullOrEmpty(batchNo))
  2693. {
  2694. return batchNo;
  2695. }
  2696. else
  2697. {
  2698. // 自动生成窑车烧成批次号
  2699. //return System.Guid.NewGuid().ToString();
  2700. return GetFiredKilnCarBatchNo(oracleTrConn, kilnCarID);
  2701. }
  2702. }
  2703. /// <summary>
  2704. /// 自动生成窑车烧成批次号
  2705. /// </summary>
  2706. /// <param name="oracleTrConn"></param>
  2707. /// <param name="kilnCarID"></param>
  2708. /// <returns></returns>
  2709. public static string GetFiredKilnCarBatchNo(IDBTransaction oracleTrConn, int kilnCarID)
  2710. {
  2711. DateTime now = DateTime.Now.Date;
  2712. string sqlString = "select k.kilnid, k.kilncode, k.fireddate, k.firedbatchno, kc.kilncarcode\n" +
  2713. " from TP_MST_Kiln k\n" +
  2714. " inner join tp_mst_kilncar kc\n" +
  2715. " on k.kilnid = kc.kilnid\n" +
  2716. " where kc.kilncarid = :kilncarid\n" +
  2717. //" and k.fireddate = :fireddate"
  2718. " for update";
  2719. OracleParameter[] paras = new OracleParameter[] {
  2720. new OracleParameter(":kilncarid",kilnCarID),
  2721. //new OracleParameter(":fireddate",now),
  2722. };
  2723. DataTable dt = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  2724. if (dt == null || dt.Rows.Count == 0)
  2725. {
  2726. // 窑车、窑炉不存在
  2727. return null;
  2728. }
  2729. int kilnid = Convert.ToInt32(dt.Rows[0]["kilnid"]);
  2730. string kilncode = dt.Rows[0]["kilncode"] + "";
  2731. string kilncarcode = dt.Rows[0]["kilncarcode"] + "";
  2732. int firedbatchno = 0;
  2733. if (dt.Rows[0]["fireddate"] == null || dt.Rows[0]["fireddate"] == DBNull.Value)
  2734. {
  2735. firedbatchno = -1;
  2736. }
  2737. else
  2738. {
  2739. DateTime fireddate = Convert.ToDateTime(dt.Rows[0]["fireddate"]);
  2740. if (now > fireddate)
  2741. {
  2742. firedbatchno = -1;
  2743. }
  2744. }
  2745. if (firedbatchno < 0)
  2746. {
  2747. // 当日第一车
  2748. sqlString = "update TP_MST_Kiln k\n" +
  2749. " set k.fireddate = :fireddate, k.firedbatchno = 1\n" +
  2750. " where k.kilnid = :kilnid";
  2751. paras = new OracleParameter[] {
  2752. new OracleParameter(":kilnid",kilnid),
  2753. new OracleParameter(":fireddate",now),
  2754. };
  2755. oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2756. return $"{kilncode}#{kilncarcode}#{now.ToString("yyyyMMdd")}#001";
  2757. }
  2758. firedbatchno = Convert.ToInt32(dt.Rows[0]["firedbatchno"]) + 1;
  2759. sqlString = "update TP_MST_Kiln k\n" +
  2760. " set k.firedbatchno = k.firedbatchno + 1\n" +
  2761. " where k.kilnid = :kilnid";
  2762. paras = new OracleParameter[] {
  2763. new OracleParameter(":kilnid",kilnid),
  2764. };
  2765. oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2766. return $"{kilncode}#{kilncarcode}#{now.ToString("yyyyMMdd")}#{firedbatchno.ToString("000")}";
  2767. }
  2768. /// <summary>
  2769. /// 插入窑车状态表
  2770. /// </summary>
  2771. /// <param name="oracleTrConn">连接对象</param>
  2772. /// <param name="procedure">工序ID</param>
  2773. /// <param name="kilnCarID">窑车ID</param>
  2774. /// <param name="kilnID">窑炉ID</param>
  2775. /// <param name="sUserInfo">用户基本信息</param>
  2776. /// <returns>string</returns>
  2777. private static string AddkilnCarStatus(IDBTransaction oracleTrConn, ProcedureEntity procedure, int kilnCarID, int kilnID, string kilnCarBatchNo, SUserInfo sUserInfo)
  2778. {
  2779. #region SQL
  2780. string sql = " insert into tp_pm_kilncarstatus "
  2781. + " (kilncarid, "
  2782. + " kilnid, "
  2783. + " productionlineid, "
  2784. + " procedureid, "
  2785. + " procedurecode, "
  2786. + " procedurename, "
  2787. + " proceduremodel, "
  2788. + " modeltype, "
  2789. + " piecetype, "
  2790. + " kilncarstatus, "
  2791. + " loadingtime, "
  2792. + " accountid, "
  2793. + " createuserid, "
  2794. + " updateuserid,kilnCarBatchNo) "
  2795. + " values "
  2796. + " (:kilncarid, "
  2797. + " :kilnid, "
  2798. + " :productionlineid, "
  2799. + " :procedureid, "
  2800. + " :procedurecode, "
  2801. + " :procedurename, "
  2802. + " :proceduremodel, "
  2803. + " :modeltype, "
  2804. + " :piecetype, "
  2805. + " '0', "
  2806. + " sysdate, "
  2807. + " :accountid, "
  2808. + " :createuserid, "
  2809. + " :updateuserid,:kilnCarBatchNo)";
  2810. #endregion
  2811. #region 参数
  2812. OracleParameter[] paras = new OracleParameter[] {
  2813. new OracleParameter(":kilncarid",kilnCarID),
  2814. new OracleParameter(":kilnid",kilnID),
  2815. new OracleParameter(":productionlineid",procedure.ProductionLineID),
  2816. new OracleParameter(":procedureid",procedure.ProcedureID),
  2817. new OracleParameter(":procedurecode",procedure.ProcedureCode),
  2818. new OracleParameter(":procedurename",procedure.ProcedureName),
  2819. new OracleParameter(":proceduremodel",procedure.ProcedureModel),
  2820. new OracleParameter(":modeltype",procedure.ModelType),
  2821. new OracleParameter(":piecetype",procedure.PieceType),
  2822. new OracleParameter(":accountID",sUserInfo.AccountID),
  2823. new OracleParameter(":createuserid",sUserInfo.UserID),
  2824. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2825. new OracleParameter(":kilnCarBatchNo",kilnCarBatchNo),
  2826. };
  2827. #endregion
  2828. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2829. // 保存失败
  2830. if (result != Constant.INT_IS_ONE)
  2831. {
  2832. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2833. }
  2834. // 保存成功返回null
  2835. return null;
  2836. }
  2837. /// <summary>
  2838. /// 更新窑车状态表中的对应的时间
  2839. /// </summary>
  2840. /// <param name="oracleTrConn">数据连接</param>
  2841. /// <param name="kilnCarID">窑车ID</param>
  2842. /// <param name="pModelType">操作类型</param>
  2843. /// <param name="sUserInfo">用户基本信息</param>
  2844. /// <returns>
  2845. /// 张国印 2014.10.04 新建
  2846. /// </returns>
  2847. private static string UpdatekilnCarStatus(IDBTransaction oracleTrConn, int kilnCarID, Constant.ProcedureModelType pModelType, SUserInfo sUserInfo, ProcedureEntity procedure, string kilnCarBatchNo)
  2848. {
  2849. if (pModelType == Constant.ProcedureModelType.LoadCar)
  2850. {
  2851. //procedure.ProcedureID,
  2852. //procedure.ProcedureCode,
  2853. //procedure.ProcedureName,
  2854. //procedure.ModelType
  2855. #region 装窑车操作时,更新tp_pm_kilncarstatus的装车时间
  2856. #region SQL语句和参数
  2857. string sql = " Update tp_pm_kilncarstatus Set"
  2858. + " KilnCarStatus = :pKilnCarStatus, "
  2859. + " LoadingTime = sysdate, "
  2860. + " IntoKilnTime = null, "
  2861. + " OutKilnTime = null, "
  2862. + " UnloadingTime = null, "
  2863. + " UpdateUserID = :pUpdateUserID, "
  2864. + " ProcedureID = :ProcedureID, "
  2865. + " ProcedureCode = :ProcedureCode, "
  2866. + " ProcedureName = :ProcedureName, "
  2867. + " ModelType = :ModelType, "
  2868. + " kilnCarBatchNo = :kilnCarBatchNo "
  2869. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2870. OracleParameter[] paras = new OracleParameter[]
  2871. {
  2872. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  2873. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2874. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2875. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2876. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2877. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2878. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2879. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2880. new OracleParameter(":kilnCarBatchNo", OracleDbType.Varchar2, kilnCarBatchNo, ParameterDirection.Input),
  2881. };
  2882. #endregion
  2883. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2884. // 保存失败
  2885. if (result != Constant.INT_IS_ONE)
  2886. {
  2887. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2888. }
  2889. #endregion
  2890. }
  2891. else if (pModelType == Constant.ProcedureModelType.IntoKiln)
  2892. {
  2893. #region 入窑操作时,更新tp_pm_kilncarstatus的入窑时间
  2894. #region SQL语句和参数
  2895. string sql = " Update tp_pm_kilncarstatus Set"
  2896. + " KilnCarStatus = :pKilnCarStatus, "
  2897. + " IntoKilnTime = sysdate, "
  2898. + " UpdateUserID = :pUpdateUserID, "
  2899. + " ProcedureID = :ProcedureID, "
  2900. + " ProcedureCode = :ProcedureCode, "
  2901. + " ProcedureName = :ProcedureName, "
  2902. + " ModelType = :ModelType "
  2903. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2904. OracleParameter[] paras = new OracleParameter[]
  2905. {
  2906. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 1, ParameterDirection.Input),
  2907. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2908. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2909. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2910. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2911. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2912. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2913. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2914. };
  2915. #endregion
  2916. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2917. // 保存失败
  2918. if (result != Constant.INT_IS_ONE)
  2919. {
  2920. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2921. }
  2922. #endregion
  2923. }
  2924. else if (pModelType == Constant.ProcedureModelType.OutKiln)
  2925. {
  2926. #region 出窑操作时,更新tp_pm_kilncarstatus的出窑时间
  2927. #region SQL语句和参数
  2928. string sql = " Update tp_pm_kilncarstatus Set"
  2929. + " OutKilnTime = sysdate, "
  2930. + " UpdateUserID = :pUpdateUserID, "
  2931. + " ProcedureID = :ProcedureID, "
  2932. + " ProcedureCode = :ProcedureCode, "
  2933. + " ProcedureName = :ProcedureName, "
  2934. + " ModelType = :ModelType "
  2935. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2936. OracleParameter[] paras = new OracleParameter[]
  2937. {
  2938. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2939. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2940. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2941. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2942. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2943. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2944. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2945. };
  2946. #endregion
  2947. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2948. // 保存失败
  2949. if (result != Constant.INT_IS_ONE)
  2950. {
  2951. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2952. }
  2953. #endregion
  2954. }
  2955. else if (pModelType == Constant.ProcedureModelType.UnloadCar)
  2956. {
  2957. #region 卸窑车操作时,更新tp_pm_kilncarstatus的卸窑车时间
  2958. #region SQL语句和参数
  2959. string sql = " Update tp_pm_kilncarstatus Set"
  2960. + " KilnCarStatus = :pKilnCarStatus, "
  2961. //+ " LoadingTime = null, "
  2962. //+ " IntoKilnTime = null, "
  2963. //+ " OutKilnTime = null, "
  2964. + " UnloadingTime = sysdate, "
  2965. + " UpdateUserID = :pUpdateUserID, "
  2966. + " ProcedureID = :ProcedureID, "
  2967. + " ProcedureCode = :ProcedureCode, "
  2968. + " ProcedureName = :ProcedureName, "
  2969. + " ModelType = :ModelType "
  2970. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2971. OracleParameter[] paras = new OracleParameter[]
  2972. {
  2973. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  2974. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2975. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2976. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2977. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2978. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2979. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2980. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2981. };
  2982. #endregion
  2983. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2984. // 保存失败
  2985. if (result != Constant.INT_IS_ONE)
  2986. {
  2987. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2988. }
  2989. #endregion
  2990. }
  2991. // 保存成功返回null
  2992. return string.Empty;
  2993. }
  2994. /// <summary>
  2995. /// 校验窑车是否可用
  2996. /// </summary>
  2997. /// <param name="oracleTrConn">连接对象</param>
  2998. /// <param name="pProcedureId">工序ID</param>
  2999. /// <param name="kilnCarCode">窑车号</param>
  3000. /// <param name="pModelType">操作类型</param>
  3001. /// <param name="sUserInfo">用户基本信息</param>
  3002. /// <param name="kilnCarStatus">窑车状态</param>
  3003. /// <returns>string</returns>
  3004. private static string CheckKilnCarrStatus(IDBTransaction oracleTrConn, int pProcedureId, string kilnCarCode, int pModelType, SUserInfo sUserInfo, out string kilnCarStatus)
  3005. {
  3006. kilnCarStatus = string.Empty;
  3007. OracleParameter[] paras = new OracleParameter[]{
  3008. new OracleParameter("in_accountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3009. new OracleParameter("in_kilnCarCode",OracleDbType.NVarchar2, kilnCarCode,ParameterDirection.Input),
  3010. new OracleParameter("in_modelType",OracleDbType.Int32, pModelType,ParameterDirection.Input),
  3011. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  3012. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  3013. new OracleParameter("in_procedureid",OracleDbType.Int32, pProcedureId,ParameterDirection.Input),
  3014. // 验证能否卸窑
  3015. new OracleParameter("in_UserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3016. };
  3017. DataSet returnDataSet = oracleTrConn.ExecStoredProcedure("PRO_PM_CheckKilnCar", paras);
  3018. string errMsg = paras[3].Value.ToString() == "null" ? string.Empty : paras[3].Value.ToString();
  3019. if (string.IsNullOrEmpty(errMsg))
  3020. {
  3021. if (pModelType == (int)Constant.ProcedureModelType.LoadCar)
  3022. {
  3023. kilnCarStatus = returnDataSet.Tables[0].Rows[0]["KilnCarStatus"].ToString();
  3024. }
  3025. }
  3026. return errMsg;
  3027. }
  3028. /// <summary>
  3029. /// 添加生产者
  3030. /// </summary>
  3031. /// <param name="oracleTrConn">连接对象</param>
  3032. /// <param name="accountDate">账务日期</param>
  3033. /// <param name="productionDataID">生产数据ID</param>
  3034. /// <param name="workUserID">生产工号ID</param>
  3035. /// <param name="workUserCode">生产工号Code</param>
  3036. /// <param name="sUserInfo">用户基本信息</param>
  3037. /// <returns>string</returns>
  3038. private static string AddProducer(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo, ref int? ClassesSettingID)
  3039. {
  3040. // 参数
  3041. OracleParameter[] paras;
  3042. #region 查询班次配置表是否有数据
  3043. string sql = "select max(ClassesSettingID)"
  3044. + " from tp_pc_classessetting"
  3045. + " where Valueflag =1 and AccountID = :accountID"
  3046. + " and UserID = :userID"
  3047. + " and AccountDate = :accountDate";
  3048. paras = new OracleParameter[] {
  3049. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3050. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3051. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3052. };
  3053. string countStr = oracleTrConn.GetSqlResultToStr(sql, paras);
  3054. int classesSettingID = 0;
  3055. #endregion
  3056. #region 没有班次配置数据,将工号所属员工插入班次配置表中
  3057. if (string.IsNullOrEmpty(countStr) || Constant.INT_IS_ZERO == int.Parse(countStr))
  3058. {
  3059. // 查询新插入的班次配置表ID
  3060. sql = "select SEQ_PC_ClassesSetting_ID.nextval from dual";
  3061. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3062. // 新插入的班次配置表ID
  3063. if (!string.IsNullOrEmpty(idStr))
  3064. {
  3065. classesSettingID = int.Parse(idStr);
  3066. }
  3067. else
  3068. {
  3069. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3070. }
  3071. ClassesSettingID = Convert.ToInt32(classesSettingID);
  3072. #region 班次配置总表
  3073. sql = "insert into tp_pc_classessetting"
  3074. + " (ClassesSettingID,accountdate, "
  3075. + " userid, "
  3076. + " usercode, "
  3077. + " accountid, "
  3078. + " createuserid, "
  3079. + " updateuserid,ORGANIZATIONID)"
  3080. + " select "
  3081. + " :classesSettingID, "
  3082. + " :accountdate, "
  3083. + " USERID, "
  3084. + " UserCode, "
  3085. + " accountid,"
  3086. + " :createuserid,"
  3087. + " :updateuserid,ORGANIZATIONID"
  3088. + " from TP_MST_User"
  3089. + " where UserID = :userID";
  3090. paras = new OracleParameter[] {
  3091. new OracleParameter(":classesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3092. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3093. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3094. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3095. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3096. };
  3097. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3098. // 失败
  3099. if (result != Constant.INT_IS_ONE)
  3100. {
  3101. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3102. }
  3103. #endregion
  3104. #region 班次配置明细SQL
  3105. sql = " insert into tp_pc_classesdetail"
  3106. + " (classessettingid,"
  3107. + " accountdate,"
  3108. + " userid,"
  3109. + " usercode,"
  3110. + " UJobsID,"
  3111. + " staffid,"
  3112. + " SJobsID,"
  3113. + " staffstatus,"
  3114. + " accountid,"
  3115. + " createuserid,"
  3116. + " updateuserid,Uorganizationid,Sorganizationid)"
  3117. + " select "
  3118. + " :classessettingid,"
  3119. + " :accountdate,"
  3120. + " userStaff.Userid,"
  3121. + " :usercode,"
  3122. + " userStaff.Ujobsid,"
  3123. + " userStaff.Staffid,"
  3124. + " staff.Jobs,"
  3125. + " staff.staffstatus,"
  3126. + " :accountID,"
  3127. + " :createuserid,"
  3128. + " :updateuserid,user2.organizationid,staff.organizationid"
  3129. + " from TP_MST_UserStaff userStaff"
  3130. + " inner join tp_hr_staff staff on staff.staffid = userStaff.Staffid"
  3131. + " inner join tp_mst_user user2 on userStaff.userid = user2.userid"
  3132. + " where (staff.StaffStatus = 1 or staff.StaffStatus = 2)"
  3133. + " and staff.ValueFlag = 1"
  3134. + " and staff.AccountID = :accountID"
  3135. + " and userStaff.UserID = :userID";
  3136. paras = new OracleParameter[] {
  3137. new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3138. new OracleParameter(":accountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3139. new OracleParameter(":usercode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  3140. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3141. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3142. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3143. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3144. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3145. };
  3146. result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3147. // 失败
  3148. if (result == Constant.INT_IS_ZERO)
  3149. {
  3150. return string.Format(Messages.MSG_CMN_W007, "生产工号[" + workUserCode + "]没有配置生产员工");
  3151. }
  3152. #endregion
  3153. }
  3154. else
  3155. {
  3156. ClassesSettingID = int.Parse(countStr);
  3157. }
  3158. #endregion
  3159. //#region 将班次配置表中的数据插入生产者表中
  3160. //sql = "insert into tp_pm_producer"
  3161. // + " (productiondataid,"
  3162. // + " staffid,"
  3163. // + " userid,"
  3164. // + " usercode,"
  3165. // + " UJobsID,"
  3166. // + " staffstatus,"
  3167. // + " SJobsID,"
  3168. // + " classessettingid"
  3169. // + " )"
  3170. // + " select :productiondataid,"
  3171. // + " staffid,"
  3172. // + " userid,"
  3173. // + " usercode,"
  3174. // + " UJobsID,"
  3175. // + " staffstatus,"
  3176. // + " SJobsID,"
  3177. // + " :classessettingid"
  3178. // + " from tp_pc_classesdetail"
  3179. // + " where ValueFlag = 1"
  3180. // + " and classessettingid = (select max(ClassesSettingID)"
  3181. // + " from TP_PC_ClassesSetting"
  3182. // + " where ValueFlag = 1 and AccountDate=:accountDate"
  3183. // + " and UserID = :userID)";
  3184. //paras = new OracleParameter[] {
  3185. // new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  3186. // new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID.ToString()=="0"?null:classesSettingID.ToString(),ParameterDirection.Input),
  3187. // new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3188. // new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3189. // };
  3190. //int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3191. //// 失败
  3192. //if (resultCount == Constant.INT_IS_ZERO)
  3193. //{
  3194. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3195. //}
  3196. //#endregion
  3197. return null;
  3198. }
  3199. /// <summary>
  3200. /// 窑车生产者
  3201. /// </summary>
  3202. /// <param name="oracleTrConn">连接对象</param>
  3203. /// <param name="accountDate">账务日期</param>
  3204. /// <param name="kilnCarDataID">窑车生产数据ID</param>
  3205. /// <param name="workUserID">生产工号ID</param>
  3206. /// <param name="sUserInfo">用户基本信息</param>
  3207. /// <returns>string</returns>
  3208. private static string AddKilnCarProducer(IDBTransaction oracleTrConn, DateTime accountDate, int kilnCarDataID, int workUserID, SUserInfo sUserInfo)
  3209. {
  3210. // 参数
  3211. OracleParameter[] paras;
  3212. #region 将班次配置表中的数据插入生产者表中
  3213. string sql = "insert into TP_PM_KilnCarProducer"
  3214. + " (KilnCarDataID,"
  3215. + " staffid,"
  3216. + " userid,"
  3217. + " usercode,"
  3218. + " Ujobsid,"
  3219. + " staffstatus,"
  3220. + " Sjobsid,"
  3221. + " classessettingid"
  3222. + " )"
  3223. + " select :kilnCarDataID,"
  3224. + " staffid,"
  3225. + " userid,"
  3226. + " usercode,"
  3227. + " Ujobsid,"
  3228. + " staffstatus,"
  3229. + " Sjobsid,"
  3230. + " classessettingid"
  3231. + " from tp_pc_classesdetail"
  3232. + " where ValueFlag = 1"
  3233. + " and classessettingid = (select max(ClassesSettingID)"
  3234. + " from TP_PC_ClassesSetting"
  3235. + " where ValueFlag = 1 and AccountDate=:accountDate"
  3236. + " and UserID = :userID)";
  3237. paras = new OracleParameter[] {
  3238. new OracleParameter(":kilnCarDataID",OracleDbType.Int32,kilnCarDataID,ParameterDirection.Input),
  3239. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3240. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3241. };
  3242. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3243. // 失败
  3244. if (resultCount == Constant.INT_IS_ZERO)
  3245. {
  3246. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3247. }
  3248. #endregion
  3249. return null;
  3250. }
  3251. /// <summary>
  3252. /// 添加生产数据
  3253. /// </summary>
  3254. /// <param name="oracleTrConn">连接对象</param>
  3255. /// <param name="accountDate">账务日期</param>
  3256. /// <param name="productionData">生产数据</param>
  3257. /// <param name="sUserInfo">用户基本信息</param>
  3258. /// <returns>string</returns>
  3259. /// <remarks>
  3260. /// 陈冰 2014.09.18 新建
  3261. /// </remarks>
  3262. private static string AddProductionDataCreateTime(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  3263. {
  3264. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3265. // string selectSql = @"select TP_PM_GroutingProduct.GroutingDate,
  3266. // TP_PM_GroutingProduct.GroutingUserID,
  3267. // TP_PM_GroutingProduct.GroutingUserCode,
  3268. // TP_PM_GroutingProduct.GroutingNum,
  3269. // TP_PM_GroutingProduct.GroutingMouldCode,
  3270. // TP_PM_GroutingProduct.MouldCode,
  3271. // TP_PM_GroutingDaily.GroutingDailyID,
  3272. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3273. // TP_PM_GroutingDaily.GroutingLineID,
  3274. // TP_PM_GroutingDaily.GroutingLineCode,
  3275. // TP_PM_GroutingDaily.GroutingLineName,
  3276. // TP_PM_GroutingDaily.GMouldTypeID,
  3277. // TP_PM_GroutingDaily.CanManyTimes,
  3278. // TP_PM_GroutingDailyDetail.GroutingLineDetailID
  3279. // from TP_PM_GroutingProduct
  3280. // left join TP_PM_GroutingDaily
  3281. // on TP_PM_GroutingProduct.GroutingDailyID=TP_PM_GroutingDaily.GroutingDailyID
  3282. // left join TP_PM_GroutingDailyDetail
  3283. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  3284. // where TP_PM_GroutingProduct.barcode=:barcode";
  3285. //这地方连了两张表,为了成检的时候,次品在次新增
  3286. string returnVal = "";
  3287. string selectSql = @"select
  3288. GroutingDate,
  3289. GroutingUserID,
  3290. GroutingUserCode,
  3291. GroutingNum,
  3292. GroutingMouldCode,
  3293. MouldCode,
  3294. GroutingDailyID,
  3295. GroutingDailyDetailID,
  3296. GroutingLineID,
  3297. GroutingLineCode,
  3298. GroutingLineName,
  3299. GMouldTypeID,
  3300. CanManyTimes,
  3301. GroutingLineDetailID,
  3302. SpecialRepairflag
  3303. from tp_pm_inproduction where barcode=:barcode
  3304. union
  3305. select
  3306. GroutingDate,
  3307. GroutingUserID,
  3308. GroutingUserCode,
  3309. GroutingNum,
  3310. GroutingMouldCode,
  3311. MouldCode,
  3312. GroutingDailyID,
  3313. GroutingDailyDetailID,
  3314. GroutingLineID,
  3315. GroutingLineCode,
  3316. GroutingLineName,
  3317. GMouldTypeID,
  3318. CanManyTimes,
  3319. GroutingLineDetailID,
  3320. SpecialRepairflag
  3321. from TP_PM_InProductionTrash where barcode=:barcode
  3322. ";
  3323. OracleParameter[] selectparas = new OracleParameter[] {
  3324. new OracleParameter(":barcode",productionData.Barcode),
  3325. };
  3326. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  3327. DateTime GroutingDate = new DateTime();
  3328. int GroutingUserID = 0, SpecialRepairflag = 0;
  3329. string GroutingUserCode = "";
  3330. int GroutingNum = 0;
  3331. string GroutingMouldCode = "";
  3332. string MouldCode = "";
  3333. //注浆日报ID
  3334. int GroutingDailyID = 0;
  3335. //注浆日报明细ID
  3336. int GroutingDailyDetailID = 0;
  3337. //成型生产线ID
  3338. int GroutingLineID = 0;
  3339. //成型生产线编码
  3340. string GroutingLineCode = "";
  3341. // 成型生产线名称
  3342. string GroutingLineName = "";
  3343. //成型线类型ID
  3344. int GMouldTypeID = 0;
  3345. // 能否多次注浆
  3346. int CanManyTimes = 0;
  3347. // 成型生产线明细ID
  3348. int GroutingLineDetailID = 0;
  3349. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3350. {
  3351. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3352. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3353. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3354. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3355. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3356. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3357. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3358. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3359. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3360. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3361. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3362. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3363. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3364. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3365. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3366. returnVal = SpecialRepairflag.ToString();
  3367. }
  3368. #endregion
  3369. #region 更新窑炉窑车属性
  3370. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3371. {
  3372. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3373. if (ds != null)
  3374. {
  3375. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3376. {
  3377. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3378. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3379. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3380. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3381. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3382. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3383. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3384. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3385. }
  3386. }
  3387. }
  3388. #endregion
  3389. //string sql = "select createtime from TP_PM_KilnCarGoods"
  3390. // + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  3391. //OracleParameter[] paras = new OracleParameter[] {
  3392. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3393. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3394. //};
  3395. //DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sql, paras);
  3396. //if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0)
  3397. //{
  3398. // sql = "update TP_PM_ProductionData set "
  3399. // + " CreateTime=:CreateTime"
  3400. // + " where barcode=:barcode and ProcedureID=:ProcedureID and KilnCarID=:KilnCarID and AccountID=:AccountID";
  3401. // paras = new OracleParameter[] {
  3402. // new OracleParameter(":CreateTime",Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"])),
  3403. // new OracleParameter(":barcode",productionData.Barcode),
  3404. // new OracleParameter(":ProcedureID",productionData.CompleteProcedureID),
  3405. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3406. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3407. // };
  3408. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3409. //}
  3410. #region SQL
  3411. string sql = "insert into tp_pm_productiondata"
  3412. + " ("
  3413. + " barcode,"
  3414. + " centralizedbatchno,"
  3415. + " productionlineid,"
  3416. + " productionlinecode,"
  3417. + " productionlinename,"
  3418. + " procedureid,"
  3419. + " procedurecode,"
  3420. + " procedurename,"
  3421. + " proceduremodel,"
  3422. + " modeltype,"
  3423. + " piecetype,"
  3424. + " isreworked,"
  3425. + " nodetype,"
  3426. + " ispublicbody,"
  3427. + " isrefire,"
  3428. + " organizationid,"
  3429. + " goodsid,"
  3430. + " goodscode,"
  3431. + " goodsname,"
  3432. + " userid,"
  3433. + " usercode,"
  3434. + " username,"
  3435. + " kilnid,"
  3436. + " kilncode,"
  3437. + " kilnname,"
  3438. + " kilncarid,"
  3439. + " kilncarcode,"
  3440. + " kilncarname,"
  3441. + " kilncarbatchno,"
  3442. + " kilncarposition,"
  3443. + " reworkprocedureid,"
  3444. + " reworkprocedurecode,"
  3445. + " reworkprocedurename,"
  3446. + " remarks,"
  3447. + " accountdate,"
  3448. + " accountid,"
  3449. + " GoodsLevelID,"
  3450. + " GoodsLevelTypeID,"
  3451. + " createuserid,"
  3452. + " updateuserid,"
  3453. + " GroutingDate,"
  3454. + " GroutingUserID,"
  3455. + " GroutingUserCode,"
  3456. + " GroutingNum,"
  3457. + " GroutingMouldCode,"
  3458. + " MouldCode,"
  3459. + "GroutingDailyID,"
  3460. + "GroutingDailyDetailID,"
  3461. + "GroutingLineID,"
  3462. + " GroutingLineCode,"
  3463. + "GroutingLineName,"
  3464. + "GMouldTypeID,"
  3465. + "CanManyTimes,"
  3466. + "GroutingLineDetailID,"
  3467. + "CreateTime,SpecialRepairflag"
  3468. + ")"
  3469. + " values"
  3470. + " ("
  3471. + " :barcode,"
  3472. + " :centralizedbatchno,"
  3473. + " :productionlineid,"
  3474. + " :productionlinecode,"
  3475. + " :productionlinename,"
  3476. + " :procedureid,"
  3477. + " :procedurecode,"
  3478. + " :procedurename,"
  3479. + " :proceduremodel,"
  3480. + " :modeltype,"
  3481. + " :piecetype,"
  3482. + " :isreworked,"
  3483. + " :nodetype,"
  3484. + " :ispublicbody,"
  3485. + " :isrefire,"
  3486. + " :organizationid,"
  3487. + " :goodsid,"
  3488. + " :goodscode,"
  3489. + " :goodsname,"
  3490. + " :userid,"
  3491. + " :usercode,"
  3492. + " :username,"
  3493. + " :kilnid,"
  3494. + " :kilncode,"
  3495. + " :kilnname,"
  3496. + " :kilncarid,"
  3497. + " :kilncarcode,"
  3498. + " :kilncarname,"
  3499. + " :kilncarbatchno,"
  3500. + " :kilncarposition,"
  3501. + " :reworkprocedureid,"
  3502. + " :reworkprocedurecode,"
  3503. + " :reworkprocedurename,"
  3504. + " :remarks,"
  3505. + " :accountdata,"
  3506. + " :accountid,"
  3507. + " :GoodsLevelID,"
  3508. + " :GoodsLevelTypeID,"
  3509. + " :createuserid,"
  3510. + " :updateuserid,"
  3511. + " :groutingdate,"
  3512. + " :groutinguserid,"
  3513. + " :groutingusercode,"
  3514. + " :groutingnum,"
  3515. + " :groutingmouldcode,"
  3516. + " :mouldcode,"
  3517. + ":groutingdailyid,"
  3518. + ":groutingdailydetailid,"
  3519. + ":groutinglineid,"
  3520. + " :groutinglinecode,"
  3521. + ":groutinglinename,"
  3522. + ":gmouldtypeid,"
  3523. + ":canmanytimes,"
  3524. + ":groutinglinedetailid,"
  3525. + ":CreateTime,:SpecialRepairflag"
  3526. + ")";
  3527. #endregion
  3528. #region OracleParameter
  3529. OracleParameter[] paras = new OracleParameter[] {
  3530. new OracleParameter(":barcode",productionData.Barcode),
  3531. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  3532. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  3533. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  3534. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  3535. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  3536. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  3537. new OracleParameter(":procedurename",productionData.ProcedureName),
  3538. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  3539. new OracleParameter(":modeltype",productionData.ModelType),
  3540. new OracleParameter(":piecetype",productionData.PieceType),
  3541. new OracleParameter(":isreworked",productionData.IsReworked),
  3542. new OracleParameter(":nodetype",productionData.NodeType),
  3543. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3544. new OracleParameter(":isrefire",productionData.IsReFire),
  3545. new OracleParameter(":organizationid",productionData.OrganizationID),
  3546. new OracleParameter(":goodsid",productionData.GoodsID),
  3547. new OracleParameter(":goodscode",productionData.GoodsCode),
  3548. new OracleParameter(":goodsname",productionData.GoodsName),
  3549. new OracleParameter(":userid",productionData.UserID),
  3550. new OracleParameter(":usercode",productionData.UserCode),
  3551. new OracleParameter(":username",productionData.UserName),
  3552. new OracleParameter(":kilnid",productionData.KilnID),
  3553. new OracleParameter(":kilncode",productionData.KilnCode),
  3554. new OracleParameter(":kilnname",productionData.KilnName),
  3555. new OracleParameter(":kilncarid",productionData.KilnCarID),
  3556. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  3557. new OracleParameter(":kilncarname",productionData.KilnCarName),
  3558. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  3559. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  3560. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  3561. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  3562. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  3563. new OracleParameter(":remarks",productionData.Remarks),
  3564. new OracleParameter(":accountdata",accountDate),
  3565. new OracleParameter(":accountid",sUserInfo.AccountID),
  3566. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  3567. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  3568. new OracleParameter(":createuserid",sUserInfo.UserID),
  3569. new OracleParameter(":updateuserid",sUserInfo.UserID),
  3570. new OracleParameter(":groutingdate",GroutingDate),
  3571. new OracleParameter(":groutinguserid",GroutingUserID),
  3572. new OracleParameter(":groutingusercode",GroutingUserCode),
  3573. new OracleParameter(":groutingnum",GroutingNum),
  3574. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  3575. new OracleParameter(":mouldcode",MouldCode),
  3576. new OracleParameter(":groutingdailyid",GroutingDailyID),
  3577. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  3578. new OracleParameter(":groutinglineid",GroutingLineID),
  3579. new OracleParameter(":groutinglinecode",GroutingLineCode),
  3580. new OracleParameter(":groutinglinename",GroutingLineName),
  3581. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  3582. new OracleParameter(":canmanytimes",CanManyTimes),
  3583. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  3584. new OracleParameter(":CreateTime",productionData.CreateTime),
  3585. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  3586. };
  3587. #endregion
  3588. foreach (OracleParameter para in paras)
  3589. {
  3590. if (string.IsNullOrEmpty(para.Value + ""))
  3591. {
  3592. para.Value = DBNull.Value;
  3593. }
  3594. }
  3595. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3596. OutSpecialRepairflag = returnVal;
  3597. // 失败
  3598. if (result != Constant.INT_IS_ONE)
  3599. {
  3600. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3601. }
  3602. // 成功返回null
  3603. return null;
  3604. }
  3605. /// <summary>
  3606. /// 添加生产数据
  3607. /// </summary>
  3608. /// <param name="oracleTrConn">连接对象</param>
  3609. /// <param name="accountDate">账务日期</param>
  3610. /// <param name="productionData">生产数据</param>
  3611. /// <param name="sUserInfo">用户基本信息</param>
  3612. /// <param name="isSendBody">是否交坯</param>
  3613. /// <returns>string</returns>
  3614. /// <remarks>
  3615. /// 陈冰 2014.09.18 新建
  3616. /// xuwei 2019-09-17 修改
  3617. /// </remarks>
  3618. private static string AddProductionDataDeliverMud(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag
  3619. , out DataSet outGroutingProduct,bool isSendBody=false)
  3620. {
  3621. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3622. string selectSql = "";
  3623. string returnVal = "";
  3624. //xuwei fix 2019-09-23 修正非交坯时 productionData.GroutingDailyDetailID 为空无法得到结果
  3625. //改用 条码查询
  3626. //selectSql = @"select GroutingDate,
  3627. // ClassesSettingID,
  3628. // UserID as GroutingUserID,
  3629. // UserCode as GroutingUserCode,
  3630. // GroutingCount as GroutingNum,
  3631. // GroutingMouldCode,
  3632. // MouldCode,
  3633. // GroutingDailyID,
  3634. // GroutingDailyDetailID,
  3635. // GroutingLineID,
  3636. // GroutingLineCode,
  3637. // GroutingLineName,
  3638. // GroutingLineDetailID,
  3639. // SpecialRepairflag,
  3640. // goodsid,
  3641. // goodscode,
  3642. // goodsname,
  3643. // GMouldTypeID,
  3644. // CanManyTimes,
  3645. // LogoID
  3646. // from tp_pm_GroutingDailyDetail
  3647. // where tp_pm_GroutingDailyDetail.GroutingDailyDetailID=:GroutingDailyDetailID";
  3648. //OracleParameter[] selectparas1 = new OracleParameter[] {
  3649. // new OracleParameter(":GroutingDailyDetailID",productionData.GroutingDailyDetailID),
  3650. //};
  3651. selectSql = @"select GroutingDate,
  3652. ClassesSettingID,
  3653. UserID as GroutingUserID,
  3654. UserCode as GroutingUserCode,
  3655. GroutingCount as GroutingNum,
  3656. GroutingMouldCode,
  3657. MouldCode,
  3658. GroutingDailyID,
  3659. GroutingDailyDetailID,
  3660. GroutingLineID,
  3661. GroutingLineCode,
  3662. GroutingLineName,
  3663. GroutingLineDetailID,
  3664. SpecialRepairflag,
  3665. goodsid,
  3666. goodscode,
  3667. goodsname,
  3668. GMouldTypeID,
  3669. CanManyTimes,
  3670. LogoID
  3671. from tp_pm_GroutingDailyDetail
  3672. where tp_pm_GroutingDailyDetail.Barcode=:Barcode";
  3673. OracleParameter[] selectparas1 = new OracleParameter[] {
  3674. new OracleParameter(":Barcode",productionData.Barcode),
  3675. };
  3676. //xuwei fix end
  3677. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas1);
  3678. DateTime GroutingDate = new DateTime();
  3679. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  3680. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  3681. int? ClassesSettingID = null;
  3682. int? LogoID = null;
  3683. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3684. {
  3685. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3686. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3687. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3688. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3689. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3690. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3691. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3692. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3693. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3694. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3695. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3696. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3697. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3698. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3699. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3700. returnVal = SpecialRepairflag.ToString();
  3701. if (productionData.IsPublicBody.ToString() != "1")
  3702. ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  3703. else
  3704. ClassesSettingID = productionData.ClassesSettingID == null ? Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]) : productionData.ClassesSettingID;
  3705. if (dsGroutingProduct.Tables[0].Rows[0]["LogoID"] != DBNull.Value)
  3706. {
  3707. LogoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["LogoID"]);
  3708. }
  3709. //xuwei fix begin
  3710. //2019-09-17
  3711. //更新注浆日报(交坯处理)
  3712. if(isSendBody)
  3713. {
  3714. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  3715. OracleParameter[] paras2 = new OracleParameter[] {
  3716. new OracleParameter(":deliveruserid",productionData.UserID),
  3717. new OracleParameter(":deliverusercode",productionData.UserCode),
  3718. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3719. };
  3720. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  3721. }
  3722. //更新 注浆日报 在产标识(BEGINNINGFLAG)
  3723. selectSql = "update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '1' where Barcode='" + productionData.Barcode + "'";
  3724. oracleTrConn.ExecuteNonQuery(selectSql);
  3725. //xuwei end
  3726. }
  3727. outGroutingProduct = dsGroutingProduct;
  3728. #endregion
  3729. #region 更新窑炉窑车属性
  3730. //if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3731. //{
  3732. // DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3733. // if (ds != null)
  3734. // {
  3735. // if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3736. // {
  3737. // productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3738. // productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3739. // productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3740. // productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3741. // productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3742. // productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3743. // productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3744. // productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3745. // }
  3746. // }
  3747. //}
  3748. #endregion
  3749. #region SQL
  3750. string sql = "insert into tp_pm_productiondataIn"
  3751. + " (productiondataid,"
  3752. + " barcode,"
  3753. + " centralizedbatchno,"
  3754. + " productionlineid,"
  3755. + " productionlinecode,"
  3756. + " productionlinename,"
  3757. + " procedureid,"
  3758. + " procedurecode,"
  3759. + " procedurename,"
  3760. + " proceduremodel,"
  3761. + " modeltype,"
  3762. + " piecetype,"
  3763. + " isreworked,"
  3764. + " nodetype,"
  3765. + " ispublicbody,"
  3766. + " isrefire,"
  3767. + " organizationid,"
  3768. + " goodsid,"
  3769. + " goodscode,"
  3770. + " goodsname,"
  3771. + " userid,"
  3772. + " usercode,"
  3773. + " username,"
  3774. + " kilnid,"
  3775. + " kilncode,"
  3776. + " kilnname,"
  3777. + " kilncarid,"
  3778. + " kilncarcode,"
  3779. + " kilncarname,"
  3780. + " kilncarbatchno,"
  3781. + " kilncarposition,"
  3782. + " reworkprocedureid,"
  3783. + " reworkprocedurecode,"
  3784. + " reworkprocedurename,"
  3785. + " remarks,"
  3786. + " accountdate,"
  3787. + " accountid,"
  3788. + " GoodsLevelID,"
  3789. + " GoodsLevelTypeID,"
  3790. + " createuserid,"
  3791. + " updateuserid,"
  3792. + " GroutingDate,"
  3793. + " GroutingUserID,"
  3794. + " GroutingUserCode,"
  3795. + " GroutingNum,"
  3796. + " GroutingMouldCode,"
  3797. + " MouldCode,"
  3798. + "GroutingDailyID,"
  3799. + "GroutingDailyDetailID,"
  3800. + "GroutingLineID,"
  3801. + " GroutingLineCode,"
  3802. + "GroutingLineName,"
  3803. + "GMouldTypeID,"
  3804. + "CanManyTimes,"
  3805. + "GroutingLineDetailID,"
  3806. + "SpecialRepairflag,"
  3807. + "ClassesSettingID,"
  3808. + "LogoID"
  3809. + ")"
  3810. + " values"
  3811. + " (:productiondataid,"
  3812. + " :barcode,"
  3813. + " :centralizedbatchno,"
  3814. + " :productionlineid,"
  3815. + " :productionlinecode,"
  3816. + " :productionlinename,"
  3817. + " :procedureid,"
  3818. + " :procedurecode,"
  3819. + " :procedurename,"
  3820. + " :proceduremodel,"
  3821. + " :modeltype,"
  3822. + " :piecetype,"
  3823. + " :isreworked,"
  3824. + " :nodetype,"
  3825. + " :ispublicbody,"
  3826. + " :isrefire,"
  3827. + " :organizationid,"
  3828. + " :goodsid,"
  3829. + " :goodscode,"
  3830. + " :goodsname,"
  3831. + " :userid,"
  3832. + " :usercode,"
  3833. + " :username,"
  3834. + " :kilnid,"
  3835. + " :kilncode,"
  3836. + " :kilnname,"
  3837. + " :kilncarid,"
  3838. + " :kilncarcode,"
  3839. + " :kilncarname,"
  3840. + " :kilncarbatchno,"
  3841. + " :kilncarposition,"
  3842. + " :reworkprocedureid,"
  3843. + " :reworkprocedurecode,"
  3844. + " :reworkprocedurename,"
  3845. + " :remarks,"
  3846. + " :accountdata,"
  3847. + " :accountid,"
  3848. + " :GoodsLevelID,"
  3849. + " :GoodsLevelTypeID,"
  3850. + " :createuserid,"
  3851. + " :updateuserid,"
  3852. + " :groutingdate,"
  3853. + " :groutinguserid,"
  3854. + " :groutingusercode,"
  3855. + " :groutingnum,"
  3856. + " :groutingmouldcode,"
  3857. + " :mouldcode,"
  3858. + ":groutingdailyid,"
  3859. + ":groutingdailydetailid,"
  3860. + ":groutinglineid,"
  3861. + " :groutinglinecode,"
  3862. + ":groutinglinename,"
  3863. + ":gmouldtypeid,"
  3864. + ":canmanytimes,"
  3865. + ":groutinglinedetailid,"
  3866. + ":specialRepairflag,"
  3867. + ":classesSettingID,"
  3868. + ":LogoID"
  3869. + ")";
  3870. #endregion
  3871. #region OracleParameter
  3872. OracleParameter[] paras = new OracleParameter[] {
  3873. new OracleParameter(":classesSettingID",ClassesSettingID),
  3874. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  3875. new OracleParameter(":barcode",productionData.Barcode),
  3876. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  3877. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  3878. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  3879. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  3880. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  3881. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  3882. new OracleParameter(":procedurename",productionData.ProcedureName),
  3883. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  3884. new OracleParameter(":modeltype",productionData.ModelType),
  3885. new OracleParameter(":piecetype",productionData.PieceType),
  3886. new OracleParameter(":isreworked",productionData.IsReworked),
  3887. new OracleParameter(":nodetype",productionData.NodeType),
  3888. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3889. new OracleParameter(":isrefire",productionData.IsReFire),
  3890. new OracleParameter(":organizationid",productionData.OrganizationID),
  3891. new OracleParameter(":goodsid",productionData.GoodsID),
  3892. new OracleParameter(":goodscode",productionData.GoodsCode),
  3893. new OracleParameter(":goodsname",productionData.GoodsName),
  3894. new OracleParameter(":userid",productionData.UserID),
  3895. new OracleParameter(":usercode",productionData.UserCode),
  3896. new OracleParameter(":username",productionData.UserName),
  3897. new OracleParameter(":kilnid",productionData.KilnID),
  3898. new OracleParameter(":kilncode",productionData.KilnCode),
  3899. new OracleParameter(":kilnname",productionData.KilnName),
  3900. new OracleParameter(":kilncarid",productionData.KilnCarID),
  3901. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  3902. new OracleParameter(":kilncarname",productionData.KilnCarName),
  3903. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  3904. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  3905. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  3906. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  3907. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  3908. new OracleParameter(":remarks",productionData.Remarks),
  3909. new OracleParameter(":accountdata",accountDate),
  3910. new OracleParameter(":accountid",sUserInfo.AccountID),
  3911. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  3912. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  3913. new OracleParameter(":createuserid",sUserInfo.UserID),
  3914. new OracleParameter(":updateuserid",sUserInfo.UserID),
  3915. new OracleParameter(":groutingdate",GroutingDate),
  3916. new OracleParameter(":groutinguserid",GroutingUserID),
  3917. new OracleParameter(":groutingusercode",GroutingUserCode),
  3918. new OracleParameter(":groutingnum",GroutingNum),
  3919. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  3920. new OracleParameter(":mouldcode",MouldCode),
  3921. new OracleParameter(":groutingdailyid",GroutingDailyID),
  3922. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  3923. new OracleParameter(":groutinglineid",GroutingLineID),
  3924. new OracleParameter(":groutinglinecode",GroutingLineCode),
  3925. new OracleParameter(":groutinglinename",GroutingLineName),
  3926. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  3927. new OracleParameter(":canmanytimes",CanManyTimes),
  3928. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  3929. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  3930. new OracleParameter(":LogoID",LogoID),
  3931. };
  3932. #endregion
  3933. foreach (OracleParameter para in paras)
  3934. {
  3935. if (string.IsNullOrEmpty(para.Value + ""))
  3936. {
  3937. para.Value = DBNull.Value;
  3938. }
  3939. }
  3940. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3941. OutSpecialRepairflag = returnVal;
  3942. // 失败
  3943. if (result != Constant.INT_IS_ONE)
  3944. {
  3945. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3946. }
  3947. // 成功返回null
  3948. return null;
  3949. }
  3950. /// <summary>
  3951. /// 添加生产数据
  3952. /// </summary>
  3953. /// <param name="oracleTrConn">连接对象</param>
  3954. /// <param name="accountDate">账务日期</param>
  3955. /// <param name="productionData">生产数据</param>
  3956. /// <param name="sUserInfo">用户基本信息</param>
  3957. /// <param name="isSendBody">是否交坯</param>
  3958. /// <returns>string</returns>
  3959. /// <remarks>
  3960. /// 陈冰 2014.09.18 新建
  3961. /// </remarks>
  3962. private static string AddProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag, bool isSendBody = false)
  3963. {
  3964. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3965. string selectSql = "";
  3966. string returnVal = "";
  3967. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  3968. {
  3969. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  3970. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  3971. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  3972. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3973. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  3974. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  3975. // TP_PM_GroutingDailyDetail.MouldCode,
  3976. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  3977. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3978. // TP_PM_GroutingDailyDetail.GroutingLineID,
  3979. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  3980. // TP_PM_GroutingDailyDetail.GroutingLineName,
  3981. // TP_PM_GroutingDaily.GMouldTypeID,
  3982. // TP_PM_GroutingDaily.CanManyTimes,
  3983. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  3984. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  3985. // from TP_PM_GroutingDaily
  3986. // inner join TP_PM_GroutingDailyDetail
  3987. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  3988. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  3989. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  3990. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  3991. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3992. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  3993. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  3994. TP_PM_GroutingDailyDetail.MouldCode,
  3995. TP_PM_GroutingDailyDetail.GroutingDailyID,
  3996. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3997. TP_PM_GroutingDailyDetail.GroutingLineID,
  3998. TP_PM_GroutingDailyDetail.GroutingLineCode,
  3999. TP_PM_GroutingDailyDetail.GroutingLineName,
  4000. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4001. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  4002. (select GMouldTypeID
  4003. from TP_PM_GroutingDaily
  4004. where TP_PM_GroutingDaily.GroutingDailyID =
  4005. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  4006. (select CanManyTimes
  4007. from TP_PM_GroutingDaily
  4008. where TP_PM_GroutingDaily.GroutingDailyID =
  4009. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  4010. 0 as IsReFire
  4011. from TP_PM_GroutingDailyDetail
  4012. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4013. }
  4014. else
  4015. {
  4016. //这地方连了两张表,为了成检的时候,次品在次新增
  4017. // selectSql = @"select
  4018. // GroutingDate,
  4019. // GroutingUserID,
  4020. // GroutingUserCode,
  4021. // GroutingNum,
  4022. // GroutingMouldCode,
  4023. // MouldCode,
  4024. // GroutingDailyID,
  4025. // GroutingDailyDetailID,
  4026. // GroutingLineID,
  4027. // GroutingLineCode,
  4028. // GroutingLineName,
  4029. // GMouldTypeID,
  4030. // CanManyTimes,
  4031. // GroutingLineDetailID,
  4032. // SpecialRepairflag,
  4033. // IsReFire
  4034. //
  4035. // from tp_pm_inproduction where barcode=:barcode
  4036. // union
  4037. // select
  4038. // GroutingDate,
  4039. // GroutingUserID,
  4040. // GroutingUserCode,
  4041. // GroutingNum,
  4042. // GroutingMouldCode,
  4043. // MouldCode,
  4044. // GroutingDailyID,
  4045. // GroutingDailyDetailID,
  4046. // GroutingLineID,
  4047. // GroutingLineCode,
  4048. // GroutingLineName,
  4049. // GMouldTypeID,
  4050. // CanManyTimes,
  4051. // GroutingLineDetailID,
  4052. // SpecialRepairflag,
  4053. // IsReFire
  4054. // from TP_PM_InProductionTrash where barcode=:barcode
  4055. // ";
  4056. selectSql = @"select
  4057. ip.GroutingDate,
  4058. ip.GroutingUserID,
  4059. ip.GroutingUserCode,
  4060. ip.GroutingNum,
  4061. ip.GroutingMouldCode,
  4062. ip.MouldCode,
  4063. ip.GroutingDailyID,
  4064. ip.GroutingDailyDetailID,
  4065. ip.GroutingLineID,
  4066. ip.GroutingLineCode,
  4067. ip.GroutingLineName,
  4068. ip.GMouldTypeID,
  4069. ip.CanManyTimes,
  4070. ip.GroutingLineDetailID,
  4071. ip.SpecialRepairflag,
  4072. ip.IsReFire,
  4073. ip.logoid,
  4074. gdd.ClassesSettingID
  4075. from tp_pm_inproduction ip inner join TP_PM_GroutingDailyDetail gdd on ip.GroutingDailyDetailID=gdd.GroutingDailyDetailID
  4076. where ip.barcode=:barcode
  4077. ";
  4078. }
  4079. OracleParameter[] selectparas = new OracleParameter[] {
  4080. new OracleParameter(":barcode",productionData.Barcode),
  4081. };
  4082. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4083. DateTime GroutingDate = new DateTime();
  4084. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4085. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4086. int IsReFire = 0;
  4087. int? logoID = null;
  4088. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4089. {
  4090. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4091. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4092. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4093. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4094. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4095. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4096. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4097. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4098. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4099. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4100. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4101. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4102. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4103. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4104. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4105. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4106. if (IsReFire > 0) //大于零代表重烧过
  4107. {
  4108. productionData.IsReFire = IsReFire;
  4109. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4110. }
  4111. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  4112. {
  4113. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  4114. }
  4115. //if (productionData.LogoID != null) //当前工序有商标
  4116. //{
  4117. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  4118. // {
  4119. // logoID = productionData.LogoID;
  4120. // //根据明细ID.update
  4121. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  4122. // OracleParameter[] paras2 = new OracleParameter[] {
  4123. // new OracleParameter(":logoid",productionData.LogoID)
  4124. // };
  4125. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  4126. // }
  4127. //}
  4128. //xuwei add begin
  4129. //2019-09-17
  4130. //更新注浆日报(交坯处理)
  4131. if (isSendBody)
  4132. {
  4133. if (productionData.IsPublicBody.ToString() != "1" || productionData.ClassesSettingID == null)
  4134. productionData.ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  4135. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  4136. OracleParameter[] paras2 = new OracleParameter[] {
  4137. new OracleParameter(":deliveruserid",productionData.UserID),
  4138. new OracleParameter(":deliverusercode",productionData.UserCode),
  4139. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4140. };
  4141. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  4142. }
  4143. returnVal = SpecialRepairflag.ToString();
  4144. }
  4145. #endregion
  4146. #region 更新窑炉窑车属性
  4147. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4148. {
  4149. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4150. if (ds != null)
  4151. {
  4152. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4153. {
  4154. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4155. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4156. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4157. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4158. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4159. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4160. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4161. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4162. }
  4163. }
  4164. }
  4165. #endregion
  4166. #region SQL
  4167. string sql = "insert into tp_pm_productiondataIn"
  4168. + " (productiondataid,"
  4169. + " barcode,"
  4170. + " centralizedbatchno,"
  4171. + " productionlineid,"
  4172. + " productionlinecode,"
  4173. + " productionlinename,"
  4174. + " procedureid,"
  4175. + " procedurecode,"
  4176. + " procedurename,"
  4177. + " proceduremodel,"
  4178. + " modeltype,"
  4179. + " piecetype,"
  4180. + " isreworked,"
  4181. + " nodetype,"
  4182. + " ispublicbody,"
  4183. + " isrefire,"
  4184. + " organizationid,"
  4185. + " goodsid,"
  4186. + " goodscode,"
  4187. + " goodsname,"
  4188. + " userid,"
  4189. + " usercode,"
  4190. + " username,"
  4191. + " kilnid,"
  4192. + " kilncode,"
  4193. + " kilnname,"
  4194. + " kilncarid,"
  4195. + " kilncarcode,"
  4196. + " kilncarname,"
  4197. + " kilncarbatchno,"
  4198. + " kilncarposition,"
  4199. + " reworkprocedureid,"
  4200. + " reworkprocedurecode,"
  4201. + " reworkprocedurename,"
  4202. + " remarks,"
  4203. + " accountdate,"
  4204. + " accountid,"
  4205. + " GoodsLevelID,"
  4206. + " GoodsLevelTypeID,"
  4207. + " createuserid,"
  4208. + " updateuserid,"
  4209. + " GroutingDate,"
  4210. + " GroutingUserID,"
  4211. + " GroutingUserCode,"
  4212. + " GroutingNum,"
  4213. + " GroutingMouldCode,"
  4214. + " MouldCode,"
  4215. + "GroutingDailyID,"
  4216. + "GroutingDailyDetailID,"
  4217. + "GroutingLineID,"
  4218. + " GroutingLineCode,"
  4219. + "GroutingLineName,"
  4220. + "GMouldTypeID,"
  4221. + "CanManyTimes,"
  4222. + "GroutingLineDetailID,"
  4223. + "SpecialRepairflag,"
  4224. + "ClassesSettingID,"
  4225. + "LogoID"
  4226. + ")"
  4227. + " values"
  4228. + " (:productiondataid,"
  4229. + " :barcode,"
  4230. + " :centralizedbatchno,"
  4231. + " :productionlineid,"
  4232. + " :productionlinecode,"
  4233. + " :productionlinename,"
  4234. + " :procedureid,"
  4235. + " :procedurecode,"
  4236. + " :procedurename,"
  4237. + " :proceduremodel,"
  4238. + " :modeltype,"
  4239. + " :piecetype,"
  4240. + " :isreworked,"
  4241. + " :nodetype,"
  4242. + " :ispublicbody,"
  4243. + " :isrefire,"
  4244. + " :organizationid,"
  4245. + " :goodsid,"
  4246. + " :goodscode,"
  4247. + " :goodsname,"
  4248. + " :userid,"
  4249. + " :usercode,"
  4250. + " :username,"
  4251. + " :kilnid,"
  4252. + " :kilncode,"
  4253. + " :kilnname,"
  4254. + " :kilncarid,"
  4255. + " :kilncarcode,"
  4256. + " :kilncarname,"
  4257. + " :kilncarbatchno,"
  4258. + " :kilncarposition,"
  4259. + " :reworkprocedureid,"
  4260. + " :reworkprocedurecode,"
  4261. + " :reworkprocedurename,"
  4262. + " :remarks,"
  4263. + " :accountdata,"
  4264. + " :accountid,"
  4265. + " :GoodsLevelID,"
  4266. + " :GoodsLevelTypeID,"
  4267. + " :createuserid,"
  4268. + " :updateuserid,"
  4269. + " :groutingdate,"
  4270. + " :groutinguserid,"
  4271. + " :groutingusercode,"
  4272. + " :groutingnum,"
  4273. + " :groutingmouldcode,"
  4274. + " :mouldcode,"
  4275. + ":groutingdailyid,"
  4276. + ":groutingdailydetailid,"
  4277. + ":groutinglineid,"
  4278. + " :groutinglinecode,"
  4279. + ":groutinglinename,"
  4280. + ":gmouldtypeid,"
  4281. + ":canmanytimes,"
  4282. + ":groutinglinedetailid,"
  4283. + ":specialRepairflag,"
  4284. + ":classesSettingID,"
  4285. + ":logoID"
  4286. + ")";
  4287. #endregion
  4288. #region OracleParameter
  4289. OracleParameter[] paras = new OracleParameter[] {
  4290. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4291. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4292. new OracleParameter(":barcode",productionData.Barcode),
  4293. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4294. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4295. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4296. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4297. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4298. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4299. new OracleParameter(":procedurename",productionData.ProcedureName),
  4300. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4301. new OracleParameter(":modeltype",productionData.ModelType),
  4302. new OracleParameter(":piecetype",productionData.PieceType),
  4303. new OracleParameter(":isreworked",productionData.IsReworked),
  4304. new OracleParameter(":nodetype",productionData.NodeType),
  4305. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4306. new OracleParameter(":isrefire",productionData.IsReFire),
  4307. new OracleParameter(":organizationid",productionData.OrganizationID),
  4308. new OracleParameter(":goodsid",productionData.GoodsID),
  4309. new OracleParameter(":goodscode",productionData.GoodsCode),
  4310. new OracleParameter(":goodsname",productionData.GoodsName),
  4311. new OracleParameter(":userid",productionData.UserID),
  4312. new OracleParameter(":usercode",productionData.UserCode),
  4313. new OracleParameter(":username",productionData.UserName),
  4314. new OracleParameter(":kilnid",productionData.KilnID),
  4315. new OracleParameter(":kilncode",productionData.KilnCode),
  4316. new OracleParameter(":kilnname",productionData.KilnName),
  4317. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4318. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4319. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4320. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4321. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4322. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4323. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4324. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4325. new OracleParameter(":remarks",productionData.Remarks),
  4326. new OracleParameter(":accountdata",accountDate),
  4327. new OracleParameter(":accountid",sUserInfo.AccountID),
  4328. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4329. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4330. new OracleParameter(":createuserid",sUserInfo.UserID),
  4331. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4332. new OracleParameter(":groutingdate",GroutingDate),
  4333. new OracleParameter(":groutinguserid",GroutingUserID),
  4334. new OracleParameter(":groutingusercode",GroutingUserCode),
  4335. new OracleParameter(":groutingnum",GroutingNum),
  4336. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4337. new OracleParameter(":mouldcode",MouldCode),
  4338. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4339. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4340. new OracleParameter(":groutinglineid",GroutingLineID),
  4341. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4342. new OracleParameter(":groutinglinename",GroutingLineName),
  4343. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4344. new OracleParameter(":canmanytimes",CanManyTimes),
  4345. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4346. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4347. new OracleParameter(":logoID",logoID),
  4348. };
  4349. #endregion
  4350. foreach (OracleParameter para in paras)
  4351. {
  4352. if (string.IsNullOrEmpty(para.Value + ""))
  4353. {
  4354. para.Value = DBNull.Value;
  4355. }
  4356. }
  4357. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4358. OutSpecialRepairflag = returnVal;
  4359. // 失败
  4360. if (result != Constant.INT_IS_ONE)
  4361. {
  4362. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4363. }
  4364. // 成功返回null
  4365. return null;
  4366. }
  4367. /// <summary>
  4368. /// 添加生产数据(单独为成检所做,因为成检可以从次品到其它,需要读一标识,别的不需要连接回收站表)
  4369. /// </summary>
  4370. /// <param name="oracleTrConn">连接对象</param>
  4371. /// <param name="accountDate">账务日期</param>
  4372. /// <param name="productionData">生产数据</param>
  4373. /// <param name="sUserInfo">用户基本信息</param>
  4374. /// <returns>string</returns>
  4375. /// <remarks>
  4376. /// 陈冰 2014.09.18 新建
  4377. /// </remarks>
  4378. private static string AddFinishCheckProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  4379. {
  4380. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  4381. string selectSql = "";
  4382. string returnVal = "";
  4383. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  4384. {
  4385. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  4386. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  4387. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4388. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4389. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4390. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4391. // TP_PM_GroutingDailyDetail.MouldCode,
  4392. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  4393. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4394. // TP_PM_GroutingDailyDetail.GroutingLineID,
  4395. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  4396. // TP_PM_GroutingDailyDetail.GroutingLineName,
  4397. // TP_PM_GroutingDaily.GMouldTypeID,
  4398. // TP_PM_GroutingDaily.CanManyTimes,
  4399. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4400. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  4401. // from TP_PM_GroutingDaily
  4402. // inner join TP_PM_GroutingDailyDetail
  4403. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  4404. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4405. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  4406. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4407. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4408. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4409. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4410. TP_PM_GroutingDailyDetail.MouldCode,
  4411. TP_PM_GroutingDailyDetail.GroutingDailyID,
  4412. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4413. TP_PM_GroutingDailyDetail.GroutingLineID,
  4414. TP_PM_GroutingDailyDetail.GroutingLineCode,
  4415. TP_PM_GroutingDailyDetail.GroutingLineName,
  4416. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4417. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  4418. (select GMouldTypeID
  4419. from TP_PM_GroutingDaily
  4420. where TP_PM_GroutingDaily.GroutingDailyID =
  4421. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  4422. (select CanManyTimes
  4423. from TP_PM_GroutingDaily
  4424. where TP_PM_GroutingDaily.GroutingDailyID =
  4425. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  4426. 0 as IsReFire
  4427. from TP_PM_GroutingDailyDetail
  4428. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4429. }
  4430. else
  4431. {
  4432. //这地方连了两张表,为了成检的时候,次品在次新增
  4433. selectSql = @"select
  4434. GroutingDate,
  4435. GroutingUserID,
  4436. GroutingUserCode,
  4437. GroutingNum,
  4438. GroutingMouldCode,
  4439. MouldCode,
  4440. GroutingDailyID,
  4441. GroutingDailyDetailID,
  4442. GroutingLineID,
  4443. GroutingLineCode,
  4444. GroutingLineName,
  4445. GMouldTypeID,
  4446. CanManyTimes,
  4447. GroutingLineDetailID,
  4448. SpecialRepairflag,
  4449. IsReFire,
  4450. Logoid
  4451. from tp_pm_inproduction where barcode=:barcode
  4452. union
  4453. select
  4454. GroutingDate,
  4455. GroutingUserID,
  4456. GroutingUserCode,
  4457. GroutingNum,
  4458. GroutingMouldCode,
  4459. MouldCode,
  4460. GroutingDailyID,
  4461. GroutingDailyDetailID,
  4462. GroutingLineID,
  4463. GroutingLineCode,
  4464. GroutingLineName,
  4465. GMouldTypeID,
  4466. CanManyTimes,
  4467. GroutingLineDetailID,
  4468. SpecialRepairflag,
  4469. IsReFire,
  4470. logoid
  4471. from TP_PM_InProductionTrash where barcode=:barcode
  4472. ";
  4473. }
  4474. OracleParameter[] selectparas = new OracleParameter[] {
  4475. new OracleParameter(":barcode",productionData.Barcode),
  4476. };
  4477. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4478. DateTime GroutingDate = new DateTime();
  4479. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4480. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4481. int IsReFire = 0;
  4482. int? logoid = null;
  4483. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4484. {
  4485. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4486. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4487. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4488. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4489. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4490. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4491. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4492. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4493. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4494. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4495. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4496. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4497. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4498. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4499. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4500. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4501. if (dsGroutingProduct.Tables[0].Rows[0]["logoid"].ToString() != "")
  4502. {
  4503. logoid = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoid"]);
  4504. }
  4505. if (IsReFire > 0) //大于零代表重烧过
  4506. {
  4507. productionData.IsReFire = IsReFire;
  4508. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4509. }
  4510. returnVal = SpecialRepairflag.ToString();
  4511. }
  4512. #endregion
  4513. #region 更新窑炉窑车属性
  4514. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4515. {
  4516. DataSet ds = GetFinishCheckKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4517. if (ds != null)
  4518. {
  4519. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4520. {
  4521. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4522. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4523. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4524. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4525. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4526. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4527. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4528. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4529. }
  4530. }
  4531. }
  4532. #endregion
  4533. if (Convert.ToInt32(productionData.GoodsLevelTypeID) == 6) //判断重烧必须有返工工序
  4534. {
  4535. if (productionData.ReworkProcedureID == null || Convert.ToInt32(productionData.ReworkProcedureID) == 0)
  4536. {
  4537. OutSpecialRepairflag = "";
  4538. return string.Format("产品分级【重烧】必须填写返工工序", "条码", "保存");
  4539. }
  4540. }
  4541. DateTime? checkTime = null;
  4542. if (productionData.IsPDA != null)
  4543. {
  4544. if (productionData.PDACheckTime != null)
  4545. {
  4546. // PDA端
  4547. if (productionData.PDACheckTime.ToString() != string.Empty)
  4548. {
  4549. checkTime = Convert.ToDateTime(productionData.PDACheckTime);
  4550. }
  4551. }
  4552. }
  4553. else
  4554. {
  4555. if (productionData.CheckTime != null)
  4556. {
  4557. // PDA端
  4558. if (productionData.CheckTime.ToString() != string.Empty)
  4559. {
  4560. checkTime = Convert.ToDateTime(productionData.CheckTime);
  4561. }
  4562. }
  4563. }
  4564. #region SQL
  4565. string sql = "insert into tp_pm_productiondataIn"
  4566. + " (productiondataid,"
  4567. + " barcode,"
  4568. + " centralizedbatchno,"
  4569. + " productionlineid,"
  4570. + " productionlinecode,"
  4571. + " productionlinename,"
  4572. + " procedureid,"
  4573. + " procedurecode,"
  4574. + " procedurename,"
  4575. + " proceduremodel,"
  4576. + " modeltype,"
  4577. + " piecetype,"
  4578. + " isreworked,"
  4579. + " nodetype,"
  4580. + " ispublicbody,"
  4581. + " isrefire,"
  4582. + " organizationid,"
  4583. + " goodsid,"
  4584. + " goodscode,"
  4585. + " goodsname,"
  4586. + " userid,"
  4587. + " usercode,"
  4588. + " username,"
  4589. + " kilnid,"
  4590. + " kilncode,"
  4591. + " kilnname,"
  4592. + " kilncarid,"
  4593. + " kilncarcode,"
  4594. + " kilncarname,"
  4595. + " kilncarbatchno,"
  4596. + " kilncarposition,"
  4597. + " reworkprocedureid,"
  4598. + " reworkprocedurecode,"
  4599. + " reworkprocedurename,"
  4600. + " remarks,"
  4601. + " accountdate,"
  4602. + " accountid,"
  4603. + " GoodsLevelID,"
  4604. + " GoodsLevelTypeID,"
  4605. + " createuserid,"
  4606. + " updateuserid,"
  4607. + " GroutingDate,"
  4608. + " GroutingUserID,"
  4609. + " GroutingUserCode,"
  4610. + " GroutingNum,"
  4611. + " GroutingMouldCode,"
  4612. + " MouldCode,"
  4613. + "GroutingDailyID,"
  4614. + "GroutingDailyDetailID,"
  4615. + "GroutingLineID,"
  4616. + " GroutingLineCode,"
  4617. + "GroutingLineName,"
  4618. + "GMouldTypeID,"
  4619. + "CanManyTimes,"
  4620. + "GroutingLineDetailID,"
  4621. + "SpecialRepairflag,"
  4622. + "ClassesSettingID,"
  4623. + "LogoID,"
  4624. + "CheckTime"
  4625. + ")"
  4626. + " values"
  4627. + " (:productiondataid,"
  4628. + " :barcode,"
  4629. + " :centralizedbatchno,"
  4630. + " :productionlineid,"
  4631. + " :productionlinecode,"
  4632. + " :productionlinename,"
  4633. + " :procedureid,"
  4634. + " :procedurecode,"
  4635. + " :procedurename,"
  4636. + " :proceduremodel,"
  4637. + " :modeltype,"
  4638. + " :piecetype,"
  4639. + " :isreworked,"
  4640. + " :nodetype,"
  4641. + " :ispublicbody,"
  4642. + " :isrefire,"
  4643. + " :organizationid,"
  4644. + " :goodsid,"
  4645. + " :goodscode,"
  4646. + " :goodsname,"
  4647. + " :userid,"
  4648. + " :usercode,"
  4649. + " :username,"
  4650. + " :kilnid,"
  4651. + " :kilncode,"
  4652. + " :kilnname,"
  4653. + " :kilncarid,"
  4654. + " :kilncarcode,"
  4655. + " :kilncarname,"
  4656. + " :kilncarbatchno,"
  4657. + " :kilncarposition,"
  4658. + " :reworkprocedureid,"
  4659. + " :reworkprocedurecode,"
  4660. + " :reworkprocedurename,"
  4661. + " :remarks,"
  4662. + " :accountdata,"
  4663. + " :accountid,"
  4664. + " :GoodsLevelID,"
  4665. + " :GoodsLevelTypeID,"
  4666. + " :createuserid,"
  4667. + " :updateuserid,"
  4668. + " :groutingdate,"
  4669. + " :groutinguserid,"
  4670. + " :groutingusercode,"
  4671. + " :groutingnum,"
  4672. + " :groutingmouldcode,"
  4673. + " :mouldcode,"
  4674. + ":groutingdailyid,"
  4675. + ":groutingdailydetailid,"
  4676. + ":groutinglineid,"
  4677. + " :groutinglinecode,"
  4678. + ":groutinglinename,"
  4679. + ":gmouldtypeid,"
  4680. + ":canmanytimes,"
  4681. + ":groutinglinedetailid,"
  4682. + ":specialRepairflag,"
  4683. + ":classesSettingID,"
  4684. + ":logoid,";
  4685. if (checkTime == null)
  4686. {
  4687. sql = sql + "sysdate";
  4688. }
  4689. else
  4690. {
  4691. sql = sql + ":checkTime";
  4692. }
  4693. sql = sql + ")";
  4694. #endregion
  4695. #region OracleParameter
  4696. OracleParameter[] paras = null;
  4697. if (checkTime != null)
  4698. {
  4699. paras = new OracleParameter[] {
  4700. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4701. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4702. new OracleParameter(":barcode",productionData.Barcode),
  4703. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4704. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4705. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4706. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4707. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4708. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4709. new OracleParameter(":procedurename",productionData.ProcedureName),
  4710. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4711. new OracleParameter(":modeltype",productionData.ModelType),
  4712. new OracleParameter(":piecetype",productionData.PieceType),
  4713. new OracleParameter(":isreworked",productionData.IsReworked),
  4714. new OracleParameter(":nodetype",productionData.NodeType),
  4715. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4716. new OracleParameter(":isrefire",productionData.IsReFire),
  4717. new OracleParameter(":organizationid",productionData.OrganizationID),
  4718. new OracleParameter(":goodsid",productionData.GoodsID),
  4719. new OracleParameter(":goodscode",productionData.GoodsCode),
  4720. new OracleParameter(":goodsname",productionData.GoodsName),
  4721. new OracleParameter(":userid",productionData.UserID),
  4722. new OracleParameter(":usercode",productionData.UserCode),
  4723. new OracleParameter(":username",productionData.UserName),
  4724. new OracleParameter(":kilnid",productionData.KilnID),
  4725. new OracleParameter(":kilncode",productionData.KilnCode),
  4726. new OracleParameter(":kilnname",productionData.KilnName),
  4727. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4728. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4729. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4730. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4731. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4732. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4733. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4734. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4735. new OracleParameter(":remarks",productionData.Remarks),
  4736. new OracleParameter(":accountdata",accountDate),
  4737. new OracleParameter(":accountid",sUserInfo.AccountID),
  4738. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4739. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4740. new OracleParameter(":createuserid",sUserInfo.UserID),
  4741. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4742. new OracleParameter(":groutingdate",GroutingDate),
  4743. new OracleParameter(":groutinguserid",GroutingUserID),
  4744. new OracleParameter(":groutingusercode",GroutingUserCode),
  4745. new OracleParameter(":groutingnum",GroutingNum),
  4746. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4747. new OracleParameter(":mouldcode",MouldCode),
  4748. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4749. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4750. new OracleParameter(":groutinglineid",GroutingLineID),
  4751. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4752. new OracleParameter(":groutinglinename",GroutingLineName),
  4753. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4754. new OracleParameter(":canmanytimes",CanManyTimes),
  4755. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4756. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4757. new OracleParameter(":logoid",logoid),
  4758. new OracleParameter(":checkTime",checkTime),
  4759. };
  4760. }
  4761. else
  4762. {
  4763. paras = new OracleParameter[] {
  4764. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4765. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4766. new OracleParameter(":barcode",productionData.Barcode),
  4767. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4768. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4769. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4770. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4771. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4772. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4773. new OracleParameter(":procedurename",productionData.ProcedureName),
  4774. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4775. new OracleParameter(":modeltype",productionData.ModelType),
  4776. new OracleParameter(":piecetype",productionData.PieceType),
  4777. new OracleParameter(":isreworked",productionData.IsReworked),
  4778. new OracleParameter(":nodetype",productionData.NodeType),
  4779. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4780. new OracleParameter(":isrefire",productionData.IsReFire),
  4781. new OracleParameter(":organizationid",productionData.OrganizationID),
  4782. new OracleParameter(":goodsid",productionData.GoodsID),
  4783. new OracleParameter(":goodscode",productionData.GoodsCode),
  4784. new OracleParameter(":goodsname",productionData.GoodsName),
  4785. new OracleParameter(":userid",productionData.UserID),
  4786. new OracleParameter(":usercode",productionData.UserCode),
  4787. new OracleParameter(":username",productionData.UserName),
  4788. new OracleParameter(":kilnid",productionData.KilnID),
  4789. new OracleParameter(":kilncode",productionData.KilnCode),
  4790. new OracleParameter(":kilnname",productionData.KilnName),
  4791. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4792. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4793. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4794. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4795. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4796. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4797. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4798. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4799. new OracleParameter(":remarks",productionData.Remarks),
  4800. new OracleParameter(":accountdata",accountDate),
  4801. new OracleParameter(":accountid",sUserInfo.AccountID),
  4802. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4803. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4804. new OracleParameter(":createuserid",sUserInfo.UserID),
  4805. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4806. new OracleParameter(":groutingdate",GroutingDate),
  4807. new OracleParameter(":groutinguserid",GroutingUserID),
  4808. new OracleParameter(":groutingusercode",GroutingUserCode),
  4809. new OracleParameter(":groutingnum",GroutingNum),
  4810. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4811. new OracleParameter(":mouldcode",MouldCode),
  4812. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4813. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4814. new OracleParameter(":groutinglineid",GroutingLineID),
  4815. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4816. new OracleParameter(":groutinglinename",GroutingLineName),
  4817. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4818. new OracleParameter(":canmanytimes",CanManyTimes),
  4819. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4820. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4821. new OracleParameter(":logoid",logoid),
  4822. };
  4823. }
  4824. #endregion
  4825. foreach (OracleParameter para in paras)
  4826. {
  4827. if (string.IsNullOrEmpty(para.Value + ""))
  4828. {
  4829. para.Value = DBNull.Value;
  4830. }
  4831. }
  4832. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4833. OutSpecialRepairflag = returnVal;
  4834. // 失败
  4835. if (result != Constant.INT_IS_ONE)
  4836. {
  4837. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4838. }
  4839. // 成功返回null
  4840. return null;
  4841. }
  4842. /// <summary>
  4843. /// 删除在产数据
  4844. /// </summary>
  4845. /// <param name="oracleTrConn">连接对象</param>
  4846. /// <param name="delInProductionEntity">在产数据对象</param>
  4847. /// <returns>string</returns>
  4848. /// <remarks>
  4849. /// 陈冰 2014.09.18 新建
  4850. /// </remarks>
  4851. private static string DeleteInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  4852. {
  4853. OracleParameter[] paras = new OracleParameter[] {
  4854. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4855. };
  4856. int result = 0;
  4857. //删除在产表之前,插入到产品回收表中
  4858. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  4859. {
  4860. OracleParameter[] parasPDA = new OracleParameter[] {
  4861. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4862. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4863. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4864. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  4865. };
  4866. string sqlInsert = @"insert into TP_PM_InProductionTrash
  4867. (
  4868. BarCode,
  4869. ProductionLineID,
  4870. ProductionLineCode,
  4871. ProductionLineName,
  4872. ProcedureModel,
  4873. ModelType,
  4874. DefectFlag,
  4875. ReworkProcedureID,
  4876. IsPublicBody,
  4877. IsReFire,
  4878. GoodsLevelID,
  4879. GoodsLevelTypeID,
  4880. GoodsID,
  4881. GoodsCode,
  4882. GoodsName,
  4883. UserID,
  4884. GroutingDailyID,
  4885. GroutingDailyDetailID,
  4886. GroutingDate,
  4887. GroutingLineID,
  4888. GroutingLineCode,
  4889. GroutingLineName,
  4890. GMouldTypeID,
  4891. CanManyTimes,
  4892. GroutingLineDetailID,
  4893. GroutingMouldCode,
  4894. MouldCode,
  4895. GroutingUserID,
  4896. GroutingUserCode,
  4897. GroutingNum,
  4898. Remarks,
  4899. KilnID,
  4900. KilnCode,
  4901. KilnName,
  4902. KilnCarID,
  4903. KilnCarCode,
  4904. KilnCarName,
  4905. KilnCarBatchNo,
  4906. KilnCarPosition,
  4907. AccountID,
  4908. ValueFlag,
  4909. CreateTime,
  4910. CreateUserID,
  4911. UpdateUserID,
  4912. SpecialRepairflag,
  4913. FlowProcedureID,
  4914. FlowProcedureTime,
  4915. ProcedureID,
  4916. ProcedureTime,
  4917. ProductionDataID,
  4918. logoid, ISREWORKFLAG, SEMICHECKID
  4919. )
  4920. select
  4921. BarCode,
  4922. ProductionLineID,
  4923. ProductionLineCode,
  4924. ProductionLineName,
  4925. ProcedureModel,
  4926. ModelType,
  4927. DefectFlag,
  4928. ReworkProcedureID,
  4929. IsPublicBody,
  4930. IsReFire,
  4931. GoodsLevelID,
  4932. GoodsLevelTypeID,
  4933. GoodsID,
  4934. GoodsCode,
  4935. GoodsName,
  4936. UserID,
  4937. GroutingDailyID,
  4938. GroutingDailyDetailID,
  4939. GroutingDate,
  4940. GroutingLineID,
  4941. GroutingLineCode,
  4942. GroutingLineName,
  4943. GMouldTypeID,
  4944. CanManyTimes,
  4945. GroutingLineDetailID,
  4946. GroutingMouldCode,
  4947. MouldCode,
  4948. GroutingUserID,
  4949. GroutingUserCode,
  4950. GroutingNum,
  4951. Remarks,
  4952. KilnID,
  4953. KilnCode,
  4954. KilnName,
  4955. KilnCarID,
  4956. KilnCarCode,
  4957. KilnCarName,
  4958. KilnCarBatchNo,
  4959. KilnCarPosition,
  4960. AccountID,
  4961. ValueFlag,
  4962. CreateTime,
  4963. :CreateUserID,
  4964. :UpdateUserID,
  4965. SpecialRepairflag,
  4966. :FlowProcedureID,
  4967. FlowProcedureTime,
  4968. :FlowProcedureID,
  4969. ProcedureTime,
  4970. ProductionDataID,
  4971. logoid, ISREWORKFLAG, SEMICHECKID
  4972. from TP_PM_InProduction
  4973. where barcode=:barcode
  4974. ";
  4975. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  4976. }
  4977. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  4978. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  4979. // 删除失败
  4980. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  4981. if (result == Constant.INT_IS_ZERO)
  4982. {
  4983. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4984. }
  4985. // 成功返回null
  4986. return null;
  4987. }
  4988. /// <summary>
  4989. /// 删除在产数据
  4990. /// </summary>
  4991. /// <param name="oracleTrConn">连接对象</param>
  4992. /// <param name="delInProductionEntity">在产数据对象</param>
  4993. /// <returns>string</returns>
  4994. /// <remarks>
  4995. /// 陈冰 2014.09.18 新建
  4996. /// </remarks>
  4997. private static string DeletePDAInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  4998. {
  4999. OracleParameter[] paras = new OracleParameter[] {
  5000. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5001. };
  5002. int result = 0;
  5003. //删除在产表之前,插入到产品回收表中
  5004. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  5005. {
  5006. OracleParameter[] parasPDA = new OracleParameter[] {
  5007. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5008. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  5009. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5010. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5011. new OracleParameter(":ProductionDataID",OracleDbType.Int32,delInProductionEntity.ProductionDataID,ParameterDirection.Input),
  5012. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,delInProductionEntity.GoodsLevelID,ParameterDirection.Input),
  5013. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,delInProductionEntity.GoodsLevelTypeID,ParameterDirection.Input),
  5014. };
  5015. //删除在产表前,在产表生产数据ID更新下,如不更新这样就不准了,例如,次品到次品 第一次不会影响,因为第一次TP_PM_InProductionTrash表里没有
  5016. // 如果第二次走次品到次品,才有效,下面的sqlInsert则没有效,因为在产表里没有数据插入不到回收表
  5017. string sqlupdate = "update TP_PM_InProductionTrash set ProductionDataID=:ProductionDataID where barcode=:barcode";
  5018. OracleParameter[] parasupdate = new OracleParameter[] {
  5019. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5020. new OracleParameter(":ProductionDataID",delInProductionEntity.ProductionDataID),
  5021. };
  5022. oracleTrConn.ExecuteNonQuery(sqlupdate, parasupdate);
  5023. string sqlInsert = @"insert into TP_PM_InProductionTrash
  5024. (
  5025. BarCode,
  5026. ProductionLineID,
  5027. ProductionLineCode,
  5028. ProductionLineName,
  5029. ProcedureModel,
  5030. ModelType,
  5031. DefectFlag,
  5032. ReworkProcedureID,
  5033. IsPublicBody,
  5034. IsReFire,
  5035. GoodsLevelID,
  5036. GoodsLevelTypeID,
  5037. GoodsID,
  5038. GoodsCode,
  5039. GoodsName,
  5040. UserID,
  5041. GroutingDailyID,
  5042. GroutingDailyDetailID,
  5043. GroutingDate,
  5044. GroutingLineID,
  5045. GroutingLineCode,
  5046. GroutingLineName,
  5047. GMouldTypeID,
  5048. CanManyTimes,
  5049. GroutingLineDetailID,
  5050. GroutingMouldCode,
  5051. MouldCode,
  5052. GroutingUserID,
  5053. GroutingUserCode,
  5054. GroutingNum,
  5055. Remarks,
  5056. KilnID,
  5057. KilnCode,
  5058. KilnName,
  5059. KilnCarID,
  5060. KilnCarCode,
  5061. KilnCarName,
  5062. KilnCarBatchNo,
  5063. KilnCarPosition,
  5064. AccountID,
  5065. ValueFlag,
  5066. CreateUserID,
  5067. UpdateUserID,
  5068. SpecialRepairflag,
  5069. FlowProcedureID,
  5070. FlowProcedureTime,
  5071. ProcedureID,
  5072. ProcedureTime,
  5073. ProductionDataID,
  5074. logoid, ISREWORKFLAG, SEMICHECKID
  5075. )
  5076. select
  5077. BarCode,
  5078. ProductionLineID,
  5079. ProductionLineCode,
  5080. ProductionLineName,
  5081. ProcedureModel,
  5082. ModelType,
  5083. DefectFlag,
  5084. ReworkProcedureID,
  5085. IsPublicBody,
  5086. IsReFire,
  5087. :GoodsLevelID,
  5088. :GoodsLevelTypeID,
  5089. GoodsID,
  5090. GoodsCode,
  5091. GoodsName,
  5092. UserID,
  5093. GroutingDailyID,
  5094. GroutingDailyDetailID,
  5095. GroutingDate,
  5096. GroutingLineID,
  5097. GroutingLineCode,
  5098. GroutingLineName,
  5099. GMouldTypeID,
  5100. CanManyTimes,
  5101. GroutingLineDetailID,
  5102. GroutingMouldCode,
  5103. MouldCode,
  5104. GroutingUserID,
  5105. GroutingUserCode,
  5106. GroutingNum,
  5107. Remarks,
  5108. KilnID,
  5109. KilnCode,
  5110. KilnName,
  5111. KilnCarID,
  5112. KilnCarCode,
  5113. KilnCarName,
  5114. KilnCarBatchNo,
  5115. KilnCarPosition,
  5116. AccountID,
  5117. ValueFlag,
  5118. :CreateUserID,
  5119. :UpdateUserID,
  5120. SpecialRepairflag,
  5121. :FlowProcedureID,
  5122. FlowProcedureTime,
  5123. :FlowProcedureID,
  5124. ProcedureTime,
  5125. :ProductionDataID,
  5126. logoid, ISREWORKFLAG, SEMICHECKID
  5127. from TP_PM_InProduction
  5128. where barcode=:barcode
  5129. ";
  5130. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  5131. }
  5132. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  5133. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  5134. // 删除失败
  5135. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  5136. if (result == Constant.INT_IS_ZERO)
  5137. {
  5138. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5139. }
  5140. // 成功返回null
  5141. return null;
  5142. }
  5143. /// <summary>
  5144. /// 根据窑车ID 删除窑车产品
  5145. /// </summary>
  5146. /// <param name="oracleTrConn">数据连接</param>
  5147. /// <param name="pKilnCarID">窑车ID</param>
  5148. /// <returns>
  5149. /// 张国印 2014.10.04 新建
  5150. /// </returns>
  5151. private static string DeleteKilnCarGoodsByKilnCarID(IDBTransaction oracleTrConn, int pKilnCarID)
  5152. {
  5153. string sql = "delete TP_PM_KilnCarGoods where KilnCarID = :pKilnCarID";
  5154. OracleParameter[] paras = new OracleParameter[] {
  5155. new OracleParameter(":pKilnCarID", OracleDbType.Int32, pKilnCarID, ParameterDirection.Input),
  5156. };
  5157. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5158. // 删除失败
  5159. if (result <= Constant.INT_IS_ZERO)
  5160. {
  5161. return string.Format(Messages.MSG_CMN_W001, "窑车产品", "保存");
  5162. }
  5163. // 成功返回null
  5164. return null;
  5165. }
  5166. /// <summary>
  5167. /// 添加产成品
  5168. /// </summary>
  5169. /// <param name="oracleTrConn">连接对象</param>
  5170. /// <param name="finishedProduct">产成品对象</param>
  5171. /// <param name="sUserInfo">用户基本信息</param>
  5172. /// <returns>string</returns>
  5173. /// <remarks>
  5174. /// 陈冰 2014.09.18 新建
  5175. /// </remarks>
  5176. private static string AddFinishedProduct(IDBTransaction oracleTrConn,
  5177. FinishedProductEntity finishedProduct, SUserInfo sUserInfo
  5178. , string finishedloadbatchno)
  5179. {
  5180. List<OracleParameter> paras = new List<OracleParameter>();
  5181. string sql = "";
  5182. #region
  5183. // add 2015/11/16
  5184. // if (finishedProduct.LogoID != null && Convert.ToInt32(finishedProduct.LogoID) > 0)
  5185. // {
  5186. // #region SQL
  5187. // //废弃
  5188. // sql = " insert into tp_pm_finishedproduct"
  5189. // + " (barcode, "
  5190. // + " productionlineid, "
  5191. // + " productionlinecode, "
  5192. // + " productionlinename, "
  5193. // + " ispublicbody, "
  5194. // + " isrefire, "
  5195. // + " GoodsLevelID, "
  5196. // + " GoodsLevelTypeID, "
  5197. // + " goodsid, "
  5198. // + " goodscode, "
  5199. // + " goodsname, "
  5200. // + " groutingdailyid, "
  5201. // + " groutingdailydetailid, "
  5202. // + " groutingdate, "
  5203. // + " groutinglineid, "
  5204. // + " groutinglinecode, "
  5205. // + " groutinglinename, "
  5206. // + " gmouldtypeid, "
  5207. // + " groutinglinedetailid, "
  5208. // + " groutingmouldcode, "
  5209. // + " mouldcode, "
  5210. // + " accountdate, "
  5211. // + " accountid, "
  5212. // + " createuserid, "
  5213. // + " updateuserid,"
  5214. // + " groutinguserid, "
  5215. // + " groutingusercode, "
  5216. // + " groutingnum, "
  5217. // + " kilnid, "
  5218. // + " kilncode, "
  5219. // + " kilnname, "
  5220. // + " kilncarid, "
  5221. // + " kilncarcode, "
  5222. // + " kilncarname, "
  5223. // + " kilncarbatchno, "
  5224. // + " kilncarposition, "
  5225. // + " specialRepairflag, "
  5226. // + " logoid "
  5227. // + ") "
  5228. // + " select barcode, "
  5229. // + " productionlineid, "
  5230. // + " productionlinecode, "
  5231. // + " productionlinename, "
  5232. // + " ispublicbody, "
  5233. // + " isrefire, ";
  5234. // #region 产品等级
  5235. // //if (finishedProduct.GoodsGrade == null)
  5236. // //{
  5237. // // sql = sql + " goodsgrade,";
  5238. // //}
  5239. // //// 最后一个工序如果是检验工序,可更改产品等级
  5240. // //else
  5241. // //{
  5242. // // sql = sql + " :goodsgrade, ";
  5243. // // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5244. // //}
  5245. // //如果包装时,产成品未走过成检,则直接视为正品
  5246. // int? GoodsLevelTypeID = null;
  5247. // int? GoodsLevelID = null;
  5248. // if (finishedProduct.GoodsLevelID == null)
  5249. // {
  5250. // string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5251. // (
  5252. // select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5253. // ") and AccountID=" + sUserInfo.AccountID;
  5254. // DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5255. // if (ds != null && ds.Tables[0].Rows.Count > 0)
  5256. // {
  5257. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5258. // {
  5259. // if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5260. // {
  5261. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5262. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5263. // }
  5264. // else
  5265. // {
  5266. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5267. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5268. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5269. // {
  5270. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5271. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5272. // }
  5273. // }
  5274. // }
  5275. // }
  5276. // else
  5277. // {
  5278. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5279. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5280. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5281. // {
  5282. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5283. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5284. // }
  5285. // }
  5286. // }
  5287. // if (finishedProduct.GoodsLevelID == null)
  5288. // {
  5289. // //sql = sql + " GoodsLevelID,";
  5290. // // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5291. // ////// sql = sql + @"
  5292. // ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5293. // ////// (
  5294. // ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5295. // ////// ) and AccountID=:AccountID),";
  5296. // sql = sql + GoodsLevelID.ToString() + " ,";
  5297. // }
  5298. // // 最后一个工序如果是检验工序,可更改产品等级
  5299. // else
  5300. // {
  5301. // sql = sql + " :GoodsLevelID, ";
  5302. // paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5303. // }
  5304. // if (finishedProduct.GoodsLevelTypeID == null)
  5305. // {
  5306. // //sql = sql + " GoodsLevelTypeID,";
  5307. // sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5308. // }
  5309. // // 最后一个工序如果是检验工序,可更改产品等级
  5310. // else
  5311. // {
  5312. // sql = sql + " :GoodsLevelTypeID, ";
  5313. // paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5314. // }
  5315. // #endregion
  5316. // sql = sql + " goodsid, "
  5317. // + " goodscode, "
  5318. // + " goodsname, "
  5319. // + " groutingdailyid, "
  5320. // + " groutingdailydetailid, "
  5321. // + " groutingdate, "
  5322. // + " groutinglineid, "
  5323. // + " groutinglinecode, "
  5324. // + " groutinglinename, "
  5325. // + " gmouldtypeid, "
  5326. // + " groutinglinedetailid, "
  5327. // + " groutingmouldcode, "
  5328. // + " mouldcode, "
  5329. // + " fun_cmn_getaccountdate(accountid), "
  5330. // + " accountid, "
  5331. // + " :createuserid, "
  5332. // + " :updateuserid, "
  5333. // + " groutinguserid, "
  5334. // + " groutingusercode, "
  5335. // + " groutingnum, "
  5336. // + " kilnid, "
  5337. // + " kilncode, "
  5338. // + " kilnname, "
  5339. // + " kilncarid, "
  5340. // + " kilncarcode, "
  5341. // + " kilncarname, "
  5342. // + " kilncarbatchno, "
  5343. // + " kilncarposition, "
  5344. // + " specialRepairflag, "
  5345. // + " :logoid "
  5346. // + " from tp_pm_inproduction "
  5347. // + " where Barcode=:barcode";
  5348. // #endregion
  5349. // paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5350. // paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5351. // paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5352. // paras.Add(new OracleParameter(":logoid", finishedProduct.LogoID));
  5353. // // end 2015/11/16
  5354. // }
  5355. // else
  5356. // {
  5357. #endregion
  5358. #region SQL
  5359. //废弃
  5360. sql = " insert into tp_pm_finishedproduct"
  5361. + " (barcode, "
  5362. + " productionlineid, "
  5363. + " productionlinecode, "
  5364. + " productionlinename, "
  5365. + " ispublicbody, "
  5366. + " isrefire, "
  5367. + " GoodsLevelID, "
  5368. + " GoodsLevelTypeID, "
  5369. + " goodsid, "
  5370. + " goodscode, "
  5371. + " goodsname, "
  5372. + " groutingdailyid, "
  5373. + " groutingdailydetailid, "
  5374. + " groutingdate, "
  5375. + " groutinglineid, "
  5376. + " groutinglinecode, "
  5377. + " groutinglinename, "
  5378. + " gmouldtypeid, "
  5379. + " groutinglinedetailid, "
  5380. + " groutingmouldcode, "
  5381. + " mouldcode, "
  5382. + " accountdate, "
  5383. + " accountid, "
  5384. + " createuserid, "
  5385. + " updateuserid,"
  5386. + " groutinguserid, "
  5387. + " groutingusercode, "
  5388. + " groutingnum, "
  5389. + " kilnid, "
  5390. + " kilncode, "
  5391. + " kilnname, "
  5392. + " kilncarid, "
  5393. + " kilncarcode, "
  5394. + " kilncarname, "
  5395. + " kilncarbatchno, "
  5396. + " kilncarposition, "
  5397. + " specialRepairflag, "
  5398. + " logoid,OnlyCode ,finishedloadbatchno"
  5399. + ") "
  5400. + " select barcode, "
  5401. + " productionlineid, "
  5402. + " productionlinecode, "
  5403. + " productionlinename, "
  5404. + " ispublicbody, "
  5405. + " isrefire, ";
  5406. #region 产品等级
  5407. //if (finishedProduct.GoodsGrade == null)
  5408. //{
  5409. // sql = sql + " goodsgrade,";
  5410. //}
  5411. //// 最后一个工序如果是检验工序,可更改产品等级
  5412. //else
  5413. //{
  5414. // sql = sql + " :goodsgrade, ";
  5415. // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5416. //}
  5417. //如果包装时,产成品未走过成检,则直接视为正品
  5418. int? GoodsLevelTypeID = null;
  5419. int? GoodsLevelID = null;
  5420. if (finishedProduct.GoodsLevelID == null)
  5421. {
  5422. string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5423. (
  5424. select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5425. ") and AccountID=" + sUserInfo.AccountID;
  5426. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5427. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5428. {
  5429. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5430. {
  5431. if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5432. {
  5433. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5434. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5435. }
  5436. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 4)//正品
  5437. {
  5438. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5439. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5440. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5441. {
  5442. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5443. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5444. }
  5445. }
  5446. else
  5447. {
  5448. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5449. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5450. }
  5451. }
  5452. }
  5453. else
  5454. {
  5455. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5456. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5457. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5458. {
  5459. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5460. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5461. }
  5462. }
  5463. }
  5464. if (finishedProduct.GoodsLevelID == null)
  5465. {
  5466. //sql = sql + " GoodsLevelID,";
  5467. // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5468. ////// sql = sql + @"
  5469. ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5470. ////// (
  5471. ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5472. ////// ) and AccountID=:AccountID),";
  5473. sql = sql + GoodsLevelID.ToString() + " ,";
  5474. }
  5475. // 最后一个工序如果是检验工序,可更改产品等级
  5476. else
  5477. {
  5478. sql = sql + " :GoodsLevelID, ";
  5479. paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5480. }
  5481. if (finishedProduct.GoodsLevelTypeID == null)
  5482. {
  5483. //sql = sql + " GoodsLevelTypeID,";
  5484. sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5485. }
  5486. // 最后一个工序如果是检验工序,可更改产品等级
  5487. else
  5488. {
  5489. sql = sql + " :GoodsLevelTypeID, ";
  5490. paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5491. }
  5492. #endregion
  5493. sql = sql + " goodsid, "
  5494. + " goodscode, "
  5495. + " goodsname, "
  5496. + " groutingdailyid, "
  5497. + " groutingdailydetailid, "
  5498. + " groutingdate, "
  5499. + " groutinglineid, "
  5500. + " groutinglinecode, "
  5501. + " groutinglinename, "
  5502. + " gmouldtypeid, "
  5503. + " groutinglinedetailid, "
  5504. + " groutingmouldcode, "
  5505. + " mouldcode, "
  5506. + " fun_cmn_getaccountdate(accountid), "
  5507. + " accountid, "
  5508. + " :createuserid, "
  5509. + " :updateuserid, "
  5510. + " groutinguserid, "
  5511. + " groutingusercode, "
  5512. + " groutingnum, "
  5513. + " kilnid, "
  5514. + " kilncode, "
  5515. + " kilnname, "
  5516. + " kilncarid, "
  5517. + " kilncarcode, "
  5518. + " kilncarname, "
  5519. + " kilncarbatchno, "
  5520. + " kilncarposition, "
  5521. + " specialRepairflag, "
  5522. + " logoid, "
  5523. + " (select OnlyCode from tp_pm_groutingdailydetail where barcode=:barcode), :finishedloadbatchno"
  5524. + " from tp_pm_inproduction "
  5525. + " where Barcode=:barcode";
  5526. #endregion
  5527. paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5528. paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5529. paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5530. paras.Add(new OracleParameter(":finishedloadbatchno", finishedloadbatchno));
  5531. //}
  5532. //paras.Add(new OracleParameter(":AccountID", sUserInfo.AccountID));
  5533. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  5534. // 保存失败
  5535. if (result != Constant.INT_IS_ONE)
  5536. {
  5537. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5538. }
  5539. // 保存成功返回null
  5540. return null;
  5541. }
  5542. /// <summary>
  5543. /// 添加在产产品数据
  5544. /// </summary>
  5545. /// <param name="oracleTrConn">连接对象</param>
  5546. /// <param name="inProduction">在产产品实体类</param>
  5547. /// <param name="sUserInfo">用户基本信息</param>
  5548. /// <param name="isSendBody">是否交坯</param>
  5549. /// <returns>string</returns>
  5550. /// <remarks>
  5551. /// 陈冰 2014.09.18 新建
  5552. /// </remarks>
  5553. private static string AddInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo, DataSet _dsDataset, bool isSendBody = false)
  5554. {
  5555. #region SQL
  5556. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  5557. OracleParameter[] parasExist = new OracleParameter[] {
  5558. new OracleParameter(":barcode",inProduction.BarCode.Trim()),
  5559. };
  5560. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  5561. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  5562. {
  5563. // 获取生产线ID,生产线名称,生产编码
  5564. string sql = @"select TP_PC_ProductionLine.ProductionLineID,TP_PC_ProductionLine.ProductionLineCode,TP_PC_ProductionLine.ProductionLineName
  5565. from TP_PC_Procedure inner join TP_PC_ProductionLine
  5566. on TP_PC_Procedure.ProductionLineID=TP_PC_ProductionLine.ProductionLineID
  5567. where TP_PC_Procedure.ProcedureID=:ProcedureID
  5568. ";
  5569. OracleParameter[] paras = new OracleParameter[] {
  5570. new OracleParameter(":ProcedureID",inProduction.FlowProcedureID),
  5571. };
  5572. dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5573. #region 获取生产线信息
  5574. int ProductionLineID = 0;//生产线ID
  5575. string ProductionLineCode = "", ProductionLineName = "";//生产线名称,编码
  5576. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5577. {
  5578. ProductionLineID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["ProductionLineID"]);
  5579. ProductionLineCode = dsresult.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  5580. ProductionLineName = dsresult.Tables[0].Rows[0]["ProductionLineName"].ToString();
  5581. }
  5582. #endregion
  5583. #region 获取注浆信息
  5584. // sql = @"select
  5585. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  5586. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  5587. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  5588. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  5589. // TP_PM_GroutingDailyDetail.MouldCode,
  5590. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  5591. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  5592. // TP_PM_GroutingDailyDetail.GroutingLineID,
  5593. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  5594. // TP_PM_GroutingDailyDetail.GroutingLineName,
  5595. // TP_PM_GroutingDaily.GMouldTypeID,
  5596. // TP_PM_GroutingDaily.CanManyTimes,
  5597. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  5598. // TP_PM_GroutingDailyDetail.SpecialRepairflag,
  5599. // TP_PM_GroutingDailyDetail.GoodsID,
  5600. // TP_PM_GroutingDailyDetail.GoodsCode,
  5601. // TP_PM_GroutingDailyDetail.GoodsName,
  5602. // TP_PM_GroutingDailyDetail.GroutingDate
  5603. // from TP_PM_GroutingDaily
  5604. // inner join TP_PM_GroutingDailyDetail
  5605. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  5606. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5607. // sql = @"select
  5608. // UserID as GroutingUserID,
  5609. // UserCode as GroutingUserCode,
  5610. // GroutingCount as GroutingNum,
  5611. // GroutingMouldCode,
  5612. // MouldCode,
  5613. // GroutingDailyID,
  5614. // GroutingDailyDetailID,
  5615. // GroutingLineID,
  5616. // GroutingLineCode,
  5617. // GroutingLineName,
  5618. // GroutingLineDetailID,
  5619. // SpecialRepairflag,
  5620. // GoodsID,
  5621. // GoodsCode,
  5622. // GoodsName,
  5623. // GroutingDate,
  5624. // (select GMouldTypeID
  5625. // from TP_PM_GroutingDaily
  5626. // where TP_PM_GroutingDaily.GroutingDailyID =
  5627. // TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  5628. // (select CanManyTimes
  5629. // from TP_PM_GroutingDaily
  5630. // where TP_PM_GroutingDaily.GroutingDailyID =
  5631. // TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes
  5632. // from TP_PM_GroutingDailyDetail
  5633. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5634. // sql = @"select
  5635. // GroutingUserID,
  5636. // GroutingUserCode,
  5637. // GroutingNum,
  5638. // GroutingMouldCode,
  5639. // MouldCode,
  5640. // GroutingDailyID,
  5641. // GroutingDailyDetailID,
  5642. // GroutingLineID,
  5643. // GroutingLineCode,
  5644. // GroutingLineName,
  5645. // GroutingLineDetailID,
  5646. // SpecialRepairflag,
  5647. // GoodsID,
  5648. // GoodsCode,
  5649. // GoodsName,
  5650. // GroutingDate,
  5651. // GMouldTypeID
  5652. // CanManyTimes
  5653. // from tp_pm_productiondata
  5654. // where tp_pm_productiondata.barcode=:barcode";
  5655. // paras = new OracleParameter[] {
  5656. // new OracleParameter(":barcode",inProduction.BarCode),
  5657. // };
  5658. dsresult = _dsDataset;
  5659. //dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5660. // 产品ID, 注浆登记ID, 注浆明细ID, 成型线ID 成型线类型ID 能否多次注浆 成型生产线明细ID
  5661. int goodsid = 0, groutingDailyID = 0, groutingdailydetailid = 0, groutinglineid = 0, gMouldTypeID = 0, canManyTimes = 0, groutingLineDetailID = 0;
  5662. // 产品编码, 产品名称 成型线编码 成型线名称 注浆模具编号 模具编号
  5663. string goodsCode = "", goodsName = "", groutingLineCode = "", groutingLineName = "", groutingmouldcode = "", mouldCode = "";
  5664. DateTime? groutingdate = null; // 注浆日期
  5665. int groutingUserID = 0, groutingNum = 0; //注浆工号ID,注浆次数
  5666. string groutingUserCode = "";//注浆工号
  5667. int? LogoID = null;
  5668. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5669. {
  5670. goodsid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GoodsID"]);
  5671. groutingDailyID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyID"]);
  5672. groutingdailydetailid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  5673. groutinglineid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineID"]);
  5674. groutingLineDetailID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineDetailID"]);
  5675. groutingdate = Convert.ToDateTime(dsresult.Tables[0].Rows[0]["GroutingDate"]);
  5676. goodsCode = dsresult.Tables[0].Rows[0]["GoodsCode"].ToString();
  5677. goodsName = dsresult.Tables[0].Rows[0]["GoodsName"].ToString();
  5678. groutingLineCode = dsresult.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  5679. groutingLineName = dsresult.Tables[0].Rows[0]["GroutingLineName"].ToString();
  5680. groutingmouldcode = dsresult.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  5681. mouldCode = dsresult.Tables[0].Rows[0]["MouldCode"].ToString();
  5682. groutingUserCode = dsresult.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  5683. groutingUserID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingUserID"]);
  5684. gMouldTypeID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GMouldTypeID"]);
  5685. canManyTimes = Convert.ToInt32(dsresult.Tables[0].Rows[0]["CanManyTimes"]);
  5686. groutingNum = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingNum"]);
  5687. if (dsresult.Tables[0].Rows[0]["logoid"].ToString() != "")
  5688. {
  5689. LogoID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["logoid"]);
  5690. }
  5691. }
  5692. #endregion
  5693. sql = " insert into tp_pm_inproduction"
  5694. + " ( barcode,"
  5695. + " productionlineid,"
  5696. + " productionlinecode,"
  5697. + " productionlinename,"
  5698. + " proceduremodel,"
  5699. + " modeltype,"
  5700. + " ispublicbody,"
  5701. + " goodsid,"
  5702. + " goodscode,"
  5703. + " goodsname,"
  5704. + " userid,"
  5705. + " groutingdailyid,"
  5706. + " groutingdailydetailid,"
  5707. + " groutingdate,"
  5708. + " groutinglineid,"
  5709. + " groutinglinecode,"
  5710. + " groutinglinename,"
  5711. + " gmouldtypeid,"
  5712. + " canmanytimes,"
  5713. + " groutinglinedetailid,"
  5714. + " groutingmouldcode,"
  5715. + " mouldcode,"
  5716. + " accountid,"
  5717. + " createuserid,"
  5718. + " updateuserid,GoodsLevelTypeID,"
  5719. + " GroutingUserID,"
  5720. + " GroutingUserCode,"
  5721. + " GroutingNum,"
  5722. + " SpecialRepairflag,"
  5723. + " FlowProcedureID,"
  5724. + " FlowProcedureTime,"
  5725. + " ProcedureID,"
  5726. + " ProcedureTime,"
  5727. + " ProductionDataID,logoid"
  5728. + " ) values ("
  5729. + " :barcode,"
  5730. + " :productionlineid,"
  5731. + " :productionlinecode,"
  5732. + " :productionlinename,"
  5733. + " :procedureModel,"
  5734. + " :modelType,"
  5735. + " :isPublicBody,"
  5736. + " :goodsid,"
  5737. + " :goodscode,"
  5738. + " :goodsname,"
  5739. + " :userID,"
  5740. + " :groutingdailyid,"
  5741. + " :groutingdailydetailid,"
  5742. + " :groutingdate,"
  5743. + " :groutinglineid,"
  5744. + " :groutinglinecode,"
  5745. + " :groutinglinename,"
  5746. + " :gmouldtypeid,"
  5747. + " :canmanytimes,"
  5748. + " :groutinglinedetailid,"
  5749. + " :groutingmouldcode,"
  5750. + " :mouldcode,"
  5751. + " :accountID,"
  5752. + " :createUserID,"
  5753. + " :updateUserID,"
  5754. + " null,"
  5755. + " :groutinguserid,"
  5756. + " :groutingusercode,"
  5757. + " :groutingnum,"
  5758. + " :specialRepairflag,"
  5759. + " :flowProcedureID,"
  5760. + " sysdate,"
  5761. + " :procedureID,"
  5762. + " sysdate,"
  5763. + " :productionDataID,:logoid"
  5764. + " ) ";
  5765. #endregion
  5766. paras = new OracleParameter[] {
  5767. new OracleParameter(":procedureModel",inProduction.ProcedureModel),
  5768. new OracleParameter(":modelType",inProduction.ModelType),
  5769. new OracleParameter(":isPublicBody",inProduction.IsPublicBody),
  5770. new OracleParameter(":userID",inProduction.UserID),
  5771. new OracleParameter(":accountID",sUserInfo.AccountID),
  5772. new OracleParameter(":createUserID",sUserInfo.UserID),
  5773. new OracleParameter(":updateUserID",sUserInfo.UserID),
  5774. new OracleParameter(":barcode",inProduction.BarCode),
  5775. new OracleParameter(":specialRepairflag",inProduction.SpecialRepairflag),
  5776. new OracleParameter(":productionlineid",ProductionLineID),//---开始赋值
  5777. new OracleParameter(":productionlinecode",ProductionLineCode),
  5778. new OracleParameter(":productionlinename",ProductionLineName),
  5779. new OracleParameter(":goodsid",goodsid),
  5780. new OracleParameter(":goodscode",goodsCode),
  5781. new OracleParameter(":goodsname",goodsName),
  5782. new OracleParameter(":groutingdailyid",groutingDailyID),
  5783. new OracleParameter(":groutingdailydetailid",groutingdailydetailid),
  5784. new OracleParameter(":groutingdate",groutingdate),
  5785. new OracleParameter(":groutinglineid",groutinglineid),
  5786. new OracleParameter(":groutinglinecode",groutingLineCode),
  5787. new OracleParameter(":groutinglinename",groutingLineName),
  5788. new OracleParameter(":gmouldtypeid",gMouldTypeID),
  5789. new OracleParameter(":canmanytimes",canManyTimes),
  5790. new OracleParameter(":groutinglinedetailid",groutingLineDetailID),
  5791. new OracleParameter(":groutingmouldcode",groutingmouldcode),
  5792. new OracleParameter(":mouldcode",mouldCode),
  5793. new OracleParameter(":groutinguserid",groutingUserID),
  5794. new OracleParameter(":groutingusercode",groutingUserCode),
  5795. new OracleParameter(":groutingnum",groutingNum),
  5796. new OracleParameter(":flowProcedureID",inProduction.FlowProcedureID),
  5797. new OracleParameter(":procedureID",inProduction.FlowProcedureID),
  5798. new OracleParameter(":productionDataID",inProduction.ProductionDataID),
  5799. new OracleParameter(":logoid",LogoID),
  5800. };
  5801. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5802. // 保存失败
  5803. if (result != Constant.INT_IS_ONE)
  5804. {
  5805. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5806. }
  5807. //xuwei fix begin
  5808. //2019-09-17
  5809. //更新用过条码
  5810. //交坯=4,在产=3
  5811. string barcodeStatus = isSendBody ? "4" : "3";
  5812. string updateUsedBarCode = "update TP_PM_USEDBARCODE set barcodestatus=" + barcodeStatus + " where barcode='" + inProduction.BarCode + "'";
  5813. oracleTrConn.ExecuteNonQuery(updateUsedBarCode);
  5814. //xuwei end
  5815. }
  5816. // 保存成功返回null
  5817. return null;
  5818. }
  5819. /// <summary>
  5820. /// 根据最大生产数据ID,获取窑车窑炉等信息
  5821. /// </summary>
  5822. /// <param name="oracleTrConn"></param>
  5823. /// <param name="barcode"></param>
  5824. /// <param name="sUserInfo"></param>
  5825. /// <returns></returns>
  5826. private static DataSet GetFinishCheckKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  5827. {
  5828. string sql = @"select
  5829. KilnID,
  5830. KilnCode,
  5831. KilnName,
  5832. KilnCarID,
  5833. KilnCarCode,
  5834. KilnCarName,
  5835. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5836. KilnCarPosition
  5837. from tp_pm_inproduction where barcode=:barcode
  5838. union
  5839. select
  5840. KilnID,
  5841. KilnCode,
  5842. KilnName,
  5843. KilnCarID,
  5844. KilnCarCode,
  5845. KilnCarName,
  5846. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5847. KilnCarPosition
  5848. from TP_PM_InProductionTrash where barcode=:barcode
  5849. ";
  5850. try
  5851. {
  5852. IDataParameter[] paras = new OracleParameter[]
  5853. {
  5854. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  5855. };
  5856. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  5857. if (returnDs != null
  5858. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  5859. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  5860. {
  5861. return returnDs;
  5862. }
  5863. else
  5864. {
  5865. return null;
  5866. }
  5867. }
  5868. catch (Exception ex)
  5869. {
  5870. throw ex;
  5871. }
  5872. }
  5873. /// <summary>
  5874. /// 根据最大生产数据ID,获取窑车窑炉等信息
  5875. /// </summary>
  5876. /// <param name="oracleTrConn"></param>
  5877. /// <param name="barcode"></param>
  5878. /// <param name="sUserInfo"></param>
  5879. /// <returns></returns>
  5880. private static DataSet GetKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  5881. {
  5882. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  5883. // (
  5884. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  5885. // )";
  5886. // string sql = @"select
  5887. // KilnID,
  5888. // KilnCode,
  5889. // KilnName,
  5890. // KilnCarID,
  5891. // KilnCarCode,
  5892. // KilnCarName,
  5893. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5894. // KilnCarPosition
  5895. // from tp_pm_inproduction where barcode=:barcode
  5896. // union
  5897. // select
  5898. // KilnID,
  5899. // KilnCode,
  5900. // KilnName,
  5901. // KilnCarID,
  5902. // KilnCarCode,
  5903. // KilnCarName,
  5904. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5905. // KilnCarPosition
  5906. // from TP_PM_InProductionTrash where barcode=:barcode
  5907. //";
  5908. string sql = @"select
  5909. KilnID,
  5910. KilnCode,
  5911. KilnName,
  5912. KilnCarID,
  5913. KilnCarCode,
  5914. KilnCarName,
  5915. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5916. KilnCarPosition
  5917. from tp_pm_inproduction where barcode=:barcode
  5918. ";
  5919. try
  5920. {
  5921. IDataParameter[] paras = new OracleParameter[]
  5922. {
  5923. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  5924. };
  5925. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  5926. if (returnDs != null
  5927. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  5928. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  5929. {
  5930. return returnDs;
  5931. }
  5932. else
  5933. {
  5934. return null;
  5935. }
  5936. }
  5937. catch (Exception ex)
  5938. {
  5939. throw ex;
  5940. }
  5941. }
  5942. /// <summary>
  5943. /// 修改在产数据
  5944. /// </summary>
  5945. /// <param name="oracleTrConn">连接对象</param>
  5946. /// <param name="inProduction">在产数据实体类</param>
  5947. /// <param name="sUserInfo">用户基本信息</param>
  5948. /// <returns>string</returns>
  5949. /// <remarks>
  5950. /// 陈冰 2014.09.18 新建
  5951. /// </remarks>
  5952. private static string UpdateInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo)
  5953. {
  5954. List<OracleParameter> paras = new List<OracleParameter>();
  5955. //paras.Add(new OracleParameter(":completeProcedureID", inProduction.CompleteProcedureID));
  5956. paras.Add(new OracleParameter(":procedureModel", inProduction.ProcedureModel));
  5957. paras.Add(new OracleParameter(":modelType", inProduction.ModelType));
  5958. paras.Add(new OracleParameter(":defectFlag", inProduction.DefectFlag));
  5959. paras.Add(new OracleParameter(":reworkProcedureID", inProduction.ReworkProcedureID));
  5960. paras.Add(new OracleParameter(":flowprocedureid", inProduction.FlowProcedureID));
  5961. paras.Add(new OracleParameter(":procedureID", inProduction.ProcedureID));
  5962. paras.Add(new OracleParameter(":productionDataID", inProduction.ProductionDataID));
  5963. #region SQL
  5964. string sql = " update TP_PM_InProduction "
  5965. //+ " set CompleteProcedureID = :completeProcedureID,"
  5966. + "set ProcedureModel = :procedureModel,"
  5967. + " ModelType = :modelType,"
  5968. + " DefectFlag = :defectFlag,"
  5969. + " flowprocedureid = :flowprocedureid,"
  5970. + " flowproceduretime = sysdate,"
  5971. + " procedureID = :procedureID,"
  5972. + " procedureTime = sysdate,"
  5973. + " productionDataID = :productionDataID,"
  5974. // + " GoodsLevelTypeID = :GoodsLevelTypeID,"
  5975. // 扫码后,返修标识清除
  5976. + " isreworkflag = '0',"
  5977. + " ReworkProcedureID = :reworkProcedureID,";
  5978. #region 只有交坯工序是才传值更改公坯字段
  5979. if (inProduction.IsPublicBody != null)
  5980. {
  5981. sql = sql + " IsPublicBody = :isPublicBody,";
  5982. paras.Add(new OracleParameter(":isPublicBody", inProduction.IsPublicBody));
  5983. }
  5984. #endregion
  5985. #region 只有走特定返工工序时才更改重烧字段
  5986. if (inProduction.IsReFire != null)
  5987. {
  5988. sql = sql + " IsReFire = :isReFire,";
  5989. paras.Add(new OracleParameter(":isReFire", inProduction.IsReFire));
  5990. }
  5991. #endregion
  5992. #region 只有成检时才更新产品分级字段
  5993. //if (inProduction.GoodsGrade != null)
  5994. //{
  5995. // sql = sql + " GoodsGrade = :goodsGrade,";
  5996. // paras.Add(new OracleParameter(":goodsGrade", inProduction.GoodsGrade));
  5997. //}
  5998. if (inProduction.GoodsLevelID != null)
  5999. {
  6000. sql = sql + " GoodsLevelID = :GoodsLevelID,";
  6001. paras.Add(new OracleParameter(":GoodsLevelID", inProduction.GoodsLevelID));
  6002. }
  6003. if (inProduction.GoodsLevelTypeID != null)
  6004. {
  6005. sql = sql + " GoodsLevelTypeID = :GoodsLevelTypeID,";
  6006. paras.Add(new OracleParameter(":GoodsLevelTypeID", inProduction.GoodsLevelTypeID));
  6007. }
  6008. #region 更新窑炉窑车属性
  6009. if (inProduction.ModelType == 1 || inProduction.ModelType == 2 || inProduction.ModelType == 3 || inProduction.ModelType == 4 || inProduction.ModelType == 6)
  6010. {
  6011. sql = sql + " KilnID = :KilnID,";
  6012. paras.Add(new OracleParameter(":KilnID", inProduction.KilnID));
  6013. sql = sql + " KilnCode = :KilnCode,";
  6014. paras.Add(new OracleParameter(":KilnCode", inProduction.KilnCode));
  6015. sql = sql + " KilnName = :KilnName,";
  6016. paras.Add(new OracleParameter(":KilnName", inProduction.KilnName));
  6017. sql = sql + " KilnCarID = :KilnCarID,";
  6018. paras.Add(new OracleParameter(":KilnCarID", inProduction.KilnCarID));
  6019. sql = sql + " KilnCarCode = :KilnCarCode,";
  6020. paras.Add(new OracleParameter(":KilnCarCode", inProduction.KilnCarCode));
  6021. sql = sql + " KilnCarName = :KilnCarName,";
  6022. paras.Add(new OracleParameter(":KilnCarName", inProduction.KilnCarName));
  6023. sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6024. paras.Add(new OracleParameter(":KilnCarBatchNo", inProduction.KilnCarBatchNo));
  6025. sql = sql + " KilnCarPosition = :KilnCarPosition,";
  6026. paras.Add(new OracleParameter(":KilnCarPosition", inProduction.KilnCarPosition));
  6027. }
  6028. else
  6029. {
  6030. //
  6031. ////////DataSet ds = GetKilnCarInfo(oracleTrConn, inProduction.BarCode, sUserInfo);
  6032. ////////if (ds != null)
  6033. ////////{
  6034. //////// if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  6035. //////// {
  6036. //////// sql = sql + " KilnID = :KilnID,";
  6037. //////// paras.Add(new OracleParameter(":KilnID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"])));
  6038. //////// sql = sql + " KilnCode = :KilnCode,";
  6039. //////// paras.Add(new OracleParameter(":KilnCode", ds.Tables[0].Rows[0]["KilnCode"].ToString()));
  6040. //////// sql = sql + " KilnName = :KilnName,";
  6041. //////// paras.Add(new OracleParameter(":KilnName", ds.Tables[0].Rows[0]["KilnName"].ToString()));
  6042. //////// sql = sql + " KilnCarID = :KilnCarID,";
  6043. //////// paras.Add(new OracleParameter(":KilnCarID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"])));
  6044. //////// sql = sql + " KilnCarCode = :KilnCarCode,";
  6045. //////// paras.Add(new OracleParameter(":KilnCarCode", ds.Tables[0].Rows[0]["KilnCarCode"].ToString()));
  6046. //////// sql = sql + " KilnCarName = :KilnCarName,";
  6047. //////// paras.Add(new OracleParameter(":KilnCarName", ds.Tables[0].Rows[0]["KilnCarName"].ToString()));
  6048. //////// sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6049. //////// paras.Add(new OracleParameter(":KilnCarBatchNo", ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString()));
  6050. //////// sql = sql + " KilnCarPosition = :KilnCarPosition,";
  6051. //////// paras.Add(new OracleParameter(":KilnCarPosition", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"])));
  6052. //////// }
  6053. ////////}
  6054. }
  6055. #endregion
  6056. #endregion
  6057. #region 更新在产商标
  6058. if (inProduction.LogoID != null)
  6059. {
  6060. sql = sql + " LogoID = :LogoID,";
  6061. paras.Add(new OracleParameter(":LogoID", inProduction.LogoID));
  6062. }
  6063. #endregion
  6064. sql = sql + " UserID = :userID,"
  6065. + " UpdateUserID = :updateUserID"
  6066. + " where Barcode = :barCode";
  6067. #endregion
  6068. paras.Add(new OracleParameter(":userID", inProduction.UserID));
  6069. paras.Add(new OracleParameter(":updateUserID", sUserInfo.UserID));
  6070. paras.Add(new OracleParameter(":barCode", inProduction.BarCode));
  6071. foreach (var para in paras)
  6072. {
  6073. if (para.Value + "" == "")
  6074. {
  6075. para.Value = DBNull.Value;
  6076. }
  6077. }
  6078. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  6079. // 保存失败
  6080. if (result != Constant.INT_IS_ONE)
  6081. {
  6082. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6083. }
  6084. // 保存成功返回null
  6085. return null;
  6086. }
  6087. /// <summary>
  6088. /// 校验条码有效
  6089. /// </summary>
  6090. /// <param name="oracleTrConn">连接对象</param>
  6091. /// <param name="procedureID">工序ID</param>
  6092. /// <param name="barcode">条码</param>
  6093. /// <param name="goodsID">返回的产品ID</param>
  6094. /// <param name="goodsCode">返回的产品Code</param>
  6095. /// <param name="goodsName">返回的产品名称</param>
  6096. /// <param name="groutingUserID">返回的注浆者ID</param>
  6097. /// <returns>string</returns>
  6098. /// <remarks>
  6099. /// 陈冰 2014.09.18 新建
  6100. /// </remarks>
  6101. private static string CheckBarcode(IDBTransaction oracleTrConn,
  6102. int procedureID,
  6103. string barcode,
  6104. out int goodsID,
  6105. out string goodsCode,
  6106. out string goodsName,
  6107. out string groutingUserCode,
  6108. SUserInfo sUserInfo
  6109. )
  6110. {
  6111. try
  6112. {
  6113. OracleParameter[] paras = new OracleParameter[]{
  6114. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  6115. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  6116. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  6117. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  6118. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6119. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6120. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  6121. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6122. };
  6123. oracleTrConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  6124. if (!"null".Equals(paras[3].Value + ""))
  6125. {
  6126. goodsID = Convert.ToInt32(paras[3].Value + "");
  6127. }
  6128. else
  6129. {
  6130. goodsID = 0;
  6131. }
  6132. goodsCode = paras[4].Value + "";
  6133. goodsName = paras[5].Value + "";
  6134. if (!"null".Equals(paras[6].Value + ""))
  6135. {
  6136. groutingUserCode = paras[6].Value + "";
  6137. }
  6138. else
  6139. {
  6140. groutingUserCode = null;
  6141. }
  6142. if ("null".Equals(paras[2].Value + ""))
  6143. {
  6144. return null;
  6145. }
  6146. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  6147. }
  6148. catch (Exception ex)
  6149. {
  6150. throw ex;
  6151. }
  6152. }
  6153. /// <summary>
  6154. /// 查询工序信息
  6155. /// </summary>
  6156. /// <param name="oracleTrConn">连接对象</param>
  6157. /// <param name="procedureID">工序ID</param>
  6158. /// <returns>工序实体</returns>
  6159. private static ProcedureEntity GetProcedurByID(IDBTransaction oracleTrConn, int procedureID)
  6160. {
  6161. ProcedureEntity procedureEntity = new ProcedureEntity();
  6162. string procsql = "pro_pm_searchProcedurbyID";
  6163. try
  6164. {
  6165. IDataParameter[] paras = new OracleParameter[]
  6166. {
  6167. new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input),
  6168. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  6169. };
  6170. DataSet returnDs = oracleTrConn.ExecStoredProcedure(procsql, paras);
  6171. if (returnDs != null
  6172. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6173. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6174. {
  6175. DataRow row = returnDs.Tables[0].Rows[0];
  6176. // 转实体
  6177. procedureEntity = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  6178. return procedureEntity;
  6179. }
  6180. else
  6181. {
  6182. return null;
  6183. }
  6184. }
  6185. catch (Exception ex)
  6186. {
  6187. throw ex;
  6188. }
  6189. }
  6190. #endregion
  6191. #region 检验
  6192. /// <summary>
  6193. /// 保存条码信息
  6194. /// </summary>
  6195. /// <param name="procedureID">工序ID</param>
  6196. /// <param name="productionDataEntitys">生产数据集</param>
  6197. /// <param name="sUserInfo">用户基本信息</param>
  6198. /// <returns>string</returns>
  6199. public static string AddCheckBarcode(int procedureID, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6200. {
  6201. string errMsg = "";
  6202. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6203. try
  6204. {
  6205. oracleTrConn.Connect();
  6206. #region 查询工序信息
  6207. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  6208. #endregion
  6209. #region 标准检验(半成品)
  6210. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal)
  6211. {
  6212. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6213. }
  6214. #endregion
  6215. #region 成品检验
  6216. else if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  6217. {
  6218. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6219. }
  6220. #endregion
  6221. #region 半检 与成检相同处理 xuwei add 2019-12-12
  6222. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SemiQualityStatistics)
  6223. {
  6224. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6225. }
  6226. #endregion
  6227. #region 入窑前检验
  6228. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKilnCheck)
  6229. {
  6230. errMsg = AddIntoKilnCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6231. }
  6232. #endregion
  6233. // 没有错误 提交事务
  6234. if (string.IsNullOrEmpty(errMsg))
  6235. {
  6236. oracleTrConn.Commit();
  6237. }
  6238. if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  6239. {
  6240. #region 2023/02/20 质量登记产品分级为正品或者副品时 直接走完结束工序
  6241. DataTable dtProductionData = DataConvert.ObjectConvertToTable<ProductionDataEntity>(productionDataEntitys);
  6242. if (!dtProductionData.Columns.Contains("IsPDA"))
  6243. {
  6244. dtProductionData.Columns.Add("IsPDA");
  6245. }
  6246. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6247. {
  6248. if (productionData.GoodsLevelTypeID == 4 || productionData.GoodsLevelTypeID == 5)
  6249. {
  6250. ProcedureEntity procedureInfo = null;
  6251. DataTable dt = AddWorkPiece(15, dtProductionData, sUserInfo, out procedureInfo);
  6252. }
  6253. }
  6254. #endregion
  6255. }
  6256. }
  6257. catch (Exception ex)
  6258. {
  6259. oracleTrConn.Rollback();
  6260. throw ex;
  6261. }
  6262. finally
  6263. {
  6264. // 释放资源
  6265. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6266. {
  6267. oracleTrConn.Disconnect();
  6268. }
  6269. }
  6270. return errMsg;
  6271. }
  6272. /// <summary>
  6273. /// 入窑前检验
  6274. /// </summary>
  6275. /// <param name="oracleTrConn">连接对象</param>
  6276. /// <param name="procedure">工序</param>
  6277. /// <param name="productionDataEntitys">生产数据集</param>
  6278. /// <param name="sUserInfo">用户基本信息</param>
  6279. /// <returns>string</returns>
  6280. private static string AddIntoKilnCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6281. {
  6282. string errMsg = "";
  6283. // 获得账务日期
  6284. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6285. // 本批采集的批次号
  6286. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6287. #region 查询产品分级
  6288. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  6289. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  6290. #endregion
  6291. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6292. {
  6293. if (string.IsNullOrEmpty(productionData.Barcode))
  6294. {
  6295. throw new Exception("传入的条码号为空");
  6296. }
  6297. if (productionData.ProductionDataID != 0)
  6298. {
  6299. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  6300. if (!string.IsNullOrEmpty(errMsg))
  6301. {
  6302. return errMsg;
  6303. }
  6304. // 删除报废条码
  6305. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  6306. where tp_pm_scrapproduct.barcode=:barcode";
  6307. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  6308. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6309. };
  6310. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  6311. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6312. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6313. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6314. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6315. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6316. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6317. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6318. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  6319. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6320. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6321. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6322. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  6323. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  6324. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6325. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6326. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6327. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6328. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6329. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6330. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6331. CREATEUSERID, UPDATETIME, :UpdateUserID,
  6332. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6333. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6334. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6335. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  6336. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  6337. from TP_PM_InProductionTrash where barcode=:barcode ";
  6338. OracleParameter[] InProductparas = new OracleParameter[]{
  6339. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6340. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6341. };
  6342. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  6343. //删除回收站中的条码
  6344. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  6345. OracleParameter[] TrashProductparas = new OracleParameter[]{
  6346. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  6347. };
  6348. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  6349. }
  6350. int goodsID = Constant.INT_IS_ZERO;
  6351. string goodsCode = string.Empty;
  6352. string goodsName = string.Empty;
  6353. // 注浆者工号
  6354. string groutingUserCode = string.Empty;
  6355. #region 校验条码有效性
  6356. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6357. if (!string.IsNullOrEmpty(errMsg))
  6358. {
  6359. if (productionData.ProductionDataID == 0)
  6360. return errMsg;
  6361. }
  6362. #endregion
  6363. #region 获得产品分级ID
  6364. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  6365. // 获得产品分级ID
  6366. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  6367. #endregion
  6368. // 查询新插入的生产数据ID
  6369. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  6370. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6371. int productionDataID = 0;
  6372. if (!string.IsNullOrEmpty(idStr))
  6373. {
  6374. productionDataID = int.Parse(idStr);
  6375. }
  6376. else
  6377. {
  6378. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6379. }
  6380. int? ClassesSettingID = null;//班次配置ID
  6381. #region 添加生产者数据
  6382. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6383. if (!string.IsNullOrEmpty(errMsg))
  6384. {
  6385. return errMsg;
  6386. }
  6387. #endregion
  6388. #region 添加生产数据
  6389. #region 属性赋值
  6390. productionData.ClassesSettingID = ClassesSettingID;
  6391. productionData.ProductionDataID = Convert.ToInt32(idStr);
  6392. productionData.CentralizedBatchNo = centralizedBatchNo;
  6393. productionData.ProductionLineID = procedure.ProductionLineID;
  6394. productionData.ProductionLineCode = procedure.ProductionlineCode;
  6395. productionData.ProductionLineName = procedure.ProductionlineName;
  6396. productionData.ProcedureID = procedure.ProcedureID;
  6397. productionData.ProcedureCode = procedure.ProcedureCode;
  6398. productionData.ProcedureName = procedure.ProcedureName;
  6399. productionData.ProcedureModel = procedure.ProcedureModel;
  6400. productionData.ModelType = procedure.ModelType;
  6401. productionData.NodeType = procedure.NodeType;
  6402. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  6403. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6404. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  6405. productionData.OrganizationID = procedure.OrganizationID;
  6406. productionData.GoodsID = goodsID;
  6407. productionData.GoodsCode = goodsCode;
  6408. productionData.GoodsName = goodsName;
  6409. productionData.GoodsLevelID = productionData.GoodsLevelID;
  6410. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6411. //如果报废给此产品最状态赋值 wangxin 2015/4/1 因为删除掉了生产数据表中的产品最终状态
  6412. ////if (productionData.ProductionDefects != null)
  6413. ////{
  6414. //// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6415. //// {
  6416. //// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  6417. //// {
  6418. //// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  6419. //// break;
  6420. //// }
  6421. //// }
  6422. ////}
  6423. ////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  6424. ////{
  6425. //// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  6426. ////}
  6427. ////// string sqlReFire = @"select
  6428. ////// isrefire
  6429. ////// from tp_pm_inproduction where barcode=:barcode
  6430. ////// ";
  6431. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  6432. ////// new OracleParameter(":barcode",productionData.Barcode),
  6433. ////// };
  6434. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  6435. ////// //DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6436. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6437. ////// {
  6438. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  6439. ////// {
  6440. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6441. ////// }
  6442. ////// }
  6443. #endregion
  6444. string OutSpecialRepairflag = "0";//干补标识
  6445. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6446. errMsg = AddProductionDataWaster(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6447. if (!string.IsNullOrEmpty(errMsg))
  6448. {
  6449. return errMsg;
  6450. }
  6451. #endregion
  6452. //#region 添加生产者数据
  6453. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  6454. //if (!string.IsNullOrEmpty(errMsg))
  6455. //{
  6456. // return errMsg;
  6457. //}
  6458. //#endregion
  6459. #region 条码有缺陷
  6460. // 废品标识
  6461. bool scrapFlag = false;
  6462. // 存在缺陷 插入缺陷表
  6463. if (productionData.ProductionDefects != null)
  6464. {
  6465. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6466. {
  6467. #region 保存缺陷
  6468. productionDefect.ProductionDataID = productionDataID;
  6469. productionDefect.BarCode = productionData.Barcode;
  6470. productionDefect.ProductionLineID = procedure.ProductionLineID;
  6471. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6472. productionDefect.ProductionLineName = procedure.ProductionlineName;
  6473. productionDefect.ProcedureID = procedure.ProcedureID;
  6474. productionDefect.ProcedureCode = procedure.ProcedureCode;
  6475. productionDefect.ProcedureName = procedure.ProcedureName;
  6476. productionDefect.UserID = productionData.UserID;
  6477. productionDefect.UserCode = productionData.UserCode;
  6478. productionDefect.UserName = productionData.UserName;
  6479. productionDefect.GoodsID = productionData.GoodsID;
  6480. productionDefect.GoodsCode = productionData.GoodsCode;
  6481. productionDefect.GoodsName = productionData.GoodsName;
  6482. productionData.Remarks = productionData.Remarks;
  6483. productionDefect.ScrapResponFlag
  6484. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6485. // 保存缺陷
  6486. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6487. if (!string.IsNullOrEmpty(errMsg))
  6488. {
  6489. return errMsg;
  6490. }
  6491. #endregion
  6492. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  6493. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  6494. {
  6495. scrapFlag = true;
  6496. #region 添加废弃产品 删除在产产品数据
  6497. #region 添加废弃产品
  6498. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6499. #region 属性赋值
  6500. scrapProduct.BarCode = productionData.Barcode;
  6501. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  6502. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  6503. {
  6504. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  6505. }
  6506. else
  6507. {
  6508. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6509. }
  6510. scrapProduct.ScrapDate = accountDate;
  6511. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  6512. scrapProduct.Remarks = productionDefect.Remarks;
  6513. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6514. scrapProduct.Auditor = sUserInfo.UserID;
  6515. scrapProduct.AuditlDate = accountDate;
  6516. scrapProduct.AccountDate = accountDate;
  6517. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6518. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6519. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  6520. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  6521. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6522. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6523. scrapProduct.ScrapType = 1;
  6524. #endregion
  6525. // 保存报废
  6526. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6527. // 保存失败
  6528. if (!string.IsNullOrEmpty(errMsg))
  6529. {
  6530. return errMsg;
  6531. }
  6532. #endregion
  6533. #region 添加责任工序
  6534. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  6535. //xuwei fix 2019-09-26 使用通用方法判定
  6536. if (IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode) == 1)
  6537. procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  6538. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  6539. {
  6540. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6541. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6542. ResponProcedureEntity responProce = new ResponProcedureEntity();
  6543. #region 属性赋值
  6544. responProce.BarCode = productionData.Barcode;
  6545. responProce.ProductionDataID = productionDataID;
  6546. responProce.ProductionLineID = productionDefect.ProductionLineID;
  6547. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  6548. responProce.ProductionLineName = productionDefect.ProductionLineName;
  6549. responProce.ProcedureID = productionDefect.DefectProcedureID;
  6550. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  6551. responProce.ProcedureName = productionDefect.DefectProcedureName;
  6552. responProce.UserID = productionDefect.DefectUserID;
  6553. responProce.UserCode = productionDefect.DefectUserCode;
  6554. responProce.UserName = productionDefect.DefectUserName;
  6555. responProce.Remarks = productionDefect.Remarks;
  6556. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6557. #endregion
  6558. // 保存责任工序
  6559. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  6560. // 保存失败
  6561. if (!string.IsNullOrEmpty(errMsg))
  6562. {
  6563. return errMsg;
  6564. }
  6565. }
  6566. #endregion
  6567. #region 删除在产产品数据
  6568. InProductionEntity delInProductionEntity = new InProductionEntity();
  6569. delInProductionEntity.BarCode = productionData.Barcode;
  6570. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  6571. // 执行删除 在产数据
  6572. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  6573. // 执行失败
  6574. // if (!string.IsNullOrEmpty(errMsg)) 注释日期2015-12-28
  6575. // {
  6576. // return errMsg;
  6577. // }
  6578. #endregion
  6579. #endregion
  6580. }
  6581. #endregion
  6582. }
  6583. }
  6584. #endregion
  6585. // 条码有缺陷或者报废
  6586. //wangxin 20150414
  6587. //if (scrapFlag || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  6588. //{
  6589. #region 有缺陷 删除条码对应窑车产品
  6590. if (productionData.DefectFlag == Constant.GoodsLevelType.Defect.GetHashCode())
  6591. {
  6592. errMsg = DeleteKilnCarGoods(oracleTrConn, productionData.Barcode);
  6593. if (!string.IsNullOrEmpty(errMsg))
  6594. {
  6595. return errMsg;
  6596. }
  6597. }
  6598. #endregion
  6599. //}
  6600. //wangxin 20150414 end
  6601. // 条码没有报废
  6602. if (!scrapFlag)
  6603. {
  6604. #region 修改在产产品数据的当前工序
  6605. InProductionEntity inProductionEntity = new InProductionEntity();
  6606. inProductionEntity.BarCode = productionData.Barcode;
  6607. //流程工序
  6608. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  6609. // 当前工序
  6610. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6611. inProductionEntity.ProcedureID = procedure.ProcedureID;
  6612. // 生产数据ID
  6613. inProductionEntity.ProductionDataID = productionDataID;
  6614. // 工序模型
  6615. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6616. // 工序类别
  6617. inProductionEntity.ModelType = procedure.ModelType;
  6618. // 生产工号
  6619. inProductionEntity.UserID = productionData.UserID;
  6620. // 缺陷标识
  6621. inProductionEntity.DefectFlag = productionData.DefectFlag;
  6622. // 返工工序ID
  6623. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  6624. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  6625. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6626. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  6627. // 执行修改
  6628. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  6629. // 执行失败
  6630. if (!string.IsNullOrEmpty(errMsg))
  6631. {
  6632. return errMsg;
  6633. }
  6634. #endregion
  6635. }
  6636. }
  6637. return errMsg;
  6638. }
  6639. /// <summary>
  6640. /// 删除窑车产品
  6641. /// </summary>
  6642. /// <param name="oracleTrConn">数据连接</param>
  6643. /// <param name="barcode">产品条码</param>
  6644. /// <returns>string</returns>
  6645. private static string DeleteKilnCarGoods(IDBTransaction oracleTrConn, string barcode)
  6646. {
  6647. string sql = "delete TP_PM_KilnCarGoods where BarCode = :barcode";
  6648. OracleParameter[] paras = new OracleParameter[] { new OracleParameter(":barcode", barcode) };
  6649. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  6650. // 保存失败
  6651. if (result != Constant.INT_IS_ONE)
  6652. {
  6653. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6654. }
  6655. return null;
  6656. }
  6657. /// <summary>
  6658. /// 添加成品编辑
  6659. /// </summary>
  6660. /// <param name="oracleTrConn">数据连接</param>
  6661. /// <param name="procedure">工序对象</param>
  6662. /// <param name="productionDataEntitys">生产数据集</param>
  6663. /// <param name="sUserInfo">用户基本信息</param>
  6664. /// <returns>string</returns>
  6665. //private static string AddFinishCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6666. //{
  6667. // string errMsg = "";
  6668. // // 获得账务日期
  6669. // DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6670. // // 本批采集的批次号
  6671. // string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6672. // foreach (ProductionDataEntity productionData in productionDataEntitys)
  6673. // {
  6674. // if (string.IsNullOrEmpty(productionData.Barcode))
  6675. // {
  6676. // throw new Exception("传入的条码号为空");
  6677. // }
  6678. // int goodsID = Constant.INT_IS_ZERO;
  6679. // string goodsCode = string.Empty;
  6680. // string goodsName = string.Empty;
  6681. // // 注浆者工号
  6682. // string groutingUserCode = string.Empty;
  6683. // // 次品标识
  6684. // bool substandardFlag = false;
  6685. // #region 校验条码有效性
  6686. // errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6687. // if (!string.IsNullOrEmpty(errMsg))
  6688. // {
  6689. // if (productionData.ProductionDataID == 0)
  6690. // return errMsg;
  6691. // }
  6692. // #endregion
  6693. // #region 添加生产数据
  6694. // #region 属性赋值
  6695. // productionData.CentralizedBatchNo = centralizedBatchNo;
  6696. // productionData.ProductionLineID = procedure.ProductionLineID;
  6697. // productionData.ProductionLineCode = procedure.ProductionlineCode;
  6698. // productionData.ProductionLineName = procedure.ProductionlineName;
  6699. // productionData.CompleteProcedureID = procedure.ProcedureID;
  6700. // productionData.ProcedureCode = procedure.ProcedureCode;
  6701. // productionData.ProcedureName = procedure.ProcedureName;
  6702. // productionData.ProcedureModel = procedure.ProcedureModel;
  6703. // productionData.ModelType = procedure.ModelType;
  6704. // productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  6705. // // 重烧
  6706. // if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  6707. // {
  6708. // //productionData.GoodsLevelID = null;
  6709. // productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6710. // }
  6711. // // 次品
  6712. // else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6713. // {
  6714. // //productionData.GoodsLevelID = null;
  6715. // substandardFlag = true;
  6716. // }
  6717. // // 查询新插入的生产数据ID
  6718. // if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  6719. // {
  6720. // //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  6721. // //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  6722. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  6723. // DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6724. // if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6725. // {
  6726. // productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6727. // }
  6728. // }
  6729. // productionData.OrganizationID = procedure.OrganizationID;
  6730. // productionData.GoodsID = goodsID;
  6731. // productionData.GoodsCode = goodsCode;
  6732. // productionData.GoodsName = goodsName;
  6733. // productionData.GoodsLevelID = productionData.GoodsLevelID;
  6734. // productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6735. // //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6736. // //{
  6737. // // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  6738. // //}
  6739. // #endregion
  6740. // string OutSpecialRepairflag = "0";//干补标识
  6741. // errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6742. // if (!string.IsNullOrEmpty(errMsg))
  6743. // {
  6744. // return errMsg;
  6745. // }
  6746. // // 查询新插入的生产数据ID
  6747. // string sql = "select SEQ_PM_ProductionData_ID.Currval from dual";
  6748. // string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6749. // // 新插入的班次配置表ID
  6750. // int productionDataID = 0;
  6751. // if (!string.IsNullOrEmpty(idStr))
  6752. // {
  6753. // productionDataID = int.Parse(idStr);
  6754. // }
  6755. // else
  6756. // {
  6757. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6758. // }
  6759. // #endregion
  6760. // #region 添加生产者数据
  6761. // int? ClassesSettingID = null;//班次配置ID
  6762. // errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6763. // if (!string.IsNullOrEmpty(errMsg))
  6764. // {
  6765. // return errMsg;
  6766. // }
  6767. // #endregion
  6768. // #region 条码有缺陷
  6769. // #region 是次品 添加废弃产品
  6770. // if (substandardFlag)
  6771. // {
  6772. // #region 添加废弃产品
  6773. // ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6774. // #region 属性赋值
  6775. // scrapProduct.BarCode = productionData.Barcode;
  6776. // scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  6777. // scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6778. // scrapProduct.ScrapDate = accountDate;
  6779. // scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  6780. // scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6781. // scrapProduct.Auditor = sUserInfo.UserID;
  6782. // scrapProduct.AuditlDate = accountDate;
  6783. // scrapProduct.AccountDate = accountDate;
  6784. // scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6785. // scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6786. // #endregion
  6787. // // 保存报废
  6788. // errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6789. // // 保存失败
  6790. // if (!string.IsNullOrEmpty(errMsg))
  6791. // {
  6792. // return errMsg;
  6793. // }
  6794. // #endregion
  6795. // }
  6796. // #endregion
  6797. // // 存在缺陷 插入缺陷表
  6798. // if (productionData.ProductionDefects != null)
  6799. // {
  6800. // foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6801. // {
  6802. // #region 保存缺陷
  6803. // productionDefect.ProductionDataID = productionDataID;
  6804. // productionDefect.BarCode = productionData.Barcode;
  6805. // productionDefect.ProductionLineID = procedure.ProductionLineID;
  6806. // productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6807. // productionDefect.ProductionLineName = procedure.ProductionlineName;
  6808. // productionDefect.ProcedureID = procedure.ProcedureID;
  6809. // productionDefect.ProcedureCode = procedure.ProcedureCode;
  6810. // productionDefect.ProcedureName = procedure.ProcedureName;
  6811. // productionDefect.UserID = productionData.UserID;
  6812. // productionDefect.UserCode = productionData.UserCode;
  6813. // productionDefect.UserName = productionData.UserName;
  6814. // productionDefect.GoodsID = productionData.GoodsID;
  6815. // productionDefect.GoodsCode = productionData.GoodsCode;
  6816. // productionDefect.GoodsName = productionData.GoodsName;
  6817. // productionData.Remarks = productionData.Remarks;
  6818. // productionDefect.ScrapResponFlag
  6819. // = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6820. // // 保存缺陷
  6821. // errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6822. // if (!string.IsNullOrEmpty(errMsg))
  6823. // {
  6824. // return errMsg;
  6825. // }
  6826. // #endregion
  6827. // #region 是次品 添加废弃责任工序
  6828. // if (substandardFlag)
  6829. // {
  6830. // #region 添加责任工序
  6831. // ResponProcedureEntity responProce = new ResponProcedureEntity();
  6832. // // 查询新插入的废弃ID
  6833. // string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6834. // string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  6835. // #region 属性赋值
  6836. // responProce.BarCode = productionData.Barcode;
  6837. // responProce.ProductionDataID = productionDataID;
  6838. // responProce.ProductionLineID = productionDefect.ProductionLineID;
  6839. // responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  6840. // responProce.ProductionLineName = productionDefect.ProductionLineName;
  6841. // responProce.ProcedureID = productionDefect.DefectProcedureID;
  6842. // responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  6843. // responProce.ProcedureName = productionDefect.DefectProcedureName;
  6844. // responProce.UserID = productionDefect.DefectUserID;
  6845. // responProce.UserCode = productionDefect.DefectUserCode;
  6846. // responProce.UserName = productionDefect.DefectUserName;
  6847. // responProce.Remarks = productionDefect.Remarks;
  6848. // responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  6849. // #endregion
  6850. // // 保存责任工序
  6851. // errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  6852. // // 保存失败
  6853. // if (!string.IsNullOrEmpty(errMsg))
  6854. // {
  6855. // return errMsg;
  6856. // }
  6857. // #endregion
  6858. // }
  6859. // #endregion
  6860. // }
  6861. // }
  6862. // #endregion
  6863. // #region 条码是次品 删除在产产品数据
  6864. // if (substandardFlag)
  6865. // {
  6866. // #region 删除在产产品数据
  6867. // InProductionEntity delInProductionEntity = new InProductionEntity();
  6868. // delInProductionEntity.BarCode = productionData.Barcode;
  6869. // // 执行删除 在产数据
  6870. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  6871. // // 执行失败
  6872. // if (!string.IsNullOrEmpty(errMsg))
  6873. // {
  6874. // return errMsg;
  6875. // }
  6876. // #endregion
  6877. // }
  6878. // #endregion
  6879. // #region 条码不是次品
  6880. // if (!substandardFlag)
  6881. // {
  6882. // #region 中间工序/重烧 修改在产产品数据
  6883. // if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  6884. // || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  6885. // {
  6886. // #region 修改在产产品数据的当前工序
  6887. // InProductionEntity inProductionEntity = new InProductionEntity();
  6888. // inProductionEntity.BarCode = productionData.Barcode;
  6889. // // 当前工序
  6890. // inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6891. // // 工序模型
  6892. // inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6893. // // 工序类别
  6894. // inProductionEntity.ModelType = procedure.ModelType;
  6895. // // 生产工号
  6896. // inProductionEntity.UserID = productionData.UserID;
  6897. // // 重烧
  6898. // inProductionEntity.IsReFire = productionData.IsReFire;
  6899. // // 缺陷
  6900. // inProductionEntity.DefectFlag = productionData.DefectFlag;
  6901. // // 产品分级
  6902. // inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  6903. // // 返工工序ID
  6904. // inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  6905. // inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  6906. // inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6907. // // 执行修改
  6908. // errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  6909. // // 执行失败
  6910. // if (!string.IsNullOrEmpty(errMsg))
  6911. // {
  6912. // return errMsg;
  6913. // }
  6914. // #endregion
  6915. // }
  6916. // #endregion
  6917. // #region 结束工序 添加成品数据 删除在产产品数据
  6918. // else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  6919. // {
  6920. // #region 添加成品数据 删除在产产品数据
  6921. // FinishedProductEntity finishedProduct = new FinishedProductEntity();
  6922. // finishedProduct.BarCode = productionData.Barcode;
  6923. // errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo);
  6924. // if (!string.IsNullOrEmpty(errMsg))
  6925. // {
  6926. // return errMsg;
  6927. // }
  6928. // InProductionEntity delInProductionEntity = new InProductionEntity();
  6929. // delInProductionEntity.BarCode = productionData.Barcode;
  6930. // // 执行删除 在产数据
  6931. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  6932. // // 执行失败
  6933. // if (!string.IsNullOrEmpty(errMsg))
  6934. // {
  6935. // return errMsg;
  6936. // }
  6937. // #endregion
  6938. // }
  6939. // #endregion
  6940. // }
  6941. // #endregion
  6942. // }
  6943. // return errMsg;
  6944. //}
  6945. /// <summary>
  6946. /// 保存标准检验
  6947. /// </summary>
  6948. /// <param name="oracleTrConn">连接对象</param>
  6949. /// <param name="procedure">工序信息</param>
  6950. /// <param name="productionDataEntitys">生产数据集合</param>
  6951. /// <param name="sUserInfo">用户基本信息</param>
  6952. /// <returns>string</returns>
  6953. private static string AddNormalCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6954. {
  6955. string errMsg = "";
  6956. // 获得账务日期
  6957. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6958. // 本批采集的批次号
  6959. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6960. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  6961. #region 查询产品分级
  6962. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  6963. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  6964. #endregion
  6965. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6966. {
  6967. if (string.IsNullOrEmpty(productionData.Barcode))
  6968. {
  6969. throw new Exception("传入的条码号为空");
  6970. }
  6971. if (productionData.ProductionDataID != 0)
  6972. {
  6973. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  6974. if (!string.IsNullOrEmpty(errMsg))
  6975. {
  6976. return errMsg;
  6977. }
  6978. // 删除报废条码
  6979. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  6980. where tp_pm_scrapproduct.barcode=:barcode";
  6981. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  6982. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6983. };
  6984. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  6985. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6986. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6987. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6988. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6989. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6990. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6991. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6992. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  6993. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6994. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6995. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6996. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  6997. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  6998. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6999. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  7000. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  7001. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  7002. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  7003. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  7004. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  7005. CREATEUSERID, UPDATETIME, :UpdateUserID,
  7006. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  7007. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  7008. KILNID, KILNCODE, KILNNAME, KILNCARID,
  7009. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  7010. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  7011. from TP_PM_InProductionTrash where barcode=:barcode ";
  7012. OracleParameter[] InProductparas = new OracleParameter[]{
  7013. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  7014. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  7015. };
  7016. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  7017. //删除回收站中的条码
  7018. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  7019. OracleParameter[] TrashProductparas = new OracleParameter[]{
  7020. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  7021. };
  7022. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  7023. }
  7024. int goodsID = Constant.INT_IS_ZERO;
  7025. string goodsCode = string.Empty;
  7026. string goodsName = string.Empty;
  7027. // 注浆者工号
  7028. string groutingUserCode = string.Empty;
  7029. #region 校验条码有效性
  7030. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  7031. if (!string.IsNullOrEmpty(errMsg))
  7032. {
  7033. if (productionData.ProductionDataID == 0)
  7034. return errMsg;
  7035. }
  7036. #endregion
  7037. // 查询新插入的生产数据ID
  7038. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  7039. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7040. int? ClassesSettingID = null;//班次配置ID
  7041. // 新插入的班次配置表ID
  7042. int productionDataID = 0;
  7043. if (!string.IsNullOrEmpty(idStr))
  7044. {
  7045. productionDataID = int.Parse(idStr);
  7046. }
  7047. else
  7048. {
  7049. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7050. }
  7051. #region 添加生产者数据
  7052. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  7053. if (!string.IsNullOrEmpty(errMsg))
  7054. {
  7055. return errMsg;
  7056. }
  7057. #endregion
  7058. #region 添加生产数据
  7059. #region 属性赋值
  7060. productionData.ClassesSettingID = ClassesSettingID;
  7061. productionData.ProductionDataID = Convert.ToInt32(idStr);
  7062. productionData.CentralizedBatchNo = centralizedBatchNo;
  7063. productionData.ProductionLineID = procedure.ProductionLineID;
  7064. productionData.ProductionLineCode = procedure.ProductionlineCode;
  7065. productionData.ProductionLineName = procedure.ProductionlineName;
  7066. productionData.CompleteProcedureID = procedure.ProcedureID;
  7067. productionData.ProcedureID = procedure.ProcedureID;
  7068. productionData.ProcedureCode = procedure.ProcedureCode;
  7069. productionData.ProcedureName = procedure.ProcedureName;
  7070. productionData.ProcedureModel = procedure.ProcedureModel;
  7071. productionData.ModelType = procedure.ModelType;
  7072. productionData.NodeType = procedure.NodeType;
  7073. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  7074. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  7075. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  7076. productionData.OrganizationID = procedure.OrganizationID;
  7077. productionData.GoodsID = goodsID;
  7078. productionData.GoodsCode = goodsCode;
  7079. productionData.GoodsName = goodsName;
  7080. productionData.GoodsLevelID = productionData.GoodsLevelID;
  7081. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7082. ////////如果报废给此产品最状态赋值
  7083. //////if (productionData.ProductionDefects != null)
  7084. //////{
  7085. ////// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  7086. ////// {
  7087. ////// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  7088. ////// {
  7089. ////// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  7090. ////// break;
  7091. ////// }
  7092. ////// }
  7093. //////}
  7094. //////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  7095. //////{
  7096. ////// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  7097. //////}
  7098. ////// string sqlReFire = @"select
  7099. ////// isrefire
  7100. ////// from tp_pm_inproduction where barcode=:barcode
  7101. ////// ";
  7102. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  7103. ////// new OracleParameter(":barcode",productionData.Barcode),
  7104. ////// };
  7105. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  7106. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  7107. ////// {
  7108. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  7109. ////// {
  7110. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  7111. ////// }
  7112. ////// }
  7113. #endregion
  7114. string OutSpecialRepairflag = "0";//干补标识
  7115. DataSet outDataSet = null;
  7116. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7117. //xuwei fix 2019-09-26 使用通用方法判定
  7118. // 2019-1016
  7119. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7120. {
  7121. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7122. if (isNodeBegin == 0)
  7123. {
  7124. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  7125. }
  7126. }
  7127. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7128. {
  7129. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  7130. }
  7131. else
  7132. {
  7133. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  7134. }
  7135. if (!string.IsNullOrEmpty(errMsg))
  7136. {
  7137. return errMsg;
  7138. }
  7139. if (productionData.ProductionDefects == null || productionData.ProductionDefects.Count == 0)
  7140. {
  7141. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  7142. }
  7143. #endregion
  7144. #region 获得产品分级ID
  7145. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  7146. // 获得产品分级ID
  7147. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  7148. #endregion
  7149. #region 开始节点
  7150. //xuwei remove 2019-09-26 此处应该是重复判定 移除
  7151. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7152. //xuwei fix 2019-09-26 使用通用方法判定
  7153. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7154. // 2019-1016
  7155. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7156. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7157. {
  7158. #region 添加在产产品数据
  7159. InProductionEntity addInProductionEntity = new InProductionEntity();
  7160. addInProductionEntity.ProductionDataID = productionData.ProductionDataID;
  7161. addInProductionEntity.BarCode = productionData.Barcode;
  7162. //流程工序
  7163. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7164. // 当前工序
  7165. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  7166. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  7167. //生产数据ID
  7168. addInProductionEntity.ProductionDataID = productionDataID;
  7169. // 工序模型
  7170. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7171. // 工序类别
  7172. addInProductionEntity.ModelType = procedure.ModelType;
  7173. // 正常坯
  7174. addInProductionEntity.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  7175. #endregion
  7176. // 生产工号
  7177. addInProductionEntity.UserID = productionData.UserID;
  7178. // 执行添加
  7179. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  7180. // 执行失败
  7181. if (!string.IsNullOrEmpty(errMsg))
  7182. {
  7183. return errMsg;
  7184. }
  7185. }
  7186. #endregion
  7187. #region 条码有缺陷
  7188. // 废品标识
  7189. bool scrapFlag = false;
  7190. // 存在缺陷 插入缺陷表
  7191. if (productionData.ProductionDefects != null)
  7192. {
  7193. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  7194. {
  7195. #region 保存缺陷
  7196. productionDefect.ProductionDataID = productionDataID;
  7197. productionDefect.BarCode = productionData.Barcode;
  7198. productionDefect.ProductionLineID = procedure.ProductionLineID;
  7199. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  7200. productionDefect.ProductionLineName = procedure.ProductionlineName;
  7201. productionDefect.ProcedureID = procedure.ProcedureID;
  7202. productionDefect.ProcedureCode = procedure.ProcedureCode;
  7203. productionDefect.ProcedureName = procedure.ProcedureName;
  7204. productionDefect.UserID = productionData.UserID;
  7205. productionDefect.UserCode = productionData.UserCode;
  7206. productionDefect.UserName = productionData.UserName;
  7207. productionDefect.GoodsID = productionData.GoodsID;
  7208. productionDefect.GoodsCode = productionData.GoodsCode;
  7209. productionDefect.GoodsName = productionData.GoodsName;
  7210. productionDefect.Remarks = productionData.Remarks;
  7211. productionDefect.ScrapResponFlag
  7212. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  7213. // 保存缺陷
  7214. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  7215. if (!string.IsNullOrEmpty(errMsg))
  7216. {
  7217. return errMsg;
  7218. }
  7219. #endregion
  7220. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  7221. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  7222. {
  7223. scrapFlag = true;
  7224. #region 添加废弃产品 删除在产产品数据
  7225. #region 添加废弃产品
  7226. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  7227. #region 属性赋值
  7228. scrapProduct.BarCode = productionData.Barcode;
  7229. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  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.Begin)
  7237. {
  7238. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  7239. }
  7240. else
  7241. {
  7242. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  7243. }
  7244. scrapProduct.ScrapDate = accountDate;
  7245. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  7246. scrapProduct.Remarks = productionDefect.Remarks;
  7247. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  7248. scrapProduct.Auditor = sUserInfo.UserID;
  7249. scrapProduct.AuditlDate = accountDate;
  7250. scrapProduct.AccountDate = accountDate;
  7251. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  7252. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7253. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  7254. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7255. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7256. scrapProduct.ScrapType = 1;
  7257. scrapProduct.IsQualityStatistics = 1;
  7258. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  7259. #endregion
  7260. // 保存报废
  7261. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  7262. // 保存失败
  7263. if (!string.IsNullOrEmpty(errMsg))
  7264. {
  7265. return errMsg;
  7266. }
  7267. #endregion
  7268. #region 添加责任工序
  7269. //xuwei remove 2019-09-26 此处是重复判定移除
  7270. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7271. //xuwei fix 2019-09-26 使用通用方法判定
  7272. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7273. // 2019-1016
  7274. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7275. // 不是开始工序时。需要添加责任工序
  7276. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  7277. {
  7278. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  7279. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7280. ResponProcedureEntity responProce = new ResponProcedureEntity();
  7281. #region 属性赋值
  7282. responProce.BarCode = productionData.Barcode;
  7283. responProce.ProductionDataID = productionDataID;
  7284. responProce.ProductionLineID = productionDefect.ProductionLineID;
  7285. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  7286. responProce.ProductionLineName = productionDefect.ProductionLineName;
  7287. responProce.ProcedureID = productionDefect.DefectProcedureID;
  7288. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  7289. responProce.ProcedureName = productionDefect.DefectProcedureName;
  7290. responProce.UserID = productionDefect.DefectUserID;
  7291. responProce.UserCode = productionDefect.DefectUserCode;
  7292. responProce.UserName = productionDefect.DefectUserName;
  7293. responProce.Remarks = productionDefect.Remarks;
  7294. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7295. #endregion
  7296. // 保存责任工序
  7297. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  7298. // 保存失败
  7299. if (!string.IsNullOrEmpty(errMsg))
  7300. {
  7301. return errMsg;
  7302. }
  7303. }
  7304. #endregion
  7305. #region 删除在产产品数据
  7306. InProductionEntity delInProductionEntity = new InProductionEntity();
  7307. delInProductionEntity.BarCode = productionData.Barcode;
  7308. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  7309. // 执行删除 在产数据
  7310. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  7311. // 执行失败
  7312. if (!string.IsNullOrEmpty(errMsg))
  7313. {
  7314. return errMsg;
  7315. }
  7316. #endregion
  7317. #endregion
  7318. }
  7319. #endregion
  7320. }
  7321. }
  7322. #endregion
  7323. #region 条码没有报废
  7324. if (!scrapFlag)
  7325. {
  7326. #region 检验出缺陷 并且不是废品 修改在产产品数据
  7327. //xuwei remove 2019-09-26 此处是重复判定移除
  7328. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7329. //xuwei fix 2019-09-26 使用通用方法判定
  7330. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7331. // 2019-1016
  7332. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7333. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  7334. || procedure.NodeType == (int)Constant.ProcedureNodeType.Begin
  7335. || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  7336. {
  7337. #region 修改在产产品数据的当前工序
  7338. InProductionEntity inProductionEntity = new InProductionEntity();
  7339. inProductionEntity.ProductionDataID = Convert.ToInt32(idStr);
  7340. inProductionEntity.BarCode = productionData.Barcode;
  7341. // 当前工序
  7342. inProductionEntity.ProcedureID = procedure.ProcedureID;
  7343. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7344. // 工序模型
  7345. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7346. // 工序类别
  7347. inProductionEntity.ModelType = procedure.ModelType;
  7348. // 生产工号
  7349. inProductionEntity.UserID = productionData.UserID;
  7350. // 缺陷标识
  7351. inProductionEntity.DefectFlag = productionData.DefectFlag;
  7352. // 返工工序ID
  7353. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  7354. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7355. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  7356. // 执行修改
  7357. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  7358. // 执行失败
  7359. if (!string.IsNullOrEmpty(errMsg))
  7360. {
  7361. return errMsg;
  7362. }
  7363. #endregion
  7364. }
  7365. #endregion
  7366. #region 结束工序、没有缺陷 添加成品数据 删除在产产品数据
  7367. //else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7368. // && productionData.DefectFlag == Constant.DefectFlag.No.GetHashCode())
  7369. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7370. && productionData.GoodsLevelTypeID == Constant.GoodsLevelType.NoDefects.GetHashCode())
  7371. {
  7372. #region 添加成品数据 删除在产产品数据
  7373. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  7374. finishedProduct.BarCode = productionData.Barcode;
  7375. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  7376. if (!string.IsNullOrEmpty(errMsg))
  7377. {
  7378. return errMsg;
  7379. }
  7380. InProductionEntity delInProductionEntity = new InProductionEntity();
  7381. delInProductionEntity.BarCode = productionData.Barcode;
  7382. // 执行删除 在产数据
  7383. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  7384. // 执行失败
  7385. if (!string.IsNullOrEmpty(errMsg))
  7386. {
  7387. return errMsg;
  7388. }
  7389. #endregion
  7390. }
  7391. #endregion
  7392. }
  7393. #endregion
  7394. }
  7395. return errMsg;
  7396. }
  7397. ///// <summary>
  7398. ///// 报废更新产品数据最终状态
  7399. ///// </summary>
  7400. ///// <param name="oracleTrConn">连接对象</param>
  7401. ///// <param name="barcode">产品条码</param>
  7402. ///// <param name="sUserInfo">用记基本信息</param>
  7403. ///// <returns>string</returns>
  7404. ///// <remarks>
  7405. ///// 王鑫 2015.01.07 新建
  7406. ///// </remarks>
  7407. //private static string UpdateProductionDataGoodsEnding(IDBTransaction oracleTrConn, int productionDataID, int? goodsEnding, SUserInfo sUserInfo)
  7408. //{
  7409. // string sql = "update TP_PM_ProductionData set GoodsEnding=:goodsEnding where ProductionDataID = :productionDataID and AccountID=:accountid";
  7410. // OracleParameter[] paras = new OracleParameter[] {
  7411. // new OracleParameter(":goodsEnding",goodsEnding),
  7412. // new OracleParameter(":productionDataID",productionDataID),
  7413. // new OracleParameter(":accountid",sUserInfo.AccountID),
  7414. // };
  7415. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  7416. // // 更新失败
  7417. // if (result <= Constant.INT_IS_ZERO)
  7418. // {
  7419. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7420. // }
  7421. // // 成功返回null
  7422. // return null;
  7423. //}
  7424. /// <summary>
  7425. /// 添加责任工序
  7426. /// </summary>
  7427. /// <param name="oracleTrConn">连接对象</param>
  7428. /// <param name="responProce">责任工序</param>
  7429. /// <param name="productionDefect">缺陷数据</param>
  7430. /// <param name="sUserInfo">用户基本信息</param>
  7431. /// <returns>string</returns>
  7432. private static string AddResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  7433. {
  7434. OracleParameter[] oracleParameters = null;
  7435. string sql = null;
  7436. int result = 0;
  7437. // 查询新插入ID
  7438. if (productionDefect.DefectProcedureID != null)
  7439. {
  7440. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  7441. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7442. if (!string.IsNullOrEmpty(idStr))
  7443. {
  7444. responProce.ResponProcedureID = int.Parse(idStr);
  7445. }
  7446. else
  7447. {
  7448. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7449. }
  7450. #region SQL
  7451. sql = "insert into tp_pm_responprocedure"
  7452. + " (ResponProcedureID,"
  7453. + " scrapproductid,"
  7454. + " barcode,"
  7455. + " productiondataid,"
  7456. + " productionlineid,"
  7457. + " productionlinecode,"
  7458. + " productionlinename,"
  7459. + " procedureid,"
  7460. + " procedurecode,"
  7461. + " procedurename,"
  7462. + " userid,"
  7463. + " usercode,"
  7464. + " username,"
  7465. + " remarks,"
  7466. + " accountid,"
  7467. + " createuserid,"
  7468. + " updateuserid)"
  7469. + " values"
  7470. + " ("
  7471. + " :ResponProcedureID,"
  7472. + " :scrapproductid,"
  7473. + " :barcode,"
  7474. + " :productiondataid,"
  7475. + " :productionlineid,"
  7476. + " :productionlinecode,"
  7477. + " :productionlinename,"
  7478. + " :procedureid,"
  7479. + " :procedurecode,"
  7480. + " :procedurename,"
  7481. + " :userid,"
  7482. + " :usercode,"
  7483. + " :username,"
  7484. + " :remarks,"
  7485. + " :accountid,"
  7486. + " :createuserid,"
  7487. + " :updateuserid)";
  7488. #endregion
  7489. #region 参数
  7490. oracleParameters = new OracleParameter[] {
  7491. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  7492. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7493. new OracleParameter(":barcode",responProce.BarCode),
  7494. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  7495. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  7496. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  7497. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  7498. new OracleParameter(":procedureid",responProce.ProcedureID),
  7499. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  7500. new OracleParameter(":procedurename",responProce.ProcedureName),
  7501. new OracleParameter(":userid",responProce.UserID),
  7502. new OracleParameter(":usercode",responProce.UserCode),
  7503. new OracleParameter(":username",responProce.UserName),
  7504. new OracleParameter(":remarks",responProce.Remarks),
  7505. new OracleParameter(":accountid",sUserInfo.AccountID),
  7506. new OracleParameter(":createuserid",sUserInfo.UserID),
  7507. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7508. };
  7509. #endregion
  7510. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7511. // 保存失败
  7512. if (result != Constant.INT_IS_ONE)
  7513. {
  7514. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7515. }
  7516. //// 查询新插入ID
  7517. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  7518. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7519. //if (!string.IsNullOrEmpty(idStr))
  7520. //{
  7521. // responProce.ResponProcedureID = int.Parse(idStr);
  7522. //}
  7523. //else
  7524. //{
  7525. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7526. //}
  7527. }
  7528. #region 插入责任人
  7529. foreach (DefectResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  7530. {
  7531. #region SQL
  7532. sql = "insert into tp_pm_scrapresponsible"
  7533. + " (barcode,"
  7534. + " scrapproductid,"
  7535. + " staffid,"
  7536. + " userid,"
  7537. + " usercode,"
  7538. + " ujobsid,"
  7539. + " sjobsid,"
  7540. + " staffstatus,"
  7541. + " accountid,"
  7542. + " createuserid,"
  7543. + " updateuserid,"
  7544. + " responprocedureid,"
  7545. + " respontype)"
  7546. + " values"
  7547. + " (:barcode,"
  7548. + " :scrapproductid,"
  7549. + " :staffid,"
  7550. + " :userid,"
  7551. + " :usercode,"
  7552. + " :ujobsid,"
  7553. + " :sjobsid,"
  7554. + " :staffstatus,"
  7555. + " :accountid,"
  7556. + " :createuserid,"
  7557. + " :updateuserid,"
  7558. + " :responprocedureid,"
  7559. + " :respontype)";
  7560. #endregion
  7561. #region 参数
  7562. oracleParameters = new OracleParameter[] {
  7563. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7564. new OracleParameter(":barcode",responProce.BarCode),
  7565. new OracleParameter(":staffid",defectResponsible.StaffID),
  7566. new OracleParameter(":userid",defectResponsible.UserID),
  7567. new OracleParameter(":usercode",defectResponsible.UserCode),
  7568. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  7569. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  7570. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  7571. new OracleParameter(":accountid",sUserInfo.AccountID),
  7572. new OracleParameter(":createuserid",sUserInfo.UserID),
  7573. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7574. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  7575. new OracleParameter(":respontype",Constant.ScrapResponType.Procedure.GetHashCode()),
  7576. };
  7577. #endregion
  7578. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7579. // 保存失败
  7580. if (result != Constant.INT_IS_ONE)
  7581. {
  7582. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7583. }
  7584. }
  7585. #endregion
  7586. return null;
  7587. }
  7588. /// <summary>
  7589. /// 保存废弃产品
  7590. /// </summary>
  7591. /// <param name="oracleTrConn">连接对象</param>
  7592. /// <param name="scrapProduct">报废产品</param>
  7593. /// <param name="sUserInfo">用户基本信息</param>
  7594. /// <returns>string</returns>
  7595. private static string AddScrapProductRejectToReject(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7596. {
  7597. #region sql
  7598. string sql = "insert into tp_pm_scrapproduct"
  7599. + " (scrapproductid,barcode,"
  7600. + " productionlineid,"
  7601. + " productionlinecode,"
  7602. + " productionlinename,"
  7603. + " goodsid,"
  7604. + " goodscode,"
  7605. + " goodsname,"
  7606. + " groutingdailyid,"
  7607. + " groutingdailydetailid,"
  7608. + " groutingdate,"
  7609. + " groutinglineid,"
  7610. + " groutinglinecode,"
  7611. + " groutinglinename,"
  7612. + " gmouldtypeid,"
  7613. + " groutinglinedetailid,"
  7614. + " groutingmouldcode,"
  7615. + " mouldcode,"
  7616. + " scrapdate,"
  7617. + " rreason,"
  7618. + " remarks,"
  7619. + " auditstatus,"
  7620. + " auditor,"
  7621. + " auditdate,"
  7622. + " accountdate,"
  7623. + " accountid,"
  7624. + " createuserid,"
  7625. + " updateuserid,"
  7626. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7627. + " auditopinion,"
  7628. + " GroutingUserID,"
  7629. + " GroutingUserCode,"
  7630. + " GroutingNum,"
  7631. + " IsPublicBody,"
  7632. + " IsReFire,"
  7633. + " kilnid,"
  7634. + " kilncode,"
  7635. + " kilnname,"
  7636. + " kilncarid,"
  7637. + " kilncarcode,"
  7638. + " kilncarname,"
  7639. + " kilncarbatchno,"
  7640. + " kilncarposition,"
  7641. + " specialRepairflag,"
  7642. + " logoid,ProductionDataID, "
  7643. + " ProcedureID, "
  7644. + " ProcedureCode, "
  7645. + " ProcedureName, "
  7646. + " ScrapType "
  7647. + ")"
  7648. + " select :scrapproductid,trash.barcode,"
  7649. + " trash.productionlineid,"
  7650. + " trash.productionlinecode,"
  7651. + " trash.productionlinename,"
  7652. + " trash.goodsid,"
  7653. + " trash.goodscode,"
  7654. + " trash.goodsname,"
  7655. + " trash.groutingdailyid,"
  7656. + " trash.groutingdailydetailid,"
  7657. + " trash.groutingdate,"
  7658. + " trash.groutinglineid,"
  7659. + " trash.groutinglinecode,"
  7660. + " trash.groutinglinename,"
  7661. + " trash.gmouldtypeid,"
  7662. + " trash.groutinglinedetailid,"
  7663. + " trash.groutingmouldcode,"
  7664. + " trash.mouldcode,"
  7665. + " :scrapdate,"
  7666. + " :rreason,"
  7667. + " :remarks,"
  7668. + " :auditstatus,"
  7669. + " :auditor,"
  7670. // + " :auditdate,"
  7671. + " sysdate,"
  7672. + " :accountdate,"
  7673. + " trash.accountid,"
  7674. + " :createuserid,"
  7675. + " :updateuserid,"
  7676. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7677. + " :auditopinion,"
  7678. + " trash.GroutingUserID,"
  7679. + " trash.GroutingUserCode,"
  7680. + " trash.GroutingNum,"
  7681. + " trash.IsPublicBody,"
  7682. + " trash.IsReFire,"
  7683. + " trash.kilnid,"
  7684. + " trash.kilncode,"
  7685. + " trash.kilnname,"
  7686. + " trash.kilncarid,"
  7687. + " trash.kilncarcode,"
  7688. + " trash.kilncarname,"
  7689. + " trash.kilncarbatchno,"
  7690. + " trash.kilncarposition,"
  7691. + " trash.specialRepairflag,"
  7692. + " trash.logoid,:ProductionDataID,"
  7693. + " TP_PC_Procedure.ProcedureID, "
  7694. + " TP_PC_Procedure.ProcedureCode, "
  7695. + " TP_PC_Procedure.ProcedureName, "
  7696. + " :ScrapType "
  7697. + " from tp_pm_inproductiontrash trash"
  7698. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7699. + " where trash.barcode = :barcode";
  7700. #endregion
  7701. #region 参数
  7702. OracleParameter[] oracleParameters = null;
  7703. oracleParameters = new OracleParameter[] {
  7704. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7705. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7706. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7707. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7708. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7709. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7710. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7711. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7712. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7713. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7714. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7715. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7716. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7717. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7718. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7719. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7720. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  7721. };
  7722. #endregion
  7723. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7724. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  7725. //// 保存失败
  7726. //if (result != Constant.INT_IS_ONE)
  7727. //{
  7728. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7729. //}
  7730. return null;
  7731. }
  7732. /// <summary>
  7733. /// 保存废弃产品
  7734. /// </summary>
  7735. /// <param name="oracleTrConn">连接对象</param>
  7736. /// <param name="scrapProduct">报废产品</param>
  7737. /// <param name="sUserInfo">用户基本信息</param>
  7738. /// <returns>string</returns>
  7739. private static string AddScrapProduct(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7740. {
  7741. #region sql
  7742. string sql = "insert into tp_pm_scrapproduct"
  7743. + " (scrapproductid,barcode,"
  7744. + " productionlineid,"
  7745. + " productionlinecode,"
  7746. + " productionlinename,"
  7747. + " goodsid,"
  7748. + " goodscode,"
  7749. + " goodsname,"
  7750. + " groutingdailyid,"
  7751. + " groutingdailydetailid,"
  7752. + " groutingdate,"
  7753. + " groutinglineid,"
  7754. + " groutinglinecode,"
  7755. + " groutinglinename,"
  7756. + " gmouldtypeid,"
  7757. + " groutinglinedetailid,"
  7758. + " groutingmouldcode,"
  7759. + " mouldcode,"
  7760. + " scrapdate,"
  7761. + " rreason,"
  7762. + " remarks,"
  7763. + " auditstatus,"
  7764. + " auditor,"
  7765. + " auditdate,"
  7766. + " accountdate,"
  7767. + " accountid,"
  7768. + " createuserid,"
  7769. + " updateuserid,"
  7770. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7771. + " auditopinion,"
  7772. + " GroutingUserID,"
  7773. + " GroutingUserCode,"
  7774. + " GroutingNum,"
  7775. + " IsPublicBody,"
  7776. + " IsReFire,"
  7777. + " kilnid,"
  7778. + " kilncode,"
  7779. + " kilnname,"
  7780. + " kilncarid,"
  7781. + " kilncarcode,"
  7782. + " kilncarname,"
  7783. + " kilncarbatchno,"
  7784. + " kilncarposition,"
  7785. + " specialRepairflag,"
  7786. + " logoid,"
  7787. + " ProductionDataID, "
  7788. + " ProcedureID, "
  7789. + " ProcedureCode, "
  7790. + " ProcedureName, "
  7791. + " ScrapType "
  7792. + ")"
  7793. + " select :scrapproductid,barcode,"
  7794. + " InProduction.productionlineid,"
  7795. + " InProduction.productionlinecode,"
  7796. + " InProduction.productionlinename,"
  7797. + " InProduction.goodsid,"
  7798. + " InProduction.goodscode,"
  7799. + " InProduction.goodsname,"
  7800. + " InProduction.groutingdailyid,"
  7801. + " InProduction.groutingdailydetailid,"
  7802. + " InProduction.groutingdate,"
  7803. + " InProduction.groutinglineid,"
  7804. + " InProduction.groutinglinecode,"
  7805. + " InProduction.groutinglinename,"
  7806. + " InProduction.gmouldtypeid,"
  7807. + " InProduction.groutinglinedetailid,"
  7808. + " InProduction.groutingmouldcode,"
  7809. + " InProduction.mouldcode,"
  7810. + " :scrapdate,"
  7811. + " :rreason,"
  7812. + " :remarks,"
  7813. + " :auditstatus,"
  7814. + " :auditor,"
  7815. // + " :auditdate,"
  7816. + " sysdate,"
  7817. + " :accountdate,"
  7818. + " InProduction.accountid,"
  7819. + " :createuserid,"
  7820. + " :updateuserid,"
  7821. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7822. + " :auditopinion,"
  7823. + " InProduction.GroutingUserID,"
  7824. + " InProduction.GroutingUserCode,"
  7825. + " InProduction.GroutingNum,"
  7826. + " InProduction.IsPublicBody,"
  7827. + " InProduction.IsReFire,"
  7828. + " InProduction.kilnid,"
  7829. + " InProduction.kilncode,"
  7830. + " InProduction.kilnname,"
  7831. + " InProduction.kilncarid,"
  7832. + " InProduction.kilncarcode,"
  7833. + " InProduction.kilncarname,"
  7834. + " InProduction.kilncarbatchno,"
  7835. + " InProduction.kilncarposition,"
  7836. + " InProduction.specialRepairflag,"
  7837. + " InProduction.logoid,";
  7838. if (scrapProduct.IsQualityStatistics == null)
  7839. {
  7840. sql += " InProduction.ProductionDataID,";
  7841. }
  7842. else
  7843. {
  7844. sql += " :ProductionDataID,";
  7845. }
  7846. sql += " TP_PC_Procedure.ProcedureID, "
  7847. + " TP_PC_Procedure.ProcedureCode, "
  7848. + " TP_PC_Procedure.ProcedureName, "
  7849. + " :ScrapType"
  7850. + " from TP_PM_InProduction InProduction"
  7851. + " left join TP_PC_Procedure on InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7852. + " where InProduction.barcode = :barcode";
  7853. #endregion
  7854. #region 参数
  7855. OracleParameter[] oracleParameters = null;
  7856. if (scrapProduct.IsQualityStatistics == null)
  7857. {
  7858. oracleParameters = new OracleParameter[] {
  7859. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7860. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7861. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7862. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7863. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7864. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7865. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7866. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7867. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7868. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7869. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7870. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7871. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7872. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7873. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7874. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7875. };
  7876. }
  7877. else
  7878. {
  7879. oracleParameters = new OracleParameter[] {
  7880. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7881. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7882. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7883. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7884. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7885. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7886. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7887. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7888. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7889. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7890. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7891. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7892. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7893. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7894. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7895. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7896. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  7897. };
  7898. }
  7899. #endregion
  7900. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7901. if (result == 0)
  7902. {
  7903. sql = "insert into tp_pm_scrapproduct"
  7904. + " (scrapproductid,barcode,"
  7905. + " productionlineid,"
  7906. + " productionlinecode,"
  7907. + " productionlinename,"
  7908. + " goodsid,"
  7909. + " goodscode,"
  7910. + " goodsname,"
  7911. + " groutingdailyid,"
  7912. + " groutingdailydetailid,"
  7913. + " groutingdate,"
  7914. + " groutinglineid,"
  7915. + " groutinglinecode,"
  7916. + " groutinglinename,"
  7917. + " gmouldtypeid,"
  7918. + " groutinglinedetailid,"
  7919. + " groutingmouldcode,"
  7920. + " mouldcode,"
  7921. + " scrapdate,"
  7922. + " rreason,"
  7923. + " remarks,"
  7924. + " auditstatus,"
  7925. + " auditor,"
  7926. + " auditdate,"
  7927. + " accountdate,"
  7928. + " accountid,"
  7929. + " createuserid,"
  7930. + " updateuserid,"
  7931. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7932. + " auditopinion,"
  7933. + " GroutingUserID,"
  7934. + " GroutingUserCode,"
  7935. + " GroutingNum,"
  7936. + " IsPublicBody,"
  7937. + " IsReFire,"
  7938. + " kilnid,"
  7939. + " kilncode,"
  7940. + " kilnname,"
  7941. + " kilncarid,"
  7942. + " kilncarcode,"
  7943. + " kilncarname,"
  7944. + " kilncarbatchno,"
  7945. + " kilncarposition,"
  7946. + " specialRepairflag,"
  7947. + " logoid,"
  7948. + " ProductionDataID,"
  7949. + " ProcedureID, "
  7950. + " ProcedureCode, "
  7951. + " ProcedureName, "
  7952. + " ScrapType "
  7953. + ")"
  7954. + " select :scrapproductid,trash.barcode,"
  7955. + " trash.productionlineid,"
  7956. + " trash.productionlinecode,"
  7957. + " trash.productionlinename,"
  7958. + " trash.goodsid,"
  7959. + " trash.goodscode,"
  7960. + " trash.goodsname,"
  7961. + " trash.groutingdailyid,"
  7962. + " trash.groutingdailydetailid,"
  7963. + " trash.groutingdate,"
  7964. + " trash.groutinglineid,"
  7965. + " trash.groutinglinecode,"
  7966. + " trash.groutinglinename,"
  7967. + " trash.gmouldtypeid,"
  7968. + " trash.groutinglinedetailid,"
  7969. + " trash.groutingmouldcode,"
  7970. + " trash.mouldcode,"
  7971. + " :scrapdate,"
  7972. + " :rreason,"
  7973. + " :remarks,"
  7974. + " :auditstatus,"
  7975. + " :auditor,"
  7976. //+ " :auditdate,"
  7977. + " sysdate,"
  7978. + " :accountdate,"
  7979. + " trash.accountid,"
  7980. + " :createuserid,"
  7981. + " :updateuserid,"
  7982. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7983. + " :auditopinion,"
  7984. + " trash.GroutingUserID,"
  7985. + " trash.GroutingUserCode,"
  7986. + " trash.GroutingNum,"
  7987. + " trash.IsPublicBody,"
  7988. + " trash.IsReFire,"
  7989. + " trash.kilnid,"
  7990. + " trash.kilncode,"
  7991. + " trash.kilnname,"
  7992. + " trash.kilncarid,"
  7993. + " trash.kilncarcode,"
  7994. + " trash.kilncarname,"
  7995. + " trash.kilncarbatchno,"
  7996. + " trash.kilncarposition,"
  7997. + " trash.specialRepairflag,"
  7998. + " trash.logoid,";
  7999. if (scrapProduct.IsQualityStatistics == null)
  8000. {
  8001. sql += " trash.ProductionDataID,";
  8002. }
  8003. else
  8004. {
  8005. sql += " :ProductionDataID,";
  8006. }
  8007. sql += //" trash.ProductionDataID," +
  8008. " TP_PC_Procedure.ProcedureID, "
  8009. + " TP_PC_Procedure.ProcedureCode, "
  8010. + " TP_PC_Procedure.ProcedureName, "
  8011. + " :ScrapType "
  8012. + " from TP_PM_InProductionTrash trash"
  8013. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  8014. + " where trash.barcode = :barcode";
  8015. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8016. }
  8017. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  8018. //// 保存失败
  8019. //if (result != Constant.INT_IS_ONE)
  8020. //{
  8021. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8022. //}
  8023. return null;
  8024. }
  8025. /// <summary>
  8026. /// 保存缺陷
  8027. /// </summary>
  8028. /// <param name="oracleTrConn">连接对象</param>
  8029. /// <param name="productionDefect">缺陷数据</param>
  8030. /// <param name="sUserInfo">用户基本信息</param>
  8031. /// <returns>string</returns>
  8032. private static string AddDefect(IDBTransaction oracleTrConn, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  8033. {
  8034. // 查询新插入的生产数据ID
  8035. string sql = "select SEQ_PM_Defect_DefectID.nextval from dual";
  8036. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8037. int productionDefectID = 0;
  8038. if (!string.IsNullOrEmpty(idStr))
  8039. {
  8040. productionDefectID = int.Parse(idStr);
  8041. }
  8042. else
  8043. {
  8044. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8045. }
  8046. #region SQL
  8047. sql = "insert into tp_pm_defect"
  8048. + " ( ProductionDefectID,"
  8049. + " productiondataid,"
  8050. + " barcode,"
  8051. + " productionlineid,"
  8052. + " productionlinecode,"
  8053. + " productionlinename,"
  8054. + " procedureid,"
  8055. + " procedurecode,"
  8056. + " procedurename,"
  8057. + " userid,"
  8058. + " usercode,"
  8059. + " username,"
  8060. + " goodsid,"
  8061. + " goodscode,"
  8062. + " goodsname,"
  8063. + " defectid,"
  8064. + " defectcode,"
  8065. + " defectname,"
  8066. + " defectpositionid,"
  8067. + " defectpositioncode,"
  8068. + " defectpositionname,"
  8069. + " scrapResponFlag,"
  8070. + " defectproductiondataid,"
  8071. + " defectprocedureid,"
  8072. + " defectprocedurecode,"
  8073. + " defectprocedurename,"
  8074. + " defectuserid,"
  8075. + " defectusercode,"
  8076. + " defectusername,"
  8077. + " defectjobs,"
  8078. + " remarks,"
  8079. + " accountid,"
  8080. + " createuserid,"
  8081. + " defectfine,"
  8082. + " misseduserid,"
  8083. + " missedusercode,"
  8084. + " missedusername,"
  8085. + " updateuserid,SpecialDefect,DefectDeductionNum,CheckTime)"
  8086. + " values"
  8087. + " ("
  8088. + " :ProductionDefectID,"
  8089. + " :productiondataid,"
  8090. + " :barcode,"
  8091. + " :productionlineid,"
  8092. + " :productionlinecode,"
  8093. + " :productionlinename,"
  8094. + " :procedureid,"
  8095. + " :procedurecode,"
  8096. + " :procedurename,"
  8097. + " :userid,"
  8098. + " :usercode,"
  8099. + " :username,"
  8100. + " :goodsid,"
  8101. + " :goodscode,"
  8102. + " :goodsname,"
  8103. + " :defectid,"
  8104. + " :defectcode,"
  8105. + " :defectname,"
  8106. + " :defectpositionid,"
  8107. + " :defectpositioncode,"
  8108. + " :defectpositionname,"
  8109. + " :scrapResponFlag,"
  8110. + " :defectproductiondataid,"
  8111. + " :defectprocedureid,"
  8112. + " :defectprocedurecode,"
  8113. + " :defectprocedurename,"
  8114. + " :defectuserid,"
  8115. + " :defectusercode,"
  8116. + " :defectusername,"
  8117. + " :defectjobs,"
  8118. + " :remarks,"
  8119. + " :accountid,"
  8120. + " :createuserid,"
  8121. + " :defectfine,"
  8122. + " :misseduserid,"
  8123. + " :missedusercode,"
  8124. + " :missedusername,"
  8125. + " :updateuserid,:SpecialDefect,:DefectDeductionNum,:CheckTime)";
  8126. #endregion
  8127. #region 参数
  8128. OracleParameter[] oracleParameters = null;
  8129. if (productionDefect.IsPDA == null)
  8130. {
  8131. oracleParameters = new OracleParameter[] {
  8132. new OracleParameter(":ProductionDefectID",productionDefectID),
  8133. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  8134. new OracleParameter(":barcode",productionDefect.BarCode),
  8135. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  8136. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  8137. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  8138. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  8139. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  8140. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  8141. new OracleParameter(":userid",productionDefect.UserID),
  8142. new OracleParameter(":usercode",productionDefect.UserCode),
  8143. new OracleParameter(":username",productionDefect.UserName),
  8144. new OracleParameter(":goodsid",productionDefect.GoodsID),
  8145. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  8146. new OracleParameter(":goodsname",productionDefect.GoodsName),
  8147. new OracleParameter(":defectid",productionDefect.DefectID),
  8148. new OracleParameter(":defectcode",productionDefect.DefectCode),
  8149. new OracleParameter(":defectname",productionDefect.DefectName),
  8150. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  8151. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  8152. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  8153. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  8154. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  8155. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  8156. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  8157. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  8158. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  8159. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  8160. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  8161. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  8162. new OracleParameter(":remarks",productionDefect.Remarks),
  8163. new OracleParameter(":accountid",sUserInfo.AccountID),
  8164. new OracleParameter(":createuserid",sUserInfo.UserID),
  8165. new OracleParameter(":defectfine",productionDefect.DefectFine),
  8166. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  8167. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  8168. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  8169. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8170. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  8171. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  8172. new OracleParameter(":CheckTime",productionDefect.CheckTime.ToString()==string.Empty?null:productionDefect.CheckTime),
  8173. };
  8174. }
  8175. else
  8176. {
  8177. DateTime? pdaCheckTime = null;
  8178. if (productionDefect.PDACheckTime != null)
  8179. {
  8180. if (productionDefect.PDACheckTime.ToString() != string.Empty)
  8181. {
  8182. pdaCheckTime = Convert.ToDateTime(productionDefect.PDACheckTime);
  8183. }
  8184. }
  8185. oracleParameters = new OracleParameter[] {
  8186. new OracleParameter(":ProductionDefectID",productionDefectID),
  8187. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  8188. new OracleParameter(":barcode",productionDefect.BarCode),
  8189. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  8190. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  8191. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  8192. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  8193. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  8194. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  8195. new OracleParameter(":userid",productionDefect.UserID),
  8196. new OracleParameter(":usercode",productionDefect.UserCode),
  8197. new OracleParameter(":username",productionDefect.UserName),
  8198. new OracleParameter(":goodsid",productionDefect.GoodsID),
  8199. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  8200. new OracleParameter(":goodsname",productionDefect.GoodsName),
  8201. new OracleParameter(":defectid",productionDefect.DefectID),
  8202. new OracleParameter(":defectcode",productionDefect.DefectCode),
  8203. new OracleParameter(":defectname",productionDefect.DefectName),
  8204. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  8205. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  8206. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  8207. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  8208. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  8209. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  8210. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  8211. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  8212. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  8213. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  8214. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  8215. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  8216. new OracleParameter(":remarks",productionDefect.Remarks),
  8217. new OracleParameter(":accountid",sUserInfo.AccountID),
  8218. new OracleParameter(":createuserid",sUserInfo.UserID),
  8219. new OracleParameter(":defectfine",productionDefect.DefectFine),
  8220. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  8221. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  8222. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  8223. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8224. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  8225. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  8226. new OracleParameter(":CheckTime",pdaCheckTime),
  8227. };
  8228. }
  8229. #endregion
  8230. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8231. // 保存失败
  8232. if (result != Constant.INT_IS_ONE)
  8233. {
  8234. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8235. }
  8236. //// 查询新插入的生产数据ID
  8237. //sql = "select SEQ_PM_Defect_DefectID.Currval from dual";
  8238. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8239. //int productionDefectID = 0;
  8240. //if (!string.IsNullOrEmpty(idStr))
  8241. //{
  8242. // productionDefectID = int.Parse(idStr);
  8243. //}
  8244. //else
  8245. //{
  8246. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8247. //}
  8248. #region 插入生产缺陷责任者
  8249. if (productionDefect.DefectResponsibles != null)
  8250. {
  8251. foreach (DefectResponsibleEntity DefectResponsible in productionDefect.DefectResponsibles)
  8252. {
  8253. #region SQL
  8254. sql = "insert into tp_pm_defectresponsible"
  8255. + " (productiondefectid,"
  8256. + " staffid,"
  8257. + " userid,"
  8258. + " usercode,"
  8259. + " Ujobsid,"
  8260. + " SJobsID,"
  8261. + " staffstatus,"
  8262. + " accountid,"
  8263. + " createuserid,"
  8264. + " updateuserid)"
  8265. + " values"
  8266. + " (:productiondefectid,"
  8267. + " :staffid,"
  8268. + " :userid,"
  8269. + " :usercode,"
  8270. + " :ujobsid,"
  8271. + " :sjobsid,"
  8272. + " :staffstatus,"
  8273. + " :accountid,"
  8274. + " :createuserid,"
  8275. + " :updateuserid)";
  8276. #endregion
  8277. #region 参数
  8278. oracleParameters = new OracleParameter[] {
  8279. new OracleParameter(":productiondefectid",productionDefectID),
  8280. new OracleParameter(":staffid",DefectResponsible.StaffID),
  8281. new OracleParameter(":userid",DefectResponsible.UserID),
  8282. new OracleParameter(":usercode",DefectResponsible.UserCode),
  8283. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  8284. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  8285. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  8286. new OracleParameter(":accountid",sUserInfo.AccountID),
  8287. new OracleParameter(":createuserid",sUserInfo.UserID),
  8288. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8289. };
  8290. #endregion
  8291. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8292. // 保存失败
  8293. if (result != Constant.INT_IS_ONE)
  8294. {
  8295. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8296. }
  8297. }
  8298. }
  8299. #endregion
  8300. #region 插入生产漏检缺陷责任者
  8301. if (productionDefect.DefectMissedResponsibles != null)
  8302. {
  8303. foreach (DefectMissedResponsibleEntity DefectMissedResponsible in productionDefect.DefectMissedResponsibles)
  8304. {
  8305. #region SQL
  8306. sql = "insert into TP_PM_DefectMissedResponsible"
  8307. + " (productiondefectid,"
  8308. + " staffid,"
  8309. + " userid,"
  8310. + " usercode,"
  8311. + " Ujobsid,"
  8312. + " SJobsID,"
  8313. + " staffstatus,"
  8314. + " accountid,"
  8315. + " createuserid,"
  8316. + " updateuserid)"
  8317. + " values"
  8318. + " (:productiondefectid,"
  8319. + " :staffid,"
  8320. + " :userid,"
  8321. + " :usercode,"
  8322. + " :ujobsid,"
  8323. + " :sjobsid,"
  8324. + " :staffstatus,"
  8325. + " :accountid,"
  8326. + " :createuserid,"
  8327. + " :updateuserid)";
  8328. #endregion
  8329. #region 参数
  8330. oracleParameters = new OracleParameter[] {
  8331. new OracleParameter(":productiondefectid",productionDefectID),
  8332. new OracleParameter(":staffid",DefectMissedResponsible.StaffID),
  8333. new OracleParameter(":userid",DefectMissedResponsible.UserID),
  8334. new OracleParameter(":usercode",DefectMissedResponsible.UserCode),
  8335. new OracleParameter(":ujobsid",DefectMissedResponsible.UJobsID),
  8336. new OracleParameter(":sjobsid",DefectMissedResponsible.SJobsID),
  8337. new OracleParameter(":staffstatus",DefectMissedResponsible.StaffStatus),
  8338. new OracleParameter(":accountid",sUserInfo.AccountID),
  8339. new OracleParameter(":createuserid",sUserInfo.UserID),
  8340. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8341. };
  8342. #endregion
  8343. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8344. // 保存失败
  8345. if (result != Constant.INT_IS_ONE)
  8346. {
  8347. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8348. }
  8349. }
  8350. }
  8351. #endregion
  8352. #region 添加图片
  8353. if (productionDefect.DefectImages != null)
  8354. {
  8355. DateTime upTime = DateTime.Now;
  8356. foreach (DefectImageEntity defectImage in productionDefect.DefectImages)
  8357. {
  8358. // 图片路径为空。上传图片返回路径
  8359. if (string.IsNullOrEmpty(defectImage.ImagePath))
  8360. {
  8361. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic
  8362. .UpLoadImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8363. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8364. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8365. }
  8366. else
  8367. {
  8368. // 安卓端上传的图片
  8369. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic
  8370. .MoveImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8371. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8372. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8373. }
  8374. #region 保存图片
  8375. sql = "insert into tp_pm_defectimage"
  8376. + " ("
  8377. + " productiondefectid,"
  8378. + " barcode,"
  8379. + " thumbnailpath,"
  8380. + " imagepath,"
  8381. + " accountid,"
  8382. + " createuserid,"
  8383. + " updateuserid)"
  8384. + " values"
  8385. + " ("
  8386. + " :productiondefectid,"
  8387. + " :barcode,"
  8388. + " :thumbnailpath,"
  8389. + " :imagepath,"
  8390. + " :accountid,"
  8391. + " :createuserid,"
  8392. + " :updateuserid)";
  8393. oracleParameters = new OracleParameter[] {
  8394. new OracleParameter(":productiondefectid",productionDefectID),
  8395. new OracleParameter(":barcode",productionDefect.BarCode),
  8396. new OracleParameter(":thumbnailpath",defectImage.ThumbnailPath),
  8397. new OracleParameter(":imagepath",defectImage.ImagePath),
  8398. new OracleParameter(":accountid",sUserInfo.AccountID),
  8399. new OracleParameter(":createuserid",sUserInfo.UserID),
  8400. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8401. };
  8402. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8403. // 保存失败
  8404. if (result != Constant.INT_IS_ONE)
  8405. {
  8406. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8407. }
  8408. #endregion
  8409. }
  8410. }
  8411. #endregion
  8412. // 保存成功返回null
  8413. return null;
  8414. }
  8415. #endregion
  8416. #region 进度考核奖惩
  8417. /// <summary>
  8418. /// 根据传入的实体保存 进度考核奖惩记录
  8419. /// </summary>
  8420. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8421. /// <param name="sUserInfo">用户基本信息</param>
  8422. /// <param name="pStatus">新增还是编辑枚举</param>
  8423. /// <returns>PMResultEntity操作结果状态信息</returns>
  8424. public static PMResultEntity SaveStaffProgressRAPInfo(PMProgressRAPEntity pProgressRAPEntity, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
  8425. {
  8426. PMResultEntity resultEnity = new PMResultEntity();
  8427. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8428. try
  8429. {
  8430. if (pProgressRAPEntity == null)
  8431. {
  8432. resultEnity.OperateStatus = 0;
  8433. return resultEnity;
  8434. }
  8435. oracleTrConn.Connect();
  8436. if (pStatus == WCFConstant.FormMode.Add)
  8437. {
  8438. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.nextval from dual");
  8439. #region 新建时插入数据
  8440. string strSql1 = "Insert Into TP_PM_ProgressRAP (RAPID,"
  8441. + "STAFFID"
  8442. + ",RAPTYPE"
  8443. + ",REASON"
  8444. + ",RAPDATE"
  8445. + ",RAPAMOUNT"
  8446. + ",REMARKS"
  8447. + ",AUDITSTATUS"
  8448. + ",ACCOUNTID"
  8449. + ",CREATEUSERID"
  8450. + ",UPDATEUSERID)"
  8451. + " Values ("
  8452. + ":RAPID"
  8453. + ",:pSTAFFID"
  8454. + ",:pRAPTYPE"
  8455. + ",:pREASON"
  8456. + ",:pRAPDATE"
  8457. + ",:pRAPAMOUNT"
  8458. + ",:pREMARKS"
  8459. + ",:pAUDITSTATUS"
  8460. + ",:pACCOUNTID"
  8461. + ",:pCREATEUSERID"
  8462. + ",:pUPDATEUSERID"
  8463. + ")";
  8464. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8465. {
  8466. new OracleParameter(":RAPID", OracleDbType.Int32, Convert.ToInt32(strSeq) , ParameterDirection.Input),
  8467. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8468. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8469. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8470. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8471. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8472. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8473. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32, 0 , ParameterDirection.Input),
  8474. new OracleParameter(":pACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8475. new OracleParameter(":pCREATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8476. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8477. };
  8478. #endregion
  8479. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql1, parmetersSql1);
  8480. //string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.Currval from dual");
  8481. resultEnity.OperateKey = Convert.ToInt32(strSeq);
  8482. }
  8483. else
  8484. {
  8485. #region 判断数据是否可以编辑
  8486. string strSlq2 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8487. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8488. {
  8489. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8490. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8491. };
  8492. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq2, parmetersSql2);
  8493. if (string.IsNullOrEmpty(strAuditStatus))
  8494. {
  8495. oracleTrConn.Rollback();
  8496. oracleTrConn.Disconnect();
  8497. resultEnity.OperateStatus = -2;
  8498. return resultEnity;
  8499. }
  8500. if (!"0".Equals(strAuditStatus))
  8501. {
  8502. //不是待审批状态
  8503. oracleTrConn.Rollback();
  8504. oracleTrConn.Disconnect();
  8505. resultEnity.OperateStatus = -1;
  8506. return resultEnity;
  8507. }
  8508. #endregion
  8509. #region 编辑时更新数据
  8510. string strSql3 = "Update TP_PM_ProgressRAP Set "
  8511. + "RAPTYPE = :pRAPTYPE"
  8512. + ",REASON = :pREASON"
  8513. + ",RAPDATE = :pRAPDATE"
  8514. + ",RAPAMOUNT = :pRAPAMOUNT"
  8515. + ",REMARKS = :pREMARKS"
  8516. + ",UPDATEUSERID = :pUPDATEUSERID"
  8517. + " Where RAPID = :pRAPID And STAFFID = :pSTAFFID And AccountID = :pAccountID";
  8518. OracleParameter[] parmetersSql3 = new OracleParameter[]
  8519. {
  8520. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8521. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8522. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8523. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8524. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8525. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8526. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8527. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8528. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8529. };
  8530. #endregion
  8531. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
  8532. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8533. }
  8534. oracleTrConn.Commit();
  8535. oracleTrConn.Disconnect();
  8536. return resultEnity;
  8537. }
  8538. catch (Exception ex)
  8539. {
  8540. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8541. {
  8542. oracleTrConn.Rollback();
  8543. oracleTrConn.Disconnect();
  8544. }
  8545. throw ex;
  8546. }
  8547. finally
  8548. {
  8549. if (oracleTrConn.ConnState == ConnectionState.Open)
  8550. {
  8551. oracleTrConn.Disconnect();
  8552. }
  8553. }
  8554. }
  8555. /// <summary>
  8556. /// 进度考核奖惩审批
  8557. /// </summary>
  8558. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8559. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  8560. /// <param name="sUserInfo">用户基本信息</param>
  8561. /// <returns>PMResultEntity操作结果状态信息</returns>
  8562. public static PMResultEntity SaveStaffProgressRAPApprovalInfo(PMProgressRAPEntity pProgressRAPEntity, bool pState, SUserInfo sUserInfo)
  8563. {
  8564. PMResultEntity resultEnity = new PMResultEntity();
  8565. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8566. try
  8567. {
  8568. if (pProgressRAPEntity == null)
  8569. {
  8570. resultEnity.OperateStatus = 0;
  8571. return resultEnity;
  8572. }
  8573. oracleTrConn.Connect();
  8574. #region 判断数据是否可以编辑
  8575. string strSlq1 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8576. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8577. {
  8578. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8579. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8580. };
  8581. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq1, parmetersSql1);
  8582. if (string.IsNullOrEmpty(strAuditStatus))
  8583. {
  8584. oracleTrConn.Rollback();
  8585. oracleTrConn.Disconnect();
  8586. resultEnity.OperateStatus = -2;
  8587. return resultEnity;
  8588. }
  8589. if (!"0".Equals(strAuditStatus))
  8590. {
  8591. //不是待审批状态
  8592. oracleTrConn.Rollback();
  8593. oracleTrConn.Disconnect();
  8594. resultEnity.OperateStatus = -1;
  8595. return resultEnity;
  8596. }
  8597. #endregion
  8598. #region 更新审批数据
  8599. int intAuditStatus = 2; //2:审核未通过
  8600. if (pState)
  8601. {
  8602. intAuditStatus = 1; //1:审核通过;
  8603. }
  8604. string strSql2 = "Update TP_PM_ProgressRAP Set "
  8605. + "AUDITSTATUS = :pAUDITSTATUS"
  8606. + ",AUDITOR = :pAUDITOR"
  8607. + ",AuditlDate = sysdate"
  8608. + ",ACCOUNTDATE = FUN_CMN_GetAccountDate(:pAccountID1)"
  8609. + ",UPDATEUSERID = :pUPDATEUSERID"
  8610. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8611. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8612. {
  8613. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32,intAuditStatus, ParameterDirection.Input),
  8614. new OracleParameter(":pAUDITOR", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8615. new OracleParameter(":pAccountID1", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8616. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8617. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8618. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8619. };
  8620. #endregion
  8621. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  8622. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8623. oracleTrConn.Commit();
  8624. oracleTrConn.Disconnect();
  8625. return resultEnity;
  8626. }
  8627. catch (Exception ex)
  8628. {
  8629. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8630. {
  8631. oracleTrConn.Rollback();
  8632. oracleTrConn.Disconnect();
  8633. }
  8634. throw ex;
  8635. }
  8636. finally
  8637. {
  8638. if (oracleTrConn.ConnState == ConnectionState.Open)
  8639. {
  8640. oracleTrConn.Disconnect();
  8641. }
  8642. }
  8643. }
  8644. /// <summary>
  8645. /// 设置进度考核奖惩停用
  8646. /// </summary>
  8647. /// <param name="pRAPID">进度考核奖惩编号</param>
  8648. /// <param name="sUserInfo">用户基本信息</param>
  8649. /// <returns>PMResultEntity操作结果状态信息</returns>
  8650. public static PMResultEntity SetStaffProgressRAPValueFlag(int pRAPID, SUserInfo sUserInfo)
  8651. {
  8652. PMResultEntity resultEnity = new PMResultEntity();
  8653. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8654. try
  8655. {
  8656. oracleTrConn.Connect();
  8657. string sql = "Select max(SettlementFlag) From TP_PM_ProgressRAP Where RAPID =" + pRAPID + " And AuditStatus = 0 And ValueFlag = 1";
  8658. string strSettlementFlag = oracleTrConn.GetSqlResultToStr(sql);
  8659. if (!string.IsNullOrEmpty(strSettlementFlag))
  8660. {
  8661. if ("1".Equals(strSettlementFlag)) //工资结算标识 1:已经结算 0:未结算
  8662. {
  8663. oracleTrConn.Rollback();
  8664. oracleTrConn.Disconnect();
  8665. resultEnity.OperateStatus = -3;
  8666. return resultEnity;
  8667. }
  8668. string sqlString = "Update TP_PM_ProgressRAP Set ValueFlag = 0,UpdateUserID = :pUpdateUserID"
  8669. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8670. OracleParameter[] parmetersSql = new OracleParameter[]
  8671. {
  8672. new OracleParameter(":pUpdateUserID", OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  8673. new OracleParameter(":pRAPID", OracleDbType.Int32, pRAPID , ParameterDirection.Input),
  8674. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8675. };
  8676. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmetersSql);
  8677. oracleTrConn.Commit();
  8678. oracleTrConn.Disconnect();
  8679. return resultEnity;
  8680. }
  8681. else
  8682. {
  8683. oracleTrConn.Rollback();
  8684. oracleTrConn.Disconnect();
  8685. resultEnity.OperateStatus = -2;
  8686. return resultEnity;
  8687. }
  8688. }
  8689. catch (Exception ex)
  8690. {
  8691. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8692. {
  8693. oracleTrConn.Rollback();
  8694. oracleTrConn.Disconnect();
  8695. }
  8696. throw ex;
  8697. }
  8698. finally
  8699. {
  8700. if (oracleTrConn.ConnState == ConnectionState.Open)
  8701. {
  8702. oracleTrConn.Disconnect();
  8703. }
  8704. }
  8705. }
  8706. #endregion
  8707. #endregion
  8708. #region 私有方法
  8709. /// <summary>
  8710. /// 将窑车号下的条码转换成Table
  8711. /// </summary>
  8712. /// <param name="oracleTrConn">数据连接</param>
  8713. /// <param name="productionTable">手机传入的Table</param>
  8714. /// <param name="sUserInfo">用户基本信息</param>
  8715. /// <returns>DataTable</returns>
  8716. private static DataTable CarNoInfoConvertToTable(IDBTransaction oracleTrConn, DataTable productionTable, SUserInfo sUserInfo)
  8717. {
  8718. if (productionTable != null
  8719. && productionTable.Rows.Count > Constant.INT_IS_ZERO)
  8720. {
  8721. DataRow row = productionTable.Rows[Constant.INT_IS_ZERO];
  8722. string sql = "select carGoods.Barcode,"
  8723. + " carGoods.KilnCarID,"
  8724. + " car.KilncarCode,"
  8725. + " car.KilncarName,"
  8726. + " kiln.kilnid,"
  8727. + " kiln.kilnCode,"
  8728. + " kiln.kilnName,"
  8729. + " carGoods.Kilncarposition,"
  8730. + " carGoods.KilnCarBatchNo,"
  8731. + " carGoods.GoodsID,"
  8732. + " goods.GoodsCode,"
  8733. + " goods.GoodsName,"
  8734. + " :userID as UserID,"
  8735. + " :userCode as UserCode,"
  8736. + " :userName as UserName,"
  8737. + " :Remarks as Remarks"
  8738. + " from TP_PM_KilnCarGoods carGoods"
  8739. + " inner join TP_MST_KilnCar car on car.KilnCarID = carGoods.KilnCarID"
  8740. + " inner join TP_MST_Kiln kiln on kiln.KilnID = car.KilnID"
  8741. + " inner join TP_MST_Goods goods on goods.goodsid = carGoods.GoodsID"
  8742. + " where car.kilncarcode = :kilncarcode and carGoods.AccountID = :accountID";
  8743. OracleParameter[] oracleParameters = new OracleParameter[] {
  8744. new OracleParameter(":userID",row["UserID"].ToString()),
  8745. new OracleParameter(":userCode",row["UserCode"].ToString()),
  8746. new OracleParameter(":userName",row["UserName"].ToString()),
  8747. new OracleParameter(":kilncarcode",row["KilnCarCode"].ToString()),
  8748. new OracleParameter(":accountID",sUserInfo.AccountID),
  8749. new OracleParameter(":Remarks",row["Remarks"].ToString()),
  8750. };
  8751. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  8752. if (ds != null
  8753. && ds.Tables.Count > Constant.INT_IS_ZERO
  8754. && ds.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  8755. {
  8756. return ds.Tables[0];
  8757. }
  8758. return productionTable;
  8759. }
  8760. return productionTable;
  8761. }
  8762. #endregion
  8763. #region PDA端保存条码
  8764. /// <summary>
  8765. /// 添加成品编辑
  8766. /// </summary>
  8767. /// <param name="oracleTrConn">数据连接</param>
  8768. /// <param name="procedure">工序对象</param>
  8769. /// <param name="productionDataEntitys">生产数据集</param>
  8770. /// <param name="sUserInfo">用户基本信息</param>
  8771. /// <returns>string</returns>
  8772. private static string AddFinishCheckPDA(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  8773. {
  8774. string errMsg = "";
  8775. // 获得账务日期
  8776. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  8777. // 本批采集的批次号
  8778. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  8779. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  8780. foreach (ProductionDataEntity productionData in productionDataEntitys)
  8781. {
  8782. bool RejectToReject = false;
  8783. if (string.IsNullOrEmpty(productionData.Barcode))
  8784. {
  8785. throw new Exception("传入的条码号为空");
  8786. }
  8787. int goodsID = Constant.INT_IS_ZERO;
  8788. string goodsCode = string.Empty;
  8789. string goodsName = string.Empty;
  8790. // 注浆者工号
  8791. string groutingUserCode = string.Empty;
  8792. // 次品标识
  8793. bool substandardFlag = false;
  8794. string test = productionData.MouldCode;
  8795. #region 校验条码有效性
  8796. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  8797. if (!string.IsNullOrEmpty(errMsg))
  8798. {
  8799. // 编辑重烧时,会提示不可到达;编辑次品时,会提示已经报废
  8800. //if (productionData.ProductionDataID == 0)
  8801. //if (!errMsg.Contains("次品"))
  8802. return errMsg;
  8803. }
  8804. #endregion
  8805. int isInProduction = 1;
  8806. #region 修改条码
  8807. if (productionData.ProductionDataID > 0) //表示编辑条码
  8808. {
  8809. #region 验证改判有效期
  8810. // 前台已有相关验证,但还是产生了超期改判,后台保存前增加验证。
  8811. string sqlString = "select pdin.createtime from tp_pm_productiondatain pdin where pdin.productiondataid = " + productionData.ProductionDataID;
  8812. DateTime createtime = Convert.ToDateTime(oracleTrConn.GetSqlResultToObj(sqlString)).Date;
  8813. // 参数验证用服务端当前设置
  8814. sqlString = "SELECT sst.settingvalue\n" +
  8815. " FROM tp_mst_systemsetting sst\n" +
  8816. " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  8817. " AND sst.settingcode = 'S_PM_009'";
  8818. string strValue = oracleTrConn.GetSqlResultToStr(sqlString);
  8819. int days = 0;
  8820. int pDays = 0;
  8821. if (int.TryParse(strValue, out pDays))
  8822. {
  8823. days = pDays;
  8824. }
  8825. if (days != 0 && createtime <= DateTime.Now.Date.AddDays(-days))
  8826. {
  8827. return string.Format(Messages.MSG_S_PM_009, createtime.ToString("yyyy-MM-dd"), days.ToString(), createtime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  8828. }
  8829. #endregion
  8830. //
  8831. string sqlOPTimeStamp = "";
  8832. OracleParameter[] parmetersSql = null;
  8833. #region 验证在产时间戳
  8834. if (productionData.OPTimeStampPDA == null) // 表示PC端,因为只有安卓端才给此数据字段给值
  8835. {
  8836. sqlOPTimeStamp = @"select
  8837. 1
  8838. from TP_PM_InProduction
  8839. where
  8840. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp = :OPTimeStamp
  8841. union
  8842. select
  8843. 0
  8844. from Tp_Pm_Inproductiontrash
  8845. where
  8846. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp = :OPTimeStamp ";
  8847. parmetersSql = new OracleParameter[]
  8848. {
  8849. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp,productionData.OPTimeStamp, ParameterDirection.Input),
  8850. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8851. };
  8852. }
  8853. else
  8854. {
  8855. sqlOPTimeStamp = @"select
  8856. 1
  8857. from TP_PM_InProduction
  8858. where
  8859. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')
  8860. union
  8861. select
  8862. 0
  8863. from Tp_Pm_Inproductiontrash
  8864. where
  8865. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')";
  8866. parmetersSql = new OracleParameter[]
  8867. {
  8868. new OracleParameter(":OPTimeStamp", OracleDbType.NVarchar2, productionData.OPTimeStampPDA, ParameterDirection.Input),
  8869. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8870. };
  8871. }
  8872. if (test != "挂起跳过") {
  8873. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlOPTimeStamp, parmetersSql);
  8874. if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  8875. {
  8876. return "数据已经被修改,请重新进行编辑";
  8877. }
  8878. isInProduction = Convert.ToInt32(returnDataset.Tables[0].Rows[0][0]);
  8879. }
  8880. #endregion
  8881. //如果原来是 次品 / 废品 xuwei modify 2019-12-13 加入 废品识别
  8882. if (productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  8883. ||
  8884. productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  8885. ||
  8886. productionData.OrgGoodsLevelTypeID == 20 // 中陶特加 废品(废品就是报费,直接扔的那种) 2024-07-09
  8887. )
  8888. {
  8889. //改为 次品 废品 xuwei modify 2019-12-13 加入废品识别
  8890. if (productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  8891. ||
  8892. productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  8893. ||
  8894. productionData.GoodsLevelTypeID == 20 // 中陶特加 废品(废品就是报费,直接扔的那种) 2024-07-09
  8895. )
  8896. {
  8897. // 删除生产数据及相关表与报损表
  8898. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8899. if (!string.IsNullOrEmpty(errMsg))
  8900. {
  8901. return errMsg;
  8902. }
  8903. RejectToReject = true;
  8904. } //改为不是 次品 废品 xuwei modify 2019-12-13 加入废品识别
  8905. else if (productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Reject.GetHashCode()
  8906. &&
  8907. productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Waste.GetHashCode()
  8908. &&
  8909. productionData.GoodsLevelTypeID != 20 // 中陶特加 废品(废品就是报费,直接扔的那种) 2024-07-09
  8910. )
  8911. {
  8912. // 删除生产数据及相关表与报损表
  8913. errMsg = DeleteSubstandardToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8914. if (!string.IsNullOrEmpty(errMsg))
  8915. {
  8916. return errMsg;
  8917. }
  8918. }
  8919. }
  8920. else
  8921. {
  8922. // 原来产品分级不是次品
  8923. errMsg = DeleteNormalToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8924. if (!string.IsNullOrEmpty(errMsg))
  8925. {
  8926. return errMsg;
  8927. }
  8928. }
  8929. }
  8930. else // wangx 2016-12-13 防止同时两个人新建数据,加判断条件
  8931. {
  8932. string sqlCurrrentProcedure = @"select Flowprocedureid from tp_pm_inproduction where BarCode=:BarCode";
  8933. OracleParameter[] parmetersSql = null;
  8934. parmetersSql = new OracleParameter[]
  8935. {
  8936. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8937. };
  8938. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlCurrrentProcedure, parmetersSql);
  8939. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 begin
  8940. //if (returnDataset != null
  8941. // && returnDataset.Tables[0].Rows.Count > 0)
  8942. //{
  8943. // if (Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID)
  8944. // {
  8945. // return "【此条码生产数据已被修改,请重开画面后再扫描】";
  8946. // }
  8947. //}
  8948. if (returnDataset == null ||
  8949. returnDataset.Tables.Count == 0 ||
  8950. returnDataset.Tables[0].Rows.Count == 0 ||
  8951. Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID
  8952. )
  8953. {
  8954. return "【此条码生产数据已被修改,请重新扫描此条码】";
  8955. }
  8956. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 end
  8957. }
  8958. #endregion
  8959. // 查询新插入的生产数据ID
  8960. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  8961. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8962. int productionDataID = 0;
  8963. if (!string.IsNullOrEmpty(idStr))
  8964. {
  8965. productionDataID = int.Parse(idStr);
  8966. }
  8967. else
  8968. {
  8969. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8970. }
  8971. int? ClassesSettingID = null;//班次配置ID
  8972. #region 添加生产者数据
  8973. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  8974. if (!string.IsNullOrEmpty(errMsg))
  8975. {
  8976. return errMsg;
  8977. }
  8978. #endregion
  8979. #region 添加生产数据
  8980. #region 属性赋值
  8981. productionData.ClassesSettingID = ClassesSettingID;
  8982. productionData.ProductionDataID = Convert.ToInt32(idStr);
  8983. productionData.CentralizedBatchNo = centralizedBatchNo;
  8984. productionData.ProductionLineID = procedure.ProductionLineID;
  8985. productionData.ProductionLineCode = procedure.ProductionlineCode;
  8986. productionData.ProductionLineName = procedure.ProductionlineName;
  8987. productionData.CompleteProcedureID = procedure.ProcedureID;
  8988. productionData.ProcedureCode = procedure.ProcedureCode;
  8989. productionData.ProcedureName = procedure.ProcedureName;
  8990. productionData.ProcedureModel = procedure.ProcedureModel;
  8991. productionData.ModelType = procedure.ModelType;
  8992. productionData.NodeType = procedure.NodeType;
  8993. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  8994. // 重烧
  8995. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  8996. {
  8997. //productionData.GoodsLevelID = null;
  8998. //productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  8999. productionData.IsReFire = (int)Constant.ReFireFlag.No;//产品分级的时候,并不标记,走过重烧第一个结点之后,更新此字段
  9000. }
  9001. // 次品 废品 xuwei 2019-12-13 加入 废品识别
  9002. else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject
  9003. ||
  9004. productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste
  9005. ||
  9006. productionData.GoodsLevelTypeID == 20 // 中陶特加 废品(废品就是报费,直接扔的那种) 2024-07-09
  9007. )
  9008. {
  9009. //productionData.GoodsLevelID = null;
  9010. substandardFlag = true;
  9011. }
  9012. // 查询新插入的生产数据ID
  9013. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  9014. // {
  9015. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  9016. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  9017. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  9018. // {
  9019. ////// string sqlReFire = @"select
  9020. ////// isrefire
  9021. ////// from tp_pm_inproduction where barcode=:barcode
  9022. ////// union
  9023. ////// select
  9024. ////// isrefire
  9025. ////// from TP_PM_InProductionTrash where barcode=:barcode
  9026. ////// ";
  9027. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  9028. ////// new OracleParameter(":barcode", productionData.Barcode),
  9029. ////// };
  9030. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  9031. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  9032. ////// {
  9033. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  9034. ////// }
  9035. // }
  9036. productionData.OrganizationID = procedure.OrganizationID;
  9037. productionData.GoodsID = goodsID;
  9038. productionData.GoodsCode = goodsCode;
  9039. productionData.GoodsName = goodsName;
  9040. productionData.GoodsLevelID = productionData.GoodsLevelID;
  9041. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9042. //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  9043. //{
  9044. // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  9045. //}
  9046. //else
  9047. //{
  9048. // productionData.GoodsEnding = null;
  9049. //}
  9050. #endregion
  9051. string OutSpecialRepairflag = "0";//干补标识
  9052. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9053. errMsg = AddFinishCheckProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9054. if (!string.IsNullOrEmpty(errMsg))
  9055. {
  9056. return errMsg;
  9057. }
  9058. #endregion
  9059. //#region 添加生产者数据
  9060. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  9061. //if (!string.IsNullOrEmpty(errMsg))
  9062. //{
  9063. // return errMsg;
  9064. //}
  9065. //#endregion
  9066. #region 条码有缺陷
  9067. #region 是次品 添加废弃产品
  9068. string ResponProcedureidStr = "";
  9069. if (substandardFlag)
  9070. {
  9071. #region 修改在产产品数据的当前工序,防止直接报损在产工序没有改过来,记录的是上一个工序
  9072. string updateInInProductionForScrap = @"Update tp_pm_inproduction
  9073. set FlowProcedureID=:flowProcedureID,ProcedureID=:flowProcedureID where barcode=:barcode";
  9074. List<OracleParameter> paras = new List<OracleParameter>();
  9075. paras.Add(new OracleParameter(":barcode", productionData.Barcode));
  9076. paras.Add(new OracleParameter(":flowProcedureID", procedure.ProcedureID));
  9077. oracleTrConn.ExecuteNonQuery(updateInInProductionForScrap, paras.ToArray());
  9078. #endregion
  9079. #region 添加废弃产品
  9080. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  9081. #region 属性赋值
  9082. scrapProduct.BarCode = productionData.Barcode;
  9083. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  9084. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  9085. scrapProduct.ScrapDate = accountDate;
  9086. scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  9087. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  9088. scrapProduct.Auditor = sUserInfo.UserID;
  9089. scrapProduct.AuditlDate = accountDate;
  9090. scrapProduct.AccountDate = accountDate;
  9091. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  9092. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9093. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  9094. // 查询新插入的废弃ID
  9095. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  9096. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9097. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9098. scrapProduct.ScrapType = 1;
  9099. scrapProduct.IsQualityStatistics = 1;//新加的,因为这个报损方法是共通的,用于区别是哪里传进去的
  9100. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  9101. #endregion
  9102. if (!RejectToReject) //不是次品到次品 wangxin 20150417
  9103. {
  9104. // 保存报废
  9105. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  9106. }
  9107. else
  9108. {
  9109. if (isInProduction == 1)
  9110. {
  9111. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  9112. }
  9113. else
  9114. {
  9115. // 保存报废
  9116. errMsg = AddScrapProductRejectToReject(oracleTrConn, scrapProduct, sUserInfo);
  9117. }
  9118. }
  9119. //不是次品到次品 wangxin 20150417
  9120. // 保存失败
  9121. if (!string.IsNullOrEmpty(errMsg))
  9122. {
  9123. return errMsg;
  9124. }
  9125. #endregion
  9126. }
  9127. #endregion
  9128. // 存在缺陷 插入缺陷表
  9129. if (productionData.ProductionDefects != null)
  9130. {
  9131. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  9132. {
  9133. #region 保存缺陷
  9134. productionDefect.ProductionDataID = productionDataID;
  9135. productionDefect.BarCode = productionData.Barcode;
  9136. productionDefect.ProductionLineID = procedure.ProductionLineID;
  9137. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  9138. productionDefect.ProductionLineName = procedure.ProductionlineName;
  9139. productionDefect.ProcedureID = procedure.ProcedureID;
  9140. productionDefect.ProcedureCode = procedure.ProcedureCode;
  9141. productionDefect.ProcedureName = procedure.ProcedureName;
  9142. productionDefect.UserID = productionData.UserID;
  9143. productionDefect.UserCode = productionData.UserCode;
  9144. productionDefect.UserName = productionData.UserName;
  9145. productionDefect.GoodsID = productionData.GoodsID;
  9146. productionDefect.GoodsCode = productionData.GoodsCode;
  9147. productionDefect.GoodsName = productionData.GoodsName;
  9148. productionData.Remarks = productionData.Remarks;
  9149. productionDefect.ScrapResponFlag
  9150. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  9151. // 保存缺陷
  9152. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  9153. if (!string.IsNullOrEmpty(errMsg))
  9154. {
  9155. return errMsg;
  9156. }
  9157. #endregion
  9158. #region 是次品 添加废弃责任工序
  9159. if (substandardFlag)
  9160. {
  9161. //if (productionDefect.DefectProcedureID != null)
  9162. {
  9163. #region 添加责任工序
  9164. ResponProcedureEntity responProce = new ResponProcedureEntity();
  9165. //// 查询新插入的废弃ID
  9166. //string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  9167. //string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9168. #region 属性赋值
  9169. responProce.BarCode = productionData.Barcode;
  9170. responProce.ProductionDataID = productionDataID;
  9171. responProce.ProductionLineID = productionDefect.ProductionLineID;
  9172. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  9173. responProce.ProductionLineName = productionDefect.ProductionLineName;
  9174. responProce.ProcedureID = productionDefect.DefectProcedureID;
  9175. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  9176. responProce.ProcedureName = productionDefect.DefectProcedureName;
  9177. responProce.UserID = productionDefect.DefectUserID;
  9178. responProce.UserCode = productionDefect.DefectUserCode;
  9179. responProce.UserName = productionDefect.DefectUserName;
  9180. responProce.Remarks = productionDefect.Remarks;
  9181. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9182. #endregion
  9183. // 保存责任工序
  9184. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  9185. // 保存失败
  9186. if (!string.IsNullOrEmpty(errMsg))
  9187. {
  9188. return errMsg;
  9189. }
  9190. #endregion
  9191. }
  9192. }
  9193. #endregion
  9194. }
  9195. }
  9196. #endregion
  9197. #region 条码是次品 删除在产产品数据
  9198. if (substandardFlag)
  9199. {
  9200. #region 删除在产产品数据
  9201. InProductionEntity delInProductionEntity = new InProductionEntity();
  9202. delInProductionEntity.BarCode = productionData.Barcode;
  9203. delInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9204. delInProductionEntity.ProductionDataID = productionDataID;
  9205. delInProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9206. delInProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9207. // 执行删除 在产数据
  9208. errMsg = DeletePDAInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  9209. // 执行失败
  9210. if (!string.IsNullOrEmpty(errMsg))
  9211. {
  9212. return errMsg;
  9213. }
  9214. #endregion
  9215. }
  9216. #endregion
  9217. #region 条码不是次品
  9218. if (!substandardFlag)
  9219. {
  9220. #region 中间工序/重烧 修改在产产品数据
  9221. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  9222. || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  9223. {
  9224. #region 修改在产产品数据的当前工序
  9225. InProductionEntity inProductionEntity = new InProductionEntity();
  9226. inProductionEntity.BarCode = productionData.Barcode;
  9227. //流程工序
  9228. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  9229. // 当前工序
  9230. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9231. inProductionEntity.ProcedureID = procedure.ProcedureID;
  9232. //生产数据ID
  9233. inProductionEntity.ProductionDataID = productionDataID;
  9234. // 工序模型
  9235. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  9236. // 工序类别
  9237. inProductionEntity.ModelType = procedure.ModelType;
  9238. // 生产工号
  9239. inProductionEntity.UserID = productionData.UserID;
  9240. // 重烧
  9241. inProductionEntity.IsReFire = productionData.IsReFire;
  9242. // 缺陷
  9243. inProductionEntity.DefectFlag = productionData.DefectFlag;
  9244. // 产品分级
  9245. inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  9246. // 返工工序ID
  9247. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  9248. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9249. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9250. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  9251. // 执行修改
  9252. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  9253. // 执行失败
  9254. if (!string.IsNullOrEmpty(errMsg))
  9255. {
  9256. return errMsg;
  9257. }
  9258. #endregion
  9259. }
  9260. #endregion
  9261. #region 结束工序 添加成品数据 删除在产产品数据
  9262. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  9263. {
  9264. #region 添加成品数据 删除在产产品数据
  9265. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  9266. finishedProduct.BarCode = productionData.Barcode;
  9267. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  9268. if (!string.IsNullOrEmpty(errMsg))
  9269. {
  9270. return errMsg;
  9271. }
  9272. InProductionEntity delInProductionEntity = new InProductionEntity();
  9273. delInProductionEntity.BarCode = productionData.Barcode;
  9274. // 执行删除 在产数据
  9275. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  9276. // 执行失败
  9277. if (!string.IsNullOrEmpty(errMsg))
  9278. {
  9279. return errMsg;
  9280. }
  9281. #endregion
  9282. }
  9283. #endregion
  9284. }
  9285. #endregion
  9286. #region 写入检验标识 CheckFlag 用于计件 xuwei 2020-04-21
  9287. oracleTrConn.ExecuteNonQuery(@"
  9288. UPDATE
  9289. TP_PM_PRODUCTIONDATA SET CHECKFLAG = :CHECKFLAG
  9290. WHERE
  9291. PRODUCTIONDATAID = :PRODUCTIONDATAID
  9292. ",
  9293. new OracleParameter[] {
  9294. new OracleParameter(":CHECKFLAG",productionData.CheckFlag),
  9295. new OracleParameter(":PRODUCTIONDATAID",productionDataID)
  9296. }
  9297. );
  9298. #endregion
  9299. }
  9300. return errMsg;
  9301. }
  9302. /// <summary>
  9303. /// 编辑后删除生产数据
  9304. /// </summary>
  9305. /// <param name="productionDataID">生产数据ID</param>
  9306. /// <returns>int</returns>
  9307. public static string DeleteSubstandardToSubstandardByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9308. {
  9309. int deleteRow = 0;
  9310. try
  9311. {
  9312. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9313. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9314. (
  9315. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9316. )";
  9317. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9318. where
  9319. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9320. ";
  9321. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9322. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9323. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9324. where TP_PM_DefectResponsible.Productiondefectid in
  9325. (
  9326. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9327. )";
  9328. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9329. where TP_PM_DefectImage.Productiondefectid in
  9330. (
  9331. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9332. )";
  9333. // string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  9334. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  9335. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  9336. OracleParameter[] paras = new OracleParameter[]{
  9337. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9338. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9339. };
  9340. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9341. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9342. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9343. };
  9344. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9345. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9346. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9347. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9348. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9349. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  9350. // 有错误
  9351. if (deleteRow == 0)
  9352. {
  9353. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9354. }
  9355. return null;
  9356. }
  9357. catch (Exception ex)
  9358. {
  9359. throw ex;
  9360. }
  9361. }
  9362. /// <summary>
  9363. /// 编辑后删除生产数据
  9364. /// </summary>
  9365. /// <param name="productionDataID">生产数据ID</param>
  9366. /// <returns>int</returns>
  9367. public static string DeleteSubstandardToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9368. {
  9369. int deleteRow = 0;
  9370. try
  9371. {
  9372. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9373. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9374. (
  9375. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9376. )";
  9377. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9378. where
  9379. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9380. ";
  9381. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9382. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9383. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9384. where TP_PM_DefectResponsible.Productiondefectid in
  9385. (
  9386. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9387. )";
  9388. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9389. where TP_PM_DefectImage.Productiondefectid in
  9390. (
  9391. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9392. )";
  9393. //string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  9394. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  9395. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  9396. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  9397. string sqlInsert = @"insert into TP_PM_InProduction
  9398. (
  9399. BarCode,
  9400. ProductionLineID,
  9401. ProductionLineCode,
  9402. ProductionLineName,
  9403. ProcedureModel,
  9404. ModelType,
  9405. DefectFlag,
  9406. ReworkProcedureID,
  9407. IsPublicBody,
  9408. IsReFire,
  9409. GoodsLevelID,
  9410. GoodsLevelTypeID,
  9411. GoodsID,
  9412. GoodsCode,
  9413. GoodsName,
  9414. UserID,
  9415. GroutingDailyID,
  9416. GroutingDailyDetailID,
  9417. GroutingDate,
  9418. GroutingLineID,
  9419. GroutingLineCode,
  9420. GroutingLineName,
  9421. GMouldTypeID,
  9422. CanManyTimes,
  9423. GroutingLineDetailID,
  9424. GroutingMouldCode,
  9425. MouldCode,
  9426. GroutingUserID,
  9427. GroutingUserCode,
  9428. GroutingNum,
  9429. Remarks,
  9430. KilnID,
  9431. KilnCode,
  9432. KilnName,
  9433. KilnCarID,
  9434. KilnCarCode,
  9435. KilnCarName,
  9436. KilnCarBatchNo,
  9437. KilnCarPosition,
  9438. AccountID,
  9439. ValueFlag,
  9440. CreateTime,
  9441. CreateUserID,
  9442. UpdateTime,
  9443. UpdateUserID,
  9444. OPTimeStamp,
  9445. SpecialRepairflag,
  9446. FlowProcedureID,
  9447. FlowProcedureTime,
  9448. ProcedureID,
  9449. ProcedureTime,
  9450. ProductionDataID,
  9451. logoid, ISREWORKFLAG, SEMICHECKID
  9452. )
  9453. select
  9454. BarCode,
  9455. ProductionLineID,
  9456. ProductionLineCode,
  9457. ProductionLineName,
  9458. ProcedureModel,
  9459. ModelType,
  9460. DefectFlag,
  9461. ReworkProcedureID,
  9462. IsPublicBody,
  9463. IsReFire,
  9464. GoodsLevelID,
  9465. GoodsLevelTypeID,
  9466. GoodsID,
  9467. GoodsCode,
  9468. GoodsName,
  9469. UserID,
  9470. GroutingDailyID,
  9471. GroutingDailyDetailID,
  9472. GroutingDate,
  9473. GroutingLineID,
  9474. GroutingLineCode,
  9475. GroutingLineName,
  9476. GMouldTypeID,
  9477. CanManyTimes,
  9478. GroutingLineDetailID,
  9479. GroutingMouldCode,
  9480. MouldCode,
  9481. GroutingUserID,
  9482. GroutingUserCode,
  9483. GroutingNum,
  9484. Remarks,
  9485. KilnID,
  9486. KilnCode,
  9487. KilnName,
  9488. KilnCarID,
  9489. KilnCarCode,
  9490. KilnCarName,
  9491. KilnCarBatchNo,
  9492. KilnCarPosition,
  9493. AccountID,
  9494. ValueFlag,
  9495. CreateTime,
  9496. CreateUserID,
  9497. UpdateTime,
  9498. UpdateUserID,
  9499. OPTimeStamp,
  9500. SpecialRepairflag,
  9501. FlowProcedureID,
  9502. FlowProcedureTime,
  9503. ProcedureID,
  9504. ProcedureTime,
  9505. ProductionDataID,
  9506. logoid, ISREWORKFLAG, SEMICHECKID
  9507. from TP_PM_InProductionTrash
  9508. where barcode=:barcode
  9509. ";
  9510. string sqlDelete = @"delete from TP_PM_InProductionTrash where barcode=:barcode";
  9511. OracleParameter[] paras = new OracleParameter[]{
  9512. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9513. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9514. };
  9515. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9516. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9517. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9518. };
  9519. OracleParameter[] Existparas = new OracleParameter[]{
  9520. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9521. };
  9522. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9523. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9524. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9525. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9526. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9527. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  9528. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, Existparas);
  9529. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  9530. {
  9531. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsert, Existparas);
  9532. }
  9533. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelete, Existparas);
  9534. // 有错误
  9535. if (deleteRow == 0)
  9536. {
  9537. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9538. }
  9539. return null;
  9540. }
  9541. catch (Exception ex)
  9542. {
  9543. throw ex;
  9544. }
  9545. }
  9546. /// <summary>
  9547. /// 编辑后删除生产数据
  9548. /// </summary>
  9549. /// <param name="productionDataID">生产数据ID</param>
  9550. /// <returns>int</returns>
  9551. public static string DeleteNormalToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9552. {
  9553. int deleteRow = 0;
  9554. try
  9555. {
  9556. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9557. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9558. (
  9559. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9560. )";
  9561. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9562. where
  9563. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9564. ";
  9565. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9566. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9567. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9568. where TP_PM_DefectResponsible.Productiondefectid in
  9569. (
  9570. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9571. )";
  9572. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9573. where TP_PM_DefectImage.Productiondefectid in
  9574. (
  9575. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9576. )";
  9577. OracleParameter[] paras = new OracleParameter[]{
  9578. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9579. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9580. };
  9581. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9582. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9583. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9584. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9585. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9586. // 有错误
  9587. if (deleteRow == 0)
  9588. {
  9589. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9590. }
  9591. return null;
  9592. }
  9593. catch (Exception ex)
  9594. {
  9595. throw ex;
  9596. }
  9597. }
  9598. /// <summary>
  9599. /// 保存条码信息
  9600. /// </summary>
  9601. /// <param name="procedureID">工序ID</param>
  9602. /// <param name="productionDataEntitys">生产数据集</param>
  9603. /// <param name="sUserInfo">用户基本信息</param>
  9604. /// <returns>string</returns>
  9605. public static string AddCheckBarcodePDA(int procedureID, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  9606. {
  9607. string errMsg = "";
  9608. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  9609. try
  9610. {
  9611. oracleTrConn.Connect();
  9612. #region 查询工序信息
  9613. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  9614. #endregion
  9615. #region 标准检验(半成品)
  9616. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal)
  9617. {
  9618. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9619. }
  9620. #endregion
  9621. #region 成品检验
  9622. else if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  9623. {
  9624. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9625. }
  9626. #endregion
  9627. #region 半检 xuwei add 2019-12-13
  9628. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SemiQualityStatistics)
  9629. {
  9630. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9631. }
  9632. #endregion
  9633. #region 入窑前检验
  9634. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKilnCheck)
  9635. {
  9636. errMsg = AddIntoKilnCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9637. }
  9638. #endregion
  9639. // 没有错误 提交事务
  9640. if (string.IsNullOrEmpty(errMsg))
  9641. {
  9642. oracleTrConn.Commit();
  9643. }
  9644. if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  9645. {
  9646. #region 2023/02/20 质量登记产品分级为正品或者副品时 直接走完结束工序
  9647. DataTable dtProductionData = DataConvert.ObjectConvertToTable<ProductionDataEntity>(productionDataEntitys);
  9648. if (!dtProductionData.Columns.Contains("IsPDA"))
  9649. {
  9650. dtProductionData.Columns.Add("IsPDA");
  9651. }
  9652. foreach (ProductionDataEntity productionData in productionDataEntitys)
  9653. {
  9654. if (productionData.GoodsLevelTypeID == 4 || productionData.GoodsLevelTypeID == 5)
  9655. {
  9656. ProcedureEntity procedureInfo = null;
  9657. DataTable dt = AddWorkPiece(15, dtProductionData, sUserInfo, out procedureInfo);
  9658. }
  9659. }
  9660. #endregion
  9661. }
  9662. }
  9663. catch (Exception ex)
  9664. {
  9665. oracleTrConn.Rollback();
  9666. throw ex;
  9667. }
  9668. finally
  9669. {
  9670. // 释放资源
  9671. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  9672. {
  9673. oracleTrConn.Disconnect();
  9674. }
  9675. }
  9676. return errMsg;
  9677. }
  9678. #endregion
  9679. /// <summary>
  9680. /// 校验干补条码有效
  9681. /// </summary>
  9682. /// <param name="oracleTrConn">连接对象</param>
  9683. /// <param name="procedureID">工序ID</param>
  9684. /// <param name="barcode">条码</param>
  9685. /// <param name="goodsID">返回的产品ID</param>
  9686. /// <param name="goodsCode">返回的产品Code</param>
  9687. /// <param name="goodsName">返回的产品名称</param>
  9688. /// <param name="groutingUserID">返回的注浆者ID</param>
  9689. /// <returns>string</returns>
  9690. /// <remarks>
  9691. /// 袁新成 2015.3.27 新建
  9692. /// </remarks>
  9693. private static string CheckDryRepairBarcode(IDBTransaction oracleTrConn,
  9694. int procedureID,
  9695. string barcode,
  9696. out int goodsID,
  9697. out string goodsCode,
  9698. out string goodsName,
  9699. out string groutingUserCode,
  9700. SUserInfo sUserInfo
  9701. )
  9702. {
  9703. try
  9704. {
  9705. OracleParameter[] paras = new OracleParameter[]{
  9706. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  9707. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  9708. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  9709. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  9710. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  9711. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  9712. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  9713. };
  9714. oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  9715. if (!"null".Equals(paras[3].Value + ""))
  9716. {
  9717. goodsID = Convert.ToInt32(paras[3].Value + "");
  9718. }
  9719. else
  9720. {
  9721. goodsID = 0;
  9722. }
  9723. goodsCode = paras[4].Value + "";
  9724. goodsName = paras[5].Value + "";
  9725. if (!"null".Equals(paras[6].Value + ""))
  9726. {
  9727. groutingUserCode = paras[6].Value + "";
  9728. }
  9729. else
  9730. {
  9731. groutingUserCode = null;
  9732. }
  9733. if ("null".Equals(paras[2].Value + ""))
  9734. {
  9735. return null;
  9736. }
  9737. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  9738. }
  9739. catch (Exception ex)
  9740. {
  9741. throw ex;
  9742. }
  9743. }
  9744. /// <summary>
  9745. /// 干补标准计件
  9746. /// </summary>
  9747. /// <param name="oracleTrConn">数据连接对象</param>
  9748. /// <param name="procedure">工序对象</param>
  9749. /// <param name="barcodeTable">条码信息</param>
  9750. /// <param name="sUserInfo">用户基本信息</param>
  9751. /// <param name="goodsID">返回的产品ID</param>
  9752. /// <param name="goodsCode">返回的产品Code</param>
  9753. /// <param name="goodsName">返回的产品名称</param>
  9754. /// <param name="groutingUserID">返回的注浆者ID</param>
  9755. /// <returns>string</returns>
  9756. /// <remarks>
  9757. /// 袁新成 2015.3.26 新建
  9758. /// </remarks>
  9759. private static string AddDryRepairWorkPiece(IDBTransaction oracleTrConn,
  9760. ProcedureEntity procedure,
  9761. DataTable barcodeTable,
  9762. SUserInfo sUserInfo,
  9763. out int goodsID,
  9764. out string goodsCode,
  9765. out string goodsName,
  9766. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  9767. {
  9768. try
  9769. {
  9770. int deleteRow = 0;
  9771. goodsID = Constant.INT_IS_ZERO;
  9772. goodsCode = null;
  9773. goodsName = null;
  9774. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  9775. // 获得账务日期
  9776. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  9777. string errMsg = string.Empty;
  9778. // 本批采集的批次号
  9779. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  9780. // 条码信息
  9781. string logoName_Temp = "";
  9782. string logoCode_Temp = "";
  9783. string groutingdate_Temp = "";
  9784. foreach (DataRow barcodeRow in barcodeTable.Rows)
  9785. {
  9786. // 条码
  9787. string barcode = barcodeRow["Barcode"].ToString();
  9788. if (string.IsNullOrEmpty(barcode))
  9789. {
  9790. throw new Exception("传入的条码号为空");
  9791. }
  9792. // 生产工号
  9793. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  9794. // 生产工号
  9795. string workUserCode = barcodeRow["UserCode"].ToString();
  9796. //#region 校验条码有效性
  9797. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  9798. //if (!string.IsNullOrEmpty(errMsg))
  9799. //{
  9800. // return errMsg;
  9801. //}
  9802. //#endregion
  9803. if (procedure.CollectType == 1)
  9804. {
  9805. #region 校验条码有效性
  9806. errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  9807. if (!string.IsNullOrEmpty(errMsg))
  9808. {
  9809. logoName = "";
  9810. logoCode = "";
  9811. groutingdate = "";
  9812. return errMsg;
  9813. }
  9814. #endregion
  9815. }
  9816. else
  9817. {
  9818. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  9819. tp_pm_groutingdailydetail.goodscode,
  9820. tp_pm_groutingdailydetail.goodsname,
  9821. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  9822. tp_pm_groutingdailydetail.groutingdate,
  9823. tp_mst_logo.logoid,
  9824. tp_mst_logo.logocode,
  9825. tp_mst_logo.logoname
  9826. from tp_pm_groutingdailydetail
  9827. left join tp_mst_logo
  9828. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  9829. where tp_pm_groutingdailydetail.barcode=:barcode
  9830. ";
  9831. OracleParameter[] paras = new OracleParameter[] {
  9832. new OracleParameter(":barcode",barcode),
  9833. };
  9834. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  9835. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  9836. {
  9837. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  9838. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  9839. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  9840. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  9841. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  9842. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  9843. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  9844. logoName_Temp = logoName;
  9845. logoCode_Temp = logoCode;
  9846. groutingdate_Temp = groutingdate;
  9847. }
  9848. }
  9849. #region 数据处理
  9850. #region 处理废弃数据并转回收数据为在产数据
  9851. string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  9852. OracleParameter[] queryparas = new OracleParameter[]{
  9853. new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  9854. };
  9855. DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  9856. if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  9857. {
  9858. errMsg = "未设定干补等级";
  9859. logoName = "";
  9860. logoCode = "";
  9861. groutingdate = "";
  9862. return errMsg;
  9863. }
  9864. string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  9865. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  9866. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  9867. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  9868. UpdateUserID=:UpdateUserID
  9869. where BarCode=:barcode
  9870. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  9871. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  9872. */
  9873. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  9874. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  9875. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  9876. UpdateUserID=:UpdateUserID
  9877. where BarCode=:barcode
  9878. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  9879. and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  9880. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9881. new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  9882. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9883. new OracleParameter(":barcode1",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9884. new OracleParameter(":SpecialRepairUserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  9885. new OracleParameter(":SpecialRepairUserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  9886. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  9887. };
  9888. //modify wangx 20150623
  9889. OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  9890. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9891. };
  9892. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  9893. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  9894. string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  9895. oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  9896. //modify wangx 20150623 end
  9897. #region
  9898. //第五步,插入干补工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  9899. // 查询新插入的生产数据ID
  9900. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  9901. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  9902. int productionDataID = 0;
  9903. if (!string.IsNullOrEmpty(idStr))
  9904. {
  9905. productionDataID = int.Parse(idStr);
  9906. }
  9907. else
  9908. {
  9909. logoName = "";
  9910. logoCode = "";
  9911. groutingdate = "";
  9912. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9913. }
  9914. int? ClassesSettingID = null;//班次配置ID
  9915. #region 第五步 添加生产者数据
  9916. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  9917. if (!string.IsNullOrEmpty(errMsg))
  9918. {
  9919. logoName = "";
  9920. logoCode = "";
  9921. groutingdate = "";
  9922. return errMsg;
  9923. }
  9924. #endregion
  9925. ProductionDataEntity productionData = new ProductionDataEntity();
  9926. #region 属性赋值
  9927. productionData.ClassesSettingID = ClassesSettingID;
  9928. productionData.ProductionDataID = Convert.ToInt32(idStr);
  9929. productionData.Barcode = barcode;
  9930. productionData.CentralizedBatchNo = centralizedBatchNo;
  9931. productionData.ProductionLineID = procedure.ProductionLineID;
  9932. productionData.ProductionLineCode = procedure.ProductionlineCode;
  9933. productionData.ProductionLineName = procedure.ProductionlineName;
  9934. productionData.CompleteProcedureID = procedure.ProcedureID;
  9935. productionData.ProcedureCode = procedure.ProcedureCode;
  9936. productionData.ProcedureName = procedure.ProcedureName;
  9937. productionData.ProcedureModel = procedure.ProcedureModel;
  9938. productionData.ModelType = procedure.ModelType;
  9939. productionData.NodeType = procedure.NodeType;
  9940. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  9941. productionData.ReworkProcedureID = null;
  9942. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  9943. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  9944. //设置干补标识,产品分级类别=9干补
  9945. productionData.GoodsLevelTypeID = 9;
  9946. productionData.GoodsLevelID = int.Parse(goodsLevelID);
  9947. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  9948. productionData.OrganizationID = procedure.OrganizationID;
  9949. productionData.GoodsID = goodsID;
  9950. productionData.GoodsCode = goodsCode;
  9951. productionData.GoodsName = goodsName;
  9952. productionData.UserID = workUserID;
  9953. productionData.UserCode = barcodeRow["UserCode"].ToString();
  9954. productionData.UserName = barcodeRow["UserName"].ToString();
  9955. productionData.PieceType = procedure.PieceType;
  9956. if (barcodeRow["LogoID"].ToString() != "")
  9957. {
  9958. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  9959. }
  9960. string sqlReFire = @"select
  9961. isrefire,
  9962. logoid
  9963. from tp_pm_inproduction where barcode=:barcode
  9964. union
  9965. select
  9966. isrefire,
  9967. logoid
  9968. from TP_PM_InProductionTrash where barcode=:barcode
  9969. union
  9970. select
  9971. isrefire,
  9972. logoid
  9973. from TP_PM_FinishedProduct where barcode=:barcode ";
  9974. OracleParameter[] ReFireparas = new OracleParameter[] {
  9975. new OracleParameter(":barcode",barcode),
  9976. };
  9977. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  9978. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  9979. {
  9980. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  9981. {
  9982. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  9983. }
  9984. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  9985. {
  9986. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  9987. }
  9988. }
  9989. #endregion 属性赋值
  9990. string OutSpecialRepairflag = "0";//干补标识
  9991. productionData.SpecialRepairflag = 1;
  9992. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9993. if (!string.IsNullOrEmpty(errMsg))
  9994. {
  9995. logoName = "";
  9996. logoCode = "";
  9997. groutingdate = "";
  9998. return errMsg;
  9999. }
  10000. #endregion
  10001. //第二步,回收站中数据回到在产中,设置干补标识。
  10002. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  10003. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  10004. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  10005. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  10006. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  10007. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  10008. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  10009. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  10010. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  10011. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  10012. KILNID, KILNCODE, KILNNAME, KILNCARID,
  10013. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  10014. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  10015. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  10016. :PROCEDUREMODEL, :MODELTYPE, REWORKPROCEDUREID,
  10017. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  10018. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  10019. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  10020. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  10021. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  10022. CREATEUSERID, UPDATETIME, :UpdateUserID,
  10023. ISREFIRE, null, null, DEFECTFLAG,
  10024. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  10025. KILNID, KILNCODE, KILNNAME, KILNCARID,
  10026. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,1,FlowProcedureID ,
  10027. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  10028. from TP_PM_InProductionTrash where barcode=:barcode ";
  10029. OracleParameter[] InProductparas = new OracleParameter[]{
  10030. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  10031. // new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  10032. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10033. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  10034. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  10035. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  10036. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  10037. };
  10038. //第三步,删除回收站中的条码
  10039. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  10040. OracleParameter[] TrashProductparas = new OracleParameter[]{
  10041. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  10042. };
  10043. //第四步,更新注浆表干补标识
  10044. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  10045. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  10046. // where barcode=:barcode)";
  10047. string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  10048. where barcode=:barcode";
  10049. OracleParameter[] GroutingProductparas = new OracleParameter[]{
  10050. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  10051. };
  10052. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  10053. // where barcode=:barcode ";
  10054. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  10055. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  10056. // };
  10057. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  10058. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  10059. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  10060. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  10061. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  10062. // 失败
  10063. if (deleteRow == Constant.INT_IS_ZERO)
  10064. {
  10065. logoName = "";
  10066. logoCode = "";
  10067. groutingdate = "";
  10068. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10069. }
  10070. #endregion
  10071. //#region 第五步 添加生产者数据
  10072. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  10073. //if (!string.IsNullOrEmpty(errMsg))
  10074. //{
  10075. // return errMsg;
  10076. //}
  10077. //#endregion
  10078. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  10079. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  10080. OracleParameter[] Paras = new OracleParameter[] {
  10081. new OracleParameter(":barcode",OracleDbType.Varchar2,
  10082. barcode,ParameterDirection.Input)
  10083. };
  10084. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  10085. if (ds.Tables[0].Rows.Count == 0)
  10086. {
  10087. // 2 生产数据恢复到在产生产数据
  10088. sql = @"insert into tp_pm_productiondatain
  10089. (
  10090. ProductionDataID,
  10091. BarCode,
  10092. CentralizedBatchNo,
  10093. ProductionLineID,
  10094. ProductionLineCode,
  10095. ProductionLineName,
  10096. ProcedureID,
  10097. ProcedureCode,
  10098. ProcedureName,
  10099. ProcedureModel,
  10100. ModelType,
  10101. PieceType,
  10102. IsReworked,
  10103. NodeType,
  10104. IsPublicBody,
  10105. IsReFire,
  10106. GoodsLevelID,
  10107. GoodsLevelTypeID,
  10108. SpecialRepairFlag,
  10109. OrganizationID,
  10110. GoodsID,
  10111. GoodsCode,
  10112. GoodsName,
  10113. UserID,
  10114. UserCode,
  10115. UserName,
  10116. ClassesSettingID,
  10117. KilnID,
  10118. KilnCode,
  10119. KilnName,
  10120. KilnCarID,
  10121. KilnCarCode,
  10122. KilnCarName,
  10123. KilnCarBatchNo,
  10124. KilnCarPosition,
  10125. ReworkProcedureID,
  10126. ReworkProcedureCode,
  10127. ReworkProcedureName,
  10128. GroutingDailyID,
  10129. GroutingDailyDetailID,
  10130. GroutingLineID,
  10131. GroutingLineCode,
  10132. GroutingLineName,
  10133. GMouldTypeID,
  10134. CanManyTimes,
  10135. GroutingLineDetailID,
  10136. GroutingDate,
  10137. GroutingMouldCode,
  10138. MouldCode,
  10139. GroutingUserID,
  10140. GroutingUserCode,
  10141. GroutingNum,
  10142. Remarks,
  10143. AccountDate,
  10144. SettlementFlag,
  10145. AccountID,
  10146. ValueFlag,
  10147. CreateTime,
  10148. CreateUserID,
  10149. UpdateTime,
  10150. UpdateUserID,
  10151. OPTimeStamp,
  10152. TriggerFlag,
  10153. logoid,
  10154. BackOutTime,BackOutUserID,BackOutUserCode
  10155. )
  10156. select
  10157. ProductionDataID,
  10158. BarCode,
  10159. CentralizedBatchNo,
  10160. ProductionLineID,
  10161. ProductionLineCode,
  10162. ProductionLineName,
  10163. ProcedureID,
  10164. ProcedureCode,
  10165. ProcedureName,
  10166. ProcedureModel,
  10167. ModelType,
  10168. PieceType,
  10169. IsReworked,
  10170. NodeType,
  10171. IsPublicBody,
  10172. IsReFire,
  10173. GoodsLevelID,
  10174. GoodsLevelTypeID,
  10175. SpecialRepairFlag,
  10176. OrganizationID,
  10177. GoodsID,
  10178. GoodsCode,
  10179. GoodsName,
  10180. UserID,
  10181. UserCode,
  10182. UserName,
  10183. ClassesSettingID,
  10184. KilnID,
  10185. KilnCode,
  10186. KilnName,
  10187. KilnCarID,
  10188. KilnCarCode,
  10189. KilnCarName,
  10190. KilnCarBatchNo,
  10191. KilnCarPosition,
  10192. ReworkProcedureID,
  10193. ReworkProcedureCode,
  10194. ReworkProcedureName,
  10195. GroutingDailyID,
  10196. GroutingDailyDetailID,
  10197. GroutingLineID,
  10198. GroutingLineCode,
  10199. GroutingLineName,
  10200. GMouldTypeID,
  10201. CanManyTimes,
  10202. GroutingLineDetailID,
  10203. GroutingDate,
  10204. GroutingMouldCode,
  10205. MouldCode,
  10206. GroutingUserID,
  10207. GroutingUserCode,
  10208. GroutingNum,
  10209. Remarks,
  10210. AccountDate,
  10211. SettlementFlag,
  10212. AccountID,
  10213. ValueFlag,
  10214. CreateTime,
  10215. CreateUserID,
  10216. UpdateTime,
  10217. UpdateUserID,
  10218. OPTimeStamp,
  10219. 1,
  10220. logoid,
  10221. BackOutTime,BackOutUserID,BackOutUserCode
  10222. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  10223. ";
  10224. oracleTrConn.ExecuteNonQuery(sql, Paras);
  10225. }
  10226. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  10227. #endregion 数据处理
  10228. }
  10229. logoName = logoName_Temp;
  10230. logoCode = logoCode_Temp;
  10231. groutingdate = groutingdate_Temp;
  10232. return errMsg;
  10233. }
  10234. catch (Exception ex)
  10235. {
  10236. throw ex;
  10237. }
  10238. }
  10239. /// <summary>
  10240. /// 添加干补生产数据
  10241. /// </summary>
  10242. /// <param name="oracleTrConn">连接对象</param>
  10243. /// <param name="accountDate">账务日期</param>
  10244. /// <param name="productionData">生产数据</param>
  10245. /// <param name="sUserInfo">用户基本信息</param>
  10246. /// <returns>string</returns>
  10247. /// <remarks>
  10248. /// 袁新成 2015.04.1 新建
  10249. /// </remarks>
  10250. private static string AddDryRepairProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  10251. {
  10252. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  10253. string selectSql = "";
  10254. string returnVal = "";
  10255. //这地方连了两张表,为了成检的时候,次品在次新增
  10256. selectSql = @"select
  10257. GroutingDate,
  10258. GroutingUserID,
  10259. GroutingUserCode,
  10260. GroutingNum,
  10261. GroutingMouldCode,
  10262. MouldCode,
  10263. GroutingDailyID,
  10264. GroutingDailyDetailID,
  10265. GroutingLineID,
  10266. GroutingLineCode,
  10267. GroutingLineName,
  10268. GMouldTypeID,
  10269. CanManyTimes,
  10270. GroutingLineDetailID,
  10271. SpecialRepairflag
  10272. from tp_pm_inproduction where barcode=:barcode
  10273. union
  10274. select
  10275. GroutingDate,
  10276. GroutingUserID,
  10277. GroutingUserCode,
  10278. GroutingNum,
  10279. GroutingMouldCode,
  10280. MouldCode,
  10281. GroutingDailyID,
  10282. GroutingDailyDetailID,
  10283. GroutingLineID,
  10284. GroutingLineCode,
  10285. GroutingLineName,
  10286. GMouldTypeID,
  10287. CanManyTimes,
  10288. GroutingLineDetailID,
  10289. SpecialRepairflag
  10290. from TP_PM_InProductionTrash where barcode=:barcode
  10291. ";
  10292. OracleParameter[] selectparas = new OracleParameter[] {
  10293. new OracleParameter(":barcode",productionData.Barcode),
  10294. };
  10295. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  10296. if (dsGroutingProduct == null || dsGroutingProduct.Tables[0].Rows.Count == 0)
  10297. {
  10298. selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  10299. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  10300. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  10301. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  10302. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  10303. TP_PM_GroutingDailyDetail.MouldCode,
  10304. TP_PM_GroutingDailyDetail.GroutingDailyID,
  10305. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  10306. TP_PM_GroutingDailyDetail.GroutingLineID,
  10307. TP_PM_GroutingDailyDetail.GroutingLineCode,
  10308. TP_PM_GroutingDailyDetail.GroutingLineName,
  10309. TP_PM_GroutingDaily.GMouldTypeID,
  10310. TP_PM_GroutingDaily.CanManyTimes,
  10311. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  10312. TP_PM_GroutingDailyDetail.SpecialRepairflag
  10313. from TP_PM_GroutingDaily
  10314. left join TP_PM_GroutingDailyDetail
  10315. on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  10316. where TP_PM_GroutingDailyDetail.barcode=:barcode
  10317. ";
  10318. dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  10319. }
  10320. DateTime GroutingDate = new DateTime();
  10321. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  10322. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  10323. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  10324. {
  10325. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  10326. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  10327. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  10328. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  10329. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  10330. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  10331. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  10332. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  10333. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  10334. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  10335. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  10336. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  10337. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  10338. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  10339. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  10340. returnVal = SpecialRepairflag.ToString();
  10341. }
  10342. #endregion
  10343. #region 更新窑炉窑车属性
  10344. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  10345. {
  10346. DataSet ds = GetDryRepairKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  10347. if (ds != null)
  10348. {
  10349. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  10350. {
  10351. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  10352. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  10353. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  10354. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  10355. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  10356. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  10357. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  10358. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  10359. }
  10360. }
  10361. }
  10362. #endregion
  10363. #region SQL
  10364. string sql = "insert into tp_pm_productiondataIn"
  10365. + " (productiondataid,"
  10366. + " barcode,"
  10367. + " centralizedbatchno,"
  10368. + " productionlineid,"
  10369. + " productionlinecode,"
  10370. + " productionlinename,"
  10371. + " procedureid,"
  10372. + " procedurecode,"
  10373. + " procedurename,"
  10374. + " proceduremodel,"
  10375. + " modeltype,"
  10376. + " piecetype,"
  10377. + " isreworked,"
  10378. + " nodetype,"
  10379. + " ispublicbody,"
  10380. + " isrefire,"
  10381. + " organizationid,"
  10382. + " goodsid,"
  10383. + " goodscode,"
  10384. + " goodsname,"
  10385. + " userid,"
  10386. + " usercode,"
  10387. + " username,"
  10388. + " kilnid,"
  10389. + " kilncode,"
  10390. + " kilnname,"
  10391. + " kilncarid,"
  10392. + " kilncarcode,"
  10393. + " kilncarname,"
  10394. + " kilncarbatchno,"
  10395. + " kilncarposition,"
  10396. + " reworkprocedureid,"
  10397. + " reworkprocedurecode,"
  10398. + " reworkprocedurename,"
  10399. + " remarks,"
  10400. + " accountdate,"
  10401. + " accountid,"
  10402. + " GoodsLevelID,"
  10403. + " GoodsLevelTypeID,"
  10404. + " createuserid,"
  10405. + " updateuserid,"
  10406. + " GroutingDate,"
  10407. + " GroutingUserID,"
  10408. + " GroutingUserCode,"
  10409. + " GroutingNum,"
  10410. + " GroutingMouldCode,"
  10411. + " MouldCode,"
  10412. + "GroutingDailyID,"
  10413. + "GroutingDailyDetailID,"
  10414. + "GroutingLineID,"
  10415. + " GroutingLineCode,"
  10416. + "GroutingLineName,"
  10417. + "GMouldTypeID,"
  10418. + "CanManyTimes,"
  10419. + "GroutingLineDetailID,"
  10420. + "SpecialRepairflag,"
  10421. + "ClassesSettingID,"
  10422. + "LogoID"
  10423. + ")"
  10424. + " values"
  10425. + " (:productiondataid,"
  10426. + " :barcode,"
  10427. + " :centralizedbatchno,"
  10428. + " :productionlineid,"
  10429. + " :productionlinecode,"
  10430. + " :productionlinename,"
  10431. + " :procedureid,"
  10432. + " :procedurecode,"
  10433. + " :procedurename,"
  10434. + " :proceduremodel,"
  10435. + " :modeltype,"
  10436. + " :piecetype,"
  10437. + " :isreworked,"
  10438. + " :nodetype,"
  10439. + " :ispublicbody,"
  10440. + " :isrefire,"
  10441. + " :organizationid,"
  10442. + " :goodsid,"
  10443. + " :goodscode,"
  10444. + " :goodsname,"
  10445. + " :userid,"
  10446. + " :usercode,"
  10447. + " :username,"
  10448. + " :kilnid,"
  10449. + " :kilncode,"
  10450. + " :kilnname,"
  10451. + " :kilncarid,"
  10452. + " :kilncarcode,"
  10453. + " :kilncarname,"
  10454. + " :kilncarbatchno,"
  10455. + " :kilncarposition,"
  10456. + " :reworkprocedureid,"
  10457. + " :reworkprocedurecode,"
  10458. + " :reworkprocedurename,"
  10459. + " :remarks,"
  10460. + " :accountdata,"
  10461. + " :accountid,"
  10462. + " :GoodsLevelID,"
  10463. + " :GoodsLevelTypeID,"
  10464. + " :createuserid,"
  10465. + " :updateuserid,"
  10466. + " :groutingdate,"
  10467. + " :groutinguserid,"
  10468. + " :groutingusercode,"
  10469. + " :groutingnum,"
  10470. + " :groutingmouldcode,"
  10471. + " :mouldcode,"
  10472. + ":groutingdailyid,"
  10473. + ":groutingdailydetailid,"
  10474. + ":groutinglineid,"
  10475. + " :groutinglinecode,"
  10476. + ":groutinglinename,"
  10477. + ":gmouldtypeid,"
  10478. + ":canmanytimes,"
  10479. + ":groutinglinedetailid,"
  10480. + ":specialRepairflag,"
  10481. + ":classesSettingID,"
  10482. + ":logoID"
  10483. + ")";
  10484. #endregion
  10485. #region OracleParameter
  10486. OracleParameter[] paras = new OracleParameter[] {
  10487. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  10488. new OracleParameter(":barcode",productionData.Barcode),
  10489. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  10490. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  10491. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  10492. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  10493. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  10494. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  10495. new OracleParameter(":procedurename",productionData.ProcedureName),
  10496. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  10497. new OracleParameter(":modeltype",productionData.ModelType),
  10498. new OracleParameter(":piecetype",productionData.PieceType),
  10499. new OracleParameter(":isreworked",productionData.IsReworked),
  10500. new OracleParameter(":nodetype",productionData.NodeType),
  10501. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  10502. new OracleParameter(":isrefire",productionData.IsReFire),
  10503. new OracleParameter(":organizationid",productionData.OrganizationID),
  10504. new OracleParameter(":goodsid",productionData.GoodsID),
  10505. new OracleParameter(":goodscode",productionData.GoodsCode),
  10506. new OracleParameter(":goodsname",productionData.GoodsName),
  10507. new OracleParameter(":userid",productionData.UserID),
  10508. new OracleParameter(":usercode",productionData.UserCode),
  10509. new OracleParameter(":username",productionData.UserName),
  10510. new OracleParameter(":kilnid",productionData.KilnID),
  10511. new OracleParameter(":kilncode",productionData.KilnCode),
  10512. new OracleParameter(":kilnname",productionData.KilnName),
  10513. new OracleParameter(":kilncarid",productionData.KilnCarID),
  10514. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  10515. new OracleParameter(":kilncarname",productionData.KilnCarName),
  10516. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  10517. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  10518. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  10519. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  10520. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  10521. new OracleParameter(":remarks",productionData.Remarks),
  10522. new OracleParameter(":accountdata",accountDate),
  10523. new OracleParameter(":accountid",sUserInfo.AccountID),
  10524. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  10525. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  10526. new OracleParameter(":createuserid",sUserInfo.UserID),
  10527. new OracleParameter(":updateuserid",sUserInfo.UserID),
  10528. new OracleParameter(":groutingdate",GroutingDate),
  10529. new OracleParameter(":groutinguserid",GroutingUserID),
  10530. new OracleParameter(":groutingusercode",GroutingUserCode),
  10531. new OracleParameter(":groutingnum",GroutingNum),
  10532. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  10533. new OracleParameter(":mouldcode",MouldCode),
  10534. new OracleParameter(":groutingdailyid",GroutingDailyID),
  10535. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  10536. new OracleParameter(":groutinglineid",GroutingLineID),
  10537. new OracleParameter(":groutinglinecode",GroutingLineCode),
  10538. new OracleParameter(":groutinglinename",GroutingLineName),
  10539. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  10540. new OracleParameter(":canmanytimes",CanManyTimes),
  10541. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  10542. new OracleParameter(":specialRepairflag",productionData.SpecialRepairflag),
  10543. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  10544. new OracleParameter(":logoID",productionData.LogoID),
  10545. };
  10546. #endregion
  10547. foreach (OracleParameter para in paras)
  10548. {
  10549. if (string.IsNullOrEmpty(para.Value + ""))
  10550. {
  10551. para.Value = DBNull.Value;
  10552. }
  10553. }
  10554. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  10555. OutSpecialRepairflag = returnVal;
  10556. // 失败
  10557. if (result != Constant.INT_IS_ONE)
  10558. {
  10559. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10560. }
  10561. // 成功返回null
  10562. return null;
  10563. }
  10564. /// <summary>
  10565. /// 根据最大生产数据ID,获取窑车窑炉等信息
  10566. /// </summary>
  10567. /// <param name="oracleTrConn"></param>
  10568. /// <param name="barcode"></param>
  10569. /// <param name="sUserInfo"></param>
  10570. /// <returns></returns>
  10571. private static DataSet GetDryRepairKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  10572. {
  10573. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  10574. // (
  10575. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  10576. // )";
  10577. string sql = @"select
  10578. KilnID,
  10579. KilnCode,
  10580. KilnName,
  10581. KilnCarID,
  10582. KilnCarCode,
  10583. KilnCarName,
  10584. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10585. KilnCarPosition
  10586. from tp_pm_inproduction where barcode=:barcode
  10587. union
  10588. select
  10589. KilnID,
  10590. KilnCode,
  10591. KilnName,
  10592. KilnCarID,
  10593. KilnCarCode,
  10594. KilnCarName,
  10595. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10596. KilnCarPosition
  10597. from TP_PM_InProductionTrash where barcode=:barcode
  10598. ";
  10599. try
  10600. {
  10601. IDataParameter[] paras = new OracleParameter[]
  10602. {
  10603. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  10604. };
  10605. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  10606. if (returnDs != null
  10607. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  10608. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  10609. {
  10610. return returnDs;
  10611. }
  10612. else
  10613. {
  10614. sql = @"select
  10615. KilnID,
  10616. KilnCode,
  10617. KilnName,
  10618. KilnCarID,
  10619. KilnCarCode,
  10620. KilnCarName,
  10621. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10622. KilnCarPosition
  10623. from TP_PM_FINISHEDPRODUCT where barcode=:barcode";
  10624. returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  10625. if (returnDs != null
  10626. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  10627. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  10628. {
  10629. return returnDs;
  10630. }
  10631. else
  10632. {
  10633. return null;
  10634. }
  10635. }
  10636. }
  10637. catch (Exception ex)
  10638. {
  10639. throw ex;
  10640. }
  10641. }
  10642. /// <summary>
  10643. /// 更新漏扫的成型工号
  10644. /// </summary>
  10645. /// <param name="groutingUserCode">成型工号</param>
  10646. /// <param name="missingID">漏扫ID</param>
  10647. /// <param name="sUserInfo">用户基本信息</param>
  10648. /// <returns>int</returns>
  10649. public static int UpdateGroutingUserCodeByMissingID(string groutingUserCode, int missingID, SUserInfo sUserInfo)
  10650. {
  10651. int UpdateRow = 0;
  10652. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10653. try
  10654. {
  10655. oracleTrConn.Connect();
  10656. //string sql = "select userid from tp_mst_user where usercode=:usercode and valueflag=1 and isworker=1 and accountid=:accountid";
  10657. //OracleParameter[] paras = new OracleParameter[]{
  10658. // new OracleParameter(":usercode",OracleDbType.Varchar2, groutingUserCode,ParameterDirection.Input),
  10659. // new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10660. //};
  10661. //DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  10662. //if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  10663. //{
  10664. // oracleTrConn.Commit();
  10665. // UpdateRow = -1;
  10666. // return UpdateRow;//成型工号无效
  10667. //}
  10668. // 20150605 wangxin begin
  10669. string[] subGroutingUserCode = groutingUserCode.Trim(',').Split(',');
  10670. bool isError = false;
  10671. int FirstUserID = 0;
  10672. string sql = "";
  10673. OracleParameter[] paras = null;
  10674. DataSet returnDataset = null;
  10675. for (int i = 0; i < subGroutingUserCode.Length; i++)
  10676. {
  10677. sql = "select userid from tp_mst_user where usercode=:usercode and valueflag=1 and isworker=1 and accountid=:accountid";
  10678. paras = new OracleParameter[]{
  10679. new OracleParameter(":usercode",OracleDbType.Varchar2, subGroutingUserCode[i],ParameterDirection.Input),
  10680. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10681. };
  10682. returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  10683. if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  10684. {
  10685. isError = true;
  10686. break;
  10687. }
  10688. if (i == 0)
  10689. {
  10690. FirstUserID = Convert.ToInt32(returnDataset.Tables[0].Rows[0]["userid"]);
  10691. }
  10692. }
  10693. if (isError)
  10694. {
  10695. oracleTrConn.Commit();
  10696. UpdateRow = -1;
  10697. return UpdateRow;//成型工号无效
  10698. }
  10699. // 20150605 wangxin end
  10700. sql = "update TP_PM_BarCodeMissing set Missuserid=:Missuserid, Missusercode=:Missusercode where missid=:missid";
  10701. paras = new OracleParameter[]{
  10702. //new OracleParameter(":Missuserid",OracleDbType.Int32,Convert.ToInt32(returnDataset.Tables[0].Rows[0]["userid"]),ParameterDirection.Input),
  10703. new OracleParameter(":Missuserid",OracleDbType.Int32,FirstUserID,ParameterDirection.Input),
  10704. new OracleParameter(":Missusercode", OracleDbType.Varchar2, groutingUserCode.Trim(','), ParameterDirection.Input),
  10705. new OracleParameter(":missid", OracleDbType.Int32, missingID, ParameterDirection.Input),
  10706. };
  10707. UpdateRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  10708. if (UpdateRow > 0)
  10709. {
  10710. oracleTrConn.Commit();
  10711. }
  10712. else
  10713. {
  10714. oracleTrConn.Rollback();
  10715. }
  10716. }
  10717. catch (Exception ex)
  10718. {
  10719. oracleTrConn.Rollback();
  10720. throw ex;
  10721. }
  10722. finally
  10723. {
  10724. // 释放资源
  10725. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10726. {
  10727. oracleTrConn.Disconnect();
  10728. }
  10729. }
  10730. return UpdateRow;
  10731. }
  10732. /// <summary>
  10733. /// 在入窑工序检验窑车号是否存在
  10734. /// </summary>
  10735. /// <param name="kilncarcode">窑车编码</param>
  10736. /// <param name="procedureid">工序ID</param>
  10737. /// <param name="sUserInfo">用户基本信息</param>
  10738. /// <returns></returns>
  10739. public static int CheckKilnCarByIntoCar(string kilncarcode, int procedureid, SUserInfo sUserInfo)
  10740. {
  10741. int UpdateRow = 0;
  10742. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10743. try
  10744. {
  10745. oracleTrConn.Connect();
  10746. // 判断窑车编码是否有效
  10747. string sql = "select kilncarid from tp_mst_kilncar where kilncarcode=:kilncarcode and valueflag=1 and accountid=:accountid";
  10748. OracleParameter[] paras = new OracleParameter[]{
  10749. new OracleParameter(":kilncarcode",OracleDbType.Varchar2, kilncarcode,ParameterDirection.Input),
  10750. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10751. };
  10752. DataSet dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10753. int kilncarid = 0;
  10754. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10755. {
  10756. oracleTrConn.Commit();
  10757. UpdateRow = -99;
  10758. return UpdateRow;//窑车编码无效
  10759. }
  10760. kilncarid = Convert.ToInt32(dsExists.Tables[0].Rows[0]["kilncarid"]);//窑车ID
  10761. //判断此窑车号有无产品
  10762. sql = "select barcode,KilnCarBatchNo from TP_PM_KilnCarGoods where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1";
  10763. paras = new OracleParameter[]{
  10764. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10765. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10766. };
  10767. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sql, paras);
  10768. if (dsGoods != null && dsGoods.Tables[0].Rows.Count == 0)
  10769. {
  10770. oracleTrConn.Commit();
  10771. UpdateRow = -98;
  10772. return UpdateRow;//窑车己无产品
  10773. }
  10774. // 判断窑车编码是否在入窑工序
  10775. sql = "select 1 from TP_PM_InProduction where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and FlowProcedureID=:FlowProcedureID";
  10776. paras = new OracleParameter[]{
  10777. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10778. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10779. new OracleParameter(":FlowProcedureID", OracleDbType.Int32, procedureid, ParameterDirection.Input),
  10780. };
  10781. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10782. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10783. {
  10784. oracleTrConn.Commit();
  10785. UpdateRow = -97;
  10786. return UpdateRow;//窑车号没有入窑,不可以撤销
  10787. }
  10788. int KilnCarDataID = 0;//窑车生产数据ID
  10789. string KilnCarBatchNo = "";
  10790. // 遍历窑车产品
  10791. bool isError = false;//默认没有错误
  10792. for (int i = 0; i < dsGoods.Tables[0].Rows.Count; i++)
  10793. {
  10794. #region 先查询生产数据最后3条
  10795. string sqlString = @"select ProductionDataID,
  10796. ProcedureID,
  10797. ProcedureModel,
  10798. ModelType,
  10799. ReworkProcedureID,
  10800. UserID
  10801. from (select ProductionDataID,
  10802. ProcedureID,
  10803. ProcedureModel,
  10804. ModelType,
  10805. ReworkProcedureID,
  10806. UserID
  10807. from Tp_Pm_ProductiondataIn
  10808. where barcode = :barcode
  10809. and valueflag = 1 and ModelType<>1 and ModelType<>2
  10810. order by ProductionDataID desc)
  10811. where rownum <=1";//where rownum <=3";
  10812. paras = new OracleParameter[]{
  10813. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10814. };
  10815. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  10816. if (productionData == null
  10817. || productionData.Tables.Count == Constant.INT_IS_ZERO
  10818. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  10819. {
  10820. //errMsg = Messages.MSG_PM_W016;
  10821. isError = true;
  10822. break;
  10823. }
  10824. #endregion
  10825. #region 回滚在产数据
  10826. sqlString = @"update TP_PM_InProduction
  10827. set FlowProcedureID = :flowProcedureID,
  10828. ProcedureModel = :procedureModel,
  10829. ProcedureID = :flowProcedureID,
  10830. ModelType = :modelType,
  10831. ReworkProcedureID = :reworkProcedureID,
  10832. UserID = :userID,
  10833. updateuserid = :updateuserid
  10834. where barcode = :barcode";
  10835. paras = new OracleParameter[]{
  10836. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  10837. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//2-->1
  10838. new OracleParameter(":procedureModel",OracleDbType.Int32,
  10839. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  10840. new OracleParameter(":modelType",OracleDbType.Int32,
  10841. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  10842. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  10843. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  10844. new OracleParameter(":userID",OracleDbType.Int32,
  10845. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  10846. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10847. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10848. };
  10849. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10850. if (UpdateRow == Constant.INT_IS_ZERO)
  10851. {
  10852. // 保存失败
  10853. isError = true;
  10854. break;
  10855. }
  10856. #endregion
  10857. #region 删除生产者和最后一条生产数据
  10858. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  10859. paras = new OracleParameter[]{
  10860. new OracleParameter(":productionDataID",OracleDbType.Int32,
  10861. productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  10862. //new OracleParameter(":productionDataID2",OracleDbType.Int32,
  10863. // productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  10864. new OracleParameter(":barcode",OracleDbType.Varchar2,
  10865. dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10866. };
  10867. //modify 2015/05/13 wangx GoodsLevelTypeID=12 撤销入窑
  10868. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=12 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  10869. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  10870. int? GoodsLevelID = null;
  10871. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  10872. {
  10873. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  10874. }
  10875. //modify end
  10876. sqlString = "update TP_PM_ProductionDataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID;
  10877. if (GoodsLevelID != null)
  10878. {
  10879. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  10880. sqlString += ",GoodsLevelTypeID=12";
  10881. }
  10882. //sqlString += " where ProductionDataID=:productionDataID or ProductionDataID=:productionDataID2";
  10883. sqlString += " where barcode=:barcode and ProductionDataID>:productionDataID "; //or ProductionDataID=:productionDataID2
  10884. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10885. if (UpdateRow == Constant.INT_IS_ZERO)
  10886. {
  10887. // 保存失败
  10888. isError = true;
  10889. break;
  10890. }
  10891. #endregion
  10892. #region 删除窑车产品
  10893. sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  10894. paras = new OracleParameter[]{
  10895. new OracleParameter(":barCode",OracleDbType.Varchar2,
  10896. dsGoods.Tables[0].Rows[i]["barcode"],ParameterDirection.Input),
  10897. };
  10898. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10899. if (UpdateRow == Constant.INT_IS_ZERO)
  10900. {
  10901. // 保存失败
  10902. isError = true;
  10903. break;
  10904. }
  10905. #endregion
  10906. #region 读取窑车生产数据,进行撤销
  10907. sql = @"select KilnCarDataID, ProductionLineID,ProcedureID,
  10908. ProcedureCode,ProcedureName,ProcedureModel,ModelType,PieceType
  10909. from TP_PM_KilnCarData where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and KilnCarBatchNo=:KilnCarBatchNo order by KilnCarDataID ";
  10910. paras = new OracleParameter[]{
  10911. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  10912. kilncarid,ParameterDirection.Input),
  10913. new OracleParameter(":accountid",OracleDbType.Int32,
  10914. sUserInfo.AccountID,ParameterDirection.Input),
  10915. new OracleParameter(":KilnCarBatchNo",OracleDbType.Varchar2,
  10916. dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString(),ParameterDirection.Input),
  10917. };
  10918. KilnCarBatchNo = dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString();
  10919. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10920. if (dsExists != null && dsExists.Tables[0].Rows.Count > 0)
  10921. {
  10922. //最后窑车生产数据ID赋值 撤二步骤
  10923. KilnCarDataID = Convert.ToInt32(dsExists.Tables[0].Rows[0]["KilnCarDataID"]);
  10924. sqlString = @"update TP_PM_KilnCarStatus set
  10925. ProductionLineID=:ProductionLineID
  10926. ,ProcedureID=:ProcedureID
  10927. ,ProcedureCode=:ProcedureCode
  10928. ,ProcedureName=:ProcedureName
  10929. ,ProcedureModel=:ProcedureModel
  10930. ,ModelType=:ModelType
  10931. ,PieceType=:PieceType
  10932. ,KilnCarStatus=0,LoadingTime=null,IntoKilnTime=null,OutKilnTime=null,UnloadingTime=null
  10933. where KilnCarID=:KilnCarID";
  10934. paras = new OracleParameter[]{
  10935. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  10936. dsExists.Tables[0].Rows[0]["ProductionLineID"],ParameterDirection.Input),
  10937. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  10938. dsExists.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),
  10939. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  10940. dsExists.Tables[0].Rows[0]["ProcedureCode"].ToString(),ParameterDirection.Input),
  10941. new OracleParameter(":ProcedureModel",OracleDbType.Varchar2,
  10942. dsExists.Tables[0].Rows[0]["ProcedureModel"].ToString(),ParameterDirection.Input),
  10943. new OracleParameter(":ModelType",OracleDbType.Int32,
  10944. Convert.ToInt32(dsExists.Tables[0].Rows[0]["ModelType"]),ParameterDirection.Input),
  10945. new OracleParameter(":PieceType",OracleDbType.Varchar2,
  10946. dsExists.Tables[0].Rows[0]["PieceType"].ToString(),ParameterDirection.Input),
  10947. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  10948. kilncarid,ParameterDirection.Input),
  10949. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  10950. dsExists.Tables[0].Rows[0]["ProcedureName"].ToString(),ParameterDirection.Input),
  10951. };
  10952. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10953. if (UpdateRow == Constant.INT_IS_ZERO)
  10954. {
  10955. // 保存失败
  10956. isError = true;
  10957. break;
  10958. }
  10959. }
  10960. #endregion
  10961. }
  10962. //modify wangx 20150606 begin
  10963. string updateSql = "update TP_PM_KilnCarData set valueflag=0,UpdateUserID=" + sUserInfo.UserID + " where KilnCarDataID>=" + KilnCarDataID + " and KilnCarBatchNo=" + KilnCarBatchNo;
  10964. int row = oracleTrConn.ExecuteNonQuery(updateSql);
  10965. //modify wangx 20150606 end
  10966. if (isError) //有错误消息
  10967. {
  10968. UpdateRow = -1;//失败
  10969. oracleTrConn.Rollback();
  10970. }
  10971. else
  10972. {
  10973. UpdateRow = 1;//成功
  10974. oracleTrConn.Commit();
  10975. }
  10976. }
  10977. catch (Exception ex)
  10978. {
  10979. oracleTrConn.Rollback();
  10980. throw ex;
  10981. }
  10982. finally
  10983. {
  10984. // 释放资源
  10985. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10986. {
  10987. oracleTrConn.Disconnect();
  10988. }
  10989. }
  10990. return UpdateRow;
  10991. }
  10992. /// <summary>
  10993. /// 在入窑工序检验窑车号是否存在
  10994. /// </summary>
  10995. /// <param name="kilncarcode">窑车编码</param>
  10996. /// <param name="procedureid">工序ID</param>
  10997. /// <param name="sUserInfo">用户基本信息</param>
  10998. /// <returns></returns>
  10999. public static int CheckKilnCarByIntoCar2(string kilncarcode, int procedureid, SUserInfo sUserInfo)
  11000. {
  11001. int UpdateRow = 0;
  11002. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11003. try
  11004. {
  11005. oracleTrConn.Connect();
  11006. // 判断窑车编码是否有效
  11007. string sql = "select kilncarid from tp_mst_kilncar where kilncarcode=:kilncarcode and valueflag=1 and accountid=:accountid";
  11008. OracleParameter[] paras = new OracleParameter[]{
  11009. new OracleParameter(":kilncarcode",OracleDbType.Varchar2, kilncarcode,ParameterDirection.Input),
  11010. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  11011. };
  11012. DataSet dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  11013. int kilncarid = 0;
  11014. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  11015. {
  11016. oracleTrConn.Commit();
  11017. UpdateRow = -99;
  11018. return UpdateRow;//窑车编码无效
  11019. }
  11020. kilncarid = Convert.ToInt32(dsExists.Tables[0].Rows[0]["kilncarid"]);//窑车ID
  11021. //判断此窑车号有无产品
  11022. sql = "select barcode,KilnCarBatchNo from TP_PM_KilnCarGoods where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1";
  11023. paras = new OracleParameter[]{
  11024. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  11025. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  11026. };
  11027. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sql, paras);
  11028. if (dsGoods != null && dsGoods.Tables[0].Rows.Count == 0)
  11029. {
  11030. oracleTrConn.Commit();
  11031. UpdateRow = -98;
  11032. return UpdateRow;//窑车己无产品
  11033. }
  11034. // 判断窑车编码是否在入窑工序
  11035. sql = "select 1 from TP_PM_InProduction where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and FlowProcedureID=:FlowProcedureID";
  11036. paras = new OracleParameter[]{
  11037. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  11038. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  11039. new OracleParameter(":FlowProcedureID", OracleDbType.Int32, procedureid, ParameterDirection.Input),
  11040. };
  11041. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  11042. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  11043. {
  11044. oracleTrConn.Commit();
  11045. UpdateRow = -97;
  11046. return UpdateRow;//窑车号没有入窑,不可以撤销
  11047. }
  11048. int KilnCarDataID = 0;//窑车生产数据ID
  11049. // 遍历窑车产品
  11050. bool isError = false;//默认没有错误
  11051. for (int i = 0; i < dsGoods.Tables[0].Rows.Count; i++)
  11052. {
  11053. #region 先查询生产数据最后3条
  11054. string sqlString = @"select ProductionDataID,
  11055. ProcedureID,
  11056. ProcedureModel,
  11057. ModelType,
  11058. ReworkProcedureID,
  11059. UserID,
  11060. logoid
  11061. from (select ProductionDataID,
  11062. ProcedureID,
  11063. ProcedureModel,
  11064. ModelType,
  11065. ReworkProcedureID,
  11066. UserID,
  11067. logoid
  11068. from Tp_Pm_ProductiondataIn
  11069. where barcode = :barcode
  11070. and valueflag = 1 and ModelType<>2
  11071. order by ProductionDataID desc)
  11072. where rownum <=1";
  11073. paras = new OracleParameter[]{
  11074. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  11075. };
  11076. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  11077. if (productionData == null
  11078. || productionData.Tables.Count == Constant.INT_IS_ZERO
  11079. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  11080. {
  11081. //errMsg = Messages.MSG_PM_W016;
  11082. isError = true;
  11083. break;
  11084. }
  11085. #endregion
  11086. #region 回滚在产数据
  11087. sqlString = @"update TP_PM_InProduction
  11088. set FlowProcedureID = :flowProcedureID,
  11089. ProcedureModel = :procedureModel,
  11090. ProcedureID = :flowProcedureID,
  11091. ModelType = :modelType,
  11092. ReworkProcedureID = :reworkProcedureID,
  11093. UserID = :userID,
  11094. updateuserid = :updateuserid,
  11095. logoid = :logoid
  11096. where barcode = :barcode";
  11097. paras = new OracleParameter[]{
  11098. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  11099. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//2-->1
  11100. new OracleParameter(":procedureModel",OracleDbType.Int32,
  11101. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  11102. new OracleParameter(":modelType",OracleDbType.Int32,
  11103. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  11104. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  11105. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  11106. new OracleParameter(":userID",OracleDbType.Int32,
  11107. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  11108. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  11109. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  11110. new OracleParameter(":logoid",OracleDbType.Int32, productionData.Tables[0].Rows[0]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[0]["logoid"],ParameterDirection.Input),
  11111. };
  11112. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  11113. if (UpdateRow == Constant.INT_IS_ZERO)
  11114. {
  11115. // 保存失败
  11116. isError = true;
  11117. break;
  11118. }
  11119. #endregion
  11120. #region 删除生产者和最后一条生产数据
  11121. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  11122. paras = new OracleParameter[]{
  11123. new OracleParameter(":productionDataID",OracleDbType.Int32,
  11124. productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  11125. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11126. dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  11127. };
  11128. //modify 2015/05/13 wangx GoodsLevelTypeID=12 撤销入窑
  11129. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=12 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  11130. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  11131. int? GoodsLevelID = null;
  11132. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  11133. {
  11134. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  11135. }
  11136. //modify end
  11137. sqlString = "update TP_PM_ProductionDataIn set valueflag=0,updateuserid= " + sUserInfo.UserID;
  11138. if (GoodsLevelID != null)
  11139. {
  11140. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  11141. sqlString += ",GoodsLevelTypeID=12";
  11142. }
  11143. //sqlString += " where ProductionDataID=:productionDataID or ProductionDataID=:productionDataID2";
  11144. sqlString += " where barcode=:barcode and ProductionDataID>:productionDataID "; //or ProductionDataID=:productionDataID2
  11145. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  11146. if (UpdateRow == Constant.INT_IS_ZERO)
  11147. {
  11148. // 保存失败
  11149. isError = true;
  11150. break;
  11151. }
  11152. #endregion
  11153. //#region 删除窑车产品
  11154. //sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  11155. //paras = new OracleParameter[]{
  11156. // new OracleParameter(":barCode",OracleDbType.Varchar2,
  11157. // dsGoods.Tables[0].Rows[i]["barcode"],ParameterDirection.Input),
  11158. //};
  11159. //UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  11160. //if (UpdateRow == Constant.INT_IS_ZERO)
  11161. //{
  11162. // // 保存失败
  11163. // isError = true;
  11164. // break;
  11165. //}
  11166. //#endregion
  11167. #region 读取窑车生产数据,进行撤销
  11168. sql = @"select KilnCarDataID, ProductionLineID,ProcedureID,
  11169. ProcedureCode,ProcedureName,ProcedureModel,ModelType,PieceType
  11170. from TP_PM_KilnCarData where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and KilnCarBatchNo=:KilnCarBatchNo order by KilnCarDataID ";
  11171. paras = new OracleParameter[]{
  11172. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  11173. kilncarid,ParameterDirection.Input),
  11174. new OracleParameter(":accountid",OracleDbType.Int32,
  11175. sUserInfo.AccountID,ParameterDirection.Input),
  11176. new OracleParameter(":KilnCarBatchNo",OracleDbType.Varchar2,
  11177. dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString(),ParameterDirection.Input),
  11178. };
  11179. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  11180. if (dsExists != null && dsExists.Tables[0].Rows.Count > 0)
  11181. {
  11182. //最后窑车生产数据ID赋值
  11183. KilnCarDataID = Convert.ToInt32(dsExists.Tables[0].Rows[dsExists.Tables[0].Rows.Count - 1]["KilnCarDataID"]);
  11184. sqlString = @"update TP_PM_KilnCarStatus set
  11185. ProductionLineID=:ProductionLineID
  11186. ,ProcedureID=:ProcedureID
  11187. ,ProcedureCode=:ProcedureCode
  11188. ,ProcedureName=:ProcedureName
  11189. ,ProcedureModel=:ProcedureModel
  11190. ,ModelType=:ModelType
  11191. ,PieceType=:PieceType
  11192. ,KilnCarStatus=0,IntoKilnTime=null,OutKilnTime=null,UnloadingTime=null
  11193. where KilnCarID=:KilnCarID";
  11194. paras = new OracleParameter[]{
  11195. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  11196. dsExists.Tables[0].Rows[0]["ProductionLineID"],ParameterDirection.Input),
  11197. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  11198. dsExists.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),
  11199. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  11200. dsExists.Tables[0].Rows[0]["ProcedureCode"].ToString(),ParameterDirection.Input),
  11201. new OracleParameter(":ProcedureModel",OracleDbType.Varchar2,
  11202. dsExists.Tables[0].Rows[0]["ProcedureModel"].ToString(),ParameterDirection.Input),
  11203. new OracleParameter(":ModelType",OracleDbType.Int32,
  11204. Convert.ToInt32(dsExists.Tables[0].Rows[0]["ModelType"]),ParameterDirection.Input),
  11205. new OracleParameter(":PieceType",OracleDbType.Varchar2,
  11206. dsExists.Tables[0].Rows[0]["PieceType"].ToString(),ParameterDirection.Input),
  11207. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  11208. kilncarid,ParameterDirection.Input),
  11209. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  11210. dsExists.Tables[0].Rows[0]["ProcedureName"].ToString(),ParameterDirection.Input),
  11211. };
  11212. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  11213. if (UpdateRow == Constant.INT_IS_ZERO)
  11214. {
  11215. // 保存失败
  11216. isError = true;
  11217. break;
  11218. }
  11219. }
  11220. #endregion
  11221. }
  11222. //modify wangx 20150606 begin
  11223. string updateSql = "update TP_PM_KilnCarData set valueflag=0,UpdateUserID=" + sUserInfo.UserID + " where KilnCarDataID=" + KilnCarDataID;
  11224. int row = oracleTrConn.ExecuteNonQuery(updateSql);
  11225. //modify wangx 20150606 end
  11226. if (isError) //有错误消息
  11227. {
  11228. UpdateRow = -1;//失败
  11229. oracleTrConn.Rollback();
  11230. }
  11231. else
  11232. {
  11233. UpdateRow = 1;//成功
  11234. oracleTrConn.Commit();
  11235. }
  11236. }
  11237. catch (Exception ex)
  11238. {
  11239. oracleTrConn.Rollback();
  11240. throw ex;
  11241. }
  11242. finally
  11243. {
  11244. // 释放资源
  11245. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11246. {
  11247. oracleTrConn.Disconnect();
  11248. }
  11249. }
  11250. return UpdateRow;
  11251. }
  11252. /// <summary>
  11253. /// 保存盘点单
  11254. /// </summary>
  11255. /// <param name="inProductionEntity"></param>
  11256. /// <param name="remarks"></param>
  11257. /// <param name="sUserInfo"></param>
  11258. /// <returns></returns>
  11259. public static int SaveInChecked(InProductionEntity[] inProductionEntity, string remarks, SUserInfo sUserInfo)
  11260. {
  11261. int returnRows = 0;
  11262. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11263. try
  11264. {
  11265. if (inProductionEntity[0].ReworkProcedureID == 0)
  11266. {
  11267. //盘点单号
  11268. string InCheckedNo = string.Format("IPC{0}", DateTime.Now.ToString("yyyyMMddHHmmss"));
  11269. //获得账务日期
  11270. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  11271. //备注
  11272. string Remarks = remarks;
  11273. oracleTrConn.Connect();
  11274. //盘点单ID
  11275. string sql = "select SEQ_PM_InChecked_ID.nextval from dual";
  11276. int InCheckedID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  11277. #region 插入盘点单主表信息
  11278. sql = @"insert into TP_PM_InChecked
  11279. (
  11280. InCheckedID,
  11281. InCheckedNo,
  11282. AccountDate,
  11283. Remarks,
  11284. AccountID,
  11285. CreateUserID,
  11286. UpdateUserID,
  11287. INCHECKNAME
  11288. ) values
  11289. ( :InCheckedID,
  11290. :InCheckedNo,
  11291. :AccountDate,
  11292. :Remarks,
  11293. :AccountID,
  11294. :CreateUserID,
  11295. :UpdateUserID,
  11296. :INCHECKNAME
  11297. )";
  11298. OracleParameter[] Paras = new OracleParameter[] {
  11299. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11300. InCheckedID,ParameterDirection.Input),
  11301. new OracleParameter(":InCheckedNo",OracleDbType.NVarchar2,
  11302. InCheckedNo,ParameterDirection.Input),
  11303. new OracleParameter(":AccountDate",OracleDbType.Date,
  11304. accountDate,ParameterDirection.Input),
  11305. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  11306. Remarks,ParameterDirection.Input),
  11307. new OracleParameter(":AccountID",OracleDbType.Int32,
  11308. sUserInfo.AccountID,ParameterDirection.Input),
  11309. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  11310. sUserInfo.UserID,ParameterDirection.Input),
  11311. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  11312. sUserInfo.UserID,ParameterDirection.Input),
  11313. new OracleParameter(":INCHECKNAME",OracleDbType.NVarchar2,
  11314. inProductionEntity[0].CompleteProcedureName,ParameterDirection.Input),
  11315. };
  11316. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11317. #endregion
  11318. //string barcodes = "";
  11319. List<OracleParameter> parameters = null;
  11320. //int row = 0;
  11321. //foreach (InProductionEntity entity in inProductionEntity)
  11322. //{
  11323. // barcodes += entity.BarCode + ",";
  11324. // row++;
  11325. // if (row > 15) //为了15查数据库一次
  11326. // {
  11327. // barcodes = barcodes.TrimEnd(',') + '|';
  11328. // row = 0;//重置
  11329. // }
  11330. //}
  11331. //barcodes = barcodes.TrimEnd(',');
  11332. //string[] subsplit = barcodes.Split('|');
  11333. // foreach (InProductionEntity entity in inProductionEntity)foreach (InProductionEntity entity in inProductionEntity)
  11334. //foreach (string entity in subsplit)
  11335. //{
  11336. //barcodes += entity.BarCode + ",";
  11337. //barcodes = barcodes.TrimEnd(','); //在产产品是唯一的,直接根据条码查询,并插入到盘点明细
  11338. sql = @"
  11339. insert into TP_PM_InCheckedDetail
  11340. (
  11341. InCheckedID,
  11342. BarCode,
  11343. InCheckedNo,
  11344. ProductionLineID,
  11345. ProductionLineCode,
  11346. ProductionLineName,
  11347. ProcedureID,
  11348. ProcedureTime,
  11349. ProcedureModel,
  11350. ModelType,
  11351. DefectFlag,
  11352. ReworkProcedureID,
  11353. IsPublicBody,
  11354. IsReFire,
  11355. SpecialRepairFlag,
  11356. GoodsLevelID,
  11357. GoodsLevelTypeID,
  11358. GoodsID,
  11359. GoodsCode,
  11360. GoodsName,
  11361. UserID,
  11362. GroutingDailyID,
  11363. GroutingDailyDetailID,
  11364. GroutingDate,
  11365. GroutingLineID,
  11366. GroutingLineCode,
  11367. GroutingLineName,
  11368. GMouldTypeID,
  11369. CanManyTimes,
  11370. GroutingLineDetailID,
  11371. GroutingMouldCode,
  11372. MouldCode,
  11373. GroutingUserID,
  11374. GroutingUserCode,
  11375. GroutingNum,
  11376. Remarks,
  11377. KilnID,
  11378. KilnCode,
  11379. KilnName,
  11380. KilnCarID,
  11381. KilnCarCode,
  11382. KilnCarName,
  11383. KilnCarBatchNo,
  11384. KilnCarPosition,
  11385. AccountID,
  11386. CreateUserID,
  11387. UpdateUserID,
  11388. valueflag,
  11389. logoid,
  11390. ISREWORKFLAG,INSCRAPFLAG
  11391. )
  11392. select
  11393. :InCheckedID,
  11394. inp.BarCode,
  11395. :InCheckedNo,
  11396. inp.ProductionLineID,
  11397. inp.ProductionLineCode,
  11398. inp.ProductionLineName,
  11399. inp.ProcedureID,
  11400. inp.ProcedureTime,
  11401. inp.ProcedureModel,
  11402. inp.ModelType,
  11403. inp.DefectFlag,
  11404. inp.ReworkProcedureID,
  11405. inp.IsPublicBody,
  11406. inp.IsReFire,
  11407. inp.SpecialRepairFlag,
  11408. inp.GoodsLevelID,
  11409. inp.GoodsLevelTypeID,
  11410. inp.GoodsID,
  11411. inp.GoodsCode,
  11412. inp.GoodsName,
  11413. inp.UserID,
  11414. inp.GroutingDailyID,
  11415. inp.GroutingDailyDetailID,
  11416. inp.GroutingDate,
  11417. inp.GroutingLineID,
  11418. inp.GroutingLineCode,
  11419. inp.GroutingLineName,
  11420. inp.GMouldTypeID,
  11421. inp.CanManyTimes,
  11422. inp.GroutingLineDetailID,
  11423. inp.GroutingMouldCode,
  11424. inp.MouldCode,
  11425. inp.GroutingUserID,
  11426. inp.GroutingUserCode,
  11427. inp.GroutingNum,
  11428. inp.Remarks,
  11429. inp.KilnID,
  11430. inp.KilnCode,
  11431. inp.KilnName,
  11432. inp.KilnCarID,
  11433. inp.KilnCarCode,
  11434. inp.KilnCarName,
  11435. inp.KilnCarBatchNo,
  11436. inp.KilnCarPosition,
  11437. :AccountID,
  11438. :CreateUserID,
  11439. :UpdateUserID,
  11440. 1,
  11441. inp.logoid,
  11442. inp.ISREWORKFLAG,inp.INSCRAPFLAG
  11443. from TP_PM_InProduction inp
  11444. LEFT JOIN tp_mst_goods g
  11445. ON g.goodsid = inp.goodsid
  11446. LEFT JOIN tp_mst_goodsType gt
  11447. ON gt.goodstypeid = g.goodstypeid
  11448. where 1=1
  11449. ";
  11450. //sql += "AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ";
  11451. parameters = new List<OracleParameter>();
  11452. // 工序IDS
  11453. if (!string.IsNullOrEmpty(inProductionEntity[0].ProcedureIDS))
  11454. {
  11455. sql += "AND instr(','||:ProcedureIDS||',',','||inp.FlowProcedureID||',')>0 ";
  11456. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, inProductionEntity[0].ProcedureIDS, ParameterDirection.Input));
  11457. }
  11458. // 完成日期
  11459. if (inProductionEntity[0].StartCompleteDate != null)
  11460. {
  11461. sql = sql + " AND inp.ProcedureTime >= :Createdate AND inp.ProcedureTime <= :EndDate ";
  11462. parameters.Add(new OracleParameter(":Createdate", OracleDbType.Date, inProductionEntity[0].StartCompleteDate, ParameterDirection.Input));
  11463. parameters.Add(new OracleParameter(":EndDate", OracleDbType.Date, inProductionEntity[0].EndCompleteDate, ParameterDirection.Input));
  11464. }
  11465. // 编码IDS
  11466. if (!string.IsNullOrEmpty(inProductionEntity[0].GoodsCodeList))
  11467. {
  11468. sql += "AND instr(','||:GoodsIDS||',',','||inp.GoodsID||',')>0 ";
  11469. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, inProductionEntity[0].GoodsCodeList, ParameterDirection.Input));
  11470. }
  11471. // 产品类型
  11472. if (!string.IsNullOrEmpty(inProductionEntity[0].GoodsTypeCode))
  11473. {
  11474. sql += "AND instr(gt.goodstypecode, :GoodsTypeCode)=1 ";
  11475. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, inProductionEntity[0].GoodsTypeCode, ParameterDirection.Input));
  11476. }
  11477. parameters.Add(new OracleParameter(":InCheckedID", OracleDbType.Int32, InCheckedID, ParameterDirection.Input));
  11478. parameters.Add(new OracleParameter(":InCheckedNo", OracleDbType.Varchar2, InCheckedNo, ParameterDirection.Input));
  11479. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  11480. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11481. parameters.Add(new OracleParameter(":UpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11482. returnRows += oracleTrConn.ExecuteNonQuery(sql, parameters.ToArray());
  11483. #region 插入盘点工号列表
  11484. foreach (DataRow r in inProductionEntity[0].UserTable.Rows)
  11485. {
  11486. if (r["userid"] != DBNull.Value)
  11487. {
  11488. sql = @" Insert into tp_pm_incheckeduser
  11489. (
  11490. incheckedid,
  11491. userCode,
  11492. userid
  11493. )
  11494. values
  11495. (
  11496. :inchecked,
  11497. :userCode,
  11498. :userid
  11499. )
  11500. ";
  11501. Paras = new OracleParameter[] {
  11502. new OracleParameter(":inchecked",OracleDbType.Int32,
  11503. InCheckedID,ParameterDirection.Input),
  11504. new OracleParameter(":userCode",OracleDbType.NVarchar2,
  11505. r["userCode"],ParameterDirection.Input),
  11506. new OracleParameter(":userid",OracleDbType.Int32,
  11507. r["userid"],ParameterDirection.Input),
  11508. };
  11509. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11510. }
  11511. }
  11512. #endregion
  11513. }
  11514. else
  11515. {
  11516. string sql = @"Update TP_PM_InChecked set Incheckname=:Incheckname,Remarks=:Remarks,updateuserid=:updateuserid where InCheckedID=:InCheckedID";
  11517. OracleParameter[] Paras = new OracleParameter[] {
  11518. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11519. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11520. new OracleParameter(":Incheckname",OracleDbType.NVarchar2,
  11521. inProductionEntity[0].CompleteProcedureName,ParameterDirection.Input),
  11522. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  11523. remarks,ParameterDirection.Input),
  11524. new OracleParameter(":updateuserid",OracleDbType.Int32,
  11525. sUserInfo.UserID,ParameterDirection.Input),
  11526. };
  11527. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11528. sql = @"delete from tp_pm_incheckeduser where InCheckedID=:InCheckedID";
  11529. Paras = new OracleParameter[] {
  11530. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11531. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11532. };
  11533. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11534. #region 插入盘点工号列表
  11535. foreach (DataRow r in inProductionEntity[0].UserTable.Rows)
  11536. {
  11537. if (string.IsNullOrEmpty(r["userCode"].ToString()) ||
  11538. string.IsNullOrEmpty(r["userid"].ToString()))
  11539. {
  11540. continue;
  11541. }
  11542. sql = @" Insert into tp_pm_incheckeduser
  11543. (
  11544. incheckedid,
  11545. userCode,
  11546. userid
  11547. )
  11548. values
  11549. (
  11550. :inchecked,
  11551. :userCode,
  11552. :userid
  11553. )
  11554. ";
  11555. Paras = new OracleParameter[] {
  11556. new OracleParameter(":inchecked",OracleDbType.Int32,
  11557. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11558. new OracleParameter(":userCode",OracleDbType.NVarchar2,
  11559. r["userCode"],ParameterDirection.Input),
  11560. new OracleParameter(":userid",OracleDbType.Int32,
  11561. r["userid"],ParameterDirection.Input),
  11562. };
  11563. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11564. }
  11565. #endregion
  11566. }
  11567. if (returnRows == 0)
  11568. {
  11569. oracleTrConn.Rollback();
  11570. oracleTrConn.Disconnect();
  11571. }
  11572. else
  11573. {
  11574. oracleTrConn.Commit();
  11575. oracleTrConn.Disconnect();
  11576. }
  11577. }
  11578. catch (Exception ex)
  11579. {
  11580. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11581. {
  11582. oracleTrConn.Rollback();
  11583. oracleTrConn.Disconnect();
  11584. }
  11585. throw ex;
  11586. }
  11587. finally
  11588. {
  11589. if (oracleTrConn.ConnState == ConnectionState.Open)
  11590. {
  11591. oracleTrConn.Disconnect();
  11592. }
  11593. }
  11594. return returnRows;
  11595. }
  11596. /// <summary>
  11597. /// 更新盘点单
  11598. /// </summary>
  11599. /// <param name="InCheckedID">盘点单号</param>
  11600. /// <param name="BarCode">产品条码</param>
  11601. /// <param name="sUserInfo">用户基本信息</param>
  11602. /// <returns></returns>
  11603. public static int UpdateInChecked(int InCheckedID, string BarCode, SUserInfo sUserInfo)
  11604. {
  11605. int returnRows = 0;
  11606. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11607. try
  11608. {
  11609. // 转换条码
  11610. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  11611. OracleParameter[] paras1 = new OracleParameter[]{
  11612. new OracleParameter(":barcode",OracleDbType.Varchar2, BarCode,ParameterDirection.Input),
  11613. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  11614. };
  11615. BarCode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  11616. string sql = @"select 1 from TP_PM_InProduction where barcode=:barcode";
  11617. OracleParameter[] Paras = new OracleParameter[] {
  11618. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  11619. BarCode,ParameterDirection.Input)
  11620. };
  11621. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11622. if (ds != null && ds.Tables[0].Rows.Count == 0)
  11623. {
  11624. returnRows = -2;//该产品不在生产线
  11625. return returnRows;
  11626. }
  11627. sql = @"select InCheckedFlag,CHECKEDUSERID as Userid from TP_PM_InCheckedDetail where InCheckedID=:InCheckedID and BarCode=:BarCode and Valueflag=1";
  11628. Paras = new OracleParameter[] {
  11629. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11630. InCheckedID,ParameterDirection.Input),
  11631. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  11632. BarCode,ParameterDirection.Input)
  11633. };
  11634. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11635. if (ds != null && ds.Tables[0].Rows.Count == 0)
  11636. {
  11637. sql = @"select InCheckedNo from TP_PM_InChecked where InCheckedID=:InCheckedID";
  11638. Paras = new OracleParameter[] {
  11639. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11640. InCheckedID,ParameterDirection.Input),
  11641. };
  11642. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11643. string InCheckedNo = ds.Tables[0].Rows[0]["InCheckedNo"].ToString();//肯定会有盘点单号,所以就没有加判断
  11644. //在产不在生产线上,属于盘赢
  11645. sql = @"
  11646. insert into TP_PM_InCheckedDetail
  11647. (
  11648. InCheckedID,
  11649. BarCode,
  11650. InCheckedNo,
  11651. ProductionLineID,
  11652. ProductionLineCode,
  11653. ProductionLineName,
  11654. ProcedureID,
  11655. ProcedureTime,
  11656. ProcedureModel,
  11657. ModelType,
  11658. DefectFlag,
  11659. ReworkProcedureID,
  11660. IsPublicBody,
  11661. IsReFire,
  11662. SpecialRepairFlag,
  11663. GoodsLevelID,
  11664. GoodsLevelTypeID,
  11665. GoodsID,
  11666. GoodsCode,
  11667. GoodsName,
  11668. UserID,
  11669. GroutingDailyID,
  11670. GroutingDailyDetailID,
  11671. GroutingDate,
  11672. GroutingLineID,
  11673. GroutingLineCode,
  11674. GroutingLineName,
  11675. GMouldTypeID,
  11676. CanManyTimes,
  11677. GroutingLineDetailID,
  11678. GroutingMouldCode,
  11679. MouldCode,
  11680. GroutingUserID,
  11681. GroutingUserCode,
  11682. GroutingNum,
  11683. Remarks,
  11684. KilnID,
  11685. KilnCode,
  11686. KilnName,
  11687. KilnCarID,
  11688. KilnCarCode,
  11689. KilnCarName,
  11690. KilnCarBatchNo,
  11691. KilnCarPosition,
  11692. AccountID,
  11693. CreateUserID,
  11694. UpdateUserID,
  11695. InCheckedFlag,
  11696. CheckedDate,
  11697. CheckedUserID,
  11698. logoid
  11699. )
  11700. select
  11701. :InCheckedID,
  11702. BarCode,
  11703. :InCheckedNo,
  11704. ProductionLineID,
  11705. ProductionLineCode,
  11706. ProductionLineName,
  11707. ProcedureID,
  11708. ProcedureTime,
  11709. ProcedureModel,
  11710. ModelType,
  11711. DefectFlag,
  11712. ReworkProcedureID,
  11713. IsPublicBody,
  11714. IsReFire,
  11715. SpecialRepairFlag,
  11716. GoodsLevelID,
  11717. GoodsLevelTypeID,
  11718. GoodsID,
  11719. GoodsCode,
  11720. GoodsName,
  11721. UserID,
  11722. GroutingDailyID,
  11723. GroutingDailyDetailID,
  11724. GroutingDate,
  11725. GroutingLineID,
  11726. GroutingLineCode,
  11727. GroutingLineName,
  11728. GMouldTypeID,
  11729. CanManyTimes,
  11730. GroutingLineDetailID,
  11731. GroutingMouldCode,
  11732. MouldCode,
  11733. GroutingUserID,
  11734. GroutingUserCode,
  11735. GroutingNum,
  11736. Remarks,
  11737. KilnID,
  11738. KilnCode,
  11739. KilnName,
  11740. KilnCarID,
  11741. KilnCarCode,
  11742. KilnCarName,
  11743. KilnCarBatchNo,
  11744. KilnCarPosition,
  11745. :AccountID,
  11746. :CreateUserID,
  11747. :UpdateUserID,
  11748. :InCheckedFlag,
  11749. sysdate,
  11750. :CheckedUserID,
  11751. logoid
  11752. from TP_PM_InProduction where 1=1
  11753. ";
  11754. ;
  11755. List<OracleParameter> parameters = new List<OracleParameter>();
  11756. sql += "AND instr(','||:barcode||',',','||TP_PM_InProduction.barcode||',')>0 ";
  11757. parameters.Add(new OracleParameter(":InCheckedID", OracleDbType.Int32, InCheckedID, ParameterDirection.Input));
  11758. parameters.Add(new OracleParameter(":InCheckedNo", OracleDbType.Varchar2, InCheckedNo, ParameterDirection.Input));
  11759. parameters.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, BarCode, ParameterDirection.Input));
  11760. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  11761. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11762. parameters.Add(new OracleParameter(":UpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11763. parameters.Add(new OracleParameter(":InCheckedFlag", OracleDbType.Int32, Constant.InCheckedFlag.InCheckedWin.GetHashCode(), ParameterDirection.Input));
  11764. parameters.Add(new OracleParameter(":CheckedUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11765. returnRows += oracleTrConn.ExecuteNonQuery(sql, parameters.ToArray());
  11766. returnRows = 10;
  11767. }
  11768. else
  11769. {
  11770. int InCheckedFlag = Convert.ToInt32(ds.Tables[0].Rows[0]["InCheckedFlag"]);
  11771. if (InCheckedFlag == 1)
  11772. {
  11773. if (Convert.ToInt32(ds.Tables[0].Rows[0]["Userid"]) != sUserInfo.UserID)
  11774. {
  11775. returnRows = -22;//己被其他工号盘点
  11776. }
  11777. else
  11778. {
  11779. returnRows = -24;//己被自己工号盘点
  11780. }
  11781. return returnRows;
  11782. }
  11783. else if (InCheckedFlag == 2)
  11784. {
  11785. if (Convert.ToInt32(ds.Tables[0].Rows[0]["Userid"]) != sUserInfo.UserID)
  11786. {
  11787. returnRows = -23;//己被其他工号盘盈
  11788. }
  11789. else
  11790. {
  11791. returnRows = -25;//己被自己工号盘盈
  11792. }
  11793. return returnRows;
  11794. }
  11795. sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and BarCode=:BarCode and InCheckedFlag=:whereInCheckedFlag";
  11796. Paras = new OracleParameter[] {
  11797. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  11798. sUserInfo.UserID,ParameterDirection.Input),
  11799. new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
  11800. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  11801. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11802. InCheckedID,ParameterDirection.Input),
  11803. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  11804. BarCode,ParameterDirection.Input),
  11805. new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
  11806. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  11807. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  11808. sUserInfo.UserID,ParameterDirection.Input),
  11809. };
  11810. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11811. returnRows = 1;//防止多次盘点此条码,下面在回滚回来,代码是有作用
  11812. }
  11813. if (returnRows == 0)
  11814. {
  11815. oracleTrConn.Rollback();
  11816. oracleTrConn.Disconnect();
  11817. }
  11818. else
  11819. {
  11820. oracleTrConn.Commit();
  11821. oracleTrConn.Disconnect();
  11822. }
  11823. }
  11824. catch (Exception ex)
  11825. {
  11826. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11827. {
  11828. oracleTrConn.Rollback();
  11829. oracleTrConn.Disconnect();
  11830. }
  11831. throw ex;
  11832. }
  11833. finally
  11834. {
  11835. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11836. {
  11837. oracleTrConn.Disconnect();
  11838. }
  11839. }
  11840. return returnRows;
  11841. }
  11842. /// <summary>
  11843. /// 停用盘点单
  11844. /// </summary>
  11845. /// <param name="InCheckedID">盘点单号</param>
  11846. /// <returns></returns>
  11847. public static int DisableInChecked(int InCheckedID, SUserInfo sUserInfo)
  11848. {
  11849. int returnRows = 0;
  11850. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11851. try
  11852. {
  11853. string sql = "update TP_PM_InChecked set valueflag='0', updateuserid=:updateuserid where InCheckedID=:InCheckedID and valueflag='1'";
  11854. OracleParameter[] Paras = new OracleParameter[] {
  11855. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11856. InCheckedID,ParameterDirection.Input),
  11857. new OracleParameter(":updateuserid",OracleDbType.Int32,
  11858. sUserInfo.UserID,ParameterDirection.Input)
  11859. };
  11860. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11861. if (returnRows == 0)
  11862. {
  11863. oracleTrConn.Rollback();
  11864. oracleTrConn.Disconnect();
  11865. }
  11866. else
  11867. {
  11868. oracleTrConn.Commit();
  11869. oracleTrConn.Disconnect();
  11870. }
  11871. }
  11872. catch (Exception ex)
  11873. {
  11874. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11875. {
  11876. oracleTrConn.Rollback();
  11877. oracleTrConn.Disconnect();
  11878. }
  11879. throw ex;
  11880. }
  11881. finally
  11882. {
  11883. if (oracleTrConn.ConnState == ConnectionState.Open)
  11884. {
  11885. oracleTrConn.Disconnect();
  11886. }
  11887. }
  11888. return returnRows;
  11889. }
  11890. /// <summary>
  11891. /// 撤销包装
  11892. /// </summary>
  11893. /// <param name="barcode">产品条码</param>
  11894. /// <returns></returns>
  11895. public static ServiceResultEntity AddChancelFinishedproduct(string barcode, SUserInfo sUserInfo)
  11896. {
  11897. ServiceResultEntity entity = new ServiceResultEntity();
  11898. int returnRows = 0;
  11899. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11900. try
  11901. {
  11902. //xuwei add 2019-10-15 修正 撤销包装时 副品变正品
  11903. int goodsLevelID;
  11904. int goodsLevelTypeID;
  11905. //xuwei end
  11906. // 转换注浆条码
  11907. barcode = CommonModuleLogic.CommonModuleLogic.GetBarcode(oracleTrConn, barcode, sUserInfo);
  11908. DateTime? createTime = null;
  11909. // 1 条码是否在产成品表中
  11910. string sql = "select createTime,FHUserCode,GoodsCode,GoodsLevelID,GoodsLevelTypeID from tp_pm_finishedproduct where barcode=:barcode and valueflag=1";
  11911. OracleParameter[] Paras = new OracleParameter[] {
  11912. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11913. barcode,ParameterDirection.Input)
  11914. };
  11915. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11916. if (ds.Tables[0].Rows.Count == 0)
  11917. {
  11918. //不存在产成品
  11919. returnRows = -1;
  11920. oracleTrConn.Rollback();
  11921. oracleTrConn.Disconnect();
  11922. entity.Result = returnRows;
  11923. return entity;
  11924. }
  11925. else
  11926. {
  11927. //wangx 2017-02-10 已经交接不允许撤销
  11928. if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0]["FHUserCode"].ToString()))
  11929. {
  11930. entity.Result = -200; //已交接,不能再次进行交接
  11931. entity.Message = "此产品【" + ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "】已交接,不能进行该操作";
  11932. oracleTrConn.Rollback();
  11933. oracleTrConn.Disconnect();
  11934. return entity;
  11935. }
  11936. //wangx 2017-02-10 end
  11937. createTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["createTime"]); // 成品时间
  11938. //xuwei add 2019-10-15 修正 撤销包装时 副品变正品
  11939. goodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  11940. goodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["goodsLevelTypeID"]);
  11941. //xuwei end
  11942. }
  11943. #region 是否启用成品撤销限制天数
  11944. if (createTime != null)
  11945. {
  11946. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  11947. Paras = new OracleParameter[] {
  11948. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  11949. Constant.SettingType.S_PM_005.ToString(),ParameterDirection.Input),
  11950. new OracleParameter(":accountid",OracleDbType.Int32,
  11951. sUserInfo.AccountID,ParameterDirection.Input)
  11952. };
  11953. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11954. if (ds != null && ds.Tables[0].Rows.Count > 0)
  11955. {
  11956. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  11957. {
  11958. // 开启了限制
  11959. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(createTime),
  11960. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_005.ToString(), sUserInfo);
  11961. if (Convert.ToInt32(resultEntity.Result) < 0)
  11962. {
  11963. //超过成品撤销限制天数
  11964. returnRows = -200;
  11965. oracleTrConn.Rollback();
  11966. oracleTrConn.Disconnect();
  11967. entity.Result = returnRows;
  11968. entity.Message = resultEntity.Message;
  11969. return entity;
  11970. }
  11971. }
  11972. }
  11973. }
  11974. #endregion
  11975. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  11976. Paras = new OracleParameter[] {
  11977. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11978. barcode,ParameterDirection.Input)
  11979. };
  11980. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11981. if (ds.Tables[0].Rows.Count == 0)
  11982. {
  11983. // 2 生产数据恢复到在产生产数据 xuwei 不用处理
  11984. sql = @"insert into tp_pm_productiondatain
  11985. (
  11986. ProductionDataID,
  11987. BarCode,
  11988. CentralizedBatchNo,
  11989. ProductionLineID,
  11990. ProductionLineCode,
  11991. ProductionLineName,
  11992. ProcedureID,
  11993. ProcedureCode,
  11994. ProcedureName,
  11995. ProcedureModel,
  11996. ModelType,
  11997. PieceType,
  11998. IsReworked,
  11999. NodeType,
  12000. IsPublicBody,
  12001. IsReFire,
  12002. GoodsLevelID,
  12003. GoodsLevelTypeID,
  12004. SpecialRepairFlag,
  12005. OrganizationID,
  12006. GoodsID,
  12007. GoodsCode,
  12008. GoodsName,
  12009. UserID,
  12010. UserCode,
  12011. UserName,
  12012. ClassesSettingID,
  12013. KilnID,
  12014. KilnCode,
  12015. KilnName,
  12016. KilnCarID,
  12017. KilnCarCode,
  12018. KilnCarName,
  12019. KilnCarBatchNo,
  12020. KilnCarPosition,
  12021. ReworkProcedureID,
  12022. ReworkProcedureCode,
  12023. ReworkProcedureName,
  12024. GroutingDailyID,
  12025. GroutingDailyDetailID,
  12026. GroutingLineID,
  12027. GroutingLineCode,
  12028. GroutingLineName,
  12029. GMouldTypeID,
  12030. CanManyTimes,
  12031. GroutingLineDetailID,
  12032. GroutingDate,
  12033. GroutingMouldCode,
  12034. MouldCode,
  12035. GroutingUserID,
  12036. GroutingUserCode,
  12037. GroutingNum,
  12038. Remarks,
  12039. AccountDate,
  12040. SettlementFlag,
  12041. AccountID,
  12042. ValueFlag,
  12043. CreateTime,
  12044. CreateUserID,
  12045. UpdateTime,
  12046. UpdateUserID,
  12047. OPTimeStamp,
  12048. TriggerFlag,
  12049. LogoID,
  12050. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  12051. )
  12052. select
  12053. ProductionDataID,
  12054. BarCode,
  12055. CentralizedBatchNo,
  12056. ProductionLineID,
  12057. ProductionLineCode,
  12058. ProductionLineName,
  12059. ProcedureID,
  12060. ProcedureCode,
  12061. ProcedureName,
  12062. ProcedureModel,
  12063. ModelType,
  12064. PieceType,
  12065. IsReworked,
  12066. NodeType,
  12067. IsPublicBody,
  12068. IsReFire,
  12069. GoodsLevelID,
  12070. GoodsLevelTypeID,
  12071. SpecialRepairFlag,
  12072. OrganizationID,
  12073. GoodsID,
  12074. GoodsCode,
  12075. GoodsName,
  12076. UserID,
  12077. UserCode,
  12078. UserName,
  12079. ClassesSettingID,
  12080. KilnID,
  12081. KilnCode,
  12082. KilnName,
  12083. KilnCarID,
  12084. KilnCarCode,
  12085. KilnCarName,
  12086. KilnCarBatchNo,
  12087. KilnCarPosition,
  12088. ReworkProcedureID,
  12089. ReworkProcedureCode,
  12090. ReworkProcedureName,
  12091. GroutingDailyID,
  12092. GroutingDailyDetailID,
  12093. GroutingLineID,
  12094. GroutingLineCode,
  12095. GroutingLineName,
  12096. GMouldTypeID,
  12097. CanManyTimes,
  12098. GroutingLineDetailID,
  12099. GroutingDate,
  12100. GroutingMouldCode,
  12101. MouldCode,
  12102. GroutingUserID,
  12103. GroutingUserCode,
  12104. GroutingNum,
  12105. Remarks,
  12106. AccountDate,
  12107. SettlementFlag,
  12108. AccountID,
  12109. ValueFlag,
  12110. CreateTime,
  12111. CreateUserID,
  12112. UpdateTime,
  12113. UpdateUserID,
  12114. OPTimeStamp,
  12115. 1,
  12116. LogoID,
  12117. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  12118. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  12119. ";
  12120. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12121. }
  12122. // 3 停用在产生产数据包装数据
  12123. sql = "update TP_PM_ProductionDataIn set valueflag=0,updateuserID=" + sUserInfo.UserID
  12124. + " where ProductionDataID=(select max(ProductionDataID) from TP_PM_ProductionDataIn where barcode=:barcode and valueflag=1)";
  12125. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12126. // 4 插入在产数据
  12127. //xuwei fix 2019-10-15 修正 撤销包装时 副品变正品
  12128. sql = $@"insert into TP_PM_InProduction
  12129. (
  12130. BarCode,
  12131. ProductionLineID,
  12132. ProductionLineCode,
  12133. ProductionLineName,
  12134. FlowProcedureID,
  12135. FlowProcedureTime,
  12136. ProcedureID,
  12137. ProcedureTime,
  12138. ProductionDataID,
  12139. ProcedureModel,
  12140. ModelType,
  12141. DefectFlag,
  12142. ReworkProcedureID,
  12143. IsPublicBody,
  12144. IsReFire,
  12145. SpecialRepairFlag,
  12146. GoodsLevelID,
  12147. GoodsLevelTypeID,
  12148. GoodsID,
  12149. GoodsCode,
  12150. GoodsName,
  12151. UserID,
  12152. GroutingDailyID,
  12153. GroutingDailyDetailID,
  12154. GroutingDate,
  12155. GroutingLineID,
  12156. GroutingLineCode,
  12157. GroutingLineName,
  12158. GMouldTypeID,
  12159. CanManyTimes,
  12160. GroutingLineDetailID,
  12161. GroutingMouldCode,
  12162. MouldCode,
  12163. GroutingUserID,
  12164. GroutingUserCode,
  12165. GroutingNum,
  12166. Remarks,
  12167. KilnID,
  12168. KilnCode,
  12169. KilnName,
  12170. KilnCarID,
  12171. KilnCarCode,
  12172. KilnCarName,
  12173. KilnCarBatchNo,
  12174. KilnCarPosition,
  12175. AccountID,
  12176. ValueFlag,
  12177. CreateTime,
  12178. CreateUserID,
  12179. UpdateTime,
  12180. UpdateUserID,
  12181. OPTimeStamp,
  12182. LogoID
  12183. )
  12184. select
  12185. BarCode,
  12186. ProductionLineID,
  12187. ProductionLineCode,
  12188. ProductionLineName,
  12189. ProcedureID,
  12190. CreateTime,
  12191. ProcedureID,
  12192. CreateTime,
  12193. ProductionDataID,
  12194. ProcedureModel,
  12195. ModelType,
  12196. 0,
  12197. ReworkProcedureID,
  12198. IsPublicBody,
  12199. IsReFire,
  12200. SpecialRepairFlag,
  12201. {goodsLevelID} AS GoodsLevelID,
  12202. {goodsLevelTypeID} AS GoodsLevelTypeID,
  12203. GoodsID,
  12204. GoodsCode,
  12205. GoodsName,
  12206. UserID,
  12207. GroutingDailyID,
  12208. GroutingDailyDetailID,
  12209. GroutingDate,
  12210. GroutingLineID,
  12211. GroutingLineCode,
  12212. GroutingLineName,
  12213. GMouldTypeID,
  12214. CanManyTimes,
  12215. GroutingLineDetailID,
  12216. GroutingMouldCode,
  12217. MouldCode,
  12218. GroutingUserID,
  12219. GroutingUserCode,
  12220. GroutingNum,
  12221. Remarks,
  12222. KilnID,
  12223. KilnCode,
  12224. KilnName,
  12225. KilnCarID,
  12226. KilnCarCode,
  12227. KilnCarName,
  12228. KilnCarBatchNo,
  12229. KilnCarPosition,
  12230. AccountID,
  12231. ValueFlag,
  12232. CreateTime,
  12233. CreateUserID,
  12234. UpdateTime,
  12235. UpdateUserID,
  12236. OPTimeStamp,
  12237. LogoID
  12238. from TP_PM_ProductionData where TP_PM_ProductionData.ProductionDataID=(select max(ProductionDataID) from TP_PM_ProductionData where barcode=:barcode and valueflag=1)";
  12239. //xuwei end
  12240. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12241. // 5 删除产成品表
  12242. sql = "delete from tp_pm_finishedproduct where barcode=:barcode and valueflag=1";
  12243. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12244. if (returnRows <= 0)
  12245. {
  12246. oracleTrConn.Rollback();
  12247. oracleTrConn.Disconnect();
  12248. }
  12249. else
  12250. {
  12251. oracleTrConn.Commit();
  12252. oracleTrConn.Disconnect();
  12253. }
  12254. }
  12255. catch (Exception ex)
  12256. {
  12257. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12258. {
  12259. oracleTrConn.Rollback();
  12260. oracleTrConn.Disconnect();
  12261. }
  12262. throw ex;
  12263. }
  12264. finally
  12265. {
  12266. if (oracleTrConn.ConnState == ConnectionState.Open)
  12267. {
  12268. oracleTrConn.Disconnect();
  12269. }
  12270. }
  12271. entity.Result = returnRows;
  12272. return entity;
  12273. }
  12274. /// <summary>
  12275. /// 公坯设定
  12276. /// </summary>
  12277. /// <param name="barcode">产品条码</param>
  12278. /// <returns></returns>
  12279. public static int AddPublicBodyProduct(string barcode, SUserInfo sUserInfo)
  12280. {
  12281. int returnRows = 0;
  12282. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12283. try
  12284. {
  12285. // 1 条码是否在在产表中
  12286. string sql = "select ispublicbody from tp_pm_inproduction where barcode=:barcode and valueflag=1";
  12287. OracleParameter[] Paras = new OracleParameter[] {
  12288. new OracleParameter(":barcode",OracleDbType.Varchar2,
  12289. barcode,ParameterDirection.Input)
  12290. };
  12291. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  12292. if (ds.Tables[0].Rows.Count == 0)
  12293. {
  12294. //不存在生产线上,
  12295. returnRows = -1;
  12296. oracleTrConn.Rollback();
  12297. oracleTrConn.Disconnect();
  12298. return returnRows;
  12299. }
  12300. else
  12301. {
  12302. if (ds.Tables[0].Rows[0]["ispublicbody"].ToString() == "1")
  12303. {
  12304. returnRows = -2;
  12305. oracleTrConn.Rollback();
  12306. oracleTrConn.Disconnect();
  12307. return returnRows;
  12308. }
  12309. }
  12310. // 2 TP_PM_GroutingDailyDetail 在产盘点明细
  12311. sql = "update TP_PM_GroutingDailyDetail set ispublicbody=1 where barcode=:barcode";
  12312. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12313. // 3 TP_PM_InCheckedDetail
  12314. sql = "update TP_PM_InCheckedDetail set ispublicbody=1 where barcode=:barcode";
  12315. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12316. // 4 TP_PM_InProduction
  12317. sql = "update TP_PM_InProduction set ispublicbody=1 where barcode=:barcode";
  12318. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12319. // 5 TP_PM_InProductionTrash
  12320. sql = "update TP_PM_InProductionTrash set ispublicbody=1 where barcode=:barcode";
  12321. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12322. // 6 TP_PM_ProductionDataIn
  12323. sql = "update TP_PM_ProductionDataIn set ispublicbody=1 where barcode=:barcode";
  12324. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12325. // 7 TP_PM_ScrapProduct
  12326. sql = "update TP_PM_ScrapProduct set ispublicbody=1 where barcode=:barcode";
  12327. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12328. if (returnRows <= 0)
  12329. {
  12330. oracleTrConn.Rollback();
  12331. oracleTrConn.Disconnect();
  12332. }
  12333. else
  12334. {
  12335. oracleTrConn.Commit();
  12336. oracleTrConn.Disconnect();
  12337. }
  12338. }
  12339. catch (Exception ex)
  12340. {
  12341. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12342. {
  12343. oracleTrConn.Rollback();
  12344. oracleTrConn.Disconnect();
  12345. }
  12346. throw ex;
  12347. }
  12348. finally
  12349. {
  12350. if (oracleTrConn.ConnState == ConnectionState.Open)
  12351. {
  12352. oracleTrConn.Disconnect();
  12353. }
  12354. }
  12355. return returnRows;
  12356. }
  12357. /// <summary>
  12358. /// 交坯保存校验(首节点)
  12359. /// </summary>
  12360. /// <param name="oracleTrConn">连接对象</param>
  12361. /// <param name="procedureID">工序ID</param>
  12362. /// <param name="barcode">条码</param>
  12363. /// <param name="goodsID">返回的产品ID</param>
  12364. /// <param name="goodsCode">返回的产品Code</param>
  12365. /// <param name="goodsName">返回的产品名称</param>
  12366. /// <param name="groutingUserID">返回的注浆者ID</param>
  12367. /// <returns>string</returns>
  12368. /// <remarks>
  12369. /// 陈冰 2014.09.18 新建
  12370. /// </remarks>
  12371. private static string CheckBarcodeDeliverMud(IDBTransaction oracleTrConn,
  12372. int procedureID,
  12373. string barcode,
  12374. out int goodsID,
  12375. out string goodsCode,
  12376. out string goodsName,
  12377. out string groutingUserCode,
  12378. SUserInfo sUserInfo, ref int? GroutingDailyDetailID
  12379. )
  12380. {
  12381. try
  12382. {
  12383. string sql = "select barcodestatus,barcode,GroutingDailyDetailid from TP_PM_USEDBARCODE where barcode=:barcode";
  12384. OracleParameter[] paras = new OracleParameter[]{
  12385. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  12386. };
  12387. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  12388. string ErrorMessage = "";
  12389. if (ds != null && ds.Tables[0].Rows.Count == 0)
  12390. {
  12391. ErrorMessage = "无效条码";
  12392. }
  12393. else
  12394. {
  12395. //不等于空的时候
  12396. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  12397. {
  12398. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + ds.Tables[0].Rows[0]["barcode"].ToString() + "'";
  12399. string newbarcode = oracleTrConn.GetSqlResultToStr(sql);
  12400. ErrorMessage = "条码已被替换,新条码为" + newbarcode;
  12401. }
  12402. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  12403. {
  12404. ErrorMessage = "产品开模时已损坏";
  12405. }
  12406. // 已经交坯
  12407. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" ||
  12408. ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4")
  12409. {
  12410. //ErrorMessage = "产品已交坯";
  12411. ErrorMessage = "产品已在产";
  12412. }
  12413. }
  12414. string sqlString = @"select
  12415. GroutingDailyDetailid,
  12416. GoodsID,
  12417. GoodsCode,
  12418. GoodsName,
  12419. UserCode as GroutingUserCode,
  12420. groutingcount as GroutingNum,
  12421. GroutingMouldCode as MouldCode,
  12422. ispublicbody,
  12423. Groutingdate,
  12424. SpecialRepairFlag
  12425. from
  12426. tp_pm_GroutingDailyDetail
  12427. where tp_pm_GroutingDailyDetail.groutingdailydetailid=:groutingdailydetailid";
  12428. paras = new OracleParameter[]{
  12429. new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  12430. };
  12431. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  12432. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  12433. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  12434. goodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  12435. groutingUserCode = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  12436. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  12437. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  12438. paras = new OracleParameter[]{
  12439. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  12440. new OracleParameter(":ProcedureID",procedureID),
  12441. };
  12442. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sqlExistGoods, paras);
  12443. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  12444. {
  12445. ErrorMessage = @"条码[" + barcode +
  12446. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  12447. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  12448. }
  12449. return ErrorMessage;
  12450. }
  12451. catch (Exception ex)
  12452. {
  12453. throw ex;
  12454. }
  12455. }
  12456. /// <summary>
  12457. /// 标准计件(单点采集)
  12458. /// </summary>
  12459. /// <param name="oracleTrConn">数据连接对象</param>
  12460. /// <param name="procedure">工序对象</param>
  12461. /// <param name="barcodeTable">条码信息</param>
  12462. /// <param name="sUserInfo">用户基本信息</param>
  12463. /// <param name="goodsID">返回的产品ID</param>
  12464. /// <param name="goodsCode">返回的产品Code</param>
  12465. /// <param name="goodsName">返回的产品名称</param>
  12466. /// <param name="groutingUserID">返回的注浆者ID</param>
  12467. /// <returns>string</returns>
  12468. /// <remarks>
  12469. /// 陈冰 2014.09.18 新建
  12470. /// </remarks>
  12471. private static string AddNormalWorkPiece2(IDBTransaction oracleTrConn,
  12472. ProcedureEntity procedure,
  12473. DataTable barcodeTable,
  12474. SUserInfo sUserInfo,
  12475. out int goodsID,
  12476. out string goodsCode,
  12477. out string goodsName,
  12478. out string groutingUserCode)
  12479. {
  12480. try
  12481. {
  12482. goodsID = Constant.INT_IS_ZERO;
  12483. goodsCode = null;
  12484. goodsName = null;
  12485. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  12486. // 获得账务日期
  12487. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  12488. string errMsg = string.Empty;
  12489. // 本批采集的批次号
  12490. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  12491. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  12492. // 条码信息
  12493. foreach (DataRow barcodeRow in barcodeTable.Rows)
  12494. {
  12495. // 条码
  12496. string barcode = barcodeRow["Barcode"].ToString();
  12497. if (string.IsNullOrEmpty(barcode))
  12498. {
  12499. throw new Exception("传入的条码号为空");
  12500. }
  12501. // 生产工号
  12502. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  12503. // 生产工号
  12504. string workUserCode = barcodeRow["UserCode"].ToString();
  12505. //生产数据ID
  12506. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  12507. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  12508. int? GroutingDailyDetailID = null;//注浆明细ID
  12509. if (procedure.CollectType == 1)
  12510. {
  12511. // ccc todo
  12512. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12513. if(procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12514. {
  12515. #region 校验条码有效性
  12516. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  12517. if (!string.IsNullOrEmpty(errMsg))
  12518. {
  12519. return errMsg;
  12520. }
  12521. #endregion
  12522. }
  12523. else
  12524. {
  12525. #region 校验条码有效性
  12526. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  12527. if (!string.IsNullOrEmpty(errMsg))
  12528. {
  12529. return errMsg;
  12530. }
  12531. #endregion
  12532. }
  12533. }
  12534. else
  12535. {
  12536. // string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12537. // tp_pm_groutingdailydetail.goodscode,
  12538. // tp_pm_groutingdailydetail.goodsname,
  12539. // tp_pm_groutingdailydetail.usercode as groutingUserCode
  12540. // from tp_pm_groutingdailydetail where barcode=:barcode
  12541. // ";
  12542. string sqlGroutingInfo = "";
  12543. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12544. // tp_pm_groutingdailydetail.goodscode,
  12545. // tp_pm_groutingdailydetail.goodsname,
  12546. // tp_pm_groutingdailydetail.usercode as groutingUserCode
  12547. // from tp_pm_groutingdailydetail where barcode=:barcode
  12548. // ";
  12549. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  12550. //{
  12551. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12552. tp_pm_groutingdailydetail.goodscode,
  12553. tp_pm_groutingdailydetail.goodsname,
  12554. tp_pm_groutingdailydetail.usercode as groutingUserCode
  12555. from tp_pm_groutingdailydetail where groutingdailydetailid in
  12556. (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  12557. ";
  12558. //}
  12559. OracleParameter[] ReFireparas = new OracleParameter[] {
  12560. new OracleParameter(":barcode",barcode),
  12561. };
  12562. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  12563. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  12564. {
  12565. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  12566. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  12567. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  12568. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  12569. }
  12570. }
  12571. int? ClassesSettingID = null;//班次配置ID
  12572. #region 添加生产者数据
  12573. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12574. {
  12575. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  12576. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  12577. {
  12578. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  12579. }
  12580. else
  12581. {
  12582. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12583. }
  12584. }
  12585. else
  12586. {
  12587. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12588. }
  12589. if (!string.IsNullOrEmpty(errMsg))
  12590. {
  12591. return errMsg;
  12592. }
  12593. #endregion
  12594. #region 添加生产数据
  12595. ProductionDataEntity productionData = new ProductionDataEntity();
  12596. #region 属性赋值
  12597. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  12598. productionData.ClassesSettingID = ClassesSettingID;
  12599. productionData.ProductionDataID = productionDataID;
  12600. productionData.Barcode = barcode;
  12601. productionData.CentralizedBatchNo = centralizedBatchNo;
  12602. productionData.ProductionLineID = procedure.ProductionLineID;
  12603. productionData.ProductionLineCode = procedure.ProductionlineCode;
  12604. productionData.ProductionLineName = procedure.ProductionlineName;
  12605. productionData.CompleteProcedureID = procedure.ProcedureID;
  12606. productionData.ProcedureCode = procedure.ProcedureCode;
  12607. productionData.ProcedureName = procedure.ProcedureName;
  12608. productionData.ProcedureModel = procedure.ProcedureModel;
  12609. productionData.ModelType = procedure.ModelType;
  12610. productionData.NodeType = procedure.NodeType;
  12611. productionData.PieceType = procedure.PieceType;
  12612. if (procedure.IsSpecialRework == 0)
  12613. {
  12614. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12615. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  12616. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  12617. //xuwei 2019-09-18 交坯节点判定 0引用 不做处理
  12618. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  12619. {
  12620. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  12621. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12622. }
  12623. ////// else
  12624. ////// {
  12625. ////// string sqlReFire = @"select
  12626. ////// isrefire
  12627. ////// from tp_pm_inproduction where barcode=:barcode
  12628. ////// ";
  12629. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  12630. ////// new OracleParameter(":barcode",barcode),
  12631. ////// };
  12632. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  12633. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  12634. ////// {
  12635. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  12636. ////// {
  12637. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  12638. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  12639. ////// //{
  12640. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12641. ////// //}
  12642. ////// }
  12643. ////// }
  12644. ////// }
  12645. }
  12646. else
  12647. {
  12648. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12649. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12650. }
  12651. productionData.ReworkProcedureID = null;
  12652. #region 交坯判断
  12653. // 交坯节点
  12654. if (barcodeTable.Columns.Contains("IsPublicBody"))
  12655. {
  12656. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  12657. }
  12658. // 非交坯节点
  12659. else
  12660. {
  12661. // 正常坯
  12662. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  12663. }
  12664. #endregion
  12665. productionData.OrganizationID = procedure.OrganizationID;
  12666. productionData.GoodsID = goodsID;
  12667. productionData.GoodsCode = goodsCode;
  12668. productionData.GoodsName = goodsName;
  12669. productionData.UserID = workUserID;
  12670. productionData.UserCode = barcodeRow["UserCode"].ToString();
  12671. productionData.UserName = barcodeRow["UserName"].ToString();
  12672. #endregion
  12673. string OutSpecialRepairflag = "0";//干补标识
  12674. DataSet outDataSet = null;
  12675. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  12676. //xuwei fix 2019-09-26 使用通用方法判定
  12677. // 2019-1016
  12678. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12679. {
  12680. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  12681. if (isNodeBegin == 0)
  12682. {
  12683. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  12684. }
  12685. }
  12686. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12687. {
  12688. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  12689. }
  12690. else
  12691. {
  12692. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  12693. }
  12694. if (!string.IsNullOrEmpty(errMsg))
  12695. {
  12696. return errMsg;
  12697. }
  12698. #endregion
  12699. #region 开始节点
  12700. //xuwei remove 2019-09-26 此处为重复判定移除
  12701. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  12702. //xuwei fix 2019-09-26 使用通用方法判定
  12703. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  12704. // 2019-1016
  12705. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  12706. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12707. {
  12708. #region 添加在产产品数据
  12709. InProductionEntity addInProductionEntity = new InProductionEntity();
  12710. addInProductionEntity.BarCode = barcode;
  12711. //流程工序ID
  12712. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12713. // 当前工序
  12714. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12715. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  12716. // 工序模型
  12717. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12718. // 工序类别
  12719. addInProductionEntity.ModelType = procedure.ModelType;
  12720. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  12721. addInProductionEntity.ProductionDataID = productionDataID;
  12722. #region 交坯判断
  12723. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12724. #endregion
  12725. // 生产工号
  12726. addInProductionEntity.UserID = workUserID;
  12727. // 执行添加
  12728. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  12729. // 执行失败
  12730. if (!string.IsNullOrEmpty(errMsg))
  12731. {
  12732. return errMsg;
  12733. }
  12734. #endregion
  12735. }
  12736. #endregion
  12737. #region 中间节点
  12738. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  12739. {
  12740. #region 修改在产产品数据的当前工序,清空返工工序字段
  12741. InProductionEntity addInProductionEntity = new InProductionEntity();
  12742. addInProductionEntity.BarCode = barcode;
  12743. //流程工序ID
  12744. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12745. // 当前工序
  12746. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12747. //当前生产数据ID
  12748. addInProductionEntity.ProductionDataID = productionDataID;
  12749. // 工序模型
  12750. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12751. // 工序类别
  12752. addInProductionEntity.ModelType = procedure.ModelType;
  12753. // 生产工号
  12754. addInProductionEntity.UserID = workUserID;
  12755. // 缺陷标识
  12756. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  12757. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  12758. if (procedure.IsSpecialRework == 0)
  12759. {
  12760. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12761. }
  12762. else
  12763. {
  12764. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12765. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12766. }
  12767. #region 交坯判断
  12768. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12769. #endregion
  12770. // 执行修改
  12771. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  12772. // 执行失败
  12773. if (!string.IsNullOrEmpty(errMsg))
  12774. {
  12775. return errMsg;
  12776. }
  12777. #endregion
  12778. }
  12779. #endregion
  12780. #region 结束节点
  12781. else
  12782. {
  12783. #region 添加成品数据 删除在产产品数据
  12784. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  12785. finishedProduct.BarCode = barcode;
  12786. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  12787. if (!string.IsNullOrEmpty(errMsg))
  12788. {
  12789. return errMsg;
  12790. }
  12791. InProductionEntity delInProductionEntity = new InProductionEntity();
  12792. delInProductionEntity.BarCode = barcode;
  12793. // 执行删除 在产数据
  12794. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  12795. // 执行失败
  12796. if (!string.IsNullOrEmpty(errMsg))
  12797. {
  12798. return errMsg;
  12799. }
  12800. #endregion
  12801. }
  12802. #endregion
  12803. }
  12804. return errMsg;
  12805. }
  12806. catch (Exception ex)
  12807. {
  12808. throw ex;
  12809. }
  12810. }
  12811. /// <summary>
  12812. /// 标准计件
  12813. /// </summary>
  12814. /// <param name="oracleTrConn">数据连接对象</param>
  12815. /// <param name="procedure">工序对象</param>
  12816. /// <param name="barcodeTable">条码信息</param>
  12817. /// <param name="sUserInfo">用户基本信息</param>
  12818. /// <param name="goodsID">返回的产品ID</param>
  12819. /// <param name="goodsCode">返回的产品Code</param>
  12820. /// <param name="goodsName">返回的产品名称</param>
  12821. /// <param name="groutingUserID">返回的注浆者ID</param>
  12822. /// <returns>string</returns>
  12823. /// <remarks>
  12824. /// 陈冰 2014.09.18 新建
  12825. /// </remarks>
  12826. private static string AddNormalWorkPieceSinglePoint(IDBTransaction oracleTrConn,
  12827. ProcedureEntity procedure,
  12828. DataTable barcodeTable,
  12829. SUserInfo sUserInfo,
  12830. int goodsID,
  12831. string goodsCode,
  12832. string goodsName,
  12833. string groutingUserCode,
  12834. int? arvGroutingDailyDetailID,
  12835. bool isSendBody = false)
  12836. {
  12837. try
  12838. {
  12839. //goodsID = Constant.INT_IS_ZERO;
  12840. //goodsCode = null;
  12841. //goodsName = null;
  12842. //groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  12843. // 获得账务日期
  12844. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  12845. string errMsg = string.Empty;
  12846. // 本批采集的批次号
  12847. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  12848. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  12849. // 条码信息
  12850. foreach (DataRow barcodeRow in barcodeTable.Rows)
  12851. {
  12852. // 条码
  12853. string barcode = barcodeRow["Barcode"].ToString();
  12854. if (string.IsNullOrEmpty(barcode))
  12855. {
  12856. throw new Exception("传入的条码号为空");
  12857. }
  12858. // 生产工号
  12859. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  12860. // 生产工号
  12861. string workUserCode = barcodeRow["UserCode"].ToString();
  12862. //生产数据ID
  12863. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  12864. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  12865. int? GroutingDailyDetailID = arvGroutingDailyDetailID;//注浆明细ID
  12866. if (procedure.CollectType == 1)
  12867. {
  12868. // ccc todo
  12869. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12870. if(procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12871. {
  12872. #region 校验条码有效性
  12873. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  12874. if (!string.IsNullOrEmpty(errMsg))
  12875. {
  12876. return errMsg;
  12877. }
  12878. #endregion
  12879. }
  12880. else
  12881. {
  12882. #region 校验条码有效性
  12883. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  12884. if (!string.IsNullOrEmpty(errMsg))
  12885. {
  12886. return errMsg;
  12887. }
  12888. #endregion
  12889. }
  12890. }
  12891. else
  12892. {
  12893. // string sqlGroutingInfo = "";
  12894. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12895. // tp_pm_groutingdailydetail.goodscode,
  12896. // tp_pm_groutingdailydetail.goodsname,
  12897. // tp_pm_groutingdailydetail.usercode as groutingUserCode,
  12898. // tp_pm_groutingdailydetail.GroutingDailyDetailID
  12899. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  12900. // (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  12901. // ";
  12902. // OracleParameter[] ReFireparas = new OracleParameter[] {
  12903. // new OracleParameter(":barcode",barcode),
  12904. // };
  12905. // DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  12906. // if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  12907. // {
  12908. // GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  12909. // goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  12910. // goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  12911. // goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  12912. // groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  12913. // }
  12914. }
  12915. int? ClassesSettingID = null;//班次配置ID
  12916. #region 添加生产者数据
  12917. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12918. {
  12919. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  12920. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  12921. {
  12922. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  12923. }
  12924. else
  12925. {
  12926. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12927. }
  12928. }
  12929. else
  12930. {
  12931. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12932. }
  12933. if (!string.IsNullOrEmpty(errMsg))
  12934. {
  12935. return errMsg;
  12936. }
  12937. #endregion
  12938. #region 添加生产数据
  12939. ProductionDataEntity productionData = new ProductionDataEntity();
  12940. if (barcodeTable.Columns.Contains("Remarks"))
  12941. {
  12942. productionData.Remarks = barcodeRow["Remarks"] + "";
  12943. }
  12944. #region 属性赋值
  12945. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  12946. productionData.ClassesSettingID = ClassesSettingID;
  12947. productionData.ProductionDataID = productionDataID;
  12948. productionData.Barcode = barcode;
  12949. productionData.CentralizedBatchNo = centralizedBatchNo;
  12950. productionData.ProductionLineID = procedure.ProductionLineID;
  12951. productionData.ProductionLineCode = procedure.ProductionlineCode;
  12952. productionData.ProductionLineName = procedure.ProductionlineName;
  12953. productionData.CompleteProcedureID = procedure.ProcedureID;
  12954. productionData.ProcedureCode = procedure.ProcedureCode;
  12955. productionData.ProcedureName = procedure.ProcedureName;
  12956. productionData.ProcedureModel = procedure.ProcedureModel;
  12957. productionData.ModelType = procedure.ModelType;
  12958. productionData.NodeType = procedure.NodeType;
  12959. productionData.PieceType = procedure.PieceType;
  12960. if (barcodeRow["LogoID"].ToString() != "")
  12961. {
  12962. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  12963. }
  12964. if (procedure.IsSpecialRework == 0)
  12965. {
  12966. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12967. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  12968. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  12969. //xuwei fix 2019-09-18 交坯节点判定修改
  12970. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  12971. if (isSendBody)//是交坯节点,肯定不会是重烧
  12972. {
  12973. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  12974. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12975. }
  12976. ////// else
  12977. ////// {
  12978. ////// string sqlReFire = @"select
  12979. ////// isrefire
  12980. ////// from tp_pm_inproduction where barcode=:barcode
  12981. ////// ";
  12982. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  12983. ////// new OracleParameter(":barcode",barcode),
  12984. ////// };
  12985. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  12986. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  12987. ////// {
  12988. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  12989. ////// {
  12990. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  12991. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  12992. ////// //{
  12993. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12994. ////// //}
  12995. ////// }
  12996. ////// }
  12997. ////// }
  12998. }
  12999. else
  13000. {
  13001. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  13002. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  13003. }
  13004. productionData.ReworkProcedureID = null;
  13005. #region 交坯判断
  13006. // 交坯节点
  13007. if (barcodeTable.Columns.Contains("IsPublicBody"))
  13008. {
  13009. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  13010. }
  13011. // 非交坯节点
  13012. else
  13013. {
  13014. // 正常坯
  13015. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  13016. }
  13017. #endregion
  13018. productionData.OrganizationID = procedure.OrganizationID;
  13019. productionData.GoodsID = goodsID;
  13020. productionData.GoodsCode = goodsCode;
  13021. productionData.GoodsName = goodsName;
  13022. productionData.UserID = workUserID;
  13023. productionData.UserCode = barcodeRow["UserCode"].ToString();
  13024. productionData.UserName = barcodeRow["UserName"].ToString();
  13025. #endregion
  13026. string OutSpecialRepairflag = "0";//干补标识
  13027. DataSet outDataSet = null;
  13028. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  13029. //xuwei fix 2019-09-26 使用通用方法判定
  13030. // 2019-1016
  13031. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  13032. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  13033. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  13034. {
  13035. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  13036. if (isNodeBegin == 0)
  13037. {
  13038. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  13039. }
  13040. }
  13041. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  13042. {
  13043. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  13044. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet, isSendBody);
  13045. }
  13046. else
  13047. {
  13048. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  13049. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, isSendBody);
  13050. }
  13051. if (!string.IsNullOrEmpty(errMsg))
  13052. {
  13053. return errMsg;
  13054. }
  13055. #endregion
  13056. #region 开始节点
  13057. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  13058. {
  13059. #region 添加在产产品数据
  13060. InProductionEntity addInProductionEntity = new InProductionEntity();
  13061. addInProductionEntity.BarCode = barcode;
  13062. //流程工序ID
  13063. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  13064. // 当前工序
  13065. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  13066. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  13067. // 工序模型
  13068. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  13069. // 工序类别
  13070. addInProductionEntity.ModelType = procedure.ModelType;
  13071. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  13072. addInProductionEntity.ProductionDataID = productionDataID;
  13073. #region 交坯判断
  13074. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  13075. #endregion
  13076. // 生产工号
  13077. addInProductionEntity.UserID = workUserID;
  13078. // 执行添加
  13079. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  13080. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet, isSendBody);
  13081. // 执行失败
  13082. if (!string.IsNullOrEmpty(errMsg))
  13083. {
  13084. return errMsg;
  13085. }
  13086. #endregion
  13087. }
  13088. #endregion
  13089. #region 中间节点
  13090. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  13091. {
  13092. #region 修改在产产品数据的当前工序,清空返工工序字段
  13093. InProductionEntity addInProductionEntity = new InProductionEntity();
  13094. addInProductionEntity.BarCode = barcode;
  13095. //流程工序ID
  13096. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  13097. // 当前工序
  13098. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  13099. //当前生产数据ID
  13100. addInProductionEntity.ProductionDataID = productionDataID;
  13101. // 工序模型
  13102. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  13103. // 工序类别
  13104. addInProductionEntity.ModelType = procedure.ModelType;
  13105. // 生产工号
  13106. addInProductionEntity.UserID = workUserID;
  13107. // 缺陷标识
  13108. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  13109. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  13110. if (procedure.IsSpecialRework == 0)
  13111. {
  13112. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  13113. }
  13114. else
  13115. {
  13116. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  13117. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  13118. }
  13119. addInProductionEntity.LogoID = productionData.LogoID == 0 ? null : productionData.LogoID;
  13120. #region 交坯判断
  13121. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  13122. #endregion
  13123. // 执行修改
  13124. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  13125. // 执行失败
  13126. if (!string.IsNullOrEmpty(errMsg))
  13127. {
  13128. return errMsg;
  13129. }
  13130. #endregion
  13131. }
  13132. #endregion
  13133. #region 结束节点
  13134. else
  13135. {
  13136. #region 添加成品数据 删除在产产品数据
  13137. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  13138. finishedProduct.BarCode = barcode;
  13139. finishedProduct.LogoID = productionData.LogoID;
  13140. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  13141. if (!string.IsNullOrEmpty(errMsg))
  13142. {
  13143. return errMsg;
  13144. }
  13145. InProductionEntity delInProductionEntity = new InProductionEntity();
  13146. delInProductionEntity.BarCode = barcode;
  13147. // 执行删除 在产数据
  13148. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  13149. // 执行失败
  13150. if (!string.IsNullOrEmpty(errMsg))
  13151. {
  13152. return errMsg;
  13153. }
  13154. #endregion
  13155. }
  13156. #endregion
  13157. }
  13158. return errMsg;
  13159. }
  13160. catch (Exception ex)
  13161. {
  13162. throw ex;
  13163. }
  13164. }
  13165. /// <summary>
  13166. /// 清除在产残留数据(清除选择)
  13167. /// </summary>
  13168. /// <param name="barcodes">产品条码集</param>
  13169. /// <returns></returns>
  13170. public static int SaveClearInproduction(string barcodes, SUserInfo sUserInfo)
  13171. {
  13172. int returnRows = 0;
  13173. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13174. try
  13175. {
  13176. string sql = "";
  13177. string[] subbarcode = barcodes.Split(',');
  13178. OracleParameter[] Paras = null;
  13179. for (int i = 0; i < subbarcode.Length; i++)
  13180. {
  13181. // 0.登窑、入窑、出窑工序的产品不能清除
  13182. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  13183. Paras = new OracleParameter[] {
  13184. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13185. subbarcode[i],ParameterDirection.Input)
  13186. };
  13187. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  13188. if (!string.IsNullOrWhiteSpace(modeltype))
  13189. {
  13190. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  13191. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  13192. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  13193. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  13194. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln)
  13195. {
  13196. continue;
  13197. }
  13198. }
  13199. // 返工标识或者是报损标识不允许清除 2016-07-12
  13200. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  13201. Paras = new OracleParameter[] {
  13202. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13203. subbarcode[i],ParameterDirection.Input)
  13204. };
  13205. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13206. if (ds != null && ds.Tables[0].Rows.Count > 0)
  13207. {
  13208. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  13209. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  13210. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  13211. {
  13212. returnRows = -1;
  13213. break;
  13214. }
  13215. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  13216. {
  13217. returnRows = -2;
  13218. break;
  13219. }
  13220. }
  13221. // 返工标识或者是报损标识不允许清除 end
  13222. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13223. sql = @"insert into tp_pm_inproduction_tmp
  13224. (
  13225. BARCODE,
  13226. PRODUCTIONLINEID,
  13227. PRODUCTIONLINECODE,
  13228. PRODUCTIONLINENAME,
  13229. PROCEDUREMODEL,
  13230. MODELTYPE,
  13231. REWORKPROCEDUREID,
  13232. ISPUBLICBODY,
  13233. GOODSID,
  13234. GOODSCODE,
  13235. GOODSNAME,
  13236. USERID,
  13237. GROUTINGDAILYID,
  13238. GROUTINGDAILYDETAILID,
  13239. GROUTINGDATE,
  13240. GROUTINGLINEID,
  13241. GROUTINGLINECODE,
  13242. GROUTINGLINENAME,
  13243. GMOULDTYPEID,
  13244. CANMANYTIMES,
  13245. GROUTINGLINEDETAILID,
  13246. GROUTINGMOULDCODE,
  13247. MOULDCODE,
  13248. REMARKS,
  13249. ACCOUNTID,
  13250. VALUEFLAG,
  13251. CREATETIME,
  13252. CREATEUSERID,
  13253. UPDATETIME,
  13254. UPDATEUSERID,
  13255. OPTIMESTAMP,
  13256. ISREFIRE,
  13257. GOODSLEVELID,
  13258. GOODSLEVELTYPEID,
  13259. DEFECTFLAG,
  13260. GROUTINGUSERID,
  13261. GROUTINGUSERCODE,
  13262. GROUTINGNUM,
  13263. KILNID,
  13264. KILNCODE,
  13265. KILNNAME,
  13266. KILNCARID,
  13267. KILNCARCODE,
  13268. KILNCARNAME,
  13269. KILNCARBATCHNO,
  13270. KILNCARPOSITION,
  13271. SPECIALREPAIRFLAG,
  13272. FLOWPROCEDUREID,
  13273. FLOWPROCEDURETIME,
  13274. PROCEDUREID,
  13275. PROCEDURETIME,
  13276. PRODUCTIONDATAID,
  13277. trashflag,
  13278. Deletedtime,
  13279. logoid,
  13280. IsReworkFlag,
  13281. SemiCheckID,
  13282. DELETEDUSERID,
  13283. DELETEDUSERCODE
  13284. )
  13285. select
  13286. BARCODE,
  13287. PRODUCTIONLINEID,
  13288. PRODUCTIONLINECODE,
  13289. PRODUCTIONLINENAME,
  13290. PROCEDUREMODEL,
  13291. MODELTYPE,
  13292. REWORKPROCEDUREID,
  13293. ISPUBLICBODY,
  13294. GOODSID,
  13295. GOODSCODE,
  13296. GOODSNAME,
  13297. USERID,
  13298. GROUTINGDAILYID,
  13299. GROUTINGDAILYDETAILID,
  13300. GROUTINGDATE,
  13301. GROUTINGLINEID,
  13302. GROUTINGLINECODE,
  13303. GROUTINGLINENAME,
  13304. GMOULDTYPEID,
  13305. CANMANYTIMES,
  13306. GROUTINGLINEDETAILID,
  13307. GROUTINGMOULDCODE,
  13308. MOULDCODE,
  13309. REMARKS,
  13310. ACCOUNTID,
  13311. VALUEFLAG,
  13312. CREATETIME,
  13313. CREATEUSERID,
  13314. UPDATETIME,
  13315. UPDATEUSERID,
  13316. OPTIMESTAMP,
  13317. ISREFIRE,
  13318. GOODSLEVELID,
  13319. GOODSLEVELTYPEID,
  13320. DEFECTFLAG,
  13321. GROUTINGUSERID,
  13322. GROUTINGUSERCODE,
  13323. GROUTINGNUM,
  13324. KILNID,
  13325. KILNCODE,
  13326. KILNNAME,
  13327. KILNCARID,
  13328. KILNCARCODE,
  13329. KILNCARNAME,
  13330. KILNCARBATCHNO,
  13331. KILNCARPOSITION,
  13332. SPECIALREPAIRFLAG,
  13333. FLOWPROCEDUREID,
  13334. FLOWPROCEDURETIME,
  13335. PROCEDUREID,
  13336. PROCEDURETIME,
  13337. PRODUCTIONDATAID,
  13338. INSCRAPFLAG,
  13339. sysdate,
  13340. logoid,
  13341. IsReworkFlag,
  13342. SemiCheckID,
  13343. " + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  13344. "' from tp_pm_inproduction p where p.barcode = :barcode";
  13345. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13346. //删除在产数据
  13347. sql = "delete from tp_pm_inproduction p where p.barcode =:barcode";
  13348. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13349. //删除在产生产数据
  13350. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  13351. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13352. }
  13353. if (returnRows <= 0)
  13354. {
  13355. oracleTrConn.Rollback();
  13356. oracleTrConn.Disconnect();
  13357. }
  13358. else
  13359. {
  13360. oracleTrConn.Commit();
  13361. oracleTrConn.Disconnect();
  13362. }
  13363. }
  13364. catch (Exception ex)
  13365. {
  13366. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13367. {
  13368. oracleTrConn.Rollback();
  13369. oracleTrConn.Disconnect();
  13370. }
  13371. throw ex;
  13372. }
  13373. finally
  13374. {
  13375. if (oracleTrConn.ConnState == ConnectionState.Open)
  13376. {
  13377. oracleTrConn.Disconnect();
  13378. }
  13379. }
  13380. return returnRows;
  13381. }
  13382. #region 清除在产残留数据(批量)
  13383. /// <summary>
  13384. /// 清除在产残留数据(批量清除)
  13385. /// </summary>
  13386. /// <param name="barcodes">产品条码集</param>
  13387. /// <returns></returns>
  13388. public static int SaveClearAllInproduction(SUserInfo user, RPT010401_SE se)
  13389. {
  13390. int returnRows = 0;
  13391. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13392. try
  13393. {
  13394. List<OracleParameter> parameters = new List<OracleParameter>();
  13395. StringBuilder sql = new StringBuilder(GetClearInproductionData(user.AccountID));
  13396. if (se != null)
  13397. {
  13398. //生产线IDS
  13399. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  13400. {
  13401. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction.ProductionLineID||',')>0 ");
  13402. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  13403. }
  13404. //完成工序IDS
  13405. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  13406. {
  13407. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ");
  13408. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  13409. }
  13410. // 生产时间--开始
  13411. if (se.UpdateTimeStart.HasValue)
  13412. {
  13413. sql.Append(" AND TP_PM_InProduction.Proceduretime >= :UpdateTimeStart ");
  13414. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  13415. }
  13416. // 生产时间--结束
  13417. if (se.UpdateTimeEnd.HasValue)
  13418. {
  13419. sql.Append(" AND TP_PM_InProduction.Proceduretime <= :UpdateTimeEnd ");
  13420. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  13421. }
  13422. // 是否清除报损待审产品
  13423. if (se.inscrapflag == 0)
  13424. {
  13425. sql.Append(" AND TP_PM_InProduction.inscrapflag=0 ");
  13426. }
  13427. else
  13428. {
  13429. sql.Append(" AND TP_PM_InProduction.inscrapflag in (0,1) ");
  13430. }
  13431. // 是否清除返工产品
  13432. if (se.IsReworkFlag == 0)
  13433. {
  13434. sql.Append(" AND TP_PM_InProduction.IsReworkFlag=0 ");
  13435. }
  13436. else
  13437. {
  13438. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  13439. //sql.Append(" AND TP_PM_InProduction.IsReworkFlag in (0,1) ");
  13440. }
  13441. }
  13442. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13443. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  13444. (
  13445. BARCODE,
  13446. PRODUCTIONLINEID,
  13447. PRODUCTIONLINECODE,
  13448. PRODUCTIONLINENAME,
  13449. PROCEDUREMODEL,
  13450. MODELTYPE,
  13451. REWORKPROCEDUREID,
  13452. ISPUBLICBODY,
  13453. GOODSID,
  13454. GOODSCODE,
  13455. GOODSNAME,
  13456. USERID,
  13457. GROUTINGDAILYID,
  13458. GROUTINGDAILYDETAILID,
  13459. GROUTINGDATE,
  13460. GROUTINGLINEID,
  13461. GROUTINGLINECODE,
  13462. GROUTINGLINENAME,
  13463. GMOULDTYPEID,
  13464. CANMANYTIMES,
  13465. GROUTINGLINEDETAILID,
  13466. GROUTINGMOULDCODE,
  13467. MOULDCODE,
  13468. REMARKS,
  13469. ACCOUNTID,
  13470. VALUEFLAG,
  13471. CREATETIME,
  13472. CREATEUSERID,
  13473. UPDATETIME,
  13474. UPDATEUSERID,
  13475. OPTIMESTAMP,
  13476. ISREFIRE,
  13477. GOODSLEVELID,
  13478. GOODSLEVELTYPEID,
  13479. DEFECTFLAG,
  13480. GROUTINGUSERID,
  13481. GROUTINGUSERCODE,
  13482. GROUTINGNUM,
  13483. KILNID,
  13484. KILNCODE,
  13485. KILNNAME,
  13486. KILNCARID,
  13487. KILNCARCODE,
  13488. KILNCARNAME,
  13489. KILNCARBATCHNO,
  13490. KILNCARPOSITION,
  13491. SPECIALREPAIRFLAG,
  13492. FLOWPROCEDUREID,
  13493. FLOWPROCEDURETIME,
  13494. PROCEDUREID,
  13495. PROCEDURETIME,
  13496. PRODUCTIONDATAID,
  13497. trashflag,
  13498. Deletedtime,
  13499. logoid,
  13500. IsReworkFlag,
  13501. SemiCheckID,
  13502. DELETEDUSERID,
  13503. DELETEDUSERCODE
  13504. )
  13505. select
  13506. BARCODE,
  13507. PRODUCTIONLINEID,
  13508. PRODUCTIONLINECODE,
  13509. PRODUCTIONLINENAME,
  13510. PROCEDUREMODEL,
  13511. MODELTYPE,
  13512. REWORKPROCEDUREID,
  13513. ISPUBLICBODY,
  13514. GOODSID,
  13515. GOODSCODE,
  13516. GOODSNAME,
  13517. USERID,
  13518. GROUTINGDAILYID,
  13519. GROUTINGDAILYDETAILID,
  13520. GROUTINGDATE,
  13521. GROUTINGLINEID,
  13522. GROUTINGLINECODE,
  13523. GROUTINGLINENAME,
  13524. GMOULDTYPEID,
  13525. CANMANYTIMES,
  13526. GROUTINGLINEDETAILID,
  13527. GROUTINGMOULDCODE,
  13528. MOULDCODE,
  13529. REMARKS,
  13530. ACCOUNTID,
  13531. VALUEFLAG,
  13532. CREATETIME,
  13533. CREATEUSERID,
  13534. UPDATETIME,
  13535. UPDATEUSERID,
  13536. OPTIMESTAMP,
  13537. ISREFIRE,
  13538. GOODSLEVELID,
  13539. GOODSLEVELTYPEID,
  13540. DEFECTFLAG,
  13541. GROUTINGUSERID,
  13542. GROUTINGUSERCODE,
  13543. GROUTINGNUM,
  13544. KILNID,
  13545. KILNCODE,
  13546. KILNNAME,
  13547. KILNCARID,
  13548. KILNCARCODE,
  13549. KILNCARNAME,
  13550. KILNCARBATCHNO,
  13551. KILNCARPOSITION,
  13552. SPECIALREPAIRFLAG,
  13553. FLOWPROCEDUREID,
  13554. FLOWPROCEDURETIME,
  13555. PROCEDUREID,
  13556. PROCEDURETIME,
  13557. PRODUCTIONDATAID,
  13558. INSCRAPFLAG,
  13559. sysdate,
  13560. logoid,
  13561. IsReworkFlag,
  13562. SemiCheckID,"
  13563. + user.UserID + ",'" + user.UserCode +
  13564. "' from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  13565. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13566. //删除在产数据
  13567. updatsql1 = "delete from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  13568. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13569. //删除在产生产数据
  13570. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  13571. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13572. if (returnRows == 0)
  13573. {
  13574. oracleTrConn.Rollback();
  13575. oracleTrConn.Disconnect();
  13576. }
  13577. else
  13578. {
  13579. oracleTrConn.Commit();
  13580. oracleTrConn.Disconnect();
  13581. }
  13582. }
  13583. catch (Exception ex)
  13584. {
  13585. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13586. {
  13587. oracleTrConn.Rollback();
  13588. oracleTrConn.Disconnect();
  13589. }
  13590. throw ex;
  13591. }
  13592. return returnRows;
  13593. }
  13594. /// <summary>
  13595. /// 获取批量数据
  13596. /// </summary>
  13597. /// <returns></returns>
  13598. private static string GetClearInproductionData(int accountid)
  13599. {
  13600. string selSql =
  13601. "SELECT " +
  13602. " TP_PM_InProduction.BarCode " +
  13603. " FROM TP_PM_InProduction " +
  13604. " Where TP_PM_InProduction.ValueFlag = '1' " +
  13605. " and TP_PM_InProduction.modeltype not in (1,2,3)" +
  13606. " and TP_PM_InProduction.AccountID= " + accountid;
  13607. return selSql;
  13608. }
  13609. #endregion
  13610. #region
  13611. /// <summary>
  13612. /// 清除在产加收站残留数据(清除选择)
  13613. /// </summary>
  13614. /// <param name="barcodes">产品条码集</param>
  13615. /// <returns></returns>
  13616. public static int SaveClearInproductionTrash(string barcodes, SUserInfo user)
  13617. {
  13618. int returnRows = 0;
  13619. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13620. try
  13621. {
  13622. string sql = "";
  13623. string[] subbarcode = barcodes.Split(',');
  13624. OracleParameter[] Paras = null;
  13625. for (int i = 0; i < subbarcode.Length; i++)
  13626. {
  13627. Paras = new OracleParameter[] {
  13628. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13629. subbarcode[i],ParameterDirection.Input)
  13630. };
  13631. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13632. sql = @"insert into tp_pm_inproduction_tmp
  13633. (
  13634. BARCODE,
  13635. PRODUCTIONLINEID,
  13636. PRODUCTIONLINECODE,
  13637. PRODUCTIONLINENAME,
  13638. PROCEDUREMODEL,
  13639. MODELTYPE,
  13640. REWORKPROCEDUREID,
  13641. ISPUBLICBODY,
  13642. GOODSID,
  13643. GOODSCODE,
  13644. GOODSNAME,
  13645. USERID,
  13646. GROUTINGDAILYID,
  13647. GROUTINGDAILYDETAILID,
  13648. GROUTINGDATE,
  13649. GROUTINGLINEID,
  13650. GROUTINGLINECODE,
  13651. GROUTINGLINENAME,
  13652. GMOULDTYPEID,
  13653. CANMANYTIMES,
  13654. GROUTINGLINEDETAILID,
  13655. GROUTINGMOULDCODE,
  13656. MOULDCODE,
  13657. REMARKS,
  13658. ACCOUNTID,
  13659. VALUEFLAG,
  13660. CREATETIME,
  13661. CREATEUSERID,
  13662. UPDATETIME,
  13663. UPDATEUSERID,
  13664. OPTIMESTAMP,
  13665. ISREFIRE,
  13666. GOODSLEVELID,
  13667. GOODSLEVELTYPEID,
  13668. DEFECTFLAG,
  13669. GROUTINGUSERID,
  13670. GROUTINGUSERCODE,
  13671. GROUTINGNUM,
  13672. KILNID,
  13673. KILNCODE,
  13674. KILNNAME,
  13675. KILNCARID,
  13676. KILNCARCODE,
  13677. KILNCARNAME,
  13678. KILNCARBATCHNO,
  13679. KILNCARPOSITION,
  13680. SPECIALREPAIRFLAG,
  13681. FLOWPROCEDUREID,
  13682. FLOWPROCEDURETIME,
  13683. PROCEDUREID,
  13684. PROCEDURETIME,
  13685. PRODUCTIONDATAID,
  13686. trashflag,
  13687. Deletedtime,
  13688. logoid,
  13689. IsReworkFlag,
  13690. SemiCheckID,
  13691. DELETEDUSERID,
  13692. DELETEDUSERCODE
  13693. )
  13694. select
  13695. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13696. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13697. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13698. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13699. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13700. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13701. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13702. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13703. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13704. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13705. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13706. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13707. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  13708. + user.UserID + ",'" + user.UserCode +
  13709. "' from TP_PM_InProductionTrash p where p.barcode = :barcode";
  13710. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13711. //删除在产回收站数据
  13712. sql = "delete from TP_PM_InProductionTrash p where p.barcode =:barcode";
  13713. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13714. //删除在产生产数据
  13715. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  13716. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13717. }
  13718. if (returnRows == 0)
  13719. {
  13720. oracleTrConn.Rollback();
  13721. oracleTrConn.Disconnect();
  13722. }
  13723. else
  13724. {
  13725. oracleTrConn.Commit();
  13726. oracleTrConn.Disconnect();
  13727. }
  13728. }
  13729. catch (Exception ex)
  13730. {
  13731. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13732. {
  13733. oracleTrConn.Rollback();
  13734. oracleTrConn.Disconnect();
  13735. }
  13736. throw ex;
  13737. }
  13738. finally
  13739. {
  13740. if (oracleTrConn.ConnState == ConnectionState.Open)
  13741. {
  13742. oracleTrConn.Disconnect();
  13743. }
  13744. }
  13745. return returnRows;
  13746. }
  13747. #endregion
  13748. #region 清除在产回收站残留数据(批量)
  13749. /// <summary>
  13750. /// 清除在产残留数据(批量清除)
  13751. /// </summary>
  13752. /// <param name="barcodes">产品条码集</param>
  13753. /// <returns></returns>
  13754. public static int SaveClearAllInproductionTrash(SUserInfo user, FPM2110_SE se)
  13755. {
  13756. int returnRows = 0;
  13757. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13758. try
  13759. {
  13760. List<OracleParameter> parameters = new List<OracleParameter>();
  13761. StringBuilder sql = new StringBuilder(GetClearInproductionTrashData(user.AccountID));
  13762. if (se != null)
  13763. {
  13764. //生产线IDS
  13765. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  13766. {
  13767. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProductionTrash.ProductionLineID||',')>0 ");
  13768. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  13769. }
  13770. //完成工序IDS
  13771. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  13772. {
  13773. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProductionTrash.ProcedureID||',')>0 ");
  13774. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  13775. }
  13776. // 生产时间--开始
  13777. if (se.UpdateTimeStart.HasValue)
  13778. {
  13779. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime >= :UpdateTimeStart ");
  13780. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  13781. }
  13782. // 生产时间--结束
  13783. if (se.UpdateTimeEnd.HasValue)
  13784. {
  13785. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime <= :UpdateTimeEnd ");
  13786. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  13787. }
  13788. //报废日期开始
  13789. if (se.ScrapDataStart.HasValue)
  13790. {
  13791. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  13792. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  13793. }
  13794. //报废日期结束
  13795. if (se.ScrapDataEnd.HasValue)
  13796. {
  13797. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  13798. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  13799. }
  13800. // 产品分级
  13801. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  13802. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  13803. }
  13804. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13805. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  13806. (
  13807. BARCODE,
  13808. PRODUCTIONLINEID,
  13809. PRODUCTIONLINECODE,
  13810. PRODUCTIONLINENAME,
  13811. PROCEDUREMODEL,
  13812. MODELTYPE,
  13813. REWORKPROCEDUREID,
  13814. ISPUBLICBODY,
  13815. GOODSID,
  13816. GOODSCODE,
  13817. GOODSNAME,
  13818. USERID,
  13819. GROUTINGDAILYID,
  13820. GROUTINGDAILYDETAILID,
  13821. GROUTINGDATE,
  13822. GROUTINGLINEID,
  13823. GROUTINGLINECODE,
  13824. GROUTINGLINENAME,
  13825. GMOULDTYPEID,
  13826. CANMANYTIMES,
  13827. GROUTINGLINEDETAILID,
  13828. GROUTINGMOULDCODE,
  13829. MOULDCODE,
  13830. REMARKS,
  13831. ACCOUNTID,
  13832. VALUEFLAG,
  13833. CREATETIME,
  13834. CREATEUSERID,
  13835. UPDATETIME,
  13836. UPDATEUSERID,
  13837. OPTIMESTAMP,
  13838. ISREFIRE,
  13839. GOODSLEVELID,
  13840. GOODSLEVELTYPEID,
  13841. DEFECTFLAG,
  13842. GROUTINGUSERID,
  13843. GROUTINGUSERCODE,
  13844. GROUTINGNUM,
  13845. KILNID,
  13846. KILNCODE,
  13847. KILNNAME,
  13848. KILNCARID,
  13849. KILNCARCODE,
  13850. KILNCARNAME,
  13851. KILNCARBATCHNO,
  13852. KILNCARPOSITION,
  13853. SPECIALREPAIRFLAG,
  13854. FLOWPROCEDUREID,
  13855. FLOWPROCEDURETIME,
  13856. PROCEDUREID,
  13857. PROCEDURETIME,
  13858. PRODUCTIONDATAID,
  13859. trashflag,
  13860. Deletedtime,
  13861. logoid,
  13862. IsReworkFlag,
  13863. SemiCheckID,
  13864. DELETEDUSERID,
  13865. DELETEDUSERCODE
  13866. )
  13867. select
  13868. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13869. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13870. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13871. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13872. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13873. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13874. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13875. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13876. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13877. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13878. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13879. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13880. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  13881. + user.UserID + ",'" + user.UserCode +
  13882. "' from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  13883. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13884. //删除在产数据
  13885. updatsql1 = "delete from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  13886. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13887. //删除在产生产数据
  13888. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  13889. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13890. if (returnRows == 0)
  13891. {
  13892. oracleTrConn.Rollback();
  13893. oracleTrConn.Disconnect();
  13894. }
  13895. else
  13896. {
  13897. oracleTrConn.Commit();
  13898. oracleTrConn.Disconnect();
  13899. }
  13900. }
  13901. catch (Exception ex)
  13902. {
  13903. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13904. {
  13905. oracleTrConn.Rollback();
  13906. oracleTrConn.Disconnect();
  13907. }
  13908. throw ex;
  13909. }
  13910. finally
  13911. {
  13912. if (oracleTrConn.ConnState == ConnectionState.Open)
  13913. {
  13914. oracleTrConn.Disconnect();
  13915. }
  13916. }
  13917. return returnRows;
  13918. }
  13919. /// <summary>
  13920. /// 获取批量数据
  13921. /// </summary>
  13922. /// <returns></returns>
  13923. private static string GetClearInproductionTrashData(int accountid)
  13924. {
  13925. string selSql =
  13926. "SELECT " +
  13927. " TP_PM_InProductionTrash.BarCode " +
  13928. " FROM TP_PM_InProductionTrash " +
  13929. " left join tp_pm_scrapproduct " +
  13930. " on tp_pm_scrapproduct.barcode=TP_PM_InProductionTrash.barcode " +
  13931. " Where 1=1 and TP_PM_InProductionTrash.ValueFlag = 1 " +
  13932. " and TP_PM_InProductionTrash.AccountID= " + accountid;
  13933. return selSql;
  13934. }
  13935. #endregion
  13936. /// <summary>
  13937. /// 清除在产临时表残留数据(清除选择)
  13938. /// </summary>
  13939. /// <param name="barcodes">产品条码集</param>
  13940. /// <returns></returns>
  13941. public static int SaveClearInproductionTmp(string barcodes)
  13942. {
  13943. int returnRows = 0;
  13944. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13945. try
  13946. {
  13947. string sql = "";
  13948. string[] subbarcode = barcodes.Split(',');
  13949. OracleParameter[] Paras = null;
  13950. for (int i = 0; i < subbarcode.Length; i++)
  13951. {
  13952. Paras = new OracleParameter[] {
  13953. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13954. subbarcode[i],ParameterDirection.Input)
  13955. };
  13956. //删除在产临时表数据
  13957. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  13958. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13959. }
  13960. if (returnRows == 0)
  13961. {
  13962. oracleTrConn.Rollback();
  13963. oracleTrConn.Disconnect();
  13964. }
  13965. else
  13966. {
  13967. oracleTrConn.Commit();
  13968. oracleTrConn.Disconnect();
  13969. }
  13970. }
  13971. catch (Exception ex)
  13972. {
  13973. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13974. {
  13975. oracleTrConn.Rollback();
  13976. oracleTrConn.Disconnect();
  13977. }
  13978. throw ex;
  13979. }
  13980. finally
  13981. {
  13982. if (oracleTrConn.ConnState == ConnectionState.Open)
  13983. {
  13984. oracleTrConn.Disconnect();
  13985. }
  13986. }
  13987. return returnRows;
  13988. }
  13989. #region 清除在产回收站残留数据(批量)
  13990. /// <summary>
  13991. /// 清除在产残留数据(批量清除)
  13992. /// </summary>
  13993. /// <param name="barcodes">产品条码集</param>
  13994. /// <returns></returns>
  13995. public static int SaveClearAllInproductionTmp(SUserInfo user, FPM2112_SE se)
  13996. {
  13997. int returnRows = 0;
  13998. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13999. try
  14000. {
  14001. List<OracleParameter> parameters = new List<OracleParameter>();
  14002. StringBuilder sql = new StringBuilder(GetClearInproductionTmpData(user.AccountID));
  14003. if (se != null)
  14004. {
  14005. //生产线IDS
  14006. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  14007. {
  14008. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction_Tmp.ProductionLineID||',')>0 ");
  14009. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  14010. }
  14011. //完成工序IDS
  14012. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  14013. {
  14014. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction_Tmp.ProcedureID||',')>0 ");
  14015. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  14016. }
  14017. // 生产时间--开始
  14018. if (se.UpdateTimeStart.HasValue)
  14019. {
  14020. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime >= :UpdateTimeStart ");
  14021. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  14022. }
  14023. // 生产时间--结束
  14024. if (se.UpdateTimeEnd.HasValue)
  14025. {
  14026. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime <= :UpdateTimeEnd ");
  14027. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  14028. }
  14029. //报废日期开始
  14030. if (se.ScrapDataStart.HasValue)
  14031. {
  14032. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  14033. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  14034. }
  14035. //报废日期结束
  14036. if (se.ScrapDataEnd.HasValue)
  14037. {
  14038. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  14039. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  14040. }
  14041. if (se.GooddLevelTypeID != null)
  14042. {
  14043. // 产品分级
  14044. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  14045. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  14046. }
  14047. //在产or 回收站
  14048. sql.Append(" AND TP_PM_InProduction_Tmp.TrashFlag = :TrashFlag ");
  14049. parameters.Add(new OracleParameter(":TrashFlag", OracleDbType.Int32, se.TrashFlag, ParameterDirection.Input));
  14050. }
  14051. //删除在产临时表数据
  14052. string updatsql1 = "delete from TP_PM_InProduction_Tmp p where p.barcode in (" + sql.ToString() + ")";
  14053. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  14054. if (returnRows == 0)
  14055. {
  14056. oracleTrConn.Rollback();
  14057. oracleTrConn.Disconnect();
  14058. }
  14059. else
  14060. {
  14061. oracleTrConn.Commit();
  14062. oracleTrConn.Disconnect();
  14063. }
  14064. }
  14065. catch (Exception ex)
  14066. {
  14067. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14068. {
  14069. oracleTrConn.Rollback();
  14070. oracleTrConn.Disconnect();
  14071. }
  14072. throw ex;
  14073. }
  14074. finally
  14075. {
  14076. if (oracleTrConn.ConnState == ConnectionState.Open)
  14077. {
  14078. oracleTrConn.Disconnect();
  14079. }
  14080. }
  14081. return returnRows;
  14082. }
  14083. /// <summary>
  14084. /// 获取批量数据
  14085. /// </summary>
  14086. /// <returns></returns>
  14087. private static string GetClearInproductionTmpData(int accountid)
  14088. {
  14089. string selSql =
  14090. "SELECT " +
  14091. " TP_PM_InProduction_Tmp.BarCode " +
  14092. " FROM TP_PM_InProduction_Tmp " +
  14093. " left join tp_pm_scrapproduct " +
  14094. " on tp_pm_scrapproduct.barcode=TP_PM_InProduction_Tmp.barcode " +
  14095. " Where 1=1 and TP_PM_InProduction_Tmp.ValueFlag = 1 " +
  14096. " and TP_PM_InProduction_Tmp.AccountID= " + accountid;
  14097. return selSql;
  14098. }
  14099. #endregion
  14100. #region 恢复数据
  14101. /// <summary>
  14102. /// 恢复数据
  14103. /// </summary>
  14104. /// <param name="barcodes">产品条码集</param>
  14105. /// <returns></returns>
  14106. public static int ResetBarCode(string barcode)
  14107. {
  14108. int returnRows = 0;
  14109. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14110. try
  14111. {
  14112. string sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  14113. OracleParameter[] Paras = Paras = new OracleParameter[] {
  14114. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14115. barcode,ParameterDirection.Input)
  14116. };
  14117. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14118. if (ds != null && ds.Tables[0].Rows.Count == 0)
  14119. {
  14120. oracleTrConn.Rollback();
  14121. oracleTrConn.Disconnect();
  14122. return -1; //此条码没有清除,不能恢复
  14123. }
  14124. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  14125. {
  14126. sql = @"insert into tp_pm_inproduction select
  14127. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  14128. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  14129. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  14130. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  14131. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  14132. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  14133. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  14134. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  14135. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  14136. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  14137. KILNID, KILNCODE, KILNNAME, KILNCARID,
  14138. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  14139. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  14140. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  14141. }
  14142. else
  14143. {
  14144. sql = @"insert into tp_pm_inproductiontrash select
  14145. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  14146. PROCEDUREMODEL, MODELTYPE,
  14147. defectflag,
  14148. REWORKPROCEDUREID,
  14149. ISPUBLICBODY,
  14150. ISRefire,
  14151. GOODSLEVELID, GOODSLEVELTYPEID,
  14152. GOODSID, GOODSCODE, GOODSNAME,
  14153. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  14154. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  14155. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  14156. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  14157. REMARKS,
  14158. KILNID, KILNCODE, KILNNAME, KILNCARID,
  14159. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  14160. ACCOUNTID, VALUEFLAG, CREATETIME,
  14161. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  14162. SpecialRepairFlag,FlowProcedureID
  14163. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  14164. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  14165. }
  14166. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14167. //将生产数据表中的数据插入到在产生产数据表中
  14168. sql = @"insert into tp_pm_productiondatain
  14169. select
  14170. pd.PRODUCTIONDATAID,
  14171. pd.BARCODE,
  14172. pd.CENTRALIZEDBATCHNO,
  14173. pd.PRODUCTIONLINEID,
  14174. pd.PRODUCTIONLINECODE,
  14175. pd.PRODUCTIONLINENAME,
  14176. pd.PROCEDUREID,
  14177. pd.PROCEDURECODE,
  14178. pd.PROCEDURENAME,
  14179. pd.PROCEDUREMODEL,
  14180. pd.MODELTYPE,
  14181. pd.PIECETYPE,
  14182. pd.ISREWORKED,
  14183. pd.NODETYPE,
  14184. pd.ISPUBLICBODY,
  14185. pd.ISREFIRE,
  14186. pd.ORGANIZATIONID,
  14187. pd.GOODSID,
  14188. pd.GOODSCODE,
  14189. pd.GOODSNAME,
  14190. pd.USERID,
  14191. pd.USERCODE,
  14192. pd.USERNAME,
  14193. pd.KILNID,
  14194. pd.KILNCODE,
  14195. pd.KILNNAME,
  14196. pd.KILNCARID,
  14197. pd.KILNCARCODE,
  14198. pd.KILNCARNAME,
  14199. pd.KILNCARBATCHNO,
  14200. pd.KILNCARPOSITION,
  14201. pd.REWORKPROCEDUREID,
  14202. pd.REWORKPROCEDURECODE,
  14203. pd.REWORKPROCEDURENAME,
  14204. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  14205. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  14206. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  14207. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  14208. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  14209. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  14210. '1',pd.LOGOID,
  14211. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  14212. from tp_pm_productiondata pd
  14213. where pd.barcode = :barcode
  14214. and pd.productiondataid not in
  14215. (select pp.productiondataid
  14216. from tp_pm_productiondatain pp
  14217. where pp.barcode = :barcode)";
  14218. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14219. //删除在产临时表数据
  14220. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  14221. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14222. if (returnRows == 0)
  14223. {
  14224. oracleTrConn.Rollback();
  14225. oracleTrConn.Disconnect();
  14226. }
  14227. else
  14228. {
  14229. oracleTrConn.Commit();
  14230. oracleTrConn.Disconnect();
  14231. }
  14232. }
  14233. catch (Exception ex)
  14234. {
  14235. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14236. {
  14237. oracleTrConn.Rollback();
  14238. oracleTrConn.Disconnect();
  14239. }
  14240. throw ex;
  14241. }
  14242. finally
  14243. {
  14244. if (oracleTrConn.ConnState == ConnectionState.Open)
  14245. {
  14246. oracleTrConn.Disconnect();
  14247. }
  14248. }
  14249. return returnRows;
  14250. }
  14251. /// <summary>
  14252. /// 批量恢复数据
  14253. /// </summary>
  14254. /// <param name="barcodes">产品条码集</param>
  14255. /// <returns></returns>
  14256. public static int ResetSelectedBarCode(string barcodes)
  14257. {
  14258. int returnRows = 0;
  14259. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14260. try
  14261. {
  14262. string sql = "";
  14263. string[] subbarcode = barcodes.Split(',');
  14264. OracleParameter[] Paras = null;
  14265. DataSet ds = null;
  14266. for (int i = 0; i < subbarcode.Length; i++)
  14267. {
  14268. sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  14269. Paras = Paras = new OracleParameter[] {
  14270. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14271. subbarcode[i],ParameterDirection.Input)
  14272. };
  14273. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14274. if (ds != null && ds.Tables[0].Rows.Count == 0)
  14275. {
  14276. oracleTrConn.Rollback();
  14277. oracleTrConn.Disconnect();
  14278. return -1; //此条码没有清除,不能恢复
  14279. }
  14280. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  14281. {
  14282. sql = @"insert into tp_pm_inproduction select
  14283. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  14284. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  14285. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  14286. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  14287. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  14288. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  14289. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  14290. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  14291. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  14292. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  14293. KILNID, KILNCODE, KILNNAME, KILNCARID,
  14294. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  14295. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  14296. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  14297. }
  14298. else
  14299. {
  14300. sql = @"insert into tp_pm_inproductiontrash select
  14301. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  14302. PROCEDUREMODEL, MODELTYPE,
  14303. defectflag,
  14304. REWORKPROCEDUREID,
  14305. ISPUBLICBODY,
  14306. ISRefire,
  14307. GOODSLEVELID, GOODSLEVELTYPEID,
  14308. GOODSID, GOODSCODE, GOODSNAME,
  14309. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  14310. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  14311. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  14312. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  14313. REMARKS,
  14314. KILNID, KILNCODE, KILNNAME, KILNCARID,
  14315. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  14316. ACCOUNTID, VALUEFLAG, CREATETIME,
  14317. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  14318. SpecialRepairFlag,FlowProcedureID
  14319. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  14320. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  14321. }
  14322. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14323. //将生产数据表中的数据插入到在产生产数据表中
  14324. sql = @"insert into tp_pm_productiondatain
  14325. select pd.PRODUCTIONDATAID,
  14326. pd.BARCODE,
  14327. pd.CENTRALIZEDBATCHNO,
  14328. pd.PRODUCTIONLINEID,
  14329. pd.PRODUCTIONLINECODE,
  14330. pd.PRODUCTIONLINENAME,
  14331. pd.PROCEDUREID,
  14332. pd.PROCEDURECODE,
  14333. pd.PROCEDURENAME,
  14334. pd.PROCEDUREMODEL,
  14335. pd.MODELTYPE,
  14336. pd.PIECETYPE,
  14337. pd.ISREWORKED,
  14338. pd.NODETYPE,
  14339. pd.ISPUBLICBODY,
  14340. pd.ISREFIRE,
  14341. pd.ORGANIZATIONID,
  14342. pd.GOODSID,
  14343. pd.GOODSCODE,
  14344. pd.GOODSNAME,
  14345. pd.USERID,
  14346. pd.USERCODE,
  14347. pd.USERNAME,
  14348. pd.KILNID,
  14349. pd.KILNCODE,
  14350. pd.KILNNAME,
  14351. pd.KILNCARID,
  14352. pd.KILNCARCODE,
  14353. pd.KILNCARNAME,
  14354. pd.KILNCARBATCHNO,
  14355. pd.KILNCARPOSITION,
  14356. pd.REWORKPROCEDUREID,
  14357. pd.REWORKPROCEDURECODE,
  14358. pd.REWORKPROCEDURENAME,
  14359. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  14360. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  14361. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  14362. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  14363. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  14364. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  14365. '1',pd.LOGOID,
  14366. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  14367. from tp_pm_productiondata pd
  14368. where pd.barcode = :barcode
  14369. and pd.productiondataid not in
  14370. (select pp.productiondataid
  14371. from tp_pm_productiondatain pp
  14372. where pp.barcode = :barcode)";
  14373. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14374. //删除在产临时表数据
  14375. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  14376. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14377. }
  14378. if (returnRows == 0)
  14379. {
  14380. oracleTrConn.Rollback();
  14381. oracleTrConn.Disconnect();
  14382. }
  14383. else
  14384. {
  14385. oracleTrConn.Commit();
  14386. oracleTrConn.Disconnect();
  14387. }
  14388. }
  14389. catch (Exception ex)
  14390. {
  14391. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14392. {
  14393. oracleTrConn.Rollback();
  14394. oracleTrConn.Disconnect();
  14395. }
  14396. throw ex;
  14397. }
  14398. finally
  14399. {
  14400. if (oracleTrConn.ConnState == ConnectionState.Open)
  14401. {
  14402. oracleTrConn.Disconnect();
  14403. }
  14404. }
  14405. return returnRows;
  14406. }
  14407. #endregion
  14408. /// <summary>
  14409. /// 撤销特殊工序撤销
  14410. /// </summary>
  14411. /// <param name="barcode">产品条码</param>
  14412. /// <returns></returns>
  14413. public static ServiceResultEntity AddChancelBarCode(string barcode, SUserInfo sUserInfo)
  14414. {
  14415. ServiceResultEntity entity = new ServiceResultEntity();
  14416. int returnRows = 0;
  14417. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14418. try
  14419. {
  14420. // 转换注浆条码
  14421. barcode = CommonModuleLogic.CommonModuleLogic.GetBarcode(oracleTrConn, barcode, sUserInfo);
  14422. DateTime? flowProcedureTime = null;
  14423. // 1 条码是否有效
  14424. string sql = "select 1 from TP_PM_GroutingDailyDetail where barcode=:barcode and valueflag=1";
  14425. OracleParameter[] Paras = new OracleParameter[] {
  14426. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14427. barcode,ParameterDirection.Input)
  14428. };
  14429. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14430. if (ds.Tables[0].Rows.Count == 0)
  14431. {
  14432. //无效条码
  14433. returnRows = -1;
  14434. oracleTrConn.Rollback();
  14435. oracleTrConn.Disconnect();
  14436. entity.Result = returnRows;
  14437. return entity;
  14438. }
  14439. // 2.看看是否在产,如果在产看看是否已经损坯标识
  14440. int? ProcedureID = null;
  14441. // 撤销时,需要判定当前工序,而不是流程工序,干补时,当前工序是干补,流程工序是报损时的工序。
  14442. //sql = "select InScrapFlag,flowProcedureID,IsReworkFlag,flowProcedureTime from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14443. sql = "select InScrapFlag,ProcedureID,IsReworkFlag,ProcedureTime from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14444. Paras = new OracleParameter[] {
  14445. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14446. barcode,ParameterDirection.Input)
  14447. };
  14448. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14449. if (ds.Tables[0].Rows.Count == 0) //不存在在产信息
  14450. {
  14451. // 不在产,看看是否有成品
  14452. sql = @"select 1 from TP_PM_FinishedProduct where barcode=:barcode";
  14453. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14454. if (ds.Tables[0].Rows.Count > 0)
  14455. {
  14456. //生产完成
  14457. returnRows = -2;
  14458. oracleTrConn.Rollback();
  14459. oracleTrConn.Disconnect();
  14460. entity.Result = returnRows;
  14461. return entity;
  14462. }
  14463. else
  14464. {
  14465. //条码不在生产线上
  14466. returnRows = -7;
  14467. oracleTrConn.Rollback();
  14468. oracleTrConn.Disconnect();
  14469. entity.Result = returnRows;
  14470. return entity;
  14471. }
  14472. }
  14473. else
  14474. {
  14475. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  14476. {
  14477. //申请报废
  14478. returnRows = -3;
  14479. oracleTrConn.Rollback();
  14480. oracleTrConn.Disconnect();
  14481. entity.Result = returnRows;
  14482. return entity;
  14483. }
  14484. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  14485. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  14486. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  14487. {
  14488. //申请报废
  14489. returnRows = -9;
  14490. oracleTrConn.Rollback();
  14491. oracleTrConn.Disconnect();
  14492. entity.Result = returnRows;
  14493. return entity;
  14494. }
  14495. //ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["flowProcedureID"]); //条码完成工序
  14496. //flowProcedureTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["flowProcedureTime"]); // 流程工序时间
  14497. ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]); //条码完成工序
  14498. flowProcedureTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["ProcedureTime"]); // 完成工序时间
  14499. }
  14500. // 此工序所在条码是否是特殊工序,即可以撤销工序
  14501. sql = "select UnDoFlag from tp_pc_procedure where procedureid=:procdureid and valueflag=1";
  14502. Paras = new OracleParameter[] {
  14503. new OracleParameter(":procdureid",OracleDbType.Int32,
  14504. ProcedureID,ParameterDirection.Input)
  14505. };
  14506. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14507. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14508. {
  14509. if (ds.Tables[0].Rows[0]["UnDoFlag"].ToString() != "1")
  14510. {
  14511. //此条码所在工序不允许进行撤销
  14512. returnRows = -4;
  14513. oracleTrConn.Rollback();
  14514. oracleTrConn.Disconnect();
  14515. entity.Result = returnRows;
  14516. return entity;
  14517. }
  14518. }
  14519. // 计件撤销 应该不用验证是否回收了 by chenxiaoye 2020-02-28
  14520. //// 如果不合格,查询报损表里是否回收
  14521. //sql = "select recyclingflag from TP_PM_ScrapProduct "
  14522. // + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) "
  14523. // + " from TP_PM_ScrapProduct "
  14524. // + " where BarCode=:BarCode and ValueFlag=1)"
  14525. // + " and ValueFlag=1";
  14526. //Paras = new OracleParameter[]{
  14527. // new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  14528. // };
  14529. //DataSet dsResult2 = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14530. //if (dsResult2 != null && dsResult2.Tables[0].Rows.Count > 0)
  14531. //{
  14532. // if (Convert.ToInt32(dsResult2.Tables[0].Rows[0]["recyclingflag"]) > 0)
  14533. // {
  14534. // returnRows = -200;
  14535. // oracleTrConn.Rollback();
  14536. // oracleTrConn.Disconnect();
  14537. // entity.Result = returnRows;
  14538. // entity.Message = "此产品已经回收,不能撤销";
  14539. // return entity;
  14540. // }
  14541. //}
  14542. // 计件撤销 应该不用验证是否回收了 by chenxiaoye 2020-02-28
  14543. // 判断是否有撤销范围权限
  14544. sql = @"select 1 from TP_MST_UserPurview where UserID=:UserID and (PurviewID=:PurviewID or PurviewID=-1) and PurviewType=13";
  14545. Paras = new OracleParameter[] {
  14546. new OracleParameter(":PurviewID",OracleDbType.Int32,
  14547. ProcedureID,ParameterDirection.Input),
  14548. new OracleParameter(":UserID",OracleDbType.Int32,
  14549. sUserInfo.UserID,ParameterDirection.Input)
  14550. };
  14551. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14552. if (ds != null && ds.Tables[0].Rows.Count == 0)
  14553. {
  14554. //此用户无此工序撤销权限
  14555. returnRows = -8;
  14556. oracleTrConn.Rollback();
  14557. oracleTrConn.Disconnect();
  14558. entity.Result = returnRows;
  14559. return entity;
  14560. }
  14561. //
  14562. #region 是否启用撤销限制天数
  14563. if (flowProcedureTime != null)
  14564. {
  14565. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  14566. Paras = new OracleParameter[] {
  14567. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  14568. Constant.SettingType.S_PM_004.ToString(),ParameterDirection.Input),
  14569. new OracleParameter(":accountid",OracleDbType.Int32,
  14570. sUserInfo.AccountID,ParameterDirection.Input)
  14571. };
  14572. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14573. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14574. {
  14575. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  14576. {
  14577. // 开启了限制
  14578. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(flowProcedureTime),
  14579. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_004.ToString(), sUserInfo);
  14580. if (Convert.ToInt32(resultEntity.Result) < 0)
  14581. {
  14582. //计件撤销限制天数
  14583. returnRows = -200;
  14584. oracleTrConn.Rollback();
  14585. oracleTrConn.Disconnect();
  14586. entity.Result = returnRows;
  14587. entity.Message = resultEntity.Message;
  14588. return entity;
  14589. }
  14590. }
  14591. }
  14592. }
  14593. #endregion
  14594. // 进行撤销
  14595. string sqlString = @"select ProductionDataID,
  14596. ProcedureID,
  14597. ProcedureModel,
  14598. ModelType,
  14599. ReworkProcedureID,
  14600. UserID,
  14601. logoid,
  14602. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  14603. from (select ProductionDataID,
  14604. ProcedureID,
  14605. ProcedureModel,
  14606. ModelType,
  14607. ReworkProcedureID,
  14608. UserID,
  14609. logoid
  14610. from Tp_Pm_ProductiondataIn
  14611. where barcode = :barcode
  14612. and valueflag = 1 and ModelType<>8
  14613. order by ProductionDataID desc) t
  14614. where rownum <= 2";
  14615. Paras = new OracleParameter[]{
  14616. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14617. };
  14618. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, Paras);
  14619. if (productionData == null
  14620. || productionData.Tables.Count == Constant.INT_IS_ZERO
  14621. //|| productionData.Tables[0].Rows.Count != Constant.INT_IS_TWO
  14622. )
  14623. {
  14624. // 条码至少要有2次数据采集
  14625. //条码没有此工序前数据
  14626. returnRows = -5;
  14627. oracleTrConn.Rollback();
  14628. oracleTrConn.Disconnect();
  14629. entity.Result = returnRows;
  14630. return entity;
  14631. }
  14632. //xuwei fix 2019-09-25 tables只有一行记录 rows[1]无记录 改成rows[0]?
  14633. object pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count-1]["p8id"];
  14634. if (pid == null || pid == DBNull.Value)
  14635. {
  14636. pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["ProcedureID"];
  14637. }
  14638. #region 回滚在产数据
  14639. //xuwei fix 2019-09-23 加条件限制 如果是首节点 删除在产产品数据 否则 更新在产产品数据
  14640. if (productionData.Tables[0].Rows.Count == 1)
  14641. {
  14642. sqlString = "delete from TP_PM_InProduction where barcode=:barcode"; //wangxin 20150406
  14643. //sqlString += " where ProductionDataID=:productionDataID";
  14644. //新添加的 begin
  14645. Paras = new OracleParameter[]{
  14646. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14647. barcode,ParameterDirection.Input),
  14648. };
  14649. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14650. returnRows += rows;
  14651. if (rows == Constant.INT_IS_ZERO)
  14652. {
  14653. // 保存失败
  14654. //没有任何影响行
  14655. returnRows = -6;
  14656. oracleTrConn.Rollback();
  14657. oracleTrConn.Disconnect();
  14658. entity.Result = returnRows;
  14659. return entity;
  14660. }
  14661. //xuwei add 2019-09-23 更新回生产状态 BEGINNINGFLAG = '0'
  14662. oracleTrConn.ExecuteNonQuery($"update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '0' where BARCODE = '{barcode}'");
  14663. //xuwei fix 2019-09-25 加条件判断 如果是首节点 回退到注浆1
  14664. sql = $"update TP_PM_USEDBARCODE set barcodestatus=1 where BarCode='{barcode}'";
  14665. rows = oracleTrConn.ExecuteNonQuery(sql);
  14666. returnRows += rows;
  14667. }
  14668. else
  14669. {
  14670. //xuwei 下述代码为原代码 并未判定首节点
  14671. sqlString = @"update TP_PM_InProduction
  14672. set FlowProcedureID = :flowProcedureID,
  14673. ProcedureModel = :procedureModel,
  14674. ProcedureID = :ProcedureID,
  14675. ModelType = :modelType,
  14676. ReworkProcedureID = :reworkProcedureID,
  14677. UserID = :userID,
  14678. updateuserid = :updateuserid,
  14679. ProductionDataID = :ProductionDataID
  14680. --logoid = :logoid
  14681. where barcode = :barcode";
  14682. Paras = new OracleParameter[]{
  14683. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  14684. productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  14685. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  14686. pid,ParameterDirection.Input),
  14687. new OracleParameter(":procedureModel",OracleDbType.Int32,
  14688. productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  14689. new OracleParameter(":modelType",OracleDbType.Int32,
  14690. productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  14691. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  14692. productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  14693. new OracleParameter(":userID",OracleDbType.Int32,
  14694. productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  14695. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  14696. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14697. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  14698. productionData.Tables[0].Rows[1]["ProductionDataID"],ParameterDirection.Input)
  14699. //new OracleParameter(":logoid",OracleDbType.Int32,
  14700. // productionData.Tables[0].Rows[1]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[1]["logoid"],ParameterDirection.Input),
  14701. };
  14702. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14703. returnRows += rows;
  14704. if (rows == Constant.INT_IS_ZERO)
  14705. {
  14706. // 保存失败
  14707. //没有任何影响行
  14708. returnRows = -6;
  14709. oracleTrConn.Rollback();
  14710. oracleTrConn.Disconnect();
  14711. entity.Result = returnRows;
  14712. return entity;
  14713. }
  14714. }
  14715. //modify end
  14716. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  14717. //sqlString += " where ProductionDataID=:productionDataID";
  14718. //新添加的 begin
  14719. Paras = new OracleParameter[]{
  14720. new OracleParameter(":productionDataID",OracleDbType.Int32,
  14721. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  14722. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14723. barcode,ParameterDirection.Input),
  14724. };
  14725. //新添加的 end
  14726. sqlString += " where ProductionDataID=:productionDataID and barcode=:barcode";
  14727. int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14728. returnRows += rutenRows;
  14729. if (rutenRows == Constant.INT_IS_ZERO)
  14730. {
  14731. // 保存失败
  14732. //没有任何影响行
  14733. returnRows = -6;
  14734. oracleTrConn.Rollback();
  14735. oracleTrConn.Disconnect();
  14736. entity.Result = returnRows;
  14737. return entity;
  14738. }
  14739. #endregion
  14740. if (returnRows <= 0)
  14741. {
  14742. oracleTrConn.Rollback();
  14743. oracleTrConn.Disconnect();
  14744. }
  14745. else
  14746. {
  14747. oracleTrConn.Commit();
  14748. oracleTrConn.Disconnect();
  14749. }
  14750. }
  14751. catch (Exception ex)
  14752. {
  14753. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14754. {
  14755. oracleTrConn.Rollback();
  14756. oracleTrConn.Disconnect();
  14757. }
  14758. throw ex;
  14759. }
  14760. finally
  14761. {
  14762. if (oracleTrConn.ConnState == ConnectionState.Open)
  14763. {
  14764. oracleTrConn.Disconnect();
  14765. }
  14766. }
  14767. entity.Result = returnRows;
  14768. return entity;
  14769. }
  14770. /// <summary>
  14771. /// 交坯特殊工序撤销
  14772. /// </summary>
  14773. /// <param name="barcode">产品条码</param>
  14774. /// <returns></returns>
  14775. public static ServiceResultEntity AddChancelDeliverMudBarCode(string barcode, SUserInfo sUserInfo)
  14776. {
  14777. ServiceResultEntity entity = new ServiceResultEntity();
  14778. int returnRows = 0;
  14779. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14780. try
  14781. {
  14782. DateTime? deliverTime = null;
  14783. // 1 条码是否有效
  14784. string sql = "select DeliverTime from TP_PM_GroutingDailyDetail where barcode=:barcode and valueflag=1";
  14785. OracleParameter[] Paras = new OracleParameter[] {
  14786. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14787. barcode,ParameterDirection.Input)
  14788. };
  14789. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14790. if (ds.Tables[0].Rows.Count == 0)
  14791. {
  14792. //无效条码
  14793. returnRows = -1;
  14794. oracleTrConn.Rollback();
  14795. oracleTrConn.Disconnect();
  14796. entity.Result = returnRows;
  14797. return entity;
  14798. }
  14799. else
  14800. {
  14801. if (ds.Tables[0].Rows[0]["DeliverTime"].ToString() != "")
  14802. {
  14803. deliverTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["DeliverTime"]);
  14804. }
  14805. }
  14806. // 2.看看是否在产,如果在产看看是否已经损坯标识
  14807. int? ProcedureID = null;
  14808. //xuwei fix 2019-09-27 选出交坏判定字段
  14809. //sql = "select InScrapFlag,flowProcedureID,IsReworkFlag,Specialrepairflag from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14810. sql = "select MODELTYPE,InScrapFlag,flowProcedureID,IsReworkFlag,Specialrepairflag from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14811. Paras = new OracleParameter[] {
  14812. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14813. barcode,ParameterDirection.Input)
  14814. };
  14815. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14816. if (ds.Tables[0].Rows.Count == 0) //不存在在产信息
  14817. {
  14818. // 不在产,看看是否有成品
  14819. sql = @"select 1 from TP_PM_FinishedProduct where barcode=:barcode";
  14820. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14821. if (ds.Tables[0].Rows.Count > 0)
  14822. {
  14823. //生产完成
  14824. returnRows = -2;
  14825. oracleTrConn.Rollback();
  14826. oracleTrConn.Disconnect();
  14827. entity.Result = returnRows;
  14828. return entity;
  14829. }
  14830. else
  14831. {
  14832. //条码不在生产线上
  14833. returnRows = -7;
  14834. oracleTrConn.Rollback();
  14835. oracleTrConn.Disconnect();
  14836. entity.Result = returnRows;
  14837. return entity;
  14838. }
  14839. }
  14840. else
  14841. {
  14842. //xuwei add 2019-09-27 如果是非交坯工序不能在此节点撤销 5是交坯模型
  14843. if(ds.Tables[0].Rows[0]["MODELTYPE"].ToString() != "5")
  14844. {
  14845. //非交坯工序,不能交坯撤销
  14846. returnRows = -200;
  14847. oracleTrConn.Rollback();
  14848. oracleTrConn.Disconnect();
  14849. entity.Result = returnRows;
  14850. entity.Message = "非交坯工序,不能交坯撤销";
  14851. return entity;
  14852. }
  14853. //xuwei end
  14854. if (ds.Tables[0].Rows[0]["Specialrepairflag"].ToString() == "1")
  14855. {
  14856. //干补后不允许撤销
  14857. returnRows = -200;
  14858. oracleTrConn.Rollback();
  14859. oracleTrConn.Disconnect();
  14860. entity.Result = returnRows;
  14861. entity.Message = "干补后不允许撤销";
  14862. return entity;
  14863. }
  14864. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  14865. {
  14866. //申请报废
  14867. returnRows = -3;
  14868. oracleTrConn.Rollback();
  14869. oracleTrConn.Disconnect();
  14870. entity.Result = returnRows;
  14871. return entity;
  14872. }
  14873. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  14874. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  14875. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  14876. {
  14877. //申请报废
  14878. returnRows = -8;
  14879. oracleTrConn.Rollback();
  14880. oracleTrConn.Disconnect();
  14881. entity.Result = returnRows;
  14882. return entity;
  14883. }
  14884. ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["flowProcedureID"]); //条码完成工序
  14885. }
  14886. //// 此工序所在条码是否是特殊工序,即可以撤销工序
  14887. //sql = "select UnDoFlag from tp_pc_procedure where procedureid=:procdureid and valueflag=1";
  14888. //Paras = new OracleParameter[] {
  14889. // new OracleParameter(":procdureid",OracleDbType.Int32,
  14890. // ProcedureID,ParameterDirection.Input)
  14891. //};
  14892. //ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14893. //if (ds != null && ds.Tables[0].Rows.Count > 0)
  14894. //{
  14895. // if (ds.Tables[0].Rows[0]["UnDoFlag"].ToString() != "1")
  14896. // {
  14897. // //此条码所在工序不允许进行撤销
  14898. // returnRows = -4;
  14899. // oracleTrConn.Rollback();
  14900. // oracleTrConn.Disconnect();
  14901. // return returnRows;
  14902. // }
  14903. //}
  14904. #region 是否启用交坯撤销限制天数
  14905. if (deliverTime != null)
  14906. {
  14907. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  14908. Paras = new OracleParameter[] {
  14909. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  14910. Constant.SettingType.S_PM_003.ToString(),ParameterDirection.Input),
  14911. new OracleParameter(":accountid",OracleDbType.Int32,
  14912. sUserInfo.AccountID,ParameterDirection.Input)
  14913. };
  14914. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14915. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14916. {
  14917. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  14918. {
  14919. // 开启了限制
  14920. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(deliverTime),
  14921. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_003.ToString(), sUserInfo);
  14922. if (Convert.ToInt32(resultEntity.Result) < 0)
  14923. {
  14924. //超过交坯撤销限制天数
  14925. returnRows = -200;
  14926. oracleTrConn.Rollback();
  14927. oracleTrConn.Disconnect();
  14928. entity.Result = returnRows;
  14929. entity.Message = resultEntity.Message;
  14930. return entity;
  14931. }
  14932. }
  14933. }
  14934. }
  14935. #endregion
  14936. // 进行撤销
  14937. string sqlString = @"select ProductionDataID,
  14938. ProcedureID,
  14939. ProcedureModel,
  14940. ModelType,
  14941. ReworkProcedureID,
  14942. UserID,
  14943. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  14944. from (select ProductionDataID,
  14945. ProcedureID,
  14946. ProcedureModel,
  14947. ModelType,
  14948. ReworkProcedureID,
  14949. UserID
  14950. from Tp_Pm_ProductiondataIn
  14951. where barcode = :barcode
  14952. and valueflag = 1 and ModelType<>8
  14953. order by ProductionDataID desc) t
  14954. where rownum <= 2";
  14955. Paras = new OracleParameter[]{
  14956. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14957. };
  14958. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, Paras);
  14959. if (productionData == null
  14960. || productionData.Tables.Count == Constant.INT_IS_ZERO
  14961. )
  14962. {
  14963. // 条码至少要有1次数据采集
  14964. //条码没有此工序前数据
  14965. returnRows = -5; //条码至少要有1次数据采集
  14966. oracleTrConn.Rollback();
  14967. oracleTrConn.Disconnect();
  14968. entity.Result = returnRows;
  14969. return entity;
  14970. }
  14971. //if (productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  14972. //{
  14973. // // 条码至少要有1次数据采集
  14974. // //条码没有此工序前数据
  14975. // returnRows = -55; //条码已经经过多个工序,不允许撤销
  14976. // oracleTrConn.Rollback();
  14977. // oracleTrConn.Disconnect();
  14978. // entity.Result = returnRows;
  14979. // return entity;
  14980. //}
  14981. //xuwei fix 2019-09-25 tables只有一行记录 rows[1]无记录 改成rows[0]?
  14982. object pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["p8id"];
  14983. if (pid == null || pid == DBNull.Value)
  14984. {
  14985. pid = productionData.Tables[0].Rows[productionData.Tables[0].Rows.Count - 1]["ProcedureID"];
  14986. }
  14987. #region 回滚在产数据
  14988. // sqlString = @"update TP_PM_InProduction
  14989. // set FlowProcedureID = :flowProcedureID,
  14990. // ProcedureModel = :procedureModel,
  14991. // ProcedureID = :flowProcedureID,
  14992. // ModelType = :modelType,
  14993. // ReworkProcedureID = :reworkProcedureID,
  14994. // UserID = :userID,
  14995. // updateuserid = :updateuserid
  14996. // where barcode = :barcode";
  14997. // Paras = new OracleParameter[]{
  14998. // new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  14999. // productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  15000. // new OracleParameter(":procedureModel",OracleDbType.Int32,
  15001. // productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  15002. // new OracleParameter(":modelType",OracleDbType.Int32,
  15003. // productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  15004. // new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  15005. // productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  15006. // new OracleParameter(":userID",OracleDbType.Int32,
  15007. // productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  15008. // new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  15009. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  15010. // };
  15011. // int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  15012. // returnRows += rutenRows;
  15013. // if (rutenRows == Constant.INT_IS_ZERO)
  15014. // {
  15015. // // 保存失败
  15016. // //没有任何影响行
  15017. // returnRows = -6;
  15018. // oracleTrConn.Rollback();
  15019. // oracleTrConn.Disconnect();
  15020. // return returnRows;
  15021. // }
  15022. int rutenRows = 0;
  15023. //modify end
  15024. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  15025. //sqlString += " where ProductionDataID=:productionDataID";
  15026. //新添加的 begin
  15027. Paras = new OracleParameter[]{
  15028. new OracleParameter(":productionDataID",OracleDbType.Int32,
  15029. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  15030. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15031. barcode,ParameterDirection.Input),
  15032. };
  15033. //新添加的 end
  15034. sqlString += " where ProductionDataID=:productionDataID and barcode=:barcode";
  15035. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  15036. returnRows += rutenRows;
  15037. if (rutenRows == Constant.INT_IS_ZERO)
  15038. {
  15039. // 保存失败
  15040. //没有任何影响行
  15041. returnRows = -6;
  15042. oracleTrConn.Rollback();
  15043. oracleTrConn.Disconnect();
  15044. entity.Result = returnRows;
  15045. return entity;
  15046. }
  15047. //modify end
  15048. //xuwei fix 2019-09-23 加条件限制 如果是首节点 删除在产产品数据
  15049. if (productionData.Tables[0].Rows.Count == 1)
  15050. {
  15051. sqlString = "delete from TP_PM_InProduction where barcode=:barcode"; //wangxin 20150406
  15052. //sqlString += " where ProductionDataID=:productionDataID";
  15053. //新添加的 begin
  15054. Paras = new OracleParameter[]{
  15055. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15056. barcode,ParameterDirection.Input),
  15057. };
  15058. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  15059. returnRows += rutenRows;
  15060. if (rutenRows == Constant.INT_IS_ZERO)
  15061. {
  15062. // 保存失败
  15063. //没有任何影响行
  15064. returnRows = -6;
  15065. oracleTrConn.Rollback();
  15066. oracleTrConn.Disconnect();
  15067. entity.Result = returnRows;
  15068. return entity;
  15069. }
  15070. //xuwei add 2019-09-23 更新回生产状态 BEGINNINGFLAG = '0'
  15071. oracleTrConn.ExecuteNonQuery($"update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '0' where BARCODE = '{barcode}'");
  15072. }
  15073. else
  15074. {
  15075. //xuwei 下述代码为原代码 并未判定首节点
  15076. sqlString = @"update TP_PM_InProduction
  15077. set FlowProcedureID = :flowProcedureID,
  15078. ProcedureModel = :procedureModel,
  15079. ProcedureID = :ProcedureID,
  15080. ModelType = :modelType,
  15081. ReworkProcedureID = :reworkProcedureID,
  15082. UserID = :userID,
  15083. updateuserid = :updateuserid,
  15084. ProductionDataID = :ProductionDataID
  15085. --logoid = :logoid
  15086. where barcode = :barcode";
  15087. Paras = new OracleParameter[]{
  15088. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  15089. productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  15090. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  15091. pid,ParameterDirection.Input),
  15092. new OracleParameter(":procedureModel",OracleDbType.Int32,
  15093. productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  15094. new OracleParameter(":modelType",OracleDbType.Int32,
  15095. productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  15096. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  15097. productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  15098. new OracleParameter(":userID",OracleDbType.Int32,
  15099. productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  15100. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  15101. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  15102. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  15103. productionData.Tables[0].Rows[1]["ProductionDataID"],ParameterDirection.Input)
  15104. //new OracleParameter(":logoid",OracleDbType.Int32,
  15105. // productionData.Tables[0].Rows[1]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[1]["logoid"],ParameterDirection.Input),
  15106. };
  15107. int rows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  15108. returnRows += rows;
  15109. if (rows == Constant.INT_IS_ZERO)
  15110. {
  15111. // 保存失败
  15112. //没有任何影响行
  15113. returnRows = -6;
  15114. oracleTrConn.Rollback();
  15115. oracleTrConn.Disconnect();
  15116. entity.Result = returnRows;
  15117. return entity;
  15118. }
  15119. }
  15120. #endregion
  15121. // 更新注浆明交坯标识把已经交坯改回,正常交坯
  15122. 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
  15123. Paras = new OracleParameter[]{
  15124. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15125. barcode,ParameterDirection.Input),
  15126. };
  15127. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  15128. returnRows += rutenRows;
  15129. // TODO 回退到注浆 1 还是 在产 3
  15130. //xuwei fix 2019-09-23 加条件判断 如果是首节点 回退到注浆1 否则回退到在产 3
  15131. if (productionData.Tables[0].Rows.Count==1)
  15132. {
  15133. sql = "update TP_PM_USEDBARCODE set barcodestatus=1 where BarCode=:barcode";
  15134. }
  15135. else
  15136. {
  15137. sql = "update TP_PM_USEDBARCODE set barcodestatus=3 where BarCode=:barcode";
  15138. }
  15139. Paras = new OracleParameter[]{
  15140. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15141. barcode,ParameterDirection.Input),
  15142. };
  15143. rutenRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15144. returnRows += rutenRows;
  15145. if (returnRows <= 0)
  15146. {
  15147. oracleTrConn.Rollback();
  15148. oracleTrConn.Disconnect();
  15149. }
  15150. else
  15151. {
  15152. oracleTrConn.Commit();
  15153. oracleTrConn.Disconnect();
  15154. }
  15155. }
  15156. catch (Exception ex)
  15157. {
  15158. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15159. {
  15160. oracleTrConn.Rollback();
  15161. oracleTrConn.Disconnect();
  15162. }
  15163. throw ex;
  15164. }
  15165. finally
  15166. {
  15167. if (oracleTrConn.ConnState == ConnectionState.Open)
  15168. {
  15169. oracleTrConn.Disconnect();
  15170. }
  15171. }
  15172. entity.Result = returnRows;
  15173. return entity;
  15174. }
  15175. #region
  15176. /// <summary>
  15177. /// 清除未盘点残留数据(清除选择)
  15178. /// </summary>
  15179. /// <param name="inCheckedID">盘点单ID</param>
  15180. /// <param name="barcodes">条码集</param>
  15181. /// <returns></returns>
  15182. public static int SaveClearInChecked(int inCheckedID, string barcodes, SUserInfo sUserInfo)
  15183. {
  15184. int returnRows = 0;
  15185. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15186. try
  15187. {
  15188. string sql = "";
  15189. string[] subbarcodes = barcodes.Split(',');
  15190. OracleParameter[] Paras = null;
  15191. for (int i = 0; i < subbarcodes.Length; i++)
  15192. {
  15193. // 0.登窑、入窑、出窑工序的产品不能清除
  15194. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  15195. Paras = new OracleParameter[] {
  15196. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15197. subbarcodes[i],ParameterDirection.Input),
  15198. };
  15199. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  15200. if (!string.IsNullOrWhiteSpace(modeltype))
  15201. {
  15202. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  15203. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  15204. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  15205. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  15206. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln ||
  15207. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.CarAdd)
  15208. {
  15209. continue;
  15210. }
  15211. }
  15212. // 返工标识或者是报损标识不允许清除 2016-07-12
  15213. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  15214. Paras = new OracleParameter[] {
  15215. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15216. subbarcodes[i],ParameterDirection.Input)
  15217. };
  15218. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  15219. if (ds != null && ds.Tables[0].Rows.Count > 0)
  15220. {
  15221. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15222. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  15223. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  15224. {
  15225. returnRows = -1;
  15226. break;
  15227. }
  15228. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  15229. {
  15230. returnRows = -2;
  15231. break;
  15232. }
  15233. }
  15234. // 1.清除未盘点数据
  15235. 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'";
  15236. Paras = new OracleParameter[] {
  15237. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15238. subbarcodes[i],ParameterDirection.Input),
  15239. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  15240. inCheckedID,ParameterDirection.Input)
  15241. };
  15242. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15243. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  15244. // sql = @"insert into tp_pm_inproduction_tmp
  15245. // select * from tp_pm_inproduction p where p.barcode = :barcode";
  15246. sql = "INSERT INTO tp_pm_inproduction_tmp\n" +
  15247. " (barcode\n" +
  15248. " ,productionlineid\n" +
  15249. " ,productionlinecode\n" +
  15250. " ,productionlinename\n" +
  15251. " ,proceduremodel\n" +
  15252. " ,modeltype\n" +
  15253. " ,reworkprocedureid\n" +
  15254. " ,ispublicbody\n" +
  15255. " ,goodsid\n" +
  15256. " ,goodscode\n" +
  15257. " ,goodsname\n" +
  15258. " ,userid\n" +
  15259. " ,groutingdailyid\n" +
  15260. " ,groutingdailydetailid\n" +
  15261. " ,groutingdate\n" +
  15262. " ,groutinglineid\n" +
  15263. " ,groutinglinecode\n" +
  15264. " ,groutinglinename\n" +
  15265. " ,gmouldtypeid\n" +
  15266. " ,canmanytimes\n" +
  15267. " ,groutinglinedetailid\n" +
  15268. " ,groutingmouldcode\n" +
  15269. " ,mouldcode\n" +
  15270. " ,remarks\n" +
  15271. " ,accountid\n" +
  15272. " ,valueflag\n" +
  15273. " ,createtime\n" +
  15274. " ,createuserid\n" +
  15275. " ,updatetime\n" +
  15276. " ,updateuserid\n" +
  15277. " ,optimestamp\n" +
  15278. " ,isrefire\n" +
  15279. " ,goodslevelid\n" +
  15280. " ,goodsleveltypeid\n" +
  15281. " ,defectflag\n" +
  15282. " ,groutinguserid\n" +
  15283. " ,groutingusercode\n" +
  15284. " ,groutingnum\n" +
  15285. " ,kilnid\n" +
  15286. " ,kilncode\n" +
  15287. " ,kilnname\n" +
  15288. " ,kilncarid\n" +
  15289. " ,kilncarcode\n" +
  15290. " ,kilncarname\n" +
  15291. " ,kilncarbatchno\n" +
  15292. " ,kilncarposition\n" +
  15293. " ,specialrepairflag\n" +
  15294. " ,flowprocedureid\n" +
  15295. " ,flowproceduretime\n" +
  15296. " ,procedureid\n" +
  15297. " ,proceduretime\n" +
  15298. " ,productiondataid\n" +
  15299. " ,deleteduserid\n" +
  15300. " ,deletedusercode\n" +
  15301. " --,trashflag\n" +
  15302. " --,deletedtime\n" +
  15303. " ,logoid)\n" +
  15304. " SELECT barcode\n" +
  15305. " ,productionlineid\n" +
  15306. " ,productionlinecode\n" +
  15307. " ,productionlinename\n" +
  15308. " ,proceduremodel\n" +
  15309. " ,modeltype\n" +
  15310. " ,reworkprocedureid\n" +
  15311. " ,ispublicbody\n" +
  15312. " ,goodsid\n" +
  15313. " ,goodscode\n" +
  15314. " ,goodsname\n" +
  15315. " ,userid\n" +
  15316. " ,groutingdailyid\n" +
  15317. " ,groutingdailydetailid\n" +
  15318. " ,groutingdate\n" +
  15319. " ,groutinglineid\n" +
  15320. " ,groutinglinecode\n" +
  15321. " ,groutinglinename\n" +
  15322. " ,gmouldtypeid\n" +
  15323. " ,canmanytimes\n" +
  15324. " ,groutinglinedetailid\n" +
  15325. " ,groutingmouldcode\n" +
  15326. " ,mouldcode\n" +
  15327. " ,remarks\n" +
  15328. " ,accountid\n" +
  15329. " ,valueflag\n" +
  15330. " ,createtime\n" +
  15331. " ,createuserid\n" +
  15332. " ,updatetime\n" +
  15333. " ,updateuserid\n" +
  15334. " ,optimestamp\n" +
  15335. " ,isrefire\n" +
  15336. " ,goodslevelid\n" +
  15337. " ,goodsleveltypeid\n" +
  15338. " ,defectflag\n" +
  15339. " ,groutinguserid\n" +
  15340. " ,groutingusercode\n" +
  15341. " ,groutingnum\n" +
  15342. " ,kilnid\n" +
  15343. " ,kilncode\n" +
  15344. " ,kilnname\n" +
  15345. " ,kilncarid\n" +
  15346. " ,kilncarcode\n" +
  15347. " ,kilncarname\n" +
  15348. " ,kilncarbatchno\n" +
  15349. " ,kilncarposition\n" +
  15350. " ,specialrepairflag\n" +
  15351. " ,flowprocedureid\n" +
  15352. " ,flowproceduretime\n" +
  15353. " ,procedureid\n" +
  15354. " ,proceduretime\n" +
  15355. " ,productiondataid\n" +
  15356. " ,:deleteduserid\n" +
  15357. " ,:deletedusercode\n" +
  15358. " --,inscrapflag\n" +
  15359. " ,logoid\n" +
  15360. " FROM tp_pm_inproduction p\n" +
  15361. " WHERE p.barcode = :barcode\n" +
  15362. " AND p.modeltype not in (1,2,3,6)\n" +
  15363. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15364. //" AND p.IsReworkFlag <> '1' AND p.InScrapFlag <> '1' \n" +
  15365. " AND p.IsReworkFlag = '0' AND p.InScrapFlag = '0' \n" +
  15366. "";
  15367. Paras = new OracleParameter[] {
  15368. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15369. subbarcodes[i],ParameterDirection.Input),
  15370. new OracleParameter(":deleteduserid",OracleDbType.Int32,
  15371. sUserInfo.UserID,ParameterDirection.Input),
  15372. new OracleParameter(":deletedusercode",OracleDbType.NVarchar2,
  15373. sUserInfo.UserCode,ParameterDirection.Input),
  15374. };
  15375. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15376. // 3 删除在产数据
  15377. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15378. //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'";
  15379. 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'";
  15380. Paras = new OracleParameter[] {
  15381. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15382. subbarcodes[i],ParameterDirection.Input),
  15383. };
  15384. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15385. if (returnRows > 0)
  15386. {
  15387. // 4. 删除在产生产数据
  15388. sql = @" delete from tp_pm_productiondatain p where p.barcode = :barcode";
  15389. Paras = new OracleParameter[] {
  15390. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15391. subbarcodes[i],ParameterDirection.Input),
  15392. };
  15393. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15394. }
  15395. }
  15396. if (returnRows <= 0)
  15397. {
  15398. oracleTrConn.Rollback();
  15399. oracleTrConn.Disconnect();
  15400. }
  15401. else
  15402. {
  15403. oracleTrConn.Commit();
  15404. oracleTrConn.Disconnect();
  15405. }
  15406. }
  15407. catch (Exception ex)
  15408. {
  15409. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15410. {
  15411. oracleTrConn.Rollback();
  15412. oracleTrConn.Disconnect();
  15413. }
  15414. throw ex;
  15415. }
  15416. finally
  15417. {
  15418. if (oracleTrConn.ConnState == ConnectionState.Open)
  15419. {
  15420. oracleTrConn.Disconnect();
  15421. }
  15422. }
  15423. return returnRows;
  15424. }
  15425. /// <summary>
  15426. /// 清除未盘点残留数据(根据条件进行选择)
  15427. /// </summary>
  15428. /// <param name="inCheckedID">盘点单ID</param>
  15429. /// <param name="procedureIDs">完成工序集</param>
  15430. /// <param name="goodsCodes">产品编码集</param>
  15431. /// <returns></returns>
  15432. public static int SaveClearInCheckedAll(int inCheckedID, string procedureIDs, string goodsCodes, DateTime? startDateTime, DateTime? endDateTime, SUserInfo sUserInfo)
  15433. {
  15434. int returnRows = 0;
  15435. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15436. try
  15437. {
  15438. OracleParameter[] Paras = null;
  15439. string Insql = "";
  15440. // 1 查出根据条件进行未盘点数据
  15441. // 0.登窑、入窑、出窑工序的产品不能清除
  15442. Insql = @"select p.barcode from TP_PM_INCHECKEDDETAIL p "
  15443. + " inner join tp_pm_inproduction pin on pin.barcode = p.barcode and p.PROCEDUREID = pin.PROCEDUREID"
  15444. + " 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'";
  15445. if (!string.IsNullOrEmpty(procedureIDs))
  15446. {
  15447. Insql += " and p.PROCEDUREID in (" + procedureIDs + ")";
  15448. }
  15449. if (!string.IsNullOrEmpty(goodsCodes))
  15450. {
  15451. Insql += " and p.GoodsID in (" + goodsCodes + ")";
  15452. }
  15453. if (startDateTime != null)
  15454. {
  15455. Insql += Insql + " AND pin.ProcedureTime >= :Createdate AND pin.ProcedureTime <= :EndDate ";
  15456. Paras = new OracleParameter[] {
  15457. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  15458. new OracleParameter(":Createdate", OracleDbType.Date, startDateTime, ParameterDirection.Input),
  15459. new OracleParameter(":EndDate", OracleDbType.Date, endDateTime, ParameterDirection.Input),
  15460. };
  15461. }
  15462. else
  15463. {
  15464. Paras = new OracleParameter[] {
  15465. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  15466. };
  15467. }
  15468. string sql = "";
  15469. // 1.清除未盘点数据
  15470. 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'";
  15471. //Paras = new OracleParameter[] {
  15472. // new OracleParameter(":InCheckedID",OracleDbType.Int32,
  15473. // inCheckedID,ParameterDirection.Input)
  15474. // };
  15475. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15476. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  15477. sql = @"insert into tp_pm_inproduction_tmp
  15478. (
  15479. BARCODE,
  15480. PRODUCTIONLINEID,
  15481. PRODUCTIONLINECODE,
  15482. PRODUCTIONLINENAME,
  15483. PROCEDUREMODEL,
  15484. MODELTYPE,
  15485. REWORKPROCEDUREID,
  15486. ISPUBLICBODY,
  15487. GOODSID,
  15488. GOODSCODE,
  15489. GOODSNAME,
  15490. USERID,
  15491. GROUTINGDAILYID,
  15492. GROUTINGDAILYDETAILID,
  15493. GROUTINGDATE,
  15494. GROUTINGLINEID,
  15495. GROUTINGLINECODE,
  15496. GROUTINGLINENAME,
  15497. GMOULDTYPEID,
  15498. CANMANYTIMES,
  15499. GROUTINGLINEDETAILID,
  15500. GROUTINGMOULDCODE,
  15501. MOULDCODE,
  15502. REMARKS,
  15503. ACCOUNTID,
  15504. VALUEFLAG,
  15505. CREATETIME,
  15506. CREATEUSERID,
  15507. UPDATETIME,
  15508. UPDATEUSERID,
  15509. OPTIMESTAMP,
  15510. ISREFIRE,
  15511. GOODSLEVELID,
  15512. GOODSLEVELTYPEID,
  15513. DEFECTFLAG,
  15514. GROUTINGUSERID,
  15515. GROUTINGUSERCODE,
  15516. GROUTINGNUM,
  15517. KILNID,
  15518. KILNCODE,
  15519. KILNNAME,
  15520. KILNCARID,
  15521. KILNCARCODE,
  15522. KILNCARNAME,
  15523. KILNCARBATCHNO,
  15524. KILNCARPOSITION,
  15525. SPECIALREPAIRFLAG,
  15526. FLOWPROCEDUREID,
  15527. FLOWPROCEDURETIME,
  15528. PROCEDUREID,
  15529. PROCEDURETIME,
  15530. PRODUCTIONDATAID,
  15531. trashflag,
  15532. Deletedtime,
  15533. logoid,
  15534. IsReworkFlag,
  15535. SemiCheckID,
  15536. DELETEDUSERID,
  15537. DELETEDUSERCODE
  15538. )
  15539. select
  15540. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15541. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  15542. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  15543. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15544. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15545. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15546. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  15547. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15548. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  15549. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15550. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15551. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  15552. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,sysdate,logoid,ISREWORKFLAG,SEMICHECKID,"
  15553. + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  15554. "' from tp_pm_inproduction pp where pp.barcode in (" + Insql + ")";
  15555. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15556. // 4. 删除在产生产数据
  15557. sql = @" delete from tp_pm_productiondatain pp where pp.barcode in(" + Insql + ")";
  15558. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15559. // 3 删除在产数据
  15560. sql = @" delete from tp_pm_inproduction pp where pp.barcode in(" + Insql + ")";
  15561. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15562. sql = @" update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '3' where p.INCHECKEDFLAG='9' and p.InCheckedID=" + inCheckedID;
  15563. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15564. if (returnRows == 0)
  15565. {
  15566. oracleTrConn.Rollback();
  15567. oracleTrConn.Disconnect();
  15568. }
  15569. else
  15570. {
  15571. oracleTrConn.Commit();
  15572. oracleTrConn.Disconnect();
  15573. }
  15574. }
  15575. catch (Exception ex)
  15576. {
  15577. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15578. {
  15579. oracleTrConn.Rollback();
  15580. oracleTrConn.Disconnect();
  15581. }
  15582. throw ex;
  15583. }
  15584. finally
  15585. {
  15586. if (oracleTrConn.ConnState == ConnectionState.Open)
  15587. {
  15588. oracleTrConn.Disconnect();
  15589. }
  15590. }
  15591. return returnRows;
  15592. }
  15593. /// <summary>
  15594. /// 设置条码商标
  15595. /// </summary>
  15596. /// <returns></returns>
  15597. public static int SaveBarCodeLogo(string barcode, int logoid, SUserInfo sUserInfo)
  15598. {
  15599. int returnRows = 0;
  15600. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15601. try
  15602. {
  15603. // 转换条码
  15604. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  15605. OracleParameter[] paras1 = new OracleParameter[]{
  15606. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  15607. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  15608. };
  15609. barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  15610. OracleParameter[] Paras = null;
  15611. object oldLogoID = null;
  15612. object pid = null;
  15613. string sql = "";
  15614. sql = @"select logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  15615. oldLogoID = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  15616. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  15617. });
  15618. // 1.更新注浆明细
  15619. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15620. Paras = new OracleParameter[] {
  15621. new OracleParameter(":logoid",OracleDbType.Int32,
  15622. logoid,ParameterDirection.Input),
  15623. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15624. sUserInfo.UserID,ParameterDirection.Input),
  15625. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15626. barcode,ParameterDirection.Input)
  15627. };
  15628. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15629. // 2.在产产品
  15630. sql = @"update tp_pm_inproduction set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15631. //Paras = new OracleParameter[] {
  15632. // new OracleParameter(":logoid",OracleDbType.Int32,
  15633. // logoid,ParameterDirection.Input),
  15634. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15635. // sUserInfo.UserID,ParameterDirection.Input),
  15636. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15637. // barcode,ParameterDirection.Input)
  15638. // };
  15639. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15640. if (returnRows > 0)
  15641. {
  15642. sql = @"select ProcedureID from tp_pm_inproduction where barcode=:barcode";
  15643. pid = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  15644. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  15645. });
  15646. }
  15647. // 3.在产回收站
  15648. sql = @"update tp_pm_inproductiontrash set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15649. //Paras = new OracleParameter[] {
  15650. // new OracleParameter(":logoid",OracleDbType.Int32,
  15651. // logoid,ParameterDirection.Input),
  15652. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15653. // sUserInfo.UserID,ParameterDirection.Input),
  15654. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15655. // barcode,ParameterDirection.Input)
  15656. // };
  15657. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15658. // 4.在产临时表
  15659. sql = @"update tp_pm_inproduction_tmp set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15660. //Paras = new OracleParameter[] {
  15661. // new OracleParameter(":logoid",OracleDbType.Int32,
  15662. // logoid,ParameterDirection.Input),
  15663. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15664. // sUserInfo.UserID,ParameterDirection.Input),
  15665. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15666. // barcode,ParameterDirection.Input)
  15667. // };
  15668. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15669. // 5.成品表
  15670. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15671. //Paras = new OracleParameter[] {
  15672. // new OracleParameter(":logoid",OracleDbType.Int32,
  15673. // logoid,ParameterDirection.Input),
  15674. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15675. // sUserInfo.UserID,ParameterDirection.Input),
  15676. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15677. // barcode,ParameterDirection.Input)
  15678. // };
  15679. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15680. // 6 在产盘点明细
  15681. sql = @"update TP_PM_InCheckedDetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15682. //Paras = new OracleParameter[] {
  15683. // new OracleParameter(":logoid",OracleDbType.Int32,
  15684. // logoid,ParameterDirection.Input),
  15685. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15686. // sUserInfo.UserID,ParameterDirection.Input),
  15687. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15688. // barcode,ParameterDirection.Input)
  15689. // };
  15690. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15691. // 7 半成品检验登记
  15692. sql = @"update TP_PM_SemiCheck set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15693. //Paras = new OracleParameter[] {
  15694. // new OracleParameter(":logoid",OracleDbType.Int32,
  15695. // logoid,ParameterDirection.Input),
  15696. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15697. // sUserInfo.UserID,ParameterDirection.Input),
  15698. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15699. // barcode,ParameterDirection.Input)
  15700. // };
  15701. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15702. // 8 废弃产品
  15703. sql = @"update TP_PM_ScrapProduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15704. //Paras = new OracleParameter[] {
  15705. // new OracleParameter(":logoid",OracleDbType.Int32,
  15706. // logoid,ParameterDirection.Input),
  15707. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15708. // sUserInfo.UserID,ParameterDirection.Input),
  15709. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15710. // barcode,ParameterDirection.Input)
  15711. // };
  15712. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15713. // 9 在产生产数据
  15714. sql = @"update TP_PM_ProductionDataIn set Triggerflag=1, logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15715. //Paras = new OracleParameter[] {
  15716. // new OracleParameter(":logoid",OracleDbType.Int32,
  15717. // logoid,ParameterDirection.Input),
  15718. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15719. // sUserInfo.UserID,ParameterDirection.Input),
  15720. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15721. // barcode,ParameterDirection.Input)
  15722. // };
  15723. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15724. // 10 生产数据
  15725. sql = @"update TP_PM_ProductionData set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15726. //Paras = new OracleParameter[] {
  15727. // new OracleParameter(":logoid",OracleDbType.Int32,
  15728. // logoid,ParameterDirection.Input),
  15729. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15730. // sUserInfo.UserID,ParameterDirection.Input),
  15731. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15732. // barcode,ParameterDirection.Input)
  15733. // };
  15734. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15735. // 变更履历
  15736. sql =
  15737. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  15738. " (BARCODE\n" +
  15739. " ,OLDLOGOID\n" +
  15740. " ,NEWLOGOID\n" +
  15741. " ,PROCEDUREID\n" +
  15742. " ,REMARKS\n" +
  15743. " ,ACCOUNTID\n" +
  15744. " ,CREATETIME\n" +
  15745. " ,CREATEUSERID)\n" +
  15746. "VALUES\n" +
  15747. " (:BARCODE\n" +
  15748. " ,:OLDLOGOID\n" +
  15749. " ,:NEWLOGOID\n" +
  15750. " ,:PROCEDUREID\n" +
  15751. " ,NULL\n" +
  15752. " ,:ACCOUNTID\n" +
  15753. " ,SYSDATE\n" +
  15754. " ,:CREATEUSERID)";
  15755. Paras = new OracleParameter[] {
  15756. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  15757. oldLogoID,ParameterDirection.Input),
  15758. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  15759. logoid,ParameterDirection.Input),
  15760. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  15761. pid,ParameterDirection.Input),
  15762. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  15763. sUserInfo.AccountID,ParameterDirection.Input),
  15764. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  15765. sUserInfo.UserID,ParameterDirection.Input),
  15766. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  15767. barcode,ParameterDirection.Input)
  15768. };
  15769. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15770. //if (returnRows == 0)
  15771. //{
  15772. // oracleTrConn.Rollback();
  15773. // oracleTrConn.Disconnect();
  15774. //}
  15775. //else
  15776. {
  15777. oracleTrConn.Commit();
  15778. oracleTrConn.Disconnect();
  15779. }
  15780. }
  15781. catch (Exception ex)
  15782. {
  15783. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15784. {
  15785. oracleTrConn.Rollback();
  15786. oracleTrConn.Disconnect();
  15787. }
  15788. throw ex;
  15789. }
  15790. return returnRows;
  15791. }
  15792. /// <summary>
  15793. /// 设置条码商标 釉料
  15794. /// </summary>
  15795. /// <returns></returns>
  15796. public static int SaveBarCodeLogoAndGlazetype(string barcode, int logoid, int glazetypeid,
  15797. SUserInfo sUserInfo)
  15798. {
  15799. int returnRows = 0;
  15800. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15801. try
  15802. {
  15803. // 转换条码
  15804. //string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  15805. //OracleParameter[] paras1 = new OracleParameter[]{
  15806. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  15807. // new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  15808. // };
  15809. //barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  15810. OracleParameter[] Paras = null;
  15811. string sql = "select g.groutingdailydetailid, g.logoid, g.glazetypeid, t.PROCEDUREID from tp_pm_groutingdailydetail g \n" +
  15812. " left join tp_pm_inproduction t on t.barcode = g.barcode\n" +
  15813. "where g.barcode = :barcode";
  15814. Paras = new OracleParameter[] {
  15815. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15816. barcode,ParameterDirection.Input), };
  15817. DataTable dt = oracleTrConn.GetSqlResultToDt(sql, Paras);
  15818. if (dt == null || dt.Rows.Count == 0)
  15819. {
  15820. return -2;
  15821. }
  15822. // 釉料变更履历
  15823. sql = "insert into TP_PM_GlazetypeRecord\n" +
  15824. //"values\n" + xuwei update 2020-01-02
  15825. " (GROUTINGDAILYDETAILID\n" +
  15826. " ,OldGlazetypeid\n" +
  15827. " ,NewGlazetypeid\n" +
  15828. " ,ProcedureID\n" +
  15829. " ,Remarks\n" +
  15830. " ,AccountID\n" +
  15831. " ,CreateUserID)\n" +
  15832. "values\n" +
  15833. " (:GROUTINGDAILYDETAILID\n" +
  15834. " ,:OldGlazetypeid\n" +
  15835. " ,:NewGlazetypeid\n" +
  15836. " ,:ProcedureID\n" +
  15837. " ,:Remarks\n" +
  15838. " ,:AccountID\n" +
  15839. " ,:CreateUserID)";
  15840. Paras = new OracleParameter[] {
  15841. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
  15842. dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  15843. new OracleParameter(":OldGlazetypeid",OracleDbType.Int32,
  15844. dt.Rows[0]["glazetypeid"],ParameterDirection.Input),
  15845. new OracleParameter(":NewGlazetypeid",OracleDbType.Int32,
  15846. glazetypeid,ParameterDirection.Input),
  15847. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  15848. dt.Rows[0]["PROCEDUREID"],ParameterDirection.Input),
  15849. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  15850. null,ParameterDirection.Input),
  15851. new OracleParameter(":AccountID",OracleDbType.Int32,
  15852. sUserInfo.AccountID,ParameterDirection.Input),
  15853. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  15854. sUserInfo.UserID,ParameterDirection.Input),
  15855. };
  15856. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15857. // 变更履历
  15858. sql =
  15859. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  15860. " (BARCODE\n" +
  15861. " ,OLDLOGOID\n" +
  15862. " ,NEWLOGOID\n" +
  15863. //" ,PROCEDUREID\n" +
  15864. " ,REMARKS\n" +
  15865. " ,ACCOUNTID\n" +
  15866. " ,CREATETIME\n" +
  15867. " ,CREATEUSERID)\n" +
  15868. "VALUES\n" +
  15869. " (:BARCODE\n" +
  15870. " ,:OLDLOGOID\n" +
  15871. " ,:NEWLOGOID\n" +
  15872. //" ,:PROCEDUREID\n" +
  15873. " ,NULL\n" +
  15874. " ,:ACCOUNTID\n" +
  15875. " ,SYSDATE\n" +
  15876. " ,:CREATEUSERID)";
  15877. Paras = new OracleParameter[] {
  15878. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  15879. dt.Rows[0]["LOGOID"],ParameterDirection.Input),
  15880. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  15881. logoid,ParameterDirection.Input),
  15882. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  15883. // pid,ParameterDirection.Input),
  15884. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  15885. sUserInfo.AccountID,ParameterDirection.Input),
  15886. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  15887. sUserInfo.UserID,ParameterDirection.Input),
  15888. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  15889. barcode,ParameterDirection.Input)
  15890. };
  15891. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15892. // 1.更新注浆明细
  15893. sql = "update tp_pm_groutingdailydetail set logoid=:logoid, glazetypeid =:glazetypeid, updateuserid=:updateuserid where barcode=:barcode";
  15894. Paras = new OracleParameter[] {
  15895. new OracleParameter(":logoid",OracleDbType.Int32,
  15896. logoid,ParameterDirection.Input),
  15897. new OracleParameter(":glazetypeid",OracleDbType.Int32,
  15898. glazetypeid,ParameterDirection.Input),
  15899. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15900. sUserInfo.UserID,ParameterDirection.Input),
  15901. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15902. barcode,ParameterDirection.Input)
  15903. };
  15904. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15905. // 1.更新在产
  15906. sql = @"update TP_PM_INPRODUCTION set logoid=:logoid,
  15907. --glazetypeid =:glazetypeid,
  15908. updateuserid=:updateuserid where barcode=:barcode";
  15909. Paras = new OracleParameter[] {
  15910. new OracleParameter(":logoid",OracleDbType.Int32,
  15911. logoid,ParameterDirection.Input),
  15912. //new OracleParameter(":glazetypeid",OracleDbType.Int32,
  15913. // glazetypeid,ParameterDirection.Input),
  15914. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15915. sUserInfo.UserID,ParameterDirection.Input),
  15916. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15917. barcode,ParameterDirection.Input)
  15918. };
  15919. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15920. oracleTrConn.Commit();
  15921. }
  15922. catch (Exception ex)
  15923. {
  15924. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15925. {
  15926. oracleTrConn.Rollback();
  15927. }
  15928. throw ex;
  15929. }
  15930. finally { oracleTrConn.Disconnect(); }
  15931. return returnRows;
  15932. }
  15933. /// <summary>
  15934. /// 设置条码商标 釉料
  15935. /// </summary>
  15936. /// <returns></returns>
  15937. public static int SaveBarCodesLogoAndGlazetype(string barcodesstr, int logoid, int glazetypeid,
  15938. int procedureID, SUserInfo sUserInfo)
  15939. {
  15940. int returnRows = 0;
  15941. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15942. try
  15943. {
  15944. OracleParameter[] Paras = null;
  15945. string sql = "select g.groutingdailydetailid, g.logoid, g.glazetypeid, t.PROCEDUREID from tp_pm_groutingdailydetail g \n" +
  15946. " left join tp_pm_inproduction t on t.barcode = g.barcode\n" +
  15947. "where g.barcode = :barcode";
  15948. string sql0 = "select g.groutingdailydetailid, g.logoid, g.glazetypeid from tp_pm_groutingdailydetail g \n" +
  15949. "where g.barcode = :barcode";
  15950. // 釉料变更履历
  15951. string sql1 = "insert into TP_PM_GlazetypeRecord\n" +
  15952. //"values\n" + xuwei update 2020-01-02
  15953. " (GROUTINGDAILYDETAILID\n" +
  15954. " ,OldGlazetypeid\n" +
  15955. " ,NewGlazetypeid\n" +
  15956. " ,ProcedureID\n" +
  15957. " ,Remarks\n" +
  15958. " ,AccountID\n" +
  15959. " ,CreateUserID)\n" +
  15960. "values\n" +
  15961. " (:GROUTINGDAILYDETAILID\n" +
  15962. " ,:OldGlazetypeid\n" +
  15963. " ,:NewGlazetypeid\n" +
  15964. " ,:ProcedureID\n" +
  15965. " ,:Remarks\n" +
  15966. " ,:AccountID\n" +
  15967. " ,:CreateUserID)";
  15968. // 变更履历
  15969. string sqllogo =
  15970. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  15971. " (BARCODE\n" +
  15972. " ,OLDLOGOID\n" +
  15973. " ,NEWLOGOID\n" +
  15974. //" ,PROCEDUREID\n" +
  15975. " ,REMARKS\n" +
  15976. " ,ACCOUNTID\n" +
  15977. " ,CREATETIME\n" +
  15978. " ,CREATEUSERID)\n" +
  15979. "VALUES\n" +
  15980. " (:BARCODE\n" +
  15981. " ,:OLDLOGOID\n" +
  15982. " ,:NEWLOGOID\n" +
  15983. //" ,:PROCEDUREID\n" +
  15984. " ,NULL\n" +
  15985. " ,:ACCOUNTID\n" +
  15986. " ,SYSDATE\n" +
  15987. " ,:CREATEUSERID)";
  15988. string sql2 = "update tp_pm_groutingdailydetail set logoid=:logoid, glazetypeid =:glazetypeid, updateuserid=:updateuserid where barcode=:barcode";
  15989. // 1.更新在产
  15990. string sqlin = @"update TP_PM_INPRODUCTION set logoid=:logoid,
  15991. --glazetypeid =:glazetypeid,
  15992. updateuserid=:updateuserid where barcode=:barcode";
  15993. //xuwei add 2020-01-02
  15994. string[] barcodes = barcodesstr.Split(',');
  15995. foreach (string barcode in barcodes)
  15996. {
  15997. Paras = new OracleParameter[] {
  15998. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  15999. barcode,ParameterDirection.Input), };
  16000. DataTable dt = null;
  16001. if (procedureID > 0)
  16002. {
  16003. dt = oracleTrConn.GetSqlResultToDt(sql0, Paras);
  16004. }
  16005. else
  16006. {
  16007. dt = oracleTrConn.GetSqlResultToDt(sql, Paras);
  16008. }
  16009. if (dt == null || dt.Rows.Count == 0)
  16010. {
  16011. //continue;
  16012. return -2;
  16013. }
  16014. Paras = new OracleParameter[] {
  16015. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
  16016. dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  16017. new OracleParameter(":OldGlazetypeid",OracleDbType.Int32,
  16018. dt.Rows[0]["glazetypeid"],ParameterDirection.Input),
  16019. new OracleParameter(":NewGlazetypeid",OracleDbType.Int32,
  16020. glazetypeid,ParameterDirection.Input),
  16021. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  16022. (procedureID > 0 ? procedureID : dt.Rows[0]["PROCEDUREID"]),ParameterDirection.Input),
  16023. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  16024. null,ParameterDirection.Input),
  16025. new OracleParameter(":AccountID",OracleDbType.Int32,
  16026. sUserInfo.AccountID,ParameterDirection.Input),
  16027. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  16028. sUserInfo.UserID,ParameterDirection.Input),
  16029. };
  16030. oracleTrConn.ExecuteNonQuery(sql1, Paras);
  16031. // 商标履历
  16032. Paras = new OracleParameter[] {
  16033. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  16034. dt.Rows[0]["LOGOID"],ParameterDirection.Input),
  16035. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  16036. logoid,ParameterDirection.Input),
  16037. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  16038. // pid,ParameterDirection.Input),
  16039. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  16040. sUserInfo.AccountID,ParameterDirection.Input),
  16041. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  16042. sUserInfo.UserID,ParameterDirection.Input),
  16043. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  16044. barcode,ParameterDirection.Input)
  16045. };
  16046. returnRows += oracleTrConn.ExecuteNonQuery(sqllogo, Paras);
  16047. // 1.更新注浆明细
  16048. Paras = new OracleParameter[] {
  16049. new OracleParameter(":logoid",OracleDbType.Int32,
  16050. logoid,ParameterDirection.Input),
  16051. new OracleParameter(":glazetypeid",OracleDbType.Int32,
  16052. glazetypeid,ParameterDirection.Input),
  16053. new OracleParameter(":updateuserid",OracleDbType.Int32,
  16054. sUserInfo.UserID,ParameterDirection.Input),
  16055. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16056. barcode,ParameterDirection.Input)
  16057. };
  16058. returnRows += oracleTrConn.ExecuteNonQuery(sql2, Paras);
  16059. // 1.更新在产
  16060. Paras = new OracleParameter[] {
  16061. new OracleParameter(":logoid",OracleDbType.Int32,
  16062. logoid,ParameterDirection.Input),
  16063. //new OracleParameter(":glazetypeid",OracleDbType.Int32,
  16064. // glazetypeid,ParameterDirection.Input),
  16065. new OracleParameter(":updateuserid",OracleDbType.Int32,
  16066. sUserInfo.UserID,ParameterDirection.Input),
  16067. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16068. barcode,ParameterDirection.Input)
  16069. };
  16070. returnRows = oracleTrConn.ExecuteNonQuery(sqlin, Paras);
  16071. }
  16072. oracleTrConn.Commit();
  16073. }
  16074. catch (Exception ex)
  16075. {
  16076. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  16077. {
  16078. oracleTrConn.Rollback();
  16079. }
  16080. throw ex;
  16081. }
  16082. finally { oracleTrConn.Disconnect(); }
  16083. return returnRows;
  16084. }
  16085. /// <summary>
  16086. /// 设置产成品商标
  16087. /// </summary>
  16088. /// <param name="barcodes"></param>
  16089. /// <param name="logoid"></param>
  16090. /// <param name="sUserInfo"></param>
  16091. /// <returns></returns>
  16092. public static int SetFinishedLogo(string[] barcodes, int logoid, SUserInfo sUserInfo)
  16093. {
  16094. int returnRows = 0;
  16095. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16096. try
  16097. {
  16098. OracleParameter[] Paras = null;
  16099. object oldLogoID = null;
  16100. object gdid = null;
  16101. //object pid = null;
  16102. string sql = "";
  16103. DataTable dataTable = null;
  16104. foreach (string barcode in barcodes)
  16105. {
  16106. sql = @"select groutingdailydetailid, logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  16107. dataTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
  16108. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  16109. });
  16110. if (dataTable == null || dataTable.Rows.Count == 0)
  16111. {
  16112. continue;
  16113. }
  16114. gdid = dataTable.Rows[0]["groutingdailydetailid"];
  16115. oldLogoID = dataTable.Rows[0]["logoid"];
  16116. // 1.更新注浆明细
  16117. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  16118. Paras = new OracleParameter[] {
  16119. new OracleParameter(":logoid",OracleDbType.Int32,
  16120. logoid,ParameterDirection.Input),
  16121. new OracleParameter(":updateuserid",OracleDbType.Int32,
  16122. sUserInfo.UserID,ParameterDirection.Input),
  16123. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16124. barcode,ParameterDirection.Input)
  16125. };
  16126. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  16127. // 5.成品表
  16128. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  16129. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  16130. // 变更履历
  16131. sql =
  16132. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  16133. " (BARCODE\n" +
  16134. " ,OLDLOGOID\n" +
  16135. " ,NEWLOGOID\n" +
  16136. //" ,PROCEDUREID\n" +
  16137. " ,REMARKS\n" +
  16138. " ,ACCOUNTID\n" +
  16139. " ,CREATETIME\n" +
  16140. " ,CREATEUSERID)\n" +
  16141. "VALUES\n" +
  16142. " (:BARCODE\n" +
  16143. " ,:OLDLOGOID\n" +
  16144. " ,:NEWLOGOID\n" +
  16145. //" ,:PROCEDUREID\n" +
  16146. " ,NULL\n" +
  16147. " ,:ACCOUNTID\n" +
  16148. " ,SYSDATE\n" +
  16149. " ,:CREATEUSERID)";
  16150. Paras = new OracleParameter[] {
  16151. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  16152. oldLogoID,ParameterDirection.Input),
  16153. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  16154. logoid,ParameterDirection.Input),
  16155. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  16156. // pid,ParameterDirection.Input),
  16157. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  16158. sUserInfo.AccountID,ParameterDirection.Input),
  16159. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  16160. sUserInfo.UserID,ParameterDirection.Input),
  16161. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  16162. barcode,ParameterDirection.Input)
  16163. };
  16164. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  16165. }
  16166. //if (returnRows == 0)
  16167. //{
  16168. // oracleTrConn.Rollback();
  16169. // oracleTrConn.Disconnect();
  16170. //}
  16171. //else
  16172. {
  16173. oracleTrConn.Commit();
  16174. oracleTrConn.Disconnect();
  16175. }
  16176. }
  16177. catch (Exception ex)
  16178. {
  16179. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  16180. {
  16181. oracleTrConn.Rollback();
  16182. oracleTrConn.Disconnect();
  16183. }
  16184. throw ex;
  16185. }
  16186. return returnRows;
  16187. }
  16188. /// <summary>
  16189. /// 设置产成品订单
  16190. /// </summary>
  16191. /// <param name="barcodes"></param>
  16192. /// <param name="orderid"></param>
  16193. /// <param name="sUserInfo"></param>
  16194. /// <returns></returns>
  16195. public static int SetHandoveredOrder(string[] barcodes, int orderID, SUserInfo sUserInfo)
  16196. {
  16197. int returnRows = 0;
  16198. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16199. try
  16200. {
  16201. string sql = @"update tp_pm_finishedproduct set FHOrderID=:FHOrderID,updateuserid=:updateuserid where barcode=:barcode and FHOrderID is not null";
  16202. OracleParameter[] Paras = new OracleParameter[] {
  16203. new OracleParameter(":barcode",OracleDbType.Varchar2,
  16204. "",ParameterDirection.Input),
  16205. new OracleParameter(":FHOrderID",OracleDbType.Int32,
  16206. orderID,ParameterDirection.Input),
  16207. new OracleParameter(":updateuserid",OracleDbType.Int32,
  16208. sUserInfo.UserID,ParameterDirection.Input)
  16209. };
  16210. foreach (string barcode in barcodes)
  16211. {
  16212. Paras[0].Value = barcode;
  16213. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  16214. }
  16215. oracleTrConn.Commit();
  16216. oracleTrConn.Disconnect();
  16217. }
  16218. catch (Exception ex)
  16219. {
  16220. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  16221. {
  16222. oracleTrConn.Rollback();
  16223. oracleTrConn.Disconnect();
  16224. }
  16225. throw ex;
  16226. }
  16227. return returnRows;
  16228. }
  16229. #endregion
  16230. /// <summary>
  16231. /// 添加生产数据
  16232. /// </summary>
  16233. /// <param name="oracleTrConn">连接对象</param>
  16234. /// <param name="accountDate">账务日期</param>
  16235. /// <param name="productionData">生产数据</param>
  16236. /// <param name="sUserInfo">用户基本信息</param>
  16237. /// <returns>string</returns>
  16238. /// <remarks>
  16239. /// 陈冰 2014.09.18 新建
  16240. /// </remarks>
  16241. private static string AddProductionDataWaster(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  16242. {
  16243. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  16244. string selectSql = "";
  16245. string returnVal = "";
  16246. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  16247. //xuwei fix 2019-09-26 使用通用方法判定
  16248. // 2019-1016
  16249. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  16250. //if (isNodeBegin == 1) productionData.NodeType = (int)Constant.ProcedureNodeType.Begin;
  16251. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)
  16252. {
  16253. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  16254. if (isNodeBegin == 0)
  16255. {
  16256. productionData.NodeType = (int)Constant.ProcedureNodeType.Middle;
  16257. }
  16258. }
  16259. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  16260. {
  16261. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  16262. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  16263. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  16264. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  16265. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  16266. TP_PM_GroutingDailyDetail.MouldCode,
  16267. TP_PM_GroutingDailyDetail.GroutingDailyID,
  16268. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  16269. TP_PM_GroutingDailyDetail.GroutingLineID,
  16270. TP_PM_GroutingDailyDetail.GroutingLineCode,
  16271. TP_PM_GroutingDailyDetail.GroutingLineName,
  16272. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  16273. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  16274. (select GMouldTypeID
  16275. from TP_PM_GroutingDaily
  16276. where TP_PM_GroutingDaily.GroutingDailyID =
  16277. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  16278. (select CanManyTimes
  16279. from TP_PM_GroutingDaily
  16280. where TP_PM_GroutingDaily.GroutingDailyID =
  16281. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  16282. 0 as IsReFire
  16283. from TP_PM_GroutingDailyDetail
  16284. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  16285. }
  16286. else
  16287. {
  16288. selectSql = @"select
  16289. GroutingDate,
  16290. userid as GroutingUserID,
  16291. usercode as GroutingUserCode,
  16292. Groutingcount as GroutingNum,
  16293. GroutingMouldCode,
  16294. MouldCode,
  16295. GroutingDailyID,
  16296. GroutingDailyDetailID,
  16297. GroutingLineID,
  16298. GroutingLineCode,
  16299. GroutingLineName,
  16300. GMouldTypeID,
  16301. CanManyTimes,
  16302. GroutingLineDetailID,
  16303. SpecialRepairflag,
  16304. 0 as IsReFire,
  16305. logoid
  16306. from TP_PM_GroutingDailyDetail where barcode=:barcode
  16307. ";
  16308. }
  16309. OracleParameter[] selectparas = new OracleParameter[] {
  16310. new OracleParameter(":barcode",productionData.Barcode),
  16311. };
  16312. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  16313. DateTime GroutingDate = new DateTime();
  16314. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  16315. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  16316. int IsReFire = 0;
  16317. int? logoID = null;
  16318. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  16319. {
  16320. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  16321. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  16322. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  16323. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  16324. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  16325. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  16326. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  16327. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  16328. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  16329. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  16330. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  16331. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  16332. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  16333. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  16334. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  16335. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  16336. if (IsReFire > 0) //大于零代表重烧过
  16337. {
  16338. productionData.IsReFire = IsReFire;
  16339. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  16340. }
  16341. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  16342. {
  16343. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  16344. }
  16345. //if (productionData.LogoID != null) //当前工序有商标
  16346. //{
  16347. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  16348. // {
  16349. // logoID = productionData.LogoID;
  16350. // //根据明细ID.update
  16351. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  16352. // OracleParameter[] paras2 = new OracleParameter[] {
  16353. // new OracleParameter(":logoid",productionData.LogoID)
  16354. // };
  16355. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  16356. // }
  16357. //}
  16358. returnVal = SpecialRepairflag.ToString();
  16359. }
  16360. #endregion
  16361. #region 更新窑炉窑车属性
  16362. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  16363. {
  16364. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  16365. if (ds != null)
  16366. {
  16367. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  16368. {
  16369. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  16370. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  16371. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  16372. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  16373. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  16374. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  16375. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  16376. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  16377. }
  16378. }
  16379. }
  16380. #endregion
  16381. #region SQL
  16382. string sql = "insert into tp_pm_productiondataIn"
  16383. + " (productiondataid,"
  16384. + " barcode,"
  16385. + " centralizedbatchno,"
  16386. + " productionlineid,"
  16387. + " productionlinecode,"
  16388. + " productionlinename,"
  16389. + " procedureid,"
  16390. + " procedurecode,"
  16391. + " procedurename,"
  16392. + " proceduremodel,"
  16393. + " modeltype,"
  16394. + " piecetype,"
  16395. + " isreworked,"
  16396. + " nodetype,"
  16397. + " ispublicbody,"
  16398. + " isrefire,"
  16399. + " organizationid,"
  16400. + " goodsid,"
  16401. + " goodscode,"
  16402. + " goodsname,"
  16403. + " userid,"
  16404. + " usercode,"
  16405. + " username,"
  16406. + " kilnid,"
  16407. + " kilncode,"
  16408. + " kilnname,"
  16409. + " kilncarid,"
  16410. + " kilncarcode,"
  16411. + " kilncarname,"
  16412. + " kilncarbatchno,"
  16413. + " kilncarposition,"
  16414. + " reworkprocedureid,"
  16415. + " reworkprocedurecode,"
  16416. + " reworkprocedurename,"
  16417. + " remarks,"
  16418. + " accountdate,"
  16419. + " accountid,"
  16420. + " GoodsLevelID,"
  16421. + " GoodsLevelTypeID,"
  16422. + " createuserid,"
  16423. + " updateuserid,"
  16424. + " GroutingDate,"
  16425. + " GroutingUserID,"
  16426. + " GroutingUserCode,"
  16427. + " GroutingNum,"
  16428. + " GroutingMouldCode,"
  16429. + " MouldCode,"
  16430. + "GroutingDailyID,"
  16431. + "GroutingDailyDetailID,"
  16432. + "GroutingLineID,"
  16433. + " GroutingLineCode,"
  16434. + "GroutingLineName,"
  16435. + "GMouldTypeID,"
  16436. + "CanManyTimes,"
  16437. + "GroutingLineDetailID,"
  16438. + "SpecialRepairflag,"
  16439. + "ClassesSettingID,"
  16440. + "LogoID"
  16441. + ")"
  16442. + " values"
  16443. + " (:productiondataid,"
  16444. + " :barcode,"
  16445. + " :centralizedbatchno,"
  16446. + " :productionlineid,"
  16447. + " :productionlinecode,"
  16448. + " :productionlinename,"
  16449. + " :procedureid,"
  16450. + " :procedurecode,"
  16451. + " :procedurename,"
  16452. + " :proceduremodel,"
  16453. + " :modeltype,"
  16454. + " :piecetype,"
  16455. + " :isreworked,"
  16456. + " :nodetype,"
  16457. + " :ispublicbody,"
  16458. + " :isrefire,"
  16459. + " :organizationid,"
  16460. + " :goodsid,"
  16461. + " :goodscode,"
  16462. + " :goodsname,"
  16463. + " :userid,"
  16464. + " :usercode,"
  16465. + " :username,"
  16466. + " :kilnid,"
  16467. + " :kilncode,"
  16468. + " :kilnname,"
  16469. + " :kilncarid,"
  16470. + " :kilncarcode,"
  16471. + " :kilncarname,"
  16472. + " :kilncarbatchno,"
  16473. + " :kilncarposition,"
  16474. + " :reworkprocedureid,"
  16475. + " :reworkprocedurecode,"
  16476. + " :reworkprocedurename,"
  16477. + " :remarks,"
  16478. + " :accountdata,"
  16479. + " :accountid,"
  16480. + " :GoodsLevelID,"
  16481. + " :GoodsLevelTypeID,"
  16482. + " :createuserid,"
  16483. + " :updateuserid,"
  16484. + " :groutingdate,"
  16485. + " :groutinguserid,"
  16486. + " :groutingusercode,"
  16487. + " :groutingnum,"
  16488. + " :groutingmouldcode,"
  16489. + " :mouldcode,"
  16490. + ":groutingdailyid,"
  16491. + ":groutingdailydetailid,"
  16492. + ":groutinglineid,"
  16493. + " :groutinglinecode,"
  16494. + ":groutinglinename,"
  16495. + ":gmouldtypeid,"
  16496. + ":canmanytimes,"
  16497. + ":groutinglinedetailid,"
  16498. + ":specialRepairflag,"
  16499. + ":classesSettingID,"
  16500. + ":logoID"
  16501. + ")";
  16502. #endregion
  16503. #region OracleParameter
  16504. OracleParameter[] paras = new OracleParameter[] {
  16505. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  16506. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  16507. new OracleParameter(":barcode",productionData.Barcode),
  16508. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  16509. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  16510. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  16511. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  16512. new OracleParameter(":procedureid",productionData.ProcedureID),
  16513. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  16514. new OracleParameter(":procedurename",productionData.ProcedureName),
  16515. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  16516. new OracleParameter(":modeltype",productionData.ModelType),
  16517. new OracleParameter(":piecetype",productionData.PieceType),
  16518. new OracleParameter(":isreworked",productionData.IsReworked),
  16519. new OracleParameter(":nodetype",productionData.NodeType),
  16520. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  16521. new OracleParameter(":isrefire",productionData.IsReFire),
  16522. new OracleParameter(":organizationid",productionData.OrganizationID),
  16523. new OracleParameter(":goodsid",productionData.GoodsID),
  16524. new OracleParameter(":goodscode",productionData.GoodsCode),
  16525. new OracleParameter(":goodsname",productionData.GoodsName),
  16526. new OracleParameter(":userid",productionData.UserID),
  16527. new OracleParameter(":usercode",productionData.UserCode),
  16528. new OracleParameter(":username",productionData.UserName),
  16529. new OracleParameter(":kilnid",productionData.KilnID),
  16530. new OracleParameter(":kilncode",productionData.KilnCode),
  16531. new OracleParameter(":kilnname",productionData.KilnName),
  16532. new OracleParameter(":kilncarid",productionData.KilnCarID),
  16533. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  16534. new OracleParameter(":kilncarname",productionData.KilnCarName),
  16535. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  16536. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  16537. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  16538. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  16539. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  16540. new OracleParameter(":remarks",productionData.Remarks),
  16541. new OracleParameter(":accountdata",accountDate),
  16542. new OracleParameter(":accountid",sUserInfo.AccountID),
  16543. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  16544. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  16545. new OracleParameter(":createuserid",sUserInfo.UserID),
  16546. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16547. new OracleParameter(":groutingdate",GroutingDate),
  16548. new OracleParameter(":groutinguserid",GroutingUserID),
  16549. new OracleParameter(":groutingusercode",GroutingUserCode),
  16550. new OracleParameter(":groutingnum",GroutingNum),
  16551. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  16552. new OracleParameter(":mouldcode",MouldCode),
  16553. new OracleParameter(":groutingdailyid",GroutingDailyID),
  16554. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  16555. new OracleParameter(":groutinglineid",GroutingLineID),
  16556. new OracleParameter(":groutinglinecode",GroutingLineCode),
  16557. new OracleParameter(":groutinglinename",GroutingLineName),
  16558. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  16559. new OracleParameter(":canmanytimes",CanManyTimes),
  16560. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  16561. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  16562. new OracleParameter(":logoID",logoID),
  16563. };
  16564. #endregion
  16565. foreach (OracleParameter para in paras)
  16566. {
  16567. if (string.IsNullOrEmpty(para.Value + ""))
  16568. {
  16569. para.Value = DBNull.Value;
  16570. }
  16571. }
  16572. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  16573. OutSpecialRepairflag = returnVal;
  16574. // 失败
  16575. if (result != Constant.INT_IS_ONE)
  16576. {
  16577. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16578. }
  16579. // 成功返回null
  16580. return null;
  16581. }
  16582. #region 保存半检登记
  16583. /// <summary>
  16584. /// 保存半检登记
  16585. /// </summary>
  16586. /// <param name="entity">半检实体类</param>
  16587. /// <param name="sUserInfo">用户基本信息</param>
  16588. /// <returns>ServiceResultEntity</returns>
  16589. /// <remarks>
  16590. /// 王鑫 2016.06.27 新建
  16591. /// </remarks>
  16592. public static ServiceResultEntity AddSemiCheck(SemiCheckEntity[] entityobj, SUserInfo sUserInfo)
  16593. {
  16594. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16595. oracleTrConn.IgnoreCase = false;
  16596. ServiceResultEntity resultEntity = new ServiceResultEntity();
  16597. try
  16598. {
  16599. oracleTrConn.Connect();
  16600. SemiCheckEntity entity = entityobj[0];
  16601. string errMsg = "";
  16602. if (entity.SemiCheckCategory == 1) // 半检登记
  16603. {
  16604. errMsg = AddNormalSemiCheck(oracleTrConn, entity, sUserInfo);
  16605. }
  16606. else if (entity.SemiCheckCategory == 2)// 复检登记
  16607. {
  16608. errMsg = AddReSemiCheck(oracleTrConn, entity, sUserInfo);
  16609. }
  16610. else if (entity.SemiCheckCategory == 3)// 撤销复检
  16611. {
  16612. errMsg = AddCancelSemiCheck(oracleTrConn, entity, sUserInfo);
  16613. }
  16614. // 没有错误 提交事务
  16615. if (string.IsNullOrEmpty(errMsg))
  16616. {
  16617. oracleTrConn.Commit();
  16618. }
  16619. else
  16620. {
  16621. resultEntity.Message = errMsg;
  16622. }
  16623. }
  16624. catch (Exception ex)
  16625. {
  16626. oracleTrConn.Rollback();
  16627. throw ex;
  16628. }
  16629. finally
  16630. {
  16631. // 释放资源
  16632. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  16633. {
  16634. oracleTrConn.Disconnect();
  16635. }
  16636. }
  16637. return resultEntity;
  16638. }
  16639. #endregion
  16640. /// <summary>
  16641. /// 半检数据
  16642. /// </summary>
  16643. /// <param name="oracleTrConn">数据连接对象</param>
  16644. /// <param name="entity">半检实体类</param>
  16645. /// <param name="sUserInfo">用户基本信息</param>
  16646. /// <returns>string</returns>
  16647. /// <remarks>
  16648. /// 王鑫 2016.06.27 新建
  16649. /// </remarks>
  16650. private static string AddNormalSemiCheck(IDBTransaction oracleTrConn,
  16651. SemiCheckEntity entity,
  16652. SUserInfo sUserInfo)
  16653. {
  16654. try
  16655. {
  16656. // 获得账务日期
  16657. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  16658. string errMsg = string.Empty;
  16659. // 本批采集的批次号
  16660. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  16661. // 条码
  16662. string barcode = entity.BarCode;
  16663. if (string.IsNullOrEmpty(barcode))
  16664. {
  16665. throw new Exception("传入的条码号为空");
  16666. }
  16667. // 半检工号ID
  16668. int workUserID = Convert.ToInt32(entity.SemiCheckUserID);
  16669. // 半检工号编码
  16670. string workUserCode = entity.SemiCheckUserCode;
  16671. // 查询新插入的半检数据ID
  16672. string sql = "select SEQ_PM_SemiCheck_ID.nextval from dual";
  16673. string idStr = "";
  16674. if (entity.SemiCheckEditType == 1) //新增
  16675. {
  16676. idStr = oracleTrConn.GetSqlResultToStr(sql);
  16677. }
  16678. else if (entity.SemiCheckEditType == 2) //编辑返工
  16679. {
  16680. if (entity.SemiCheckType != "0") //正常
  16681. {
  16682. idStr = oracleTrConn.GetSqlResultToStr(sql);
  16683. }
  16684. }
  16685. else if (entity.SemiCheckEditType == 3) //编辑不合格
  16686. {
  16687. if (entity.SemiCheckType != "0") //正常
  16688. {
  16689. idStr = oracleTrConn.GetSqlResultToStr(sql);
  16690. }
  16691. }
  16692. // 保存时再验证,前台已有缺陷不能为空的验证,但还是产生了无责任和缺陷记录的数据,后台保存时增加验证。
  16693. if (!string.IsNullOrEmpty(idStr) && (entity.SemiCheckDefects == null || entity.SemiCheckDefects.Count == 0))
  16694. {
  16695. errMsg = "缺陷责任记录不能为空";
  16696. return errMsg;
  16697. }
  16698. if (entity.SemiCheckEditType == 1) //新增
  16699. {
  16700. #region 校验条码有效性
  16701. errMsg = CheckBarcodeByNew(oracleTrConn, barcode, sUserInfo);
  16702. if (!string.IsNullOrEmpty(errMsg))
  16703. {
  16704. return errMsg;
  16705. }
  16706. #endregion
  16707. #region 添加半检数据
  16708. entity.SemiCheckID = Convert.ToInt32(idStr);
  16709. if (entity.SemiCheckType == "2")
  16710. {
  16711. errMsg = AddSemiCheckDataNoPass(oracleTrConn, entity, sUserInfo);
  16712. }
  16713. else
  16714. {
  16715. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  16716. }
  16717. if (!string.IsNullOrEmpty(errMsg))
  16718. {
  16719. return errMsg;
  16720. }
  16721. #endregion
  16722. #region 条码有缺陷
  16723. #region 是次品 添加废弃产品
  16724. string ResponProcedureidStr = "";
  16725. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  16726. {
  16727. #region 添加废弃产品
  16728. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  16729. #region 属性赋值
  16730. scrapProduct.BarCode = entity.BarCode;
  16731. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  16732. // 不能责任人吗? TODO 单独责任时,没有插入废品数据。
  16733. //scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  16734. scrapProduct.ResponType = (int)Constant.ScrapResponType.Person;
  16735. scrapProduct.ScrapDate = accountDate;// sysdate
  16736. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  16737. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  16738. scrapProduct.Auditor = sUserInfo.UserID;
  16739. scrapProduct.AuditlDate = accountDate;// sysdate
  16740. scrapProduct.AccountDate = accountDate;
  16741. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  16742. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  16743. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16744. {
  16745. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  16746. }
  16747. scrapProduct.GoodsLevelTypeID = 13;
  16748. //scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  16749. // 查询新插入的废弃ID
  16750. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  16751. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  16752. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16753. scrapProduct.ScrapType = 2;
  16754. #endregion
  16755. // 保存报废
  16756. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  16757. // 保存失败
  16758. if (!string.IsNullOrEmpty(errMsg))
  16759. {
  16760. return errMsg;
  16761. }
  16762. #endregion
  16763. }
  16764. #endregion
  16765. // 存在缺陷 插入缺陷表
  16766. if (entity.SemiCheckDefects != null)
  16767. {
  16768. int row = 0;
  16769. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  16770. {
  16771. if (row == 0)
  16772. {
  16773. #region 保存缺陷
  16774. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  16775. semiCheckDefect.ScrapResponFlag
  16776. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  16777. // 保存缺陷
  16778. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  16779. if (!string.IsNullOrEmpty(errMsg))
  16780. {
  16781. return errMsg;
  16782. }
  16783. #endregion
  16784. #region 是不合格 添加废弃责任工序
  16785. if (entity.SemiCheckType == "2")
  16786. {
  16787. //if (semiCheckDefect.DefectProcedureID != null)
  16788. {
  16789. #region 添加责任工序
  16790. ResponProcedureEntity responProce = new ResponProcedureEntity();
  16791. // 新建-不合格 获取生产线及生产数据ID
  16792. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  16793. OracleParameter[] oracleParameters = new OracleParameter[] {
  16794. new OracleParameter(":barcode",entity.BarCode),
  16795. };
  16796. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  16797. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16798. {
  16799. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  16800. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  16801. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  16802. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  16803. }
  16804. //新建-不合格 获取生产线及生产数据ID end
  16805. #region 属性赋值
  16806. responProce.BarCode = entity.BarCode;
  16807. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  16808. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  16809. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  16810. responProce.UserID = semiCheckDefect.DefectUserID;
  16811. responProce.UserCode = semiCheckDefect.DefectUserCode;
  16812. responProce.UserName = semiCheckDefect.DefectUserName;
  16813. responProce.Remarks = semiCheckDefect.Remarks;
  16814. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16815. #endregion
  16816. // 保存责任工序
  16817. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  16818. // 保存失败
  16819. if (!string.IsNullOrEmpty(errMsg))
  16820. {
  16821. return errMsg;
  16822. }
  16823. #endregion
  16824. }
  16825. }
  16826. #endregion
  16827. }
  16828. row++;
  16829. }
  16830. }
  16831. #endregion
  16832. #region 条码是不合格 删除在产产品数据
  16833. if (entity.SemiCheckType == "2") //新建时不合格
  16834. {
  16835. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  16836. sql = @"update TP_PM_InProduction set GoodsLevelID=
  16837. (
  16838. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16839. )
  16840. ,GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  16841. where barcode=:barcode";
  16842. OracleParameter[] oracleParameters = new OracleParameter[] {
  16843. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  16844. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  16845. new OracleParameter(":accountid",sUserInfo.AccountID),
  16846. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16847. new OracleParameter(":barcode",entity.BarCode),
  16848. // new OracleParameter(":createuserid",sUserInfo.UserID),
  16849. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16850. };
  16851. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16852. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  16853. string sqlInsert = @"insert into TP_PM_InProductionTrash
  16854. (
  16855. BarCode,
  16856. ProductionLineID,
  16857. ProductionLineCode,
  16858. ProductionLineName,
  16859. ProcedureModel,
  16860. ModelType,
  16861. DefectFlag,
  16862. ReworkProcedureID,
  16863. IsPublicBody,
  16864. IsReFire,
  16865. GoodsLevelID,
  16866. GoodsLevelTypeID,
  16867. GoodsID,
  16868. GoodsCode,
  16869. GoodsName,
  16870. UserID,
  16871. GroutingDailyID,
  16872. GroutingDailyDetailID,
  16873. GroutingDate,
  16874. GroutingLineID,
  16875. GroutingLineCode,
  16876. GroutingLineName,
  16877. GMouldTypeID,
  16878. CanManyTimes,
  16879. GroutingLineDetailID,
  16880. GroutingMouldCode,
  16881. MouldCode,
  16882. GroutingUserID,
  16883. GroutingUserCode,
  16884. GroutingNum,
  16885. Remarks,
  16886. KilnID,
  16887. KilnCode,
  16888. KilnName,
  16889. KilnCarID,
  16890. KilnCarCode,
  16891. KilnCarName,
  16892. KilnCarBatchNo,
  16893. KilnCarPosition,
  16894. AccountID,
  16895. ValueFlag,
  16896. CreateUserID,
  16897. UpdateUserID,
  16898. SpecialRepairflag,
  16899. FlowProcedureID,
  16900. FlowProcedureTime,
  16901. ProcedureID,
  16902. ProcedureTime,
  16903. ProductionDataID,
  16904. logoid,
  16905. ISREWORKFLAG, SEMICHECKID
  16906. )
  16907. select
  16908. BarCode,
  16909. ProductionLineID,
  16910. ProductionLineCode,
  16911. ProductionLineName,
  16912. ProcedureModel,
  16913. ModelType,
  16914. DefectFlag,
  16915. ReworkProcedureID,
  16916. IsPublicBody,
  16917. IsReFire,
  16918. -- GoodsLevelID,
  16919. --GoodsLevelTypeID,
  16920. (
  16921. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16922. )
  16923. ,13,
  16924. GoodsID,
  16925. GoodsCode,
  16926. GoodsName,
  16927. UserID,
  16928. GroutingDailyID,
  16929. GroutingDailyDetailID,
  16930. GroutingDate,
  16931. GroutingLineID,
  16932. GroutingLineCode,
  16933. GroutingLineName,
  16934. GMouldTypeID,
  16935. CanManyTimes,
  16936. GroutingLineDetailID,
  16937. GroutingMouldCode,
  16938. MouldCode,
  16939. GroutingUserID,
  16940. GroutingUserCode,
  16941. GroutingNum,
  16942. Remarks,
  16943. KilnID,
  16944. KilnCode,
  16945. KilnName,
  16946. KilnCarID,
  16947. KilnCarCode,
  16948. KilnCarName,
  16949. KilnCarBatchNo,
  16950. KilnCarPosition,
  16951. AccountID,
  16952. ValueFlag,
  16953. :CreateUserID,
  16954. :UpdateUserID,
  16955. SpecialRepairflag,
  16956. FlowProcedureID,
  16957. FlowProcedureTime,
  16958. FlowProcedureID,
  16959. ProcedureTime,
  16960. ProductionDataID,
  16961. logoid,
  16962. ISREWORKFLAG, SEMICHECKID
  16963. from TP_PM_InProduction
  16964. where barcode=:barcode
  16965. ";
  16966. oracleParameters = new OracleParameter[] {
  16967. new OracleParameter(":barcode",entity.BarCode),
  16968. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16969. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16970. new OracleParameter(":accountid",sUserInfo.AccountID),
  16971. };
  16972. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16973. // 删除在产数据
  16974. sql = "delete tp_pm_inproduction where barcode = :barcode";
  16975. oracleParameters = new OracleParameter[] {
  16976. new OracleParameter(":barcode",entity.BarCode),
  16977. };
  16978. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16979. }
  16980. else if (entity.SemiCheckType == "1") //返工
  16981. {
  16982. sql = @"update TP_PM_InProduction set IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  16983. where barcode=:barcode";
  16984. OracleParameter[] oracleParameters = new OracleParameter[] {
  16985. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16986. new OracleParameter(":barcode",entity.BarCode),
  16987. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16988. };
  16989. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16990. }
  16991. #endregion
  16992. }
  16993. else if (entity.SemiCheckEditType == 2) //编辑返工
  16994. {
  16995. #region 校验条码有效性
  16996. errMsg = CheckBarcodeByEditRework(oracleTrConn, barcode, sUserInfo);
  16997. if (!string.IsNullOrEmpty(errMsg))
  16998. {
  16999. return errMsg;
  17000. }
  17001. #endregion
  17002. #region 删除当前半检数据
  17003. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  17004. if (!string.IsNullOrEmpty(errMsg))
  17005. {
  17006. return errMsg;
  17007. }
  17008. #endregion
  17009. if (entity.SemiCheckType != "0") //正常
  17010. {
  17011. #region 添加半检数据
  17012. entity.SemiCheckID = Convert.ToInt32(idStr);
  17013. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  17014. if (!string.IsNullOrEmpty(errMsg))
  17015. {
  17016. return errMsg;
  17017. }
  17018. #endregion
  17019. }
  17020. #region 条码有缺陷
  17021. #region 是次品 添加废弃产品
  17022. string ResponProcedureidStr = "";
  17023. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  17024. {
  17025. #region 添加废弃产品
  17026. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  17027. #region 属性赋值
  17028. scrapProduct.BarCode = entity.BarCode;
  17029. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  17030. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  17031. scrapProduct.ScrapDate = accountDate;
  17032. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  17033. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  17034. scrapProduct.Auditor = sUserInfo.UserID;
  17035. scrapProduct.AuditlDate = accountDate;
  17036. scrapProduct.AccountDate = accountDate;
  17037. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  17038. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  17039. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  17040. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  17041. if (ds != null && ds.Tables[0].Rows.Count > 0)
  17042. {
  17043. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  17044. }
  17045. scrapProduct.GoodsLevelTypeID = 13;
  17046. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  17047. // 查询新插入的废弃ID
  17048. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  17049. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  17050. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  17051. scrapProduct.ScrapType = 2;
  17052. #endregion
  17053. // 保存报废
  17054. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  17055. // 保存失败
  17056. if (!string.IsNullOrEmpty(errMsg))
  17057. {
  17058. return errMsg;
  17059. }
  17060. #endregion
  17061. }
  17062. #endregion
  17063. // 存在缺陷 插入缺陷表
  17064. if (entity.SemiCheckDefects != null)
  17065. {
  17066. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  17067. {
  17068. #region 保存缺陷
  17069. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  17070. semiCheckDefect.ScrapResponFlag
  17071. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  17072. // 保存缺陷
  17073. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  17074. if (!string.IsNullOrEmpty(errMsg))
  17075. {
  17076. return errMsg;
  17077. }
  17078. #endregion
  17079. #region 是不合格 添加废弃责任工序
  17080. if (entity.SemiCheckType == "2")
  17081. {
  17082. //if (semiCheckDefect.DefectProcedureID != null)
  17083. {
  17084. #region 添加责任工序
  17085. ResponProcedureEntity responProce = new ResponProcedureEntity();
  17086. // 获取生产线及生产数据ID
  17087. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  17088. OracleParameter[] oracleParameters = new OracleParameter[] {
  17089. new OracleParameter(":barcode",entity.BarCode),
  17090. };
  17091. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  17092. if (ds != null && ds.Tables[0].Rows.Count > 0)
  17093. {
  17094. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  17095. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  17096. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  17097. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  17098. }
  17099. //获取生产线及生产数据ID end
  17100. #region 属性赋值
  17101. responProce.BarCode = entity.BarCode;
  17102. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  17103. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  17104. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  17105. responProce.UserID = semiCheckDefect.DefectUserID;
  17106. responProce.UserCode = semiCheckDefect.DefectUserCode;
  17107. responProce.UserName = semiCheckDefect.DefectUserName;
  17108. responProce.Remarks = semiCheckDefect.Remarks;
  17109. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  17110. #endregion
  17111. // 保存责任工序
  17112. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  17113. // 保存失败
  17114. if (!string.IsNullOrEmpty(errMsg))
  17115. {
  17116. return errMsg;
  17117. }
  17118. #endregion
  17119. }
  17120. }
  17121. #endregion
  17122. }
  17123. }
  17124. #endregion
  17125. #region 条码是不合格 删除在产产品数据
  17126. if (entity.SemiCheckType == "2") //编辑时不合格
  17127. {
  17128. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  17129. sql = @"update TP_PM_InProduction set GoodsLevelID= (
  17130. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  17131. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,IsReworkFlag=0,
  17132. updateuserid=:updateuserid
  17133. where barcode=:barcode";
  17134. OracleParameter[] oracleParameters = new OracleParameter[] {
  17135. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  17136. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  17137. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  17138. new OracleParameter(":barcode",entity.BarCode),
  17139. //new OracleParameter(":createuserid",sUserInfo.UserID),
  17140. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17141. new OracleParameter(":accountid",sUserInfo.AccountID),
  17142. };
  17143. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17144. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  17145. string sqlInsert = @"insert into TP_PM_InProductionTrash
  17146. (
  17147. BarCode,
  17148. ProductionLineID,
  17149. ProductionLineCode,
  17150. ProductionLineName,
  17151. ProcedureModel,
  17152. ModelType,
  17153. DefectFlag,
  17154. ReworkProcedureID,
  17155. IsPublicBody,
  17156. IsReFire,
  17157. GoodsLevelID,
  17158. GoodsLevelTypeID,
  17159. GoodsID,
  17160. GoodsCode,
  17161. GoodsName,
  17162. UserID,
  17163. GroutingDailyID,
  17164. GroutingDailyDetailID,
  17165. GroutingDate,
  17166. GroutingLineID,
  17167. GroutingLineCode,
  17168. GroutingLineName,
  17169. GMouldTypeID,
  17170. CanManyTimes,
  17171. GroutingLineDetailID,
  17172. GroutingMouldCode,
  17173. MouldCode,
  17174. GroutingUserID,
  17175. GroutingUserCode,
  17176. GroutingNum,
  17177. Remarks,
  17178. KilnID,
  17179. KilnCode,
  17180. KilnName,
  17181. KilnCarID,
  17182. KilnCarCode,
  17183. KilnCarName,
  17184. KilnCarBatchNo,
  17185. KilnCarPosition,
  17186. AccountID,
  17187. ValueFlag,
  17188. CreateUserID,
  17189. UpdateUserID,
  17190. SpecialRepairflag,
  17191. FlowProcedureID,
  17192. FlowProcedureTime,
  17193. ProcedureID,
  17194. ProcedureTime,
  17195. ProductionDataID,
  17196. logoid, SEMICHECKID
  17197. )
  17198. select
  17199. BarCode,
  17200. ProductionLineID,
  17201. ProductionLineCode,
  17202. ProductionLineName,
  17203. ProcedureModel,
  17204. ModelType,
  17205. DefectFlag,
  17206. ReworkProcedureID,
  17207. IsPublicBody,
  17208. IsReFire,
  17209. -- GoodsLevelID,
  17210. --GoodsLevelTypeID,
  17211. (
  17212. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  17213. )
  17214. ,13,
  17215. GoodsID,
  17216. GoodsCode,
  17217. GoodsName,
  17218. UserID,
  17219. GroutingDailyID,
  17220. GroutingDailyDetailID,
  17221. GroutingDate,
  17222. GroutingLineID,
  17223. GroutingLineCode,
  17224. GroutingLineName,
  17225. GMouldTypeID,
  17226. CanManyTimes,
  17227. GroutingLineDetailID,
  17228. GroutingMouldCode,
  17229. MouldCode,
  17230. GroutingUserID,
  17231. GroutingUserCode,
  17232. GroutingNum,
  17233. Remarks,
  17234. KilnID,
  17235. KilnCode,
  17236. KilnName,
  17237. KilnCarID,
  17238. KilnCarCode,
  17239. KilnCarName,
  17240. KilnCarBatchNo,
  17241. KilnCarPosition,
  17242. AccountID,
  17243. ValueFlag,
  17244. :CreateUserID,
  17245. :UpdateUserID,
  17246. SpecialRepairflag,
  17247. FlowProcedureID,
  17248. FlowProcedureTime,
  17249. FlowProcedureID,
  17250. ProcedureTime,
  17251. ProductionDataID,
  17252. logoid,
  17253. :SemiCheckID
  17254. from TP_PM_InProduction
  17255. where barcode=:barcode
  17256. ";
  17257. oracleParameters = new OracleParameter[] {
  17258. new OracleParameter(":barcode",entity.BarCode),
  17259. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  17260. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  17261. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  17262. new OracleParameter(":accountid",sUserInfo.AccountID),
  17263. };
  17264. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  17265. // 删除在产数据
  17266. sql = "delete tp_pm_inproduction where barcode = :barcode";
  17267. oracleParameters = new OracleParameter[] {
  17268. new OracleParameter(":barcode",entity.BarCode),
  17269. };
  17270. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17271. }
  17272. else if (entity.SemiCheckType == "1") //返工
  17273. {
  17274. sql = @"update TP_PM_InProduction set IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  17275. where barcode=:barcode";
  17276. OracleParameter[] oracleParameters = new OracleParameter[] {
  17277. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  17278. new OracleParameter(":barcode",entity.BarCode),
  17279. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17280. };
  17281. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17282. }
  17283. else if (entity.SemiCheckType == "0") //正常
  17284. {
  17285. sql = @"update TP_PM_InProduction set IsReworkFlag=0,SemiCheckID=null,updateuserid=:updateuserid
  17286. where barcode=:barcode";
  17287. OracleParameter[] oracleParameters = new OracleParameter[] {
  17288. new OracleParameter(":barcode",entity.BarCode),
  17289. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17290. };
  17291. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17292. }
  17293. #endregion
  17294. }
  17295. else if (entity.SemiCheckEditType == 3) //编辑不合格
  17296. {
  17297. #region 校验条码有效性
  17298. errMsg = CheckBarcodeByEditNoPass(oracleTrConn, barcode, sUserInfo);
  17299. if (!string.IsNullOrEmpty(errMsg))
  17300. {
  17301. return errMsg;
  17302. }
  17303. #endregion
  17304. #region 删除当前半检数据
  17305. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  17306. if (!string.IsNullOrEmpty(errMsg))
  17307. {
  17308. return errMsg;
  17309. }
  17310. #endregion
  17311. if (entity.SemiCheckType != "0") //正常
  17312. {
  17313. #region 添加半检数据
  17314. entity.SemiCheckID = Convert.ToInt32(idStr);
  17315. errMsg = AddSemiCheckDataTrash(oracleTrConn, entity, sUserInfo);
  17316. if (!string.IsNullOrEmpty(errMsg))
  17317. {
  17318. return errMsg;
  17319. }
  17320. #endregion
  17321. }
  17322. #region 条码是不合格 删除在产产品数据
  17323. OracleParameter[] spParameters = null;
  17324. int spResult = 0;
  17325. if (entity.SemiCheckType == "2") //编辑时不合格
  17326. {
  17327. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  17328. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  17329. " from TP_PM_ScrapProduct sp\n" +
  17330. " where sp.barcode = :barcode\n" +
  17331. " and sp.auditstatus = 1\n" +
  17332. " and sp.valueflag = '1'\n" +
  17333. " and sp.scraptype = '2'";
  17334. spParameters = new OracleParameter[] {
  17335. new OracleParameter(":barcode",entity.BarCode),
  17336. };
  17337. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  17338. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  17339. spParameters = new OracleParameter[] {
  17340. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17341. new OracleParameter(":scrapproductid",scrapproductid),
  17342. };
  17343. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17344. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  17345. //oracleParameters = new OracleParameter[] {
  17346. // new OracleParameter(":barcode",entity.BarCode),
  17347. //};
  17348. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17349. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  17350. //OracleParameter[] oracleParameters = new OracleParameter[] {
  17351. // new OracleParameter(":barcode",entity.BarCode),
  17352. //};
  17353. //int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17354. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  17355. //oracleParameters = new OracleParameter[] {
  17356. // new OracleParameter(":barcode",entity.BarCode),
  17357. //};
  17358. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17359. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  17360. ////oracleParameters = new OracleParameter[] {
  17361. //// new OracleParameter(":barcode",entity.BarCode),
  17362. ////};
  17363. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17364. #endregion
  17365. #region 2.修改在产回收站表中的数据(产品等级【13不合格】,半检登记ID=新记录的半检登记ID)。
  17366. sql = @"update TP_PM_InProductionTrash set GoodsLevelID= (
  17367. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  17368. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID where barcode=:barcode";
  17369. OracleParameter[] oracleParameters = new OracleParameter[] {
  17370. new OracleParameter(":barcode",entity.BarCode),
  17371. new OracleParameter(":accountid",sUserInfo.AccountID),
  17372. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  17373. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  17374. };
  17375. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17376. #endregion
  17377. #region 条码有缺陷
  17378. #region 是次品 添加废弃产品
  17379. string ResponProcedureidStr = "";
  17380. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  17381. {
  17382. #region 添加废弃产品
  17383. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  17384. #region 属性赋值
  17385. scrapProduct.BarCode = entity.BarCode;
  17386. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  17387. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  17388. scrapProduct.ScrapDate = accountDate;
  17389. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  17390. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  17391. scrapProduct.Auditor = sUserInfo.UserID;
  17392. scrapProduct.AuditlDate = accountDate;
  17393. scrapProduct.AccountDate = accountDate;
  17394. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  17395. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  17396. if (ds != null && ds.Tables[0].Rows.Count > 0)
  17397. {
  17398. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  17399. }
  17400. scrapProduct.GoodsLevelTypeID = 13;
  17401. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  17402. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  17403. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  17404. // 查询新插入的废弃ID
  17405. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  17406. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  17407. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  17408. scrapProduct.ScrapType = 2;
  17409. #endregion
  17410. // 保存报废
  17411. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  17412. // 保存失败
  17413. if (!string.IsNullOrEmpty(errMsg))
  17414. {
  17415. return errMsg;
  17416. }
  17417. #endregion
  17418. }
  17419. #endregion
  17420. // 存在缺陷 插入缺陷表
  17421. if (entity.SemiCheckDefects != null)
  17422. {
  17423. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  17424. {
  17425. #region 保存缺陷
  17426. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  17427. semiCheckDefect.ScrapResponFlag
  17428. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  17429. // 保存缺陷
  17430. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  17431. if (!string.IsNullOrEmpty(errMsg))
  17432. {
  17433. return errMsg;
  17434. }
  17435. #endregion
  17436. #region 是不合格 添加废弃责任工序
  17437. if (entity.SemiCheckType == "2")
  17438. {
  17439. //if (semiCheckDefect.DefectProcedureID != null)
  17440. {
  17441. #region 添加责任工序
  17442. ResponProcedureEntity responProce = new ResponProcedureEntity();
  17443. // 取生产线及生产数据ID
  17444. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProductionTrash where barcode=:barcode";
  17445. oracleParameters = new OracleParameter[] {
  17446. new OracleParameter(":barcode",entity.BarCode),
  17447. };
  17448. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  17449. if (ds != null && ds.Tables[0].Rows.Count > 0)
  17450. {
  17451. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  17452. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  17453. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  17454. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  17455. }
  17456. //获取生产线及生产数据ID end
  17457. #region 属性赋值
  17458. responProce.BarCode = entity.BarCode;
  17459. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  17460. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  17461. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  17462. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  17463. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  17464. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  17465. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  17466. responProce.UserID = semiCheckDefect.DefectUserID;
  17467. responProce.UserCode = semiCheckDefect.DefectUserCode;
  17468. responProce.UserName = semiCheckDefect.DefectUserName;
  17469. responProce.Remarks = semiCheckDefect.Remarks;
  17470. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  17471. #endregion
  17472. // 保存责任工序
  17473. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  17474. // 保存失败
  17475. if (!string.IsNullOrEmpty(errMsg))
  17476. {
  17477. return errMsg;
  17478. }
  17479. #endregion
  17480. }
  17481. }
  17482. #endregion
  17483. }
  17484. }
  17485. #endregion
  17486. }
  17487. else if (entity.SemiCheckType == "1") //返工
  17488. {
  17489. #region 1.从在产回收站中把数据恢复到在产表中。
  17490. string sqlInsert = @"insert into TP_PM_InProduction
  17491. (
  17492. BarCode,
  17493. ProductionLineID,
  17494. ProductionLineCode,
  17495. ProductionLineName,
  17496. ProcedureModel,
  17497. ModelType,
  17498. DefectFlag,
  17499. ReworkProcedureID,
  17500. IsPublicBody,
  17501. IsReFire,
  17502. GoodsLevelID,
  17503. GoodsLevelTypeID,
  17504. GoodsID,
  17505. GoodsCode,
  17506. GoodsName,
  17507. UserID,
  17508. GroutingDailyID,
  17509. GroutingDailyDetailID,
  17510. GroutingDate,
  17511. GroutingLineID,
  17512. GroutingLineCode,
  17513. GroutingLineName,
  17514. GMouldTypeID,
  17515. CanManyTimes,
  17516. GroutingLineDetailID,
  17517. GroutingMouldCode,
  17518. MouldCode,
  17519. GroutingUserID,
  17520. GroutingUserCode,
  17521. GroutingNum,
  17522. Remarks,
  17523. KilnID,
  17524. KilnCode,
  17525. KilnName,
  17526. KilnCarID,
  17527. KilnCarCode,
  17528. KilnCarName,
  17529. KilnCarBatchNo,
  17530. KilnCarPosition,
  17531. AccountID,
  17532. ValueFlag,
  17533. CreateUserID,
  17534. UpdateUserID,
  17535. SpecialRepairflag,
  17536. FlowProcedureID,
  17537. FlowProcedureTime,
  17538. ProcedureID,
  17539. ProcedureTime,
  17540. ProductionDataID,
  17541. logoid,
  17542. IsReworkFlag,
  17543. SemiCheckID
  17544. )
  17545. select
  17546. BarCode,
  17547. ProductionLineID,
  17548. ProductionLineCode,
  17549. ProductionLineName,
  17550. ProcedureModel,
  17551. ModelType,
  17552. DefectFlag,
  17553. ReworkProcedureID,
  17554. IsPublicBody,
  17555. IsReFire,
  17556. null,
  17557. null,
  17558. GoodsID,
  17559. GoodsCode,
  17560. GoodsName,
  17561. UserID,
  17562. GroutingDailyID,
  17563. GroutingDailyDetailID,
  17564. GroutingDate,
  17565. GroutingLineID,
  17566. GroutingLineCode,
  17567. GroutingLineName,
  17568. GMouldTypeID,
  17569. CanManyTimes,
  17570. GroutingLineDetailID,
  17571. GroutingMouldCode,
  17572. MouldCode,
  17573. GroutingUserID,
  17574. GroutingUserCode,
  17575. GroutingNum,
  17576. Remarks,
  17577. KilnID,
  17578. KilnCode,
  17579. KilnName,
  17580. KilnCarID,
  17581. KilnCarCode,
  17582. KilnCarName,
  17583. KilnCarBatchNo,
  17584. KilnCarPosition,
  17585. AccountID,
  17586. ValueFlag,
  17587. :CreateUserID,
  17588. :UpdateUserID,
  17589. SpecialRepairflag,
  17590. FlowProcedureID,
  17591. FlowProcedureTime,
  17592. FlowProcedureID,
  17593. ProcedureTime,
  17594. ProductionDataID,
  17595. logoid,
  17596. 1,
  17597. :SemiCheckID
  17598. from TP_PM_InProductionTrash
  17599. where barcode=:barcode
  17600. ";
  17601. OracleParameter[] oracleParameters = new OracleParameter[] {
  17602. new OracleParameter(":barcode",entity.BarCode),
  17603. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  17604. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  17605. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  17606. };
  17607. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  17608. #endregion
  17609. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  17610. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  17611. " from TP_PM_ScrapProduct sp\n" +
  17612. " where sp.barcode = :barcode\n" +
  17613. " and sp.auditstatus = 1\n" +
  17614. " and sp.valueflag = '1'\n" +
  17615. " and sp.scraptype = '2'";
  17616. spParameters = new OracleParameter[] {
  17617. new OracleParameter(":barcode",entity.BarCode),
  17618. };
  17619. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  17620. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  17621. spParameters = new OracleParameter[] {
  17622. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17623. new OracleParameter(":scrapproductid",scrapproductid),
  17624. };
  17625. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17626. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  17627. //oracleParameters = new OracleParameter[] {
  17628. // new OracleParameter(":barcode",entity.BarCode),
  17629. //};
  17630. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17631. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  17632. //oracleParameters = new OracleParameter[] {
  17633. // new OracleParameter(":barcode",entity.BarCode),
  17634. //};
  17635. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17636. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  17637. //oracleParameters = new OracleParameter[] {
  17638. // new OracleParameter(":barcode",entity.BarCode),
  17639. //};
  17640. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17641. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  17642. ////oracleParameters = new OracleParameter[] {
  17643. //// new OracleParameter(":barcode",entity.BarCode),
  17644. ////};
  17645. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17646. #endregion
  17647. #region 3.删除在产产品数据
  17648. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  17649. oracleParameters = new OracleParameter[] {
  17650. new OracleParameter(":barcode",entity.BarCode),
  17651. };
  17652. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17653. #endregion
  17654. #region 4.更新半检数据产品分级
  17655. sql = "update TP_PM_SemiCheck set GoodsLevelID=null,GoodsLevelTypeID=null where SemiCheckID=:SemiCheckID";
  17656. oracleParameters = new OracleParameter[] {
  17657. new OracleParameter(":SemiCheckID",idStr),
  17658. };
  17659. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17660. #endregion
  17661. #region 存在缺陷 插入缺陷表
  17662. if (entity.SemiCheckDefects != null)
  17663. {
  17664. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  17665. {
  17666. #region 保存缺陷
  17667. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  17668. semiCheckDefect.ScrapResponFlag
  17669. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  17670. // 保存缺陷
  17671. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  17672. if (!string.IsNullOrEmpty(errMsg))
  17673. {
  17674. return errMsg;
  17675. }
  17676. #endregion
  17677. }
  17678. }
  17679. #endregion
  17680. }
  17681. else if (entity.SemiCheckType == "0") //正常
  17682. {
  17683. #region 1.从在产回收站中把数据恢复到在产表中。
  17684. string sqlInsert = @"insert into TP_PM_InProduction
  17685. (
  17686. BarCode,
  17687. ProductionLineID,
  17688. ProductionLineCode,
  17689. ProductionLineName,
  17690. ProcedureModel,
  17691. ModelType,
  17692. DefectFlag,
  17693. ReworkProcedureID,
  17694. IsPublicBody,
  17695. IsReFire,
  17696. GoodsLevelID,
  17697. GoodsLevelTypeID,
  17698. GoodsID,
  17699. GoodsCode,
  17700. GoodsName,
  17701. UserID,
  17702. GroutingDailyID,
  17703. GroutingDailyDetailID,
  17704. GroutingDate,
  17705. GroutingLineID,
  17706. GroutingLineCode,
  17707. GroutingLineName,
  17708. GMouldTypeID,
  17709. CanManyTimes,
  17710. GroutingLineDetailID,
  17711. GroutingMouldCode,
  17712. MouldCode,
  17713. GroutingUserID,
  17714. GroutingUserCode,
  17715. GroutingNum,
  17716. Remarks,
  17717. KilnID,
  17718. KilnCode,
  17719. KilnName,
  17720. KilnCarID,
  17721. KilnCarCode,
  17722. KilnCarName,
  17723. KilnCarBatchNo,
  17724. KilnCarPosition,
  17725. AccountID,
  17726. ValueFlag,
  17727. CreateUserID,
  17728. UpdateUserID,
  17729. SpecialRepairflag,
  17730. FlowProcedureID,
  17731. FlowProcedureTime,
  17732. ProcedureID,
  17733. ProcedureTime,
  17734. ProductionDataID,
  17735. logoid,
  17736. IsReworkFlag,
  17737. SemiCheckID
  17738. )
  17739. select
  17740. BarCode,
  17741. ProductionLineID,
  17742. ProductionLineCode,
  17743. ProductionLineName,
  17744. ProcedureModel,
  17745. ModelType,
  17746. DefectFlag,
  17747. ReworkProcedureID,
  17748. IsPublicBody,
  17749. IsReFire,
  17750. null,
  17751. null,
  17752. GoodsID,
  17753. GoodsCode,
  17754. GoodsName,
  17755. UserID,
  17756. GroutingDailyID,
  17757. GroutingDailyDetailID,
  17758. GroutingDate,
  17759. GroutingLineID,
  17760. GroutingLineCode,
  17761. GroutingLineName,
  17762. GMouldTypeID,
  17763. CanManyTimes,
  17764. GroutingLineDetailID,
  17765. GroutingMouldCode,
  17766. MouldCode,
  17767. GroutingUserID,
  17768. GroutingUserCode,
  17769. GroutingNum,
  17770. Remarks,
  17771. KilnID,
  17772. KilnCode,
  17773. KilnName,
  17774. KilnCarID,
  17775. KilnCarCode,
  17776. KilnCarName,
  17777. KilnCarBatchNo,
  17778. KilnCarPosition,
  17779. AccountID,
  17780. ValueFlag,
  17781. :CreateUserID,
  17782. :UpdateUserID,
  17783. SpecialRepairflag,
  17784. FlowProcedureID,
  17785. FlowProcedureTime,
  17786. FlowProcedureID,
  17787. ProcedureTime,
  17788. ProductionDataID,
  17789. logoid,
  17790. 0,
  17791. null
  17792. from TP_PM_InProductionTrash
  17793. where barcode=:barcode
  17794. ";
  17795. OracleParameter[] oracleParameters = new OracleParameter[] {
  17796. new OracleParameter(":barcode",entity.BarCode),
  17797. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  17798. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  17799. };
  17800. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  17801. #endregion
  17802. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  17803. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  17804. " from TP_PM_ScrapProduct sp\n" +
  17805. " where sp.barcode = :barcode\n" +
  17806. " and sp.auditstatus = 1\n" +
  17807. " and sp.valueflag = '1'\n" +
  17808. " and sp.scraptype = '2'";
  17809. spParameters = new OracleParameter[] {
  17810. new OracleParameter(":barcode",entity.BarCode),
  17811. };
  17812. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  17813. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  17814. spParameters = new OracleParameter[] {
  17815. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17816. new OracleParameter(":scrapproductid",scrapproductid),
  17817. };
  17818. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17819. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  17820. //oracleParameters = new OracleParameter[] {
  17821. // new OracleParameter(":barcode",entity.BarCode),
  17822. //};
  17823. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  17824. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  17825. //oracleParameters = new OracleParameter[] {
  17826. // new OracleParameter(":barcode",entity.BarCode),
  17827. //};
  17828. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17829. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  17830. //oracleParameters = new OracleParameter[] {
  17831. // new OracleParameter(":barcode",entity.BarCode),
  17832. //};
  17833. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17834. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  17835. ////oracleParameters = new OracleParameter[] {
  17836. //// new OracleParameter(":barcode",entity.BarCode),
  17837. ////};
  17838. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17839. #endregion
  17840. #region 3.删除在产回收站产品数据
  17841. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  17842. oracleParameters = new OracleParameter[] {
  17843. new OracleParameter(":barcode",entity.BarCode),
  17844. };
  17845. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17846. #endregion
  17847. }
  17848. #endregion
  17849. }
  17850. return errMsg;
  17851. }
  17852. catch (Exception ex)
  17853. {
  17854. throw ex;
  17855. }
  17856. }
  17857. /// <summary>
  17858. /// 校验条码有效(新建)
  17859. /// </summary>
  17860. /// <param name="oracleTrConn">连接对象</param>
  17861. /// <param name="barcode">条码</param>
  17862. /// <param name="sUserInfo">登录用户信息</param>
  17863. /// <returns>string</returns>
  17864. /// <remarks>
  17865. /// 王鑫 2016.06.27 新建
  17866. /// </remarks>
  17867. private static string CheckBarcodeByNew(IDBTransaction oracleTrConn,
  17868. string barcode,
  17869. SUserInfo sUserInfo
  17870. )
  17871. {
  17872. try
  17873. {
  17874. OracleParameter[] paras = new OracleParameter[]{
  17875. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17876. };
  17877. // 重复登记的问题 for update
  17878. string sql = @"
  17879. select InScrapFlag,
  17880. KilnCarID,
  17881. KilnCarName,
  17882. IsReworkFlag,
  17883. SemiCheckID from TP_PM_InProduction where barcode=:barcode for update
  17884. ";
  17885. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17886. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  17887. {
  17888. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  17889. {
  17890. return "条码[" + barcode + "]已经报损待审批";
  17891. }
  17892. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  17893. {
  17894. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  17895. }
  17896. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  17897. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  17898. {
  17899. return "条码[" + barcode + "]已经半检返工中";
  17900. }
  17901. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  17902. {
  17903. return "条码[" + barcode + "]已经半检返修中";
  17904. }
  17905. }
  17906. else
  17907. {
  17908. return "条码[" + barcode + "]不在在产流程";
  17909. }
  17910. return null;
  17911. }
  17912. catch (Exception ex)
  17913. {
  17914. throw ex;
  17915. }
  17916. }
  17917. /// <summary>
  17918. /// 校验条码有效(编辑返工)
  17919. /// </summary>
  17920. /// <param name="oracleTrConn">连接对象</param>
  17921. /// <param name="barcode">条码</param>
  17922. /// <param name="sUserInfo">登录用户信息</param>
  17923. /// <returns>string</returns>
  17924. /// <remarks>
  17925. /// 王鑫 2016.06.27 新建
  17926. /// </remarks>
  17927. private static string CheckBarcodeByEditRework(IDBTransaction oracleTrConn,
  17928. string barcode,
  17929. SUserInfo sUserInfo
  17930. )
  17931. {
  17932. try
  17933. {
  17934. OracleParameter[] paras = new OracleParameter[]{
  17935. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17936. };
  17937. // 重复登记的问题 for update
  17938. string sql = @"
  17939. select InScrapFlag,
  17940. KilnCarID,
  17941. KilnCarName,
  17942. IsReworkFlag,
  17943. SemiCheckID from TP_PM_InProduction where barcode=:barcode for update
  17944. ";
  17945. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17946. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  17947. {
  17948. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  17949. {
  17950. return "条码[" + barcode + "]已经报损待审批";
  17951. }
  17952. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  17953. {
  17954. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  17955. }
  17956. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  17957. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "1")
  17958. {
  17959. return "条码[" + barcode + "]不在返工中";
  17960. }
  17961. }
  17962. else
  17963. {
  17964. return "条码[" + barcode + "]不在在产流程";
  17965. }
  17966. return null;
  17967. }
  17968. catch (Exception ex)
  17969. {
  17970. throw ex;
  17971. }
  17972. }
  17973. /// <summary>
  17974. /// 校验条码有效(编辑不合格)
  17975. /// </summary>
  17976. /// <param name="oracleTrConn">连接对象</param>
  17977. /// <param name="barcode">条码</param>
  17978. /// <param name="sUserInfo">登录用户信息</param>
  17979. /// <returns>string</returns>
  17980. /// <remarks>
  17981. /// 王鑫 2016.06.27 新建
  17982. /// </remarks>
  17983. private static string CheckBarcodeByEditNoPass(IDBTransaction oracleTrConn,
  17984. string barcode,
  17985. SUserInfo sUserInfo
  17986. )
  17987. {
  17988. try
  17989. {
  17990. OracleParameter[] paras = new OracleParameter[]{
  17991. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17992. };
  17993. // 重复登记的问题 for update
  17994. string sql = @" select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=13 for update";
  17995. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17996. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  17997. {
  17998. return "条码[" + barcode + "]不在在产回收站中";
  17999. }
  18000. return null;
  18001. }
  18002. catch (Exception ex)
  18003. {
  18004. throw ex;
  18005. }
  18006. }
  18007. /// <summary>
  18008. /// 添加半成品检验数据
  18009. /// </summary>
  18010. /// <param name="oracleTrConn">连接对象</param>
  18011. /// <param name="accountDate">账务日期</param>
  18012. /// <param name="productionData">生产数据</param>
  18013. /// <param name="sUserInfo">用户基本信息</param>
  18014. /// <returns>string</returns>
  18015. /// <remarks>
  18016. /// 陈冰 2014.09.18 新建
  18017. /// </remarks>
  18018. private static string AddSemiCheckData(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  18019. {
  18020. #region SQL
  18021. string sql = "insert into tp_pm_semicheck"
  18022. + " (semicheckid,"
  18023. + " barcode,"
  18024. + " productionlineid,"
  18025. + " procedureid,"
  18026. + " proceduretime,"
  18027. + " proceduremodel,"
  18028. + " modeltype,"
  18029. + " organizationid,"
  18030. + " goodsid,"
  18031. + " goodscode,"
  18032. + " userid,"
  18033. + " usercode,"
  18034. + " productiondataid,"
  18035. + " logoid,"
  18036. + " ispublicbody,"
  18037. + " specialrepairflag,"
  18038. + " goodslevelid,"
  18039. + " goodsleveltypeid,"
  18040. + " groutingdailyid,"
  18041. + " groutingdailydetailid,"
  18042. + " groutinglineid,"
  18043. + " groutinglinecode,"
  18044. + " groutinglinename,"
  18045. + " gmouldtypeid,"
  18046. + " canmanytimes,"
  18047. + " groutinglinedetailid,"
  18048. + " groutingdate,"
  18049. + " groutingmouldcode,"
  18050. + " mouldcode,"
  18051. + " groutinguserid,"
  18052. + " groutingusercode,"
  18053. + " groutingnum,"
  18054. + " semichecktype,"
  18055. + " semicheckuserID,"
  18056. + " semicheckusercode,"
  18057. + " semichecktime,"
  18058. + " remarks,"
  18059. + " accountid,"
  18060. + " createuserid,"
  18061. + " updateuserid,"
  18062. + " reworkprocedureid,"
  18063. + " reworkprocedurecode,"
  18064. + " reworkuserid,"
  18065. + " reworkusercode"
  18066. + ")"
  18067. + " select"
  18068. + " :semicheckid,"
  18069. + " TP_PM_InProduction.barcode,"
  18070. + " TP_PM_InProduction.productionlineid,"
  18071. + " TP_PM_InProduction.procedureid,"
  18072. + " TP_PM_InProduction.proceduretime,"
  18073. + " TP_PM_InProduction.proceduremodel,"
  18074. + " TP_PM_InProduction.modeltype,"
  18075. + " tp_pc_procedure.organizationid,"
  18076. + " TP_PM_InProduction.goodsid,"
  18077. + " TP_PM_InProduction.goodscode,"
  18078. + " TP_PM_InProduction.userid,"
  18079. + " tp_mst_user.usercode,"
  18080. + " TP_PM_InProduction.productiondataid,"
  18081. + " TP_PM_InProduction.logoid,"
  18082. + " TP_PM_InProduction.ispublicbody,"
  18083. + " TP_PM_InProduction.specialrepairflag,"
  18084. + " TP_PM_InProduction.goodslevelid,"
  18085. + " TP_PM_InProduction.goodsleveltypeid,"
  18086. + " TP_PM_InProduction.groutingdailyid,"
  18087. + " TP_PM_InProduction.groutingdailydetailid,"
  18088. + " TP_PM_InProduction.groutinglineid,"
  18089. + " TP_PM_InProduction.groutinglinecode,"
  18090. + " TP_PM_InProduction.groutinglinename,"
  18091. + " TP_PM_InProduction.gmouldtypeid,"
  18092. + " TP_PM_InProduction.canmanytimes,"
  18093. + " TP_PM_InProduction.groutinglinedetailid,"
  18094. + " TP_PM_InProduction.groutingdate,"
  18095. + " TP_PM_InProduction.groutingmouldcode,"
  18096. + " TP_PM_InProduction.mouldcode,"
  18097. + " TP_PM_InProduction.groutinguserid,"
  18098. + " TP_PM_InProduction.groutingusercode,"
  18099. + " TP_PM_InProduction.groutingnum,"
  18100. + " :semichecktype,"
  18101. + " :semicheckuserID,"
  18102. + " :semicheckusercode,"
  18103. + " sysdate,"
  18104. + " :remarks,"
  18105. + " :accountid,"
  18106. + " :createuserid,"
  18107. + " :updateuserid,"
  18108. + " :reworkprocedureid,"
  18109. + " :reworkprocedurecode,"
  18110. + " :reworkuserid,"
  18111. + " :reworkusercode"
  18112. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  18113. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  18114. + " where TP_PM_InProduction.barcode=:barcode";
  18115. #endregion
  18116. #region OracleParameter
  18117. OracleParameter[] paras = new OracleParameter[] {
  18118. new OracleParameter(":semicheckid",entity.SemiCheckID),
  18119. new OracleParameter(":semichecktype",entity.SemiCheckType),
  18120. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  18121. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  18122. new OracleParameter(":remarks",entity.Remarks),
  18123. new OracleParameter(":accountid",sUserInfo.AccountID),
  18124. new OracleParameter(":createuserid",sUserInfo.UserID),
  18125. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18126. new OracleParameter(":barcode",entity.BarCode),
  18127. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  18128. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  18129. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  18130. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  18131. };
  18132. #endregion
  18133. foreach (OracleParameter para in paras)
  18134. {
  18135. if (string.IsNullOrEmpty(para.Value + ""))
  18136. {
  18137. para.Value = DBNull.Value;
  18138. }
  18139. }
  18140. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  18141. // 失败
  18142. if (result != Constant.INT_IS_ONE)
  18143. {
  18144. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18145. }
  18146. // 成功返回null
  18147. return null;
  18148. }
  18149. /// <summary>
  18150. /// 添加半成品检验数据(不合格)
  18151. /// </summary>
  18152. /// <param name="oracleTrConn">连接对象</param>
  18153. /// <param name="accountDate">账务日期</param>
  18154. /// <param name="productionData">生产数据</param>
  18155. /// <param name="sUserInfo">用户基本信息</param>
  18156. /// <returns>string</returns>
  18157. /// <remarks>
  18158. /// 陈冰 2014.09.18 新建
  18159. /// </remarks>
  18160. private static string AddSemiCheckDataNoPass(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  18161. {
  18162. #region SQL
  18163. string sql = "insert into tp_pm_semicheck"
  18164. + " (semicheckid,"
  18165. + " barcode,"
  18166. + " productionlineid,"
  18167. + " procedureid,"
  18168. + " proceduretime,"
  18169. + " proceduremodel,"
  18170. + " modeltype,"
  18171. + " organizationid,"
  18172. + " goodsid,"
  18173. + " goodscode,"
  18174. + " userid,"
  18175. + " usercode,"
  18176. + " productiondataid,"
  18177. + " logoid,"
  18178. + " ispublicbody,"
  18179. + " specialrepairflag,"
  18180. + " goodslevelid,"
  18181. + " goodsleveltypeid,"
  18182. + " groutingdailyid,"
  18183. + " groutingdailydetailid,"
  18184. + " groutinglineid,"
  18185. + " groutinglinecode,"
  18186. + " groutinglinename,"
  18187. + " gmouldtypeid,"
  18188. + " canmanytimes,"
  18189. + " groutinglinedetailid,"
  18190. + " groutingdate,"
  18191. + " groutingmouldcode,"
  18192. + " mouldcode,"
  18193. + " groutinguserid,"
  18194. + " groutingusercode,"
  18195. + " groutingnum,"
  18196. + " semichecktype,"
  18197. + " semicheckuserID,"
  18198. + " semicheckusercode,"
  18199. + " semichecktime,"
  18200. + " remarks,"
  18201. + " accountid,"
  18202. + " createuserid,"
  18203. + " updateuserid,"
  18204. + " reworkprocedureid,"
  18205. + " reworkprocedurecode,"
  18206. + " reworkuserid,"
  18207. + " reworkusercode"
  18208. + ")"
  18209. + " select"
  18210. + " :semicheckid,"
  18211. + " TP_PM_InProduction.barcode,"
  18212. + " TP_PM_InProduction.productionlineid,"
  18213. + " TP_PM_InProduction.procedureid,"
  18214. + " TP_PM_InProduction.proceduretime,"
  18215. + " TP_PM_InProduction.proceduremodel,"
  18216. + " TP_PM_InProduction.modeltype,"
  18217. + " tp_pc_procedure.organizationid,"
  18218. + " TP_PM_InProduction.goodsid,"
  18219. + " TP_PM_InProduction.goodscode,"
  18220. + " TP_PM_InProduction.userid,"
  18221. + " tp_mst_user.usercode,"
  18222. + " TP_PM_InProduction.productiondataid,"
  18223. + " TP_PM_InProduction.logoid,"
  18224. + " TP_PM_InProduction.ispublicbody,"
  18225. + " TP_PM_InProduction.specialrepairflag,"
  18226. + " (select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid),"
  18227. + " 13,"
  18228. + " TP_PM_InProduction.groutingdailyid,"
  18229. + " TP_PM_InProduction.groutingdailydetailid,"
  18230. + " TP_PM_InProduction.groutinglineid,"
  18231. + " TP_PM_InProduction.groutinglinecode,"
  18232. + " TP_PM_InProduction.groutinglinename,"
  18233. + " TP_PM_InProduction.gmouldtypeid,"
  18234. + " TP_PM_InProduction.canmanytimes,"
  18235. + " TP_PM_InProduction.groutinglinedetailid,"
  18236. + " TP_PM_InProduction.groutingdate,"
  18237. + " TP_PM_InProduction.groutingmouldcode,"
  18238. + " TP_PM_InProduction.mouldcode,"
  18239. + " TP_PM_InProduction.groutinguserid,"
  18240. + " TP_PM_InProduction.groutingusercode,"
  18241. + " TP_PM_InProduction.groutingnum,"
  18242. + " :semichecktype,"
  18243. + " :semicheckuserID,"
  18244. + " :semicheckusercode,"
  18245. + " sysdate,"
  18246. + " :remarks,"
  18247. + " :accountid,"
  18248. + " :createuserid,"
  18249. + " :updateuserid,"
  18250. + " :reworkprocedureid,"
  18251. + " :reworkprocedurecode,"
  18252. + " :reworkuserid,"
  18253. + " :reworkusercode"
  18254. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  18255. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  18256. + " where TP_PM_InProduction.barcode=:barcode";
  18257. #endregion
  18258. #region OracleParameter
  18259. OracleParameter[] paras = new OracleParameter[] {
  18260. new OracleParameter(":semicheckid",entity.SemiCheckID),
  18261. new OracleParameter(":semichecktype",entity.SemiCheckType),
  18262. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  18263. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  18264. new OracleParameter(":remarks",entity.Remarks),
  18265. new OracleParameter(":accountid",sUserInfo.AccountID),
  18266. new OracleParameter(":createuserid",sUserInfo.UserID),
  18267. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18268. new OracleParameter(":accountid",sUserInfo.AccountID),
  18269. new OracleParameter(":barcode",entity.BarCode),
  18270. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  18271. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  18272. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  18273. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  18274. };
  18275. #endregion
  18276. foreach (OracleParameter para in paras)
  18277. {
  18278. if (string.IsNullOrEmpty(para.Value + ""))
  18279. {
  18280. para.Value = DBNull.Value;
  18281. }
  18282. }
  18283. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  18284. // 失败
  18285. if (result != Constant.INT_IS_ONE)
  18286. {
  18287. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18288. }
  18289. // 成功返回null
  18290. return null;
  18291. }
  18292. /// <summary>
  18293. /// 添加半成品检验数据
  18294. /// </summary>
  18295. /// <param name="oracleTrConn">连接对象</param>
  18296. /// <param name="accountDate">账务日期</param>
  18297. /// <param name="productionData">生产数据</param>
  18298. /// <param name="sUserInfo">用户基本信息</param>
  18299. /// <returns>string</returns>
  18300. /// <remarks>
  18301. /// 陈冰 2014.09.18 新建
  18302. /// </remarks>
  18303. private static string AddSemiCheckDataTrash(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  18304. {
  18305. #region SQL
  18306. string sql = "insert into tp_pm_semicheck"
  18307. + " (semicheckid,"
  18308. + " barcode,"
  18309. + " productionlineid,"
  18310. + " procedureid,"
  18311. + " proceduretime,"
  18312. + " proceduremodel,"
  18313. + " modeltype,"
  18314. + " organizationid,"
  18315. + " goodsid,"
  18316. + " goodscode,"
  18317. + " userid,"
  18318. + " usercode,"
  18319. + " productiondataid,"
  18320. + " logoid,"
  18321. + " ispublicbody,"
  18322. + " specialrepairflag,"
  18323. + " goodslevelid,"
  18324. + " goodsleveltypeid,"
  18325. + " groutingdailyid,"
  18326. + " groutingdailydetailid,"
  18327. + " groutinglineid,"
  18328. + " groutinglinecode,"
  18329. + " groutinglinename,"
  18330. + " gmouldtypeid,"
  18331. + " canmanytimes,"
  18332. + " groutinglinedetailid,"
  18333. + " groutingdate,"
  18334. + " groutingmouldcode,"
  18335. + " mouldcode,"
  18336. + " groutinguserid,"
  18337. + " groutingusercode,"
  18338. + " groutingnum,"
  18339. + " semichecktype,"
  18340. + " semicheckuserID,"
  18341. + " semicheckusercode,"
  18342. + " semichecktime,"
  18343. + " remarks,"
  18344. + " accountid,"
  18345. + " createuserid,"
  18346. + " updateuserid,"
  18347. + " reworkprocedureid,"
  18348. + " reworkprocedurecode,"
  18349. + " reworkuserid,"
  18350. + " reworkusercode"
  18351. + ")"
  18352. + " select"
  18353. + " :semicheckid,"
  18354. + " trash.barcode,"
  18355. + " trash.productionlineid,"
  18356. + " trash.procedureid,"
  18357. + " trash.proceduretime,"
  18358. + " trash.proceduremodel,"
  18359. + " trash.modeltype,"
  18360. + " tp_pc_procedure.organizationid,"
  18361. + " trash.goodsid,"
  18362. + " trash.goodscode,"
  18363. + " trash.userid,"
  18364. + " tp_mst_user.usercode,"
  18365. + " trash.productiondataid,"
  18366. + " trash.logoid,"
  18367. + " trash.ispublicbody,"
  18368. + " trash.specialrepairflag,"
  18369. + " trash.goodslevelid,"
  18370. + " trash.goodsleveltypeid,"
  18371. + " trash.groutingdailyid,"
  18372. + " trash.groutingdailydetailid,"
  18373. + " trash.groutinglineid,"
  18374. + " trash.groutinglinecode,"
  18375. + " trash.groutinglinename,"
  18376. + " trash.gmouldtypeid,"
  18377. + " trash.canmanytimes,"
  18378. + " trash.groutinglinedetailid,"
  18379. + " trash.groutingdate,"
  18380. + " trash.groutingmouldcode,"
  18381. + " trash.mouldcode,"
  18382. + " trash.groutinguserid,"
  18383. + " trash.groutingusercode,"
  18384. + " trash.groutingnum,"
  18385. + " :semichecktype,"
  18386. + " :semicheckuserID,"
  18387. + " :semicheckusercode,"
  18388. + " sysdate,"
  18389. + " :remarks,"
  18390. + " :accountid,"
  18391. + " :createuserid,"
  18392. + " :updateuserid,"
  18393. + " :reworkprocedureid,"
  18394. + " :reworkprocedurecode,"
  18395. + " :reworkuserid,"
  18396. + " :reworkusercode"
  18397. + " from TP_PM_InProductionTrash trash left join tp_mst_user on trash.UserID=tp_mst_user.userid "
  18398. + " left join tp_pc_procedure on trash.ProcedureID=tp_pc_procedure.ProcedureID "
  18399. + " where trash.barcode=:barcode";
  18400. #endregion
  18401. #region OracleParameter
  18402. OracleParameter[] paras = new OracleParameter[] {
  18403. new OracleParameter(":semicheckid",entity.SemiCheckID),
  18404. new OracleParameter(":semichecktype",entity.SemiCheckType),
  18405. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  18406. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  18407. new OracleParameter(":remarks",entity.Remarks),
  18408. new OracleParameter(":accountid",sUserInfo.AccountID),
  18409. new OracleParameter(":createuserid",sUserInfo.UserID),
  18410. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18411. new OracleParameter(":barcode",entity.BarCode),
  18412. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  18413. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  18414. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  18415. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  18416. };
  18417. #endregion
  18418. foreach (OracleParameter para in paras)
  18419. {
  18420. if (string.IsNullOrEmpty(para.Value + ""))
  18421. {
  18422. para.Value = DBNull.Value;
  18423. }
  18424. }
  18425. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  18426. // 失败
  18427. if (result != Constant.INT_IS_ONE)
  18428. {
  18429. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18430. }
  18431. // 成功返回null
  18432. return null;
  18433. }
  18434. /// <summary>
  18435. /// 添加半成品检验数据
  18436. /// </summary>
  18437. /// <param name="oracleTrConn">连接对象</param>
  18438. /// <param name="accountDate">账务日期</param>
  18439. /// <param name="productionData">生产数据</param>
  18440. /// <param name="sUserInfo">用户基本信息</param>
  18441. /// <returns>string</returns>
  18442. /// <remarks>
  18443. /// 陈冰 2014.09.18 新建
  18444. /// </remarks>
  18445. private static string SetSemiCheckDataValueFlag(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  18446. {
  18447. #region SQL
  18448. string sql = @"update TP_PM_SemiCheck
  18449. set BackOutUserID=:BackOutUserID,
  18450. BackOutUserCode=:BackOutUserCode,
  18451. BackOutFlag=1,
  18452. BackOutTime=sysdate,
  18453. ValueFlag='0',
  18454. updateuserid=:updateuserid
  18455. where semicheckid=:semicheckid";
  18456. #region OracleParameter
  18457. OracleParameter[] paras = new OracleParameter[] {
  18458. new OracleParameter(":semicheckid",entity.SemiCheckID),
  18459. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18460. new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  18461. new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  18462. };
  18463. #endregion
  18464. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  18465. string sql2 = @"update TP_PM_SemiCheckDefect
  18466. set
  18467. ValueFlag='0',
  18468. updateuserid=:updateuserid
  18469. where semicheckid=:semicheckid";
  18470. string sql3 = @"update TP_PM_SCDefectResponsible
  18471. set
  18472. ValueFlag='0',
  18473. updateuserid=:updateuserid
  18474. where semicheckid=:semicheckid";
  18475. #endregion
  18476. #region OracleParameter
  18477. paras = new OracleParameter[] {
  18478. new OracleParameter(":semicheckid",entity.SemiCheckID),
  18479. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18480. };
  18481. #endregion
  18482. foreach (OracleParameter para in paras)
  18483. {
  18484. if (string.IsNullOrEmpty(para.Value + ""))
  18485. {
  18486. para.Value = DBNull.Value;
  18487. }
  18488. }
  18489. result += oracleTrConn.ExecuteNonQuery(sql2, paras);
  18490. result += oracleTrConn.ExecuteNonQuery(sql3, paras);
  18491. // 失败
  18492. if (result == Constant.INT_IS_ZERO)
  18493. {
  18494. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18495. }
  18496. // 成功返回null
  18497. return null;
  18498. }
  18499. /// <summary>
  18500. /// 保存半检缺陷
  18501. /// </summary>
  18502. /// <param name="oracleTrConn">连接对象</param>
  18503. /// <param name="productionDefect">缺陷数据</param>
  18504. /// <param name="sUserInfo">用户基本信息</param>
  18505. /// <returns>string</returns>
  18506. private static string AddSemiCheckDefect(IDBTransaction oracleTrConn, SemiCheckDefectEntity semiCheckDefect, SUserInfo sUserInfo)
  18507. {
  18508. // 查询新插入的半检缺陷ID
  18509. string sql = "select SEQ_PM_SemiCheckDefect_ID.nextval from dual";
  18510. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  18511. int semiCheckDefectID = 0;
  18512. if (!string.IsNullOrEmpty(idStr))
  18513. {
  18514. semiCheckDefectID = int.Parse(idStr);
  18515. }
  18516. else
  18517. {
  18518. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18519. }
  18520. #region SQL
  18521. sql = "insert into TP_PM_SemiCheckDefect"
  18522. + " (semicheckdefectid,"
  18523. + " semicheckid,"
  18524. + " defectid,"
  18525. + " defectcode,"
  18526. + " defectname,"
  18527. + " defectpositionid,"
  18528. + " defectpositioncode,"
  18529. + " defectpositionname,"
  18530. + " scrapResponFlag,"
  18531. + " defectproductiondataid,"
  18532. + " defectprocedureid,"
  18533. + " defectuserid,"
  18534. + " defectusercode,"
  18535. + " remarks,"
  18536. + " accountid,"
  18537. + " createuserid,"
  18538. + " updateuserid)"
  18539. + " values"
  18540. + " ("
  18541. + " :semicheckdefectid,"
  18542. + " :semicheckid,"
  18543. + " :defectid,"
  18544. + " :defectcode,"
  18545. + " :defectname,"
  18546. + " :defectpositionid,"
  18547. + " :defectpositioncode,"
  18548. + " :defectpositionname,"
  18549. + " :scrapResponFlag,"
  18550. + " :defectproductiondataid,"
  18551. + " :defectprocedureid,"
  18552. + " :defectuserid,"
  18553. + " :defectusercode,"
  18554. + " :remarks,"
  18555. + " :accountid,"
  18556. + " :createuserid,"
  18557. + " :updateuserid)";
  18558. #endregion
  18559. #region 参数
  18560. OracleParameter[] oracleParameters = new OracleParameter[] {
  18561. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  18562. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  18563. new OracleParameter(":defectid",semiCheckDefect.DefectID),
  18564. new OracleParameter(":defectcode",semiCheckDefect.DefectCode),
  18565. new OracleParameter(":defectname",semiCheckDefect.DefectName),
  18566. new OracleParameter(":defectpositionid",semiCheckDefect.DefectPositionID),
  18567. new OracleParameter(":defectpositioncode",semiCheckDefect.DefectPositionCode),
  18568. new OracleParameter(":defectpositionname",semiCheckDefect.DefectPositionName),
  18569. new OracleParameter(":scrapResponFlag",semiCheckDefect.ScrapResponFlag),
  18570. new OracleParameter(":defectproductiondataid",semiCheckDefect.DefectProductionDataID),
  18571. new OracleParameter(":defectprocedureid",semiCheckDefect.DefectProcedureID),
  18572. new OracleParameter(":defectuserid",semiCheckDefect.DefectUserID),
  18573. new OracleParameter(":defectusercode",semiCheckDefect.DefectUserCode),
  18574. new OracleParameter(":remarks",semiCheckDefect.Remarks),
  18575. new OracleParameter(":accountid",sUserInfo.AccountID),
  18576. new OracleParameter(":createuserid",sUserInfo.UserID),
  18577. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18578. };
  18579. #endregion
  18580. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18581. // 保存失败
  18582. if (result != Constant.INT_IS_ONE)
  18583. {
  18584. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18585. }
  18586. #region 插入生产缺陷责任者
  18587. if (semiCheckDefect.DefectResponsibles != null)
  18588. {
  18589. foreach (SemiCheckResponsibleEntity DefectResponsible in semiCheckDefect.DefectResponsibles)
  18590. {
  18591. #region SQL
  18592. sql = "insert into TP_PM_SCDefectResponsible"
  18593. + " (semicheckdefectid,"
  18594. + " staffid,"
  18595. + " semicheckid,"
  18596. + " userid,"
  18597. + " usercode,"
  18598. + " Ujobsid,"
  18599. + " SJobsID,"
  18600. + " staffstatus,"
  18601. + " accountid,"
  18602. + " createuserid,"
  18603. + " updateuserid)"
  18604. + " values"
  18605. + " (:semicheckdefectid,"
  18606. + " :staffid,"
  18607. + " :semicheckid,"
  18608. + " :userid,"
  18609. + " :usercode,"
  18610. + " :ujobsid,"
  18611. + " :sjobsid,"
  18612. + " :staffstatus,"
  18613. + " :accountid,"
  18614. + " :createuserid,"
  18615. + " :updateuserid)";
  18616. #endregion
  18617. #region 参数
  18618. oracleParameters = new OracleParameter[] {
  18619. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  18620. new OracleParameter(":staffid",DefectResponsible.StaffID),
  18621. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  18622. new OracleParameter(":userid",DefectResponsible.UserID),
  18623. new OracleParameter(":usercode",DefectResponsible.UserCode),
  18624. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  18625. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  18626. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  18627. new OracleParameter(":accountid",sUserInfo.AccountID),
  18628. new OracleParameter(":createuserid",sUserInfo.UserID),
  18629. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18630. };
  18631. #endregion
  18632. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18633. // 保存失败
  18634. if (result != Constant.INT_IS_ONE)
  18635. {
  18636. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18637. }
  18638. }
  18639. }
  18640. #endregion
  18641. return null;
  18642. }
  18643. /// <summary>
  18644. /// 添加责任工序
  18645. /// </summary>
  18646. /// <param name="oracleTrConn">连接对象</param>
  18647. /// <param name="responProce">责任工序</param>
  18648. /// <param name="productionDefect">缺陷数据</param>
  18649. /// <param name="sUserInfo">用户基本信息</param>
  18650. /// <returns>string</returns>
  18651. private static string AddSemiCheckResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, SemiCheckDefectEntity productionDefect, SUserInfo sUserInfo)
  18652. {
  18653. OracleParameter[] oracleParameters = null;
  18654. string sql = null;
  18655. int result = 0;
  18656. // 查询新插入ID
  18657. if (responProce.ProcedureID != null)
  18658. {
  18659. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  18660. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  18661. if (!string.IsNullOrEmpty(idStr))
  18662. {
  18663. responProce.ResponProcedureID = int.Parse(idStr);
  18664. }
  18665. else
  18666. {
  18667. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18668. }
  18669. #region SQL
  18670. sql = "insert into tp_pm_responprocedure"
  18671. + " (ResponProcedureID,"
  18672. + " scrapproductid,"
  18673. + " barcode,"
  18674. + " productiondataid,"
  18675. + " productionlineid,"
  18676. + " productionlinecode,"
  18677. + " productionlinename,"
  18678. + " procedureid,"
  18679. + " procedurecode,"
  18680. + " procedurename,"
  18681. + " userid,"
  18682. + " usercode,"
  18683. + " username,"
  18684. + " remarks,"
  18685. + " accountid,"
  18686. + " createuserid,"
  18687. + " updateuserid)"
  18688. + " values"
  18689. + " ("
  18690. + " :ResponProcedureID,"
  18691. + " :scrapproductid,"
  18692. + " :barcode,"
  18693. + " :productiondataid,"
  18694. + " :productionlineid,"
  18695. + " :productionlinecode,"
  18696. + " :productionlinename,"
  18697. + " :procedureid,"
  18698. + " :procedurecode,"
  18699. + " :procedurename,"
  18700. + " :userid,"
  18701. + " :usercode,"
  18702. + " :username,"
  18703. + " :remarks,"
  18704. + " :accountid,"
  18705. + " :createuserid,"
  18706. + " :updateuserid)";
  18707. #endregion
  18708. #region 参数
  18709. oracleParameters = new OracleParameter[] {
  18710. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  18711. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  18712. new OracleParameter(":barcode",responProce.BarCode),
  18713. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  18714. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  18715. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  18716. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  18717. new OracleParameter(":procedureid",responProce.ProcedureID),
  18718. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  18719. new OracleParameter(":procedurename",responProce.ProcedureName),
  18720. new OracleParameter(":userid",responProce.UserID),
  18721. new OracleParameter(":usercode",responProce.UserCode),
  18722. new OracleParameter(":username",responProce.UserName),
  18723. new OracleParameter(":remarks",responProce.Remarks),
  18724. new OracleParameter(":accountid",sUserInfo.AccountID),
  18725. new OracleParameter(":createuserid",sUserInfo.UserID),
  18726. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18727. };
  18728. #endregion
  18729. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18730. // 保存失败
  18731. if (result != Constant.INT_IS_ONE)
  18732. {
  18733. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18734. }
  18735. //// 查询新插入ID
  18736. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  18737. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  18738. //if (!string.IsNullOrEmpty(idStr))
  18739. //{
  18740. // responProce.ResponProcedureID = int.Parse(idStr);
  18741. //}
  18742. //else
  18743. //{
  18744. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18745. //}
  18746. }
  18747. #region 插入责任人
  18748. foreach (SemiCheckResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  18749. {
  18750. #region SQL
  18751. sql = "insert into tp_pm_scrapresponsible"
  18752. + " (barcode,"
  18753. + " scrapproductid,"
  18754. + " staffid,"
  18755. + " userid,"
  18756. + " usercode,"
  18757. + " ujobsid,"
  18758. + " sjobsid,"
  18759. + " staffstatus,"
  18760. + " accountid,"
  18761. + " createuserid,"
  18762. + " updateuserid,"
  18763. + " responprocedureid,"
  18764. + " respontype)"
  18765. + " values"
  18766. + " (:barcode,"
  18767. + " :scrapproductid,"
  18768. + " :staffid,"
  18769. + " :userid,"
  18770. + " :usercode,"
  18771. + " :ujobsid,"
  18772. + " :sjobsid,"
  18773. + " :staffstatus,"
  18774. + " :accountid,"
  18775. + " :createuserid,"
  18776. + " :updateuserid,"
  18777. + " :responprocedureid,"
  18778. + " :respontype)";
  18779. #endregion
  18780. #region 参数
  18781. oracleParameters = new OracleParameter[] {
  18782. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  18783. new OracleParameter(":barcode",responProce.BarCode),
  18784. new OracleParameter(":staffid",defectResponsible.StaffID),
  18785. new OracleParameter(":userid",defectResponsible.UserID),
  18786. new OracleParameter(":usercode",defectResponsible.UserCode),
  18787. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  18788. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  18789. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  18790. new OracleParameter(":accountid",sUserInfo.AccountID),
  18791. new OracleParameter(":createuserid",sUserInfo.UserID),
  18792. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18793. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  18794. new OracleParameter(":respontype", (responProce.ResponProcedureID == null? (int)Constant.ScrapResponType.Person:(int)Constant.ScrapResponType.Procedure)),
  18795. };
  18796. #endregion
  18797. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18798. // 保存失败
  18799. if (result != Constant.INT_IS_ONE)
  18800. {
  18801. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18802. }
  18803. }
  18804. #endregion
  18805. return null;
  18806. }
  18807. #region 复检
  18808. /// <summary>
  18809. /// 复检数据
  18810. /// </summary>
  18811. /// <param name="oracleTrConn">数据连接对象</param>
  18812. /// <param name="entity">半检实体类</param>
  18813. /// <param name="sUserInfo">用户基本信息</param>
  18814. /// <returns>string</returns>
  18815. /// <remarks>
  18816. /// 王鑫 2016.06.28 新建
  18817. /// </remarks>
  18818. private static string AddReSemiCheck(IDBTransaction oracleTrConn,
  18819. SemiCheckEntity entity,
  18820. SUserInfo sUserInfo)
  18821. {
  18822. try
  18823. {
  18824. // 获得账务日期
  18825. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  18826. string errMsg = string.Empty;
  18827. #region 校验条码有效性
  18828. errMsg = CheckBarcodeByEditRework(oracleTrConn, entity.BarCode, sUserInfo);
  18829. if (!string.IsNullOrEmpty(errMsg))
  18830. {
  18831. return errMsg;
  18832. }
  18833. #endregion
  18834. //------------------------------
  18835. #region 条码是不合格 删除在产产品数据
  18836. if (entity.ReSemiCheckType == "2") //编辑时不合格
  18837. {
  18838. #region 修改半检登记的复检状态=2不合格(返)、复检工号=当前工号、复检时间=sysdate。
  18839. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='2' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  18840. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  18841. OracleParameter[] oracleParameters = new OracleParameter[] {
  18842. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  18843. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  18844. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18845. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18846. };
  18847. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18848. // 保存失败
  18849. if (result != Constant.INT_IS_ONE)
  18850. {
  18851. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18852. }
  18853. #endregion
  18854. #region 条码有缺陷
  18855. #region 是次品 添加废弃产品
  18856. string ResponProcedureidStr = "";
  18857. if (entity.ReSemiCheckType == "2") //新建时不合格,直接报损
  18858. {
  18859. #region 添加废弃产品
  18860. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  18861. #region 属性赋值
  18862. scrapProduct.BarCode = entity.BarCode;
  18863. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  18864. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  18865. scrapProduct.ScrapDate = accountDate;
  18866. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASSREWORK;
  18867. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  18868. scrapProduct.Auditor = sUserInfo.UserID;
  18869. scrapProduct.AuditlDate = accountDate;
  18870. scrapProduct.AccountDate = accountDate;
  18871. sqlUpdate = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=" + sUserInfo.AccountID;
  18872. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate);
  18873. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18874. {
  18875. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  18876. }
  18877. scrapProduct.GoodsLevelTypeID = 14;
  18878. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  18879. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  18880. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  18881. // 查询新插入的废弃ID
  18882. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  18883. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  18884. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18885. scrapProduct.ScrapType = 3;
  18886. #endregion
  18887. // 保存报废
  18888. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  18889. // 保存失败
  18890. if (!string.IsNullOrEmpty(errMsg))
  18891. {
  18892. return errMsg;
  18893. }
  18894. #endregion
  18895. }
  18896. #endregion
  18897. // 存在缺陷 插入缺陷表
  18898. if (entity.SemiCheckDefects != null)
  18899. {
  18900. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  18901. {
  18902. #region 保存缺陷
  18903. //semiCheckDefect.SemiCheckID = Convert.ToInt32(semiCheckDefect.SemiCheckID);
  18904. //semiCheckDefect.ScrapResponFlag
  18905. // = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  18906. //// 保存缺陷
  18907. //errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  18908. //if (!string.IsNullOrEmpty(errMsg))
  18909. //{
  18910. // return errMsg;
  18911. //}
  18912. #endregion
  18913. #region 是不合格 添加废弃责任工序
  18914. if (entity.ReSemiCheckType == "2")
  18915. {
  18916. //if (semiCheckDefect.DefectProcedureID != null)
  18917. {
  18918. #region 添加责任工序
  18919. ResponProcedureEntity responProce = new ResponProcedureEntity();
  18920. #region 属性赋值
  18921. responProce.BarCode = entity.BarCode;
  18922. // 新建-不合格 获取生产线及生产数据ID
  18923. sqlUpdate = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  18924. oracleParameters = new OracleParameter[] {
  18925. new OracleParameter(":barcode",entity.BarCode),
  18926. };
  18927. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate, oracleParameters);
  18928. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18929. {
  18930. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  18931. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  18932. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  18933. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  18934. }
  18935. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  18936. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  18937. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  18938. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  18939. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  18940. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  18941. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  18942. responProce.UserID = semiCheckDefect.DefectUserID;
  18943. responProce.UserCode = semiCheckDefect.DefectUserCode;
  18944. responProce.UserName = semiCheckDefect.DefectUserName;
  18945. responProce.Remarks = semiCheckDefect.Remarks;
  18946. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18947. #endregion
  18948. // 保存责任工序
  18949. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  18950. // 保存失败
  18951. if (!string.IsNullOrEmpty(errMsg))
  18952. {
  18953. return errMsg;
  18954. }
  18955. #endregion
  18956. }
  18957. }
  18958. #endregion
  18959. }
  18960. }
  18961. #endregion
  18962. // 1.在产表产品设置产品等级【14不合格返】。
  18963. string sql = @"update TP_PM_InProduction set GoodsLevelID=
  18964. (
  18965. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  18966. ),GoodsLevelTypeID=14,updateuserid=:updateuserid
  18967. where barcode=:barcode";
  18968. oracleParameters = new OracleParameter[] {
  18969. new OracleParameter(":accountid", sUserInfo.AccountID),
  18970. // new OracleParameter(":updateuserid",scrapProduct.GoodsLevelTypeID),
  18971. new OracleParameter(":barcode",entity.BarCode),
  18972. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18973. };
  18974. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18975. // 2.将在产数据保存到在产回收站表中(产品等级【14不合格返】)。
  18976. string sqlInsert = @"insert into TP_PM_InProductionTrash
  18977. (
  18978. BarCode,
  18979. ProductionLineID,
  18980. ProductionLineCode,
  18981. ProductionLineName,
  18982. ProcedureModel,
  18983. ModelType,
  18984. DefectFlag,
  18985. ReworkProcedureID,
  18986. IsPublicBody,
  18987. IsReFire,
  18988. GoodsLevelID,
  18989. GoodsLevelTypeID,
  18990. GoodsID,
  18991. GoodsCode,
  18992. GoodsName,
  18993. UserID,
  18994. GroutingDailyID,
  18995. GroutingDailyDetailID,
  18996. GroutingDate,
  18997. GroutingLineID,
  18998. GroutingLineCode,
  18999. GroutingLineName,
  19000. GMouldTypeID,
  19001. CanManyTimes,
  19002. GroutingLineDetailID,
  19003. GroutingMouldCode,
  19004. MouldCode,
  19005. GroutingUserID,
  19006. GroutingUserCode,
  19007. GroutingNum,
  19008. Remarks,
  19009. KilnID,
  19010. KilnCode,
  19011. KilnName,
  19012. KilnCarID,
  19013. KilnCarCode,
  19014. KilnCarName,
  19015. KilnCarBatchNo,
  19016. KilnCarPosition,
  19017. AccountID,
  19018. ValueFlag,
  19019. CreateUserID,
  19020. UpdateUserID,
  19021. SpecialRepairflag,
  19022. FlowProcedureID,
  19023. FlowProcedureTime,
  19024. ProcedureID,
  19025. ProcedureTime,
  19026. ProductionDataID,
  19027. logoid,
  19028. SemiCheckID
  19029. )
  19030. select
  19031. BarCode,
  19032. ProductionLineID,
  19033. ProductionLineCode,
  19034. ProductionLineName,
  19035. ProcedureModel,
  19036. ModelType,
  19037. DefectFlag,
  19038. ReworkProcedureID,
  19039. IsPublicBody,
  19040. IsReFire,
  19041. --GoodsLevelID,
  19042. --GoodsLevelTypeID,
  19043. (
  19044. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  19045. ),14,
  19046. GoodsID,
  19047. GoodsCode,
  19048. GoodsName,
  19049. UserID,
  19050. GroutingDailyID,
  19051. GroutingDailyDetailID,
  19052. GroutingDate,
  19053. GroutingLineID,
  19054. GroutingLineCode,
  19055. GroutingLineName,
  19056. GMouldTypeID,
  19057. CanManyTimes,
  19058. GroutingLineDetailID,
  19059. GroutingMouldCode,
  19060. MouldCode,
  19061. GroutingUserID,
  19062. GroutingUserCode,
  19063. GroutingNum,
  19064. Remarks,
  19065. KilnID,
  19066. KilnCode,
  19067. KilnName,
  19068. KilnCarID,
  19069. KilnCarCode,
  19070. KilnCarName,
  19071. KilnCarBatchNo,
  19072. KilnCarPosition,
  19073. AccountID,
  19074. ValueFlag,
  19075. :CreateUserID,
  19076. :UpdateUserID,
  19077. SpecialRepairflag,
  19078. FlowProcedureID,
  19079. FlowProcedureTime,
  19080. FlowProcedureID,
  19081. ProcedureTime,
  19082. ProductionDataID,
  19083. logoid,
  19084. SemiCheckID
  19085. from TP_PM_InProduction
  19086. where barcode=:barcode
  19087. ";
  19088. oracleParameters = new OracleParameter[] {
  19089. new OracleParameter(":barcode",entity.BarCode),
  19090. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  19091. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  19092. new OracleParameter(":accountid", sUserInfo.AccountID),
  19093. };
  19094. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  19095. // 删除在产数据
  19096. sql = "delete tp_pm_inproduction where barcode = :barcode";
  19097. oracleParameters = new OracleParameter[] {
  19098. new OracleParameter(":barcode",entity.BarCode),
  19099. };
  19100. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19101. }
  19102. else if (entity.ReSemiCheckType == "1") //正常
  19103. {
  19104. #region 修改半检登记的复检状态=1合格(返)、复检工号=当前工号、复检时间=sysdate。
  19105. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='1' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  19106. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  19107. OracleParameter[] oracleParameters = new OracleParameter[] {
  19108. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  19109. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  19110. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  19111. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19112. };
  19113. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  19114. // 保存失败
  19115. if (result != Constant.INT_IS_ONE)
  19116. {
  19117. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19118. }
  19119. #endregion
  19120. #region 3.修改在产产品数据,在产表产品设置非返工状态(IsReworkFlag = '0'),半检登记ID=null(半检登记ID不变)。
  19121. string sql = "update tp_pm_inproduction set IsReworkFlag='0',UpdateUserID=:UpdateUserID where barcode = :barcode";
  19122. oracleParameters = new OracleParameter[] {
  19123. new OracleParameter(":barcode",entity.BarCode),
  19124. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  19125. };
  19126. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19127. #endregion
  19128. }
  19129. #endregion
  19130. //------------------------------
  19131. return errMsg;
  19132. }
  19133. catch (Exception ex)
  19134. {
  19135. throw ex;
  19136. }
  19137. }
  19138. #endregion
  19139. #region 撤销复检
  19140. /// <summary>
  19141. /// 撤销复检数据
  19142. /// </summary>
  19143. /// <param name="oracleTrConn">数据连接对象</param>
  19144. /// <param name="entity">半检实体类</param>
  19145. /// <param name="sUserInfo">用户基本信息</param>
  19146. /// <returns>string</returns>
  19147. /// <remarks>
  19148. /// 王鑫 2016.06.28 新建
  19149. /// </remarks>
  19150. private static string AddCancelSemiCheck(IDBTransaction oracleTrConn,
  19151. SemiCheckEntity entity,
  19152. SUserInfo sUserInfo)
  19153. {
  19154. try
  19155. {
  19156. // 获得账务日期
  19157. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  19158. string errMsg = string.Empty;
  19159. string sql = null;
  19160. #region 校验条码有效性
  19161. if (entity.ReSemiCheckType == "1") //撤销合格
  19162. {
  19163. errMsg = CheckBarcodeByCancelReSemiCheckPass(oracleTrConn, entity.BarCode, sUserInfo);
  19164. }
  19165. else if (entity.ReSemiCheckType == "2") //撤销不合格
  19166. {
  19167. errMsg = CheckBarcodeByCancelReSemiCheckNoPass(oracleTrConn, entity.BarCode, sUserInfo);
  19168. }
  19169. if (!string.IsNullOrEmpty(errMsg))
  19170. {
  19171. return errMsg;
  19172. }
  19173. #endregion
  19174. if (entity.ReSemiCheckType == "1") //撤销合格
  19175. {
  19176. #region 在产表产品设置返工状态(IsReworkFlag = '1')。
  19177. sql = "update tp_pm_inproduction set IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  19178. OracleParameter[] oracleParameters = new OracleParameter[] {
  19179. new OracleParameter(":barcode",entity.BarCode),
  19180. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  19181. };
  19182. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19183. #endregion
  19184. #region .半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  19185. // 复检撤销不需要记录撤销标识 - chenxy
  19186. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  19187. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  19188. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  19189. where SemiCheckID=:SemiCheckID";
  19190. oracleParameters = new OracleParameter[] {
  19191. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  19192. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19193. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  19194. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  19195. };
  19196. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  19197. // 保存失败
  19198. if (result != Constant.INT_IS_ONE)
  19199. {
  19200. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19201. }
  19202. #endregion
  19203. }
  19204. else if (entity.ReSemiCheckType == "2") //撤销不合格
  19205. {
  19206. #region 从在产回收站中把数据恢复到在产表中。
  19207. string sqlInsert = @"insert into TP_PM_InProduction
  19208. (
  19209. BarCode,
  19210. ProductionLineID,
  19211. ProductionLineCode,
  19212. ProductionLineName,
  19213. ProcedureModel,
  19214. ModelType,
  19215. DefectFlag,
  19216. ReworkProcedureID,
  19217. IsPublicBody,
  19218. IsReFire,
  19219. GoodsLevelID,
  19220. GoodsLevelTypeID,
  19221. GoodsID,
  19222. GoodsCode,
  19223. GoodsName,
  19224. UserID,
  19225. GroutingDailyID,
  19226. GroutingDailyDetailID,
  19227. GroutingDate,
  19228. GroutingLineID,
  19229. GroutingLineCode,
  19230. GroutingLineName,
  19231. GMouldTypeID,
  19232. CanManyTimes,
  19233. GroutingLineDetailID,
  19234. GroutingMouldCode,
  19235. MouldCode,
  19236. GroutingUserID,
  19237. GroutingUserCode,
  19238. GroutingNum,
  19239. Remarks,
  19240. KilnID,
  19241. KilnCode,
  19242. KilnName,
  19243. KilnCarID,
  19244. KilnCarCode,
  19245. KilnCarName,
  19246. KilnCarBatchNo,
  19247. KilnCarPosition,
  19248. AccountID,
  19249. ValueFlag,
  19250. CreateUserID,
  19251. UpdateUserID,
  19252. SpecialRepairflag,
  19253. FlowProcedureID,
  19254. FlowProcedureTime,
  19255. ProcedureID,
  19256. ProcedureTime,
  19257. ProductionDataID,
  19258. logoid,
  19259. SemiCheckID
  19260. )
  19261. select
  19262. BarCode,
  19263. ProductionLineID,
  19264. ProductionLineCode,
  19265. ProductionLineName,
  19266. ProcedureModel,
  19267. ModelType,
  19268. DefectFlag,
  19269. ReworkProcedureID,
  19270. IsPublicBody,
  19271. IsReFire,
  19272. GoodsLevelID,
  19273. GoodsLevelTypeID,
  19274. GoodsID,
  19275. GoodsCode,
  19276. GoodsName,
  19277. UserID,
  19278. GroutingDailyID,
  19279. GroutingDailyDetailID,
  19280. GroutingDate,
  19281. GroutingLineID,
  19282. GroutingLineCode,
  19283. GroutingLineName,
  19284. GMouldTypeID,
  19285. CanManyTimes,
  19286. GroutingLineDetailID,
  19287. GroutingMouldCode,
  19288. MouldCode,
  19289. GroutingUserID,
  19290. GroutingUserCode,
  19291. GroutingNum,
  19292. Remarks,
  19293. KilnID,
  19294. KilnCode,
  19295. KilnName,
  19296. KilnCarID,
  19297. KilnCarCode,
  19298. KilnCarName,
  19299. KilnCarBatchNo,
  19300. KilnCarPosition,
  19301. AccountID,
  19302. ValueFlag,
  19303. :CreateUserID,
  19304. :UpdateUserID,
  19305. SpecialRepairflag,
  19306. FlowProcedureID,
  19307. FlowProcedureTime,
  19308. FlowProcedureID,
  19309. ProcedureTime,
  19310. ProductionDataID,
  19311. logoid,
  19312. SemiCheckID
  19313. from TP_PM_InProductionTrash
  19314. where barcode=:barcode
  19315. ";
  19316. OracleParameter[] oracleParameters = new OracleParameter[] {
  19317. new OracleParameter(":barcode",entity.BarCode),
  19318. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  19319. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  19320. };
  19321. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  19322. #endregion
  19323. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  19324. OracleParameter[] spParameters = null;
  19325. int spResult = 0;
  19326. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  19327. " from TP_PM_ScrapProduct sp\n" +
  19328. " where sp.barcode = :barcode\n" +
  19329. " and sp.auditstatus = 1\n" +
  19330. " and sp.valueflag = '1'\n" +
  19331. " and sp.scraptype = '3'";
  19332. spParameters = new OracleParameter[] {
  19333. new OracleParameter(":barcode",entity.BarCode),
  19334. };
  19335. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  19336. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  19337. spParameters = new OracleParameter[] {
  19338. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19339. new OracleParameter(":scrapproductid",scrapproductid),
  19340. };
  19341. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  19342. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  19343. //oracleParameters = new OracleParameter[] {
  19344. // new OracleParameter(":barcode",entity.BarCode),
  19345. //};
  19346. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  19347. //string sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  19348. //oracleParameters = new OracleParameter[] {
  19349. // new OracleParameter(":barcode",entity.BarCode),
  19350. // };
  19351. //result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19352. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  19353. //oracleParameters = new OracleParameter[] {
  19354. // new OracleParameter(":barcode",entity.BarCode),
  19355. // };
  19356. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19357. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  19358. ////oracleParameters = new OracleParameter[] {
  19359. //// new OracleParameter(":barcode",entity.BarCode),
  19360. //// };
  19361. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19362. #endregion
  19363. #region 删除在产回收站数据
  19364. sql = "delete TP_PM_InProductionTrash where barcode = :barcode";
  19365. oracleParameters = new OracleParameter[] {
  19366. new OracleParameter(":barcode",entity.BarCode),
  19367. };
  19368. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19369. #endregion
  19370. #region .在产表产品设置返工状态(IsReworkFlag = '1')。
  19371. sql = "update tp_pm_inproduction set IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  19372. oracleParameters = new OracleParameter[] {
  19373. new OracleParameter(":barcode",entity.BarCode),
  19374. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  19375. };
  19376. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  19377. #endregion
  19378. #region 6.半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  19379. // 复检撤销不需要记录撤销标识 - chenxy
  19380. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  19381. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  19382. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  19383. where SemiCheckID=:SemiCheckID";
  19384. oracleParameters = new OracleParameter[] {
  19385. //new OracleParameter(":ReSemiCheckUserID",entity.ReSemiCheckUserID),
  19386. //new OracleParameter(":ReSemiCheckUserCode",entity.ReSemiCheckUserCode),
  19387. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  19388. new OracleParameter(":updateuserid",sUserInfo.UserID),
  19389. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  19390. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  19391. };
  19392. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  19393. // 保存失败
  19394. if (result != Constant.INT_IS_ONE)
  19395. {
  19396. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19397. }
  19398. #endregion
  19399. }
  19400. return errMsg;
  19401. }
  19402. catch (Exception ex)
  19403. {
  19404. throw ex;
  19405. }
  19406. }
  19407. #endregion
  19408. /// <summary>
  19409. /// 校验条码有效(撤销复检-不合格)
  19410. /// </summary>
  19411. /// <param name="oracleTrConn">连接对象</param>
  19412. /// <param name="barcode">条码</param>
  19413. /// <param name="sUserInfo">登录用户信息</param>
  19414. /// <returns>string</returns>
  19415. /// <remarks>
  19416. /// 王鑫 2016.06.28 新建
  19417. /// </remarks>
  19418. private static string CheckBarcodeByCancelReSemiCheckNoPass(IDBTransaction oracleTrConn,
  19419. string barcode,
  19420. SUserInfo sUserInfo
  19421. )
  19422. {
  19423. try
  19424. {
  19425. OracleParameter[] paras = new OracleParameter[]{
  19426. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  19427. };
  19428. string sql = @"
  19429. select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=14 and SemiCheckID is not null
  19430. ";
  19431. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19432. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  19433. {
  19434. return "条码[" + barcode + "]不在在产回收站中";
  19435. }
  19436. return null;
  19437. }
  19438. catch (Exception ex)
  19439. {
  19440. throw ex;
  19441. }
  19442. }
  19443. /// <summary>
  19444. /// 校验条码有效(撤销复检-合格)
  19445. /// </summary>
  19446. /// <param name="oracleTrConn">连接对象</param>
  19447. /// <param name="barcode">条码</param>
  19448. /// <param name="sUserInfo">登录用户信息</param>
  19449. /// <returns>string</returns>
  19450. /// <remarks>
  19451. /// 王鑫 2016.06.28 新建
  19452. /// </remarks>
  19453. private static string CheckBarcodeByCancelReSemiCheckPass(IDBTransaction oracleTrConn,
  19454. string barcode,
  19455. SUserInfo sUserInfo
  19456. )
  19457. {
  19458. try
  19459. {
  19460. OracleParameter[] paras = new OracleParameter[]{
  19461. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  19462. };
  19463. string sql = @"
  19464. select InScrapFlag,
  19465. KilnCarID,
  19466. KilnCarName,
  19467. IsReworkFlag,
  19468. SemiCheckID from TP_PM_InProduction where barcode=:barcode
  19469. ";
  19470. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19471. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19472. {
  19473. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  19474. {
  19475. return "条码[" + barcode + "]已经报损待审批";
  19476. }
  19477. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  19478. {
  19479. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  19480. }
  19481. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  19482. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  19483. {
  19484. return "条码[" + barcode + "]是半检返工状态";
  19485. }
  19486. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  19487. {
  19488. return "条码[" + barcode + "]是半检返修状态";
  19489. }
  19490. if (string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["SemiCheckID"].ToString()))
  19491. {
  19492. return "条码[" + barcode + "]已经做过其他操作,不能撤销";
  19493. }
  19494. }
  19495. else
  19496. {
  19497. return "条码[" + barcode + "]不在在产流程";
  19498. }
  19499. return null;
  19500. }
  19501. catch (Exception ex)
  19502. {
  19503. throw ex;
  19504. }
  19505. }
  19506. #region 生产订单 wangx 2017-2-7
  19507. /// <summary>
  19508. /// 保存订单
  19509. /// </summary>
  19510. /// <param name="order"></param>
  19511. /// <param name="sUserInfo"></param>
  19512. /// <returns></returns>
  19513. public static ServiceResultEntity SaveOrder(OrderEntity order, SUserInfo sUserInfo)
  19514. {
  19515. ServiceResultEntity entity = new ServiceResultEntity();
  19516. int returnRows = 0;
  19517. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19518. try
  19519. {
  19520. string sql = string.Empty;
  19521. OracleParameter[] Paras = null;
  19522. DataSet ds = null;
  19523. #region 查询订单号是否有重复
  19524. sql = "select OrderID from TP_PM_Order where OrderNo=:OrderNo and AccountID=:AccountID";
  19525. Paras = new OracleParameter[] {
  19526. new OracleParameter(":OrderNo",OracleDbType.Varchar2,
  19527. order.OrderNo,ParameterDirection.Input),
  19528. new OracleParameter(":AccountID",OracleDbType.Int32,
  19529. sUserInfo.AccountID,ParameterDirection.Input)
  19530. };
  19531. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  19532. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19533. {
  19534. if (order.OrderID == 0 || (order.OrderID != Convert.ToInt32(ds.Tables[0].Rows[0]["OrderID"])))
  19535. {
  19536. //重复订单号
  19537. returnRows = -1;
  19538. oracleTrConn.Rollback();
  19539. oracleTrConn.Disconnect();
  19540. entity.Result = returnRows;
  19541. entity.Message = "系统存在相同的生产订单号!";
  19542. return entity;
  19543. }
  19544. }
  19545. #endregion
  19546. #region 添加、编辑生产订单
  19547. if (order.OrderID == 0)
  19548. {
  19549. string sqlText = "SELECT SEQ_PM_Order_OrderID.NEXTVAL FROM dual";
  19550. int newOrderID = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  19551. sql = @"Insert into TP_PM_Order
  19552. (
  19553. OrderID,
  19554. OrderNo,
  19555. OrderDate,
  19556. Remarks,
  19557. AccountID,
  19558. ValueFlag,
  19559. CreateTime,
  19560. CreateUserID,
  19561. UpdateTime,
  19562. UpdateUserID
  19563. )
  19564. Values
  19565. (
  19566. :OrderID,
  19567. :OrderNo,
  19568. :OrderDate,
  19569. :Remarks,
  19570. :AccountID,
  19571. :ValueFlag,
  19572. sysdate,
  19573. :CreateUserID,
  19574. sysdate,
  19575. :UpdateUserID
  19576. )";
  19577. Paras = new OracleParameter[] {
  19578. new OracleParameter(":OrderID",OracleDbType.Int32,newOrderID,ParameterDirection.Input),
  19579. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  19580. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  19581. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  19582. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  19583. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19584. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19585. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  19586. };
  19587. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  19588. }
  19589. else
  19590. {
  19591. sql = @"Update TP_PM_Order
  19592. set
  19593. OrderNo=:OrderNo,
  19594. OrderDate=:OrderDate,
  19595. Remarks=:Remarks,
  19596. ValueFlag=:ValueFlag,
  19597. UpdateUserID=:UpdateUserID
  19598. where OrderID=:OrderID
  19599. ";
  19600. Paras = new OracleParameter[] {
  19601. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  19602. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  19603. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  19604. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  19605. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  19606. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19607. };
  19608. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  19609. }
  19610. #endregion
  19611. if (returnRows <= 0)
  19612. {
  19613. oracleTrConn.Rollback();
  19614. oracleTrConn.Disconnect();
  19615. }
  19616. else
  19617. {
  19618. oracleTrConn.Commit();
  19619. oracleTrConn.Disconnect();
  19620. }
  19621. }
  19622. catch (Exception ex)
  19623. {
  19624. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  19625. {
  19626. oracleTrConn.Rollback();
  19627. oracleTrConn.Disconnect();
  19628. }
  19629. throw ex;
  19630. }
  19631. finally
  19632. {
  19633. if (oracleTrConn.ConnState == ConnectionState.Open)
  19634. {
  19635. oracleTrConn.Disconnect();
  19636. }
  19637. }
  19638. entity.Result = returnRows;
  19639. return entity;
  19640. }
  19641. /// <summary>
  19642. /// 启用、停用订单标识
  19643. /// </summary>
  19644. /// <param name="order"></param>
  19645. /// <param name="sUserInfo"></param>
  19646. /// <returns></returns>
  19647. public static ServiceResultEntity ChangeOrderFlag(OrderEntity order, SUserInfo sUserInfo)
  19648. {
  19649. ServiceResultEntity entity = new ServiceResultEntity();
  19650. int returnRows = 0;
  19651. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19652. try
  19653. {
  19654. string sql = string.Empty;
  19655. OracleParameter[] Paras = null;
  19656. #region 添加、编辑生产订单
  19657. sql = @"Update TP_PM_Order
  19658. set
  19659. ValueFlag=:ValueFlag,
  19660. UpdateUserID=:UpdateUserID
  19661. where OrderID=:OrderID
  19662. ";
  19663. Paras = new OracleParameter[] {
  19664. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  19665. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19666. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  19667. };
  19668. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  19669. #endregion
  19670. if (returnRows <= 0)
  19671. {
  19672. oracleTrConn.Rollback();
  19673. oracleTrConn.Disconnect();
  19674. }
  19675. else
  19676. {
  19677. oracleTrConn.Commit();
  19678. oracleTrConn.Disconnect();
  19679. }
  19680. }
  19681. catch (Exception ex)
  19682. {
  19683. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  19684. {
  19685. oracleTrConn.Rollback();
  19686. oracleTrConn.Disconnect();
  19687. }
  19688. throw ex;
  19689. }
  19690. entity.Result = returnRows;
  19691. return entity;
  19692. }
  19693. #endregion
  19694. #region 保存交接
  19695. /// <summary>
  19696. /// 保存交接校验
  19697. /// </summary>
  19698. /// <param name="orderid"></param>
  19699. /// <param name="dtData"></param>
  19700. /// <param name="sUserInfo"></param>
  19701. /// <returns></returns>
  19702. public static ServiceResultEntity SaveFinishedHandover(int orderid, DataTable dtData, SUserInfo sUserInfo)
  19703. {
  19704. ServiceResultEntity entity = new ServiceResultEntity();
  19705. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19706. try
  19707. {
  19708. string sql = string.Empty;
  19709. OracleParameter[] Paras = null;
  19710. DataSet ds = null;
  19711. bool isError = false;
  19712. oracleTrConn.Connect();
  19713. // 包装装板,产成品交接不限制
  19714. //string GoodsModel = string.Empty;
  19715. //int? logoID = null;
  19716. //string logoName = string.Empty;
  19717. //int PlateLimitNum = 0;
  19718. //string _isEnable_S_PM_011 = "0";
  19719. //// 2.产成品交接是否限制同型号
  19720. //string _isEnable_S_PM_012 = "0";
  19721. //// 3.产成品交接是否限制每板装板数量(必须先启用限制同型号);
  19722. //string _isEnable_S_PM_013 = "0";
  19723. //// 读取系统设置
  19724. //sql = "select settingcode,settingvalue from tp_mst_systemsetting where settingcode in ('S_PM_011','S_PM_012','S_PM_013') and accountid=" + sUserInfo.AccountID;
  19725. //ds = oracleTrConn.GetSqlResultToDs(sql);
  19726. //foreach (DataRow dr in ds.Tables[0].Rows)
  19727. //{
  19728. // if (dr["settingcode"] == "S_PM_011")
  19729. // _isEnable_S_PM_011 = dr["settingcode"].ToString();
  19730. // else if (dr["settingcode"] == "S_PM_012")
  19731. // _isEnable_S_PM_012 = dr["settingcode"].ToString();
  19732. // else if (dr["settingcode"] == "S_PM_013")
  19733. // _isEnable_S_PM_013 = dr["settingcode"].ToString();
  19734. //}
  19735. string logid_bg = "0";
  19736. // 条码串
  19737. string fifter = " AND (bar.barcode = '";
  19738. foreach (DataRow row in dtData.Rows)
  19739. {
  19740. fifter += row["barcode"] + "' OR bar.barcode = '";
  19741. }
  19742. fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  19743. // 本批交接的批次号
  19744. string fhBatchNo = System.Guid.NewGuid().ToString();
  19745. for (int i = 0; i < dtData.Rows.Count; i++)
  19746. {
  19747. #region 产品是否在产成表中
  19748. sql = "select FHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode";
  19749. Paras = new OracleParameter[]{
  19750. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  19751. };
  19752. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  19753. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19754. {
  19755. #region 是否交接过
  19756. string fhUserCode = ds.Tables[0].Rows[0]["FHUserCode"].ToString();
  19757. if (!string.IsNullOrEmpty(fhUserCode))
  19758. {
  19759. entity.Result = -2; //已交接,不能再次进行交接
  19760. entity.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】已交接,不能再次进行交接";
  19761. isError = true;
  19762. break;
  19763. }
  19764. #endregion
  19765. }
  19766. else
  19767. {
  19768. #region 不是产成品
  19769. entity.Result = -1; //不是产成品
  19770. entity.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】不是产成品";
  19771. isError = true;
  19772. break;
  19773. #endregion
  19774. }
  19775. #endregion
  19776. /* 包装装板,产成品交接不限制
  19777. if (i == 0)
  19778. {
  19779. #region 记录产品型号,最大限制数量,商标
  19780. GoodsModel = dtData.Rows[i]["GoodsModel"].ToString();
  19781. logoID = Convert.ToInt32(dtData.Rows[i]["logoID"]);
  19782. logoName = dtData.Rows[i]["logoName"].ToString();
  19783. sql = "select PlateLimitNum from TP_MST_Goods where GoodsID=:GoodsID";
  19784. Paras = new OracleParameter[]{
  19785. new OracleParameter(":GoodsID",OracleDbType.Int32, ds.Tables[0].Rows[0]["GoodsID"],ParameterDirection.Input),
  19786. };
  19787. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  19788. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19789. {
  19790. if (_isEnable_S_PM_013 == "1" && _isEnable_S_PM_012 == "1")
  19791. {
  19792. PlateLimitNum = Convert.ToInt32(ds.Tables[0].Rows[0]["PlateLimitNum"]);
  19793. }
  19794. }
  19795. #endregion
  19796. }
  19797. else
  19798. {
  19799. #region 启用限制同商标
  19800. if (_isEnable_S_PM_011 == "1")
  19801. {
  19802. if (Convert.ToInt32(dtData.Rows[0]["logoid"]) != logoID)
  19803. {
  19804. entity.Result = -3;
  19805. entity.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的商标【"
  19806. + dtData.Rows[0]["logoname"] + "】与此批次商标【" + logoName + "】不同,不能进行该操作。 ";
  19807. isError = true;
  19808. break;
  19809. }
  19810. }
  19811. #endregion
  19812. #region 启用限制同型号
  19813. if (_isEnable_S_PM_012 == "1")
  19814. {
  19815. if (dtData.Rows[0]["GoodsModel"].ToString() != GoodsModel)
  19816. {
  19817. entity.Result = -4;
  19818. entity.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的型号【"
  19819. + dtData.Rows[0]["GoodsModel"] + "】与此批次型号【" + GoodsModel + "】不同,不能进行该操作。 ";
  19820. isError = true;
  19821. break;
  19822. }
  19823. }
  19824. #endregion
  19825. #region 产品列表是否大于限制条数
  19826. if (PlateLimitNum > 0)
  19827. {
  19828. if (dtData.Rows.Count > PlateLimitNum)
  19829. {
  19830. entity.Result = -5;
  19831. entity.Message = "产品列表数量大于每板装板数量【" + PlateLimitNum + "】";
  19832. isError = true;
  19833. break;
  19834. }
  19835. }
  19836. #endregion
  19837. }
  19838. */
  19839. #region 更新产成品相关信息
  19840. sql = @"update TP_PM_FinishedProduct
  19841. set FHUserID=:FHUserID,
  19842. FHUserCode=:FHUserCode,
  19843. FHBatchNo=:FHBatchNo,
  19844. FHTime=sysdate,
  19845. FHOrderID=null,
  19846. UpdateUserID=:UpdateUserID
  19847. where Barcode=:Barcode";
  19848. Paras = new OracleParameter[]{
  19849. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  19850. new OracleParameter(":FHUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  19851. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  19852. new OracleParameter(":FHUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  19853. new OracleParameter(":FHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
  19854. //new OracleParameter(":FHOrderID",OracleDbType.Int32, orderid,ParameterDirection.Input),
  19855. };
  19856. oracleTrConn.ExecuteNonQuery(sql, Paras);
  19857. #endregion
  19858. }
  19859. if (isError)
  19860. {
  19861. oracleTrConn.Rollback();
  19862. oracleTrConn.Disconnect();
  19863. }
  19864. else
  19865. {
  19866. entity.Result = 1;
  19867. oracleTrConn.Commit();
  19868. oracleTrConn.Disconnect();
  19869. }
  19870. }
  19871. catch (Exception ex)
  19872. {
  19873. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  19874. {
  19875. oracleTrConn.Rollback();
  19876. oracleTrConn.Disconnect();
  19877. }
  19878. throw ex;
  19879. }
  19880. finally
  19881. {
  19882. if (oracleTrConn.ConnState == ConnectionState.Open)
  19883. {
  19884. oracleTrConn.Disconnect();
  19885. }
  19886. }
  19887. return entity;
  19888. }
  19889. #endregion
  19890. /// <summary>
  19891. /// 撤销产成品交接
  19892. /// </summary>
  19893. /// <param name="barcode"></param>
  19894. /// <param name="sUserInfo"></param>
  19895. /// <returns></returns>
  19896. public static ServiceResultEntity SaveCancelFinishedHandoverByBarcode(string barcode, SUserInfo sUserInfo)
  19897. {
  19898. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19899. try
  19900. {
  19901. ServiceResultEntity resultEntity = new ServiceResultEntity();
  19902. // 1.判断产品是否在产成品表中
  19903. string sql = @"select
  19904. FHUserID,
  19905. FHUserCode,
  19906. GoodsID,
  19907. GoodsCode,
  19908. GoodsName
  19909. from TP_PM_FinishedProduct
  19910. where BarCode=:BarCode";
  19911. OracleParameter[] paras = new OracleParameter[]{
  19912. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19913. };
  19914. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19915. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19916. {
  19917. // 在产成品表中
  19918. #region 是否交接过
  19919. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  19920. if (string.IsNullOrEmpty(fhUserCode))
  19921. {
  19922. resultEntity.Result = -1; //未交接,不能撤销
  19923. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  19924. return resultEntity;
  19925. }
  19926. #endregion
  19927. }
  19928. else
  19929. {
  19930. resultEntity.Result = -2; //不能产成品,不能撤销
  19931. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  19932. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19933. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19934. {
  19935. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  19936. }
  19937. else
  19938. {
  19939. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  19940. }
  19941. return resultEntity;
  19942. }
  19943. #region 查询产品相关信息
  19944. // 撤销记录
  19945. string sqlString = "INSERT INTO TP_PM_FHUndo\n" +
  19946. " (GroutingDailyDetailID\n" +
  19947. " ,GoodsLevelTypeID\n" +
  19948. " ,FHUserID\n" +
  19949. " ,FHUserCode\n" +
  19950. " ,FHBatchNo\n" +
  19951. " ,FHTime\n" +
  19952. " --,FHOrderID\n" +
  19953. " ,OnlyCode\n" +
  19954. " ,FINISHEDLOADBATCHNO\n" +
  19955. " ,AccountID\n" +
  19956. " ,CreateUserID)\n" +
  19957. " SELECT t.groutingdailydetailid\n" +
  19958. " ,t.GoodsLevelTypeID\n" +
  19959. " ,t.fhuserid\n" +
  19960. " ,t.fhusercode\n" +
  19961. " ,t.fhbatchno\n" +
  19962. " ,t.fhtime\n" +
  19963. " --,t.FHOrderID\n" +
  19964. " ,t.onlycode\n" +
  19965. " ,t.FINISHEDLOADBATCHNO\n" +
  19966. " ,t.AccountID\n" +
  19967. " ,:UpdateUserID\n" +
  19968. " FROM TP_PM_FinishedProduct t\n" +
  19969. " WHERE t.barcode = :BarCode";
  19970. paras = new OracleParameter[]{
  19971. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19972. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19973. };
  19974. int resultRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  19975. //// SAP同步后再成品交接撤销的,记录撤销标识
  19976. //string sapsql = "select count(*) from tsap_hegii_FinishedProduct t where t.barcode = :BarCode and rownum=1";
  19977. //OracleParameter[] sapparas = new OracleParameter[]{
  19978. // new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19979. //};
  19980. //int sapcount = Convert.ToInt32( oracleTrConn.GetSqlResultToObj(sapsql, sapparas));
  19981. //if (sapcount > 0)
  19982. //{
  19983. // sapsql = "update tp_pm_groutingdailydetail set SAPFHUndoFlag = '1' where barcode=:BarCode";
  19984. // oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  19985. //}
  19986. sql = @"Update TP_PM_FinishedProduct
  19987. set FHUserID=null,
  19988. FHUserCode=null,
  19989. FHBatchNo=null,
  19990. FHTime=null,
  19991. --FHOrderID=null,
  19992. FINISHEDLOADBATCHNO=null,
  19993. UpdateUserID=:UpdateUserID
  19994. where BarCode=:BarCode";
  19995. resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  19996. if (resultRow == 0)
  19997. {
  19998. oracleTrConn.Rollback();
  19999. oracleTrConn.Disconnect();
  20000. }
  20001. else
  20002. {
  20003. resultEntity.Result = 1;
  20004. oracleTrConn.Commit();
  20005. oracleTrConn.Disconnect();
  20006. }
  20007. #endregion
  20008. return resultEntity;
  20009. }
  20010. catch (Exception ex)
  20011. {
  20012. throw ex;
  20013. }
  20014. }
  20015. /// <summary>
  20016. /// 更改产成品交接订单号
  20017. /// </summary>
  20018. /// <param name="barcode"></param>
  20019. /// <param name="orderid"></param>
  20020. /// <param name="sUserInfo"></param>
  20021. /// <returns></returns>
  20022. public static ServiceResultEntity SaveChangeFinishedHandoverByBarcode(string barcode, int orderid, SUserInfo sUserInfo)
  20023. {
  20024. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  20025. try
  20026. {
  20027. ServiceResultEntity resultEntity = new ServiceResultEntity();
  20028. // 1.判断产品是否在产成品表中
  20029. string sql = @"select
  20030. FHUserID,
  20031. FHUserCode,
  20032. GoodsID,
  20033. GoodsCode,
  20034. GoodsName
  20035. from TP_PM_FinishedProduct
  20036. where BarCode=:BarCode";
  20037. OracleParameter[] paras = new OracleParameter[]{
  20038. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  20039. };
  20040. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  20041. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  20042. {
  20043. // 在产成品表中
  20044. #region 是否交接过
  20045. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  20046. if (string.IsNullOrEmpty(fhUserCode))
  20047. {
  20048. resultEntity.Result = -1; //未交接,不能撤销
  20049. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  20050. return resultEntity;
  20051. }
  20052. #endregion
  20053. }
  20054. else
  20055. {
  20056. resultEntity.Result = -2; //不能产成品,不能撤销
  20057. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  20058. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  20059. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  20060. {
  20061. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  20062. }
  20063. else
  20064. {
  20065. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  20066. }
  20067. return resultEntity;
  20068. }
  20069. #region 查询产品相关信息
  20070. sql = @"Update TP_PM_FinishedProduct
  20071. set
  20072. FHOrderID=:FHOrderID,
  20073. UpdateUserID=:UpdateUserID
  20074. where BarCode=:BarCode";
  20075. paras = new OracleParameter[]{
  20076. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  20077. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  20078. new OracleParameter(":FHOrderID",OracleDbType.Int32,orderid,ParameterDirection.Input),
  20079. };
  20080. int resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  20081. if (resultRow == 0)
  20082. {
  20083. oracleTrConn.Rollback();
  20084. oracleTrConn.Disconnect();
  20085. }
  20086. else
  20087. {
  20088. resultEntity.Result = 1;
  20089. oracleTrConn.Commit();
  20090. oracleTrConn.Disconnect();
  20091. }
  20092. #endregion
  20093. return resultEntity;
  20094. }
  20095. catch (Exception ex)
  20096. {
  20097. throw ex;
  20098. }
  20099. }
  20100. /// <summary>
  20101. /// 回收标准计件
  20102. /// </summary>
  20103. /// <param name="oracleTrConn">数据连接对象</param>
  20104. /// <param name="procedure">工序对象</param>
  20105. /// <param name="barcodeTable">条码信息</param>
  20106. /// <param name="sUserInfo">用户基本信息</param>
  20107. /// <param name="goodsID">返回的产品ID</param>
  20108. /// <param name="goodsCode">返回的产品Code</param>
  20109. /// <param name="goodsName">返回的产品名称</param>
  20110. /// <param name="groutingUserID">返回的注浆者ID</param>
  20111. /// <returns>string</returns>
  20112. /// <remarks>
  20113. /// 王鑫 2017.7.20 新建
  20114. /// </remarks>
  20115. private static string AddRecydingFlagWorkPiece(IDBTransaction oracleTrConn,
  20116. ProcedureEntity procedure,
  20117. DataTable barcodeTable,
  20118. SUserInfo sUserInfo,
  20119. out int goodsID,
  20120. out string goodsCode,
  20121. out string goodsName,
  20122. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  20123. {
  20124. try
  20125. {
  20126. int deleteRow = 0;
  20127. goodsID = Constant.INT_IS_ZERO;
  20128. goodsCode = null;
  20129. goodsName = null;
  20130. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  20131. // 获得账务日期
  20132. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  20133. string errMsg = string.Empty;
  20134. // 本批采集的批次号
  20135. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  20136. // 条码信息
  20137. string logoName_Temp = "";
  20138. string logoCode_Temp = "";
  20139. string groutingdate_Temp = "";
  20140. foreach (DataRow barcodeRow in barcodeTable.Rows)
  20141. {
  20142. // 条码
  20143. string barcode = barcodeRow["Barcode"].ToString();
  20144. if (string.IsNullOrEmpty(barcode))
  20145. {
  20146. throw new Exception("传入的条码号为空");
  20147. }
  20148. // 生产工号
  20149. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  20150. // 生产工号
  20151. string workUserCode = barcodeRow["UserCode"].ToString();
  20152. //#region 校验条码有效性
  20153. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  20154. //if (!string.IsNullOrEmpty(errMsg))
  20155. //{
  20156. // return errMsg;
  20157. //}
  20158. //#endregion
  20159. if (procedure.CollectType == 1)
  20160. {
  20161. #region 校验条码有效性
  20162. errMsg = CheckRecyclingFlagBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  20163. if (!string.IsNullOrEmpty(errMsg))
  20164. {
  20165. logoName = "";
  20166. logoCode = "";
  20167. groutingdate = "";
  20168. return errMsg;
  20169. }
  20170. #endregion
  20171. }
  20172. else
  20173. {
  20174. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  20175. tp_pm_groutingdailydetail.goodscode,
  20176. tp_pm_groutingdailydetail.goodsname,
  20177. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  20178. tp_pm_groutingdailydetail.groutingdate,
  20179. tp_mst_logo.logoid,
  20180. tp_mst_logo.logocode,
  20181. tp_mst_logo.logoname
  20182. from tp_pm_groutingdailydetail
  20183. left join tp_mst_logo
  20184. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  20185. where tp_pm_groutingdailydetail.barcode=:barcode
  20186. ";
  20187. OracleParameter[] paras = new OracleParameter[] {
  20188. new OracleParameter(":barcode",barcode),
  20189. };
  20190. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  20191. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  20192. {
  20193. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  20194. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  20195. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  20196. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  20197. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  20198. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  20199. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  20200. logoName_Temp = logoName;
  20201. logoCode_Temp = logoCode;
  20202. groutingdate_Temp = groutingdate;
  20203. }
  20204. }
  20205. #region 数据处理
  20206. #region 处理废弃数据并转回收数据为在产数据
  20207. //////string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  20208. //////OracleParameter[] queryparas = new OracleParameter[]{
  20209. ////// new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  20210. //////};
  20211. //////DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  20212. //////if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  20213. //////{
  20214. ////// errMsg = "未设定干补等级";
  20215. ////// logoName = "";
  20216. ////// logoCode = "";
  20217. ////// groutingdate = "";
  20218. ////// return errMsg;
  20219. //////}
  20220. //////string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  20221. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  20222. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  20223. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  20224. UpdateUserID=:UpdateUserID
  20225. where BarCode=:barcode
  20226. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  20227. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  20228. */
  20229. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  20230. ////// string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  20231. ////// SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  20232. ////// UpdateUserID=:UpdateUserID
  20233. ////// where BarCode=:barcode
  20234. ////// and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  20235. ////// and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  20236. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set RecyclingFlag=1,
  20237. UpdateUserID=:UpdateUserID,RecyclingUserID=:RecyclingUserID,RecyclingUserCode=:RecyclingUserCode,
  20238. RecyclingTime=sysdate
  20239. where BarCode=:barcode
  20240. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode and ValueFlag=1)
  20241. and ValueFlag=1 ";
  20242. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  20243. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  20244. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  20245. new OracleParameter(":RecyclingUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  20246. new OracleParameter(":RecyclingUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  20247. };
  20248. oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  20249. string sqlUpdateGROUTString = @"update TP_PM_GROUTINGDAILYDETAIL set RecyclingFlag=1,
  20250. UpdateUserID=:UpdateUserID
  20251. where BarCode=:barcode ";
  20252. OracleParameter[] GROUTparas = new OracleParameter[]{
  20253. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  20254. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  20255. };
  20256. oracleTrConn.ExecuteNonQuery(sqlUpdateGROUTString, GROUTparas);
  20257. //modify wangx 20150623
  20258. //////OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  20259. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  20260. //////};
  20261. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  20262. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  20263. //////string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  20264. //////oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  20265. //modify wangx 20150623 end
  20266. #region
  20267. //第五步,插入回收工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  20268. // 查询新插入的生产数据ID
  20269. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  20270. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  20271. int productionDataID = 0;
  20272. if (!string.IsNullOrEmpty(idStr))
  20273. {
  20274. productionDataID = int.Parse(idStr);
  20275. }
  20276. else
  20277. {
  20278. logoName = "";
  20279. logoCode = "";
  20280. groutingdate = "";
  20281. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20282. }
  20283. int? ClassesSettingID = null;//班次配置ID
  20284. #region 第五步 添加生产者数据
  20285. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  20286. if (!string.IsNullOrEmpty(errMsg))
  20287. {
  20288. logoName = "";
  20289. logoCode = "";
  20290. groutingdate = "";
  20291. return errMsg;
  20292. }
  20293. #endregion
  20294. ProductionDataEntity productionData = new ProductionDataEntity();
  20295. #region 属性赋值
  20296. productionData.ClassesSettingID = ClassesSettingID;
  20297. productionData.ProductionDataID = Convert.ToInt32(idStr);
  20298. productionData.Barcode = barcode;
  20299. productionData.CentralizedBatchNo = centralizedBatchNo;
  20300. productionData.ProductionLineID = procedure.ProductionLineID;
  20301. productionData.ProductionLineCode = procedure.ProductionlineCode;
  20302. productionData.ProductionLineName = procedure.ProductionlineName;
  20303. productionData.CompleteProcedureID = procedure.ProcedureID;
  20304. productionData.ProcedureCode = procedure.ProcedureCode;
  20305. productionData.ProcedureName = procedure.ProcedureName;
  20306. productionData.ProcedureModel = procedure.ProcedureModel;
  20307. productionData.ModelType = procedure.ModelType;
  20308. productionData.NodeType = procedure.NodeType;
  20309. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  20310. productionData.ReworkProcedureID = null;
  20311. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  20312. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  20313. //设置干补标识,产品分级类别=9干补
  20314. ////productionData.GoodsLevelTypeID = 9;
  20315. //productionData.GoodsLevelID = int.Parse(goodsLevelID);
  20316. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  20317. productionData.OrganizationID = procedure.OrganizationID;
  20318. productionData.GoodsID = goodsID;
  20319. productionData.GoodsCode = goodsCode;
  20320. productionData.GoodsName = goodsName;
  20321. productionData.UserID = workUserID;
  20322. productionData.UserCode = barcodeRow["UserCode"].ToString();
  20323. productionData.UserName = barcodeRow["UserName"].ToString();
  20324. productionData.PieceType = procedure.PieceType;
  20325. if (barcodeRow["LogoID"].ToString() != "")
  20326. {
  20327. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  20328. }
  20329. string sqlReFire = @"select
  20330. isrefire,
  20331. logoid,GoodsLevelID,GoodsLevelTypeID
  20332. from tp_pm_inproduction where barcode=:barcode
  20333. union
  20334. select
  20335. isrefire,
  20336. logoid,GoodsLevelID,GoodsLevelTypeID
  20337. from TP_PM_InProductionTrash where barcode=:barcode
  20338. union
  20339. select
  20340. isrefire,
  20341. logoid,GoodsLevelID,GoodsLevelTypeID
  20342. from TP_PM_FinishedProduct where barcode=:barcode ";
  20343. OracleParameter[] ReFireparas = new OracleParameter[] {
  20344. new OracleParameter(":barcode",barcode),
  20345. };
  20346. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  20347. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  20348. {
  20349. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  20350. {
  20351. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  20352. }
  20353. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  20354. {
  20355. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  20356. }
  20357. if (dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"].ToString() != string.Empty)
  20358. {
  20359. productionData.GoodsLevelTypeID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  20360. productionData.GoodsLevelID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelID"]);
  20361. }
  20362. }
  20363. #endregion 属性赋值
  20364. productionData.SpecialRepairflag = 0;
  20365. string OutSpecialRepairflag = "0";// 没有什么特殊的,同干补保存生产数据共用同一个方法
  20366. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  20367. if (!string.IsNullOrEmpty(errMsg))
  20368. {
  20369. logoName = "";
  20370. logoCode = "";
  20371. groutingdate = "";
  20372. return errMsg;
  20373. }
  20374. #endregion
  20375. //第二步,回收站中数据回到在产中,设置干补标识。
  20376. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  20377. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  20378. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  20379. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  20380. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  20381. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  20382. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  20383. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  20384. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  20385. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  20386. KILNID, KILNCODE, KILNNAME, KILNCARID,
  20387. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  20388. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  20389. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  20390. :PROCEDUREMODEL, :MODELTYPE, null,
  20391. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  20392. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  20393. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  20394. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  20395. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  20396. CREATEUSERID, UPDATETIME, :UpdateUserID,
  20397. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, 1,
  20398. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  20399. KILNID, KILNCODE, KILNNAME, KILNCARID,
  20400. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,:ProcedureID ,--FlowProcedureID
  20401. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  20402. from TP_PM_InProductionTrash where barcode=:barcode ";
  20403. OracleParameter[] InProductparas = new OracleParameter[]{
  20404. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  20405. ////new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  20406. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  20407. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  20408. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  20409. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  20410. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  20411. };
  20412. //第三步,删除回收站中的条码
  20413. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  20414. OracleParameter[] TrashProductparas = new OracleParameter[]{
  20415. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  20416. };
  20417. //第四步,更新注浆表干补标识
  20418. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  20419. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  20420. // where barcode=:barcode)";
  20421. ////// string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  20422. ////// where barcode=:barcode";
  20423. ////// OracleParameter[] GroutingProductparas = new OracleParameter[]{
  20424. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  20425. ////// };
  20426. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  20427. // where barcode=:barcode ";
  20428. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  20429. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  20430. // };
  20431. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  20432. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  20433. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  20434. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  20435. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  20436. // 失败
  20437. if (deleteRow == Constant.INT_IS_ZERO)
  20438. {
  20439. logoName = "";
  20440. logoCode = "";
  20441. groutingdate = "";
  20442. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20443. }
  20444. #endregion
  20445. //#region 第五步 添加生产者数据
  20446. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  20447. //if (!string.IsNullOrEmpty(errMsg))
  20448. //{
  20449. // return errMsg;
  20450. //}
  20451. //#endregion
  20452. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  20453. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  20454. OracleParameter[] Paras = new OracleParameter[] {
  20455. new OracleParameter(":barcode",OracleDbType.Varchar2,
  20456. barcode,ParameterDirection.Input)
  20457. };
  20458. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  20459. if (ds.Tables[0].Rows.Count == 0)
  20460. {
  20461. // 2 生产数据恢复到在产生产数据
  20462. sql = @"insert into tp_pm_productiondatain
  20463. (
  20464. ProductionDataID,
  20465. BarCode,
  20466. CentralizedBatchNo,
  20467. ProductionLineID,
  20468. ProductionLineCode,
  20469. ProductionLineName,
  20470. ProcedureID,
  20471. ProcedureCode,
  20472. ProcedureName,
  20473. ProcedureModel,
  20474. ModelType,
  20475. PieceType,
  20476. IsReworked,
  20477. NodeType,
  20478. IsPublicBody,
  20479. IsReFire,
  20480. GoodsLevelID,
  20481. GoodsLevelTypeID,
  20482. SpecialRepairFlag,
  20483. OrganizationID,
  20484. GoodsID,
  20485. GoodsCode,
  20486. GoodsName,
  20487. UserID,
  20488. UserCode,
  20489. UserName,
  20490. ClassesSettingID,
  20491. KilnID,
  20492. KilnCode,
  20493. KilnName,
  20494. KilnCarID,
  20495. KilnCarCode,
  20496. KilnCarName,
  20497. KilnCarBatchNo,
  20498. KilnCarPosition,
  20499. ReworkProcedureID,
  20500. ReworkProcedureCode,
  20501. ReworkProcedureName,
  20502. GroutingDailyID,
  20503. GroutingDailyDetailID,
  20504. GroutingLineID,
  20505. GroutingLineCode,
  20506. GroutingLineName,
  20507. GMouldTypeID,
  20508. CanManyTimes,
  20509. GroutingLineDetailID,
  20510. GroutingDate,
  20511. GroutingMouldCode,
  20512. MouldCode,
  20513. GroutingUserID,
  20514. GroutingUserCode,
  20515. GroutingNum,
  20516. Remarks,
  20517. AccountDate,
  20518. SettlementFlag,
  20519. AccountID,
  20520. ValueFlag,
  20521. CreateTime,
  20522. CreateUserID,
  20523. UpdateTime,
  20524. UpdateUserID,
  20525. OPTimeStamp,
  20526. TriggerFlag,
  20527. logoid,
  20528. BackOutTime,BackOutUserID,BackOutUserCode
  20529. )
  20530. select
  20531. ProductionDataID,
  20532. BarCode,
  20533. CentralizedBatchNo,
  20534. ProductionLineID,
  20535. ProductionLineCode,
  20536. ProductionLineName,
  20537. ProcedureID,
  20538. ProcedureCode,
  20539. ProcedureName,
  20540. ProcedureModel,
  20541. ModelType,
  20542. PieceType,
  20543. IsReworked,
  20544. NodeType,
  20545. IsPublicBody,
  20546. IsReFire,
  20547. GoodsLevelID,
  20548. GoodsLevelTypeID,
  20549. SpecialRepairFlag,
  20550. OrganizationID,
  20551. GoodsID,
  20552. GoodsCode,
  20553. GoodsName,
  20554. UserID,
  20555. UserCode,
  20556. UserName,
  20557. ClassesSettingID,
  20558. KilnID,
  20559. KilnCode,
  20560. KilnName,
  20561. KilnCarID,
  20562. KilnCarCode,
  20563. KilnCarName,
  20564. KilnCarBatchNo,
  20565. KilnCarPosition,
  20566. ReworkProcedureID,
  20567. ReworkProcedureCode,
  20568. ReworkProcedureName,
  20569. GroutingDailyID,
  20570. GroutingDailyDetailID,
  20571. GroutingLineID,
  20572. GroutingLineCode,
  20573. GroutingLineName,
  20574. GMouldTypeID,
  20575. CanManyTimes,
  20576. GroutingLineDetailID,
  20577. GroutingDate,
  20578. GroutingMouldCode,
  20579. MouldCode,
  20580. GroutingUserID,
  20581. GroutingUserCode,
  20582. GroutingNum,
  20583. Remarks,
  20584. AccountDate,
  20585. SettlementFlag,
  20586. AccountID,
  20587. ValueFlag,
  20588. CreateTime,
  20589. CreateUserID,
  20590. UpdateTime,
  20591. UpdateUserID,
  20592. OPTimeStamp,
  20593. 1,
  20594. logoid,
  20595. BackOutTime,BackOutUserID,BackOutUserCode
  20596. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  20597. ";
  20598. oracleTrConn.ExecuteNonQuery(sql, Paras);
  20599. }
  20600. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  20601. #endregion 数据处理
  20602. }
  20603. logoName = logoName_Temp;
  20604. logoCode = logoCode_Temp;
  20605. groutingdate = groutingdate_Temp;
  20606. return errMsg;
  20607. }
  20608. catch (Exception ex)
  20609. {
  20610. throw ex;
  20611. }
  20612. }
  20613. /// <summary>
  20614. /// 校验回收条码有效
  20615. /// </summary>
  20616. /// <param name="oracleTrConn">连接对象</param>
  20617. /// <param name="procedureID">工序ID</param>
  20618. /// <param name="barcode">条码</param>
  20619. /// <param name="goodsID">返回的产品ID</param>
  20620. /// <param name="goodsCode">返回的产品Code</param>
  20621. /// <param name="goodsName">返回的产品名称</param>
  20622. /// <param name="groutingUserID">返回的注浆者ID</param>
  20623. /// <returns>string</returns>
  20624. /// <remarks>
  20625. /// 王鑫 2017.7.20 新建
  20626. /// </remarks>
  20627. private static string CheckRecyclingFlagBarcode(IDBTransaction oracleTrConn,
  20628. int procedureID,
  20629. string barcode,
  20630. out int goodsID,
  20631. out string goodsCode,
  20632. out string goodsName,
  20633. out string groutingUserCode,
  20634. SUserInfo sUserInfo
  20635. )
  20636. {
  20637. try
  20638. {
  20639. //OracleParameter[] paras = new OracleParameter[]{
  20640. // new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  20641. // new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  20642. // new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  20643. // new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  20644. // new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  20645. // new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  20646. // new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  20647. //};
  20648. //oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  20649. //if (!"null".Equals(paras[3].Value + ""))
  20650. //{
  20651. // goodsID = Convert.ToInt32(paras[3].Value + "");
  20652. //}
  20653. //else
  20654. //{
  20655. // goodsID = 0;
  20656. //}
  20657. //goodsCode = paras[4].Value + "";
  20658. //goodsName = paras[5].Value + "";
  20659. //if (!"null".Equals(paras[6].Value + ""))
  20660. //{
  20661. // groutingUserCode = paras[6].Value + "";
  20662. //}
  20663. //else
  20664. //{
  20665. // groutingUserCode = null;
  20666. //}
  20667. //if ("null".Equals(paras[2].Value + ""))
  20668. //{
  20669. // return null;
  20670. //}
  20671. //return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  20672. string errorMessage = string.Empty;
  20673. goodsID = 0; goodsCode = string.Empty; goodsName = string.Empty; groutingUserCode = string.Empty;
  20674. string sqlString = @"select settingcode,settingvalue,settingdefaultvalues from tp_mst_systemsetting
  20675. where Accountid=:Accountid and settingcode in ('S_PM_017','S_PM_018','S_PM_019','S_PM_020')";
  20676. OracleParameter[] paras = new OracleParameter[]{
  20677. new OracleParameter("Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  20678. };
  20679. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20680. #region 读出系统配置 17(损坯可否回收) 18(半检不合格可否回收) 19(复检不合格可否回收) 20(次品可否回收)
  20681. int S_PM_017_Value = 0, S_PM_018_Value = 0, S_PM_019_Value = 0, S_PM_020_Value = 0;
  20682. if (ds != null && ds.Tables[0].Rows.Count > 0)
  20683. {
  20684. foreach (DataRow r in ds.Tables[0].Rows)
  20685. {
  20686. if (r["settingcode"].ToString() == "S_PM_017")
  20687. {
  20688. S_PM_017_Value = Convert.ToInt32(r["settingvalue"]);
  20689. }
  20690. else if (r["settingcode"].ToString() == "S_PM_018")
  20691. {
  20692. S_PM_018_Value = Convert.ToInt32(r["settingvalue"]);
  20693. }
  20694. else if (r["settingcode"].ToString() == "S_PM_019")
  20695. {
  20696. S_PM_019_Value = Convert.ToInt32(r["settingvalue"]);
  20697. }
  20698. else if (r["settingcode"].ToString() == "S_PM_020")
  20699. {
  20700. S_PM_020_Value = Convert.ToInt32(r["settingvalue"]);
  20701. }
  20702. }
  20703. }
  20704. #endregion
  20705. #region 第1步 查当前工序在系统是否存在
  20706. sqlString = @"select NodeType,ModelType from tp_pc_procedure where procedureid=:procedureid and ValueFlag=1";
  20707. paras = new OracleParameter[]{
  20708. new OracleParameter(":procedureid",procedureID),
  20709. };
  20710. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20711. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20712. {
  20713. errorMessage = "当前工序在系统中不存在";
  20714. return errorMessage;
  20715. }
  20716. #endregion
  20717. #region 第2步 查产品是否有效
  20718. sqlString = @"select distinct GoodsID, GoodsCode,GoodsName,UserCode,DeliverFlag
  20719. from TP_PM_GroutingDailyDetail where BarCode=:barCode and ValueFlag=1 ";
  20720. paras = new OracleParameter[]{
  20721. new OracleParameter(":barCode",barcode),
  20722. };
  20723. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20724. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20725. {
  20726. // 是否被替换
  20727. string sql = @"select count(barcode),max(newbarcode) from TP_PM_BarCodeRecord where BarCode=:barcode";
  20728. OracleParameter[] paras2 = new OracleParameter[]{
  20729. new OracleParameter(":barCode",barcode) };
  20730. DataSet ds2 = oracleTrConn.GetSqlResultToDs(sql, paras2);
  20731. if (ds2 != null && Convert.ToInt32(ds2.Tables[0].Rows[0][0]) == 0)
  20732. {
  20733. // 无效条件
  20734. errorMessage = "无效条码[" + barcode + "]";
  20735. }
  20736. else
  20737. {
  20738. errorMessage = "条码[" + barcode + "]已经被[" + ds2.Tables[0].Rows[0][1] + "]替换";
  20739. }
  20740. }
  20741. else
  20742. {
  20743. //if (Convert.ToInt32(ds.Tables[0].Rows[0]["DeliverFlag"]) != 1)
  20744. //{
  20745. // errorMessage = "条码[" + barcode + "]未交坯,不能回收";
  20746. //}
  20747. //else
  20748. {
  20749. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  20750. goodsName = ds.Tables[0].Rows[0]["goodsName"].ToString();
  20751. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  20752. groutingUserCode = ds.Tables[0].Rows[0]["UserCode"].ToString();
  20753. }
  20754. }
  20755. if (!string.IsNullOrEmpty(errorMessage))
  20756. {
  20757. return errorMessage;
  20758. }
  20759. #endregion
  20760. #region 第3步 查产品是否在当前工序配置
  20761. sqlString = @"select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  20762. paras = new OracleParameter[]{
  20763. new OracleParameter(":GoodsID",goodsID),
  20764. new OracleParameter(":ProcedureID",procedureID),
  20765. };
  20766. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20767. if (Convert.ToInt32(ds.Tables[0].Rows[0][0]) != 1)
  20768. {
  20769. errorMessage =
  20770. @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + goodsCode + "]没有在该工序中配置";
  20771. }
  20772. if (!string.IsNullOrEmpty(errorMessage))
  20773. {
  20774. return errorMessage;
  20775. }
  20776. #endregion
  20777. #region 第4步,校验在产产品不能回收
  20778. string sqlString2 = "select InScrapFlag,ISREWORKFLAG from tp_pm_inproduction where barcode=:barcode";
  20779. OracleParameter[] parasNew = new OracleParameter[]{
  20780. new OracleParameter(":barcode",barcode) };
  20781. DataSet dsNew = oracleTrConn.GetSqlResultToDs(sqlString2, parasNew);
  20782. if (dsNew != null && dsNew.Tables[0].Rows.Count > 0)
  20783. {
  20784. if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["InScrapFlag"]) == 1)
  20785. {
  20786. errorMessage = "报损待审产品不能回收";
  20787. }
  20788. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  20789. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 1)
  20790. {
  20791. errorMessage = "半检返工中不能回收";
  20792. }
  20793. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 2)
  20794. {
  20795. errorMessage = "半检返工中不能回收";
  20796. }
  20797. else
  20798. {
  20799. errorMessage = "在产产品不能回收";
  20800. }
  20801. }
  20802. if (!string.IsNullOrEmpty(errorMessage))
  20803. {
  20804. return errorMessage;
  20805. }
  20806. #endregion
  20807. #region 第4步,校验报损表数据是否可以回收
  20808. sqlString = @"select GoodsLevelID,GoodsLevelTypeID,ScrapType,SpecialRepairFlag,RecyclingFlag,AuditStatus,SpecialRepairUserID from TP_PM_ScrapProduct where barcode=:barcode
  20809. and ValueFlag=1 and CreateTime=
  20810. (select max(CreateTime) from TP_PM_ScrapProduct where barcode=:barcode
  20811. and ValueFlag=1 )";
  20812. paras = new OracleParameter[]{
  20813. new OracleParameter(":barcode",barcode),
  20814. };
  20815. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20816. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20817. {
  20818. errorMessage = "不存在回收数据,不能回收";
  20819. }
  20820. else
  20821. {
  20822. if (Convert.ToInt32(ds.Tables[0].Rows[0]["AuditStatus"]) == 1 &&
  20823. Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) != 9 &&
  20824. Convert.ToInt32(ds.Tables[0].Rows[0]["RecyclingFlag"]) == 0)
  20825. {
  20826. // 可回收
  20827. string sqlString3 = "select 1 from tp_pm_inproductiontrash where barcode=:barcode";
  20828. OracleParameter[] parasNewt = new OracleParameter[]{
  20829. new OracleParameter(":barcode",barcode) };
  20830. DataSet dsNewt = oracleTrConn.GetSqlResultToDs(sqlString3, parasNewt);
  20831. if (dsNewt == null || dsNewt.Tables[0].Rows.Count == 0)
  20832. {
  20833. errorMessage = "报损数据被清除,不能回收";
  20834. }
  20835. }
  20836. else
  20837. {
  20838. errorMessage = "不存在回收数据,不能回收";
  20839. }
  20840. if (!string.IsNullOrEmpty(errorMessage))
  20841. {
  20842. if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 0)
  20843. {
  20844. // 损坯
  20845. if (S_PM_017_Value == 0)
  20846. {
  20847. errorMessage = "系统参数产品回收-报损未启用";
  20848. }
  20849. }
  20850. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 1)
  20851. {
  20852. // 成检
  20853. if (S_PM_020_Value == 0)
  20854. {
  20855. errorMessage = "系统参数产品回收-次品未启用";
  20856. }
  20857. }
  20858. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 2)
  20859. {
  20860. // 半检
  20861. if (S_PM_018_Value == 0)
  20862. {
  20863. errorMessage = "系统参数产品回收-半检不合格未启用";
  20864. }
  20865. }
  20866. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 3)
  20867. {
  20868. // 复检
  20869. if (S_PM_019_Value == 0)
  20870. {
  20871. errorMessage = "系统参数产品回收-复检不合格未启用";
  20872. }
  20873. }
  20874. }
  20875. }
  20876. #endregion
  20877. return errorMessage;
  20878. }
  20879. catch (Exception ex)
  20880. {
  20881. throw ex;
  20882. }
  20883. }
  20884. /// <summary>
  20885. /// 按条码判定是否为首节点
  20886. /// 从TP_PM_GroutingDailyDetail表中的BEGINNINGFLAG字段判定是否为首节点
  20887. /// "0":非首节点,"1":首节点
  20888. /// </summary>
  20889. /// <param name="oracleTrConn">数据连接</param>
  20890. /// <param name="barCode">条码</param>
  20891. /// <returns>是否首节点</returns>
  20892. /// xuwei add 2019-09-23
  20893. //public static bool IsNodeBegin(IDBTransaction oracleTrConn, string barCode)
  20894. //{
  20895. // bool result = false;
  20896. // try
  20897. // {
  20898. // if (barCode != "")
  20899. // {
  20900. // string flag = oracleTrConn.GetSqlResultToStr($@"select BEGINNINGFLAG as flag
  20901. // from TP_PM_GroutingDailyDetail
  20902. // where BARCODE = {barCode}");
  20903. // if (flag == "") throw new Exception("条码无效!请检查!");
  20904. // result = flag == "0" ? true : false;
  20905. // }
  20906. // }
  20907. // catch (Exception ex)
  20908. // {
  20909. // throw ex;
  20910. // }
  20911. // return result;
  20912. //}
  20913. //public static bool IsNodeBegin(IDBConnection oracleTrConn, string barCode)
  20914. //{
  20915. // bool result = false;
  20916. // try
  20917. // {
  20918. // if (barCode != "")
  20919. // {
  20920. // string flag = oracleTrConn.GetSqlResultToStr($@"select BEGINNINGFLAG as flag
  20921. // from TP_PM_GroutingDailyDetail
  20922. // where BARCODE = {barCode}");
  20923. // if (flag == "") throw new Exception("条码无效!请检查!");
  20924. // result = flag == "0" ? true : false;
  20925. // }
  20926. // }
  20927. // catch (Exception ex)
  20928. // {
  20929. // throw ex;
  20930. // }
  20931. // return result;
  20932. //}
  20933. /// <summary>
  20934. /// 按条码判定是否为首节点(调整为复用方法)
  20935. /// 从TP_PM_GroutingDailyDetail表中的BEGINNINGFLAG字段判定是否为首节点
  20936. /// "0":非首节点,"1":首节点,"-1":条码无效
  20937. /// </summary>
  20938. /// <param name="oracleTrConn">数据连接</param>
  20939. /// <param name="barCode">条码</param>
  20940. /// <returns>是否首节点</returns>
  20941. /// xuwei add 2019-09-26
  20942. public static int IsNodeBegin<T>(T oracleTrConn, string barCode)
  20943. {
  20944. Type t = typeof(T);
  20945. int result = -1;
  20946. try
  20947. {
  20948. if (barCode != "")
  20949. {
  20950. OracleParameter[] parasNew = new OracleParameter[]{
  20951. new OracleParameter(":barcode",barCode) };
  20952. string flag = t.GetMethod("GetSqlResultToStr")
  20953. .Invoke(oracleTrConn, new object[] { $@"select BEGINNINGFLAG as flag
  20954. from TP_PM_GroutingDailyDetail
  20955. where BARCODE = :barcode", parasNew }).ToString();
  20956. //if (flag == "") throw new Exception("无效条码,请检查!");
  20957. //xuwei fix 2019-09-26 找不到和非首节点均返回0
  20958. // 返修指定首节点时,判断错误
  20959. if (string.IsNullOrWhiteSpace(flag))
  20960. {
  20961. return -1;
  20962. }
  20963. result = (flag == "0" ? 1 : 0);
  20964. }
  20965. }
  20966. catch (Exception ex)
  20967. {
  20968. throw ex;
  20969. }
  20970. return result;
  20971. }
  20972. }
  20973. }