PMModuleLogicPartial.cs 314 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PMModuleLogic.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.CMNModuleService;
  19. using Dongke.IBOSS.PRD.Service.DataModels;
  20. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService;
  21. using Dongke.IBOSS.PRD.WCF.DataModels;
  22. using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
  23. using Newtonsoft.Json;
  24. using Newtonsoft.Json.Linq;
  25. using Oracle.ManagedDataAccess.Client;
  26. namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
  27. {
  28. /// <summary>
  29. /// 生产管理信息与数据库的交互类
  30. /// </summary>
  31. public partial class PMModuleLogic
  32. {
  33. #region 注浆日报表
  34. /// <summary>
  35. /// 获得注浆日报表
  36. /// </summary>
  37. /// <param name="groutingDailyEntity">注浆日报实体</param>
  38. /// <param name="user">用户基本信息</param>
  39. /// <returns>数据源Dataset</returns>
  40. /// <remarks>
  41. /// 庄天威 2014.09.10 新建
  42. /// </remarks>
  43. public static DataSet GetGroutingDaily(GroutingDailyEntity groutingDailyEntity, SUserInfo user)
  44. {
  45. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  46. try
  47. {
  48. con.Open();
  49. OracleParameter[] paras = new OracleParameter[]{
  50. new OracleParameter("GroutingDailyID",OracleDbType.Int32,
  51. groutingDailyEntity.GroutingDailyID,ParameterDirection.Input),
  52. new OracleParameter("AccountID",OracleDbType.Int32,
  53. user.AccountID,ParameterDirection.Input),
  54. new OracleParameter("GroutingLineCode",OracleDbType.NVarchar2,
  55. groutingDailyEntity.GroutingLineCode,ParameterDirection.Input),
  56. new OracleParameter("GroutingLineName",OracleDbType.NVarchar2,
  57. groutingDailyEntity.GroutingLineName,ParameterDirection.Input),
  58. new OracleParameter("GroutingDateStart",OracleDbType.Date,
  59. groutingDailyEntity.GroutingDate,ParameterDirection.Input),
  60. new OracleParameter("GroutingDateEnd",OracleDbType.Date,
  61. groutingDailyEntity.GroutingDateEnd,ParameterDirection.Input),
  62. new OracleParameter("GroutingMouldCode",OracleDbType.NVarchar2,
  63. groutingDailyEntity.GroutingMouldCode,ParameterDirection.Input),
  64. new OracleParameter("GoodsCode",OracleDbType.NVarchar2,
  65. groutingDailyEntity.GoodsCode,ParameterDirection.Input),
  66. new OracleParameter("GoodsName",OracleDbType.NVarchar2,
  67. groutingDailyEntity.GoodsName,ParameterDirection.Input),
  68. new OracleParameter("GroutingFlag",OracleDbType.Int32,
  69. groutingDailyEntity.GroutingFlag,ParameterDirection.Input),
  70. new OracleParameter("ScrapFlag",OracleDbType.Int32,
  71. groutingDailyEntity.ScrapFlag,ParameterDirection.Input),
  72. new OracleParameter("GMouldTypeID",OracleDbType.Int32,
  73. groutingDailyEntity.GMouldTypeID,ParameterDirection.Input),
  74. new OracleParameter("remarks",OracleDbType.NVarchar2,
  75. groutingDailyEntity.Remarks,ParameterDirection.Input),
  76. new OracleParameter("UserId",OracleDbType.Int32,
  77. user.UserID,ParameterDirection.Input),
  78. new OracleParameter("PurviewType",OracleDbType.Int32,
  79. groutingDailyEntity.Purview,ParameterDirection.Input),
  80. new OracleParameter("rs_result",OracleDbType.RefCursor,
  81. ParameterDirection.Output),
  82. };
  83. DataSet ds = con.ExecStoredProcedure("PRO_PM_GetGroutingDaily", paras);
  84. return ds;
  85. }
  86. catch (Exception ex)
  87. {
  88. throw ex;
  89. }
  90. finally
  91. {
  92. if (con.ConnState == ConnectionState.Open)
  93. {
  94. con.Close();
  95. }
  96. }
  97. }
  98. /// <summary>
  99. /// 获得注浆日报表明细(根据注浆日报表ID)
  100. /// </summary>
  101. /// <param name="DailyMainId">注浆日报主ID</param>
  102. /// <param name="user">用户基本信息</param>
  103. /// <returns>Dataset数据源</returns>
  104. /// <remarks>
  105. /// 庄天威 2014.09.10 新建
  106. /// </remarks>
  107. public static DataSet GetGroutingDailyDetailByMainId(int DailyMainId, SUserInfo user)
  108. {
  109. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  110. try
  111. {
  112. con.Open();
  113. OracleParameter[] paras = new OracleParameter[]{
  114. new OracleParameter("AccountID",OracleDbType.Int32,
  115. user.AccountID,ParameterDirection.Input),
  116. new OracleParameter("GroutingDailyID",OracleDbType.Int32,
  117. DailyMainId,ParameterDirection.Input),
  118. new OracleParameter("rs_result",OracleDbType.RefCursor,
  119. ParameterDirection.Output),
  120. };
  121. DataSet ds = con.ExecStoredProcedure("PRO_PM_GetGDailyDetailByMainId", paras);
  122. return ds;
  123. }
  124. catch (Exception ex)
  125. {
  126. throw ex;
  127. }
  128. finally
  129. {
  130. if (con.ConnState == ConnectionState.Open)
  131. {
  132. con.Close();
  133. }
  134. }
  135. }
  136. /// <summary>
  137. /// 获得注浆产品(根据注浆日报明细ID)
  138. /// </summary>
  139. /// <param name="DailyDetailId">注浆日报明细ID</param>
  140. /// <param name="user">用户基本信息</param>
  141. /// <returns>string条码字符串集合</returns>
  142. /// <remarks>
  143. /// 庄天威 2014.09.10 新建
  144. /// </remarks>
  145. public static string GetGroutingProductByDetailId(int DailyDetailId, SUserInfo user)
  146. {
  147. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  148. try
  149. {
  150. con.Open();
  151. StringBuilder sbSql = new StringBuilder();
  152. sbSql.Append(" select Barcode from TP_PM_GroutingProduct where GroutingDailyDetailID=" + DailyDetailId);
  153. DataSet dsProduct = con.GetSqlResultToDs(sbSql.ToString(), null);
  154. StringBuilder sbBarCodeList = new StringBuilder();
  155. if (dsProduct.Tables.Count != 0)
  156. {
  157. foreach (DataRow dr in dsProduct.Tables[0].Rows)
  158. {
  159. sbBarCodeList.Append(dr[0].ToString() + ",");
  160. }
  161. }
  162. if (sbBarCodeList.Length != 0)
  163. {
  164. return sbBarCodeList.ToString().Substring(0, sbBarCodeList.Length - 1);
  165. }
  166. else
  167. {
  168. return "";
  169. }
  170. }
  171. catch (Exception ex)
  172. {
  173. throw ex;
  174. }
  175. finally
  176. {
  177. if (con.ConnState == ConnectionState.Open)
  178. {
  179. con.Close();
  180. }
  181. }
  182. }
  183. /// <summary>
  184. /// 查看某成型线今天是否注浆
  185. /// </summary>
  186. /// <param name="GroutingLineID">成型线ID</param>
  187. /// <param name="GroutingDate">注浆时间</param>
  188. /// <returns>int</returns>
  189. /// <remarks>
  190. /// 庄天威 2014.09.29 新建
  191. /// </remarks>
  192. public static int GetCanManyTimes(int GroutingLineID, DateTime GroutingDate)
  193. {
  194. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  195. try
  196. {
  197. con.Open();
  198. StringBuilder sbSql = new StringBuilder();
  199. sbSql.Append("select GroutingdailyId from TP_PM_GroutingDaily");
  200. sbSql.Append(" where Groutingdate = to_date('" + GroutingDate.ToString() + "','yyyy-MM-dd hh24:mi:ss')");
  201. sbSql.Append(" and CanManyTimes = 0 and GroutingLineID = " + GroutingLineID);
  202. DataTable dtReturn = con.GetSqlResultToDt(sbSql.ToString(), null);
  203. if (dtReturn != null)
  204. {
  205. return dtReturn.Rows.Count;
  206. }
  207. else
  208. {
  209. return 0;
  210. }
  211. }
  212. catch (Exception ex)
  213. {
  214. throw ex;
  215. }
  216. finally
  217. {
  218. if (con.ConnState == ConnectionState.Open)
  219. {
  220. con.Close();
  221. }
  222. }
  223. }
  224. /// <summary>
  225. /// 根据成型线ID获取注浆明细信息(外联条码)
  226. /// </summary>
  227. /// <param name="GroutingLineIds">成型线ID集</param>
  228. /// <param name="GroutingDateStart">注浆时间起始</param>
  229. /// <param name="GroutingDateEnd">注浆时间终止</param>
  230. /// <param name="user">用户基本信息</param>
  231. /// <returns>DataSet</returns>
  232. /// <remarks>
  233. /// 庄天威 2014.09.30 新建
  234. /// </remarks>
  235. public static DataSet GetGDailyDetailLeftBarCode(string GroutingLineIds, DateTime? GroutingDateStart,
  236. DateTime? GroutingDateEnd, SUserInfo user)
  237. {
  238. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  239. try
  240. {
  241. con.Open();
  242. string GroutingDateStartStr = null;
  243. string GroutingDateEndStr = null;
  244. if (GroutingDateStart != null)
  245. {
  246. GroutingDateStartStr = GroutingDateStart.ToString();
  247. }
  248. if (GroutingDateEnd != null)
  249. {
  250. GroutingDateEndStr = GroutingDateEnd.ToString();
  251. }
  252. OracleParameter[] paras = new OracleParameter[]{
  253. new OracleParameter("GroutingLineID",OracleDbType.NVarchar2,
  254. GroutingLineIds,ParameterDirection.Input),
  255. new OracleParameter("GroutingDateStart",OracleDbType.NVarchar2,
  256. GroutingDateStartStr,ParameterDirection.Input),
  257. new OracleParameter("GroutingDateEnd",OracleDbType.NVarchar2,
  258. GroutingDateEndStr,ParameterDirection.Input),
  259. new OracleParameter("AccountID",OracleDbType.Int32,
  260. user.AccountID,ParameterDirection.Input),
  261. new OracleParameter("rs_result",OracleDbType.RefCursor,
  262. ParameterDirection.Output)
  263. };
  264. DataSet ds = con.ExecStoredProcedure("PRO_PM_GetGDailyDetailLBarCode", paras);
  265. return ds;
  266. }
  267. catch (Exception ex)
  268. {
  269. throw ex;
  270. }
  271. finally
  272. {
  273. if (con.ConnState == ConnectionState.Open)
  274. {
  275. con.Close();
  276. }
  277. }
  278. }
  279. /// <summary>
  280. /// 条码检索
  281. /// </summary>
  282. /// <param name="gbEntity">条码检索实体</param>
  283. /// <param name="user">用户基本信息</param>
  284. /// <returns>数据源Dataset</returns>
  285. /// <remarks>
  286. /// 庄天威 2014.09.10 新建
  287. /// </remarks>
  288. public static DataSet GetBarCode(GetBarCodeEntity gbEntity, SUserInfo user)
  289. {
  290. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  291. try
  292. {
  293. con.Open();
  294. OracleParameter[] paras = new OracleParameter[]{
  295. new OracleParameter("In_GroutingLineCode",OracleDbType.NVarchar2,
  296. gbEntity.GroutingLineCode,ParameterDirection.Input),
  297. new OracleParameter("In_GroutingLineDetailCode",OracleDbType.NVarchar2,
  298. gbEntity.GroutingLineDetailCode,ParameterDirection.Input),
  299. new OracleParameter("In_GroutingUserCode",OracleDbType.NVarchar2,
  300. gbEntity.GroutingUserCode,ParameterDirection.Input),
  301. new OracleParameter("In_GroutingDateS",OracleDbType.Date,
  302. gbEntity.GroutingDateS,ParameterDirection.Input),
  303. new OracleParameter("In_GroutingDateE",OracleDbType.Date,
  304. gbEntity.GroutingDateE,ParameterDirection.Input),
  305. new OracleParameter("In_AccountID",OracleDbType.Int32,
  306. user.AccountID,ParameterDirection.Input),
  307. new OracleParameter("Out_Result",OracleDbType.RefCursor,
  308. ParameterDirection.Output)
  309. };
  310. DataSet ds = con.ExecStoredProcedure("PRO_PM_GetBarCode", paras);
  311. return ds;
  312. }
  313. catch (Exception ex)
  314. {
  315. throw ex;
  316. }
  317. finally
  318. {
  319. if (con.ConnState == ConnectionState.Open)
  320. {
  321. con.Close();
  322. }
  323. }
  324. }
  325. #endregion
  326. #region 废弃产品
  327. /// <summary>
  328. /// 根据条码获取该产品的在产信息以及生产数据
  329. /// </summary>
  330. /// <param name="Barcode">产品条码</param>
  331. /// <returns>装有两个DataTable的数据集,第一个是在产信息,第二个是生产数据</returns>
  332. public static DataSet GetInProductionAndProductionData(string BarCode, SUserInfo sUserInfo)
  333. {
  334. DataSet dsList = new DataSet();
  335. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  336. try
  337. {
  338. con.Open();
  339. StringBuilder sbSql = new StringBuilder();
  340. ////sbSql.Append("Select inp.*,pt.ProcedureModelTypeID from TP_PM_InProduction inp ");
  341. ////sbSql.Append(" Inner join TP_PC_Procedure p");
  342. //////sbSql.Append(" On inp.CompleteProcedureID = p.ProcedureID");
  343. ////sbSql.Append(" On inp.FlowProcedureID = p.ProcedureID");
  344. ////sbSql.Append(" Inner join TP_SYS_ProcedureModelType pt");
  345. ////sbSql.Append(" On p.ModelType = pt.ProcedureModelTypeID");
  346. ////sbSql.Append(" where inp.Barcode=:Barcode and inp.ValueFlag=1");
  347. sbSql.Append("Select inp.*, p.ProcedureCode,p.ProcedureName, inp.ModelType as ProcedureModelTypeID,1 as endmode from TP_PM_InProduction inp ");
  348. sbSql.Append(" inner join tp_pc_Procedure p on p.ProcedureID = inp.ProcedureID ");
  349. sbSql.Append(" where inp.Barcode=:Barcode and inp.ValueFlag=1");
  350. OracleParameter[] Paras = new OracleParameter[]{
  351. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  352. BarCode,ParameterDirection.Input),
  353. };
  354. DataTable dtProduction = con.GetSqlResultToDt(sbSql.ToString(), Paras);
  355. if (dtProduction != null)
  356. {
  357. if (dtProduction.Rows.Count != 0)
  358. {
  359. dsList.Tables.Add(dtProduction);
  360. }
  361. else
  362. {
  363. //在产产品不存在的话,看看是不是变成了成品
  364. sbSql.Clear();
  365. sbSql.Append("Select fp.*,2 as endmode from TP_PM_FinishedProduct fp ");
  366. sbSql.Append(" where fp.Barcode=:Barcode and fp.ValueFlag=1");
  367. dtProduction = con.GetSqlResultToDt(sbSql.ToString(), Paras);
  368. if (dtProduction != null)
  369. {
  370. dsList.Tables.Add(dtProduction);
  371. }
  372. }
  373. }
  374. else
  375. {
  376. return null;
  377. }
  378. DataSet sysSetting = CommonModuleLogic.CommonModuleLogic.GetSysSettingBySettingType("S_PM_015", sUserInfo);
  379. string spm015 = null;
  380. if (sysSetting != null && sysSetting.Tables.Count > 0 && sysSetting.Tables[0].Rows.Count > 0)
  381. {
  382. spm015 = sysSetting.Tables[0].Rows[0]["SettingValue"] + "";
  383. }
  384. sbSql.Clear();
  385. sbSql.Append("Select ProductionDataID,ProcedureID,ProcedureName,ProcedureCode from TP_PM_ProductionDataIn where Barcode=:Barcode and ValueFlag=1 ");
  386. // 报损不能选成型责任
  387. if ("0" == spm015)
  388. {
  389. sbSql.Append(" and MODELTYPE <> 5");
  390. }
  391. sbSql.Append(" order by ProductionDataid");
  392. DataTable dtProductionData = con.GetSqlResultToDt(sbSql.ToString(), Paras);
  393. if (dtProductionData != null)
  394. {
  395. dsList.Tables.Add(dtProductionData);
  396. }
  397. else
  398. {
  399. return null;
  400. }
  401. return dsList;
  402. }
  403. catch (Exception ex)
  404. {
  405. throw ex;
  406. }
  407. finally
  408. {
  409. if (con.ConnState == ConnectionState.Open)
  410. {
  411. con.Close();
  412. }
  413. }
  414. }
  415. /// <summary>
  416. /// 根据页面条件获取废弃产品一览
  417. /// </summary>
  418. /// <param name="selectProEntity">废弃产品</param>
  419. /// <param name="userInfo">用户基本信息</param>
  420. /// <returns>DataSet</returns>
  421. public static DataSet GetScrapProduct(ScrapProductEntity selectProEntity, SUserInfo userInfo)
  422. {
  423. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  424. try
  425. {
  426. con.Open();
  427. OracleParameter[] paras = new OracleParameter[]{
  428. new OracleParameter("in_ProductionLineCode",OracleDbType.NVarchar2,
  429. selectProEntity.ProductionLineCode,ParameterDirection.Input),
  430. new OracleParameter("in_ProductionLineName",OracleDbType.NVarchar2,
  431. selectProEntity.ProductionLineName,ParameterDirection.Input),
  432. new OracleParameter("in_ResponProcedureCode",OracleDbType.NVarchar2,
  433. selectProEntity.ResponProcedureCode,ParameterDirection.Input),
  434. new OracleParameter("in_ResponProcedureName",OracleDbType.NVarchar2,
  435. selectProEntity.ResponProcedureName,ParameterDirection.Input),
  436. new OracleParameter("in_ScrapProductID",OracleDbType.Int32,
  437. selectProEntity.ScrapProductID,ParameterDirection.Input),
  438. new OracleParameter("in_BarCode",OracleDbType.NVarchar2,
  439. selectProEntity.BarCode,ParameterDirection.Input),
  440. //new OracleParameter("in_ResponUserID",OracleDbType.Int32,
  441. // selectProEntity.ResponUserID,ParameterDirection.Input),
  442. new OracleParameter("in_ResponUserCode",OracleDbType.Varchar2,
  443. selectProEntity.ResponUserCode,ParameterDirection.Input),
  444. new OracleParameter("in_GoodsCode",OracleDbType.NVarchar2,
  445. selectProEntity.GoodsCode,ParameterDirection.Input),
  446. new OracleParameter("in_GoodsName",OracleDbType.NVarchar2,
  447. selectProEntity.GoodsName,ParameterDirection.Input),
  448. new OracleParameter("in_Rreason",OracleDbType.NVarchar2,
  449. selectProEntity.Rreason,ParameterDirection.Input),
  450. new OracleParameter("in_Remarks",OracleDbType.NVarchar2,
  451. selectProEntity.Remarks,ParameterDirection.Input),
  452. new OracleParameter("in_ScrapDateStart",OracleDbType.Date,
  453. selectProEntity.ScrapDate,ParameterDirection.Input),
  454. new OracleParameter("in_ScrapDateEnd",OracleDbType.Date,
  455. selectProEntity.ScrapDateEnd,ParameterDirection.Input),
  456. new OracleParameter("in_AccountID",OracleDbType.Int32,
  457. userInfo.AccountID,ParameterDirection.Input),
  458. new OracleParameter("in_AuditStatus",OracleDbType.Int32,
  459. selectProEntity.AuditStatus,ParameterDirection.Input),
  460. new OracleParameter("in_GroutingUserCode",OracleDbType.Varchar2,
  461. selectProEntity.GroutingUserCode,ParameterDirection.Input),
  462. new OracleParameter("out_result",OracleDbType.RefCursor,
  463. ParameterDirection.Output),
  464. };
  465. DataSet dsReturn = con.ExecStoredProcedure("PRO_PM_GetScrapProduct", paras);
  466. return dsReturn;
  467. }
  468. catch (Exception ex)
  469. {
  470. throw ex;
  471. }
  472. finally
  473. {
  474. if (con.ConnState == ConnectionState.Open)
  475. {
  476. con.Close();
  477. }
  478. }
  479. }
  480. /// <summary>
  481. /// 根据责任工序ID获取责任人列表
  482. /// </summary>
  483. /// <param name="ResponProcedureId">责任工序ID</param>
  484. /// <returns>DataSet</returns>
  485. public static DataSet GetScrapResponsibleByResponProcedureID(int ResponProcedureId)
  486. {
  487. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  488. try
  489. {
  490. con.Open();
  491. string strSql = "Select * from TP_PM_ScrapResponsible where ValueFlag=1 and ResponProcedureID=" + ResponProcedureId;
  492. DataSet dsReturn = con.GetSqlResultToDs(strSql);
  493. return dsReturn;
  494. }
  495. catch (Exception ex)
  496. {
  497. throw ex;
  498. }
  499. finally
  500. {
  501. if (con.ConnState == ConnectionState.Open)
  502. {
  503. con.Close();
  504. }
  505. }
  506. }
  507. /// <summary>
  508. /// 根据废弃产品ID获取责任人列表
  509. /// </summary>
  510. /// <param name="SPId">废弃产品ID</param>
  511. /// <returns>DataSet</returns>
  512. public static DataSet GetScrapResponsibleBySPId(int SPId)
  513. {
  514. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  515. try
  516. {
  517. con.Open();
  518. string strSql = @"Select sr.*,userinfo.userName from TP_PM_ScrapResponsible sr
  519. inner join TP_MST_User userinfo
  520. on sr.UserID = userinfo.UserID
  521. where ScrapProductID=" + SPId;
  522. DataSet dsReturn = con.GetSqlResultToDs(strSql);
  523. return dsReturn;
  524. }
  525. catch (Exception ex)
  526. {
  527. throw ex;
  528. }
  529. finally
  530. {
  531. if (con.ConnState == ConnectionState.Open)
  532. {
  533. con.Close();
  534. }
  535. }
  536. }
  537. /// <summary>
  538. /// 根据废弃产品ID获取责任工序
  539. /// </summary>
  540. /// <param name="SPId">废弃产品ID</param>
  541. /// <returns>DataSet</returns>
  542. public static DataSet GetResponProcedureBySPId(int SPId)
  543. {
  544. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  545. try
  546. {
  547. con.Open();
  548. string strSql = "Select * from TP_PM_ResponProcedure where ValueFlag=1 and ScrapProductID=" + SPId;
  549. DataSet dsReturn = con.GetSqlResultToDs(strSql);
  550. return dsReturn;
  551. }
  552. catch (Exception ex)
  553. {
  554. throw ex;
  555. }
  556. finally
  557. {
  558. if (con.ConnState == ConnectionState.Open)
  559. {
  560. con.Close();
  561. }
  562. }
  563. }
  564. /// <summary>
  565. /// 验证废弃产品唯一性
  566. /// </summary>
  567. /// <param name="BarCode">产品条码</param>
  568. /// <returns>int</returns>
  569. public static string ScrapProductChack(string BarCode, SUserInfo sUserInfo)
  570. {
  571. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  572. try
  573. {
  574. con.Open();
  575. // 当前工号是否有条码所在工序的操作权限
  576. string sqlString =
  577. "SELECT inp.procedureid\n" +
  578. " ,p.procedurename\n" +
  579. " ,p.MODELTYPE\n" +
  580. " ,(SELECT 1\n" +
  581. " FROM tp_mst_userpurview t\n" +
  582. " WHERE t.purviewtype = 10\n" +
  583. " AND t.userid = :userid\n" +
  584. " AND (t.purviewid = -1 OR t.purviewid = inp.procedureid)\n" +
  585. " AND rownum = 1) userpurview\n" +
  586. " FROM tp_pm_inproduction inp\n" +
  587. " LEFT JOIN tp_pc_procedure p\n" +
  588. " ON p.procedureid = inp.procedureid\n" +
  589. " WHERE inp.barcode = :barcode";
  590. OracleParameter[] paras = new OracleParameter[]{
  591. new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  592. new OracleParameter(":barcode",OracleDbType.Varchar2, BarCode,ParameterDirection.Input),
  593. };
  594. DataTable dt = con.GetSqlResultToDt(sqlString, paras);
  595. if (dt == null || dt.Rows.Count == 0)
  596. {
  597. // 条码不在产。
  598. return "2";
  599. }
  600. object userpurview = dt.Rows[0]["userpurview"];
  601. if (userpurview == null || userpurview == DBNull.Value)
  602. {
  603. return "3:" + dt.Rows[0]["procedurename"];
  604. }
  605. int MODELTYPE = Convert.ToInt32(dt.Rows[0]["MODELTYPE"]);
  606. if (MODELTYPE == 1 ||
  607. MODELTYPE == 2 ||
  608. MODELTYPE == 3 ||
  609. MODELTYPE == 6)
  610. {
  611. return "4:该产品处于无法报损的特殊工序中";
  612. }
  613. #region 判断产品是否被挂起
  614. sqlString = "SELECT 1 AS RES\n" +
  615. " FROM TP_PM_PRODUCTSUSPEND PS\n" +
  616. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  617. " ON GDD.GROUTINGDAILYDETAILID = PS.GROUTINGDAILYDETAILID\n" +
  618. " WHERE GDD.BARCODE = :Barcode";
  619. OracleParameter[] pars = new OracleParameter[]
  620. {
  621. new OracleParameter(":Barcode",OracleDbType.NVarchar2, BarCode,ParameterDirection.Input),
  622. };
  623. object objResult = con.GetSqlResultToObj(sqlString, pars);
  624. if (objResult != null)
  625. {
  626. return "4:该产品被挂起";
  627. }
  628. #endregion
  629. /* string strSql = @"Select * from TP_PM_ScrapProduct where ValueFlag=1
  630. and BarCode='" + BarCode + "' and (AuditStatus=0 or AuditStatus=1) " ; */
  631. string strSql = "select GoodsLevelTypeID,AuditStatus from TP_PM_ScrapProduct "
  632. + " where BarCode='" + BarCode + "'and CreateTime=(select max(CreateTime) "
  633. + " from TP_PM_ScrapProduct "
  634. + " where BarCode='" + BarCode + "' and ValueFlag=1 and (AuditStatus = 0 or AuditStatus = 1) and recyclingflag=0 )"
  635. + " and ValueFlag=1 and (AuditStatus = 0 or AuditStatus = 1) and recyclingflag=0";
  636. DataSet dsReturn = con.GetSqlResultToDs(strSql);
  637. if (dsReturn.Tables[0].Rows.Count == 0)
  638. {
  639. return "1";
  640. }
  641. else
  642. {
  643. if (dsReturn.Tables[0].Rows[0]["GOODSLEVELTYPEID"].ToString().Equals("9") && dsReturn.Tables[0].Rows[0]["AUDITSTATUS"].ToString().Equals("1"))
  644. {
  645. return "1";
  646. }
  647. return "0";
  648. }
  649. }
  650. catch (Exception ex)
  651. {
  652. throw ex;
  653. }
  654. finally
  655. {
  656. if (con.ConnState == ConnectionState.Open)
  657. {
  658. con.Close();
  659. }
  660. }
  661. }
  662. #endregion
  663. #region 温湿计信息
  664. /// <summary>
  665. /// 获得温湿计信息
  666. /// </summary>
  667. /// <param name="celsiusRecordEntity">温湿计信息实体</param>
  668. /// <param name="user">用户基本信息</param>
  669. /// <returns>数据源Dataset</returns>
  670. /// <remarks>
  671. /// 庄天威 2014.09.10 新建
  672. /// </remarks>
  673. public static DataSet GetCelsiusRecord(CelsiusRecordEntity celsiusRecordEntity, SUserInfo user)
  674. {
  675. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  676. try
  677. {
  678. con.Open();
  679. OracleParameter[] paras = new OracleParameter[]{
  680. new OracleParameter("In_RecordID",OracleDbType.Int32,
  681. celsiusRecordEntity.RecordID,ParameterDirection.Input),
  682. new OracleParameter("In_PurviewType",OracleDbType.Int32,
  683. celsiusRecordEntity.PurviewType,ParameterDirection.Input),
  684. new OracleParameter("In_AccountID",OracleDbType.Int32,
  685. user.AccountID,ParameterDirection.Input),
  686. new OracleParameter("In_ThermometerID",OracleDbType.Int32,
  687. celsiusRecordEntity.ThermometerID,ParameterDirection.Input),
  688. new OracleParameter("In_ThermometerCode",OracleDbType.NVarchar2,
  689. celsiusRecordEntity.ThermometerCode,ParameterDirection.Input),
  690. new OracleParameter("In_RecorderID",OracleDbType.Int32,
  691. user.UserID,ParameterDirection.Input),
  692. new OracleParameter("In_RecordDateS",OracleDbType.Date,
  693. celsiusRecordEntity.RecordDate,ParameterDirection.Input),
  694. new OracleParameter("In_RecordDateE",OracleDbType.Date,
  695. celsiusRecordEntity.RecordDateEnd,ParameterDirection.Input),
  696. new OracleParameter("In_Remarks",OracleDbType.NVarchar2,
  697. celsiusRecordEntity.Remarks,ParameterDirection.Input),
  698. new OracleParameter("In_ManagerName",OracleDbType.NVarchar2,
  699. celsiusRecordEntity.ManagerName,ParameterDirection.Input),
  700. new OracleParameter("In_InsertTime",OracleDbType.Date,
  701. celsiusRecordEntity.InsertTime,ParameterDirection.Input),
  702. new OracleParameter("Out_Result",OracleDbType.RefCursor,
  703. ParameterDirection.Output),
  704. };
  705. DataSet ds = con.ExecStoredProcedure("PRO_PM_GetCelsiusRecord", paras);
  706. return ds;
  707. }
  708. catch (Exception ex)
  709. {
  710. throw ex;
  711. }
  712. finally
  713. {
  714. if (con.ConnState == ConnectionState.Open)
  715. {
  716. con.Close();
  717. }
  718. }
  719. }
  720. /// <summary>
  721. /// 获得温湿计信息(图表用,平均值)
  722. /// </summary>
  723. /// <param name="celsiusRecordEntity">温湿计信息实体</param>
  724. /// <param name="user">用户基本信息</param>
  725. /// <returns>数据源Dataset</returns>
  726. /// <remarks>
  727. /// 庄天威 2014.09.10 新建
  728. /// </remarks>
  729. public static DataSet GetCelsiusRecordView(CelsiusRecordEntity celsiusRecordEntity, SUserInfo user)
  730. {
  731. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  732. try
  733. {
  734. con.Open();
  735. OracleParameter[] paras = new OracleParameter[]{
  736. new OracleParameter("In_AccountID",OracleDbType.Int32,
  737. user.AccountID,ParameterDirection.Input),
  738. new OracleParameter("In_LookerID",OracleDbType.Int32,
  739. user.UserID,ParameterDirection.Input),
  740. new OracleParameter("In_ThermometerCode",OracleDbType.NVarchar2,
  741. celsiusRecordEntity.ThermometerCode,ParameterDirection.Input),
  742. new OracleParameter("In_RecordDateS",OracleDbType.Date,
  743. celsiusRecordEntity.RecordDate,ParameterDirection.Input),
  744. new OracleParameter("In_RecordDateE",OracleDbType.Date,
  745. celsiusRecordEntity.RecordDateEnd,ParameterDirection.Input),
  746. new OracleParameter("In_Remarks",OracleDbType.NVarchar2,
  747. celsiusRecordEntity.Remarks,ParameterDirection.Input),
  748. new OracleParameter("In_Days",OracleDbType.NVarchar2,
  749. celsiusRecordEntity.Days,ParameterDirection.Input),
  750. new OracleParameter("Out_Result",OracleDbType.RefCursor,
  751. ParameterDirection.Output),
  752. };
  753. DataSet ds = con.ExecStoredProcedure("PRO_PM_GetCelsiusRecordView", paras);
  754. return ds;
  755. }
  756. catch (Exception ex)
  757. {
  758. throw ex;
  759. }
  760. finally
  761. {
  762. if (con.ConnState == ConnectionState.Open)
  763. {
  764. con.Close();
  765. }
  766. }
  767. }
  768. #endregion
  769. #region 获取注浆次数(By工号)
  770. /// <summary>
  771. /// 获取注浆次数(By工号)
  772. /// </summary>
  773. /// <param name="gcEntity">查询条件实体</param>
  774. /// <param name="userInfo">当前用户</param>
  775. /// <returns>返回信息数据集</returns>
  776. public static DataSet GetGroutingCountByUser(GroutingCountByUserEntity gcEntity, SUserInfo userInfo)
  777. {
  778. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  779. try
  780. {
  781. con.Open();
  782. OracleParameter[] paras = new OracleParameter[]{
  783. new OracleParameter("In_AccountID",OracleDbType.Int32,
  784. userInfo.AccountID,ParameterDirection.Input),
  785. new OracleParameter("In_GroutingDateS",OracleDbType.Date,
  786. gcEntity.GroutingDateS,ParameterDirection.Input),
  787. new OracleParameter("In_GroutingDateE",OracleDbType.Date,
  788. gcEntity.GroutingDateE,ParameterDirection.Input),
  789. new OracleParameter("In_GroutingLineCode",OracleDbType.NVarchar2,
  790. gcEntity.GroutingLineCode,ParameterDirection.Input),
  791. new OracleParameter("In_UserId",OracleDbType.Int32,
  792. gcEntity.UserId,ParameterDirection.Input),
  793. new OracleParameter("In_UserIds",OracleDbType.NVarchar2,
  794. gcEntity.UserIds,ParameterDirection.Input),
  795. new OracleParameter("In_UserCode",OracleDbType.NVarchar2,
  796. gcEntity.UserCode,ParameterDirection.Input),
  797. new OracleParameter("In_GoodsId",OracleDbType.Int32,
  798. gcEntity.GoodsId,ParameterDirection.Input),
  799. new OracleParameter("In_GoodsIds",OracleDbType.NVarchar2,
  800. gcEntity.GoodsIds,ParameterDirection.Input),
  801. new OracleParameter("In_GoodsTypeCode",OracleDbType.NVarchar2,
  802. gcEntity.GoodsTypeCode,ParameterDirection.Input),
  803. new OracleParameter("In_GoodsCode",OracleDbType.NVarchar2,
  804. gcEntity.GoodsCode,ParameterDirection.Input),
  805. new OracleParameter("Out_Result",OracleDbType.RefCursor,
  806. ParameterDirection.Output),
  807. };
  808. DataSet ds = con.ExecStoredProcedure("PRO_RPT_GetGroutingCountByUser", paras);
  809. return ds;
  810. }
  811. catch (Exception ex)
  812. {
  813. throw ex;
  814. }
  815. finally
  816. {
  817. if (con.ConnState == ConnectionState.Open)
  818. {
  819. con.Close();
  820. }
  821. }
  822. }
  823. #endregion
  824. #region 根据条码获得在产信息
  825. /// <summary>
  826. /// 根据条码获得在产信息
  827. /// </summary>
  828. /// <param name="barcode">产品条码</param>
  829. /// <returns>DataSet</returns>
  830. public static DataSet GetInProductionByBarcode(string barcode)
  831. {
  832. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  833. try
  834. {
  835. con.Open();
  836. string sqlString = "select t.goodsid,t.goodsname,t.userid from tp_pm_InProduction t where t.barcode= " + barcode;
  837. DataSet ds = con.GetSqlResultToDs(sqlString);
  838. return ds;
  839. }
  840. catch (Exception ex)
  841. {
  842. throw ex;
  843. }
  844. finally
  845. {
  846. if (con.ConnState == ConnectionState.Open)
  847. {
  848. con.Close();
  849. }
  850. }
  851. }
  852. #endregion
  853. #region 获取生产工序计件数据
  854. /// <summary>
  855. /// 使用存储过程PRO_PM_SearchProductionData获取生产工序计件数据
  856. /// </summary>
  857. /// <param name="searchEntity">生产数据实体类</param>
  858. /// <returns>DataTable</returns>
  859. public static DataTable SearchProductionData(SearchProductionDataEntity searchEntity)
  860. {
  861. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  862. string procsql = "PRO_PM_SearchProductionData";
  863. try
  864. {
  865. IDataParameter[] paras = new OracleParameter[]
  866. {
  867. new OracleParameter("in_beginDate",OracleDbType.Date, searchEntity.BeginDate, ParameterDirection.Input),
  868. new OracleParameter("in_endDate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  869. new OracleParameter("in_procedureID", OracleDbType.Int32,searchEntity.ProcedureID, ParameterDirection.Input),
  870. new OracleParameter("in_modeltype", OracleDbType.Int32,searchEntity.ProcedureModelId, ParameterDirection.Input),
  871. new OracleParameter("in_organizationid", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  872. new OracleParameter("in_isreworked", OracleDbType.NVarchar2,searchEntity.IsRework, ParameterDirection.Input),
  873. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  874. };
  875. oracleConn.Open();
  876. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  877. if (returnDs != null && returnDs.Tables.Count > 0)
  878. {
  879. return returnDs.Tables[0];
  880. }
  881. else
  882. {
  883. return null;
  884. }
  885. }
  886. catch (Exception ex)
  887. {
  888. throw ex;
  889. }
  890. finally
  891. {
  892. if (oracleConn.ConnState == ConnectionState.Open)
  893. {
  894. oracleConn.Close();
  895. }
  896. }
  897. }
  898. /// <summary>
  899. /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据
  900. /// </summary>
  901. /// <param name="searchEntity">生产数据实体类</param>
  902. /// <param name="user">用户基本信息</param>
  903. /// <returns>DataTable</returns>
  904. public static DataTable GetProductionData(SearchProductionDataEntity searchEntity, SUserInfo user)
  905. {
  906. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  907. //string procsql = "PRO_PM_GetProductionData";
  908. //try
  909. //{
  910. // IDataParameter[] paras = new OracleParameter[]
  911. // {
  912. // new OracleParameter("in_procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input),
  913. // new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  914. // new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  915. // new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  916. // new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  917. // new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  918. // new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  919. // new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  920. // new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  921. // new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  922. // new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  923. // new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  924. // new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  925. // new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  926. // new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  927. // new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  928. // new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  929. // new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  930. // };
  931. // oracleConn.Open();
  932. // DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  933. // if (returnDs != null && returnDs.Tables.Count > 0)
  934. // {
  935. // return returnDs.Tables[0];
  936. // }
  937. // else
  938. // {
  939. // return null;
  940. // }
  941. //}
  942. //catch (Exception ex)
  943. //{
  944. // throw ex;
  945. //}
  946. //finally
  947. //{
  948. // if (oracleConn.ConnState == ConnectionState.Open)
  949. // {
  950. // oracleConn.Close();
  951. // }
  952. //}
  953. string sqlString = "";
  954. //IDataParameter[] paras = null;
  955. List<OracleParameter> parameters = new List<OracleParameter>();
  956. try
  957. {
  958. sqlString = @"SELECT
  959. TP_PM_PRODUCTIONDATA.CREATETIME
  960. ,TP_PM_PRODUCTIONDATA.UPDATETIME
  961. ,TP_PM_PRODUCTIONDATA.PRODUCTIONDATAID
  962. ,TP_PM_PRODUCTIONDATA.PRODUCTIONLINECODE
  963. ,TP_PM_PRODUCTIONDATA.BARCODE
  964. ,TP_PM_PRODUCTIONDATA.GOODSCODE
  965. ,TP_PM_PRODUCTIONDATA.GOODSNAME
  966. ,TP_PM_PRODUCTIONDATA.USERCODE
  967. ,TP_PM_PRODUCTIONDATA.ISPUBLICBODY
  968. ,DECODE(TP_PM_PRODUCTIONDATA.PROCEDUREMODEL
  969. ,'1 '
  970. ,'计数模型'
  971. ,'检验模型') AS PROCEDUREMODEL
  972. ,TP_SYS_PROCEDUREMODELTYPE.PROCEDUREMODELTYPENAME
  973. ,DECODE(TP_PM_PRODUCTIONDATA.PIECETYPE
  974. ,'1'
  975. ,'不计件'
  976. ,'同工种策略') AS PIECETYPE
  977. ,TP_PM_PRODUCTIONDATA.ISREWORKED
  978. ,TP_MST_GOODSLEVEL.GOODSLEVELNAME AS GOODSGRADE
  979. ,TP_MST_ORGANIZATION.ORGANIZATIONNAME
  980. ,TP_PM_PRODUCTIONDATA.REMARKS
  981. ,TP_PM_PRODUCTIONDATA.KILNID
  982. ,TP_PM_PRODUCTIONDATA.KILNCODE
  983. ,TP_PM_PRODUCTIONDATA.KILNNAME
  984. ,TP_PM_PRODUCTIONDATA.KILNCARID
  985. ,TP_PM_PRODUCTIONDATA.KILNCARCODE
  986. ,TP_PM_PRODUCTIONDATA.KILNCARNAME
  987. ,TP_PM_PRODUCTIONDATA.KILNCARPOSITION
  988. ,TP_PM_PRODUCTIONDATA.KILNCARBATCHNO
  989. ,TP_MST_DATADICTIONARY.DICTIONARYVALUE KILNCARPOSITIONNAME
  990. ,TP_MST_GOODSTYPE.GOODSTYPENAME
  991. ,TP_MST_USER.USERCODE AS BARUSERCODE
  992. ,TP_PM_PRODUCTIONDATA.GROUTINGUSERCODE
  993. ,TP_PM_PRODUCTIONDATA.GROUTINGMOULDCODE
  994. ,TP_PM_PRODUCTIONDATA.GROUTINGDATE
  995. ,TP_PM_PRODUCTIONDATA.GROUTINGNUM
  996. ,TP_MST_USER.USERNAME AS BARUSERNAME
  997. ,TP_MST_GOODSLEVEL.GOODSLEVELNAME AS GOODSLEVELTYPE
  998. ,REPLACE((TP_MST_LOGO.LOGONAME || '[' || TP_MST_LOGO.LOGOCODE || ']')
  999. ,'[]'
  1000. ,'') AS LOGOCODENAME
  1001. ,TP_PM_PRODUCTIONDATA.SPECIALREPAIRFLAG
  1002. ,PCP.PROCEDURENAME INPROCEDURENAME
  1003. FROM TP_PM_PRODUCTIONDATA
  1004. LEFT JOIN TP_PM_INPRODUCTION INP
  1005. ON INP.BARCODE = TP_PM_PRODUCTIONDATA.BARCODE
  1006. LEFT JOIN TP_PC_PROCEDURE PCP
  1007. ON PCP.PROCEDUREID = INP.PROCEDUREID
  1008. LEFT JOIN TP_SYS_PROCEDUREMODELTYPE
  1009. ON TP_PM_PRODUCTIONDATA.MODELTYPE =
  1010. TP_SYS_PROCEDUREMODELTYPE.PROCEDUREMODELTYPEID
  1011. LEFT JOIN TP_MST_ORGANIZATION
  1012. ON TP_PM_PRODUCTIONDATA.ORGANIZATIONID =
  1013. TP_MST_ORGANIZATION.ORGANIZATIONID
  1014. LEFT JOIN TP_MST_DATADICTIONARY
  1015. ON TP_PM_PRODUCTIONDATA.KILNCARPOSITION =
  1016. TP_MST_DATADICTIONARY.DICTIONARYID
  1017. LEFT JOIN TP_MST_GOODSLEVEL
  1018. ON TP_PM_PRODUCTIONDATA.GOODSLEVELID =
  1019. TP_MST_GOODSLEVEL.GOODSLEVELID
  1020. LEFT JOIN TP_MST_GOODS
  1021. ON TP_PM_PRODUCTIONDATA.GOODSID = TP_MST_GOODS.GOODSID
  1022. LEFT JOIN TP_MST_GOODSTYPE
  1023. ON TP_MST_GOODS.GOODSTYPEID = TP_MST_GOODSTYPE.GOODSTYPEID
  1024. LEFT JOIN TP_MST_USER
  1025. ON TP_PM_PRODUCTIONDATA.CREATEUSERID = TP_MST_USER.USERID
  1026. LEFT JOIN TP_MST_LOGO
  1027. ON TP_PM_PRODUCTIONDATA.LOGOID = TP_MST_LOGO.LOGOID
  1028. WHERE TP_PM_PRODUCTIONDATA.VALUEFLAG = '1'
  1029. AND TP_PM_PRODUCTIONDATA.PROCEDUREID = :ProcedureIDS
  1030. AND (TP_PM_PRODUCTIONDATA.CREATETIME >= :begindate AND
  1031. TP_PM_PRODUCTIONDATA.CREATETIME <= :enddate) ";
  1032. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input));
  1033. parameters.Add(new OracleParameter(":begindate", OracleDbType.Date, searchEntity.BeginDate, ParameterDirection.Input));
  1034. parameters.Add(new OracleParameter(":enddate", OracleDbType.Date, searchEntity.EndDate, ParameterDirection.Input));
  1035. if (!string.IsNullOrEmpty(searchEntity.BarCode))
  1036. {
  1037. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.BARCODE = :barCode ";
  1038. parameters.Add(new OracleParameter(":barCode", OracleDbType.Varchar2, searchEntity.BarCode, ParameterDirection.Input));
  1039. }
  1040. if (!string.IsNullOrEmpty(searchEntity.GoodsCode))
  1041. {
  1042. sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.GOODSCODE, :goodsCode) > 0 ";
  1043. parameters.Add(new OracleParameter(":goodsCode", OracleDbType.Varchar2, searchEntity.GoodsCode, ParameterDirection.Input));
  1044. }
  1045. if (!string.IsNullOrEmpty(searchEntity.GoodsName))
  1046. {
  1047. sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.GOODSNAME, :goodsName) > 0 ";
  1048. parameters.Add(new OracleParameter(":goodsName", OracleDbType.Varchar2, searchEntity.GoodsName, ParameterDirection.Input));
  1049. }
  1050. if (!string.IsNullOrEmpty(searchEntity.UserCode))
  1051. {
  1052. sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.USERCODE, :userCode) > 0 ";
  1053. parameters.Add(new OracleParameter(":userCode", OracleDbType.Varchar2, searchEntity.UserCode, ParameterDirection.Input));
  1054. }
  1055. if (!string.IsNullOrEmpty(searchEntity.OrganizationID + ""))
  1056. {
  1057. sqlString = sqlString + " AND ( :organizationID = 0 OR TP_PM_PRODUCTIONDATA.ORGANIZATIONID = :organizationID ) ";
  1058. parameters.Add(new OracleParameter(":organizationID", OracleDbType.Int32, searchEntity.OrganizationID, ParameterDirection.Input));
  1059. }
  1060. if (!string.IsNullOrEmpty(searchEntity.Remarks))
  1061. {
  1062. sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.REMARKS, :remarks) > 0 ";
  1063. parameters.Add(new OracleParameter(":remarks", OracleDbType.Varchar2, searchEntity.Remarks, ParameterDirection.Input));
  1064. }
  1065. if (!string.IsNullOrEmpty(searchEntity.IsRework))
  1066. {
  1067. sqlString = sqlString + " AND INSTR( :isReworked, TP_PM_PRODUCTIONDATA.ISREWORKED) > 0 ";
  1068. parameters.Add(new OracleParameter(":isReworked", OracleDbType.Varchar2, searchEntity.IsRework, ParameterDirection.Input));
  1069. }
  1070. if (!string.IsNullOrEmpty(searchEntity.KilnCode))
  1071. {
  1072. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCODE = :pKilnCode ";
  1073. parameters.Add(new OracleParameter(":pKilnCode", OracleDbType.Varchar2, searchEntity.KilnCode, ParameterDirection.Input));
  1074. }
  1075. if (!string.IsNullOrEmpty(searchEntity.KilnCarCode))
  1076. {
  1077. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARCODE = :pKilnCarCode ";
  1078. parameters.Add(new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2, searchEntity.KilnCarCode, ParameterDirection.Input));
  1079. }
  1080. if (!string.IsNullOrEmpty(searchEntity.KilnCarPosition + ""))
  1081. {
  1082. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARPOSITION = :pKilnCarPosition ";
  1083. parameters.Add(new OracleParameter(":pKilnCarPosition", OracleDbType.Int32, searchEntity.KilnCarPosition, ParameterDirection.Input));
  1084. }
  1085. if (!string.IsNullOrEmpty(searchEntity.KilnCarPosition + ""))
  1086. {
  1087. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARPOSITION = :pKilnCarPosition ";
  1088. parameters.Add(new OracleParameter(":pKilnCarPosition", OracleDbType.Int32, searchEntity.KilnCarPosition, ParameterDirection.Input));
  1089. }
  1090. if (!string.IsNullOrEmpty(user.UserID + ""))
  1091. {
  1092. sqlString = sqlString + @"
  1093. AND (
  1094. TP_PM_PRODUCTIONDATA.CREATEUSERID = : userID
  1095. OR EXISTS (
  1096. SELECT
  1097. 1
  1098. FROM
  1099. TP_MST_USERPURVIEW UP
  1100. WHERE
  1101. UP.PURVIEWTYPE = 4
  1102. AND ( UP.PURVIEWID = - 1 OR UP.PURVIEWID = TP_PM_PRODUCTIONDATA.CREATEUSERID )
  1103. AND UP.USERID = : userID
  1104. )
  1105. ) ";
  1106. parameters.Add(new OracleParameter(":userID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  1107. }
  1108. if (!string.IsNullOrEmpty(searchEntity.GoodsTypeCode))
  1109. {
  1110. sqlString = sqlString + " AND INSTR(TP_MST_GOODSTYPE.GOODSTYPECODE, :goodstypecode) > 0 ";
  1111. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, searchEntity.GoodsTypeCode, ParameterDirection.Input));
  1112. }
  1113. oracleConn.Open();
  1114. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, parameters.ToArray());
  1115. if (ds != null && ds.Tables.Count > 0)
  1116. {
  1117. return ds.Tables[0];
  1118. }
  1119. else
  1120. {
  1121. return null;
  1122. }
  1123. }
  1124. catch (Exception ex)
  1125. {
  1126. throw ex;
  1127. }
  1128. finally
  1129. {
  1130. if (oracleConn.ConnState == ConnectionState.Open)
  1131. {
  1132. oracleConn.Close();
  1133. }
  1134. }
  1135. }
  1136. /// <summary>
  1137. /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据
  1138. /// </summary>
  1139. /// <param name="searchEntity">生产数据实体类</param>
  1140. /// <param name="user">用户基本信息</param>
  1141. /// <returns>DataTable</returns>
  1142. public static DataTable GetProductionDataPDA(SearchProductionDataEntity searchEntity, SUserInfo user)
  1143. {
  1144. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1145. string procsql = "";//PRO_PM_GetProductionDataPDA
  1146. //xuwei modify 2019-12-13 修正读取当前工序 是编辑还是插入
  1147. procsql = @"SELECT TP_PM_ProductionDataIn.ProductionDataID FROM TP_PM_ProductionDataIn where valueflag=1 and 1=1 and ProcedureID=" + searchEntity.ProcedureID + " and barcode='" + searchEntity.BarCode + "' order by TP_PM_ProductionDataIn.ProductionDataid desc";
  1148. //procsql = $@"
  1149. // SELECT
  1150. // TP_PM_PRODUCTIONDATAIN.PRODUCTIONDATAID
  1151. // FROM
  1152. // TP_PM_PRODUCTIONDATAIN
  1153. // WHERE
  1154. // VALUEFLAG = 1
  1155. // AND 1 = 1
  1156. // AND PROCEDUREID = {searchEntity.ProcedureID}
  1157. // AND BARCODE = '{searchEntity.BarCode}'
  1158. // AND PRODUCTIONDATAID = ( SELECT MAX( PRODUCTIONDATAID ) FROM TP_PM_PRODUCTIONDATAIN WHERE BARCODE = '{searchEntity.BarCode}' )
  1159. // ORDER BY
  1160. // TP_PM_PRODUCTIONDATAIN.PRODUCTIONDATAID DESC
  1161. //";
  1162. try
  1163. {
  1164. //IDataParameter[] paras = new OracleParameter[]
  1165. //{
  1166. // new OracleParameter("in_procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input),
  1167. // new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  1168. // new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  1169. // new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  1170. // new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  1171. // new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  1172. // new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  1173. // new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  1174. // new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  1175. // new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  1176. // new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  1177. // new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  1178. // new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  1179. // new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  1180. // new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  1181. // new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  1182. // new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  1183. // new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  1184. //};
  1185. oracleConn.Open();
  1186. DataSet returnDs = oracleConn.GetSqlResultToDs(procsql);
  1187. if (returnDs != null && returnDs.Tables.Count > 0)
  1188. {
  1189. return returnDs.Tables[0];
  1190. }
  1191. else
  1192. {
  1193. return null;
  1194. }
  1195. }
  1196. catch (Exception ex)
  1197. {
  1198. throw ex;
  1199. }
  1200. finally
  1201. {
  1202. if (oracleConn.ConnState == ConnectionState.Open)
  1203. {
  1204. oracleConn.Close();
  1205. }
  1206. }
  1207. }
  1208. /// <summary>
  1209. /// 获取次品产品条码允许编辑
  1210. /// </summary>
  1211. /// <param name="barcode">产品条码</param>
  1212. /// <returns>Datase</returns>
  1213. public static DataSet GetSubstandardInfo(string barcode)
  1214. {
  1215. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1216. try
  1217. {
  1218. //获取窑炉管理数据
  1219. string sqlString = "Select barcode from TP_PM_InProductionTrash where barcode=:barcode";
  1220. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  1221. {
  1222. new Oracle.ManagedDataAccess.Client.OracleParameter(":barcode",barcode)
  1223. };
  1224. oracleConn.Open();
  1225. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  1226. oracleConn.Close();
  1227. return result;
  1228. }
  1229. catch (Exception ex)
  1230. {
  1231. if (oracleConn.ConnState == ConnectionState.Open)
  1232. {
  1233. oracleConn.Close();
  1234. }
  1235. throw ex;
  1236. }
  1237. finally
  1238. {
  1239. if (oracleConn.ConnState == ConnectionState.Open)
  1240. {
  1241. oracleConn.Close();
  1242. }
  1243. }
  1244. }
  1245. #endregion
  1246. #region 获取生产工序实体
  1247. /// <summary>
  1248. /// 获取生产工序实体
  1249. /// </summary>
  1250. /// <param name="procedureID">工序ID</param>
  1251. /// <param name="userInfo">用户基本信息</param>
  1252. /// <returns>ProcedureEntity实体类</returns>
  1253. public static ProcedureEntity GetProcedureDataEntityByID(int procedureID, SUserInfo userInfo)
  1254. {
  1255. ProcedureEntity procedureDataentity = new ProcedureEntity();
  1256. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1257. string procsql = "pro_pm_searchProcedurbyID";
  1258. try
  1259. {
  1260. IDataParameter[] paras = new OracleParameter[]
  1261. {
  1262. new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input),
  1263. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  1264. };
  1265. oracleConn.Open();
  1266. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  1267. if (returnDs != null && returnDs.Tables.Count > 0 && returnDs.Tables[0].Rows.Count > 0)
  1268. {
  1269. DataRow row = returnDs.Tables[0].Rows[0];
  1270. procedureDataentity = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  1271. return procedureDataentity;
  1272. }
  1273. else
  1274. {
  1275. return null;
  1276. }
  1277. }
  1278. catch (Exception ex)
  1279. {
  1280. throw ex;
  1281. }
  1282. finally
  1283. {
  1284. if (oracleConn.ConnState == ConnectionState.Open)
  1285. {
  1286. oracleConn.Close();
  1287. }
  1288. }
  1289. }
  1290. #endregion
  1291. #region 判断操作人员是否具有工序权限
  1292. /// <summary>
  1293. /// 判断操作人员是否具有工序权限
  1294. /// </summary>
  1295. /// <param name="procedureID">工序ID</param>
  1296. /// <param name="userID">工号ID</param>
  1297. /// <returns>DataSet</returns>
  1298. public static DataSet DecideUserInProcedure(int procedureID, int userID)
  1299. {
  1300. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1301. string procsql = "pro_pm_DecideUserInProcedure";
  1302. try
  1303. {
  1304. IDataParameter[] paras = new OracleParameter[]
  1305. {
  1306. new OracleParameter("in_procedureID",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  1307. new OracleParameter("in_userID",OracleDbType.Int32,userID,ParameterDirection.Input),
  1308. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output)
  1309. };
  1310. oracleConn.Open();
  1311. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  1312. return returnDs;
  1313. }
  1314. catch (Exception ex)
  1315. {
  1316. throw ex;
  1317. }
  1318. finally
  1319. {
  1320. if (oracleConn.ConnState == ConnectionState.Open)
  1321. {
  1322. oracleConn.Close();
  1323. }
  1324. }
  1325. }
  1326. #endregion
  1327. #region 检验条码
  1328. /// <summary>
  1329. /// 检验条码(非首节点)
  1330. /// </summary>
  1331. /// <param name="procedureID">工序ID</param>
  1332. /// <param name="barcode">产品条码</param>
  1333. /// <returns>DataSet</returns>
  1334. public static DataSet CheckBarcode(int procedureID, string barcode, SUserInfo sUserInfo, bool isInn = false)
  1335. {
  1336. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1337. try
  1338. {
  1339. oracleConn.Open();
  1340. // 2019-1016
  1341. if (!isInn)
  1342. {
  1343. //xuwei fix 2019-09-26 使用通用方法判定
  1344. //if (PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode) == 1)
  1345. //{
  1346. // return CheckBarcodeDeliverMud(procedureID, barcode, sUserInfo, true);
  1347. //}
  1348. string sql1 = "select NodeType from tp_pc_procedure where procedureid=:procedureid";
  1349. string NodeType = oracleConn.GetSqlResultToObj(sql1, new OracleParameter[] { new OracleParameter(":procedureid", procedureID) }) + "";
  1350. // 89[3#一检半检] 特殊处理
  1351. if (NodeType == "1" || procedureID == 89)
  1352. {
  1353. int isNodeBegin = PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode);
  1354. if (isNodeBegin == 1)
  1355. {
  1356. return CheckBarcodeDeliverMud(procedureID, barcode, sUserInfo, true);
  1357. }
  1358. }
  1359. }
  1360. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  1361. DataSet returnDs = new DataSet();
  1362. DataRow dr = dtBarCode.NewRow();
  1363. string sqlString = string.Empty;
  1364. DataSet ds = null;
  1365. #region 查出工序条码类型 wangx 2017-3-13
  1366. string sqlBarcode = GetConvertBarCode(oracleConn, barcode, procedureID, sUserInfo);
  1367. if (sqlBarcode == string.Empty)
  1368. {
  1369. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码";
  1370. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  1371. dtBarCode.Rows.Add(dr);
  1372. returnDs.Tables.Add(dtBarCode);
  1373. return returnDs;
  1374. }
  1375. else
  1376. {
  1377. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = sqlBarcode;
  1378. barcode = sqlBarcode;
  1379. }
  1380. #endregion
  1381. OracleParameter[] paras = new OracleParameter[]{
  1382. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  1383. new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  1384. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  1385. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  1386. new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  1387. new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  1388. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  1389. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  1390. };
  1391. oracleConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  1392. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()]
  1393. = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  1394. //if (!string.IsNullOrEmpty(paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r")))
  1395. //{
  1396. // AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo);
  1397. //}
  1398. int missFlag = 0;
  1399. if (paras[7].Value != null && paras[7].Value.ToString() == "1")
  1400. {
  1401. missFlag = AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo);
  1402. }
  1403. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value;
  1404. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value;
  1405. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value;
  1406. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value;
  1407. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = missFlag;
  1408. DataSet defectSet = new DataSet();
  1409. if (paras[7].Value.ToString() == "null") //只有正确的条码,读注浆信息
  1410. {
  1411. sqlString = @"select
  1412. tp_pm_inproduction.GoodsName,
  1413. tp_pm_inproduction.GroutingUserID,
  1414. tp_pm_inproduction.GroutingUserCode,
  1415. tp_pm_inproduction.GroutingNum,
  1416. tp_pm_inproduction.GroutingMouldCode as MouldCode,
  1417. tp_pm_inproduction.ispublicbody,
  1418. tp_pm_inproduction.Groutingdate,
  1419. tp_pm_inproduction.SpecialRepairFlag,
  1420. tp_pm_inproduction.logoid, g.goodsid,g.goodscode,g.PlateLimitNum,g.DeliverLimitCycle,
  1421. --nvl(g.MaterialCode,g.GoodsCode) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致
  1422. nvl(gdd.MaterialCode, nvl(g.MaterialCode,g.GoodsCode)) ||'#'|| to_char(g.GOODS_LINE_TYPE) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致
  1423. --gt.gt.goodstypecode,gt.goodstypename,a.workcode,
  1424. tp_mst_logo.logocode,
  1425. u.username as GroutingUserName,
  1426. tp_mst_logo.logoname ,
  1427. case when pg.goodsid=g.goodsid then 1 else 0 end as refireflag
  1428. from tp_pm_inproduction
  1429. left join TP_PM_GroutingDailyDetail gdd on gdd.GroutingDailyDetailID = tp_pm_inproduction.GroutingDailyDetailID
  1430. left join tp_mst_logo
  1431. on tp_pm_inproduction.logoid=tp_mst_logo.logoid
  1432. inner join tp_mst_user u on u.userid = gdd.userid
  1433. LEFT JOIN TP_MST_GOODS G ON G.GoodsID = tp_pm_inproduction.goodsid
  1434. LEFT JOIN TP_PC_PROCEDUREGOODS PG ON PG.GOODSID = G.GOODSID AND PG.PROCEDUREID = 138
  1435. --left join tp_mst_goodstype gt on gt.goodstypeid = g.goodstypeid
  1436. --left join tp_mst_account a on a.accountid = gdd.accountid
  1437. where tp_pm_inproduction.BarCode=:barcode";
  1438. paras = new OracleParameter[]{
  1439. new OracleParameter(":barcode",barcode),
  1440. };
  1441. //20221129 by qinqi 查询上一次缺陷
  1442. string sqlString1 = @"SELECT pi.* FROM TP_PM_ProductionDataIn pi
  1443. where pi.Barcode= :barcode
  1444. and pi.MODELTYPE IN (-1, -4, -5)
  1445. and pi.ValueFlag = '1'
  1446. order by pi.CREATETIME desc";
  1447. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  1448. DataSet dataTable = oracleConn.GetSqlResultToDs(sqlString1, paras);
  1449. if (ds != null && ds.Tables[0].Rows.Count > 0)
  1450. {
  1451. if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0)
  1452. {
  1453. dr["DefectFlagID"] = Convert.ToInt32(dataTable.Tables[0].Rows[0]["goodsleveltypeid"]);
  1454. }
  1455. //dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  1456. //dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  1457. //dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  1458. //dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  1459. //dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  1460. //dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  1461. //dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  1462. //dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  1463. //dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  1464. //dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString();
  1465. //dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString();
  1466. dr["GOODSMODELforCheck"] = ds.Tables[0].Rows[0]["GOODSMODELforCheck"].ToString();
  1467. //// hegii 三水 特殊处理 大件高压可以和普通合并装板,小件高压不能和普通合并装板
  1468. //if (ds.Tables[0].Rows[0]["workcode"].ToString() == "5020" &&
  1469. // ds.Tables[0].Rows[0]["goodstypename"].ToString() == "小件")
  1470. //{
  1471. // dr["GOODSMODELforCheck"] = ds.Tables[0].Rows[0]["goodscode"].ToString();
  1472. //}
  1473. dr["PlateLimitNum"] = ds.Tables[0].Rows[0]["PlateLimitNum"];
  1474. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString();
  1475. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  1476. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  1477. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  1478. dr[Constant.BarCodeResultTableColumns.out_groutingUserName.ToString()] = ds.Tables[0].Rows[0]["GroutingUserName"].ToString();
  1479. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  1480. dr[Constant.BarCodeResultTableColumns.out_groutingUserID.ToString()] = ds.Tables[0].Rows[0]["GroutingUserID"].ToString();
  1481. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  1482. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  1483. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  1484. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  1485. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  1486. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  1487. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  1488. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  1489. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logocode"].ToString();
  1490. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoname"].ToString();
  1491. dr[Constant.BarCodeResultTableColumns.out_deliverLimitCycle.ToString()] = ds.Tables[0].Rows[0]["DeliverLimitCycle"].ToString();
  1492. }
  1493. //获取上一次成品检验的缺陷
  1494. if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0)
  1495. {
  1496. sqlString1 = @"select TP_PM_Defect.DefectID ,replace(
  1497. concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectName) ,
  1498. concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectCode||'->'),TP_PM_Defect.DefectCode||'->'
  1499. )
  1500. as DefectName,
  1501. TP_PM_Defect.DefectCode,
  1502. TP_PM_Defect.DefectPositionID,
  1503. replace(
  1504. concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionName) ,
  1505. concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionCode||'->'),TP_PM_Defect.DefectPositionCode||'->'
  1506. )
  1507. as DefectPositionName,
  1508. TP_PM_Defect.DefectPositionCode,
  1509. TP_PM_Defect.DefectProcedureID,
  1510. TP_PM_Defect.DefectProcedureCode,
  1511. TP_PM_Defect.DefectProcedureName,TP_PM_Defect.DefectUserID
  1512. ,TP_PM_Defect.DefectUserCode,TP_PM_Defect.DefectUserName,
  1513. TP_PM_Defect.DefectProductionDataID,
  1514. TP_PM_Defect.Remarks AS DefectRemarks ,
  1515. TP_MST_Jobs.JobsID AS Jobs,
  1516. TP_MST_Jobs.JobsName AS JobsText,
  1517. TP_MST_DefectFine.DefectFineID,
  1518. TP_MST_DefectFine.DefectFineCode AS DefectFineValue,
  1519. TP_PM_Defect.MissedUserID,
  1520. TP_PM_Defect.MissedUserCode,
  1521. TP_PM_Defect.MissedUserName,
  1522. TP_PM_Defect.DefectDeductionNum,
  1523. TP_PM_Defect.SpecialDefect,
  1524. TP_PM_Defect.CheckTime,
  1525. (SELECT listagg(to_char(s.staffname), ',') within GROUP(ORDER BY s.staffid)
  1526. FROM tp_pm_defectresponsible dp
  1527. INNER JOIN tp_hr_staff s
  1528. ON s.staffid = dp.staffid
  1529. where dp.productiondefectid = TP_PM_Defect.PRODUCTIONDEFECTID) DefectStaffNames ,
  1530. ROWNUM-1 as TempCount
  1531. from TP_PM_Defect
  1532. left join TP_MST_Jobs on TP_PM_Defect.DefectJobs=TP_MST_Jobs.JobsID
  1533. left join TP_MST_DefectFine on TP_PM_Defect.DefectFine=TP_MST_DefectFine.DefectFineID
  1534. where TP_PM_Defect.ProductionDataID = :ProductionDataID";
  1535. OracleParameter[] paras1 = new OracleParameter[]{
  1536. new OracleParameter(":ProductionDataID",Convert.ToInt32(dataTable.Tables[0].Rows[0]["ProductionDataID"])),
  1537. };
  1538. defectSet = oracleConn.GetSqlResultToDs(sqlString1, paras1);
  1539. }
  1540. }
  1541. dtBarCode.Rows.Add(dr);
  1542. returnDs.Tables.Add(dtBarCode);
  1543. if (defectSet != null && defectSet.Tables.Count > 0 && defectSet.Tables[0].Rows.Count > 0)
  1544. {
  1545. defectSet.Tables[0].TableName = "DefectTable";
  1546. returnDs.Tables.Add(defectSet.Tables[0].Copy());
  1547. }
  1548. return returnDs;
  1549. }
  1550. catch (Exception ex)
  1551. {
  1552. throw ex;
  1553. }
  1554. finally
  1555. {
  1556. if (oracleConn.ConnState == ConnectionState.Open)
  1557. {
  1558. oracleConn.Close();
  1559. }
  1560. }
  1561. }
  1562. #region 2017-3-13
  1563. /// <summary>
  1564. /// 根据条码及工序判断是否漏扫
  1565. /// </summary>
  1566. /// <param name="barcode">产品条码</param>
  1567. /// <param name="produceid">校验工序ID</param>
  1568. /// <param name="sUserInfo">用户基本信息</param>
  1569. /// <returns>DataSet</returns>
  1570. public static string GetConvertBarCode(IDBConnection oracleTrConn, string barcode, int produceid, SUserInfo sUserInfo)
  1571. {
  1572. try
  1573. {
  1574. #region 查出工序条码类型 wangx 2017-3-13
  1575. string sqlString = "select BarCodeFlag from TP_PC_Procedure where ProcedureID=:ProcedureID";
  1576. OracleParameter[] paras2 = new OracleParameter[]{
  1577. new OracleParameter(":ProcedureID",produceid),
  1578. };
  1579. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras2);
  1580. int BarCodeFlag = 0;
  1581. string returnBarcode = string.Empty;//返回条码
  1582. if (ds != null && ds.Tables[0].Rows.Count > 0)
  1583. {
  1584. BarCodeFlag = Convert.ToInt32(ds.Tables[0].Rows[0]["BarCodeFlag"]);
  1585. if (BarCodeFlag > 0)
  1586. {
  1587. //sqlString = @"select FUN_CMN_GetBarCode(:barcode,:procedureid,:accountid) From DUAL";
  1588. sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  1589. OracleParameter[] paras = new OracleParameter[]{
  1590. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  1591. //new OracleParameter(":procedureid",OracleDbType.Int32, produceid,ParameterDirection.Input),
  1592. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  1593. };
  1594. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  1595. if (ds != null && ds.Tables[0].Rows.Count > 0)
  1596. {
  1597. returnBarcode = ds.Tables[0].Rows[0][0].ToString();
  1598. }
  1599. return returnBarcode;
  1600. }
  1601. else
  1602. {
  1603. returnBarcode = barcode;
  1604. }
  1605. }
  1606. #endregion
  1607. return returnBarcode;
  1608. }
  1609. catch (Exception ex)
  1610. {
  1611. throw ex;
  1612. }
  1613. }
  1614. #endregion
  1615. /// <summary>
  1616. /// 检验条码pda
  1617. /// </summary>
  1618. /// <param name="procedureID">工序ID</param>
  1619. /// <param name="barcode">产品条码</param>
  1620. /// <returns>DataSet</returns>
  1621. public static DataSet CheckBarcodePDA(int procedureID, string barcode, SUserInfo sUserInfo)
  1622. {
  1623. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1624. try
  1625. {
  1626. oracleConn.Open();
  1627. //2020-03-10 chenxy fix 中陶出现非必须首节点 提示 未进入生产流程,应在开始工序输入
  1628. string sql1 = "select NodeType from tp_pc_procedure where procedureid=:procedureid";
  1629. string NodeType1 = oracleConn.GetSqlResultToObj(sql1, new OracleParameter[] { new OracleParameter(":procedureid", procedureID) }) + "";
  1630. if (NodeType1 == "1")
  1631. {
  1632. int isNodeBegin = PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode);
  1633. if (isNodeBegin == 1)
  1634. {
  1635. return CheckBarcodeDeliverMud(procedureID, barcode, sUserInfo, true);
  1636. }
  1637. }
  1638. //fix end
  1639. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  1640. DataSet returnDs = new DataSet();
  1641. DataTable leakFlag4Table = new DataTable();
  1642. DataTable leakFlag5Table = new DataTable();
  1643. DataTable leakFlag6Table = new DataTable();
  1644. DataSet defectSet = new DataSet();
  1645. DataRow dr = dtBarCode.NewRow();
  1646. #region 查出工序条码类型 wangx 2017-3-13
  1647. string sqlBarcode = GetConvertBarCode(oracleConn, barcode, procedureID, sUserInfo);
  1648. if (sqlBarcode == string.Empty)
  1649. {
  1650. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码";
  1651. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  1652. dtBarCode.Rows.Add(dr);
  1653. returnDs.Tables.Add(dtBarCode);
  1654. return returnDs;
  1655. }
  1656. else
  1657. {
  1658. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = sqlBarcode;
  1659. barcode = sqlBarcode;
  1660. }
  1661. #endregion
  1662. OracleParameter[] paras = new OracleParameter[]{
  1663. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  1664. new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  1665. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  1666. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  1667. new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  1668. new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  1669. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  1670. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  1671. };
  1672. oracleConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  1673. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()]
  1674. = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  1675. //if (!string.IsNullOrEmpty(paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r")))
  1676. //{
  1677. // AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo);
  1678. //}
  1679. int missFlag = 0;
  1680. if (paras[7].Value != null && paras[7].Value.ToString() == "1")
  1681. {
  1682. missFlag = AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo);
  1683. }
  1684. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value;
  1685. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value;
  1686. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value;
  1687. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value;
  1688. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = missFlag;
  1689. if (paras[7].Value.ToString() == "null") //只有正确的条码,读注浆信息
  1690. {
  1691. string sql = "select NodeType from tp_pc_procedure where procedureid=:procedureid";
  1692. paras = new OracleParameter[]{
  1693. new OracleParameter(":procedureid",procedureID),
  1694. };
  1695. DataSet ds = oracleConn.GetSqlResultToDs(sql, paras);
  1696. if (ds != null && ds.Tables[0].Rows.Count > 0)
  1697. {
  1698. string sqlString = "";
  1699. int NodeType = Convert.ToInt32(ds.Tables[0].Rows[0]["NodeType"]);
  1700. //xuwei fix 2019-09-26 使用通用方法判定
  1701. // 2019-1016
  1702. //if (PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode) == 1)
  1703. //{
  1704. // NodeType = (int)Constant.ProcedureNodeType.Begin;
  1705. //}
  1706. if (NodeType == (int)Constant.ProcedureNodeType.Begin)
  1707. {
  1708. int isNodeBegin = PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode);
  1709. if (isNodeBegin == 0)
  1710. {
  1711. NodeType = (int)Constant.ProcedureNodeType.Middle;
  1712. }
  1713. }
  1714. if (NodeType == (int)Constant.ProcedureNodeType.Begin) //开始节点
  1715. {
  1716. sqlString = @"select
  1717. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  1718. tp_pm_groutingdailydetail.groutingcount as GroutingNum,
  1719. tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
  1720. 0 as ispublicbody,
  1721. tp_pm_groutingdailydetail.Groutingdate,
  1722. tp_pm_groutingdailydetail.SpecialRepairFlag,
  1723. tp_mst_logo.logoid,
  1724. tp_mst_logo.logocode,
  1725. tp_mst_logo.logoname
  1726. from tp_pm_groutingdailydetail
  1727. left join tp_mst_logo
  1728. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  1729. where tp_pm_groutingdailydetail.BarCode=:barcode";
  1730. paras = new OracleParameter[]{
  1731. new OracleParameter(":barcode",barcode),
  1732. };
  1733. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  1734. if (ds != null && ds.Tables[0].Rows.Count > 0)
  1735. {
  1736. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  1737. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  1738. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  1739. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  1740. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  1741. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  1742. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  1743. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  1744. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  1745. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString();
  1746. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString();
  1747. }
  1748. }
  1749. else
  1750. {
  1751. sqlString = @"select
  1752. nvl(gdd.MaterialCode, nvl(g.MaterialCode,g.GoodsCode)) MaterialCode,
  1753. TP_PM_InProduction.GroutingUserCode,
  1754. TP_PM_InProduction.GroutingNum,
  1755. TP_PM_InProduction.GroutingMouldCode as MouldCode,
  1756. TP_PM_InProduction.ispublicbody,
  1757. (select tp_pm_inproductiontrash.ispublicbody from
  1758. tp_pm_inproductiontrash where tp_pm_inproductiontrash.BarCode=:barcode) as ispublicbodyTrach,
  1759. TPPD.REWORKPROCEDUREID REWORKPROCEDUREID,
  1760. TP_PM_InProduction.Groutingdate,
  1761. TP_PM_InProduction.SpecialRepairFlag,
  1762. TP_PM_InProduction.IsReFire,
  1763. TP_PM_InProduction.ISLENGBU,
  1764. tp_mst_logo.logoid, g.goodsid,g.goodscode,g.PlateLimitNum,
  1765. --nvl(g.MaterialCode,g.GoodsCode) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致
  1766. nvl(gdd.MaterialCode, nvl(g.MaterialCode,g.GoodsCode)) ||'#'|| to_char(g.GOODS_LINE_TYPE) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致
  1767. --nvl(gdd.MaterialCode, g.GoodsCode) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致
  1768. tp_mst_logo.logocode,
  1769. tp_mst_logo.logoname,
  1770. glaze.DICTIONARYVALUE AS GLAZENAME,
  1771. --xuwei add 2020-06-11 漏气 内漏 标识
  1772. gdd.LEAKFLAG1,
  1773. gdd.LEAKFLAG2,
  1774. gdd.LEAKFLAG3,
  1775. gdd.LEAKFLAG4,
  1776. gdd.LEAKFLAG5,
  1777. gdd.LEAKFLAG7,
  1778. decode(TP_PM_InProduction.SpecialRepairFlag,'1','是','0','否') as SpecialRepairflagName,
  1779. decode(TP_PM_InProduction.IsReFire,'6','是','0','否') as IsReFireName,
  1780. DECODE(TP_PM_INPRODUCTION.ISLENGBU, '1', '是', '0', '否') AS ISLENGBUNAME,
  1781. decode(gdd.LEAKFLAG1,'1','合格','0','不合格','未检测') as LEAKFLAG1Name,
  1782. decode(gdd.LEAKFLAG2,'1','合格','0','不合格','未检测') as LEAKFLAG2Name,
  1783. decode(gdd.LEAKFLAG3,'1','合格','0','不合格','未检测') as LEAKFLAG3Name,
  1784. decode(gdd.LEAKFLAG4,'1','合格','0','不合格','未检测') as LEAKFLAG4Name,
  1785. decode(gdd.LEAKFLAG5,'1','合格','0','不合格','未检测') as LEAKFLAG5Name,
  1786. decode(gdd.LEAKFLAG7,'1','合格','0','不合格','未检测') as LEAKFLAG7Name,
  1787. gdd.InspectionLevel,
  1788. gdd.PackingDefect,
  1789. gdd.InspectionGoodsLevel,
  1790. gdd.OFFLINEFLAG,
  1791. gdd.RECYCLINGFLAG,
  1792. G.WATERLABELCODE,
  1793. G.GOODS_LINE_TYPE,
  1794. case when pg.goodsid=g.goodsid then 1 else 0 end as refireflag
  1795. from TP_PM_InProduction left join TP_PM_GroutingDailyDetail gdd on gdd.GroutingDailyDetailID = tp_pm_inproduction.GroutingDailyDetailID
  1796. left join tp_mst_logo
  1797. on gdd.logoid=tp_mst_logo.logoid
  1798. LEFT JOIN TP_MST_GOODS G ON G.GoodsID = tp_pm_inproduction.goodsid
  1799. LEFT JOIN TP_MST_DataDictionary glaze ON glaze.DICTIONARYID = gdd.GLAZETYPEID
  1800. LEFT JOIN (SELECT T.REWORKPROCEDUREID,T.BARCODE FROM(SELECT REWORKPROCEDUREID,BARCODE FROM TP_PM_PRODUCTIONDATA WHERE BARCODE = :barcode ORDER BY CREATETIME DESC) T WHERE ROWNUM = 1) TPPD
  1801. ON TPPD.BARCODE = TP_PM_InProduction.BARCODE
  1802. LEFT JOIN TP_PC_PROCEDUREGOODS PG ON PG.GOODSID = G.GOODSID AND PG.PROCEDUREID = 138
  1803. where TP_PM_InProduction.BarCode=:barcode";
  1804. paras = new OracleParameter[]{
  1805. new OracleParameter(":barcode",barcode),
  1806. };
  1807. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  1808. // 取最新的窑炉批次号
  1809. string sqlString2 = @"
  1810. SELECT KILNCARBATCHNO
  1811. FROM TP_PM_PRODUCTIONDATA
  1812. WHERE KILNCARBATCHNO IS NOT NULL
  1813. AND BARCODE = :barcode
  1814. ORDER BY CREATETIME DESC";
  1815. object kilncarbatchno = oracleConn.GetSqlResultToObj(sqlString2, paras);
  1816. // 取当前批次号下最新的检验类型的生产数据
  1817. sqlString2 = @"
  1818. SELECT PI.*
  1819. FROM TP_PM_PRODUCTIONDATA PI
  1820. WHERE PI.MODELTYPE IN (-1, -4, -5)
  1821. AND PI.VALUEFLAG = '1'
  1822. AND PI.BARCODE = :BARCODE
  1823. AND PI.KILNCARBATCHNO = :KILNCARBATCHNO
  1824. ORDER BY PI.CREATETIME DESC ";
  1825. paras = new OracleParameter[]
  1826. {
  1827. new OracleParameter(":BARCODE", barcode),
  1828. new OracleParameter(":KILNCARBATCHNO", kilncarbatchno),
  1829. };
  1830. DataSet dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras);
  1831. //二车间三检后回收再次三检时,会带出三检信息(次品等),此时产品为正品,不带出缺陷及等级信息
  1832. // 取回收标识
  1833. sqlString2 = @"
  1834. SELECT gdd.RECYCLINGFLAG
  1835. FROM TP_PM_GroutingDailyDetail gdd
  1836. WHERE gdd.BARCODE = :BARCODE ";
  1837. paras = new OracleParameter[]
  1838. {
  1839. new OracleParameter(":BARCODE", barcode),
  1840. };
  1841. DataTable recyclingdata = oracleConn.GetSqlResultToDt(sqlString2, paras);
  1842. // 取重烧标识
  1843. sqlString2 = @"
  1844. SELECT case when pg.goodsid=gdd.goodsid then 1 else 0 end as refireflag
  1845. FROM TP_PM_GroutingDailyDetail gdd
  1846. LEFT JOIN TP_PC_PROCEDUREGOODS PG ON PG.GOODSID = gdd.GOODSID AND PG.PROCEDUREID = 138
  1847. WHERE gdd.BARCODE = :BARCODE ";
  1848. paras = new OracleParameter[]
  1849. {
  1850. new OracleParameter(":BARCODE", barcode),
  1851. };
  1852. DataTable refireflagdata = oracleConn.GetSqlResultToDt(sqlString2, paras);
  1853. if (recyclingdata != null && recyclingdata.Rows.Count > 0)
  1854. {
  1855. //回收过,取回收后的检验数据
  1856. if (recyclingdata.Rows[0]["RECYCLINGFLAG"].ToString() == "1")
  1857. {
  1858. // 取当前批次号下最新的检验类型的生产数据
  1859. sqlString2 = @"
  1860. SELECT PI.*
  1861. FROM TP_PM_PRODUCTIONDATA PI
  1862. WHERE PI.MODELTYPE IN (-1, -4, -5)
  1863. AND PI.VALUEFLAG = '1'
  1864. AND PI.BARCODE = :BARCODE
  1865. AND PI.KILNCARBATCHNO = :KILNCARBATCHNO
  1866. AND PI.CREATETIME > (SELECT max(PDI.createtime) FROM TP_PM_PRODUCTIONDATA PDI WHERE PDI.BARCODE = PI.BARCODE AND PDI.PROCEDUREID = 80)
  1867. ORDER BY PI.CREATETIME DESC ";
  1868. paras = new OracleParameter[]
  1869. {
  1870. new OracleParameter(":BARCODE", barcode),
  1871. new OracleParameter(":KILNCARBATCHNO", kilncarbatchno),
  1872. };
  1873. dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras);
  1874. }
  1875. }
  1876. //if (dtIsRefire.Rows.Count == 0)
  1877. //{
  1878. // sqlString2 = @"SELECT pi.isrefire,pi.kilncarbatchno FROM TP_PM_SCRAPPRODUCT pi
  1879. // where pi.Barcode= :barcode";
  1880. // dtIsRefire = oracleConn.GetSqlResultToDt(sqlString2, paras);
  1881. //}
  1882. //string isrefire = "0";
  1883. //if (dtIsRefire.Rows.Count > 0)
  1884. // {
  1885. // isrefire = dtIsRefire.Rows[0]["isrefire"] + "";
  1886. //}
  1887. //DataSet dataTable = new DataSet();
  1888. //if (isrefire.Equals("0"))
  1889. //{
  1890. // sqlString2 = @"SELECT pi.* FROM TP_PM_ProductionDataIn pi
  1891. // where pi.Barcode= :barcode
  1892. // and pi.MODELTYPE IN (-1, -4, -5)
  1893. // and pi.ValueFlag = '1'
  1894. // and pi.isrefire = '0'
  1895. // order by pi.CREATETIME desc";
  1896. // paras = new OracleParameter[]{
  1897. // new OracleParameter(":barcode",barcode),
  1898. // };
  1899. // dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras);
  1900. //}
  1901. //else
  1902. //{
  1903. // string kilncarbatchno = dtIsRefire.Rows[0]["kilncarbatchno"] + "";
  1904. // sqlString2 = @"SELECT pi.* FROM TP_PM_ProductionDataIn pi
  1905. // where pi.Barcode= :barcode
  1906. // and pi.kilncarbatchno= :kilncarbatchno
  1907. // and pi.MODELTYPE IN (-1, -4, -5)
  1908. // and pi.ValueFlag = '1'
  1909. // and pi.isrefire = '6'
  1910. // order by pi.CREATETIME desc";
  1911. // paras = new OracleParameter[]{
  1912. // new OracleParameter(":barcode", barcode),
  1913. // new OracleParameter(":kilncarbatchno", kilncarbatchno),
  1914. // };
  1915. // dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras);
  1916. //}
  1917. //缺陷
  1918. int pdid = 0;
  1919. if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0)
  1920. {
  1921. dr["DefectFlagID"] = Convert.ToInt32(dataTable.Tables[0].Rows[0]["goodsleveltypeid"]);
  1922. pdid = Convert.ToInt32(dataTable.Tables[0].Rows[0]["PRODUCTIONDATAID"]);
  1923. // 判断当前条码在最近一次检验后,是否走过冷补或回收
  1924. string sqlCheckLengBu = @"
  1925. SELECT 1
  1926. FROM TP_PM_PRODUCTIONDATA P
  1927. WHERE P.PROCEDUREID IN (135, 80)
  1928. AND P.BARCODE = :BARCODE
  1929. AND p.createtime >= (select max(createtime) from TP_PM_PRODUCTIONDATA pd where pd.barcode=p.barcode
  1930. and pd.MODELTYPE IN (-1, -4, -5)
  1931. AND pd.VALUEFLAG = '1'
  1932. AND pd.KILNCARBATCHNO = :KILNCARBATCHNO
  1933. )";
  1934. //AND P.PRODUCTIONDATAID > :PID
  1935. paras = new OracleParameter[]
  1936. {
  1937. new OracleParameter(":BARCODE", barcode),
  1938. new OracleParameter(":KILNCARBATCHNO", kilncarbatchno),
  1939. new OracleParameter(":PID", pdid),
  1940. };
  1941. object isExists = oracleConn.GetSqlResultToObj(sqlCheckLengBu, paras);
  1942. if (isExists == null)
  1943. {
  1944. dr["pdid"] = pdid;
  1945. }
  1946. }
  1947. if (ds != null && ds.Tables[0].Rows.Count > 0)
  1948. {
  1949. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  1950. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  1951. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  1952. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  1953. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = ds.Tables[0].Rows[0]["ispublicbodyTrach"].ToString();
  1954. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  1955. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  1956. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = ds.Tables[0].Rows[0]["IsReFire"].ToString();
  1957. dr[Constant.BarCodeResultTableColumns.out_isLengBu.ToString()] = ds.Tables[0].Rows[0]["ISLENGBU"].ToString();
  1958. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  1959. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString();
  1960. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString();
  1961. dr[Constant.BarCodeResultTableColumns.out_glazeName.ToString()] = ds.Tables[0].Rows[0]["glazename"].ToString();
  1962. dr[Constant.BarCodeResultTableColumns.out_MaterialCode.ToString()] = ds.Tables[0].Rows[0]["MaterialCode"].ToString();
  1963. //增加漏气标识内漏标识 xuwei add 2020-06-11
  1964. dr[Constant.BarCodeResultTableColumns.out_LeakFlag1.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG1"].ToString();
  1965. dr[Constant.BarCodeResultTableColumns.out_LeakFlag2.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG2"].ToString();
  1966. // 增加干补、重烧、内漏等相关字段名称 fubin add 2020-06-30
  1967. dr[Constant.BarCodeResultTableColumns.out_LeakFlag3.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG3"].ToString();
  1968. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlagName.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlagName"].ToString();
  1969. dr[Constant.BarCodeResultTableColumns.out_lengBuName.ToString()] = ds.Tables[0].Rows[0]["ISLENGBUNAME"].ToString();
  1970. dr[Constant.BarCodeResultTableColumns.out_isReFireName.ToString()] = ds.Tables[0].Rows[0]["IsReFireName"].ToString();
  1971. dr[Constant.BarCodeResultTableColumns.out_LeakFlag1Name.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG1Name"].ToString();
  1972. dr[Constant.BarCodeResultTableColumns.out_LeakFlag2Name.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG2Name"].ToString();
  1973. dr[Constant.BarCodeResultTableColumns.out_LeakFlag3Name.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG3Name"].ToString();
  1974. //增加返工工序
  1975. dr["out_ReworkProcedureId"] = ds.Tables[0].Rows[0]["REWORKPROCEDUREID"].ToString();
  1976. dr["GOODSMODELforCheck"] = ds.Tables[0].Rows[0]["GOODSMODELforCheck"].ToString();
  1977. dr["PlateLimitNum"] = ds.Tables[0].Rows[0]["PlateLimitNum"];
  1978. dr["out_LeakFlag4"] = ds.Tables[0].Rows[0]["LEAKFLAG4"].ToString();
  1979. dr["out_LeakFlag5"] = ds.Tables[0].Rows[0]["LEAKFLAG5"].ToString();
  1980. dr["out_LeakFlag4Name"] = ds.Tables[0].Rows[0]["LEAKFLAG4Name"].ToString();
  1981. dr["out_LeakFlag5Name"] = ds.Tables[0].Rows[0]["LEAKFLAG5Name"].ToString();
  1982. dr["InspectionLevel"] = ds.Tables[0].Rows[0]["InspectionLevel"].ToString();
  1983. dr["PackingDefect"] = ds.Tables[0].Rows[0]["PackingDefect"].ToString();
  1984. dr["InspectionGoodsLevel"] = ds.Tables[0].Rows[0]["InspectionGoodsLevel"].ToString();
  1985. dr["offlineFlag"] = ds.Tables[0].Rows[0]["OFFLINEFLAG"].ToString();
  1986. dr["recyclingFlag"] = ds.Tables[0].Rows[0]["RECYCLINGFLAG"].ToString();
  1987. dr["waterLabelCode"] = ds.Tables[0].Rows[0]["WATERLABELCODE"].ToString();
  1988. dr["goodsLineType"] = ds.Tables[0].Rows[0]["GOODS_LINE_TYPE"].ToString();
  1989. //修磨
  1990. dr["out_LeakFlag7"] = ds.Tables[0].Rows[0]["LEAKFLAG7"].ToString();
  1991. dr["out_LeakFlag7Name"] = ds.Tables[0].Rows[0]["LEAKFLAG7Name"].ToString();
  1992. //if (string.IsNullOrWhiteSpace(ds.Tables[0].Rows[0]["refireflag"].ToString()))
  1993. //{
  1994. // dr["refireflag"] = Convert.ToInt32(refireflagdata.Rows[0]["refireflag"]);
  1995. //}
  1996. dr["refireflag"] = Convert.ToInt32(ds.Tables[0].Rows[0]["refireflag"]);
  1997. //养水不合格,查询养水不合格位置
  1998. if (ds.Tables[0].Rows[0]["LEAKFLAG4"].ToString() == "0")
  1999. {
  2000. string leakFlag4Positions = @"SELECT t.*
  2001. FROM TP_PM_BARCODELEAKPOSITION t where t.barcode= :BARCODE and leaktype = 4";
  2002. paras = new OracleParameter[]{
  2003. new OracleParameter(":BARCODE",barcode),};
  2004. leakFlag4Table = oracleConn.GetSqlResultToDt(leakFlag4Positions, paras);
  2005. }
  2006. //试水不合格,查询试水不合格位置
  2007. if (ds.Tables[0].Rows[0]["LEAKFLAG5"].ToString() == "0")
  2008. {
  2009. string leakFlag5Positions = @"SELECT t.*
  2010. FROM TP_PM_BARCODELEAKPOSITION t where t.barcode= :BARCODE and leaktype = 5";
  2011. paras = new OracleParameter[]{
  2012. new OracleParameter(":BARCODE",barcode),};
  2013. leakFlag5Table = oracleConn.GetSqlResultToDt(leakFlag5Positions, paras);
  2014. }
  2015. //补裂位置
  2016. string leakFlag6Positions = @"SELECT t.*
  2017. FROM TP_PM_BARCODELEAKPOSITION t where t.barcode= :BARCODE and leaktype = 6";
  2018. OracleParameter[] paras6 = new OracleParameter[]{
  2019. new OracleParameter(":BARCODE",barcode),};
  2020. leakFlag6Table = oracleConn.GetSqlResultToDt(leakFlag6Positions, paras6);
  2021. }
  2022. else
  2023. {
  2024. dr["refireflag"] = Convert.ToInt32(refireflagdata.Rows[0]["refireflag"]);
  2025. }
  2026. //获取上一次成品检验的缺陷
  2027. if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0)
  2028. {
  2029. sqlString2 = @"select TP_PM_Defect.DefectID ,replace(
  2030. concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectName) ,
  2031. concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectCode||'->'),TP_PM_Defect.DefectCode||'->'
  2032. )
  2033. as DefectName,
  2034. TP_PM_Defect.DefectCode,
  2035. TP_PM_Defect.DefectPositionID,
  2036. replace(
  2037. concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionName) ,
  2038. concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionCode||'->'),TP_PM_Defect.DefectPositionCode||'->'
  2039. )
  2040. as DefectPositionName,
  2041. TP_PM_Defect.DefectPositionCode,
  2042. TP_PM_Defect.DefectProcedureID,
  2043. TP_PM_Defect.DefectProcedureCode,
  2044. TP_PM_Defect.DefectProcedureName,TP_PM_Defect.DefectUserID
  2045. ,TP_PM_Defect.DefectUserCode,TP_PM_Defect.DefectUserName,
  2046. TP_PM_Defect.DefectProductionDataID,
  2047. TP_PM_Defect.Remarks AS DefectRemarks ,
  2048. TP_MST_Jobs.JobsID AS Jobs,
  2049. TP_MST_Jobs.JobsName AS JobsText,
  2050. TP_MST_DefectFine.DefectFineID,
  2051. TP_MST_DefectFine.DefectFineCode AS DefectFineValue,
  2052. TP_PM_Defect.MissedUserID,
  2053. TP_PM_Defect.MissedUserCode,
  2054. TP_PM_Defect.MissedUserName,
  2055. TP_PM_Defect.DefectDeductionNum,
  2056. TP_PM_Defect.SpecialDefect,
  2057. TP_PM_Defect.CheckTime,
  2058. (SELECT listagg(to_char(s.staffname), ',') within GROUP(ORDER BY s.staffid)
  2059. FROM tp_pm_defectresponsible dp
  2060. INNER JOIN tp_hr_staff s
  2061. ON s.staffid = dp.staffid
  2062. where dp.productiondefectid = TP_PM_Defect.PRODUCTIONDEFECTID) DefectStaffNames ,
  2063. ROWNUM-1 as TempCount
  2064. from TP_PM_Defect
  2065. left join TP_MST_Jobs on TP_PM_Defect.DefectJobs=TP_MST_Jobs.JobsID
  2066. left join TP_MST_DefectFine on TP_PM_Defect.DefectFine=TP_MST_DefectFine.DefectFineID
  2067. where TP_PM_Defect.ProductionDataID = :ProductionDataID";
  2068. OracleParameter[] paras1 = new OracleParameter[]{
  2069. new OracleParameter(":ProductionDataID",Convert.ToInt32(dataTable.Tables[0].Rows[0]["ProductionDataID"])),
  2070. };
  2071. defectSet = oracleConn.GetSqlResultToDs(sqlString2, paras1);
  2072. }
  2073. // 取回收标识
  2074. sqlString2 = @"
  2075. SELECT gdd.RECYCLINGFLAG
  2076. FROM TP_PM_GroutingDailyDetail gdd
  2077. WHERE gdd.BARCODE = :BARCODE ";
  2078. paras = new OracleParameter[]
  2079. {
  2080. new OracleParameter(":BARCODE", barcode),
  2081. };
  2082. DataSet recyclingSet = oracleConn.GetSqlResultToDs(sqlString2, paras);
  2083. if (recyclingSet != null && recyclingSet.Tables.Count > 0)
  2084. {
  2085. dr["recyclingFlag"] = recyclingSet.Tables[0].Rows[0]["RECYCLINGFLAG"].ToString();
  2086. }
  2087. }
  2088. }
  2089. }
  2090. dtBarCode.Rows.Add(dr);
  2091. // 获取plc重量 add by fubin 2020-7-20
  2092. if (!dtBarCode.Columns.Contains("PLCWeight"))
  2093. {
  2094. dtBarCode.Columns.Add("PLCWeight", typeof(decimal));
  2095. dtBarCode.Rows[0]["PLCWeight"] = 0;
  2096. }
  2097. // 成检交接(二检) 获取重量
  2098. if (procedureID == 104)
  2099. {
  2100. dtBarCode.Rows[0]["PLCWeight"] = Get3PLCWeight(sUserInfo);
  2101. }
  2102. returnDs.Tables.Add(dtBarCode);
  2103. if (leakFlag4Table != null && leakFlag4Table.Rows.Count > 0)
  2104. {
  2105. leakFlag4Table.TableName = "leakFlag4Table";
  2106. returnDs.Tables.Add(leakFlag4Table);
  2107. }
  2108. if (leakFlag5Table != null && leakFlag5Table.Rows.Count > 0)
  2109. {
  2110. leakFlag5Table.TableName = "leakFlag5Table";
  2111. returnDs.Tables.Add(leakFlag5Table);
  2112. }
  2113. if (leakFlag6Table != null && leakFlag6Table.Rows.Count > 0)
  2114. {
  2115. leakFlag6Table.TableName = "leakFlag6Table";
  2116. returnDs.Tables.Add(leakFlag6Table);
  2117. }
  2118. //缺陷
  2119. if (defectSet != null && defectSet.Tables.Count > 0 && defectSet.Tables[0].Rows.Count > 0)
  2120. {
  2121. defectSet.Tables[0].TableName = "DefectTable";
  2122. returnDs.Tables.Add(defectSet.Tables[0].Copy());
  2123. }
  2124. return returnDs;
  2125. }
  2126. catch (Exception ex)
  2127. {
  2128. throw ex;
  2129. }
  2130. finally
  2131. {
  2132. if (oracleConn.ConnState == ConnectionState.Open)
  2133. {
  2134. oracleConn.Close();
  2135. }
  2136. }
  2137. }
  2138. /// <summary>
  2139. /// 获取plc重量 add by fubin 2020-7-20
  2140. /// </summary>
  2141. /// <param name="sUserInfo"></param>
  2142. /// <returns></returns>
  2143. public static decimal Get3PLCWeight(SUserInfo sUserInfo)
  2144. {
  2145. ServiceResultEntity sre = PLCModuleLogic.ReadPLCWeightByUser_HEGII_S3(sUserInfo);
  2146. if (sre.Result != null && sre.Result is JArray && (sre.Result as JArray)[0]["weight"] != null)
  2147. {
  2148. return Convert.ToDecimal((sre.Result as JArray)[0]["weight"]);
  2149. }
  2150. return 0;
  2151. }
  2152. /// <summary>
  2153. /// 根据条码及工序判断是否漏扫
  2154. /// </summary>
  2155. /// <param name="barcode">产品条码</param>
  2156. /// <param name="produceid">校验工序ID</param>
  2157. /// <param name="sUserInfo">用户基本信息</param>
  2158. /// <returns>DataSet</returns>
  2159. public static int AddBarCodeMissing(IDBConnection oracleTrConn, string barcode, int produceid, SUserInfo sUserInfo)
  2160. {
  2161. try
  2162. {
  2163. #region 查询产成品
  2164. string sqlString = @"select TP_PM_InProduction.FlowProcedureID,NVL(TP_PM_InProduction.ReworkProcedureID,0) as ReworkProcedureID,
  2165. TP_PM_InProduction.GoodsID,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,
  2166. TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_MST_Goods.GoodsTypeID,TP_PM_InProduction.isrefire
  2167. from TP_PM_InProduction left join TP_PC_Procedure
  2168. on TP_PM_InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID
  2169. left join TP_MST_Goods on TP_PM_InProduction.GoodsID=TP_MST_Goods.GoodsID
  2170. where TP_PM_InProduction.BarCode =:barCode";
  2171. OracleParameter[] paras = new OracleParameter[]{
  2172. new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2173. };
  2174. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2175. #endregion
  2176. int AddBarCodeMissingID = 0;//新增漏扫表的ID
  2177. if (ds != null && ds.Tables[0].Rows.Count > 0) //只有是在产的,才可以去进行漏扫
  2178. {
  2179. #region 获取此条码为在产产品
  2180. int CompleteProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["FlowProcedureID"]);//WMSYS.WM_CONCAT(to_char(pro.ProcedureName)),max(line.ProductionLineName)
  2181. string CompleteProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  2182. string CompleteProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  2183. int GoodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  2184. string GoodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  2185. string GoodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  2186. int GoodsTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsTypeID"]);
  2187. int ReworkProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ReworkProcedureID"]);//返工工序
  2188. int isrefire = Convert.ToInt32(ds.Tables[0].Rows[0]["isrefire"]);//重烧标记
  2189. #endregion
  2190. // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 begin
  2191. // 漏扫序号大的可到达工序与检验工序不在一条路径上时,要验证下一个可到达工序。
  2192. // 即与检验工序在一条路径上的漏扫序号最大可到达工序为漏扫工序。
  2193. #region 获取漏扫工序信息
  2194. if (ReworkProcedureID == 0)
  2195. {
  2196. sqlString = @" select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_ProcedureGoods
  2197. left join TP_PC_Procedure on TP_PC_ProcedureGoods.ProcedureID=TP_PC_Procedure.ProcedureID
  2198. where TP_PC_ProcedureGoods.goodsid=( select Goodsid from TP_PM_GroutingDailyDetail where BarCode=:barCode)
  2199. and TP_PC_ProcedureGoods.ProcedureID in(
  2200. select pro.ProcedureID
  2201. from TP_PC_ProcedureFlow flow
  2202. inner join TP_PC_Procedure pro
  2203. on flow.arriveprocedureid = pro.procedureid
  2204. inner join TP_PC_ProductionLine line
  2205. on pro.ProductionLineID = line.ProductionLineID
  2206. where flow.ProcedureID =:procedureID
  2207. and flow.FlowFlag = 2 and pro.valueflag = '1'
  2208. -- 非必须工序,不记漏扫
  2209. and pro.MUSTFLAG = '1'
  2210. ) " +
  2211. //" and exists ( " +
  2212. // "select 1 from " +
  2213. // "(" +
  2214. // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " +
  2215. // "( " +
  2216. // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " +
  2217. // ") " +
  2218. // //" start with procedureid=:missProcedureid" +
  2219. // " start with procedureid=TP_PC_ProcedureGoods.ProcedureID" +
  2220. // " connect by nocycle procedureid=prior arriveprocedureid" +
  2221. // ") where arriveprocedureid=:judgeProcedureid " +
  2222. // " ) " +
  2223. //" order by ProcedureID";
  2224. " order by MissPriority DESC, displayno --ProcedureCode DESC";
  2225. paras = new OracleParameter[]{
  2226. new OracleParameter(":procedureID",OracleDbType.Int32,CompleteProcedureID,ParameterDirection.Input),
  2227. new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2228. //new OracleParameter(":missProcedureid",OracleDbType.Int32,missprocedureid,ParameterDirection.Input),
  2229. //new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input),
  2230. };
  2231. }
  2232. else
  2233. {
  2234. sqlString = "select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_Procedure where ProcedureID=:procedureID";
  2235. paras = new OracleParameter[]{
  2236. new OracleParameter(":procedureID",OracleDbType.Int32,ReworkProcedureID,ParameterDirection.Input),
  2237. };
  2238. }
  2239. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2240. if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  2241. {
  2242. return AddBarCodeMissingID;
  2243. }
  2244. //int missprocedureid = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]);
  2245. //string missprocedurecode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  2246. //string missprocedurename = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  2247. int missprocedureid = -1;
  2248. string missprocedurecode = "";
  2249. string missprocedurename = "";
  2250. #endregion
  2251. #region 增加判断校验工序必须是在漏扫工序的后面工序
  2252. //sqlString = "select * from " +
  2253. // "(" +
  2254. // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " +
  2255. // "( " +
  2256. // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " +
  2257. // ")" +
  2258. // " start with procedureid=:missProcedureid" +
  2259. // " connect by nocycle procedureid=prior arriveprocedureid" +
  2260. // ") where arriveprocedureid=:judgeProcedureid ";
  2261. //paras = new OracleParameter[]{
  2262. // new OracleParameter(":missProcedureid",OracleDbType.Int32,missprocedureid,ParameterDirection.Input),
  2263. // new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input),
  2264. // };
  2265. //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2266. //if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  2267. //{
  2268. // return AddBarCodeMissingID;
  2269. //}
  2270. foreach (DataRow item in ds.Tables[0].Rows)
  2271. {
  2272. //sqlString = "select * from " +
  2273. // "(" +
  2274. // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " +
  2275. // "( " +
  2276. // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " +
  2277. // ")" +
  2278. // " start with procedureid=:missProcedureid" +
  2279. // " connect by nocycle procedureid=prior arriveprocedureid" +
  2280. // ") where arriveprocedureid=:judgeProcedureid ";
  2281. sqlString = "SELECT procedureid\n" +
  2282. " ,arriveprocedureid\n" +
  2283. " ,ltrim(sys_connect_by_path(procedureid, '->') || '->' || arriveprocedureid) sybp\n" +
  2284. " FROM (SELECT procedureid\n" +
  2285. " ,arriveprocedureid\n" +
  2286. " FROM (SELECT *\n" +
  2287. " FROM tp_pc_procedureflow\n" +
  2288. " WHERE arriveprocedureid <> :missProcedureid\n" +
  2289. " AND flowflag = 2)\n" +
  2290. " WHERE arriveprocedureid = :judgeProcedureid )\n" +
  2291. " START WITH procedureid = :missProcedureid\n" +
  2292. " CONNECT BY nocycle procedureid = PRIOR arriveprocedureid";
  2293. paras = new OracleParameter[]{
  2294. new OracleParameter(":missProcedureid",OracleDbType.Int32,Convert.ToInt32(item["ProcedureID"]),ParameterDirection.Input),
  2295. new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input),
  2296. };
  2297. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2298. if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  2299. {
  2300. continue;
  2301. }
  2302. missprocedureid = Convert.ToInt32(item["ProcedureID"]);
  2303. missprocedurecode = item["ProcedureCode"].ToString();
  2304. missprocedurename = item["ProcedureName"].ToString();
  2305. break;
  2306. }
  2307. if (missprocedureid == -1)
  2308. {
  2309. return AddBarCodeMissingID;
  2310. }
  2311. #endregion
  2312. // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 end
  2313. //sqlString = "select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_Procedure where ProcedureID=:procedureID";
  2314. //paras = new OracleParameter[]{
  2315. // new OracleParameter(":procedureID",OracleDbType.Int32,produceid,ParameterDirection.Input),
  2316. // };
  2317. //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2318. //int nodetype = Convert.ToInt32(ds.Tables[0].Rows[0]["NodeType"]);//获取当前工序的类型,为了判断如果成检设置重燃,未走重燃,直接包装,还有就是不记录以前工序的值
  2319. //if ((produceid > missprocedureid) || (ReworkProcedureID > 0 && nodetype == 3) || (isrefire == 6))//3 为结束节点,6为重烧
  2320. // 前面已经判断过 校验工序在漏扫工序(应该是当前工序吧)后 by chenxy 2020-03-29 begin
  2321. //sqlString = "select 1 from TP_PM_ProductionDataIn where barcode=:barcode and ProcedureID=:ProcedureID and ValueFlag=1";
  2322. //paras = new OracleParameter[]{
  2323. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2324. // new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  2325. // };
  2326. //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2327. //// if (produceid > missprocedureid)
  2328. //if (ds != null && ds.Tables[0].Rows.Count == 0) // 未走过该工序
  2329. // 前面已经判断过 校验工序在漏扫工序(应该是当前工序吧)后 by chenxy 2020-03-29 end
  2330. {
  2331. #region 插入漏扫表,如果漏扫表里有相应的条码,不允许重复插入
  2332. sqlString = @"select missid from TP_PM_BarCodeMissing where barcode=:barcode and MissProcedureID=:MissProcedureID and ProcedureID=:ProcedureID";
  2333. paras = new OracleParameter[]{
  2334. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2335. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  2336. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  2337. };
  2338. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2339. if (ds != null && ds.Tables[0].Rows.Count == 0) // 没有此条码的工序,即插入
  2340. {
  2341. int OrganizationID = 0;
  2342. string OrganizationName = "";
  2343. string OrganizationCode = "";
  2344. string OrganizationFullName = "";
  2345. sqlString = @"select TP_MST_Organization.OrganizationID
  2346. ,TP_MST_Organization.OrganizationName
  2347. ,TP_MST_Organization.OrganizationCode
  2348. ,TP_MST_Organization.OrganizationFullName
  2349. from TP_PC_Procedure left join TP_MST_Organization
  2350. on TP_MST_Organization.OrganizationID=TP_PC_Procedure.OrganizationID
  2351. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  2352. paras = new OracleParameter[]{
  2353. new OracleParameter(":ProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  2354. };
  2355. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2356. OrganizationID = Convert.ToInt32(ds.Tables[0].Rows[0]["OrganizationID"]); //组织机构ID
  2357. OrganizationName = ds.Tables[0].Rows[0]["OrganizationName"].ToString(); //组织机构名称
  2358. OrganizationCode = ds.Tables[0].Rows[0]["OrganizationCode"].ToString(); //组织机构编码
  2359. OrganizationFullName = ds.Tables[0].Rows[0]["OrganizationFullName"].ToString(); //组织机构全称
  2360. // 获取校验工序信息
  2361. sqlString = @"select TP_PC_Procedure.ProcedureID
  2362. ,TP_PC_Procedure.ProcedureCode
  2363. ,TP_PC_Procedure.ProcedureName
  2364. from TP_PC_Procedure
  2365. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  2366. paras = new OracleParameter[]{
  2367. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  2368. };
  2369. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2370. string ProcedureCode = "";
  2371. string ProcedureName = "";
  2372. if (ds != null && ds.Tables[0].Rows.Count > 0) // 没有此条码的工序,即插入
  2373. {
  2374. ProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  2375. ProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  2376. }
  2377. //漏扫表ID
  2378. string sql = "select SEQ_PM_BarCodeMissing_MissID.nextval from dual";
  2379. AddBarCodeMissingID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  2380. sqlString = @"insert into TP_PM_BarCodeMissing(MissID,
  2381. BarCode,
  2382. OrganizationID,
  2383. OrganizationName,
  2384. OrganizationCode,
  2385. OrganizationFullName,
  2386. CompleteProcedureID,
  2387. CompleteProcedureCode,
  2388. CompleteProcedureName,
  2389. ProcedureID,
  2390. ProcedureCode,
  2391. ProcedureName,
  2392. MissProcedureID,
  2393. MissProcedureCode,
  2394. MissProcedureName,
  2395. GoodsID,
  2396. GoodsCode,
  2397. GoodsName,
  2398. GoodsTypeID,
  2399. CreateUserID,
  2400. UpdateUserID,
  2401. AccountID
  2402. ) values
  2403. ( :MissID,
  2404. :BarCode,
  2405. :OrganizationID,
  2406. :OrganizationName,
  2407. :OrganizationCode,
  2408. :OrganizationFullName,
  2409. :CompleteProcedureID,
  2410. :CompleteProcedureCode,
  2411. :CompleteProcedureName,
  2412. :ProcedureID,
  2413. :ProcedureCode,
  2414. :ProcedureName,
  2415. :MissProcedureID,
  2416. :MissProcedureCode,
  2417. :MissProcedureName,
  2418. :GoodsID,
  2419. :GoodsCode,
  2420. :GoodsName,
  2421. :GoodsTypeID,
  2422. :CreateUserID,
  2423. :UpdateUserID,
  2424. :AccountID
  2425. )
  2426. ";
  2427. paras = new OracleParameter[]{
  2428. new OracleParameter(":MissID",OracleDbType.Int32, AddBarCodeMissingID,ParameterDirection.Input),
  2429. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2430. new OracleParameter(":OrganizationID",OracleDbType.Int32, OrganizationID,ParameterDirection.Input),
  2431. new OracleParameter(":OrganizationName",OracleDbType.Varchar2, OrganizationName,ParameterDirection.Input),
  2432. new OracleParameter(":OrganizationCode",OracleDbType.Varchar2, OrganizationCode,ParameterDirection.Input),
  2433. new OracleParameter(":OrganizationFullName",OracleDbType.Varchar2, OrganizationFullName,ParameterDirection.Input),
  2434. new OracleParameter(":CompleteProcedureID",OracleDbType.Int32, CompleteProcedureID,ParameterDirection.Input),
  2435. new OracleParameter(":CompleteProcedureCode",OracleDbType.Varchar2, CompleteProcedureCode,ParameterDirection.Input),
  2436. new OracleParameter(":CompleteProcedureName",OracleDbType.Varchar2, CompleteProcedureName,ParameterDirection.Input),
  2437. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  2438. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2, ProcedureCode,ParameterDirection.Input),
  2439. new OracleParameter(":ProcedureName",OracleDbType.Varchar2, ProcedureName,ParameterDirection.Input),
  2440. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  2441. new OracleParameter(":MissProcedureCode",OracleDbType.Varchar2,missprocedurecode ,ParameterDirection.Input),
  2442. new OracleParameter(":MissProcedureName",OracleDbType.Varchar2, missprocedurename,ParameterDirection.Input),
  2443. new OracleParameter(":GoodsID",OracleDbType.Int32, GoodsID,ParameterDirection.Input),
  2444. new OracleParameter(":GoodsCode",OracleDbType.Varchar2,GoodsCode ,ParameterDirection.Input),
  2445. new OracleParameter(":GoodsName",OracleDbType.Varchar2, GoodsName,ParameterDirection.Input),
  2446. new OracleParameter(":GoodsTypeID",OracleDbType.Int32, GoodsTypeID,ParameterDirection.Input),
  2447. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2448. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2449. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  2450. };
  2451. oracleTrConn.GetSqlResultToStr(sqlString, paras);
  2452. }
  2453. #endregion
  2454. }
  2455. }
  2456. else //不在产
  2457. {
  2458. #region 是否存在注浆产品
  2459. sqlString = @"select TP_PM_GroutingDailyDetail.BarCode,TP_PM_GroutingDailyDetail.GoodsID,TP_PM_GroutingDailyDetail.GoodsCode,
  2460. TP_PM_GroutingDailyDetail.GoodsName,TP_MST_Goods.GoodsTypeID
  2461. from TP_PM_GroutingDailyDetail
  2462. left join TP_MST_Goods on TP_PM_GroutingDailyDetail.GoodsID=TP_MST_Goods.GoodsID
  2463. where TP_PM_GroutingDailyDetail.BarCode=:BarCode";
  2464. paras = new OracleParameter[]{
  2465. new OracleParameter(":BarCode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  2466. };
  2467. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2468. #endregion
  2469. if (ds != null && ds.Tables[0].Rows.Count > 0)
  2470. {
  2471. // 此条码为在产产品
  2472. //int? CompleteProcedureID = null;//WMSYS.WM_CONCAT(to_char(pro.ProcedureName)),max(line.ProductionLineName)
  2473. //string CompleteProcedureCode = "";
  2474. //string CompleteProcedureName = "";
  2475. int GoodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  2476. string GoodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  2477. string GoodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  2478. int GoodsTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsTypeID"]);
  2479. // #region 存在注浆产品,查看是否存在报损记录或者产成品记录
  2480. // sqlString = @"select BarCode from TP_PM_ScrapProduct where BarCode=:BarCode and ValueFlag=1
  2481. // union select BarCode from TP_PM_FinishedProduct where BarCode=:BarCode and ValueFlag=1";
  2482. // paras = new OracleParameter[]{
  2483. // new OracleParameter(":BarCode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  2484. // };
  2485. // ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2486. // #endregion
  2487. // if (ds != null && ds.Tables[0].Rows.Count == 0) //即不在报损 ,也不在产成,说明未走任何工序
  2488. // {
  2489. #region 查出校验工序的据在生产线,从而查出此生产上的漏扫开始工序节点
  2490. int ProductionLineID = 0;
  2491. //查出校验工序生产线ID,用于区分多生产线的首个开始节点
  2492. sqlString = @"select ProductionLineID from TP_PC_Procedure where ProcedureID=:procedureID";
  2493. paras = new OracleParameter[]{
  2494. new OracleParameter(":procedureID",OracleDbType.Int32,produceid,ParameterDirection.Input),
  2495. };
  2496. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2497. if (ds != null && ds.Tables[0].Rows.Count > 0) //
  2498. {
  2499. ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  2500. }
  2501. sqlString = @" select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_ProcedureGoods
  2502. left join TP_PC_Procedure on TP_PC_ProcedureGoods.ProcedureID=TP_PC_Procedure.ProcedureID
  2503. where TP_PC_ProcedureGoods.goodsid=( select Goodsid from TP_PM_GroutingDailyDetail where BarCode=:barCode)
  2504. and TP_PC_ProcedureGoods.ProcedureID in(
  2505. select ProcedureID
  2506. from TP_PC_Procedure
  2507. where ProductionLineID =:ProductionLineID and NodeType=1 and valueflag = '1')
  2508. order by TP_PC_Procedure.misspriority desc, TP_PC_Procedure.displayno";
  2509. paras = new OracleParameter[]{
  2510. new OracleParameter(":ProductionLineID",OracleDbType.Int32,ProductionLineID,ParameterDirection.Input),
  2511. new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2512. };
  2513. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2514. #endregion
  2515. if (ds != null && ds.Tables[0].Rows.Count > 0) //即不在报损 ,也不在产成,说明未走任何工序
  2516. {
  2517. int missprocedureid = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]);
  2518. string missprocedurecode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  2519. string missprocedurename = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  2520. #region 插入漏扫表,如果漏扫表里有相应的条码,不允许重复插入
  2521. sqlString = @"select 1 from TP_PM_BarCodeMissing where barcode=:barcode and MissProcedureID=:MissProcedureID and ProcedureID=:ProcedureID";
  2522. paras = new OracleParameter[]{
  2523. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2524. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  2525. new OracleParameter(":ProcedureID",OracleDbType.Int32,produceid,ParameterDirection.Input),
  2526. };
  2527. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2528. if (ds != null && ds.Tables[0].Rows.Count == 0) // 没有此条码的工序,即插入
  2529. {
  2530. int OrganizationID = 0;
  2531. string OrganizationName = "";
  2532. string OrganizationCode = "";
  2533. string OrganizationFullName = "";
  2534. sqlString = @"select TP_MST_Organization.OrganizationID
  2535. ,TP_MST_Organization.OrganizationName
  2536. ,TP_MST_Organization.OrganizationCode
  2537. ,TP_MST_Organization.OrganizationFullName
  2538. from TP_PC_Procedure left join TP_MST_Organization
  2539. on TP_MST_Organization.OrganizationID=TP_PC_Procedure.OrganizationID
  2540. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  2541. paras = new OracleParameter[]{
  2542. new OracleParameter(":ProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  2543. };
  2544. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2545. OrganizationID = Convert.ToInt32(ds.Tables[0].Rows[0]["OrganizationID"]); //组织机构ID
  2546. OrganizationName = ds.Tables[0].Rows[0]["OrganizationName"].ToString(); //组织机构名称
  2547. OrganizationCode = ds.Tables[0].Rows[0]["OrganizationCode"].ToString(); //组织机构编码
  2548. OrganizationFullName = ds.Tables[0].Rows[0]["OrganizationFullName"].ToString(); //组织机构全称
  2549. // 获取校验工序信息
  2550. sqlString = @"select TP_PC_Procedure.ProcedureID
  2551. ,TP_PC_Procedure.ProcedureCode
  2552. ,TP_PC_Procedure.ProcedureName
  2553. from TP_PC_Procedure
  2554. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  2555. paras = new OracleParameter[]{
  2556. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  2557. };
  2558. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2559. string ProcedureCode = "";
  2560. string ProcedureName = "";
  2561. if (ds != null && ds.Tables[0].Rows.Count > 0) // 没有此条码的工序,即插入
  2562. {
  2563. ProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  2564. ProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  2565. }
  2566. //漏扫表ID
  2567. string sql = "select SEQ_PM_BarCodeMissing_MissID.nextval from dual";
  2568. AddBarCodeMissingID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  2569. sqlString = @"insert into TP_PM_BarCodeMissing(MissID,
  2570. BarCode,
  2571. OrganizationID,
  2572. OrganizationName,
  2573. OrganizationCode,
  2574. OrganizationFullName,
  2575. ProcedureID,
  2576. ProcedureCode,
  2577. ProcedureName,
  2578. MissProcedureID,
  2579. MissProcedureCode,
  2580. MissProcedureName,
  2581. GoodsID,
  2582. GoodsCode,
  2583. GoodsName,
  2584. GoodsTypeID,
  2585. CreateUserID,
  2586. UpdateUserID,
  2587. AccountID
  2588. ) values
  2589. ( :MissID,
  2590. :BarCode,
  2591. :OrganizationID,
  2592. :OrganizationName,
  2593. :OrganizationCode,
  2594. :OrganizationFullName,
  2595. :ProcedureID,
  2596. :ProcedureCode,
  2597. :ProcedureName,
  2598. :MissProcedureID,
  2599. :MissProcedureCode,
  2600. :MissProcedureName,
  2601. :GoodsID,
  2602. :GoodsCode,
  2603. :GoodsName,
  2604. :GoodsTypeID,
  2605. :CreateUserID,
  2606. :UpdateUserID,
  2607. :AccountID
  2608. )
  2609. ";
  2610. paras = new OracleParameter[]{
  2611. new OracleParameter(":MissID",OracleDbType.Int32, AddBarCodeMissingID,ParameterDirection.Input),
  2612. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2613. new OracleParameter(":OrganizationID",OracleDbType.Int32, OrganizationID,ParameterDirection.Input),
  2614. new OracleParameter(":OrganizationName",OracleDbType.Varchar2, OrganizationName,ParameterDirection.Input),
  2615. new OracleParameter(":OrganizationCode",OracleDbType.Varchar2, OrganizationCode,ParameterDirection.Input),
  2616. new OracleParameter(":OrganizationFullName",OracleDbType.Varchar2, OrganizationFullName,ParameterDirection.Input),
  2617. //new OracleParameter(":CompleteProcedureID",OracleDbType.Int32, CompleteProcedureID,ParameterDirection.Input),
  2618. //new OracleParameter(":CompleteProcedureCode",OracleDbType.Varchar2, CompleteProcedureCode,ParameterDirection.Input),
  2619. //new OracleParameter(":CompleteProcedureName",OracleDbType.Varchar2, CompleteProcedureName,ParameterDirection.Input),
  2620. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  2621. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2, ProcedureCode,ParameterDirection.Input),
  2622. new OracleParameter(":ProcedureName",OracleDbType.Varchar2, ProcedureName,ParameterDirection.Input),
  2623. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  2624. new OracleParameter(":MissProcedureCode",OracleDbType.Varchar2,missprocedurecode ,ParameterDirection.Input),
  2625. new OracleParameter(":MissProcedureName",OracleDbType.Varchar2, missprocedurename,ParameterDirection.Input),
  2626. new OracleParameter(":GoodsID",OracleDbType.Int32, GoodsID,ParameterDirection.Input),
  2627. new OracleParameter(":GoodsCode",OracleDbType.Varchar2,GoodsCode ,ParameterDirection.Input),
  2628. new OracleParameter(":GoodsName",OracleDbType.Varchar2, GoodsName,ParameterDirection.Input),
  2629. new OracleParameter(":GoodsTypeID",OracleDbType.Int32, GoodsTypeID,ParameterDirection.Input),
  2630. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2631. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2632. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  2633. };
  2634. oracleTrConn.GetSqlResultToStr(sqlString, paras);
  2635. }
  2636. #endregion
  2637. }
  2638. //}
  2639. }
  2640. }
  2641. return AddBarCodeMissingID;
  2642. }
  2643. catch (Exception ex)
  2644. {
  2645. throw ex;
  2646. }
  2647. }
  2648. #endregion
  2649. #region 校验生产工号
  2650. /// <summary>
  2651. /// 检验此用户是否允许生产工序
  2652. /// </summary>
  2653. /// <param name="procedureID">工序ID</param>
  2654. /// <param name="UserID">工号ID</param>
  2655. /// <returns>CheckProcedureUserResult实体类</returns>
  2656. public static CheckProcedureUserResult CheckProcedureUser(int procedureID, string UserCode, SUserInfo sUserInfo)
  2657. {
  2658. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2659. try
  2660. {
  2661. oracleConn.Open();
  2662. string sqlString = @"SELECT TP_MST_USER.ispublicbody,TP_MST_USER.USERID,TP_MST_USER.UserCode,TP_MST_USER.UserName,nvl(TP_PC_ProcedureUser.Userid,0) as ProcedureUserid FROM TP_MST_USER
  2663. left join (select TP_PC_ProcedureUser.Userid from TP_PC_ProcedureUser where TP_PC_ProcedureUser.ProcedureID=:ProcedureID) TP_PC_ProcedureUser
  2664. on TP_PC_ProcedureUser.Userid=TP_MST_USER.UserID
  2665. WHERE TP_MST_USER.UserCode=:UserCode and TP_MST_USER.ValueFlag = 1 and TP_MST_USER.IsWorker=1 and TP_MST_USER.AccountID=:accountID";
  2666. OracleParameter[] paras = new OracleParameter[]{
  2667. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  2668. new OracleParameter(":UserCode",OracleDbType.Varchar2,UserCode,ParameterDirection.Input),
  2669. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2670. };
  2671. DataSet resultDs = oracleConn.GetSqlResultToDs(sqlString, paras);
  2672. CheckProcedureUserResult checkProcedureUserResult = new CheckProcedureUserResult();
  2673. if (resultDs != null && resultDs.Tables.Count > Constant.INT_IS_ZERO && resultDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  2674. {
  2675. if (Convert.ToInt32(resultDs.Tables[0].Rows[0]["ProcedureUserid"]) == Constant.INT_IS_ZERO)
  2676. {
  2677. // 此工号不允许生产工序
  2678. checkProcedureUserResult.ErrMsg
  2679. = string.Format(Messages.MSG_PM_W006, UserCode);
  2680. }
  2681. else
  2682. {
  2683. checkProcedureUserResult.UserID = Convert.ToInt32(resultDs.Tables[0].Rows[0]["UserID"]);
  2684. checkProcedureUserResult.UserCode = resultDs.Tables[0].Rows[0]["UserCode"].ToString();
  2685. checkProcedureUserResult.UserName = resultDs.Tables[0].Rows[0]["UserName"].ToString();
  2686. checkProcedureUserResult.Ispublicbody = resultDs.Tables[0].Rows[0]["Ispublicbody"].ToString() == "1" ? 1 : 0;
  2687. }
  2688. }
  2689. else
  2690. {
  2691. checkProcedureUserResult.ErrMsg
  2692. = string.Format(Messages.MSG_CMN_W019, UserCode, "生产工号");
  2693. }
  2694. #region 查询该工号下是否有试用或者转正的生产员工
  2695. if (string.IsNullOrEmpty(checkProcedureUserResult.ErrMsg))
  2696. {
  2697. sqlString = @"
  2698. select count(*) from tp_hr_staff where staffid in(select staffid
  2699. from tp_mst_userstaff where userid=:userID) and valueflag=1 and (staffstatus=1 or staffstatus=2)";
  2700. paras = new OracleParameter[]{
  2701. new OracleParameter(":userID",OracleDbType.Int32,checkProcedureUserResult.UserID,ParameterDirection.Input),
  2702. };
  2703. string count = oracleConn.GetSqlResultToStr(sqlString, paras);
  2704. if (int.Parse(count) == Constant.INT_IS_ZERO)
  2705. {
  2706. checkProcedureUserResult.ErrMsg
  2707. = string.Format(Messages.MSG_PM_W005, UserCode);
  2708. }
  2709. }
  2710. #endregion
  2711. return checkProcedureUserResult;
  2712. }
  2713. catch (Exception ex)
  2714. {
  2715. throw ex;
  2716. }
  2717. finally
  2718. {
  2719. if (oracleConn.ConnState == ConnectionState.Open)
  2720. {
  2721. oracleConn.Close();
  2722. }
  2723. }
  2724. }
  2725. #endregion
  2726. /// <summary>
  2727. /// 根据工序条码获得生产数据
  2728. /// </summary>
  2729. /// <param name="procedureID">工序ID</param>
  2730. /// <param name="barcode">产品条码</param>
  2731. /// <returns>DataSet</returns>
  2732. public static DataSet GetProductionByBarcode(int procedureID, string barcode)
  2733. {
  2734. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2735. try
  2736. {
  2737. con.Open();
  2738. string sqlString = "select t.ProductionDataID,t.Barcode,t.GoodsID,t.GoodsCode,t.GoodsName,t.UserID,t.UserCode,t.UserName,t.DefectFlag,t.ReworkProcedureID,t.Remarks from TP_PM_ProductionData t where t.barcode='" + barcode + "' and t.ProcedureID=" + procedureID;
  2739. DataSet ds = con.GetSqlResultToDs(sqlString);
  2740. return ds;
  2741. }
  2742. catch (Exception ex)
  2743. {
  2744. throw ex;
  2745. }
  2746. finally
  2747. {
  2748. if (con.ConnState == ConnectionState.Open)
  2749. {
  2750. con.Close();
  2751. }
  2752. }
  2753. }
  2754. /// <summary>
  2755. /// 获取生产返工工序
  2756. /// </summary>
  2757. /// <param name="procedureID">工序ID</param>
  2758. /// <param name="barcode">产品条码</param>
  2759. /// <returns>DataSet</returns>
  2760. public static DataSet GetReworkProcedureByBarcode(int procedureID, string barcode)
  2761. {
  2762. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2763. try
  2764. {
  2765. con.Open();
  2766. string sqlString = @"select t.ProcedureID as ReworkProcedureID, t.ProcedureCode as ReworkProcedureCode, t.ProcedureName as ReworkProcedureName
  2767. from TP_PM_ProductionData t
  2768. where t.ProcedureModel=1 and t.ModelType=0 and t.barcode='" + barcode + "' ";
  2769. DataSet ds = con.GetSqlResultToDs(sqlString);
  2770. return ds;
  2771. }
  2772. catch (Exception ex)
  2773. {
  2774. throw ex;
  2775. }
  2776. finally
  2777. {
  2778. if (con.ConnState == ConnectionState.Open)
  2779. {
  2780. con.Close();
  2781. }
  2782. }
  2783. }
  2784. /// <summary>
  2785. /// 获取重烧生产返工工序
  2786. /// </summary>
  2787. /// <param name="procedureID">工序ID</param>
  2788. /// <param name="barcode">产品条码</param>
  2789. /// <returns>DataSet</returns>
  2790. public static DataSet GetReworkProcedureByProcedureID(int procedureID)
  2791. {
  2792. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2793. try
  2794. {
  2795. con.Open();
  2796. string sqlString = @"select ProcedureID as ReworkProcedureID ,ProcedureName as ReworkProcedureName
  2797. from TP_PC_Procedure p where ProductionLineID
  2798. in(
  2799. select ProductionLineID from TP_PC_Procedure where ProcedureID=:ProcedureID
  2800. ) and p.valueflag='1'
  2801. and IsSpecialRework IN('1','2') order by ReworkProcedureID ";
  2802. OracleParameter[] paras = new OracleParameter[]{
  2803. new OracleParameter(":ProcedureID",OracleDbType.Int32, procedureID,ParameterDirection.Input),
  2804. };
  2805. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  2806. return ds;
  2807. }
  2808. catch (Exception ex)
  2809. {
  2810. throw ex;
  2811. }
  2812. finally
  2813. {
  2814. if (con.ConnState == ConnectionState.Open)
  2815. {
  2816. con.Close();
  2817. }
  2818. }
  2819. }
  2820. /// <summary>
  2821. /// 根据生产数据ID获取对应的缺陷信息
  2822. /// </summary>
  2823. /// <param name="ProductionDataID">生产数据ID</param>
  2824. /// <returns>DataSet</returns>
  2825. public static DataSet GetProductionDefectByProductionDataID(int ProductionDataID)
  2826. {
  2827. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2828. try
  2829. {
  2830. con.Open();
  2831. string sqlString = @"select replace(
  2832. concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectName) ,
  2833. concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectCode||'->'),TP_PM_Defect.DefectCode||'->'
  2834. )
  2835. as DefectName,
  2836. replace(
  2837. concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionName) ,
  2838. concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionCode||'->'),TP_PM_Defect.DefectPositionCode||'->'
  2839. )
  2840. as DefectPositionName,
  2841. TP_PM_Defect.DefectProcedureName
  2842. ,TP_PM_Defect.DefectUserCode,TP_PM_Defect.DefectUserName,TP_PM_Defect.Remarks,TP_MST_Jobs.JobsName,TP_MST_DefectFine.DefectFineCode as DefectFine,
  2843. TP_PM_Defect.DefectDeductionNum,
  2844. (SELECT listagg(to_char(s.staffname), ',') within GROUP(ORDER BY s.staffid)
  2845. FROM tp_pm_defectresponsible dp
  2846. INNER JOIN tp_hr_staff s
  2847. ON s.staffid = dp.staffid
  2848. where dp.productiondefectid = TP_PM_Defect.PRODUCTIONDEFECTID) DefectStaffNames
  2849. from TP_PM_Defect left join TP_MST_Jobs on TP_PM_Defect.DefectJobs=TP_MST_Jobs.JobsID
  2850. left join TP_MST_DefectFine on TP_PM_Defect.DefectFine=TP_MST_DefectFine.DefectFineID
  2851. where TP_PM_Defect.ProductionDataID=" + ProductionDataID;
  2852. DataSet ds = con.GetSqlResultToDs(sqlString);
  2853. return ds;
  2854. }
  2855. catch (Exception ex)
  2856. {
  2857. throw ex;
  2858. }
  2859. finally
  2860. {
  2861. if (con.ConnState == ConnectionState.Open)
  2862. {
  2863. con.Close();
  2864. }
  2865. }
  2866. }
  2867. /// <summary>
  2868. /// 根据产品ID查出缺陷位置
  2869. /// </summary>
  2870. /// <param name="goodsID">产品ID</param>
  2871. /// <returns>object</returns>
  2872. public static object GetDefectPosition(string positionCode, SUserInfo sUserInfo)
  2873. {
  2874. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2875. try
  2876. {
  2877. con.Open();
  2878. string sqlString = @"select DEFECTPOSITIONID,
  2879. DEFECTPOSITIONCODE,
  2880. DEFECTPOSITIONNAME,
  2881. concat(DEFECTPOSITIONCODE||'->',DEFECTPOSITIONNAME) as DEFECTPOSITIONCODEANDNAME
  2882. from TP_MST_DEFECTPOSITION
  2883. where AccountID=:accountID and DEFECTPOSITIONCODE=:defectpositioncode and ValueFlag=1";
  2884. OracleParameter[] paras = new OracleParameter[]{
  2885. new OracleParameter(":accountID",sUserInfo.AccountID),
  2886. new OracleParameter(":defectpositioncode",positionCode),
  2887. };
  2888. DataSet resultds = con.GetSqlResultToDs(sqlString, paras);
  2889. if (resultds != null && resultds.Tables.Count > Constant.INT_IS_ZERO)
  2890. {
  2891. string errMsg = string.Empty;
  2892. int defectPositionID = 0;
  2893. string defectpositionname = string.Empty;
  2894. if (resultds.Tables[0].Rows.Count == Constant.INT_IS_ZERO)
  2895. {
  2896. errMsg = "缺陷位置在系统中不存在";
  2897. }
  2898. else
  2899. {
  2900. defectPositionID = int.Parse(resultds.Tables[0].Rows[0]["defectPositionID"].ToString());
  2901. defectpositionname = resultds.Tables[0].Rows[0]["defectpositionname"].ToString();
  2902. }
  2903. return new { ErrMsg = errMsg, DefectPositionID = defectPositionID, DefectPositionName = defectpositionname };
  2904. }
  2905. else
  2906. {
  2907. return null;
  2908. }
  2909. }
  2910. catch (Exception ex)
  2911. {
  2912. throw ex;
  2913. }
  2914. finally
  2915. {
  2916. if (con.ConnState == ConnectionState.Open)
  2917. {
  2918. con.Close();
  2919. }
  2920. }
  2921. }
  2922. /// <summary>
  2923. /// 获取半检相应的数据
  2924. /// </summary>
  2925. /// <param name="semiTestID">半检ID</param>
  2926. /// <returns>DataSet</returns>
  2927. public static DataSet GetSemiTestByID(int semiTestID)
  2928. {
  2929. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2930. try
  2931. {
  2932. con.Open();
  2933. DataSet dsReturn = new DataSet();
  2934. string stringSql1 = @"select
  2935. TP_MST_User.Userid,
  2936. TP_MST_User.Usercode,
  2937. TP_MST_User.Username,
  2938. TP_PM_SemiTest.TestDate,
  2939. TP_PM_SemiTest.Remarks,
  2940. TP_PM_SemiTest.Optimestamp,
  2941. TP_PM_SemiTest.AuditStatus,
  2942. TP_PM_SemiTest.SemiTestType
  2943. from TP_PM_SemiTest
  2944. left join TP_MST_User
  2945. on TP_PM_SemiTest.TestUserID= TP_MST_User.Userid
  2946. where TP_PM_SemiTest.SemiTestID=:SemiTestID";
  2947. string stringSql2 = @"select
  2948. TP_PM_SemiTestDetail.Semitestdetailid,
  2949. TP_PM_SemiTestDetail.Groutinguserid,
  2950. TP_PM_SemiTestDetail.Goodsid,
  2951. TP_PM_SemiTestDetail.Goodscode,
  2952. TP_PM_SemiTestDetail.Goodsname,
  2953. TP_PM_SemiTestDetail.Testnum,
  2954. TP_PM_SemiTestDetail.Scrapnum,
  2955. TP_PM_SemiTestDetail.Scrapreason,
  2956. TP_PM_SemiTestDetail.Feedback,
  2957. TP_MST_Goods.Goodsspecification,
  2958. TP_MST_Goods.Goodsmodel,
  2959. TP_MST_GoodsType.GoodsTypeName
  2960. from TP_PM_SemiTestDetail
  2961. left join TP_MST_Goods
  2962. on TP_PM_SemiTestDetail.Goodsid=TP_MST_Goods.Goodsid
  2963. left join TP_MST_GoodsType
  2964. on TP_MST_Goods.Goodstypeid=TP_MST_GoodsType.Goodstypeid
  2965. where TP_PM_SemiTestDetail.Semitestid=:SemiTestID";
  2966. string stringSql3 = @"select
  2967. TP_PM_SemiTestDefect.SemiTestDefectID,
  2968. TP_PM_SemiTestDefect.SemiTestDetailID,
  2969. TP_PM_SemiTestDefect.SemiTestID,
  2970. TP_PM_SemiTestDefect.SemiTestDate,
  2971. TP_PM_SemiTestDefect.Defectid,
  2972. TP_PM_SemiTestDefect.Defectpositionid,
  2973. TP_PM_SemiTestDefect.DefectNum
  2974. from TP_PM_SemiTestDefect
  2975. where TP_PM_SemiTestDefect.Semitestid=:SemiTestID
  2976. ";
  2977. OracleParameter[] paras = new OracleParameter[]{
  2978. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestID,ParameterDirection.Input),
  2979. };
  2980. DataSet ds = con.GetSqlResultToDs(stringSql1, paras);
  2981. ds.Tables[0].TableName = "TP_PM_SemiTest";
  2982. DataSet ds2 = con.GetSqlResultToDs(stringSql2, paras);
  2983. ds2.Tables[0].TableName = "TP_PM_SemiTestDetail";
  2984. DataSet ds3 = con.GetSqlResultToDs(stringSql3, paras);
  2985. ds3.Tables[0].TableName = "TP_PM_SemiTestDefect";
  2986. dsReturn.Tables.Add(ds.Tables[0].Copy());
  2987. dsReturn.Tables.Add(ds2.Tables[0].Copy());
  2988. dsReturn.Tables.Add(ds3.Tables[0].Copy());
  2989. return dsReturn;
  2990. }
  2991. catch (Exception ex)
  2992. {
  2993. throw ex;
  2994. }
  2995. finally
  2996. {
  2997. if (con.ConnState == ConnectionState.Open)
  2998. {
  2999. con.Close();
  3000. }
  3001. }
  3002. }
  3003. /// <summary>
  3004. /// 获取审批半检数据结果集
  3005. /// </summary>
  3006. /// <param name="semiTestEntity">半检实体类</param>
  3007. /// <param name="user">用户基本信息</param>
  3008. /// <returns>DataSet</returns>
  3009. public static DataSet SearchSemiTestList(SemiTestEntity semiTestEntity, SUserInfo user)
  3010. {
  3011. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3012. try
  3013. {
  3014. con.Open();
  3015. OracleParameter[] paras = new OracleParameter[]{
  3016. new OracleParameter("in_begindate",OracleDbType.Date,
  3017. semiTestEntity.beginDate,ParameterDirection.Input),
  3018. new OracleParameter("in_enddate",OracleDbType.Date,
  3019. semiTestEntity.endDate,ParameterDirection.Input),
  3020. new OracleParameter("in_accountID",OracleDbType.Int32,
  3021. user.AccountID,ParameterDirection.Input),
  3022. new OracleParameter("in_testuserIDS",OracleDbType.NVarchar2,
  3023. semiTestEntity.TestUserIDS,ParameterDirection.Input),
  3024. new OracleParameter("in_currentUserID",OracleDbType.Int32,
  3025. user.UserID,ParameterDirection.Input),
  3026. new OracleParameter("in_remarks",OracleDbType.NVarchar2,
  3027. semiTestEntity.Remarks,ParameterDirection.Input),
  3028. new OracleParameter("out_result",OracleDbType.RefCursor,
  3029. ParameterDirection.Output),
  3030. new OracleParameter("in_semitesttype",OracleDbType.Int32,
  3031. semiTestEntity.SemiTestType,ParameterDirection.Input),
  3032. new OracleParameter("in_testuserid",OracleDbType.Int32,
  3033. semiTestEntity.TestUserID,ParameterDirection.Input),
  3034. };
  3035. DataSet ds = con.ExecStoredProcedure("PRO_PM_SearchSemiTestList", paras);
  3036. return ds;
  3037. }
  3038. catch (Exception ex)
  3039. {
  3040. throw ex;
  3041. }
  3042. finally
  3043. {
  3044. if (con.ConnState == ConnectionState.Open)
  3045. {
  3046. con.Close();
  3047. }
  3048. }
  3049. }
  3050. /// <summary>
  3051. /// 获取半检数据详细数据源
  3052. /// </summary>
  3053. /// <param name="semitestID">半检ID</param>
  3054. /// <param name="user">用户基本信息</param>
  3055. /// <returns>DataSet</returns>
  3056. public static DataSet SearchSemiTestInfo(int semitestID, SUserInfo user)
  3057. {
  3058. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3059. try
  3060. {
  3061. con.Open();
  3062. OracleParameter[] paras = new OracleParameter[]{
  3063. new OracleParameter("in_semitestID",OracleDbType.Int32,
  3064. semitestID,ParameterDirection.Input),
  3065. new OracleParameter("in_accountID",OracleDbType.Int32,
  3066. user.AccountID,ParameterDirection.Input),
  3067. new OracleParameter("out_result",OracleDbType.RefCursor,
  3068. ParameterDirection.Output),
  3069. };
  3070. DataSet ds = con.ExecStoredProcedure("PRO_PM_SearchSemiTestInfo", paras);
  3071. return ds;
  3072. }
  3073. catch (Exception ex)
  3074. {
  3075. throw ex;
  3076. }
  3077. finally
  3078. {
  3079. if (con.ConnState == ConnectionState.Open)
  3080. {
  3081. con.Close();
  3082. }
  3083. }
  3084. }
  3085. /// <summary>
  3086. /// 获取半检数据详细数据源
  3087. /// </summary>
  3088. /// <param name="semitestDetailID">半检明细ID</param>
  3089. /// <param name="user">用户基本信息</param>
  3090. /// <returns>DataSet</returns>
  3091. public static DataSet SearchSemiTestDetailInfo(int semitestDetailID, SUserInfo user)
  3092. {
  3093. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3094. try
  3095. {
  3096. con.Open();
  3097. OracleParameter[] paras = new OracleParameter[]{
  3098. new OracleParameter("in_semitestDetailID",OracleDbType.Int32,
  3099. semitestDetailID,ParameterDirection.Input),
  3100. new OracleParameter("in_accountID",OracleDbType.Int32,
  3101. user.AccountID,ParameterDirection.Input),
  3102. new OracleParameter("out_result",OracleDbType.RefCursor,
  3103. ParameterDirection.Output),
  3104. };
  3105. DataSet ds = con.ExecStoredProcedure("PRO_PM_SearchSemiTestDetail", paras);
  3106. return ds;
  3107. }
  3108. catch (Exception ex)
  3109. {
  3110. throw ex;
  3111. }
  3112. finally
  3113. {
  3114. if (con.ConnState == ConnectionState.Open)
  3115. {
  3116. con.Close();
  3117. }
  3118. }
  3119. }
  3120. /// <summary>
  3121. /// 获取产品条码是否重烧
  3122. /// </summary>
  3123. /// <param name="barcode">产品条码</param>
  3124. /// <returns>Datase</returns>
  3125. public static DataSet GetReFine(string barcode)
  3126. {
  3127. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3128. try
  3129. {
  3130. //获取窑炉管理数据
  3131. //string sqlString = "Select IsReFire from TP_PM_InProduction where barcode=:barcode";
  3132. string sqlString = "select IsReFire, IsLengBu from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode=:barcode)";
  3133. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  3134. {
  3135. new Oracle.ManagedDataAccess.Client.OracleParameter(":barcode",barcode)
  3136. };
  3137. oracleConn.Open();
  3138. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  3139. oracleConn.Close();
  3140. return result;
  3141. }
  3142. catch (Exception ex)
  3143. {
  3144. if (oracleConn.ConnState == ConnectionState.Open)
  3145. {
  3146. oracleConn.Close();
  3147. }
  3148. throw ex;
  3149. }
  3150. finally
  3151. {
  3152. if (oracleConn.ConnState == ConnectionState.Open)
  3153. {
  3154. oracleConn.Close();
  3155. }
  3156. }
  3157. }
  3158. /// <summary>
  3159. /// 检验干补条码
  3160. /// </summary>
  3161. /// <param name="procedureID">工序ID</param>
  3162. /// <param name="barcode">产品条码</param>
  3163. /// <returns>DataSet</returns>
  3164. public static DataSet CheckDryRepairBarcode(int procedureID, string barcode, SUserInfo sUserInfo)
  3165. {
  3166. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3167. try
  3168. {
  3169. oracleConn.Open();
  3170. OracleParameter[] paras = new OracleParameter[]{
  3171. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  3172. new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  3173. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  3174. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  3175. new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  3176. new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  3177. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  3178. };
  3179. oracleConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  3180. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  3181. DataSet returnDs = new DataSet();
  3182. DataRow dr = dtBarCode.NewRow();
  3183. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()]
  3184. = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  3185. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value;
  3186. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value;
  3187. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value;
  3188. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value;
  3189. if (paras[2].Value.ToString() == "null") //只有正确的条码,读注浆信息
  3190. {
  3191. string sqlString = @"select
  3192. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3193. tp_pm_groutingdailydetail.groutingcount as GroutingNum,
  3194. tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
  3195. tp_pm_groutingdailydetail.ispublicbody,
  3196. tp_pm_groutingdailydetail.Groutingdate,
  3197. tp_pm_groutingdailydetail.SpecialRepairFlag,
  3198. tp_mst_logo.logoid,
  3199. tp_mst_logo.logocode,
  3200. tp_mst_logo.logoname
  3201. from tp_pm_groutingdailydetail
  3202. left join tp_mst_logo
  3203. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  3204. where tp_pm_groutingdailydetail.BarCode=:barcode";
  3205. paras = new OracleParameter[]{
  3206. new OracleParameter(":barcode",barcode),
  3207. };
  3208. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  3209. if (ds != null && ds.Tables[0].Rows.Count > 0)
  3210. {
  3211. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3212. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  3213. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  3214. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  3215. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  3216. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  3217. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  3218. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  3219. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoID"].ToString();
  3220. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString();
  3221. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString();
  3222. }
  3223. }
  3224. dtBarCode.Rows.Add(dr);
  3225. returnDs.Tables.Add(dtBarCode);
  3226. return returnDs;
  3227. }
  3228. catch (Exception ex)
  3229. {
  3230. throw ex;
  3231. }
  3232. finally
  3233. {
  3234. if (oracleConn.ConnState == ConnectionState.Open)
  3235. {
  3236. oracleConn.Close();
  3237. }
  3238. }
  3239. }
  3240. /// <summary>
  3241. /// 报损工序查出工号根据生产数据ID
  3242. /// </summary>
  3243. /// <param name="ProductionDataID"></param>
  3244. /// <returns></returns>
  3245. public static DataSet GetScrapProductUserCodeByProductionDataID(int ProductionDataID)
  3246. {
  3247. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3248. try
  3249. {
  3250. con.Open();
  3251. string sqlString = @"select UserID,UserCode,UserName from TP_PM_ProductionDataIn
  3252. where ProductionDataID=:ProductionDataID";
  3253. OracleParameter[] paras = new OracleParameter[]{
  3254. new OracleParameter(":ProductionDataID",OracleDbType.Int32, ProductionDataID,ParameterDirection.Input),
  3255. };
  3256. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  3257. return ds;
  3258. }
  3259. catch (Exception ex)
  3260. {
  3261. throw ex;
  3262. }
  3263. finally
  3264. {
  3265. if (con.ConnState == ConnectionState.Open)
  3266. {
  3267. con.Close();
  3268. }
  3269. }
  3270. }
  3271. /// <summary>
  3272. /// 交坯验证条码(首节点)
  3273. /// </summary>
  3274. /// <param name="procedureID">工序ID</param>
  3275. /// <param name="barcode">产品条码</param>
  3276. /// <returns>DataSet</returns>
  3277. public static DataSet CheckBarcodeDeliverMud(int procedureID, string barcode, SUserInfo sUserInfo, bool isInn = false)
  3278. {
  3279. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3280. try
  3281. {
  3282. oracleConn.IgnoreCase = false;
  3283. oracleConn.Open();
  3284. // 2019-1016
  3285. if (!isInn)
  3286. {
  3287. //xuwei fix 2019-09-26 使用通用方法判定
  3288. //if (PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode) == 0)
  3289. //{
  3290. // return CheckBarcode(procedureID, barcode, sUserInfo, true);
  3291. //}
  3292. string sql1 = "select NodeType from tp_pc_procedure where procedureid=:procedureid";
  3293. string NodeType = oracleConn.GetSqlResultToObj(sql1, new OracleParameter[] { new OracleParameter(":procedureid", procedureID) }) + "";
  3294. if (NodeType == "1")
  3295. {
  3296. int isNodeBegin = PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode);
  3297. if (isNodeBegin == 0)
  3298. {
  3299. return CheckBarcode(procedureID, barcode, sUserInfo, true);
  3300. }
  3301. }
  3302. else
  3303. {
  3304. return CheckBarcode(procedureID, barcode, sUserInfo, true);
  3305. }
  3306. }
  3307. string sql = "select barcodestatus,GroutingDailyDetailid from TP_PM_USEDBARCODE where BarCode='" + barcode + "'";
  3308. sql = "select barcodestatus,GroutingDailyDetailid from TP_PM_USEDBARCODE where BarCode=:barcode";
  3309. OracleParameter[] paras = new OracleParameter[]{
  3310. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  3311. };
  3312. DataSet ds = oracleConn.GetSqlResultToDs(sql, paras);
  3313. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  3314. DataSet returnDs = new DataSet();
  3315. DataRow dr = dtBarCode.NewRow();
  3316. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = barcode;
  3317. if (ds != null && ds.Tables[0].Rows.Count == 0)
  3318. {
  3319. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码[" + barcode + "]";
  3320. }
  3321. else
  3322. {
  3323. //不等于空的时候
  3324. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  3325. {
  3326. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + barcode + "'";
  3327. string newbarcode = oracleConn.GetSqlResultToStr(sql);
  3328. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码已被替换,新条码为" + newbarcode;
  3329. }
  3330. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  3331. {
  3332. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已成型报损";
  3333. }
  3334. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" ||
  3335. ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4")
  3336. {
  3337. //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已交坯";
  3338. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已在产";
  3339. }
  3340. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "1")
  3341. {
  3342. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "";
  3343. string sqlString = @"select
  3344. tp_pm_GroutingDailyDetail.GoodsID,
  3345. tp_pm_GroutingDailyDetail.GoodsCode,
  3346. tp_pm_GroutingDailyDetail.GoodsName,
  3347. tp_pm_GroutingDailyDetail.UserID as GroutingUserID,
  3348. tp_pm_GroutingDailyDetail.UserCode as GroutingUserCode,
  3349. tp_mst_user.username as GroutingUserName,
  3350. tp_pm_GroutingDailyDetail.groutingcount as GroutingNum,
  3351. tp_pm_GroutingDailyDetail.GroutingMouldCode as MouldCode,
  3352. tp_pm_GroutingDailyDetail.ispublicbody,
  3353. tp_pm_GroutingDailyDetail.Groutingdate,
  3354. tp_pm_GroutingDailyDetail.SpecialRepairFlag,
  3355. tp_mst_logo.logoid,
  3356. tp_mst_logo.logocode,
  3357. tp_mst_logo.logoname,
  3358. TP_MST_Goods.DeliverLimitCycle
  3359. from
  3360. tp_pm_GroutingDailyDetail
  3361. left join tp_mst_logo
  3362. on tp_pm_GroutingDailyDetail.logoid=tp_mst_logo.logoid
  3363. left join tp_mst_user
  3364. on tp_pm_GroutingDailyDetail.userid=tp_mst_user.userid
  3365. left join TP_MST_Goods
  3366. on tp_pm_GroutingDailyDetail.GoodsID=TP_MST_Goods.GoodsID
  3367. where tp_pm_GroutingDailyDetail.groutingdailydetailid=" + ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString();
  3368. //paras = new OracleParameter[]{
  3369. // new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  3370. // };
  3371. ds = oracleConn.GetSqlResultToDs(sqlString, null);
  3372. if (ds != null && ds.Tables[0].Rows.Count > 0)
  3373. {
  3374. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  3375. paras = new OracleParameter[]{
  3376. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  3377. new OracleParameter(":ProcedureID",procedureID),
  3378. };
  3379. DataSet dsGoods = oracleConn.GetSqlResultToDs(sqlExistGoods, paras);
  3380. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  3381. {
  3382. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = @"条码[" + barcode +
  3383. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  3384. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  3385. }
  3386. else
  3387. {
  3388. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString();
  3389. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  3390. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  3391. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  3392. dr[Constant.BarCodeResultTableColumns.out_groutingUserName.ToString()] = ds.Tables[0].Rows[0]["GroutingUserName"].ToString();
  3393. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3394. dr[Constant.BarCodeResultTableColumns.out_groutingUserID.ToString()] = ds.Tables[0].Rows[0]["GroutingUserID"].ToString();
  3395. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  3396. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  3397. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  3398. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  3399. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  3400. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  3401. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  3402. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  3403. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logocode"].ToString();
  3404. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoname"].ToString();
  3405. dr[Constant.BarCodeResultTableColumns.out_deliverLimitCycle.ToString()] = ds.Tables[0].Rows[0]["DeliverLimitCycle"].ToString();
  3406. // 首节点无需暂时字段
  3407. //barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString());
  3408. //barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString());
  3409. }
  3410. }
  3411. }
  3412. }
  3413. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  3414. dtBarCode.Rows.Add(dr);
  3415. returnDs.Tables.Add(dtBarCode);
  3416. return returnDs;
  3417. }
  3418. catch (Exception ex)
  3419. {
  3420. throw ex;
  3421. }
  3422. finally
  3423. {
  3424. if (oracleConn.ConnState == ConnectionState.Open)
  3425. {
  3426. oracleConn.Close();
  3427. }
  3428. }
  3429. }
  3430. /// <summary>
  3431. /// 检验条码(除了交坯单点检验)
  3432. /// </summary>
  3433. /// <param name="procedureID">工序ID</param>
  3434. /// <param name="barcode">产品条码</param>
  3435. /// <returns>DataSet</returns>
  3436. public static DataSet CheckBarcodeSinglePoint(int procedureID, string barcode, SUserInfo sUserInfo)
  3437. {
  3438. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3439. try
  3440. {
  3441. oracleConn.Open();
  3442. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  3443. DataSet returnDs = new DataSet();
  3444. DataRow dr = dtBarCode.NewRow();
  3445. string sqlBarcode = GetConvertBarCode(oracleConn, barcode, procedureID, sUserInfo);
  3446. if (sqlBarcode == string.Empty)
  3447. {
  3448. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码";
  3449. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  3450. dtBarCode.Rows.Add(dr);
  3451. returnDs.Tables.Add(dtBarCode);
  3452. return returnDs;
  3453. }
  3454. else
  3455. {
  3456. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = sqlBarcode;
  3457. barcode = sqlBarcode;
  3458. }
  3459. OracleParameter[] paras = new OracleParameter[]{
  3460. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  3461. new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  3462. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  3463. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  3464. new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  3465. new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  3466. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  3467. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  3468. };
  3469. oracleConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  3470. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()]
  3471. = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  3472. int missFlag = 0;
  3473. if (paras[7].Value != null && paras[7].Value.ToString() == "1")
  3474. {
  3475. missFlag = AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo);
  3476. }
  3477. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value;
  3478. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value;
  3479. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value;
  3480. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value;
  3481. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = missFlag;
  3482. if (paras[7].Value.ToString() == "null") //只有正确的条码,读注浆信息
  3483. {
  3484. // string sqlString = @"select
  3485. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3486. // tp_pm_groutingdailydetail.groutingcount as GroutingNum,
  3487. // tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
  3488. // tp_pm_groutingdailydetail.ispublicbody,
  3489. // tp_pm_groutingdailydetail.Groutingdate,
  3490. // tp_pm_groutingdailydetail.SpecialRepairFlag
  3491. // from tp_pm_groutingdailydetail
  3492. // where tp_pm_groutingdailydetail.GroutingDailyDetailID in (select GroutingDailyDetailID from TP_PM_UsedBarCode where barcode=:barcode)";
  3493. string sqlString = "SELECT PI.GROUTINGUSERCODE,\n" +
  3494. " PI.GROUTINGNUM,\n" +
  3495. " PI.GROUTINGMOULDCODE AS MOULDCODE,\n" +
  3496. " PI.ISPUBLICBODY,\n" +
  3497. " PI.GROUTINGDATE,\n" +
  3498. " PI.SPECIALREPAIRFLAG,\n" +
  3499. " L.LOGOID,\n" +
  3500. " L.LOGOCODE,\n" +
  3501. " L.LOGONAME,\n" +
  3502. //" GOODS.WATERLABELCODE\n" +
  3503. " nvl((select gls.WATERLABELCODE\n" +
  3504. " from TP_MST_GOODSLOGOSAP gls\n" +
  3505. " where gls.goodsid = PI.goodsid\n" +
  3506. " and gls.logoid = PI.LOGOID)\n" +
  3507. " ,GOODS.WATERLABELCODE) WATERLABELCODE\n" +
  3508. " FROM TP_PM_INPRODUCTION PI\n" +
  3509. " LEFT JOIN TP_MST_LOGO L\n" +
  3510. " ON PI.LOGOID = L.LOGOID\n" +
  3511. " LEFT JOIN TP_MST_GOODS GOODS\n" +
  3512. " ON PI.GOODSID = GOODS.GOODSID\n" +
  3513. " WHERE PI.BARCODE = :BARCODE";
  3514. paras = new OracleParameter[]
  3515. {
  3516. new OracleParameter(":BARCODE",barcode)
  3517. };
  3518. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  3519. if (ds != null && ds.Tables[0].Rows.Count > 0)
  3520. {
  3521. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GROUTINGUSERCODE"].ToString();
  3522. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GROUTINGNUM"].ToString();
  3523. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MOULDCODE"].ToString();
  3524. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ISPUBLICBODY"].ToString();
  3525. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  3526. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["GROUTINGDATE"].ToString();
  3527. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SPECIALREPAIRFLAG"].ToString();
  3528. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  3529. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["LOGOID"].ToString();
  3530. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["LOGOCODE"].ToString();
  3531. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["LOGONAME"].ToString();
  3532. dr[Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()] = ds.Tables[0].Rows[0]["WATERLABELCODE"].ToString();
  3533. // 获取编码检验标识
  3534. sqlString = "SELECT CODECHECKFLAG FROM TP_PC_PROCEDURE WHERE PROCEDUREID = :PROCEDUREID";
  3535. paras = new OracleParameter[]
  3536. {
  3537. new OracleParameter(":PROCEDUREID",procedureID)
  3538. };
  3539. DataTable dt = oracleConn.GetSqlResultToDt(sqlString, paras);
  3540. if (dt != null && dt.Rows.Count > 0)
  3541. {
  3542. dr[Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()] = dt.Rows[0]["CODECHECKFLAG"] + "";
  3543. }
  3544. }
  3545. }
  3546. dtBarCode.Rows.Add(dr);
  3547. returnDs.Tables.Add(dtBarCode);
  3548. return returnDs;
  3549. }
  3550. catch (Exception ex)
  3551. {
  3552. throw ex;
  3553. }
  3554. finally
  3555. {
  3556. if (oracleConn.ConnState == ConnectionState.Open)
  3557. {
  3558. oracleConn.Close();
  3559. }
  3560. }
  3561. }
  3562. /// <summary>
  3563. /// 交坯验证条码
  3564. /// </summary>
  3565. /// <param name="procedureID">工序ID</param>
  3566. /// <param name="barcode">产品条码</param>
  3567. /// <returns>DataSet</returns>
  3568. public static DataSet CheckBarcodeDeliverMudSinglePoint(int procedureID, string barcode, SUserInfo sUserInfo, ref int? GroutingDailyDetailID)
  3569. {
  3570. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3571. try
  3572. {
  3573. oracleConn.Open();
  3574. string sql = "select barcodestatus,barcode,GroutingDailyDetailid from TP_PM_USEDBARCODE where barcode=:barcode";
  3575. OracleParameter[] paras = new OracleParameter[]{
  3576. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  3577. };
  3578. DataSet ds = oracleConn.GetSqlResultToDs(sql, paras);
  3579. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  3580. DataSet returnDs = new DataSet();
  3581. DataRow dr = dtBarCode.NewRow();
  3582. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = barcode;
  3583. if (ds != null && ds.Tables[0].Rows.Count == 0)
  3584. {
  3585. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码[" + barcode + "]";
  3586. }
  3587. else
  3588. {
  3589. //不等于空的时候
  3590. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  3591. {
  3592. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + ds.Tables[0].Rows[0]["barcode"].ToString() + "'";
  3593. string newbarcode = oracleConn.GetSqlResultToStr(sql);
  3594. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码已被替换,新条码为" + newbarcode;
  3595. }
  3596. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  3597. {
  3598. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已成型报损";
  3599. }
  3600. //
  3601. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" ||
  3602. ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4")
  3603. {
  3604. //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已交坯";
  3605. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已在产";
  3606. }
  3607. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "1")
  3608. {
  3609. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "";
  3610. // string sqlString = @"select
  3611. // TP_PM_GroutingDailyDetail.GoodsID,
  3612. // TP_PM_GroutingDailyDetail.GoodsCode,
  3613. // TP_PM_GroutingDailyDetail.GoodsName,
  3614. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3615. // tp_pm_groutingdailydetail.groutingcount as GroutingNum,
  3616. // tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
  3617. // tp_pm_groutingdailydetail.ispublicbody,
  3618. // tp_pm_groutingdailydetail.Groutingdate,
  3619. // tp_pm_groutingdailydetail.SpecialRepairFlag
  3620. // from TP_PM_USEDBARCODE
  3621. // left join
  3622. // tp_pm_groutingdailydetail
  3623. // on TP_PM_USEDBARCODE.groutingdailydetailid=tp_pm_groutingdailydetail.groutingdailydetailid
  3624. // where tp_pm_groutingdailydetail.BarCode=:barcode";
  3625. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString());
  3626. string sqlString = @"select
  3627. tp_pm_GroutingDailyDetail.groutingdailydetailid,
  3628. tp_pm_GroutingDailyDetail.GoodsID,
  3629. tp_pm_GroutingDailyDetail.GoodsCode,
  3630. tp_pm_GroutingDailyDetail.GoodsName,
  3631. tp_pm_GroutingDailyDetail.UserCode as GroutingUserCode,
  3632. tp_pm_GroutingDailyDetail.groutingcount as GroutingNum,
  3633. tp_pm_GroutingDailyDetail.GroutingMouldCode as MouldCode,
  3634. tp_pm_GroutingDailyDetail.ispublicbody,
  3635. tp_pm_GroutingDailyDetail.Groutingdate,
  3636. tp_pm_GroutingDailyDetail.SpecialRepairFlag,
  3637. tp_mst_logo.logoid,
  3638. tp_mst_logo.logocode,
  3639. tp_mst_logo.logoname
  3640. from
  3641. tp_pm_GroutingDailyDetail
  3642. left join tp_mst_logo
  3643. on tp_mst_logo.logoid=tp_pm_GroutingDailyDetail.logoid
  3644. where tp_pm_GroutingDailyDetail.groutingdailydetailid=:groutingdailydetailid";
  3645. //where tp_pm_GroutingDailyDetail.barcode=:barcode";
  3646. paras = new OracleParameter[]{
  3647. new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  3648. //new OracleParameter("barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  3649. };
  3650. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  3651. if (ds != null && ds.Tables[0].Rows.Count > 0)
  3652. {
  3653. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString());
  3654. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  3655. paras = new OracleParameter[]{
  3656. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  3657. new OracleParameter(":ProcedureID",procedureID),
  3658. };
  3659. DataSet dsGoods = oracleConn.GetSqlResultToDs(sqlExistGoods, paras);
  3660. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  3661. {
  3662. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = @"条码[" + barcode +
  3663. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  3664. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  3665. }
  3666. else
  3667. {
  3668. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString();
  3669. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  3670. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  3671. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  3672. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3673. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  3674. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  3675. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  3676. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  3677. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  3678. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  3679. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  3680. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  3681. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString();
  3682. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString();
  3683. }
  3684. }
  3685. }
  3686. }
  3687. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  3688. dtBarCode.Rows.Add(dr);
  3689. returnDs.Tables.Add(dtBarCode);
  3690. return returnDs;
  3691. }
  3692. catch (Exception ex)
  3693. {
  3694. throw ex;
  3695. }
  3696. finally
  3697. {
  3698. if (oracleConn.ConnState == ConnectionState.Open)
  3699. {
  3700. oracleConn.Close();
  3701. }
  3702. }
  3703. }
  3704. #region 半成品检验校验条码
  3705. /// <summary>
  3706. /// 半检检验条码
  3707. /// </summary>
  3708. /// <param name="barcode">产品条码</param>
  3709. /// <returns>DataSet</returns>
  3710. public static ServiceResultEntity SemiCheckBarcode(string barcode, SUserInfo sUserInfo)
  3711. {
  3712. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3713. try
  3714. {
  3715. oracleConn.Open();
  3716. ServiceResultEntity resultEntity = new ServiceResultEntity();
  3717. // 1.判断产品是否在产
  3718. string sql = @"select
  3719. InScrapFlag,
  3720. KilnCarID,
  3721. KilnCarName,
  3722. IsReworkFlag,
  3723. SemiCheckID
  3724. from TP_PM_InProduction
  3725. where BarCode=:BarCode";
  3726. OracleParameter[] paras = new OracleParameter[]{
  3727. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  3728. };
  3729. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  3730. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  3731. {
  3732. //// 如果不合格,查询报损表里是否回收
  3733. //sql = "select recyclingflag from TP_PM_ScrapProduct "
  3734. // + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) "
  3735. // + " from TP_PM_ScrapProduct "
  3736. // + " where BarCode=:BarCode and ValueFlag=1)"
  3737. // + " and ValueFlag=1";
  3738. //paras = new OracleParameter[]{
  3739. // new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  3740. // };
  3741. //DataSet dsResult2 = oracleConn.GetSqlResultToDs(sql, paras);
  3742. //if (dsResult2 != null && dsResult2.Tables[0].Rows.Count > 0)
  3743. //{
  3744. // if (Convert.ToInt32(dsResult2.Tables[0].Rows[0]["recyclingflag"]) > 0)
  3745. // {
  3746. // resultEntity.Result = -4;// 已经回收不允许编辑
  3747. // resultEntity.Message = "此产品已经回收,不能改判";
  3748. // return resultEntity;
  3749. // }
  3750. //}
  3751. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  3752. {
  3753. resultEntity.Result = -2; //报损待审批
  3754. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  3755. return resultEntity;
  3756. }
  3757. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  3758. {
  3759. resultEntity.Result = -3; //登窑车后不允许半成品检测
  3760. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]";
  3761. return resultEntity;
  3762. }
  3763. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  3764. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  3765. {
  3766. resultEntity.Result = -4; //半检返修
  3767. resultEntity.Message = "条码[" + barcode + "]已半检返修";
  3768. return resultEntity;
  3769. }
  3770. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  3771. {
  3772. resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);//编辑状态
  3773. resultEntity.Message = "返工";
  3774. }
  3775. else
  3776. {
  3777. resultEntity.Result = "0";//新建状态
  3778. }
  3779. }
  3780. else
  3781. {
  3782. // 同时查是否在在产回收表中
  3783. sql = @"select
  3784. SemiCheckID
  3785. from TP_PM_InProductionTrash
  3786. where BarCode=:BarCode and GoodsLevelTypeID=13 and SemiCheckID is not null"; // 13代表产品不合格
  3787. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  3788. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  3789. {
  3790. resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);//编辑状态
  3791. resultEntity.Message = "不合格";
  3792. }
  3793. else
  3794. {
  3795. resultEntity.Result = -1;// 不在在产表中
  3796. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  3797. }
  3798. }
  3799. return resultEntity;
  3800. }
  3801. catch (Exception ex)
  3802. {
  3803. throw ex;
  3804. }
  3805. finally
  3806. {
  3807. if (oracleConn.ConnState == ConnectionState.Open)
  3808. {
  3809. oracleConn.Close();
  3810. }
  3811. }
  3812. }
  3813. #endregion
  3814. #region 半成品编辑数据
  3815. /// <summary>
  3816. /// 根据半成品检验数据ID,显示半成品数据信息
  3817. /// </summary>
  3818. /// <param name="semiCheckID">半成品数据ID</param>
  3819. /// <returns>DataSet</returns>
  3820. public static DataSet GetSemiCheckByID(int semiCheckID)
  3821. {
  3822. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3823. try
  3824. {
  3825. con.Open();
  3826. DataSet dsReturn = new DataSet();
  3827. string sqlString = @"select
  3828. TP_PM_SemiCheck.SemiCheckID,
  3829. TP_PM_SemiCheck.Barcode as BarCode,
  3830. TP_PM_SemiCheck.Goodsid as GoodsID,
  3831. TP_PM_SemiCheck.Goodscode as GoodsCode,
  3832. TP_MST_Goods.Goodsname as GoodsName,
  3833. TP_PM_SemiCheck.GoodsLevelID as DefectFlagID,
  3834. TP_PM_SemiCheck.ReworkProcedureID as ReworkProcedureID,
  3835. TP_PM_SemiCheck.ReworkProcedureCode,
  3836. TP_PM_SemiCheck.Remarks as Remarks,
  3837. TP_PM_SemiCheck.SemiCheckUserID as UserID,
  3838. TP_PM_SemiCheck.SemiCheckUserCode as UserCode,
  3839. tp_mst_user.UserName as UserName,
  3840. TP_PM_SemiCheck.Goodsleveltypeid as GoodsLevelTypeID,
  3841. TP_PM_SemiCheck.SpecialRepairflag,
  3842. TP_PM_SemiCheck.GroutingUserCode,
  3843. TP_PM_SemiCheck.GroutingMouldCode as MouldCode,
  3844. TP_PM_SemiCheck.GroutingNum,
  3845. TP_PM_SemiCheck.GroutingDate,
  3846. TP_PM_SemiCheck.IsPublicBody,
  3847. TP_PM_SemiCheck.logoid,
  3848. TP_MST_Logo.logocode,
  3849. TP_MST_Logo.logoname,
  3850. TP_PM_SemiCheck.SemiCheckType,
  3851. TP_PM_SemiCheck.ReworkUserID,
  3852. TP_PM_SemiCheck.ReworkUserCode,
  3853. TP_PM_SemiCheck.ReSemiCheckUserCode,
  3854. tp_pc_procedure.procedurename as ReworkProcedureName,
  3855. TP_PM_SemiCheck.ReSemiCheckType,
  3856. TP_PM_SemiCheck.CreateTime,
  3857. TP_PM_SemiCheck.ReSemiCheckTime,
  3858. TP_PM_SemiCheck.SemiCheckTime
  3859. from TP_PM_SemiCheck
  3860. left join TP_MST_Goods
  3861. on TP_PM_SemiCheck.Goodsid=TP_MST_Goods.Goodsid
  3862. left join tp_mst_user
  3863. on TP_PM_SemiCheck.SemiCheckUserID=tp_mst_user.userid
  3864. left join TP_MST_Logo
  3865. on TP_PM_SemiCheck.Logoid=TP_MST_Logo.Logoid
  3866. left join tp_pc_procedure
  3867. on TP_PM_SemiCheck.ReworkProcedureID=tp_pc_procedure.procedureID
  3868. where
  3869. TP_PM_SemiCheck.SemiCheckID=:SemiCheckID
  3870. ";
  3871. string sqlString2 = @"
  3872. select
  3873. defect.semicheckdefectid,
  3874. defect.semicheckid,
  3875. defect.DefectID,
  3876. defect.defectcode,
  3877. defect.defectname,
  3878. defect.defectpositionid,
  3879. defect.defectpositioncode,
  3880. defect.defectpositionname,
  3881. defect.scrapresponflag,
  3882. Procedure.Procedurename as DefectProcedureName,
  3883. Procedure.Procedurecode as DefectProcedureCode,
  3884. defect.defectuserid,
  3885. defect.defectusercode,
  3886. TP_mst_user.username as defectusername,
  3887. defect.remarks,
  3888. defect.DefectProcedureID,
  3889. defect.DefectProductionDataID
  3890. from TP_PM_SemiCheckDefect defect
  3891. left join TP_PC_Procedure Procedure
  3892. on defect.defectprocedureid=Procedure.Procedureid
  3893. left join TP_mst_user
  3894. on defect.DefectUserID=TP_mst_user.userid
  3895. where defect.SemiCheckID =:SemiCheckID";
  3896. string sqlString3 = @"select
  3897. TP_PM_SCDefectResponsible.SemiCheckDefectID,
  3898. TP_PM_SCDefectResponsible.Staffid,
  3899. TP_HR_Staff.Staffcode as StaffCode,
  3900. TP_HR_Staff.Staffname as StaffName,
  3901. TP_PM_SCDefectResponsible.Staffstatus as StaffStatus,
  3902. TP_PM_SCDefectResponsible.UJobsID,
  3903. TP_PM_SCDefectResponsible.SJobsID
  3904. from TP_PM_SCDefectResponsible
  3905. left join TP_HR_Staff
  3906. on TP_PM_SCDefectResponsible.StaffID=TP_HR_Staff.Staffid" +
  3907. //where TP_PM_SCDefectResponsible.SemiCheckDefectID in
  3908. //(
  3909. // select SemiCheckDefectID from TP_PM_SemiCheckDefect where TP_PM_SemiCheckDefect.SemiCheckID=:SemiCheckID
  3910. //)";
  3911. " where TP_PM_SCDefectResponsible.SemiCheckID = :SemiCheckID";
  3912. OracleParameter[] paras = new OracleParameter[]{
  3913. new OracleParameter(":SemiCheckID",OracleDbType.Int32, semiCheckID,ParameterDirection.Input),
  3914. };
  3915. DataTable ds = con.GetSqlResultToDt(sqlString, paras);
  3916. ds.TableName = "TP_PM_SemiCheck";
  3917. DataTable ds2 = con.GetSqlResultToDt(sqlString2, paras);
  3918. ds2.TableName = "TP_PM_SemiCheckDefect";
  3919. DataTable ds3 = con.GetSqlResultToDt(sqlString3, paras);
  3920. ds3.TableName = "TP_PM_SCDefectResponsible";
  3921. dsReturn.Tables.Add(ds);
  3922. dsReturn.Tables.Add(ds2);
  3923. dsReturn.Tables.Add(ds3);
  3924. return dsReturn;
  3925. }
  3926. catch (Exception ex)
  3927. {
  3928. throw ex;
  3929. }
  3930. finally
  3931. {
  3932. if (con.ConnState == ConnectionState.Open)
  3933. {
  3934. con.Close();
  3935. }
  3936. }
  3937. }
  3938. #endregion
  3939. #region 获取条码所走过的工序
  3940. /// <summary>
  3941. /// 根据条码获取经过的工序,用于绑定返工工序
  3942. /// </summary>
  3943. /// <param name="barcode">产品条码</param>
  3944. /// <returns>DataSet</returns>
  3945. public static DataSet GetSemiCheckPassProcedure(string barcode)
  3946. {
  3947. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3948. try
  3949. {
  3950. con.Open();
  3951. // hg5020 半检只定成型和干补的责任 by chenxy 2020-03-30
  3952. // and(TP_PM_ProductionDataIn.modeltype = 8 or(TP_PM_ProductionDataIn.modeltype = 5 and(exists(select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID = TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG = '0'))))
  3953. // and (TP_PM_ProductionDataIn.modeltype <> 5 or (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0')))
  3954. string twcode = con.GetSqlResultToStr("select t.tagcode||t.workcode twcode from tp_mst_account t where t.accountid=1");
  3955. if (twcode == "HEGII5020")
  3956. {
  3957. // hg5020 半检只定成型和干补的责任 by chenxy 2020-03-30
  3958. // and(TP_PM_ProductionDataIn.modeltype = 8 or(TP_PM_ProductionDataIn.modeltype = 5 and(exists(select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID = TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG = '0'))))
  3959. // and (TP_PM_ProductionDataIn.modeltype <> 5 or (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0')))
  3960. string sqlString1 = @"select
  3961. TP_PM_ProductionDataIn.Barcode as BarCode,
  3962. TP_PM_ProductionDataIn.UserID,
  3963. TP_PM_ProductionDataIn.UserCode,
  3964. TP_PM_ProductionDataIn.UserName,
  3965. TP_PM_ProductionDataIn.ProcedureID,
  3966. TP_PM_ProductionDataIn.ProcedureCode,
  3967. TP_PM_ProductionDataIn.ProcedureName,
  3968. TP_PM_ProductionDataIn.ProductionDataID
  3969. from TP_PM_ProductionDataIn
  3970. --left join TP_PC_Procedure
  3971. --on TP_PM_ProductionDataIn.ProcedureID=TP_PC_Procedure.ProcedureID
  3972. where TP_PM_ProductionDataIn.BarCode=:BarCode and TP_PM_ProductionDataIn.valueflag = '1'
  3973. --and (TP_PM_ProductionDataIn.modeltype <> 5 or (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0')))
  3974. and (TP_PM_ProductionDataIn.modeltype=8 or (TP_PM_ProductionDataIn.modeltype = 5 and (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0'))))
  3975. order by TP_PM_ProductionDataIn.ProductionDataID
  3976. ";
  3977. // 干补后 半检 不能选成型责任
  3978. OracleParameter[] paras1 = new OracleParameter[]{
  3979. new OracleParameter(":BarCode",OracleDbType.NVarchar2, barcode,ParameterDirection.Input),
  3980. };
  3981. return con.GetSqlResultToDs(sqlString1, paras1);
  3982. }
  3983. string sqlString = @"select
  3984. TP_PM_ProductionDataIn.Barcode as BarCode,
  3985. TP_PM_ProductionDataIn.UserID,
  3986. TP_PM_ProductionDataIn.UserCode,
  3987. TP_PM_ProductionDataIn.UserName,
  3988. TP_PM_ProductionDataIn.ProcedureID,
  3989. TP_PM_ProductionDataIn.ProcedureCode,
  3990. TP_PM_ProductionDataIn.ProcedureName,
  3991. TP_PM_ProductionDataIn.ProductionDataID
  3992. from TP_PM_ProductionDataIn
  3993. --left join TP_PC_Procedure
  3994. --on TP_PM_ProductionDataIn.ProcedureID=TP_PC_Procedure.ProcedureID
  3995. where TP_PM_ProductionDataIn.BarCode=:BarCode and TP_PM_ProductionDataIn.valueflag = '1'
  3996. and (TP_PM_ProductionDataIn.modeltype <> 5 or (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0')))
  3997. order by TP_PM_ProductionDataIn.ProductionDataID
  3998. ";
  3999. // 干补后 半检 不能选成型责任
  4000. OracleParameter[] paras = new OracleParameter[]{
  4001. new OracleParameter(":BarCode",OracleDbType.NVarchar2, barcode,ParameterDirection.Input),
  4002. };
  4003. DataSet dsReturn = con.GetSqlResultToDs(sqlString, paras);
  4004. return dsReturn;
  4005. }
  4006. catch (Exception ex)
  4007. {
  4008. throw ex;
  4009. }
  4010. finally
  4011. {
  4012. if (con.ConnState == ConnectionState.Open)
  4013. {
  4014. con.Close();
  4015. }
  4016. }
  4017. }
  4018. #endregion
  4019. #region 获取登陆帐户有无半检状态权限
  4020. /// <summary>
  4021. /// 获取登陆帐户有无半检状态权限
  4022. /// </summary>
  4023. /// <param name="usercode">工号编码</param>
  4024. /// <returns></returns>
  4025. public static int GetSemiCheckStatusFuntion(SUserInfo userInfo)
  4026. {
  4027. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4028. try
  4029. {
  4030. con.Open();
  4031. string strSql = "";
  4032. strSql = @"SELECT F.Functionlevel,
  4033. F.FunctionCode,
  4034. F.FunctionName,
  4035. F.FullName,
  4036. F.FunctionFlag,
  4037. F.FunctionButtonFlag,
  4038. F.FormName,
  4039. F.ButtonName
  4040. FROM TP_MST_UserRight R LEFT OUTER JOIN
  4041. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  4042. WHERE F.ValueFlag = 1
  4043. AND F.FunctionCode NOT LIKE '0101%'
  4044. AND F.FunctionCode NOT LIKE '0102%' and F.FunctionCode='06200104'";
  4045. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  4046. DataSet ds = con.GetSqlResultToDs(strSql);
  4047. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4048. {
  4049. return 1;
  4050. }
  4051. return 0;
  4052. }
  4053. catch (Exception ex)
  4054. {
  4055. throw ex;
  4056. }
  4057. finally
  4058. {
  4059. if (con.ConnState == ConnectionState.Open)
  4060. {
  4061. con.Close();
  4062. }
  4063. }
  4064. }
  4065. #endregion
  4066. #region 复检验校验条码
  4067. /// <summary>
  4068. /// 复检验条码
  4069. /// </summary>
  4070. /// <param name="barcode">产品条码</param>
  4071. /// <returns>DataSet</returns>
  4072. public static ServiceResultEntity ReSemiCheckBarcode(string barcode, SUserInfo sUserInfo)
  4073. {
  4074. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4075. try
  4076. {
  4077. oracleConn.Open();
  4078. ServiceResultEntity resultEntity = new ServiceResultEntity();
  4079. // 1.判断产品是否在产
  4080. string sql = @"select
  4081. InScrapFlag,
  4082. KilnCarID,
  4083. KilnCarName,
  4084. IsReworkFlag,
  4085. SemiCheckID
  4086. from TP_PM_InProduction
  4087. where BarCode=:BarCode";
  4088. OracleParameter[] paras = new OracleParameter[]{
  4089. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  4090. };
  4091. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4092. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  4093. {
  4094. resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"] == DBNull.Value ? 0 : dsResult.Tables[0].Rows[0]["SemiCheckID"]);
  4095. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  4096. {
  4097. resultEntity.Result = -2; //报损待审批
  4098. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  4099. return resultEntity;
  4100. }
  4101. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  4102. {
  4103. resultEntity.Result = -3; //登窑车后不允许半成品检测
  4104. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]";
  4105. return resultEntity;
  4106. }
  4107. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  4108. //if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "0")
  4109. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "1")
  4110. {
  4111. resultEntity.Result = -4;
  4112. resultEntity.Message = "条码[" + barcode + "]不是返工状态";
  4113. }
  4114. }
  4115. else
  4116. {
  4117. resultEntity.Result = -1;// 不在在产表中
  4118. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  4119. }
  4120. return resultEntity;
  4121. }
  4122. catch (Exception ex)
  4123. {
  4124. throw ex;
  4125. }
  4126. finally
  4127. {
  4128. if (oracleConn.ConnState == ConnectionState.Open)
  4129. {
  4130. oracleConn.Close();
  4131. }
  4132. }
  4133. }
  4134. #endregion
  4135. #region 撤销复检验条码
  4136. /// <summary>
  4137. /// 撤销复检验条码
  4138. /// </summary>
  4139. /// <param name="barcode">产品条码</param>
  4140. /// <returns>DataSet</returns>
  4141. public static ServiceResultEntity CancelSemiCheckBarcode(string barcode, SUserInfo sUserInfo)
  4142. {
  4143. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4144. try
  4145. {
  4146. oracleConn.Open();
  4147. ServiceResultEntity resultEntity = new ServiceResultEntity();
  4148. // 查出此条码是否存在复检,如果存在复检查出复检状态
  4149. string sql = @"select SemiCheckID,ReSemiCheckType,ProcedureID,productiondataid from TP_PM_SemiCheck where barcode=:barcode and ValueFlag='1' and accountid=:accountid order by SemiCheckID desc";
  4150. OracleParameter[] paras = new OracleParameter[]{
  4151. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  4152. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  4153. };
  4154. //int? procedureID = null; //完成工序
  4155. int? productiondataid = null;
  4156. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4157. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  4158. {
  4159. //procedureID = Convert.ToInt32(dsResult.Tables[0].Rows[0]["ProcedureID"]);
  4160. productiondataid = Convert.ToInt32(dsResult.Tables[0].Rows[0]["productiondataid"]);
  4161. if (dsResult.Tables[0].Rows[0]["ReSemiCheckType"].ToString() == "1")
  4162. {
  4163. resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);
  4164. // 查出复检状态名称
  4165. sql = @"select ReSemiCheckTypeName from TP_SYS_ReSemiCheckType where ReSemiCheckTypeID=" + dsResult.Tables[0].Rows[0]["ReSemiCheckType"];
  4166. DataSet dss = oracleConn.GetSqlResultToDs(sql);
  4167. if (dss != null && dss.Tables[0].Rows.Count > 0)
  4168. {
  4169. resultEntity.Message = dss.Tables[0].Rows[0]["ReSemiCheckTypeName"].ToString();
  4170. }
  4171. else
  4172. {
  4173. resultEntity.Message = "合格(返)";
  4174. }
  4175. // 合格(返)
  4176. paras = new OracleParameter[]{
  4177. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  4178. };
  4179. sql = @"
  4180. select InScrapFlag,
  4181. KilnCarID,
  4182. KilnCarName,
  4183. IsReworkFlag,
  4184. SemiCheckID,ProcedureID,productiondataid from TP_PM_InProduction where barcode=:barcode
  4185. ";
  4186. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4187. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  4188. {
  4189. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  4190. {
  4191. resultEntity.Result = -3;
  4192. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  4193. }
  4194. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  4195. {
  4196. resultEntity.Result = -4;
  4197. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  4198. }
  4199. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  4200. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  4201. {
  4202. resultEntity.Result = -5;
  4203. resultEntity.Message = "条码[" + barcode + "]不是返工状态";
  4204. }
  4205. //if (Convert.ToInt32(dsResult.Tables[0].Rows[0]["ProcedureID"]) != procedureID)
  4206. if (Convert.ToInt32(dsResult.Tables[0].Rows[0]["productiondataid"]) != productiondataid)
  4207. {
  4208. resultEntity.Result = -6;
  4209. resultEntity.Message = "条码[" + barcode + "]已经经过半检时完成的工序,不允许撤销";
  4210. }
  4211. }
  4212. else
  4213. {
  4214. resultEntity.Result = -7;
  4215. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  4216. }
  4217. }
  4218. else if (dsResult.Tables[0].Rows[0]["ReSemiCheckType"].ToString() == "2")
  4219. {
  4220. resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);
  4221. // 查出复检状态名称
  4222. sql = @"select ReSemiCheckTypeName from TP_SYS_ReSemiCheckType where ReSemiCheckTypeID=" + dsResult.Tables[0].Rows[0]["ReSemiCheckType"];
  4223. DataSet dss = oracleConn.GetSqlResultToDs(sql);
  4224. if (dss != null && dss.Tables[0].Rows.Count > 0)
  4225. {
  4226. resultEntity.Message = dss.Tables[0].Rows[0]["ReSemiCheckTypeName"].ToString();
  4227. }
  4228. else
  4229. {
  4230. resultEntity.Message = "不合格(返)";
  4231. }
  4232. // 如果不合格,查询报损表里是否回收
  4233. sql = "select recyclingflag from TP_PM_ScrapProduct "
  4234. + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) "
  4235. + " from TP_PM_ScrapProduct "
  4236. + " where BarCode=:BarCode and ValueFlag=1)"
  4237. + " and ValueFlag=1";
  4238. paras = new OracleParameter[]{
  4239. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  4240. };
  4241. DataSet dsResult2 = oracleConn.GetSqlResultToDs(sql, paras);
  4242. if (dsResult2 != null && dsResult2.Tables[0].Rows.Count > 0)
  4243. {
  4244. if (Convert.ToInt32(dsResult2.Tables[0].Rows[0]["recyclingflag"]) > 0)
  4245. {
  4246. resultEntity.Result = -9;// 已经回收不允许撤销
  4247. resultEntity.Message = "此产品已经回收,不能撤销";
  4248. return resultEntity;
  4249. }
  4250. }
  4251. // 不合格(返)
  4252. sql = @"
  4253. select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=14 and SemiCheckID is not null
  4254. ";
  4255. paras = new OracleParameter[]{
  4256. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  4257. };
  4258. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4259. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  4260. {
  4261. resultEntity.Result = -8;
  4262. resultEntity.Message = "条码[" + barcode + "]不在在产回收站中";
  4263. }
  4264. }
  4265. else if (dsResult.Tables[0].Rows[0]["ReSemiCheckType"].ToString() == "0")
  4266. {
  4267. // 未复检
  4268. resultEntity.Result = -2;
  4269. resultEntity.Message = "条码[" + barcode + "]没有复检不允许撤销";
  4270. }
  4271. }
  4272. else
  4273. {
  4274. resultEntity.Result = -1;// 不在半成品检验
  4275. resultEntity.Message = "条码[" + barcode + "]没有半成品检验";
  4276. }
  4277. // 查出此条码是否存在复检,如果存在复检查出复检状态
  4278. return resultEntity;
  4279. }
  4280. catch (Exception ex)
  4281. {
  4282. throw ex;
  4283. }
  4284. finally
  4285. {
  4286. if (oracleConn.ConnState == ConnectionState.Open)
  4287. {
  4288. oracleConn.Close();
  4289. }
  4290. }
  4291. }
  4292. #endregion
  4293. #region 校验是否允许进行撤销操作
  4294. /// <summary>
  4295. /// 校验条码是否允许撤销,如果不允许提示错误消息
  4296. /// </summary>
  4297. /// <param name="orgTime">原时间</param>
  4298. /// <param name="days">允许撤销天数</param>
  4299. /// <param name="settingCode">设置code,用于返回不同错误消息</param>
  4300. /// <param name="sUserInfo"></param>
  4301. /// <returns></returns>
  4302. public static ServiceResultEntity BarcodeAllowCancel(DateTime orgTime, int days, string settingCode, SUserInfo sUserInfo)
  4303. {
  4304. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4305. try
  4306. {
  4307. ServiceResultEntity resultEntity = new ServiceResultEntity();
  4308. orgTime = orgTime.Date; // 取日期部分
  4309. DateTime currentTime = DateTime.Now.Date;
  4310. // 参数验证用服务端当前设置
  4311. string sqlString = "SELECT sst.settingvalue\n" +
  4312. " FROM tp_mst_systemsetting sst\n" +
  4313. " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  4314. " AND sst.settingcode = '" + settingCode + "'";
  4315. string strValue = oracleConn.GetSqlResultToStr(sqlString);
  4316. int pDays = 0;
  4317. if (int.TryParse(strValue, out pDays))
  4318. {
  4319. days = pDays;
  4320. }
  4321. if (days == 0)
  4322. {
  4323. // 表示可以撤销
  4324. resultEntity.Result = 1;
  4325. return resultEntity;
  4326. }
  4327. if (orgTime > currentTime.AddDays(-days))
  4328. {
  4329. // 表示可以撤销
  4330. resultEntity.Result = 1;
  4331. }
  4332. else
  4333. {
  4334. resultEntity.Result = -1;
  4335. // 提示不同错误消息
  4336. if (settingCode.Equals(Constant.SettingType.S_PM_002.ToString()))
  4337. {
  4338. //交坯限制天数
  4339. resultEntity.Message = string.Format(Messages.MSG_S_PM_002, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  4340. }
  4341. else if (settingCode.Equals(Constant.SettingType.S_PM_003.ToString()))
  4342. {
  4343. //交坯撤销限制天数
  4344. resultEntity.Message = string.Format(Messages.MSG_S_PM_003, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  4345. }
  4346. else if (settingCode.Equals(Constant.SettingType.S_PM_004.ToString()))
  4347. {
  4348. //计件撤销限制天数
  4349. resultEntity.Message = string.Format(Messages.MSG_S_PM_004, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  4350. }
  4351. else if (settingCode.Equals(Constant.SettingType.S_PM_005.ToString()))
  4352. {
  4353. //成品撤销限制天数
  4354. resultEntity.Message = string.Format(Messages.MSG_S_PM_005, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  4355. }
  4356. else if (settingCode.Equals(Constant.SettingType.S_PM_006.ToString()))
  4357. {
  4358. //损坯撤销限制天数
  4359. resultEntity.Message = string.Format(Messages.MSG_S_PM_006, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  4360. }
  4361. else if (settingCode.Equals(Constant.SettingType.S_PM_007.ToString()))
  4362. {
  4363. //半检登记改判限制天数
  4364. resultEntity.Message = string.Format(Messages.MSG_S_PM_007, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  4365. }
  4366. else if (settingCode.Equals(Constant.SettingType.S_PM_008.ToString()))
  4367. {
  4368. //半检复检撤销限制天数
  4369. resultEntity.Message = string.Format(Messages.MSG_S_PM_008, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  4370. }
  4371. else if (settingCode.Equals(Constant.SettingType.S_PM_009.ToString()))
  4372. {
  4373. //成检登记改判限制天数
  4374. resultEntity.Message = string.Format(Messages.MSG_S_PM_009, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  4375. }
  4376. }
  4377. return resultEntity;
  4378. }
  4379. catch (Exception ex)
  4380. {
  4381. throw ex;
  4382. }
  4383. finally
  4384. {
  4385. if (oracleConn.ConnState == ConnectionState.Open)
  4386. {
  4387. oracleConn.Close();
  4388. }
  4389. }
  4390. }
  4391. #endregion
  4392. #region 生产订单 wangx 2017-2-7
  4393. /// <summary>
  4394. /// 获取生产订单一览列表
  4395. /// </summary>
  4396. /// <param name="order"></param>
  4397. /// <param name="sUserInfo"></param>
  4398. /// <returns></returns>
  4399. public static DataSet GetOrderList(OrderEntity order, SUserInfo sUserInfo)
  4400. {
  4401. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4402. try
  4403. {
  4404. con.Open();
  4405. List<OracleParameter> parameters = new List<OracleParameter>();
  4406. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  4407. string sqlString = @"select
  4408. OrderID,
  4409. OrderNo,
  4410. OrderDate,
  4411. VBELN,
  4412. POSNR,
  4413. SUMMARY,
  4414. Remarks,
  4415. ValueFlag,
  4416. displayno,
  4417. CreateTime,
  4418. UpdateTime
  4419. from TP_PM_Order t
  4420. where AccountID=:AccountID
  4421. ";
  4422. // 订单ID 编辑信息用
  4423. if (order.OrderID > 0)
  4424. {
  4425. sqlString = sqlString + " AND OrderID=:OrderID";
  4426. parameters.Add(new OracleParameter(":OrderID", OracleDbType.Int32, order.OrderID, ParameterDirection.Input));
  4427. }
  4428. // 订单号
  4429. if (!string.IsNullOrEmpty(order.OrderNo))
  4430. {
  4431. sqlString = sqlString + " AND instr(OrderNo,:OrderNo)>0";
  4432. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, order.OrderNo, ParameterDirection.Input));
  4433. }
  4434. // 订单时间起始
  4435. if (order.OrderFromDate.HasValue)
  4436. {
  4437. sqlString = sqlString + " AND OrderDate >= :OrderFromDate ";
  4438. parameters.Add(new OracleParameter(":OrderFromDate", OracleDbType.Date, order.OrderFromDate.Value, ParameterDirection.Input));
  4439. }
  4440. // 订单时间结束
  4441. if (order.OrderToDate.HasValue)
  4442. {
  4443. sqlString = sqlString + " AND OrderDate <= :OrderToDate ";
  4444. parameters.Add(new OracleParameter(":OrderToDate", OracleDbType.Date, order.OrderToDate.Value, ParameterDirection.Input));
  4445. }
  4446. // 有效标识
  4447. if (!string.IsNullOrEmpty(order.ValueFlagList))
  4448. {
  4449. sqlString = sqlString + " AND instr(','||:ValueFlag||',',','||ValueFlag||',')>0 ";
  4450. parameters.Add(new OracleParameter(":ValueFlag", OracleDbType.NVarchar2, order.ValueFlagList, ParameterDirection.Input));
  4451. }
  4452. // 备注
  4453. if (!string.IsNullOrEmpty(order.Remarks))
  4454. {
  4455. sqlString = sqlString + " AND instr(Remarks,:Remarks)>0";
  4456. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, order.Remarks, ParameterDirection.Input));
  4457. }
  4458. sqlString = sqlString + " order by t.displayno, t.orderid";
  4459. DataSet ds = con.GetSqlResultToDs(sqlString, parameters.ToArray());
  4460. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4461. {
  4462. ServiceResultEntity sre = GetOrderDetail(order.OrderID);
  4463. DataTable dtOrderDetail = sre.Data.Tables[0];
  4464. dtOrderDetail.DataSet?.Tables.Clear();
  4465. dtOrderDetail.TableName = "OrderDetail";
  4466. ds.Tables.Add(dtOrderDetail);
  4467. return ds;
  4468. }
  4469. return null;
  4470. }
  4471. catch (Exception ex)
  4472. {
  4473. throw ex;
  4474. }
  4475. finally
  4476. {
  4477. if (con.ConnState == ConnectionState.Open)
  4478. {
  4479. con.Close();
  4480. }
  4481. }
  4482. }
  4483. /// <summary>
  4484. /// 获取生产订单明细表
  4485. /// </summary>
  4486. /// <param name="orderID"></param>
  4487. /// <param name="sUserInfo"></param>
  4488. /// <returns></returns>
  4489. public static ServiceResultEntity GetOrderDetail(int orderID)
  4490. {
  4491. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4492. ServiceResultEntity sre = new ServiceResultEntity();
  4493. try
  4494. {
  4495. string sqlString = @"
  4496. SELECT OD.MATERIALCODE,
  4497. OD.MAKTX,
  4498. OD.KWMENG,
  4499. G.GOODSCODE,
  4500. L.LOGONAME
  4501. FROM TP_PM_ORDERDETAIL OD
  4502. LEFT JOIN (SELECT PB.MATNR,
  4503. PB.GOODSID,
  4504. PB.LOGOID
  4505. FROM TP_MST_PACKINGBOM PB
  4506. WHERE PB.VALUEFLAG = '1'
  4507. GROUP BY PB.MATNR,
  4508. PB.GOODSID,
  4509. PB.LOGOID) T
  4510. ON T.MATNR = OD.MATERIALCODE
  4511. LEFT JOIN TP_MST_GOODS G
  4512. ON G.GOODSID = T.GOODSID
  4513. LEFT JOIN TP_MST_LOGO L
  4514. ON L.LOGOID = T.LOGOID
  4515. WHERE OD.VALUEFLAG = '1'
  4516. AND OD.ORDERID = :ORDERID ";
  4517. OracleParameter[] paras = new OracleParameter[]
  4518. {
  4519. new OracleParameter(":ORDERID", orderID),
  4520. };
  4521. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  4522. return sre;
  4523. }
  4524. catch (Exception ex)
  4525. {
  4526. throw ex;
  4527. }
  4528. finally
  4529. {
  4530. if (con.ConnState == ConnectionState.Open)
  4531. {
  4532. con.Close();
  4533. }
  4534. }
  4535. }
  4536. #endregion
  4537. #region 产成品交接 2017-2-8
  4538. /// <summary>
  4539. /// 获取产成品交接
  4540. /// </summary>
  4541. /// <param name="entity"></param>
  4542. /// <param name="sUserInfo"></param>
  4543. /// <returns></returns>
  4544. public static DataSet GetFinishedHandover(SearchFinishedProductEntity entity, SUserInfo sUserInfo)
  4545. {
  4546. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4547. try
  4548. {
  4549. con.Open();
  4550. List<OracleParameter> parameters = new List<OracleParameter>();
  4551. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  4552. string sqlString = @"select
  4553. O.OrderNo,
  4554. F.FHTime,
  4555. F.FHUserCode,
  4556. F.BarCode,
  4557. F.GoodsCode,
  4558. L.LogoName,
  4559. F. GroutingUserCode,
  4560. F.GroutingMouldCode,
  4561. F.GroutingDate,
  4562. G.DeliverTime,
  4563. --(Goods.MaterialCode || L.tagcode || G.onlycode) as FinishedBarCode
  4564. nvl(g.outlabelcode, Goods.MaterialCode || (select a.workcode from tp_mst_account a where a.accountid = g.accountid) || L.tagcode || G.onlycode) as FinishedBarCode
  4565. from TP_PM_FinishedProduct F
  4566. left join TP_PM_Order O
  4567. on F.FHOrderID=O.OrderID
  4568. left join TP_MST_Logo L
  4569. on F.LogoID=L.LogoID
  4570. left join TP_PM_GroutingDailyDetail G
  4571. on F.GroutingDailyDetailID=G.GroutingDailyDetailID
  4572. left join TP_MST_Goods Goods
  4573. on F.GoodsID=Goods.GoodsID
  4574. left join TP_MST_GoodsType GoodsType
  4575. on Goods.GoodsTypeID=GoodsType.GoodsTypeID
  4576. where F.AccountID=:AccountID and F.FHTime is not null
  4577. ";
  4578. // 交接时间起始
  4579. if (entity.FHTimeStart.HasValue)
  4580. {
  4581. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart ";
  4582. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, entity.FHTimeStart.Value, ParameterDirection.Input));
  4583. }
  4584. // 交接时间结束
  4585. if (entity.FHTimeEnd.HasValue)
  4586. {
  4587. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd ";
  4588. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, entity.FHTimeEnd.Value.AddSeconds(59), ParameterDirection.Input));
  4589. }
  4590. // 订单号
  4591. if (!string.IsNullOrEmpty(entity.OrderNo))
  4592. {
  4593. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0";
  4594. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, entity.OrderNo, ParameterDirection.Input));
  4595. }
  4596. // 产品类别编码
  4597. if (!string.IsNullOrEmpty(entity.GoodsTypeCode))
  4598. {
  4599. sqlString = sqlString + " AND instr(GoodsType.GoodsTypeCode,:GoodsTypeCode)=1";
  4600. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, entity.GoodsTypeCode, ParameterDirection.Input));
  4601. }
  4602. // 产品型号
  4603. if (!string.IsNullOrEmpty(entity.GoodsModel))
  4604. {
  4605. //sqlString = sqlString + " AND instr(Goods.GoodsModel,:GoodsModel)>0";
  4606. sqlString = sqlString + " AND instr(Goods.GoodsCode,:GoodsCode)>0";
  4607. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, entity.GoodsModel, ParameterDirection.Input));
  4608. }
  4609. // 产品商标ID集
  4610. if (!string.IsNullOrEmpty(entity.LogoIDS))
  4611. {
  4612. sqlString += " AND instr(','||:LogoIDS||',', ',' || L.logoid || ',') > 0";
  4613. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, entity.LogoIDS, ParameterDirection.Input));
  4614. }
  4615. // 交接工号
  4616. if (!string.IsNullOrEmpty(entity.FHUserCode))
  4617. {
  4618. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0";
  4619. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, entity.FHUserCode, ParameterDirection.Input));
  4620. }
  4621. sqlString = sqlString + " order by F.FHTime desc";
  4622. DataSet ds = con.GetSqlResultToDs(sqlString, parameters.ToArray());
  4623. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4624. {
  4625. return ds;
  4626. }
  4627. return null;
  4628. }
  4629. catch (Exception ex)
  4630. {
  4631. throw ex;
  4632. }
  4633. finally
  4634. {
  4635. if (con.ConnState == ConnectionState.Open)
  4636. {
  4637. con.Close();
  4638. }
  4639. }
  4640. }
  4641. #endregion
  4642. #region 产成品交接验证
  4643. /// <summary>
  4644. /// 产成品交接条码验证
  4645. /// </summary>
  4646. /// <param name="barcode"></param>
  4647. /// <param name="sUserInfo"></param>
  4648. /// <param name="handoverFlag">0:未交接,1:已交接,2:不限</param>
  4649. /// <returns></returns>
  4650. public static ServiceResultEntity FinishedHandoverBarcode(string barcode, SUserInfo sUserInfo, int handoverFlag = 0)
  4651. {
  4652. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4653. try
  4654. {
  4655. oracleConn.Open();
  4656. ServiceResultEntity resultEntity = new ServiceResultEntity();
  4657. // 如果是板码
  4658. string banMa = string.Empty;
  4659. if (barcode.Length == 8)
  4660. {
  4661. if (handoverFlag == 1)
  4662. {
  4663. resultEntity.Result = -1;
  4664. resultEntity.Message = "撤销交接不允许扫板码。";
  4665. return resultEntity;
  4666. }
  4667. banMa = barcode;
  4668. string sqlBanMa = @"
  4669. SELECT BARCODE,
  4670. FINISHEDLOADBATCHNO
  4671. FROM TP_PM_FINISHEDPRODUCT
  4672. WHERE FHTIME IS NULL AND LCFHTIME IS NULL
  4673. AND BANMA = :barcode ";
  4674. OracleParameter[] parasBanMa = new OracleParameter[]
  4675. {
  4676. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  4677. };
  4678. DataTable dtBanMa = oracleConn.GetSqlResultToDt(sqlBanMa, parasBanMa);
  4679. if (dtBanMa.Rows.Count == 0)
  4680. {
  4681. resultEntity.Result = -1;
  4682. resultEntity.Message = "当前载具上无可交接的产品。";
  4683. return resultEntity;
  4684. }
  4685. DataTable dtFinishedLoadBatchNo = dtBanMa.DefaultView.ToTable(true, new string[] { "FINISHEDLOADBATCHNO" });
  4686. if (dtFinishedLoadBatchNo.Rows.Count > 1)
  4687. {
  4688. resultEntity.Result = -1;
  4689. resultEntity.Message = "当前载具存在超过两版以上的产品。";
  4690. return resultEntity;
  4691. }
  4692. barcode = dtBanMa.Rows[0]["BARCODE"].ToString();
  4693. }
  4694. string gbarcode = null;
  4695. string FINISHEDLOADBATCHNO = null;
  4696. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  4697. OracleParameter[] paras1 = new OracleParameter[]{
  4698. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  4699. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  4700. };
  4701. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1);
  4702. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4703. {
  4704. gbarcode = ds.Tables[0].Rows[0][0].ToString();
  4705. }
  4706. // 1.判断产品是否在产成品表中
  4707. string sql = @"select
  4708. f.FHUserID,
  4709. f.FHUserCode,
  4710. f.LCFHUSERCODE,
  4711. f.GoodsID,
  4712. f.GoodsCode,
  4713. f.GoodsName,
  4714. f.BarCode, f.FINISHEDLOADBATCHNO
  4715. from TP_PM_FinishedProduct f
  4716. where f.BarCode=:BarCode";
  4717. // where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  4718. string currentBarcode = string.Empty;
  4719. OracleParameter[] paras = new OracleParameter[]{
  4720. new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
  4721. //new OracleParameter(":Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  4722. };
  4723. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4724. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  4725. {
  4726. FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString();
  4727. // 在产成品表中
  4728. #region 是否交接过
  4729. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  4730. string lcfhUserCode = dsResult.Tables[0].Rows[0]["LCFHUSERCODE"].ToString();
  4731. if ( !string.IsNullOrEmpty(lcfhUserCode))
  4732. {
  4733. resultEntity.Result = -1; //已交接,不能再次进行交接
  4734. resultEntity.Message = "此产品【" + barcode + "】已完成裸瓷交接,不能进行该操作";
  4735. return resultEntity;
  4736. }
  4737. if (handoverFlag == 0 && !string.IsNullOrEmpty(fhUserCode))
  4738. {
  4739. resultEntity.Result = -1; //已交接,不能再次进行交接
  4740. resultEntity.Message = "此产品【" + barcode + "】已交接,不能进行该操作";
  4741. return resultEntity;
  4742. }
  4743. if (handoverFlag == 1 && string.IsNullOrEmpty(fhUserCode))
  4744. {
  4745. resultEntity.Result = -1; //已交接,不能再次进行交接
  4746. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  4747. return resultEntity;
  4748. }
  4749. #endregion
  4750. #region 是否是裸瓷交接
  4751. //查询最近一次是不是裸瓷保存
  4752. sql = "SELECT procedureid\n" +
  4753. " FROM (SELECT procedureid\n" +
  4754. " FROM tp_pm_productiondata\n" +
  4755. " WHERE barcode = :BarCode\n" +
  4756. " ORDER BY productiondataid DESC)\n" +
  4757. " WHERE rownum = 1";
  4758. paras = new OracleParameter[]{
  4759. new OracleParameter(":Barcode",OracleDbType.Varchar2, gbarcode,ParameterDirection.Input),
  4760. };
  4761. DataTable productionDataIDdt = oracleConn.GetSqlResultToDt(sql, paras);
  4762. if (productionDataIDdt != null && productionDataIDdt.Rows.Count > 0 && productionDataIDdt.Rows[0]["procedureid"].ToString() == "159" )
  4763. {
  4764. resultEntity.Result = -1; //已交接,不能再次进行交接
  4765. resultEntity.Message = "此产品【" + barcode + "】属于裸瓷产品,不能进行该操作,请使用裸瓷交接";
  4766. return resultEntity;
  4767. }
  4768. #endregion
  4769. }
  4770. else
  4771. {
  4772. if (handoverFlag == 0)
  4773. {
  4774. // 不在产成品表中
  4775. #region 1 查询是否报损待审批与漏扫
  4776. sql = @"select I.InScrapFlag,P.procedureName,I.GoodsCode from TP_PM_InProduction I
  4777. left join tp_pc_procedure P
  4778. on I.flowprocedureid=P.procedureid
  4779. where I.BarCode=:BarCode";
  4780. //where I.BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  4781. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4782. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  4783. {
  4784. // 存在在产表中
  4785. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  4786. {
  4787. resultEntity.Result = -3; //产品已经待审批报损
  4788. resultEntity.Message = "此产品【" + barcode + "】己待审报废,不能进行该操作";
  4789. return resultEntity;
  4790. }
  4791. int missbarcode = AddBarCodeMissingFinishedHandover(oracleConn, gbarcode, sUserInfo);
  4792. if (missbarcode > 0)
  4793. {
  4794. // 第一次记录漏扫
  4795. resultEntity.Result = -4;
  4796. resultEntity.OtherStatus = missbarcode;// 需要弹窗
  4797. resultEntity.Message = "此产品【" + barcode + "】当前工序为【" + dsResult.Tables[0].Rows[0]["procedureName"].ToString() + "】不是产成品,不能进行该操作";
  4798. return resultEntity;
  4799. }
  4800. else
  4801. {
  4802. resultEntity.Result = -5;
  4803. resultEntity.OtherStatus = -1;// 不需要弹窗
  4804. resultEntity.Message = "此产品【" + barcode + "】当前工序为【" + dsResult.Tables[0].Rows[0]["procedureName"].ToString() + "】不是产成品,不能进行该操作";
  4805. return resultEntity;
  4806. }
  4807. }
  4808. #endregion
  4809. }
  4810. #region 2 条码在废弃产品表中且审批通过,提示:此产品【999999】已被废弃,不能进行该操作。
  4811. //sql = @"select GoodsCode from tp_pm_inproductiontrash where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  4812. sql = @"select GoodsCode from tp_pm_inproductiontrash where BarCode=:BarCode";
  4813. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4814. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  4815. {
  4816. resultEntity.Result = -6; //产品已经报损
  4817. resultEntity.Message = "此产品【" + barcode + "】已被废弃,不能进行该操作";
  4818. return resultEntity;
  4819. }
  4820. #endregion
  4821. #region 3 未交坯
  4822. //sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid) and DeliverTime is null";
  4823. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode and DeliverTime is null";
  4824. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4825. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  4826. {
  4827. resultEntity.Result = -7; //产品未交坏
  4828. resultEntity.Message = "此产品【" + barcode + "】还未交坯,不能进行该操作";
  4829. return resultEntity;
  4830. }
  4831. else
  4832. {
  4833. resultEntity.Result = -8; //无效条码
  4834. resultEntity.Message = "此条码【" + barcode + "】为无效条码,不能进行该操作";
  4835. return resultEntity;
  4836. }
  4837. #endregion
  4838. }
  4839. #region 校验包装箱编码于物料编码是否相同
  4840. // 如果输入的是产品条码,不检查
  4841. // if (barcode.Length != 11)
  4842. // {
  4843. // string Strsql = @"SELECT MATERIALCODE FROM TP_PM_GROUTINGDAILYDETAIL WHERE OUTLABELCODE = :barcode";
  4844. // OracleParameter[] paras2 = new OracleParameter[]{
  4845. // new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  4846. // //new OracleParameter(":Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  4847. // };
  4848. // DataSet dst = oracleConn.GetSqlResultToDs(Strsql, paras2);
  4849. // if (dst == null || dst.Tables[0].Rows.Count == 0)
  4850. // {
  4851. // resultEntity.Result = -1;
  4852. // resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板";
  4853. // return resultEntity;
  4854. // }
  4855. // string barcodeSub = string.Empty;
  4856. // if (barcode.Length >= 14)
  4857. // {
  4858. // barcodeSub = barcode.Substring(0, 14);
  4859. // }
  4860. // if (dst.Tables[0].Rows[0]["MATERIALCODE"].ToString() != barcodeSub)
  4861. // {
  4862. // resultEntity.Result = -1;
  4863. // resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板";
  4864. // return resultEntity;
  4865. // }
  4866. //}
  4867. #endregion
  4868. #region 查询产品相关信息
  4869. /*
  4870. sql = @"select
  4871. gd.BarCode,
  4872. l.logoid,
  4873. l.logocode,
  4874. l.logoname,
  4875. gd.goodscode,
  4876. gd.UserID,
  4877. gd.UserCode as GroutingUserCode,
  4878. gd.GroutingMouldCode as MouldCode,
  4879. gd.GroutingDate,
  4880. gd.DeliverTime,
  4881. --Goods.GoodsCode as GoodsModel,
  4882. --nvl(Goods.MaterialCode,Goods.GoodsCode) as GoodsModel, -- 用物料编码验证产品型号是否一致
  4883. nvl(gd.MaterialCode, nvl(Goods.MaterialCode,Goods.GoodsCode)) as GoodsModel, -- 用物料编码验证产品型号是否一致
  4884. Goods.PlateLimitNum,
  4885. --(Goods.MaterialCode || l.tagcode || gd.onlycode) as FinishedBarCode ,
  4886. nvl(gd.outlabelcode, Goods.MaterialCode || (select a.workcode from tp_mst_account a where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,
  4887. o.ORDERNO
  4888. from TP_PM_GroutingDailyDetail gd
  4889. inner join tp_mst_logo l on gd.logoid=l.logoid
  4890. inner join TP_PM_FinishedProduct f on f.GROUTINGDAILYDETAILID=gd.GROUTINGDAILYDETAILID
  4891. left join tp_pm_order o on o.orderid = f.FHORDERID
  4892. inner join TP_MST_Goods Goods on gd.goodsid=Goods.goodsid";
  4893. //where gd.BarCode=:BarCode";
  4894. */
  4895. sql = "select gd.BarCode,\n" +
  4896. " l.logoid,\n" +
  4897. " l.logocode,\n" +
  4898. " l.logoname,\n" +
  4899. " gd.goodscode,\n" +
  4900. " gd.UserID,\n" +
  4901. " gd.UserCode as GroutingUserCode,\n" +
  4902. " gd.GroutingMouldCode as MouldCode,\n" +
  4903. " gd.GroutingDate,\n" +
  4904. " gd.DeliverTime,\n" +
  4905. //" --Goods.GoodsCode as GoodsModel,\n" +
  4906. //" --nvl(Goods.MaterialCode,Goods.GoodsCode) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" +
  4907. " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" +
  4908. " Goods.PlateLimitNum,\n" +
  4909. //" --(Goods.MaterialCode || l.tagcode || gd.onlycode) as FinishedBarCode ,\n" +
  4910. " nvl(gd.outlabelcode,\n" +
  4911. " Goods.MaterialCode ||\n" +
  4912. " (select a.workcode\n" +
  4913. " from tp_mst_account a\n" +
  4914. " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" +
  4915. " o.ORDERNO,\n" +
  4916. " SUBSTR( gd.OUTLABELCODE, 0, 14 ) OUTLABELCODE,\n" +
  4917. " gd.MATERIALCODE,\n" +
  4918. " gd.OUTLABELCODE as OUTLABELCODES,\n" +
  4919. " f.BanMa\n" +
  4920. " from TP_PM_GroutingDailyDetail gd\n" +
  4921. " inner join tp_mst_logo l\n" +
  4922. " on gd.logoid = l.logoid\n" +
  4923. " inner join TP_PM_FinishedProduct f\n" +
  4924. " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" +
  4925. " left join tp_pm_order o\n" +
  4926. " on o.orderid = f.FHORDERID\n" +
  4927. " inner join TP_MST_Goods Goods\n" +
  4928. " on gd.goodsid = Goods.goodsid \n";
  4929. if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO))
  4930. {
  4931. //sql += " where gd.BarCode=:BarCode";
  4932. sql += " where gd.BarCode='"+ gbarcode+"'";
  4933. }
  4934. else
  4935. {
  4936. //sql += " where gd.GROUTINGDAILYDETAILID in ( select GROUTINGDAILYDETAILID from TP_PM_FinishedProduct f where f.FINISHEDLOADBATCHNO = :BarCode)";
  4937. //sql += " where f.FINISHEDLOADBATCHNO = :BarCode ";
  4938. sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'";
  4939. paras[0].Value = FINISHEDLOADBATCHNO;
  4940. }
  4941. //where gd.BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  4942. // 不用参数比用参数效率高 ??? edit by chenxy
  4943. //dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  4944. dsResult = oracleConn.GetSqlResultToDs(sql);
  4945. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  4946. {
  4947. for(int i = 0; i< dsResult.Tables[0].Rows.Count; i++)
  4948. {
  4949. if (dsResult.Tables[0].Rows[i]["OUTLABELCODE"].ToString() != dsResult.Tables[0].Rows[i]["MATERIALCODE"].ToString())
  4950. {
  4951. resultEntity.Result = -1;
  4952. resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板。外包装箱码:" + dsResult.Tables[0].Rows[i]["OUTLABELCODES"];
  4953. return resultEntity;
  4954. }
  4955. }
  4956. //增加校验 普通项目类别组为NORM才需要卡控,251202
  4957. string mtposmarasql = "SELECT SSS.MTPOSMARA FROM TP_PC_SAPBOMDETAIL SSS WHERE SSS.MATNR = '" + dsResult.Tables[0].Rows[0]["MATERIALCODE"].ToString() + "'";
  4958. DataTable mtposmaradata = oracleConn.GetSqlResultToDt(mtposmarasql, null);
  4959. if (mtposmaradata != null && mtposmaradata.Rows.Count > 0 && mtposmaradata.Rows[0]["MTPOSMARA"].ToString() == "NORM")
  4960. {
  4961. //增加SAP接口校验产成品交接卡控数量->SAP根据物料判断STO单剩余可产出数量,小于不允许保存
  4962. //根据系统参数判断 是否开启卡控
  4963. //add by qq 20250918
  4964. #region 卡控产成品交接数量
  4965. //S_PC_002:计划卡控默认选项(产成品交接)
  4966. string sqs = "SELECT sss.settingcode, sss.settingvalue\n" +
  4967. " FROM tp_mst_systemsetting sss\n" +
  4968. " WHERE sss.accountid = " + sUserInfo.AccountID + "\n" +
  4969. " AND sss.settingcode = 'S_PC_002'";
  4970. DataTable data = oracleConn.GetSqlResultToDt(sqs, null);
  4971. if (data != null && data.Rows.Count > 0)
  4972. {
  4973. string settingvalue = data.Rows[0]["settingvalue"].ToString();
  4974. string materialCode = dsResult.Tables[0].Rows[0]["MATERIALCODE"].ToString();
  4975. string ztype = "";
  4976. string message = "";
  4977. //开启校验
  4978. if (settingvalue == "1")
  4979. {
  4980. //查询接口数量
  4981. decimal stonum = 0;
  4982. // 配置文件
  4983. string postString = "{\"IN_WERKS\":\"" + "5000" + "\",\"IN_TABLE\":{\"item\":{\"MATNR\":\"" + materialCode + "\"}}}";
  4984. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  4985. string url082 = ini.ReadIniData("SAP_NEW_INFO", "Url082");
  4986. //测试
  4987. //url082 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZMMFM082";
  4988. string result = string.Empty;
  4989. //调用接口
  4990. try
  4991. {
  4992. result = SAPDataLogic.PostData(url082, postString, "POST");
  4993. }
  4994. catch (Exception ex)
  4995. {
  4996. resultEntity.Result = -1;
  4997. resultEntity.Message = "SAP-ZMMFM082接口调用失败," + ex.Message;
  4998. return resultEntity;
  4999. }
  5000. //判断物料是否一致
  5001. if (JObject.Parse(result)["OUT_TABLE"] != null && JObject.Parse(result)["OUT_TABLE"].ToString().Length > 0)
  5002. {
  5003. ztype = JObject.Parse(result)["ZTYPE"].ToString();
  5004. message = JObject.Parse(result)["ZMSG"].ToString();
  5005. Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  5006. object OUT_TABLE;
  5007. obj.TryGetValue("OUT_TABLE", out OUT_TABLE);
  5008. obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(OUT_TABLE + "");
  5009. object item1;
  5010. obj.TryGetValue("item", out item1);
  5011. JObject jsonObject = JObject.Parse(item1.ToString());
  5012. if (ztype == "S")
  5013. {
  5014. //物料编码
  5015. string matnr = jsonObject["MATNR"].ToString();
  5016. //未清STO总数
  5017. decimal zwjsl = Convert.ToDecimal(jsonObject["ZWJSL"].ToString());
  5018. //未清SO数量
  5019. decimal zwjso = Convert.ToDecimal(jsonObject["ZWJSO"].ToString());
  5020. stonum = zwjsl + zwjso;
  5021. if (materialCode == matnr)
  5022. {
  5023. //查询本地未同步SAP数量
  5024. string sqlstr = @"SELECT SUM(OUTPUTNUM) OUTPUTNUM FROM tsap_hegii_workdata_bg WB
  5025. LEFT JOIN tsap_hegii_datalog_bg D ON WB.LOGID = D.LOGID
  5026. WHERE D.datacode = '60' And D.DATASTUTS = 'F'
  5027. AND WB.SAPCODE = '" + materialCode + "' GROUP BY WB.SAPCODE";
  5028. DataTable numdata = oracleConn.GetSqlResultToDt(sqlstr, null);
  5029. //未同步数量
  5030. decimal unscynnum = 0;
  5031. if (numdata != null && numdata.Rows.Count > 0)
  5032. {
  5033. unscynnum = Convert.ToDecimal(numdata.Rows[0]["OUTPUTNUM"]);
  5034. }
  5035. //此次交接一板数量
  5036. decimal bannum = Convert.ToDecimal(dsResult.Tables[0].Rows.Count);
  5037. decimal allnum = unscynnum + bannum;
  5038. //判断是否允许交接
  5039. if (stonum < allnum)
  5040. {
  5041. resultEntity.Result = 1;
  5042. resultEntity.Message = "该板及未同步交接产品物料【"+matnr+"】数量【"+ allnum + "】超出SAP允许出单数量【" + stonum + "】, 是否暂存?(暂存后需扫码推送SAP数据)";
  5043. resultEntity.Data = dsResult;
  5044. return resultEntity;
  5045. }
  5046. }
  5047. else
  5048. {
  5049. resultEntity.Result = -1;
  5050. resultEntity.Message = "物料不一致;SAP返回物料【"+ matnr + "】";
  5051. return resultEntity;
  5052. }
  5053. }
  5054. else
  5055. {
  5056. resultEntity.Result = -1;
  5057. resultEntity.Message = message;
  5058. return resultEntity;
  5059. }
  5060. }
  5061. }
  5062. }
  5063. #endregion
  5064. }
  5065. resultEntity.Result = 1;//成功
  5066. //resultEntity.Data = new DataSet();
  5067. //resultEntity.Data.Tables.Add(dsResult.Tables[0].Copy());
  5068. resultEntity.Data = dsResult;
  5069. }
  5070. else
  5071. {
  5072. resultEntity.Result = -2;// 条码未注浆
  5073. resultEntity.Message = "条码【" + barcode + "】未注浆";
  5074. return resultEntity;
  5075. }
  5076. #endregion
  5077. return resultEntity;
  5078. }
  5079. catch (Exception ex)
  5080. {
  5081. throw ex;
  5082. }
  5083. finally
  5084. {
  5085. if (oracleConn.ConnState == ConnectionState.Open)
  5086. {
  5087. oracleConn.Close();
  5088. }
  5089. }
  5090. }
  5091. /// <summary>
  5092. /// 产成品交接条码验证(二次)
  5093. /// </summary>
  5094. /// <param name="barcode"></param>
  5095. /// <param name="sUserInfo"></param>
  5096. /// <param name="handoverFlag">0:未交接,1:已交接,2:不限</param>
  5097. /// <returns></returns>
  5098. public static ServiceResultEntity FinishedHandoverBarcodeAgain(string barcode, SUserInfo sUserInfo)
  5099. {
  5100. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5101. try
  5102. {
  5103. oracleConn.Open();
  5104. ServiceResultEntity resultEntity = new ServiceResultEntity();
  5105. // 如果是板码
  5106. string banMa = string.Empty;
  5107. if (barcode.Length == 8)
  5108. {
  5109. banMa = barcode;
  5110. string sqlBanMa = @"
  5111. SELECT BARCODE,
  5112. FINISHEDLOADBATCHNO
  5113. FROM TP_PM_FINISHEDPRODUCT
  5114. WHERE FHTIME IS NOT NULL
  5115. AND TemporarilyFlag = 1
  5116. AND BANMA = :barcode ";
  5117. OracleParameter[] parasBanMa = new OracleParameter[]
  5118. {
  5119. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  5120. };
  5121. DataTable dtBanMa = oracleConn.GetSqlResultToDt(sqlBanMa, parasBanMa);
  5122. if (dtBanMa.Rows.Count == 0)
  5123. {
  5124. resultEntity.Result = -1;
  5125. resultEntity.Message = "当前载具上无暂存可交接的产品。";
  5126. return resultEntity;
  5127. }
  5128. DataTable dtFinishedLoadBatchNo = dtBanMa.DefaultView.ToTable(true, new string[] { "FINISHEDLOADBATCHNO" });
  5129. if (dtFinishedLoadBatchNo.Rows.Count > 1)
  5130. {
  5131. resultEntity.Result = -1;
  5132. resultEntity.Message = "当前载具存在超过两版以上的暂存产品。";
  5133. return resultEntity;
  5134. }
  5135. barcode = dtBanMa.Rows[0]["BARCODE"].ToString();
  5136. }
  5137. string gbarcode = null;
  5138. string FINISHEDLOADBATCHNO = null;
  5139. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  5140. OracleParameter[] paras1 = new OracleParameter[]{
  5141. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5142. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  5143. };
  5144. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1);
  5145. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5146. {
  5147. gbarcode = ds.Tables[0].Rows[0][0].ToString();
  5148. }
  5149. // 1.判断产品是否在产成品表中
  5150. string sql = @"select
  5151. f.FHUserID,
  5152. f.FHUserCode,
  5153. f.LCFHUSERCODE,
  5154. f.GoodsID,
  5155. f.GoodsCode,
  5156. f.GoodsName,
  5157. f.BarCode,
  5158. f.FINISHEDLOADBATCHNO,
  5159. f.TEMPORARILYFLAG
  5160. from TP_PM_FinishedProduct f
  5161. where f.BarCode=:BarCode";
  5162. string currentBarcode = string.Empty;
  5163. OracleParameter[] paras = new OracleParameter[]{
  5164. new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
  5165. };
  5166. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  5167. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5168. {
  5169. FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString();
  5170. // 在产成品表中
  5171. #region 是否交接过
  5172. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  5173. string temporarilyFlag = dsResult.Tables[0].Rows[0]["TEMPORARILYFLAG"].ToString();
  5174. if (string.IsNullOrEmpty(fhUserCode))
  5175. {
  5176. resultEntity.Result = -1; //已交接,不能再次进行交接
  5177. resultEntity.Message = "此产品【" + barcode + "】非暂存产品,不能进行该操作";
  5178. return resultEntity;
  5179. }
  5180. if (temporarilyFlag == "0")
  5181. {
  5182. resultEntity.Result = -1; //已交接,不能再次进行交接
  5183. resultEntity.Message = "此产品【" + barcode + "】非暂存产品,不能进行该操作";
  5184. return resultEntity;
  5185. }
  5186. #endregion
  5187. }
  5188. else
  5189. {
  5190. resultEntity.Result = -8; //无效条码
  5191. resultEntity.Message = "此条码【" + barcode + "】非暂存产品,不能进行该操作";
  5192. return resultEntity;
  5193. }
  5194. #region 查询产品相关信息
  5195. sql = "select gd.BarCode,\n" +
  5196. " l.logoid,\n" +
  5197. " l.logocode,\n" +
  5198. " l.logoname,\n" +
  5199. " gd.goodscode,\n" +
  5200. " gd.UserID,\n" +
  5201. " gd.UserCode as GroutingUserCode,\n" +
  5202. " gd.GroutingMouldCode as MouldCode,\n" +
  5203. " gd.GroutingDate,\n" +
  5204. " gd.DeliverTime,\n" +
  5205. " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" +
  5206. " Goods.PlateLimitNum,\n" +
  5207. " nvl(gd.outlabelcode,\n" +
  5208. " Goods.MaterialCode ||\n" +
  5209. " (select a.workcode\n" +
  5210. " from tp_mst_account a\n" +
  5211. " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" +
  5212. " o.ORDERNO,\n" +
  5213. " SUBSTR( gd.OUTLABELCODE, 0, 14 ) OUTLABELCODE,\n" +
  5214. " gd.MATERIALCODE,\n" +
  5215. " gd.OUTLABELCODE as OUTLABELCODES,\n" +
  5216. " f.BanMa\n" +
  5217. " from TP_PM_GroutingDailyDetail gd\n" +
  5218. " inner join tp_mst_logo l\n" +
  5219. " on gd.logoid = l.logoid\n" +
  5220. " inner join TP_PM_FinishedProduct f\n" +
  5221. " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" +
  5222. " left join tp_pm_order o\n" +
  5223. " on o.orderid = f.FHORDERID\n" +
  5224. " inner join TP_MST_Goods Goods\n" +
  5225. " on gd.goodsid = Goods.goodsid \n";
  5226. if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO))
  5227. {
  5228. sql += " where gd.BarCode='" + gbarcode + "'";
  5229. }
  5230. else
  5231. {
  5232. sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'";
  5233. paras[0].Value = FINISHEDLOADBATCHNO;
  5234. }
  5235. dsResult = oracleConn.GetSqlResultToDs(sql);
  5236. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5237. {
  5238. for (int i = 0; i < dsResult.Tables[0].Rows.Count; i++)
  5239. {
  5240. if (dsResult.Tables[0].Rows[i]["OUTLABELCODE"].ToString() != dsResult.Tables[0].Rows[i]["MATERIALCODE"].ToString())
  5241. {
  5242. resultEntity.Result = -1;
  5243. resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板。外包装箱码:" + dsResult.Tables[0].Rows[i]["OUTLABELCODES"];
  5244. return resultEntity;
  5245. }
  5246. }
  5247. //增加校验 普通项目类别组为NORM才需要卡控,251202
  5248. string mtposmarasql = "SELECT SSS.MTPOSMARA FROM TP_PC_SAPBOMDETAIL SSS WHERE SSS.MATNR = '" + dsResult.Tables[0].Rows[0]["MATERIALCODE"].ToString() + "'";
  5249. DataTable mtposmaradata = oracleConn.GetSqlResultToDt(mtposmarasql, null);
  5250. if (mtposmaradata != null && mtposmaradata.Rows.Count > 0 && mtposmaradata.Rows[0]["MTPOSMARA"].ToString() == "NORM")
  5251. {
  5252. //增加SAP接口校验产成品交接卡控数量->SAP根据物料判断STO单剩余可产出数量,小于不允许保存
  5253. //根据系统参数判断 是否开启卡控
  5254. //add by qq 20250918
  5255. #region 卡控产成品交接数量
  5256. //S_PC_002:计划卡控默认选项(产成品交接)
  5257. string sqs = "SELECT sss.settingcode, sss.settingvalue\n" +
  5258. " FROM tp_mst_systemsetting sss\n" +
  5259. " WHERE sss.accountid = " + sUserInfo.AccountID + "\n" +
  5260. " AND sss.settingcode = 'S_PC_002'";
  5261. DataTable data = oracleConn.GetSqlResultToDt(sqs, null);
  5262. if (data != null && data.Rows.Count > 0)
  5263. {
  5264. string settingvalue = data.Rows[0]["settingvalue"].ToString();
  5265. string materialCode = dsResult.Tables[0].Rows[0]["MATERIALCODE"].ToString();
  5266. string ztype = "";
  5267. string message = "";
  5268. //开启校验
  5269. if (settingvalue == "1")
  5270. {
  5271. //查询接口数量
  5272. decimal stonum = 0;
  5273. // 配置文件
  5274. string postString = "{\"IN_WERKS\":\"" + "5000" + "\",\"IN_TABLE\":{\"item\":{\"MATNR\":\"" + materialCode + "\"}}}";
  5275. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  5276. string url082 = ini.ReadIniData("SAP_NEW_INFO", "Url082");
  5277. //测试
  5278. //url082 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZMMFM082";
  5279. string result = string.Empty;
  5280. //调用接口
  5281. try
  5282. {
  5283. result = SAPDataLogic.PostData(url082, postString, "POST");
  5284. }
  5285. catch (Exception ex)
  5286. {
  5287. resultEntity.Result = -1;
  5288. resultEntity.Message = "SAP-ZMMFM082接口调用失败," + ex.Message;
  5289. return resultEntity;
  5290. }
  5291. //判断物料是否一致
  5292. if (JObject.Parse(result)["OUT_TABLE"] != null && JObject.Parse(result)["OUT_TABLE"].ToString().Length > 0)
  5293. {
  5294. ztype = JObject.Parse(result)["ZTYPE"].ToString();
  5295. message = JObject.Parse(result)["ZMSG"].ToString();
  5296. Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  5297. object OUT_TABLE;
  5298. obj.TryGetValue("OUT_TABLE", out OUT_TABLE);
  5299. obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(OUT_TABLE + "");
  5300. object item1;
  5301. obj.TryGetValue("item", out item1);
  5302. JObject jsonObject = JObject.Parse(item1.ToString());
  5303. if (ztype == "S")
  5304. {
  5305. //物料编码
  5306. string matnr = jsonObject["MATNR"].ToString();
  5307. //未清STO总数
  5308. decimal zwjsl = Convert.ToDecimal(jsonObject["ZWJSL"].ToString());
  5309. //未清SO数量
  5310. decimal zwjso = Convert.ToDecimal(jsonObject["ZWJSO"].ToString());
  5311. stonum = zwjsl + zwjso;
  5312. if (materialCode == matnr)
  5313. {
  5314. //查询本地未同步SAP数量
  5315. string sqlstr = @"SELECT SUM(OUTPUTNUM) OUTPUTNUM FROM tsap_hegii_workdata_bg WB
  5316. LEFT JOIN tsap_hegii_datalog_bg D ON WB.LOGID = D.LOGID
  5317. WHERE D.datacode = '60' And D.DATASTUTS = 'F'
  5318. AND WB.SAPCODE = '" + materialCode + "' GROUP BY WB.SAPCODE";
  5319. DataTable numdata = oracleConn.GetSqlResultToDt(sqlstr, null);
  5320. //未同步数量
  5321. decimal unscynnum = 0;
  5322. if (numdata != null && numdata.Rows.Count > 0)
  5323. {
  5324. unscynnum = Convert.ToDecimal(numdata.Rows[0]["OUTPUTNUM"]);
  5325. }
  5326. //此次交接一板数量
  5327. decimal bannum = Convert.ToDecimal(dsResult.Tables[0].Rows.Count);
  5328. decimal allnum = unscynnum + bannum;
  5329. //判断是否允许交接
  5330. if (stonum < allnum)
  5331. {
  5332. resultEntity.Result = 1;
  5333. resultEntity.Message = "该板及未同步交接产品物料【" + matnr + "】数量【" + allnum + "】超出SAP允许出单数量【" + stonum + "】, 不允许二次交接;";
  5334. return resultEntity;
  5335. }
  5336. }
  5337. else
  5338. {
  5339. resultEntity.Result = -1;
  5340. resultEntity.Message = "物料不一致;SAP返回物料【" + matnr + "】";
  5341. return resultEntity;
  5342. }
  5343. }
  5344. else
  5345. {
  5346. resultEntity.Result = -1;
  5347. resultEntity.Message = message;
  5348. return resultEntity;
  5349. }
  5350. }
  5351. }
  5352. }
  5353. #endregion
  5354. }
  5355. resultEntity.Result = 1;//成功
  5356. resultEntity.Data = dsResult;
  5357. }
  5358. else
  5359. {
  5360. resultEntity.Result = -2;// 条码未注浆
  5361. resultEntity.Message = "条码【" + barcode + "】未注浆";
  5362. return resultEntity;
  5363. }
  5364. #endregion
  5365. return resultEntity;
  5366. }
  5367. catch (Exception ex)
  5368. {
  5369. throw ex;
  5370. }
  5371. finally
  5372. {
  5373. if (oracleConn.ConnState == ConnectionState.Open)
  5374. {
  5375. oracleConn.Close();
  5376. }
  5377. }
  5378. }
  5379. /// <summary>
  5380. /// 整版撤销产成品交接条码验证
  5381. /// </summary>
  5382. /// <param name="barcode"></param>
  5383. /// <param name="sUserInfo"></param>
  5384. /// <returns></returns>
  5385. public static ServiceResultEntity BackFinishedHandoverCheck(string barcode, SUserInfo sUserInfo)
  5386. {
  5387. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5388. try
  5389. {
  5390. oracleConn.Open();
  5391. ServiceResultEntity resultEntity = new ServiceResultEntity();
  5392. if (barcode.Length == 8)
  5393. {
  5394. resultEntity.Result = -1;
  5395. resultEntity.Message = "撤销交接不允许扫板码。";
  5396. return resultEntity;
  5397. }
  5398. string gbarcode = null;
  5399. string FINISHEDLOADBATCHNO = null;
  5400. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  5401. OracleParameter[] paras1 = new OracleParameter[]{
  5402. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5403. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  5404. };
  5405. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1);
  5406. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5407. {
  5408. gbarcode = ds.Tables[0].Rows[0][0].ToString();
  5409. }
  5410. // 1.判断产品是否在产成品表中
  5411. string sql = @"select
  5412. FHUserID,
  5413. FHUserCode,
  5414. GoodsID,
  5415. GoodsCode,
  5416. GoodsName, FINISHEDLOADBATCHNO
  5417. from TP_PM_FinishedProduct
  5418. where BarCode=:BarCode";
  5419. //where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  5420. OracleParameter[] paras = new OracleParameter[]{
  5421. new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
  5422. //new OracleParameter(":Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  5423. };
  5424. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  5425. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5426. {
  5427. FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString();
  5428. // 在产成品表中
  5429. #region 是否交接过
  5430. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  5431. if (string.IsNullOrEmpty(fhUserCode))
  5432. {
  5433. resultEntity.Result = -1; //未交接,不能撤销
  5434. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  5435. return resultEntity;
  5436. }
  5437. #endregion
  5438. }
  5439. else
  5440. {
  5441. resultEntity.Result = -2; //不能产成品,不能撤销
  5442. //sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  5443. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  5444. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  5445. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5446. {
  5447. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  5448. }
  5449. else
  5450. {
  5451. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  5452. }
  5453. return resultEntity;
  5454. }
  5455. #region 查询产品相关信息
  5456. sql = "select gd.BarCode,\n" +
  5457. " l.logoid,\n" +
  5458. " l.logocode,\n" +
  5459. " l.logoname,\n" +
  5460. " gd.goodscode,\n" +
  5461. " gd.UserID,\n" +
  5462. " gd.UserCode as GroutingUserCode,\n" +
  5463. " gd.GroutingMouldCode as MouldCode,\n" +
  5464. " gd.GroutingDate,\n" +
  5465. " gd.DeliverTime,\n" +
  5466. //" --Goods.GoodsCode as GoodsModel,\n" +
  5467. //" --nvl(Goods.MaterialCode,Goods.GoodsCode) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" +
  5468. " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" +
  5469. " Goods.PlateLimitNum,\n" +
  5470. //" --(Goods.MaterialCode || l.tagcode || gd.onlycode) as FinishedBarCode ,\n" +
  5471. " nvl(gd.outlabelcode,\n" +
  5472. " Goods.MaterialCode ||\n" +
  5473. " (select a.workcode\n" +
  5474. " from tp_mst_account a\n" +
  5475. " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" +
  5476. " o.ORDERNO,\n" +
  5477. " f.BanMa,\n" +
  5478. " f.TemporarilyFlag\n" +
  5479. " from TP_PM_GroutingDailyDetail gd\n" +
  5480. " inner join tp_mst_logo l\n" +
  5481. " on gd.logoid = l.logoid\n" +
  5482. " inner join TP_PM_FinishedProduct f\n" +
  5483. " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" +
  5484. " left join tp_pm_order o\n" +
  5485. " on o.orderid = f.FHORDERID\n" +
  5486. " inner join TP_MST_Goods Goods\n" +
  5487. " on gd.goodsid = Goods.goodsid \n";
  5488. if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO))
  5489. {
  5490. //sql += " where gd.BarCode=:BarCode";
  5491. sql += " where gd.BarCode='" + gbarcode + "'";
  5492. }
  5493. else
  5494. {
  5495. //sql += " where gd.GROUTINGDAILYDETAILID in ( select GROUTINGDAILYDETAILID from TP_PM_FinishedProduct f where f.FINISHEDLOADBATCHNO = :BarCode)";
  5496. //sql += " where f.FINISHEDLOADBATCHNO = :BarCode ";
  5497. sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'";
  5498. paras[0].Value = FINISHEDLOADBATCHNO;
  5499. }
  5500. //where gd.BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  5501. // 不用参数比用参数效率高 ??? edit by chenxy
  5502. //dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  5503. dsResult = oracleConn.GetSqlResultToDs(sql);
  5504. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5505. {
  5506. resultEntity.Result = 1;//成功
  5507. //resultEntity.Data = new DataSet();
  5508. //resultEntity.Data.Tables.Add(dsResult.Tables[0].Copy());
  5509. resultEntity.Data = dsResult;
  5510. }
  5511. else
  5512. {
  5513. resultEntity.Result = -2;// 条码未注浆
  5514. resultEntity.Message = "条码【" + barcode + "】未注浆";
  5515. return resultEntity;
  5516. }
  5517. #endregion
  5518. return resultEntity;
  5519. }
  5520. catch (Exception ex)
  5521. {
  5522. throw ex;
  5523. }
  5524. finally
  5525. {
  5526. if (oracleConn.ConnState == ConnectionState.Open)
  5527. {
  5528. oracleConn.Close();
  5529. }
  5530. }
  5531. }
  5532. #endregion
  5533. /// <summary>
  5534. /// 根据条码及工序判断是否漏扫
  5535. /// </summary>
  5536. /// <param name="barcode">产品条码</param>
  5537. /// <param name="produceid">校验工序ID</param>
  5538. /// <param name="sUserInfo">用户基本信息</param>
  5539. /// <returns>DataSet</returns>
  5540. public static int AddBarCodeMissingFinishedHandover(IDBConnection oracleTrConn, string barcode, SUserInfo sUserInfo)
  5541. {
  5542. try
  5543. {
  5544. #region 查询产成品
  5545. string sqlString = @"select TP_PM_InProduction.FlowProcedureID,NVL(TP_PM_InProduction.ReworkProcedureID,0) as ReworkProcedureID,
  5546. TP_PM_InProduction.GoodsID,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,
  5547. TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_MST_Goods.GoodsTypeID,TP_PM_InProduction.isrefire
  5548. from TP_PM_InProduction left join TP_PC_Procedure
  5549. on TP_PM_InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID
  5550. left join TP_MST_Goods on TP_PM_InProduction.GoodsID=TP_MST_Goods.GoodsID
  5551. where TP_PM_InProduction.BarCode =:barCode";
  5552. OracleParameter[] paras = new OracleParameter[]{
  5553. new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5554. };
  5555. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  5556. #endregion
  5557. int AddBarCodeMissingID = 0;//新增漏扫表的ID
  5558. if (ds != null && ds.Tables[0].Rows.Count > 0) //只有是在产的,才可以去进行漏扫
  5559. {
  5560. #region 获取此条码为在产产品
  5561. int CompleteProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["FlowProcedureID"]);//WMSYS.WM_CONCAT(to_char(pro.ProcedureName)),max(line.ProductionLineName)
  5562. string CompleteProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  5563. string CompleteProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  5564. int GoodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  5565. string GoodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  5566. string GoodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  5567. int GoodsTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsTypeID"]);
  5568. int ReworkProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ReworkProcedureID"]);//返工工序
  5569. int isrefire = Convert.ToInt32(ds.Tables[0].Rows[0]["isrefire"]);//重烧标记
  5570. #endregion
  5571. // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 begin
  5572. // 漏扫序号大的可到达工序与检验工序不在一条路径上时,要验证下一个可到达工序。
  5573. // 即与检验工序在一条路径上的漏扫序号最大可到达工序为漏扫工序。
  5574. #region 获取漏扫工序信息
  5575. if (ReworkProcedureID == 0)
  5576. {
  5577. sqlString = @" select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_ProcedureGoods
  5578. left join TP_PC_Procedure on TP_PC_ProcedureGoods.ProcedureID=TP_PC_Procedure.ProcedureID
  5579. where TP_PC_ProcedureGoods.goodsid=( select Goodsid from TP_PM_GroutingDailyDetail where BarCode=:barCode)
  5580. and TP_PC_ProcedureGoods.ProcedureID in(
  5581. select pro.ProcedureID
  5582. from TP_PC_ProcedureFlow flow
  5583. inner join TP_PC_Procedure pro
  5584. on flow.arriveprocedureid = pro.procedureid
  5585. inner join TP_PC_ProductionLine line
  5586. on pro.ProductionLineID = line.ProductionLineID
  5587. where flow.ProcedureID =:procedureID
  5588. and flow.FlowFlag = 2 and pro.valueflag = '1'
  5589. -- 非必须工序,不记漏扫
  5590. and pro.MUSTFLAG = '1'
  5591. ) " +
  5592. //" and exists ( " +
  5593. // "select 1 from " +
  5594. // "(" +
  5595. // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " +
  5596. // "( " +
  5597. // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " +
  5598. // ") " +
  5599. // //" start with procedureid=:missProcedureid" +
  5600. // " start with procedureid=TP_PC_ProcedureGoods.ProcedureID" +
  5601. // " connect by nocycle procedureid=prior arriveprocedureid" +
  5602. // ") where arriveprocedureid=:judgeProcedureid " +
  5603. // " ) " +
  5604. //" order by ProcedureID";
  5605. " order by MissPriority DESC, displayno --ProcedureCode DESC";
  5606. paras = new OracleParameter[]{
  5607. new OracleParameter(":procedureID",OracleDbType.Int32,CompleteProcedureID,ParameterDirection.Input),
  5608. new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5609. //new OracleParameter(":missProcedureid",OracleDbType.Int32,missprocedureid,ParameterDirection.Input),
  5610. //new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input),
  5611. };
  5612. }
  5613. else
  5614. {
  5615. sqlString = "select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_Procedure where ProcedureID=:procedureID";
  5616. paras = new OracleParameter[]{
  5617. new OracleParameter(":procedureID",OracleDbType.Int32,ReworkProcedureID,ParameterDirection.Input),
  5618. };
  5619. }
  5620. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  5621. if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  5622. {
  5623. return AddBarCodeMissingID;
  5624. }
  5625. int missprocedureid = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]);
  5626. string missprocedurecode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  5627. string missprocedurename = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  5628. //int missprocedureid = -1;
  5629. //string missprocedurecode = "";
  5630. //string missprocedurename = "";
  5631. #endregion
  5632. //#region 增加判断校验工序必须是在漏扫工序的后面工序
  5633. //foreach (DataRow item in ds.Tables[0].Rows)
  5634. //{
  5635. // sqlString = "select * from " +
  5636. // "(" +
  5637. // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " +
  5638. // "( " +
  5639. // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " +
  5640. // ")" +
  5641. // " start with procedureid=:missProcedureid" +
  5642. // " connect by nocycle procedureid=prior arriveprocedureid" +
  5643. // ") where arriveprocedureid=:judgeProcedureid ";
  5644. // paras = new OracleParameter[]{
  5645. // new OracleParameter(":missProcedureid",OracleDbType.Int32,Convert.ToInt32(item["ProcedureID"]),ParameterDirection.Input),
  5646. // new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input),
  5647. // };
  5648. // ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  5649. // if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  5650. // {
  5651. // continue;
  5652. // }
  5653. // missprocedureid = Convert.ToInt32(item["ProcedureID"]);
  5654. // missprocedurecode = item["ProcedureCode"].ToString();
  5655. // missprocedurename = item["ProcedureName"].ToString();
  5656. // break;
  5657. //}
  5658. //if (missprocedureid == -1)
  5659. //{
  5660. // return AddBarCodeMissingID;
  5661. //}
  5662. //#endregion
  5663. // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 end
  5664. //sqlString = "select 1 from TP_PM_ProductionDataIn where barcode=:barcode and ProcedureID=:ProcedureID and ValueFlag=1";
  5665. //paras = new OracleParameter[]{
  5666. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5667. // new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  5668. // };
  5669. //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  5670. //// if (produceid > missprocedureid)
  5671. //if (ds != null && ds.Tables[0].Rows.Count == 0) // 未走过该工序
  5672. //{
  5673. #region 插入漏扫表,如果漏扫表里有相应的条码,不允许重复插入
  5674. sqlString = @"select 1 from TP_PM_BarCodeMissing where barcode=:barcode and MissProcedureID=:MissProcedureID and ProcedureID is null";
  5675. paras = new OracleParameter[]{
  5676. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5677. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  5678. //new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  5679. };
  5680. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  5681. if (ds != null && ds.Tables[0].Rows.Count == 0) // 没有此条码的工序,即插入
  5682. {
  5683. int OrganizationID = 0;
  5684. string OrganizationName = "";
  5685. string OrganizationCode = "";
  5686. string OrganizationFullName = "";
  5687. sqlString = @"select TP_MST_Organization.OrganizationID
  5688. ,TP_MST_Organization.OrganizationName
  5689. ,TP_MST_Organization.OrganizationCode
  5690. ,TP_MST_Organization.OrganizationFullName
  5691. from TP_PC_Procedure left join TP_MST_Organization
  5692. on TP_MST_Organization.OrganizationID=TP_PC_Procedure.OrganizationID
  5693. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  5694. paras = new OracleParameter[]{
  5695. new OracleParameter(":ProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  5696. };
  5697. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  5698. OrganizationID = Convert.ToInt32(ds.Tables[0].Rows[0]["OrganizationID"]); //组织机构ID
  5699. OrganizationName = ds.Tables[0].Rows[0]["OrganizationName"].ToString(); //组织机构名称
  5700. OrganizationCode = ds.Tables[0].Rows[0]["OrganizationCode"].ToString(); //组织机构编码
  5701. OrganizationFullName = ds.Tables[0].Rows[0]["OrganizationFullName"].ToString(); //组织机构全称
  5702. // // 获取校验工序信息
  5703. // sqlString = @"select TP_PC_Procedure.ProcedureID
  5704. // ,TP_PC_Procedure.ProcedureCode
  5705. // ,TP_PC_Procedure.ProcedureName
  5706. // from TP_PC_Procedure
  5707. // where TP_PC_Procedure.ProcedureID=:ProcedureID";
  5708. // paras = new OracleParameter[]{
  5709. // new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  5710. // };
  5711. // ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  5712. string ProcedureCode = "";
  5713. string ProcedureName = "";
  5714. //if (ds != null && ds.Tables[0].Rows.Count > 0) // 没有此条码的工序,即插入
  5715. //{
  5716. // ProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  5717. // ProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  5718. //}
  5719. //漏扫表ID
  5720. string sql = "select SEQ_PM_BarCodeMissing_MissID.nextval from dual";
  5721. AddBarCodeMissingID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  5722. sqlString = @"insert into TP_PM_BarCodeMissing(MissID,
  5723. BarCode,
  5724. OrganizationID,
  5725. OrganizationName,
  5726. OrganizationCode,
  5727. OrganizationFullName,
  5728. CompleteProcedureID,
  5729. CompleteProcedureCode,
  5730. CompleteProcedureName,
  5731. ProcedureID,
  5732. ProcedureCode,
  5733. ProcedureName,
  5734. MissProcedureID,
  5735. MissProcedureCode,
  5736. MissProcedureName,
  5737. GoodsID,
  5738. GoodsCode,
  5739. GoodsName,
  5740. GoodsTypeID,
  5741. CreateUserID,
  5742. UpdateUserID,
  5743. AccountID
  5744. ) values
  5745. ( :MissID,
  5746. :BarCode,
  5747. :OrganizationID,
  5748. :OrganizationName,
  5749. :OrganizationCode,
  5750. :OrganizationFullName,
  5751. :CompleteProcedureID,
  5752. :CompleteProcedureCode,
  5753. :CompleteProcedureName,
  5754. :ProcedureID,
  5755. :ProcedureCode,
  5756. :ProcedureName,
  5757. :MissProcedureID,
  5758. :MissProcedureCode,
  5759. :MissProcedureName,
  5760. :GoodsID,
  5761. :GoodsCode,
  5762. :GoodsName,
  5763. :GoodsTypeID,
  5764. :CreateUserID,
  5765. :UpdateUserID,
  5766. :AccountID
  5767. )
  5768. ";
  5769. paras = new OracleParameter[]{
  5770. new OracleParameter(":MissID",OracleDbType.Int32, AddBarCodeMissingID,ParameterDirection.Input),
  5771. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5772. new OracleParameter(":OrganizationID",OracleDbType.Int32, OrganizationID,ParameterDirection.Input),
  5773. new OracleParameter(":OrganizationName",OracleDbType.Varchar2, OrganizationName,ParameterDirection.Input),
  5774. new OracleParameter(":OrganizationCode",OracleDbType.Varchar2, OrganizationCode,ParameterDirection.Input),
  5775. new OracleParameter(":OrganizationFullName",OracleDbType.Varchar2, OrganizationFullName,ParameterDirection.Input),
  5776. new OracleParameter(":CompleteProcedureID",OracleDbType.Int32, CompleteProcedureID,ParameterDirection.Input),
  5777. new OracleParameter(":CompleteProcedureCode",OracleDbType.Varchar2, CompleteProcedureCode,ParameterDirection.Input),
  5778. new OracleParameter(":CompleteProcedureName",OracleDbType.Varchar2, CompleteProcedureName,ParameterDirection.Input),
  5779. new OracleParameter(":ProcedureID",OracleDbType.Int32, null,ParameterDirection.Input),
  5780. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2, ProcedureCode,ParameterDirection.Input),
  5781. new OracleParameter(":ProcedureName",OracleDbType.Varchar2, ProcedureName,ParameterDirection.Input),
  5782. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  5783. new OracleParameter(":MissProcedureCode",OracleDbType.Varchar2,missprocedurecode ,ParameterDirection.Input),
  5784. new OracleParameter(":MissProcedureName",OracleDbType.Varchar2, missprocedurename,ParameterDirection.Input),
  5785. new OracleParameter(":GoodsID",OracleDbType.Int32, GoodsID,ParameterDirection.Input),
  5786. new OracleParameter(":GoodsCode",OracleDbType.Varchar2,GoodsCode ,ParameterDirection.Input),
  5787. new OracleParameter(":GoodsName",OracleDbType.Varchar2, GoodsName,ParameterDirection.Input),
  5788. new OracleParameter(":GoodsTypeID",OracleDbType.Int32, GoodsTypeID,ParameterDirection.Input),
  5789. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  5790. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  5791. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  5792. };
  5793. oracleTrConn.GetSqlResultToStr(sqlString, paras);
  5794. }
  5795. #endregion
  5796. //}
  5797. }
  5798. return AddBarCodeMissingID;
  5799. }
  5800. catch (Exception ex)
  5801. {
  5802. throw ex;
  5803. }
  5804. }
  5805. /// <summary>
  5806. /// 撤销产成品交接条码验证
  5807. /// </summary>
  5808. /// <param name="barcode"></param>
  5809. /// <param name="sUserInfo"></param>
  5810. /// <returns></returns>
  5811. public static ServiceResultEntity CancelFinishedHandoverBarcode(string barcode, SUserInfo sUserInfo)
  5812. {
  5813. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5814. try
  5815. {
  5816. oracleConn.Open();
  5817. ServiceResultEntity resultEntity = new ServiceResultEntity();
  5818. string gbarcode = null;
  5819. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  5820. OracleParameter[] paras1 = new OracleParameter[]{
  5821. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5822. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  5823. };
  5824. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1);
  5825. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5826. {
  5827. gbarcode = ds.Tables[0].Rows[0][0].ToString();
  5828. }
  5829. // 1.判断产品是否在产成品表中
  5830. string sql = @"select
  5831. FHUserID,
  5832. FHUserCode,
  5833. GoodsID,
  5834. GoodsCode,
  5835. GoodsName
  5836. from TP_PM_FinishedProduct
  5837. where BarCode=:BarCode";
  5838. //where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  5839. OracleParameter[] paras = new OracleParameter[]{
  5840. new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
  5841. //new OracleParameter(":Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  5842. };
  5843. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  5844. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5845. {
  5846. // 在产成品表中
  5847. #region 是否交接过
  5848. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  5849. if (string.IsNullOrEmpty(fhUserCode))
  5850. {
  5851. resultEntity.Result = -1; //未交接,不能撤销
  5852. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  5853. return resultEntity;
  5854. }
  5855. #endregion
  5856. }
  5857. else
  5858. {
  5859. resultEntity.Result = -2; //不能产成品,不能撤销
  5860. //sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  5861. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  5862. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  5863. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5864. {
  5865. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  5866. }
  5867. else
  5868. {
  5869. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  5870. }
  5871. return resultEntity;
  5872. }
  5873. #region 查询产品相关信息
  5874. sql = @"select
  5875. O.OrderNo,
  5876. F.FHOrderID,
  5877. F.FHTime,
  5878. F.FHUserCode,
  5879. F.BarCode,
  5880. F.GoodsCode,
  5881. L.LogoName,
  5882. F.GroutingUserCode,
  5883. F.GroutingMouldCode,
  5884. F.GroutingDate,
  5885. G.DeliverTime,
  5886. L.LogoID,
  5887. --(Goods.MaterialCode || L.tagcode || G.onlycode) as FinishedBarCode
  5888. nvl(g.outlabelcode, Goods.MaterialCode || (select a.workcode from tp_mst_account a where a.accountid = g.accountid) || L.tagcode || G.onlycode) as FinishedBarCode
  5889. from TP_PM_FinishedProduct F
  5890. left join TP_PM_Order O
  5891. on F.FHOrderID=O.OrderID
  5892. left join TP_MST_Logo L
  5893. on F.LogoID=L.LogoID
  5894. left join TP_PM_GroutingDailyDetail G
  5895. on F.GroutingDailyDetailID=G.GroutingDailyDetailID
  5896. left join TP_MST_Goods Goods
  5897. on F.GoodsID=Goods.GoodsID
  5898. left join TP_MST_GoodsType GoodsType
  5899. on Goods.GoodsTypeID=GoodsType.GoodsTypeID
  5900. where F.BarCode=:BarCode";
  5901. //where F.BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
  5902. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  5903. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5904. {
  5905. resultEntity.Result = 1;//成功
  5906. resultEntity.Data = new DataSet();
  5907. resultEntity.Data.Tables.Add(dsResult.Tables[0].Copy());
  5908. }
  5909. else
  5910. {
  5911. resultEntity.Result = -2;// 条码未注浆
  5912. resultEntity.Message = "条码【" + barcode + "】未注浆";
  5913. return resultEntity;
  5914. }
  5915. #endregion
  5916. return resultEntity;
  5917. }
  5918. catch (Exception ex)
  5919. {
  5920. throw ex;
  5921. }
  5922. finally
  5923. {
  5924. if (oracleConn.ConnState == ConnectionState.Open)
  5925. {
  5926. oracleConn.Close();
  5927. }
  5928. }
  5929. }
  5930. /// <summary>
  5931. /// 检验回收条码
  5932. /// </summary>
  5933. /// <param name="procedureID">工序ID</param>
  5934. /// <param name="barcode">产品条码</param>
  5935. /// <returns>DataSet</returns>
  5936. public static DataSet CheckRecydingFlagBarcode(int procedureID, string barcode, SUserInfo sUserInfo)
  5937. {
  5938. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5939. try
  5940. {
  5941. oracleConn.Open();
  5942. string sqlString = @"select settingcode,settingvalue,settingdefaultvalues from tp_mst_systemsetting
  5943. where Accountid=:Accountid and settingcode in ('S_PM_017','S_PM_018','S_PM_019','S_PM_020')";
  5944. OracleParameter[] paras = new OracleParameter[]{
  5945. new OracleParameter("Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  5946. };
  5947. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  5948. #region 读出系统配置 17(损坯可否回收) 18(半检不合格可否回收) 19(复检不合格可否回收) 20(次品可否回收)
  5949. int S_PM_017_Value = 0, S_PM_018_Value = 0, S_PM_019_Value = 0, S_PM_020_Value = 0;
  5950. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5951. {
  5952. foreach (DataRow r in ds.Tables[0].Rows)
  5953. {
  5954. if (r["settingcode"].ToString() == "S_PM_017")
  5955. {
  5956. S_PM_017_Value = Convert.ToInt32(r["settingvalue"]);
  5957. }
  5958. else if (r["settingcode"].ToString() == "S_PM_018")
  5959. {
  5960. S_PM_018_Value = Convert.ToInt32(r["settingvalue"]);
  5961. }
  5962. else if (r["settingcode"].ToString() == "S_PM_019")
  5963. {
  5964. S_PM_019_Value = Convert.ToInt32(r["settingvalue"]);
  5965. }
  5966. else if (r["settingcode"].ToString() == "S_PM_020")
  5967. {
  5968. S_PM_020_Value = Convert.ToInt32(r["settingvalue"]);
  5969. }
  5970. }
  5971. }
  5972. #endregion
  5973. int goodsID = 0;
  5974. string goodsCode = "", goodsName = "", groutingUserCode = "";
  5975. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  5976. DataSet returnDs = new DataSet();
  5977. DataRow dr = dtBarCode.NewRow();
  5978. bool isError = false;
  5979. #region 第1步 查当前工序在系统是否存在
  5980. sqlString = @"select NodeType,ModelType from tp_pc_procedure where procedureid=:procedureid and ValueFlag=1";
  5981. paras = new OracleParameter[]{
  5982. new OracleParameter(":procedureid",procedureID),
  5983. };
  5984. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  5985. if (ds == null || ds.Tables[0].Rows.Count == 0)
  5986. {
  5987. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "当前工序在系统中不存在";
  5988. isError = true;
  5989. }
  5990. #endregion
  5991. #region 第2步 查产品是否有效
  5992. if (!isError)
  5993. {
  5994. sqlString = @"select distinct GoodsID, GoodsCode,GoodsName,UserCode,DeliverFlag
  5995. from TP_PM_GroutingDailyDetail where BarCode=:barCode and ValueFlag=1 ";
  5996. paras = new OracleParameter[]{
  5997. new OracleParameter(":barCode",barcode),
  5998. };
  5999. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  6000. if (ds == null || ds.Tables[0].Rows.Count == 0)
  6001. {
  6002. // 是否被替换
  6003. string sql = @"select count(barcode),max(newbarcode) from TP_PM_BarCodeRecord where BarCode=:barcode";
  6004. OracleParameter[] paras2 = new OracleParameter[]{
  6005. new OracleParameter(":barCode",barcode) };
  6006. DataSet ds2 = oracleConn.GetSqlResultToDs(sql, paras2);
  6007. if (ds2 != null && Convert.ToInt32(ds2.Tables[0].Rows[0][0]) == 0)
  6008. {
  6009. // 无效条件
  6010. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码[" + barcode + "]";
  6011. isError = true;
  6012. }
  6013. else
  6014. {
  6015. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码[" + barcode + "]已经被[" + ds2.Tables[0].Rows[0][1] + "]替换";
  6016. isError = true;
  6017. }
  6018. }
  6019. else
  6020. {
  6021. if (Convert.ToInt32(ds.Tables[0].Rows[0]["DeliverFlag"]) != 1)
  6022. {
  6023. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码[" + barcode + "]未交坯,不能回收";
  6024. isError = true;
  6025. }
  6026. else
  6027. {
  6028. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  6029. goodsName = ds.Tables[0].Rows[0]["goodsName"].ToString();
  6030. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  6031. groutingUserCode = ds.Tables[0].Rows[0]["UserCode"].ToString();
  6032. }
  6033. sqlString = @" SELECT GOODSCODE FROM TP_MST_GOODS WHERE GOODSID IN (SELECT GOODSID FROM TP_PM_GROUTINGDAILYDETAIL WHERE BARCODE=:BARCODE) AND CEASEFLAG = 0 ";
  6034. paras = new OracleParameter[]{
  6035. new OracleParameter(":BARCODE",barcode),
  6036. };
  6037. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  6038. if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && !string.IsNullOrWhiteSpace(ds.Tables[0].Rows[0]["GOODSCODE"].ToString()))
  6039. {
  6040. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品[" + ds.Tables[0].Rows[0]["GOODSCODE"].ToString() + "]已停产,不允许操作,请联系管理员!";
  6041. isError = true;
  6042. }
  6043. }
  6044. }
  6045. #endregion
  6046. #region 第3步 查产品是否在当前工序配置
  6047. if (!isError)
  6048. {
  6049. sqlString = @"select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  6050. paras = new OracleParameter[]{
  6051. new OracleParameter(":GoodsID",goodsID),
  6052. new OracleParameter(":ProcedureID",procedureID),
  6053. };
  6054. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  6055. if (Convert.ToInt32(ds.Tables[0].Rows[0][0]) != 1)
  6056. {
  6057. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] =
  6058. @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + goodsCode + "]没有在该工序中配置";
  6059. isError = true;
  6060. }
  6061. }
  6062. #endregion
  6063. if (!isError)
  6064. {
  6065. #region 第4步,校验在产产品不能回收
  6066. string sqlString2 = "select InScrapFlag,ISREWORKFLAG from tp_pm_inproduction where barcode=:barcode";
  6067. OracleParameter[] parasNew = new OracleParameter[]{
  6068. new OracleParameter(":barcode",barcode) };
  6069. DataSet dsNew = oracleConn.GetSqlResultToDs(sqlString2, parasNew);
  6070. if (dsNew != null && dsNew.Tables[0].Rows.Count > 0)
  6071. {
  6072. if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["InScrapFlag"]) == 1)
  6073. {
  6074. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "报损待审产品不能回收";
  6075. }
  6076. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  6077. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 1)
  6078. {
  6079. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "半检返工中不能回收";
  6080. }
  6081. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 2)
  6082. {
  6083. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "半检返修中不能回收";
  6084. }
  6085. else
  6086. {
  6087. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "在产产品不能回收";
  6088. }
  6089. isError = true;
  6090. }
  6091. #endregion
  6092. #region 第5步,校验报损表数据是否可以回收
  6093. if (!isError)
  6094. {
  6095. sqlString = @"select GoodsLevelID,GoodsLevelTypeID,ScrapType,SpecialRepairFlag,RecyclingFlag,AuditStatus,SpecialRepairUserID from TP_PM_ScrapProduct where barcode=:barcode
  6096. and ValueFlag=1 and CreateTime=
  6097. (select max(CreateTime) from TP_PM_ScrapProduct where barcode=:barcode
  6098. and ValueFlag=1)";
  6099. paras = new OracleParameter[]{
  6100. new OracleParameter(":barcode",barcode),
  6101. };
  6102. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  6103. if (ds == null || ds.Tables[0].Rows.Count == 0)
  6104. {
  6105. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "不存在回收数据,不能回收";
  6106. isError = true;
  6107. }
  6108. else
  6109. {
  6110. if (Convert.ToInt32(ds.Tables[0].Rows[0]["AuditStatus"]) == 1 &&
  6111. Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) != 9 &&
  6112. Convert.ToInt32(ds.Tables[0].Rows[0]["RecyclingFlag"]) == 0)
  6113. {
  6114. // 可回收
  6115. string sqlString3 = "select 1 from tp_pm_inproductiontrash where barcode=:barcode";
  6116. OracleParameter[] parasNewt = new OracleParameter[]{
  6117. new OracleParameter(":barcode",barcode) };
  6118. DataSet dsNewt = oracleConn.GetSqlResultToDs(sqlString3, parasNewt);
  6119. if (dsNewt == null || dsNewt.Tables[0].Rows.Count == 0)
  6120. {
  6121. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "报损数据被清除,不能回收";
  6122. isError = true;
  6123. }
  6124. }
  6125. else
  6126. {
  6127. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "不存在回收数据,不能回收";
  6128. isError = true;
  6129. }
  6130. if (!isError)
  6131. {
  6132. if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 0)
  6133. {
  6134. // 损坯
  6135. if (S_PM_017_Value == 0)
  6136. {
  6137. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "系统参数产品回收-报损未启用";
  6138. isError = true;
  6139. }
  6140. }
  6141. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 1)
  6142. {
  6143. // 成检
  6144. if (S_PM_020_Value == 0)
  6145. {
  6146. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "系统参数产品回收-次品未启用";
  6147. isError = true;
  6148. }
  6149. }
  6150. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 2)
  6151. {
  6152. // 半检
  6153. if (S_PM_018_Value == 0)
  6154. {
  6155. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "系统参数产品回收-半检不合格未启用";
  6156. isError = true;
  6157. }
  6158. }
  6159. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 3)
  6160. {
  6161. // 复检
  6162. if (S_PM_019_Value == 0)
  6163. {
  6164. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "系统参数产品回收-复检不合格未启用";
  6165. isError = true;
  6166. }
  6167. }
  6168. }
  6169. }
  6170. }
  6171. #endregion
  6172. #region 第6步,回收过一次不能再回收
  6173. sqlString = @"SELECT
  6174. COUNT(*) count
  6175. FROM
  6176. TP_PM_PRODUCTIONDATA
  6177. WHERE
  6178. PROCEDUREID = 80
  6179. AND BARCODE = :barCode
  6180. AND VALUEFLAG = 1
  6181. GROUP BY BARCODE";
  6182. OracleParameter[] paras1 = new OracleParameter[]{
  6183. new OracleParameter(":barCode",barcode),
  6184. };
  6185. DataSet ds1 = oracleConn.GetSqlResultToDs(sqlString, paras1);
  6186. string errorMessage1 = "";
  6187. if (ds1 != null && ds1.Tables[0].Rows.Count > 0)
  6188. {
  6189. if (Convert.ToInt16(ds1.Tables[0].Rows[0]["count"]) >= 2)
  6190. {
  6191. // 无效条件
  6192. errorMessage1 = "条码[" + barcode + "]:已回收过两次,不允许再次回收";
  6193. }
  6194. }
  6195. if (!string.IsNullOrEmpty(errorMessage1))
  6196. {
  6197. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errorMessage1;
  6198. isError = true;
  6199. }
  6200. #endregion
  6201. }
  6202. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = goodsID;
  6203. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = goodsCode;
  6204. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = goodsName;
  6205. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = groutingUserCode;
  6206. //oracleConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  6207. //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()]
  6208. // = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  6209. //dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value;
  6210. //dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value;
  6211. //dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value;
  6212. //dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value;
  6213. //if (paras[2].Value.ToString() == "null") //只有正确的条码,读注浆信息
  6214. if (!isError) //只有正确的条码,读注浆信息
  6215. {
  6216. sqlString = @"select
  6217. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  6218. tp_pm_groutingdailydetail.groutingcount as GroutingNum,
  6219. tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
  6220. tp_pm_groutingdailydetail.ispublicbody,
  6221. tp_pm_groutingdailydetail.Groutingdate,
  6222. tp_pm_groutingdailydetail.SpecialRepairFlag,
  6223. tp_mst_logo.logoid,
  6224. tp_mst_logo.logocode,
  6225. tp_mst_logo.logoname
  6226. from tp_pm_groutingdailydetail
  6227. left join tp_mst_logo
  6228. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  6229. where tp_pm_groutingdailydetail.BarCode=:barcode";
  6230. paras = new OracleParameter[]{
  6231. new OracleParameter(":barcode",barcode),
  6232. };
  6233. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  6234. if (ds != null && ds.Tables[0].Rows.Count > 0)
  6235. {
  6236. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  6237. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  6238. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  6239. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  6240. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  6241. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  6242. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  6243. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  6244. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoID"].ToString();
  6245. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString();
  6246. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString();
  6247. }
  6248. }
  6249. dtBarCode.Rows.Add(dr);
  6250. returnDs.Tables.Add(dtBarCode);
  6251. return returnDs;
  6252. }
  6253. catch (Exception ex)
  6254. {
  6255. throw ex;
  6256. }
  6257. finally
  6258. {
  6259. if (oracleConn.ConnState == ConnectionState.Open)
  6260. {
  6261. oracleConn.Close();
  6262. }
  6263. }
  6264. }
  6265. #region 裸瓷交接验证
  6266. /// <summary>
  6267. /// 产成品交接条码验证
  6268. /// </summary>
  6269. /// <param name="barcode"></param>
  6270. /// <param name="sUserInfo"></param>
  6271. /// <param name="handoverFlag">0:未交接,1:已交接,2:不限</param>
  6272. /// <returns></returns>
  6273. public static ServiceResultEntity LCFinishedHandoverBarcode(string barcode, SUserInfo sUserInfo)
  6274. {
  6275. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6276. try
  6277. {
  6278. oracleConn.Open();
  6279. ServiceResultEntity resultEntity = new ServiceResultEntity();
  6280. // 如果是板码
  6281. string banMa = string.Empty;
  6282. if (barcode.Length == 8)
  6283. {
  6284. banMa = barcode;
  6285. string sqlBanMa = @"
  6286. SELECT BARCODE,
  6287. FINISHEDLOADBATCHNO
  6288. FROM TP_PM_FINISHEDPRODUCT
  6289. WHERE FHTIME IS NULL AND LCFHTIME IS NULL
  6290. AND BANMA = :barcode ";
  6291. OracleParameter[] parasBanMa = new OracleParameter[]
  6292. {
  6293. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  6294. };
  6295. DataTable dtBanMa = oracleConn.GetSqlResultToDt(sqlBanMa, parasBanMa);
  6296. if (dtBanMa.Rows.Count == 0)
  6297. {
  6298. resultEntity.Result = -1;
  6299. resultEntity.Message = "当前载具上无可交接的产品。";
  6300. return resultEntity;
  6301. }
  6302. DataTable dtFinishedLoadBatchNo = dtBanMa.DefaultView.ToTable(true, new string[] { "FINISHEDLOADBATCHNO" });
  6303. if (dtFinishedLoadBatchNo.Rows.Count > 1)
  6304. {
  6305. resultEntity.Result = -1;
  6306. resultEntity.Message = "当前载具存在超过两版以上的产品。";
  6307. return resultEntity;
  6308. }
  6309. barcode = dtBanMa.Rows[0]["BARCODE"].ToString();
  6310. }
  6311. string gbarcode = null;
  6312. string FINISHEDLOADBATCHNO = null;
  6313. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  6314. OracleParameter[] paras1 = new OracleParameter[]{
  6315. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  6316. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  6317. };
  6318. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1);
  6319. if (ds != null && ds.Tables[0].Rows.Count > 0)
  6320. {
  6321. gbarcode = ds.Tables[0].Rows[0][0].ToString();
  6322. }
  6323. // 1.判断产品是否在产成品表中
  6324. string sql = @"select
  6325. f.FHUserID,
  6326. f.FHUserCode,
  6327. f.LCFHUserID,
  6328. f.LCFHUserCode,
  6329. f.GoodsID,
  6330. f.GoodsCode,
  6331. f.GoodsName,
  6332. f.BarCode, f.FINISHEDLOADBATCHNO
  6333. from TP_PM_FinishedProduct f
  6334. where f.BarCode=:BarCode";
  6335. string currentBarcode = string.Empty;
  6336. OracleParameter[] paras = new OracleParameter[]{
  6337. new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
  6338. };
  6339. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  6340. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  6341. {
  6342. FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString();
  6343. // 在产成品表中
  6344. #region 是否交接过
  6345. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  6346. string lcfhUserCode = dsResult.Tables[0].Rows[0]["LCFHUserCode"].ToString();
  6347. if ( !string.IsNullOrEmpty(lcfhUserCode))
  6348. {
  6349. resultEntity.Result = -1; //已交接,不能再次进行交接
  6350. resultEntity.Message = "此产品【" + barcode + "】已进行裸瓷交接,不能进行该操作";
  6351. return resultEntity;
  6352. }
  6353. if ( !string.IsNullOrEmpty(fhUserCode))
  6354. {
  6355. resultEntity.Result = -1; //已交接,不能再次进行交接
  6356. resultEntity.Message = "此产品【" + barcode + "】已包装交接,不能进行该操作";
  6357. return resultEntity;
  6358. }
  6359. #endregion
  6360. #region 是否是裸瓷交接
  6361. //查询最近一次是不是裸瓷保存
  6362. sql = "SELECT procedureid\n" +
  6363. " FROM (SELECT procedureid\n" +
  6364. " FROM tp_pm_productiondata\n" +
  6365. " WHERE barcode = :BarCode\n" +
  6366. " ORDER BY productiondataid DESC)\n" +
  6367. " WHERE rownum = 1";
  6368. paras = new OracleParameter[]{
  6369. new OracleParameter(":Barcode",OracleDbType.Varchar2, gbarcode,ParameterDirection.Input),
  6370. };
  6371. DataTable productionDataIDdt = oracleConn.GetSqlResultToDt(sql, paras);
  6372. if (productionDataIDdt != null && productionDataIDdt.Rows.Count > 0 && productionDataIDdt.Rows[0]["procedureid"].ToString() != "159")
  6373. {
  6374. resultEntity.Result = -1; //已交接,不能再次进行交接
  6375. resultEntity.Message = "此产品【" + barcode + "】不能进行该操作,请使用产成品交接";
  6376. return resultEntity;
  6377. }
  6378. #endregion
  6379. }
  6380. else
  6381. {
  6382. // 不在产成品表中
  6383. #region 1 查询是否报损待审批与漏扫
  6384. sql = @"select I.InScrapFlag,P.procedureName,I.GoodsCode from TP_PM_InProduction I
  6385. left join tp_pc_procedure P
  6386. on I.flowprocedureid=P.procedureid
  6387. where I.BarCode=:BarCode";
  6388. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  6389. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  6390. {
  6391. // 存在在产表中
  6392. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  6393. {
  6394. resultEntity.Result = -3; //产品已经待审批报损
  6395. resultEntity.Message = "此产品【" + barcode + "】己待审报废,不能进行该操作";
  6396. return resultEntity;
  6397. }
  6398. int missbarcode = AddBarCodeMissingFinishedHandover(oracleConn, gbarcode, sUserInfo);
  6399. if (missbarcode > 0)
  6400. {
  6401. // 第一次记录漏扫
  6402. resultEntity.Result = -4;
  6403. resultEntity.OtherStatus = missbarcode;// 需要弹窗
  6404. resultEntity.Message = "此产品【" + barcode + "】当前工序为【" + dsResult.Tables[0].Rows[0]["procedureName"].ToString() + "】不是产成品,不能进行该操作";
  6405. return resultEntity;
  6406. }
  6407. else
  6408. {
  6409. resultEntity.Result = -5;
  6410. resultEntity.OtherStatus = -1;// 不需要弹窗
  6411. resultEntity.Message = "此产品【" + barcode + "】当前工序为【" + dsResult.Tables[0].Rows[0]["procedureName"].ToString() + "】不是产成品,不能进行该操作";
  6412. return resultEntity;
  6413. }
  6414. }
  6415. #endregion
  6416. #region 2 条码在废弃产品表中且审批通过,提示:此产品【999999】已被废弃,不能进行该操作。
  6417. sql = @"select GoodsCode from tp_pm_inproductiontrash where BarCode=:BarCode";
  6418. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  6419. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  6420. {
  6421. resultEntity.Result = -6; //产品已经报损
  6422. resultEntity.Message = "此产品【" + barcode + "】已被废弃,不能进行该操作";
  6423. return resultEntity;
  6424. }
  6425. #endregion
  6426. #region 3 未交坯
  6427. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode and DeliverTime is null";
  6428. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  6429. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  6430. {
  6431. resultEntity.Result = -7; //产品未交坏
  6432. resultEntity.Message = "此产品【" + barcode + "】还未交坯,不能进行该操作";
  6433. return resultEntity;
  6434. }
  6435. else
  6436. {
  6437. resultEntity.Result = -8; //无效条码
  6438. resultEntity.Message = "此条码【" + barcode + "】为无效条码,不能进行该操作";
  6439. return resultEntity;
  6440. }
  6441. #endregion
  6442. }
  6443. #region 查询产品相关信息
  6444. sql = "select gd.BarCode,\n" +
  6445. " l.logoid,\n" +
  6446. " l.logocode,\n" +
  6447. " l.logoname,\n" +
  6448. " gd.goodscode,\n" +
  6449. " gd.UserID,\n" +
  6450. " gd.UserCode as GroutingUserCode,\n" +
  6451. " gd.GroutingMouldCode as MouldCode,\n" +
  6452. " gd.GroutingDate,\n" +
  6453. " gd.DeliverTime,\n" +
  6454. " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" +
  6455. " Goods.PlateLimitNum,\n" +
  6456. " nvl(gd.outlabelcode,\n" +
  6457. " Goods.MaterialCode ||\n" +
  6458. " (select a.workcode\n" +
  6459. " from tp_mst_account a\n" +
  6460. " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" +
  6461. " o.ORDERNO,\n" +
  6462. " SUBSTR( gd.OUTLABELCODE, 0, 14 ) OUTLABELCODE,\n" +
  6463. " gd.MATERIALCODE,\n" +
  6464. " gd.OUTLABELCODE as OUTLABELCODES,\n" +
  6465. " f.BanMa\n" +
  6466. " from TP_PM_GroutingDailyDetail gd\n" +
  6467. " inner join tp_mst_logo l\n" +
  6468. " on gd.logoid = l.logoid\n" +
  6469. " inner join TP_PM_FinishedProduct f\n" +
  6470. " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" +
  6471. " left join tp_pm_order o\n" +
  6472. " on o.orderid = f.FHORDERID\n" +
  6473. " inner join TP_MST_Goods Goods\n" +
  6474. " on gd.goodsid = Goods.goodsid \n";
  6475. if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO))
  6476. {
  6477. sql += " where gd.BarCode='" + gbarcode + "'";
  6478. }
  6479. else
  6480. {
  6481. sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'";
  6482. paras[0].Value = FINISHEDLOADBATCHNO;
  6483. }
  6484. dsResult = oracleConn.GetSqlResultToDs(sql);
  6485. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  6486. {
  6487. for (int i = 0; i < dsResult.Tables[0].Rows.Count; i++)
  6488. {
  6489. if (dsResult.Tables[0].Rows[i]["OUTLABELCODE"].ToString() != dsResult.Tables[0].Rows[i]["MATERIALCODE"].ToString())
  6490. {
  6491. resultEntity.Result = -1;
  6492. resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板。外包装箱码:" + dsResult.Tables[0].Rows[i]["OUTLABELCODES"];
  6493. return resultEntity;
  6494. }
  6495. }
  6496. resultEntity.Result = 1;//成功
  6497. resultEntity.Data = dsResult;
  6498. }
  6499. else
  6500. {
  6501. resultEntity.Result = -2;// 条码未注浆
  6502. resultEntity.Message = "条码【" + barcode + "】未注浆";
  6503. return resultEntity;
  6504. }
  6505. #endregion
  6506. return resultEntity;
  6507. }
  6508. catch (Exception ex)
  6509. {
  6510. throw ex;
  6511. }
  6512. finally
  6513. {
  6514. if (oracleConn.ConnState == ConnectionState.Open)
  6515. {
  6516. oracleConn.Close();
  6517. }
  6518. }
  6519. }
  6520. /// <summary>
  6521. /// 整版撤销产成品交接条码验证
  6522. /// </summary>
  6523. /// <param name="barcode"></param>
  6524. /// <param name="sUserInfo"></param>
  6525. /// <returns></returns>
  6526. public static ServiceResultEntity LCBackFinishedHandoverCheck(string barcode, SUserInfo sUserInfo)
  6527. {
  6528. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6529. try
  6530. {
  6531. oracleConn.Open();
  6532. ServiceResultEntity resultEntity = new ServiceResultEntity();
  6533. if (barcode.Length == 8)
  6534. {
  6535. resultEntity.Result = -1;
  6536. resultEntity.Message = "撤销交接不允许扫板码。";
  6537. return resultEntity;
  6538. }
  6539. string gbarcode = null;
  6540. string FINISHEDLOADBATCHNO = null;
  6541. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  6542. OracleParameter[] paras1 = new OracleParameter[]{
  6543. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  6544. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  6545. };
  6546. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1);
  6547. if (ds != null && ds.Tables[0].Rows.Count > 0)
  6548. {
  6549. gbarcode = ds.Tables[0].Rows[0][0].ToString();
  6550. }
  6551. // 1.判断产品是否在产成品表中
  6552. string sql = @"select
  6553. FHUserID,
  6554. FHUserCode,
  6555. LCFHUserID,
  6556. LCFHUserCode,
  6557. GoodsID,
  6558. GoodsCode,
  6559. GoodsName, FINISHEDLOADBATCHNO
  6560. from TP_PM_FinishedProduct
  6561. where BarCode=:BarCode";
  6562. OracleParameter[] paras = new OracleParameter[]{
  6563. new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
  6564. };
  6565. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  6566. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  6567. {
  6568. FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString();
  6569. // 在产成品表中
  6570. #region 是否交接过
  6571. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  6572. string lcfhUserCode = dsResult.Tables[0].Rows[0]["LCFHUserCode"].ToString();
  6573. if (string.IsNullOrEmpty(lcfhUserCode))
  6574. {
  6575. resultEntity.Result = -1; //未交接,不能撤销
  6576. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  6577. return resultEntity;
  6578. }
  6579. if (!string.IsNullOrEmpty(fhUserCode))
  6580. {
  6581. resultEntity.Result = -1; //已交接,不能撤销
  6582. resultEntity.Message = "此产品【" + barcode + "】已包装交接,不能进行该操作";
  6583. return resultEntity;
  6584. }
  6585. #endregion
  6586. }
  6587. else
  6588. {
  6589. resultEntity.Result = -2; //不能产成品,不能撤销
  6590. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  6591. dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  6592. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  6593. {
  6594. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  6595. }
  6596. else
  6597. {
  6598. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  6599. }
  6600. return resultEntity;
  6601. }
  6602. #region 查询产品相关信息
  6603. sql = "select gd.BarCode,\n" +
  6604. " l.logoid,\n" +
  6605. " l.logocode,\n" +
  6606. " l.logoname,\n" +
  6607. " gd.goodscode,\n" +
  6608. " gd.UserID,\n" +
  6609. " gd.UserCode as GroutingUserCode,\n" +
  6610. " gd.GroutingMouldCode as MouldCode,\n" +
  6611. " gd.GroutingDate,\n" +
  6612. " gd.DeliverTime,\n" +
  6613. " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" +
  6614. " Goods.PlateLimitNum,\n" +
  6615. " nvl(gd.outlabelcode,\n" +
  6616. " Goods.MaterialCode ||\n" +
  6617. " (select a.workcode\n" +
  6618. " from tp_mst_account a\n" +
  6619. " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" +
  6620. " o.ORDERNO,\n" +
  6621. " f.BanMa\n" +
  6622. " from TP_PM_GroutingDailyDetail gd\n" +
  6623. " inner join tp_mst_logo l\n" +
  6624. " on gd.logoid = l.logoid\n" +
  6625. " inner join TP_PM_FinishedProduct f\n" +
  6626. " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" +
  6627. " left join tp_pm_order o\n" +
  6628. " on o.orderid = f.FHORDERID\n" +
  6629. " inner join TP_MST_Goods Goods\n" +
  6630. " on gd.goodsid = Goods.goodsid \n";
  6631. if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO))
  6632. {
  6633. sql += " where gd.BarCode='" + gbarcode + "'";
  6634. }
  6635. else
  6636. {
  6637. sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'";
  6638. paras[0].Value = FINISHEDLOADBATCHNO;
  6639. }
  6640. dsResult = oracleConn.GetSqlResultToDs(sql);
  6641. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  6642. {
  6643. resultEntity.Result = 1;//成功
  6644. resultEntity.Data = dsResult;
  6645. }
  6646. else
  6647. {
  6648. resultEntity.Result = -2;// 条码未注浆
  6649. resultEntity.Message = "条码【" + barcode + "】未注浆";
  6650. return resultEntity;
  6651. }
  6652. #endregion
  6653. return resultEntity;
  6654. }
  6655. catch (Exception ex)
  6656. {
  6657. throw ex;
  6658. }
  6659. finally
  6660. {
  6661. if (oracleConn.ConnState == ConnectionState.Open)
  6662. {
  6663. oracleConn.Close();
  6664. }
  6665. }
  6666. }
  6667. #endregion
  6668. }
  6669. }