PDAModuleLogic.cs 450 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PDAModuleLogic.cs
  5. * 2.功能描述:PDA相关处理。
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2014/09/16 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Drawing;
  14. using System.Drawing.Imaging;
  15. using System.IO;
  16. using System.Text;
  17. using Dongke.IBOSS.PRD.Basics.BaseResources;
  18. using Dongke.IBOSS.PRD.Basics.DataAccess;
  19. using Dongke.IBOSS.PRD.Basics.Library;
  20. using Dongke.IBOSS.PRD.Service.DataModels;
  21. using Dongke.IBOSS.PRD.WCF.DataModels;
  22. using Dongke.IBOSS.PRD.WCF.DataModels.HRModule;
  23. using Dongke.IBOSS.PRD.WCF.DataModels.PCModule;
  24. using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
  25. using Oracle.ManagedDataAccess.Client;
  26. namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
  27. {
  28. /// <summary>
  29. /// PDA
  30. /// </summary>
  31. public partial class PDAModuleLogic
  32. {
  33. #region PDA端登陆
  34. /// <summary>
  35. /// PDA端登陆
  36. /// </summary>
  37. /// <returns></returns>
  38. public static PDALoginResult DoPDALogin(LoginRequestEntity requestEntity)
  39. {
  40. PDALoginResult pdaResult = new PDALoginResult();
  41. LoginResultEntity resultEntity = DKIBOSSPRDLogic.DKIBOSSPRDLogic.DoLogin(requestEntity, "2");
  42. pdaResult.Status = resultEntity.LoginStatus;
  43. //pdaResult.Message = resultEntity.LoginMessage;
  44. if (pdaResult.Status != 0)
  45. {
  46. switch (pdaResult.Status)
  47. {
  48. case 0:
  49. pdaResult.Message = "登录成功";
  50. break;
  51. case 1:
  52. pdaResult.Message = "帐套不存在";
  53. break;
  54. case 2:
  55. pdaResult.Message = "该帐套不存在该用户";
  56. break;
  57. case 3:
  58. pdaResult.Message = "用户密码不正确";
  59. break;
  60. case 4:
  61. pdaResult.Message = "MAC地址错误";
  62. break;
  63. case 5:
  64. pdaResult.Message = "登录时间错误";
  65. break;
  66. case 6:
  67. pdaResult.Message = "用户停用";
  68. break;
  69. case 7:
  70. pdaResult.Message = "用户被锁死";
  71. break;
  72. case 8:
  73. pdaResult.Message = "此用户不能在移动端登录";
  74. break;
  75. case 9:
  76. pdaResult.Message = "APP版本需要更新";
  77. break;
  78. case 10:
  79. pdaResult.Message = Constant.PDA_RESULT_SYSTEMDATEERROR;
  80. break;
  81. case 11:
  82. pdaResult.Message = "没有找到加服务器密锁";
  83. break;
  84. case 12:
  85. pdaResult.Message = "服务器加密锁不是东科的加密锁";
  86. break;
  87. case 13:
  88. pdaResult.Message = "读取服务器锁内客户编码内容失败";
  89. break;
  90. case 21:
  91. //pdaResult.Message = "没有找到license文件";
  92. pdaResult.Message = Messages.MSG_SYS_W011;
  93. break;
  94. case 22:
  95. //pdaResult.Message = "license文件损坏";
  96. pdaResult.Message = Messages.MSG_SYS_W012;
  97. break;
  98. case 23:
  99. //pdaResult.Message = "license文件内容不正确";
  100. pdaResult.Message = Messages.MSG_SYS_W013;
  101. break;
  102. case 31:
  103. pdaResult.Message = "服务器加密锁的内容和license文件的内容不相符";
  104. break;
  105. case 32:
  106. //pdaResult.Message = "临时的License已经过期";
  107. pdaResult.Message = Messages.MSG_SYS_W015;
  108. break;
  109. case 41:
  110. pdaResult.Message = "打开客户端加密锁失败";
  111. break;
  112. case 42:
  113. pdaResult.Message = "没有找到客户端加密锁";
  114. break;
  115. case 43:
  116. pdaResult.Message = "客户端加密锁不是东科的加密锁";
  117. break;
  118. case 44:
  119. pdaResult.Message = "读取加密锁信息失败(硬件损坏、管理密码错误等)";
  120. break;
  121. case 45:
  122. pdaResult.Message = "加密锁的内容和license内容不一致";
  123. break;
  124. default:
  125. pdaResult.Message = "登录失败";
  126. break;
  127. }
  128. }
  129. else
  130. {
  131. pdaResult.SessionKey = resultEntity.CurrentUserEntity.SessionKey;
  132. pdaResult.AccountID = resultEntity.CurrentUserEntity.AccountID;
  133. pdaResult.UserID = resultEntity.CurrentUserEntity.UserID;
  134. pdaResult.UserName = resultEntity.CurrentUserEntity.UserName;
  135. pdaResult.IsGroutingWorker = resultEntity.CurrentUserEntity.IsGroutingWorker.ToString();
  136. //pdaResult.Message = INIUtility.Instance(INIUtility.IniFile.Config).ReadIniData("WCFSetting", "ServerName");
  137. pdaResult.ServerName = INIUtility.Instance(INIUtility.IniFile.Config).ReadIniData("WCFSetting", "ServerName");
  138. if (resultEntity.LicenseInfo != null)
  139. {
  140. DateTime vEnd = Convert.ToDateTime(resultEntity.LicenseInfo.Tables["Info"].Rows[0]["ValidityEnd"]);
  141. pdaResult.ValidityEnd = vEnd.ToString("yyyy-MM-dd");
  142. // TODO message -1 登录成功,显示消息(确定);-2 登录成功,显示消息(不确定);
  143. }
  144. pdaResult.AppVersion = INIUtility.Instance(INIUtility.IniFile.Config).ReadIniData("VersionSetting", "AndroidVersion");//System.Configuration.ConfigurationManager.AppSettings["AndroidVersion"];
  145. string ApkPath = INIUtility.Instance(INIUtility.IniFile.Config).ReadIniData("PathSetting", "UpgradeAPKPath");
  146. ApkPath = System.AppDomain.CurrentDomain.BaseDirectory + ApkPath;
  147. if (File.Exists(ApkPath))
  148. {
  149. //pdaResult.Rights = userEntity.UserRightData;
  150. FileStream file = File.OpenRead(ApkPath);
  151. pdaResult.ApkSize = file.Length;
  152. file.Close();
  153. }
  154. else
  155. {
  156. pdaResult.ApkSize = -1;//APK文件不存在
  157. }
  158. }
  159. return pdaResult;
  160. }
  161. /// <summary>
  162. /// 获取Apk信息
  163. /// </summary>
  164. /// <returns></returns>
  165. public static ServiceResultEntity GetApkInfo()
  166. {
  167. ServiceResultEntity sre = new ServiceResultEntity();
  168. Dictionary<string, object> appInfo = new Dictionary<string, object>();
  169. string ApkPath = INIUtility.Instance(INIUtility.IniFile.Config).ReadIniData("PathSetting", "UpgradeAPKPath");
  170. ApkPath = System.AppDomain.CurrentDomain.BaseDirectory + ApkPath;
  171. appInfo.Add("AppVersion", INIUtility.Instance(INIUtility.IniFile.Config).ReadIniData("VersionSetting", "AndroidVersion"));
  172. appInfo.Add("ApkPath", ApkPath);
  173. if (File.Exists(ApkPath))
  174. {
  175. //pdaResult.Rights = userEntity.UserRightData;
  176. FileStream file = File.OpenRead(ApkPath);
  177. appInfo.Add("ApkSize", file.Length);
  178. file.Close();
  179. }
  180. else
  181. {
  182. appInfo.Add("ApkSize", -1);//APK文件不存在
  183. sre.Message = "APK文件不存在";
  184. }
  185. sre.Result = appInfo;
  186. return sre;
  187. }
  188. #endregion
  189. #region 获得显示数据
  190. /// <summary>
  191. /// 获得生产线菜单
  192. /// </summary>
  193. /// <param name="sUserInfo">用户信息</param>
  194. /// <returns>DataTable</returns>
  195. /// <remarks>
  196. /// 陈冰 2014.09.23 新建
  197. /// </remarks>
  198. public static DataTable GetProductionLineMenu(SUserInfo sUserInfo)
  199. {
  200. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  201. try
  202. {
  203. con.Open();
  204. OracleParameter[] paras = new OracleParameter[]{
  205. new OracleParameter("in_userID",OracleDbType.Int32,
  206. sUserInfo.UserID,ParameterDirection.Input),
  207. new OracleParameter("out_result",OracleDbType.RefCursor,ParameterDirection.Output),
  208. };
  209. DataSet dsResult = con.ExecStoredProcedure("PRO_PDA_GetProductionLineMenu", paras);
  210. if (dsResult != null && dsResult.Tables.Count > Constant.INT_IS_ZERO)
  211. {
  212. return dsResult.Tables[0];
  213. }
  214. return null;
  215. }
  216. catch (Exception ex)
  217. {
  218. throw ex;
  219. }
  220. finally
  221. {
  222. if (con.ConnState == ConnectionState.Open)
  223. {
  224. con.Close();
  225. }
  226. }
  227. }
  228. #endregion
  229. #region 统计
  230. /// <summary>
  231. /// 统计当日计数数量
  232. /// </summary>
  233. /// <param name="procedureID">当前工序ID</param>
  234. /// <param name="sUserInfo"></param>
  235. /// <returns></returns>
  236. public static DataSet StatisticsCollectBarcode(int procedureID, SUserInfo sUserInfo)
  237. {
  238. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  239. try
  240. {
  241. con.Open();
  242. // string sql = @"select tuser.UserCode, goods.GoodsCode, goods.GoodsName, goodscount.Count
  243. // from (select Goodsid, count(Goodsid) count, UserID
  244. // from tp_pm_productiondata
  245. // where ProcedureID = :procedureID
  246. // and CreateUserID = :createUserID
  247. // and AccountDate = fun_cmn_getaccountdate(accountid)
  248. // group by Goodsid, UserID) goodscount
  249. // inner join tp_mst_goods goods on goods.goodsid = goodscount.goodsid
  250. // inner join tp_mst_user tuser on tuser.userid = goodscount.userid
  251. // order by tuser.usercode, goods.goodscode";
  252. //tp_pm_productiondata.UserCode,
  253. // string sql = @" select
  254. // decode(GoodsCode,'小计','-',UserCode) as UserCode,
  255. //
  256. // decode(UserCode,'合计','合计',GoodsCode) as GoodsCode,
  257. // count
  258. // from
  259. // (
  260. //
  261. // select
  262. //
  263. // decode(tp_pm_productiondata.GoodsCode,'合计','-',tp_pm_productiondata.UserCode) as UserCode,
  264. // tp_pm_productiondata.GoodsCode,
  265. //
  266. // tp_pm_productiondata.count
  267. // from (
  268. // select
  269. //
  270. //
  271. // decode(grouping(tuser.UserCode),1,'合计',tuser.UserCode) UserCode,
  272. // decode(grouping(goods.GoodsCode),1,'小计',goods.GoodsCode) GoodsCode,
  273. //
  274. // count(tp_pm_productiondata.goodsid) count
  275. // from
  276. // tp_pm_productiondata
  277. // inner join tp_mst_goods goods
  278. // on tp_pm_productiondata.goodsid = goods.goodsid
  279. // and tp_pm_productiondata.procedureid=:procedureID
  280. // and tp_pm_productiondata.createUserID=:createUserID
  281. // and tp_pm_productiondata.AccountDate = trunc(sysdate)
  282. // inner join tp_mst_user tuser on tuser.userid = tp_pm_productiondata.userid
  283. //
  284. // group by rollup(tuser.UserCode,goods.GoodsCode)
  285. //
  286. // ) tp_pm_productiondata
  287. //
  288. // )
  289. //
  290. // ";
  291. string sql = @" select
  292. decode(GoodsCode,'小计','-',UserCode) as UserCode,
  293. decode(UserCode,'合计','合计',GoodsCode) as GoodsCode,
  294. count
  295. from
  296. (
  297. select
  298. decode(tp_pm_productiondata.GoodsCode,'合计','-',tp_pm_productiondata.UserCode) as UserCode,
  299. tp_pm_productiondata.GoodsCode,
  300. tp_pm_productiondata.count
  301. from (
  302. select
  303. decode(grouping(UserCode),1,'合计',UserCode) UserCode,
  304. decode(grouping(GoodsCode),1,'小计',GoodsCode) GoodsCode,
  305. count(tp_pm_productiondata.goodsid) count
  306. from
  307. tp_pm_productiondata
  308. where
  309. tp_pm_productiondata.procedureid=:procedureID
  310. and tp_pm_productiondata.createUserID=:createUserID
  311. and tp_pm_productiondata.AccountDate = trunc(sysdate)
  312. and tp_pm_productiondata.valueflag=1
  313. group by rollup(UserCode,GoodsCode)
  314. ) tp_pm_productiondata
  315. )
  316. ";
  317. // 陈冰 2014-11-24
  318. // and tp_pm_productiondata.userid=:createUserID 改成 tp_pm_productiondata.createUserID = :createUserID
  319. // and tp_pm_productiondata.AccountDate = fun_cmn_getaccountdate(tp_pm_productiondata.accountid)
  320. // 改成 and tp_pm_productiondata.AccountDate =trunc(sysdate)
  321. OracleParameter[] paras = new OracleParameter[]{
  322. new OracleParameter(":procedureID",OracleDbType.Int32,
  323. procedureID,ParameterDirection.Input),
  324. new OracleParameter(":createUserID",OracleDbType.Int32,
  325. sUserInfo.UserID,ParameterDirection.Input),
  326. };
  327. DataSet dsResult = con.GetSqlResultToDs(sql, paras);
  328. return dsResult;
  329. }
  330. catch (Exception ex)
  331. {
  332. throw ex;
  333. }
  334. finally
  335. {
  336. if (con.ConnState == ConnectionState.Open)
  337. {
  338. con.Close();
  339. }
  340. }
  341. }
  342. /// <summary>
  343. /// 使用存储过程PRO_PM_StatisticsKilnCar统计当前用户下工序的窑车产品数据
  344. /// </summary>
  345. /// <param name="procedureID">工序</param>
  346. /// <returns></returns>
  347. public static DataSet StatisticsKilnCar(int procedureID, SUserInfo sUserInfo)
  348. {
  349. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  350. string procsql = "PRO_PM_StatisticsKilnCar";
  351. try
  352. {
  353. IDataParameter[] paras = new OracleParameter[]
  354. {
  355. new OracleParameter("in_procedureid", OracleDbType.Int32,procedureID, ParameterDirection.Input),
  356. new OracleParameter("in_userid", OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  357. new OracleParameter("rs_result", OracleDbType.RefCursor, ParameterDirection.Output)
  358. };
  359. oracleConn.Open();
  360. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  361. return returnDs;
  362. }
  363. catch (Exception ex)
  364. {
  365. throw ex;
  366. }
  367. finally
  368. {
  369. if (oracleConn.ConnState == ConnectionState.Open)
  370. {
  371. oracleConn.Close();
  372. }
  373. }
  374. }
  375. /// <summary>
  376. /// 使用存储过程PRO_PM_StatisticsProductTrack统计当前条码所有工序
  377. /// </summary>
  378. /// <param name="procedureID">工序</param>
  379. /// <returns></returns>
  380. public static ProductionDataEntity StatisticsProductTrack(string barcode, SUserInfo sUserInfo)
  381. {
  382. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  383. string procsql = "PRO_PM_StatisticsProductTrack";
  384. try
  385. {
  386. IDataParameter[] paras = new OracleParameter[]
  387. {
  388. new OracleParameter("in_barcode", OracleDbType.Varchar2,barcode, ParameterDirection.Input),
  389. new OracleParameter("in_accountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  390. new OracleParameter("out_goodsCode", OracleDbType.Varchar2,100,null, ParameterDirection.Output),
  391. new OracleParameter("out_groutingUserCode", OracleDbType.Varchar2,100,null, ParameterDirection.Output),
  392. new OracleParameter("out_mouldCode", OracleDbType.Varchar2,100,null, ParameterDirection.Output),
  393. new OracleParameter("out_groutingNum", OracleDbType.Varchar2,100,null, ParameterDirection.Output),
  394. new OracleParameter("out_goodsEnding", OracleDbType.Varchar2,100,null, ParameterDirection.Output),
  395. new OracleParameter("rs_result", OracleDbType.RefCursor, ParameterDirection.Output)
  396. };
  397. oracleConn.Open();
  398. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  399. ProductionDataEntity[] productionDataEntitys = new ProductionDataEntity[1];
  400. ProductionDataEntity productionDataEntity = new ProductionDataEntity();
  401. productionDataEntity.Barcode = paras[0].Value != null ? paras[0].Value.ToString() : "";
  402. productionDataEntity.GoodsCode = paras[2].Value != null ? paras[2].Value.ToString() : "";
  403. productionDataEntity.GroutingUserCode = paras[3].Value != null ? paras[3].Value.ToString() : "";
  404. productionDataEntity.MouldCode = paras[4].Value != null ? paras[4].Value.ToString() : "";
  405. string GroutingNum = paras[5].Value != null ? paras[5].Value.ToString() : "";
  406. productionDataEntity.GroutingNum = Convert.ToInt32((GroutingNum == "" || GroutingNum.ToString() == "null") ? "0" : GroutingNum);
  407. productionDataEntity.GoodsEnding = paras[6].Value != null ? paras[6].Value.ToString() : "";
  408. if (returnDs != null && returnDs.Tables[0].Rows.Count > 0)
  409. {
  410. //ProductionDataEntity[] productionDataEntitys = new ProductionDataEntity[returnDs.Tables[0].Rows.Count];
  411. List<ProductionProcedureListEntity> productionProcedureListEntitys = new List<ProductionProcedureListEntity>();
  412. for (int i = 0; i < returnDs.Tables[0].Rows.Count; i++)
  413. {
  414. ProductionProcedureListEntity productionProcedureListEntity = new ProductionProcedureListEntity();
  415. productionProcedureListEntity.ProcedureName = returnDs.Tables[0].Rows[i]["ProcedureName"].ToString();
  416. productionProcedureListEntity.ProductionUserCode = returnDs.Tables[0].Rows[i]["ProductionUserCode"].ToString();
  417. productionProcedureListEntity.Usercode = returnDs.Tables[0].Rows[i]["CreateUserCode"].ToString();
  418. productionProcedureListEntity.Createtime = Convert.ToDateTime(returnDs.Tables[0].Rows[i]["Createtime"].ToString());
  419. productionProcedureListEntitys.Add(productionProcedureListEntity);
  420. // productionDataEntitys[i].ProcedureDataList = productionProcedureListEntitys;
  421. }
  422. productionDataEntity.ProcedureDataList = new List<ProductionProcedureListEntity>();
  423. productionDataEntity.ProcedureDataList = productionProcedureListEntitys;
  424. }
  425. return productionDataEntity;
  426. }
  427. catch (Exception ex)
  428. {
  429. ex.HelpLink = "barcode:" + barcode; //为了看哪个条码出现的问题
  430. throw ex;
  431. }
  432. finally
  433. {
  434. if (oracleConn.ConnState == ConnectionState.Open)
  435. {
  436. oracleConn.Close();
  437. }
  438. }
  439. }
  440. #endregion
  441. #region 文件上传下载
  442. #region 保存PDA图片
  443. /// <summary>
  444. /// 保存临时图片
  445. /// </summary>
  446. /// <param name="mageStream"></param>
  447. /// <returns></returns>
  448. public static string SaveImg(Stream mageStream)
  449. {
  450. try
  451. {
  452. // 路径不存在 需要创建
  453. if (!Directory.Exists(Constant.SYSTEM_TEMP_PATH))
  454. {
  455. Directory.CreateDirectory(Constant.SYSTEM_TEMP_PATH);
  456. }
  457. string path = Constant.SYSTEM_TEMP_PATH + "/" + System.Guid.NewGuid().ToString().ToUpper() + Constant.SYSTEM_IMAGE_FORMAT;
  458. Image img = Bitmap.FromStream(mageStream);
  459. img.Save(System.AppDomain.CurrentDomain.BaseDirectory + path);
  460. return path;
  461. }
  462. catch (Exception ex)
  463. {
  464. throw ex;
  465. }
  466. }
  467. public static Stream GetImg(string path)
  468. {
  469. Image image = Image.FromFile(path);//这是你图片文件的
  470. MemoryStream stream = new MemoryStream();
  471. image.Save(stream, ImageFormat.Jpeg); //把图片保存到流中。
  472. return stream;
  473. }
  474. #endregion
  475. /// <summary>
  476. /// PAD自动更新
  477. /// </summary>
  478. /// <returns></returns>
  479. public static Stream AutoUpgrade()
  480. {
  481. try
  482. {
  483. string path = INIUtility.Instance(INIUtility.IniFile.Config).ReadIniData("PathSetting", "UpgradeAPKPath");//System.Configuration.ConfigurationManager.AppSettings["UpgradeAPKPath"].Trim();
  484. path = System.AppDomain.CurrentDomain.BaseDirectory + path;
  485. FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
  486. return fileStream;
  487. }
  488. catch (Exception ex)
  489. {
  490. throw ex;
  491. }
  492. }
  493. #endregion
  494. /// <summary>
  495. /// 由产品条码获取注浆信息
  496. /// </summary>
  497. /// <param name="barcode"></param>
  498. /// <returns></returns>
  499. public static DataSet GetGroutingProducttByBarCode(string barcode)
  500. {
  501. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  502. try
  503. {
  504. con.Open();
  505. string sqlString = @"select
  506. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  507. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  508. TP_PM_GroutingDailyDetail.GroutingMouldCode as MouldCode,
  509. (select tp_pm_inproduction.ispublicbody from
  510. tp_pm_inproduction where tp_pm_inproduction.BarCode=:barcode) as ispublicbody,
  511. (select tp_pm_inproductiontrash.ispublicbody from
  512. tp_pm_inproductiontrash where tp_pm_inproductiontrash.BarCode=:barcode) as ispublicbodyTrach,
  513. TP_PM_GroutingDailyDetail.Groutingdate
  514. from TP_PM_GroutingDailyDetail
  515. where TP_PM_GroutingDailyDetail.BarCode=:barcode";
  516. OracleParameter[] paras = new OracleParameter[]{
  517. new OracleParameter(":barcode",barcode),
  518. };
  519. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  520. return ds;
  521. }
  522. catch (Exception ex)
  523. {
  524. throw ex;
  525. }
  526. finally
  527. {
  528. if (con.ConnState == ConnectionState.Open)
  529. {
  530. con.Close();
  531. }
  532. }
  533. }
  534. /// <summary>
  535. /// 获取工号下的所有工种信息
  536. /// </summary>
  537. /// <param name="UserID">工号ID</param>
  538. /// <param name="sUserInfo">获取系统账套信息</param>
  539. /// <returns>数据集</returns>
  540. public static DataSet GetAllJobsByUserID(int UserID, SUserInfo sUserInfo)
  541. {
  542. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  543. try
  544. {
  545. con.Open();
  546. string sqlString = @"select
  547. TP_MST_UserJobs.Userid,
  548. TP_MST_Jobs.JobsID as Jobs,
  549. TP_MST_Jobs.JobsName,
  550. TP_MST_Jobs.JobsCode
  551. from TP_MST_UserJobs
  552. left join TP_MST_Jobs
  553. on TP_MST_UserJobs.JobsID=TP_MST_Jobs.JobsID
  554. where TP_MST_UserJobs.Userid=:UserId and TP_MST_Jobs.Accountid=:Accountid
  555. order by TP_MST_Jobs.JobsCode
  556. ";
  557. OracleParameter[] paras = new OracleParameter[]{
  558. new OracleParameter(":Accountid",sUserInfo.AccountID),
  559. new OracleParameter(":UserId",UserID),
  560. };
  561. DataSet dsUserIsWorker = con.GetSqlResultToDs(sqlString, paras);
  562. return dsUserIsWorker;
  563. }
  564. catch (Exception ex)
  565. {
  566. throw ex;
  567. }
  568. finally
  569. {
  570. if (con.ConnState == ConnectionState.Open)
  571. {
  572. con.Close();
  573. }
  574. }
  575. }
  576. /// <summary>
  577. /// 根据所选工号对应的工种,查出缺陷责任员工
  578. /// </summary>
  579. /// <param name="jobs">工种ID</param>
  580. /// <returns></returns>
  581. public static DataSet GetDutyStaffByUserID(int jobs, SUserInfo sUserInfo)
  582. {
  583. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  584. try
  585. {
  586. con.Open();
  587. string sqlString = @"select
  588. TP_HR_Staff.StaffID,TP_HR_Staff.StaffCode,TP_HR_Staff.StaffName,TP_HR_Staff.StaffStatus,TP_MST_UserStaff.UJobsID as SJobsID
  589. from TP_MST_UserStaff
  590. left join TP_HR_Staff
  591. on TP_MST_UserStaff.Staffid=TP_HR_Staff.Staffid
  592. where TP_MST_UserStaff.Ujobsid=:jobs and TP_HR_Staff.StaffStatus in (1,2)
  593. order by TP_HR_Staff.StaffCode
  594. ";
  595. //and TP_PM_Producer.UserID=:UserID and TP_PM_Producer.UJobsID=:JobsID
  596. OracleParameter[] paras = new OracleParameter[]{
  597. new OracleParameter(":jobs",OracleDbType.Int32, jobs,ParameterDirection.Input),
  598. };
  599. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  600. return ds;
  601. }
  602. catch (Exception ex)
  603. {
  604. throw ex;
  605. }
  606. finally
  607. {
  608. if (con.ConnState == ConnectionState.Open)
  609. {
  610. con.Close();
  611. }
  612. }
  613. }
  614. /// <summary>
  615. /// 根据所选工号,查出漏检责任员工
  616. /// </summary>
  617. /// <param name="userid">工号</param>
  618. /// <returns></returns>
  619. public static DataSet GetMissedStaffByUserID(int userid, SUserInfo sUserInfo)
  620. {
  621. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  622. try
  623. {
  624. con.Open();
  625. string sqlString = @"select
  626. TP_HR_Staff.StaffID,TP_HR_Staff.StaffCode,TP_HR_Staff.StaffName,TP_HR_Staff.StaffStatus,TP_MST_UserStaff.UJobsID as UJobsID,TP_HR_Staff.Jobs as SJobsID
  627. from TP_MST_UserStaff
  628. left join TP_HR_Staff
  629. on TP_MST_UserStaff.Staffid=TP_HR_Staff.Staffid
  630. where TP_MST_UserStaff.Userid=:userid
  631. ";
  632. OracleParameter[] paras = new OracleParameter[]{
  633. new OracleParameter(":userid",OracleDbType.Int32, userid,ParameterDirection.Input),
  634. };
  635. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  636. return ds;
  637. }
  638. catch (Exception ex)
  639. {
  640. throw ex;
  641. }
  642. finally
  643. {
  644. if (con.ConnState == ConnectionState.Open)
  645. {
  646. con.Close();
  647. }
  648. }
  649. }
  650. /// <summary>
  651. /// 查询产品信息
  652. /// </summary>
  653. /// <param name="requestEntity">请求信息</param>
  654. /// <param name="goodsEntity">产品信息</param>
  655. /// <returns></returns>
  656. /// <remarks>
  657. /// 王鑫 2014.12.09 新建
  658. /// </remarks>
  659. public static DataSet SerachGoods(SUserInfo sUserInfo, GoodsEntity goodsEntity)
  660. {
  661. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  662. try
  663. {
  664. con.Open();
  665. OracleParameter[] paras = new OracleParameter[]{
  666. new OracleParameter("account",OracleDbType.Int32,
  667. sUserInfo.AccountID,ParameterDirection.Input),
  668. new OracleParameter("goodsID",OracleDbType.Int32,
  669. goodsEntity.GoodsID,ParameterDirection.Input),
  670. new OracleParameter("goodsCode",OracleDbType.NVarchar2,
  671. goodsEntity.GoodsCode,ParameterDirection.Input),
  672. new OracleParameter("goodsName",OracleDbType.NVarchar2,
  673. goodsEntity.GoodsName,ParameterDirection.Input),
  674. new OracleParameter("goodsSpecification",OracleDbType.NVarchar2,
  675. goodsEntity.GoodsSpecification,ParameterDirection.Input),
  676. new OracleParameter("goodsModel",OracleDbType.NVarchar2,
  677. goodsEntity.GoodsModel,ParameterDirection.Input),
  678. new OracleParameter("goodsTypeCode",OracleDbType.NVarchar2,
  679. goodsEntity.GoodsTypeCode,ParameterDirection.Input),
  680. new OracleParameter("glazeTypeID",OracleDbType.Int32,
  681. goodsEntity.GlazeTypeID,ParameterDirection.Input),
  682. new OracleParameter("ceaseFlag",OracleDbType.NVarchar2,
  683. goodsEntity.CeaseFlag,ParameterDirection.Input),
  684. new OracleParameter("remarks",OracleDbType.NVarchar2,
  685. goodsEntity.Remarks,ParameterDirection.Input),
  686. new OracleParameter("valueFlag",OracleDbType.NVarchar2,
  687. goodsEntity.ValueFlag,ParameterDirection.Input),
  688. new OracleParameter("rs_result",OracleDbType.RefCursor,ParameterDirection.Output),
  689. new OracleParameter("rs_result_img",OracleDbType.RefCursor,ParameterDirection.Output),
  690. };
  691. foreach (OracleParameter item in paras)
  692. {
  693. if (item.Value + "" == "")
  694. {
  695. item.Value = DBNull.Value;
  696. }
  697. }
  698. DataSet ds = con.ExecStoredProcedure("PRO_MST_SerachGoods", paras);
  699. return ds;
  700. }
  701. catch (Exception ex)
  702. {
  703. throw ex;
  704. }
  705. finally
  706. {
  707. if (con.ConnState == ConnectionState.Open)
  708. {
  709. con.Close();
  710. }
  711. }
  712. }
  713. /// <summary>
  714. /// 获取用户列表
  715. /// </summary>
  716. /// <param name="requestEntity">用户实体</param>
  717. /// <param name="webUserInfo">获取系统账套信息</param>
  718. /// <returns>数据集</returns>
  719. public static DataSet SearchUserData(SUserEntity requestEntity, SUserInfo sUserInfo)
  720. {
  721. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  722. try
  723. {
  724. con.Open();
  725. OracleParameter[] paras = new OracleParameter[]{
  726. new OracleParameter("in_accountID",sUserInfo.AccountID),
  727. new OracleParameter("in_userID",sUserInfo.UserID),
  728. new OracleParameter("in_userCode",requestEntity.UserCode),
  729. new OracleParameter("in_userName",requestEntity.UserName),
  730. new OracleParameter("in_organizationID",requestEntity.OrganizationID),
  731. new OracleParameter("in_remarks",requestEntity.Remarks),
  732. new OracleParameter("in_limitMAC",requestEntity.LimitMAC),
  733. new OracleParameter("in_isWorker",requestEntity.IsWorker),
  734. new OracleParameter("rs_result",OracleDbType.RefCursor),
  735. new OracleParameter("in_ValueFlag",requestEntity.IsValueFlag),
  736. new OracleParameter("in_IsLocked",requestEntity.IsLocked),
  737. };
  738. paras[8].Direction = ParameterDirection.Output;
  739. DataSet ds = con.ExecStoredProcedure("PRO_MST_SearchUser", paras);
  740. return ds;
  741. }
  742. catch (Exception ex)
  743. {
  744. throw ex;
  745. }
  746. finally
  747. {
  748. if (con.ConnState == ConnectionState.Open)
  749. {
  750. con.Close();
  751. }
  752. }
  753. }
  754. /// <summary>
  755. /// 获取数据字典管理的数据
  756. /// </summary>
  757. /// <param name="Pvalue">显示停用标识</param>
  758. /// <param name="dictionaryType">字典类别</param>
  759. /// <returns></returns>
  760. /// <remarks>
  761. /// 2014.12.03 新建
  762. /// </remarks>
  763. public static DataSet GetDictionaryData(byte Pvalue, string dictionaryType, SUserInfo sUserInfo)
  764. {
  765. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  766. try
  767. {
  768. string sqlString = String.Empty;
  769. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = null;
  770. if (Pvalue.ToString() == Constant.INT_IS_ONE.ToString())
  771. {
  772. sqlString = "Select DictionaryID,DictionaryType,DictionaryValue,DisplayNo,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,"
  773. + "UpdateUserID,OPTimeStamp from TP_MST_DataDictionary where DictionaryType = :DictionaryType and AccountID = :AccountID";
  774. oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  775. {
  776. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID",sUserInfo.AccountID),
  777. new Oracle.ManagedDataAccess.Client.OracleParameter(":DictionaryType",dictionaryType)
  778. };
  779. }
  780. else if (Pvalue.ToString() == Constant.INT_IS_ZERO.ToString())
  781. {
  782. sqlString = "Select DictionaryID,DictionaryType,DictionaryValue,DisplayNo,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,"
  783. + "UpdateUserID,OPTimeStamp from TP_MST_DataDictionary where valueflag = :valueflag and DictionaryType = :DictionaryType and AccountID = :AccountID";
  784. oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  785. {
  786. new Oracle.ManagedDataAccess.Client.OracleParameter(":valueflag",Constant.INT_IS_ONE.ToString()),
  787. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID",sUserInfo.AccountID),
  788. new Oracle.ManagedDataAccess.Client.OracleParameter(":DictionaryType",dictionaryType)
  789. };
  790. }
  791. oracleConn.Open();
  792. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  793. oracleConn.Close();
  794. return result;
  795. }
  796. catch (Exception ex)
  797. {
  798. if (oracleConn.ConnState == ConnectionState.Open)
  799. {
  800. oracleConn.Close();
  801. }
  802. throw ex;
  803. }
  804. finally
  805. {
  806. if (oracleConn.ConnState == ConnectionState.Open)
  807. {
  808. oracleConn.Close();
  809. }
  810. }
  811. }
  812. /// <summary>
  813. /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据
  814. /// </summary>
  815. /// <param name="searchEntity">生产数据实体类</param>
  816. /// <param name="user">用户基本信息</param>
  817. /// <returns>DataTable</returns>
  818. public static DataTable GetProductionData(SearchProductionDataEntity searchEntity, SUserInfo user)
  819. {
  820. //IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  821. //string procsql = "PRO_PM_GetProductionDataPDA";
  822. //try
  823. //{
  824. // IDataParameter[] paras = new OracleParameter[]
  825. // {
  826. // new OracleParameter("in_procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input),
  827. // new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  828. // new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  829. // new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  830. // new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  831. // new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  832. // new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  833. // new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  834. // new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  835. // new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  836. // new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  837. // new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  838. // new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  839. // new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  840. // new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  841. // new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  842. // new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  843. // new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  844. // };
  845. // oracleConn.Open();
  846. // DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  847. // if (returnDs != null && returnDs.Tables.Count > 0)
  848. // {
  849. // return returnDs.Tables[0];
  850. // }
  851. // else
  852. // {
  853. // return null;
  854. // }
  855. //}
  856. //catch (Exception ex)
  857. //{
  858. // throw ex;
  859. //}
  860. //finally
  861. //{
  862. // if (oracleConn.ConnState == ConnectionState.Open)
  863. // {
  864. // oracleConn.Close();
  865. // }
  866. //}
  867. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  868. string procsql = "";//PRO_PM_GetProductionDataPDA
  869. procsql = @"SELECT TP_PM_ProductionDataIn.ProductionDataID FROM TP_PM_ProductionDataIn where 1=1 and ProcedureID=" + searchEntity.ProcedureID + " and barcode='" + searchEntity.BarCode + "' order by TP_PM_ProductionDataIn.ProductionDataid desc";
  870. try
  871. {
  872. //IDataParameter[] paras = new OracleParameter[]
  873. //{
  874. // new OracleParameter("in_procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input),
  875. // new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  876. // new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  877. // new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  878. // new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  879. // new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  880. // new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  881. // new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  882. // new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  883. // new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  884. // new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  885. // new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  886. // new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  887. // new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  888. // new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  889. // new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  890. // new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  891. // new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  892. //};
  893. oracleConn.Open();
  894. DataSet returnDs = oracleConn.GetSqlResultToDs(procsql);
  895. if (returnDs != null && returnDs.Tables.Count > 0)
  896. {
  897. return returnDs.Tables[0];
  898. }
  899. else
  900. {
  901. return null;
  902. }
  903. }
  904. catch (Exception ex)
  905. {
  906. throw ex;
  907. }
  908. finally
  909. {
  910. if (oracleConn.ConnState == ConnectionState.Open)
  911. {
  912. oracleConn.Close();
  913. }
  914. }
  915. }
  916. /// <summary>
  917. /// xuwei add 2020-03-23 此方法用于成检后 回收 再次成检 获取正确ID
  918. /// </summary>
  919. /// <param name="searchEntity">生产数据实体类</param>
  920. /// <param name="user">用户基本信息</param>
  921. /// <returns>DataTable</returns>
  922. public static DataTable GetProductionDataCheckID(SearchProductionDataEntity searchEntity, SUserInfo user)
  923. {
  924. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  925. //string procsql = $@"
  926. //SELECT
  927. // NVL(MAX( T.PRODUCTIONDATAID ),0) AS PRODUCTIONDATAID
  928. //FROM
  929. // TP_PM_PRODUCTIONDATAIN T
  930. // INNER JOIN TP_PM_INPRODUCTION INP ON INP.BARCODE = T.BARCODE
  931. // AND T.KILNCARBATCHNO = INP.KILNCARBATCHNO
  932. //WHERE
  933. // T.MODELTYPE =- 1
  934. // AND T.VALUEFLAG = '1'
  935. // AND T.BARCODE = '{searchEntity.BarCode}'
  936. //";
  937. string procsql = $@"
  938. SELECT * FROM (
  939. SELECT
  940. T.PRODUCTIONDATAID, T.PROCEDUREID
  941. FROM
  942. TP_PM_PRODUCTIONDATAIN T
  943. INNER JOIN TP_PM_INPRODUCTION INP ON INP.BARCODE = T.BARCODE
  944. AND T.KILNCARBATCHNO = INP.KILNCARBATCHNO
  945. WHERE
  946. T.MODELTYPE = -1
  947. AND T.VALUEFLAG = '1'
  948. AND T.BARCODE = '{searchEntity.BarCode}'
  949. ORDER BY
  950. T.PRODUCTIONDATAID DESC
  951. ) T
  952. WHERE
  953. ROWNUM=1
  954. ";
  955. try
  956. {
  957. oracleConn.Open();
  958. DataTable returnDs = oracleConn.GetSqlResultToDt(procsql);
  959. //xuwei fix 2020-04-24 取消null值 这可能会引起前端序列化json异常
  960. return returnDs;
  961. //if (returnDs != null && returnDs.Tables.Count > 0)
  962. //{
  963. // return returnDs.Tables[0];
  964. //}
  965. //else
  966. //{
  967. // return null;
  968. //}
  969. }
  970. catch (Exception ex)
  971. {
  972. throw ex;
  973. }
  974. finally
  975. {
  976. if (oracleConn.ConnState == ConnectionState.Open)
  977. {
  978. oracleConn.Close();
  979. }
  980. }
  981. }
  982. /// <summary>
  983. /// 根据所选生产数据ID,显示成检数据信息
  984. /// </summary>
  985. /// <param name="productionDataID">生产数据ID</param>
  986. /// <returns>DataSet</returns>
  987. public static DataSet GetProductionDataByID(int productionDataID)
  988. {
  989. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  990. try
  991. {
  992. con.Open();
  993. DataSet dsReturn = new DataSet();
  994. string sqlString = @"select
  995. TP_PM_ProductionDataIn.Barcode as BarCode,
  996. TP_PM_ProductionDataIn.Goodsid as GoodsID,
  997. TP_PM_ProductionDataIn.Goodscode as GoodsCode,
  998. TP_PM_ProductionDataIn.Goodsname as GoodsName,
  999. TP_PM_ProductionDataIn.GoodsLevelID as DefectFlagID,
  1000. TP_PM_ProductionDataIn.Reworkprocedureid as ReworkProcedureID,
  1001. TP_PM_ProductionDataIn.Remarks as Remarks,
  1002. TP_PM_ProductionDataIn.Userid as UserID,
  1003. TP_PM_ProductionDataIn.UserCode as UserCode,
  1004. TP_PM_ProductionDataIn.UserName as UserName,
  1005. TP_PM_ProductionDataIn.Goodsleveltypeid as GoodsLevelTypeID,
  1006. TP_PM_ProductionDataIn.SpecialRepairflag,
  1007. TP_PM_ProductionDataIn.IsReFire,
  1008. TP_PM_ProductionDataIn.KilnCode,
  1009. TP_PM_ProductionDataIn.KilnCarCode,
  1010. TP_PM_ProductionDataIn.GroutingUserCode,
  1011. TP_PM_ProductionDataIn.GroutingMouldCode as MouldCode,
  1012. TP_PM_ProductionDataIn.GroutingNum,
  1013. TP_PM_ProductionDataIn.GroutingDate,
  1014. TP_PM_ProductionDataIn.IsPublicBody,
  1015. TP_MST_Logo.logoid,
  1016. TP_MST_Logo.logocode,
  1017. TP_MST_Logo.logoname,
  1018. TP_PM_ProductionDataIn.CreateTime,
  1019. TP_PM_ProductionDataIn.CheckTime,
  1020. dd.DICTIONARYVALUE as GLAZEName
  1021. from TP_PM_ProductionDataIn
  1022. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd
  1023. on gdd.BARCODE = TP_PM_ProductionDataIn.BARCODE
  1024. left join TP_MST_DATADICTIONARY dd on dd.DICTIONARYID = gdd.GLAZETYPEID
  1025. left join TP_MST_Logo
  1026. on gdd.logoid=TP_MST_Logo.logoid
  1027. where
  1028. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  1029. ";
  1030. string sqlString2 = @"
  1031. select
  1032. TP_PM_Defect.ProductionDefectID as ProductionDefectID,
  1033. TP_PM_Defect.Barcode as BarCode,
  1034. TP_PM_Defect.DefectID as DefectID,
  1035. TP_PM_Defect.Defectname as DefectName,
  1036. TP_PM_Defect.Defectcode as DefectCode,
  1037. TP_PM_Defect.Defectpositionid as DefectPositionID,
  1038. TP_PM_Defect.Defectpositionname as DefectPositionName,
  1039. TP_PM_Defect.Defectpositioncode as DefectPositionCode,
  1040. TP_PM_Defect.Defectprocedureid as DefectProcedureID,
  1041. TP_PM_Defect.Defectprocedurename as DefectProcedureName,
  1042. TP_PM_Defect.Defectprocedurecode as DefectProcedureCode,
  1043. TP_PM_Defect.Defectuserid as DefectUserID,
  1044. TP_PM_Defect.Defectusername as DefectUserName,
  1045. TP_PM_Defect.Defectusercode as DefectUserCode,
  1046. TP_PM_Defect.DefectJobs as Jobs,
  1047. nvl(TP_PM_Defect.MissedUserID,-1) as MissedUserID,
  1048. TP_PM_Defect.MissedUserCode,
  1049. TP_PM_Defect.MissedUserName,
  1050. TP_MST_Jobs.Jobsname as JobsText,
  1051. TP_PM_Defect.Remarks as DefectRemarks,
  1052. TP_PM_Defect.Productiondataid as ProductionDataID,
  1053. nvl(TP_PM_Defect.DefectProductionDataID,0) as DefectProductionDataID,
  1054. TP_PM_Defect.Defectfine as DefectFineID,
  1055. TP_MST_DefectFine.DefectFineCode as DefectFineValue,
  1056. TP_PM_Defect.SpecialDefect,
  1057. TP_PM_Defect.DefectDeductionNum,
  1058. TP_PM_Defect.CheckTime
  1059. from TP_PM_Defect
  1060. left join TP_MST_Jobs
  1061. on TP_PM_Defect.Defectjobs=TP_MST_Jobs.JobsID
  1062. left join TP_MST_DefectFine
  1063. on TP_PM_Defect.Defectfine= TP_MST_DefectFine.DefectFineid
  1064. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  1065. string sqlString3 = @"select
  1066. TP_PM_DefectResponsible.ProductionDefectID as ProductionDefectID,
  1067. TP_PM_DefectResponsible.Staffid as StaffID,
  1068. TP_HR_Staff.Staffcode as StaffCode,
  1069. TP_HR_Staff.Staffname as StaffName,
  1070. TP_PM_DefectResponsible.Staffstatus as StaffStatus,
  1071. TP_PM_DefectResponsible.UJobsID,
  1072. TP_PM_DefectResponsible.SJobsID
  1073. from TP_PM_DefectResponsible
  1074. left join TP_HR_Staff
  1075. on TP_PM_DefectResponsible.StaffID=TP_HR_Staff.Staffid
  1076. where TP_PM_DefectResponsible.Productiondefectid in
  1077. (
  1078. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  1079. )";
  1080. string sqlString4 = @" select
  1081. TP_PM_DefectImage.ProductionDefectID,
  1082. TP_PM_DefectImage.Thumbnailpath,
  1083. TP_PM_DefectImage.Imagepath
  1084. from TP_PM_DefectImage
  1085. where TP_PM_DefectImage.Productiondefectid in
  1086. (
  1087. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  1088. )";
  1089. string sqlString5 = @"select
  1090. TP_PM_DefectMissedResponsible.ProductionDefectID as ProductionDefectID,
  1091. TP_PM_DefectMissedResponsible.Staffid as StaffID,
  1092. TP_HR_Staff.Staffcode as StaffCode,
  1093. TP_HR_Staff.Staffname as StaffName,
  1094. TP_PM_DefectMissedResponsible.Staffstatus as StaffStatus,
  1095. TP_PM_DefectMissedResponsible.UJobsID,
  1096. TP_PM_DefectMissedResponsible.SJobsID
  1097. from TP_PM_DefectMissedResponsible
  1098. left join TP_HR_Staff
  1099. on TP_PM_DefectMissedResponsible.StaffID=TP_HR_Staff.Staffid
  1100. where TP_PM_DefectMissedResponsible.Productiondefectid in
  1101. (
  1102. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  1103. )";
  1104. OracleParameter[] paras = new OracleParameter[]{
  1105. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  1106. };
  1107. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  1108. ds.Tables[0].TableName = "TP_PM_ProductionData";
  1109. DataSet ds2 = con.GetSqlResultToDs(sqlString2, paras);
  1110. ds2.Tables[0].TableName = "TP_PM_Defect";
  1111. DataSet ds3 = con.GetSqlResultToDs(sqlString3, paras);
  1112. ds3.Tables[0].TableName = "TP_PM_DefectResponsible";
  1113. DataSet ds4 = con.GetSqlResultToDs(sqlString4, paras);
  1114. ds4.Tables[0].TableName = "TP_PM_DefectImage";
  1115. DataSet ds5 = con.GetSqlResultToDs(sqlString5, paras);
  1116. ds5.Tables[0].TableName = "TP_PM_DefectMissedResponsible";
  1117. dsReturn.Tables.Add(ds.Tables[0].Copy());
  1118. dsReturn.Tables.Add(ds2.Tables[0].Copy());
  1119. dsReturn.Tables.Add(ds3.Tables[0].Copy());
  1120. dsReturn.Tables.Add(ds4.Tables[0].Copy());
  1121. dsReturn.Tables.Add(ds5.Tables[0].Copy());
  1122. return dsReturn;
  1123. }
  1124. catch (Exception ex)
  1125. {
  1126. throw ex;
  1127. }
  1128. finally
  1129. {
  1130. if (con.ConnState == ConnectionState.Open)
  1131. {
  1132. con.Close();
  1133. }
  1134. }
  1135. }
  1136. /// <summary>
  1137. /// 绑定图片
  1138. /// </summary>
  1139. /// <returns></returns>
  1140. public static Stream BindDefectImage(string imagePath)
  1141. {
  1142. try
  1143. {
  1144. FileStream fileStream = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory + imagePath, FileMode.Open, FileAccess.Read, FileShare.Read);
  1145. return fileStream;
  1146. }
  1147. catch (Exception ex)
  1148. {
  1149. throw ex;
  1150. }
  1151. }
  1152. /// <summary>
  1153. /// 根据所选工号对应的工种,查出缺陷责任员工
  1154. /// </summary>
  1155. /// <param name="jobs">工种ID</param>
  1156. /// <param name="userid">用户ID</param>
  1157. /// <param name="sUserInfo">用户基本信息</param>
  1158. /// <returns>DataSet</returns>
  1159. public static DataSet GetDutyStaffByUserJobsID(int jobs, SUserInfo sUserInfo, int userid)
  1160. {
  1161. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1162. try
  1163. {
  1164. con.Open();
  1165. string sqlString = @"select
  1166. TP_HR_Staff.StaffID,TP_HR_Staff.StaffCode,TP_HR_Staff.StaffName,TP_HR_Staff.StaffStatus,TP_MST_UserStaff.UJobsID as SJobsID
  1167. from TP_MST_UserStaff
  1168. inner join TP_HR_Staff
  1169. on TP_MST_UserStaff.Staffid=TP_HR_Staff.Staffid
  1170. where TP_MST_UserStaff.Ujobsid=:jobs and TP_MST_UserStaff.Userid=:userid
  1171. and TP_HR_Staff.valueflag = '1' and TP_HR_Staff.StaffStatus in (1,2) ";
  1172. OracleParameter[] paras = new OracleParameter[]{
  1173. new OracleParameter(":jobs",OracleDbType.Int32, jobs,ParameterDirection.Input),
  1174. new OracleParameter(":userid",OracleDbType.Int32, userid,ParameterDirection.Input),
  1175. };
  1176. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  1177. return ds;
  1178. }
  1179. catch (Exception ex)
  1180. {
  1181. throw ex;
  1182. }
  1183. finally
  1184. {
  1185. if (con.ConnState == ConnectionState.Open)
  1186. {
  1187. con.Close();
  1188. }
  1189. }
  1190. }
  1191. #region 产品报废
  1192. /// <summary>
  1193. /// 验证废弃产品唯一性
  1194. /// </summary>
  1195. /// <param name="BarCode">产品条码</param>
  1196. /// <returns>int</returns>
  1197. public static string ScrapProductChack(string BarCode, SUserInfo sUserInfo)
  1198. {
  1199. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1200. try
  1201. {
  1202. con.Open();
  1203. // 当前工号是否有条码所在工序的操作权限
  1204. string sqlString =
  1205. "SELECT inp.procedureid\n" +
  1206. " ,p.procedurename\n" +
  1207. " ,p.MODELTYPE\n" +
  1208. " ,(SELECT 1\n" +
  1209. " FROM tp_mst_userpurview t\n" +
  1210. " WHERE t.purviewtype = 10\n" +
  1211. " AND t.userid = :userid\n" +
  1212. " AND (t.purviewid = -1 OR t.purviewid = inp.procedureid)\n" +
  1213. " AND rownum = 1) userpurview\n" +
  1214. " FROM tp_pm_inproduction inp\n" +
  1215. " LEFT JOIN tp_pc_procedure p\n" +
  1216. " ON p.procedureid = inp.procedureid\n" +
  1217. " WHERE inp.barcode = :barcode";
  1218. OracleParameter[] paras = new OracleParameter[]{
  1219. new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  1220. new OracleParameter(":barcode",OracleDbType.Varchar2, BarCode,ParameterDirection.Input),
  1221. };
  1222. DataTable dt = con.GetSqlResultToDt(sqlString, paras);
  1223. if (dt == null || dt.Rows.Count == 0)
  1224. {
  1225. // 条码不在产。
  1226. return "2";
  1227. }
  1228. object userpurview = dt.Rows[0]["userpurview"];
  1229. if (userpurview == null || userpurview == DBNull.Value)
  1230. {
  1231. return "3:" + dt.Rows[0]["procedurename"];
  1232. }
  1233. int MODELTYPE = Convert.ToInt32(dt.Rows[0]["MODELTYPE"]);
  1234. if (MODELTYPE == 1 ||
  1235. MODELTYPE == 2 ||
  1236. MODELTYPE == 3 ||
  1237. MODELTYPE == 6)
  1238. {
  1239. return "4:该产品处于无法报损的特殊工序中";
  1240. }
  1241. /*
  1242. string strSql = @"Select * from TP_PM_ScrapProduct where ValueFlag=1
  1243. and BarCode='" + BarCode + "' and (AuditStatus=1)"; //AuditStatus=0 or
  1244. DataSet dsReturn = con.GetSqlResultToDs(strSql);
  1245. if (dsReturn.Tables[0].Rows.Count == 0)
  1246. {
  1247. return 1;
  1248. }
  1249. else
  1250. {
  1251. return 0;
  1252. }
  1253. */
  1254. #region 判断产品是否被挂起
  1255. sqlString = "SELECT 1 AS RES\n" +
  1256. " FROM TP_PM_PRODUCTSUSPEND PS\n" +
  1257. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  1258. " ON GDD.GROUTINGDAILYDETAILID = PS.GROUTINGDAILYDETAILID\n" +
  1259. " WHERE GDD.BARCODE = :Barcode";
  1260. OracleParameter[] pars = new OracleParameter[]
  1261. {
  1262. new OracleParameter(":Barcode",OracleDbType.NVarchar2, BarCode,ParameterDirection.Input),
  1263. };
  1264. object objResult = con.GetSqlResultToObj(sqlString, pars);
  1265. if (objResult != null)
  1266. {
  1267. return "4:该产品被挂起";
  1268. }
  1269. #endregion
  1270. string strSql = "select GoodsLevelTypeID,AuditStatus from TP_PM_ScrapProduct "
  1271. + " where BarCode='" + BarCode + "'and CreateTime=(select max(CreateTime) "
  1272. + " from TP_PM_ScrapProduct "
  1273. + " where BarCode='" + BarCode + "' and ValueFlag=1 and (AuditStatus = 0 or AuditStatus = 1) and recyclingflag=0)"
  1274. + " and ValueFlag=1 and (AuditStatus = 0 or AuditStatus = 1) and recyclingflag=0";
  1275. DataSet dsReturn = con.GetSqlResultToDs(strSql);
  1276. if (dsReturn.Tables[0].Rows.Count == 0)
  1277. {
  1278. return "1";
  1279. }
  1280. else
  1281. {
  1282. if (dsReturn.Tables[0].Rows[0]["GOODSLEVELTYPEID"].ToString().Equals("9") && dsReturn.Tables[0].Rows[0]["AUDITSTATUS"].ToString().Equals("1"))
  1283. {
  1284. return "1";
  1285. }
  1286. else if (dsReturn.Tables[0].Rows[0]["GOODSLEVELTYPEID"].ToString() != "9" && dsReturn.Tables[0].Rows[0]["AUDITSTATUS"].ToString().Equals("1"))
  1287. {
  1288. return "0";
  1289. }
  1290. else
  1291. {
  1292. return "1";
  1293. }
  1294. }
  1295. }
  1296. catch (Exception ex)
  1297. {
  1298. throw ex;
  1299. }
  1300. finally
  1301. {
  1302. if (con.ConnState == ConnectionState.Open)
  1303. {
  1304. con.Close();
  1305. }
  1306. }
  1307. }
  1308. /// <summary>
  1309. /// 根据条码获取该产品的在产信息以及生产数据
  1310. /// </summary>
  1311. /// <param name="Barcode">产品条码</param>
  1312. /// <returns>装有两个DataTable的数据集,第一个是在产信息,第二个是生产数据</returns>
  1313. public static DataSet GetInProductionAndProductionData(string BarCode, SUserInfo sUserInfo)
  1314. {
  1315. DataSet dsList = new DataSet();
  1316. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1317. try
  1318. {
  1319. con.Open();
  1320. StringBuilder sbSql = new StringBuilder();
  1321. ////sbSql.Append("Select inp.*,pt.ProcedureModelTypeID from TP_PM_InProduction inp ");
  1322. ////sbSql.Append(" Inner join TP_PC_Procedure p");
  1323. //////sbSql.Append(" On inp.CompleteProcedureID = p.ProcedureID");
  1324. ////sbSql.Append(" On inp.FlowProcedureID = p.ProcedureID");
  1325. ////sbSql.Append(" Inner join TP_SYS_ProcedureModelType pt");
  1326. ////sbSql.Append(" On p.ModelType = pt.ProcedureModelTypeID");
  1327. ////sbSql.Append(" where inp.Barcode=:Barcode and inp.ValueFlag=1");
  1328. //sbSql.Append("Select inp.*,inp.ModelType as ProcedureModelTypeID,1 as endmode from TP_PM_InProduction inp ");
  1329. //sbSql.Append(" where inp.Barcode=:Barcode and inp.ValueFlag=1");
  1330. sbSql.Append("Select inp.*, p.ProcedureCode,p.ProcedureName, inp.ModelType as ProcedureModelTypeID,1 as endmode from TP_PM_InProduction inp ");
  1331. sbSql.Append(" inner join tp_pc_Procedure p on p.ProcedureID = inp.ProcedureID ");
  1332. sbSql.Append(" where inp.Barcode=:Barcode and inp.ValueFlag=1");
  1333. OracleParameter[] Paras = new OracleParameter[]{
  1334. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1335. BarCode,ParameterDirection.Input),
  1336. };
  1337. DataTable dtProduction = con.GetSqlResultToDt(sbSql.ToString(), Paras);
  1338. if (dtProduction != null)
  1339. {
  1340. if (dtProduction.Rows.Count != 0)
  1341. {
  1342. dsList.Tables.Add(dtProduction);
  1343. }
  1344. else
  1345. {
  1346. //在产产品不存在的话,看看是不是变成了成品
  1347. sbSql.Clear();
  1348. sbSql.Append("Select fp.*,2 as endmode from TP_PM_FinishedProduct fp ");
  1349. sbSql.Append(" where fp.Barcode=:Barcode and fp.ValueFlag=1");
  1350. dtProduction = con.GetSqlResultToDt(sbSql.ToString(), Paras);
  1351. if (dtProduction != null)
  1352. {
  1353. dsList.Tables.Add(dtProduction);
  1354. }
  1355. }
  1356. }
  1357. else
  1358. {
  1359. return null;
  1360. }
  1361. //sbSql.Clear();
  1362. //sbSql.Append("Select distinct ProductionDataID,ProcedureID,ProcedureName,ProcedureCode from TP_PM_ProductionDataIn where Barcode=:Barcode and ValueFlag=1 order by ProductionDataid");
  1363. DataSet sysSetting = CommonModuleLogic.CommonModuleLogic.GetSysSettingBySettingType("S_PM_015", sUserInfo);
  1364. string spm015 = null;
  1365. if (sysSetting != null && sysSetting.Tables.Count > 0 && sysSetting.Tables[0].Rows.Count > 0)
  1366. {
  1367. spm015 = sysSetting.Tables[0].Rows[0]["SettingValue"] + "";
  1368. }
  1369. sbSql.Clear();
  1370. sbSql.Append("Select ProductionDataID,ProcedureID,ProcedureName,ProcedureCode from TP_PM_ProductionDataIn where Barcode=:Barcode and ValueFlag=1 ");
  1371. // 报损不能选成型责任
  1372. if ("0" == spm015)
  1373. {
  1374. sbSql.Append(" and MODELTYPE <> 5");
  1375. }
  1376. sbSql.Append(" order by ProductionDataid");
  1377. DataTable dtProductionData = con.GetSqlResultToDt(sbSql.ToString(), Paras);
  1378. if (dtProductionData != null)
  1379. {
  1380. dsList.Tables.Add(dtProductionData);
  1381. }
  1382. else
  1383. {
  1384. return null;
  1385. }
  1386. return dsList;
  1387. }
  1388. catch (Exception ex)
  1389. {
  1390. throw ex;
  1391. }
  1392. finally
  1393. {
  1394. if (con.ConnState == ConnectionState.Open)
  1395. {
  1396. con.Close();
  1397. }
  1398. }
  1399. }
  1400. /// <summary>
  1401. /// 根据工号查询员工档案信息
  1402. /// </summary>
  1403. /// <param name="userId">员工ID</param>
  1404. /// <param name="sUserInfo">用户基本信息</param>
  1405. /// <returns>DataSet</returns>
  1406. /// <remarks>
  1407. /// 作者 日期 内容
  1408. /// 冯雪 2014-9-23 新建
  1409. /// </remarks>
  1410. public static DataSet SearchHrStaffInfo(int userId, SUserInfo sUserInfo)
  1411. {
  1412. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1413. try
  1414. {
  1415. con.Open();
  1416. string strSql = " SELECT TUser.userid,Staff.Staffid,Staff.Staffname,Staff.Organizationid,"
  1417. + " Staff.Jobs,Staff.Staffstatus,Staff.Staffcode,'' Remarks,"
  1418. + " (CASE Staff.staffStatus"
  1419. + " WHEN 0 THEN '未入职'"
  1420. + " WHEN 1 THEN '试用 '"
  1421. + " WHEN 2 THEN '转正'"
  1422. + " WHEN 3 THEN '离职'"
  1423. + " ELSE '' END) AS staffStatusName,"
  1424. + " Jobs.Jobsname,Org.Organizationname,TUser.UserCode,TUserJobs.Jobsname as UJobsName,TUserJobs.JobsId as UJobsId"
  1425. + " FROM TP_HR_Staff Staff "
  1426. + " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = Staff.Jobs "
  1427. + " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Staff.Organizationid "
  1428. + " LEFT JOIN TP_MST_UserStaff TUserStaff on TUserStaff.StaffID = Staff.StaffID "
  1429. + " LEFT JOIN TP_MST_User TUser on TUserStaff.Userid = TUser.Userid"
  1430. + " LEFT JOIN TP_MST_Jobs TUserJobs on TUserJobs.Jobsid = TUserStaff.Ujobsid"
  1431. + " WHERE Staff.Accountid = :accountID "
  1432. + " AND TUser.Userid = :userId"
  1433. + " AND Staff.Staffstatus in(1,2)";
  1434. OracleParameter[] paras = new OracleParameter[]{
  1435. new OracleParameter(":accountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  1436. new OracleParameter(":userId", OracleDbType.Int32, userId, ParameterDirection.Input),
  1437. };
  1438. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  1439. return ds;
  1440. }
  1441. catch (Exception ex)
  1442. {
  1443. throw ex;
  1444. }
  1445. finally
  1446. {
  1447. if (con.ConnState == ConnectionState.Open)
  1448. {
  1449. con.Close();
  1450. }
  1451. }
  1452. }
  1453. /// <summary>
  1454. /// 添加废弃产品记录
  1455. /// </summary>
  1456. /// <param name="SProductEntity">废弃产品实体</param>
  1457. /// <param name="RProcedureEntity">废弃责任工序实体</param>
  1458. /// <param name="SResponsibleList">责任者集合</param>
  1459. /// <param name="userInfo">用户基本信息</param>
  1460. /// <returns>int结果返回值</returns>
  1461. /// <remarks>
  1462. /// 庄天威 2014.09.24 新建
  1463. /// </remarks>
  1464. public static int AddScrapProduct(ScrapProductEntity SProductEntity,
  1465. ResponProcedureEntity RProcedureEntity,
  1466. ScrapResponsibleEntity[] SResponsibleList, SUserInfo userInfo)
  1467. {
  1468. int ll = 0;
  1469. int returnRows = 0;
  1470. int sresponsibleReturnRows = 0;
  1471. int rprocedureReturn = 0;
  1472. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1473. try
  1474. {
  1475. oracleTrConn.Connect();
  1476. //#region 判断产品是否被挂起
  1477. //string sqlString = "SELECT 1 AS RES\n" +
  1478. // " FROM TP_PM_PRODUCTSUSPEND PS\n" +
  1479. // " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  1480. // " ON GDD.GROUTINGDAILYDETAILID = PS.GROUTINGDAILYDETAILID\n" +
  1481. // " WHERE GDD.BARCODE = :Barcode";
  1482. //OracleParameter[] pars = new OracleParameter[]
  1483. //{
  1484. // new OracleParameter(":Barcode",OracleDbType.NVarchar2, SProductEntity.BarCode,ParameterDirection.Input),
  1485. //};
  1486. //object objResult = oracleTrConn.GetSqlResultToObj(sqlString, pars);
  1487. //if (objResult != null)
  1488. //{
  1489. // return Constant.INT_IS_NEGATIE_ONE;
  1490. //}
  1491. //#endregion
  1492. object result = DBNull.Value;
  1493. ll = 1;
  1494. if (SProductEntity.AuditStatus != 0)
  1495. {
  1496. ll = 2;
  1497. //string strSql1 = "select FUN_CMN_GetAccountDate(:accountId) From DUAL";
  1498. string strSql1 = "select sysdate from dual";
  1499. // Oracle.ManagedDataAccess.Client.OracleParameter[] paras1 = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  1500. //{
  1501. // new Oracle.ManagedDataAccess.Client.OracleParameter(":accountId",userInfo.AccountID)
  1502. //};
  1503. object strResult = oracleTrConn.GetSqlResultToObj(strSql1);
  1504. if (strResult == null || strResult == DBNull.Value)
  1505. {
  1506. // 服务器时间错误
  1507. throw new Exception("SystemDateTimeError");
  1508. }
  1509. result = Convert.ToDateTime(strResult);
  1510. }
  1511. ll = 3;
  1512. // wangx 20156/01/13
  1513. int? ProductionDataID = null;
  1514. int? completeProcdureID = null;
  1515. string completeProcdureName = string.Empty;
  1516. string completeProcdureCode = string.Empty;
  1517. //string sqlProductionDataID = @"select tp_pm_inproduction.productiondataid,
  1518. // tp_pc_procedure.procedureid,
  1519. // tp_pc_procedure.procedurename,
  1520. // tp_pc_procedure.procedurecode
  1521. // from tp_pm_inproduction
  1522. // left join tp_pc_procedure
  1523. // on tp_pm_inproduction.procedureid=tp_pc_procedure.procedureid
  1524. // where tp_pm_inproduction.barcode = :barcode
  1525. // union
  1526. // select tp_pm_inproductiontrash.productiondataid,
  1527. // tp_pc_procedure.procedureid,
  1528. // tp_pc_procedure.procedurename,
  1529. // tp_pc_procedure.procedurecode
  1530. // from tp_pm_inproductiontrash
  1531. // left join tp_pc_procedure
  1532. // on tp_pm_inproductiontrash.procedureid=tp_pc_procedure.procedureid
  1533. // where tp_pm_inproductiontrash.barcode = :barcode
  1534. // ";
  1535. string sqlProductionDataID = @"select tp_pm_inproduction.productiondataid,
  1536. tp_pc_procedure.procedureid,
  1537. tp_pc_procedure.procedurename,
  1538. tp_pc_procedure.procedurecode, tp_pm_inproduction.InScrapFlag
  1539. from tp_pm_inproduction
  1540. left join tp_pc_procedure
  1541. on tp_pm_inproduction.procedureid=tp_pc_procedure.procedureid
  1542. where tp_pm_inproduction.barcode = :barcode
  1543. for update";
  1544. OracleParameter[] ParasProductionDataID = new OracleParameter[] {
  1545. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1546. SProductEntity.BarCode,ParameterDirection.Input),
  1547. };
  1548. ll = 4;
  1549. DataSet dsProductionDataID = oracleTrConn.GetSqlResultToDs(sqlProductionDataID, ParasProductionDataID);
  1550. if (dsProductionDataID != null && dsProductionDataID.Tables[0].Rows.Count > 0)
  1551. {
  1552. ProductionDataID = Convert.ToInt32(dsProductionDataID.Tables[0].Rows[0]["productiondataid"]);
  1553. completeProcdureID = Convert.ToInt32(dsProductionDataID.Tables[0].Rows[0]["procedureid"]);
  1554. completeProcdureName = dsProductionDataID.Tables[0].Rows[0]["procedurename"].ToString();
  1555. completeProcdureCode = dsProductionDataID.Tables[0].Rows[0]["procedurecode"].ToString();
  1556. string InScrapFlag = dsProductionDataID.Tables[0].Rows[0]["InScrapFlag"].ToString();
  1557. if (InScrapFlag == "1")
  1558. {
  1559. return Constant.RETURN_IS_DATACHANGED;
  1560. }
  1561. }
  1562. else
  1563. {
  1564. return Constant.RETURN_IS_DATACHANGED;
  1565. }
  1566. // end
  1567. ll = 5;
  1568. // 如果完成工序ID发生变化,则返回提示;
  1569. if (completeProcdureID != SProductEntity.ProcedureID)
  1570. {
  1571. return Constant.RETURN_IS_DATACHANGED;
  1572. }
  1573. //首先添加废弃产品主体信息
  1574. StringBuilder sbSql = new StringBuilder();
  1575. //获取序列ID
  1576. sbSql.Clear();
  1577. sbSql.Append("select SEQ_PM_ScrapProduct_ID.nextval from dual");
  1578. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1579. sbSql.Clear();
  1580. sbSql.Append("Insert into TP_PM_ScrapProduct");
  1581. sbSql.Append("(ScrapProductID,Barcode,ProductionLineID,ProductionLineCode,ProductionLineName,");
  1582. sbSql.Append("GoodsID,GoodsCode,GoodsName,GroutingDailyID,GroutingDailyDetailID,");
  1583. sbSql.Append("GroutingDate,GroutingLineID,GroutingLineCode,GroutingLineName,");
  1584. sbSql.Append("GMouldTypeID,GroutingLineDetailID,GroutingMouldCode,MouldCode,");
  1585. sbSql.Append("GoodsLevelID,GoodsLevelTypeID,ResponType,ScrapDate,Rreason,");
  1586. sbSql.Append("Remarks,AuditStatus,");
  1587. sbSql.Append("SettlementFlag,AccountID,ValueFlag,CreateTime,CreateUserID,");
  1588. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,GroutingUserID,GroutingUserCode,GroutingNum,IsPublicBody,IsReFire,ScrapFine,Auditor,AuditDate,SpecialRepairflag,Procedureid,ProcedureName,ProcedureCode,logoid,ProductionDataID)");
  1589. sbSql.Append("values(:ScrapProductID,:Barcode,:ProductionLineID,:ProductionLineCode,:ProductionLineName,");
  1590. sbSql.Append(":GoodsID,:GoodsCode,:GoodsName,:GroutingDailyID,:GroutingDailyDetailID,");
  1591. sbSql.Append(":GroutingDate,:GroutingLineID,:GroutingLineCode,:GroutingLineName,");
  1592. sbSql.Append(":GMouldTypeID,:GroutingLineDetailID,:GroutingMouldCode,:MouldCode,");
  1593. sbSql.Append(":GoodsLevelID,:GoodsLevelTypeID,:ResponType,:ScrapDate,:Rreason,");
  1594. sbSql.Append(":Remarks,:AuditStatus,");
  1595. sbSql.Append("0,:AccountID,1,sysdate,:CreateUserID,");
  1596. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:GroutingUserID,:GroutingUserCode,:GroutingNum,:IsPublicBody,:IsReFire,:ScrapFine,:Auditor,:AuditlDate,:SpecialRepairflag,:Procedureid,:ProcedureName,:ProcedureCode,:logoid,:ProductionDataID)");
  1597. OracleParameter[] Paras = new OracleParameter[] {
  1598. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1599. id,ParameterDirection.Input),
  1600. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1601. SProductEntity.BarCode,ParameterDirection.Input),
  1602. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  1603. SProductEntity.ProductionLineID,ParameterDirection.Input),
  1604. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  1605. SProductEntity.ProductionLineCode,ParameterDirection.Input),
  1606. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  1607. SProductEntity.ProductionLineName,ParameterDirection.Input),
  1608. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1609. SProductEntity.GoodsID,ParameterDirection.Input),
  1610. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2,
  1611. SProductEntity.GoodsCode,ParameterDirection.Input),
  1612. new OracleParameter(":GoodsName",OracleDbType.NVarchar2,
  1613. SProductEntity.GoodsName,ParameterDirection.Input),
  1614. new OracleParameter(":GroutingDailyID",OracleDbType.Int32,
  1615. SProductEntity.GroutingDailyID,ParameterDirection.Input),
  1616. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  1617. SProductEntity.GroutingDailyDetailID,ParameterDirection.Input),
  1618. new OracleParameter(":GroutingDate",OracleDbType.Date,
  1619. Convert.ToDateTime(SProductEntity.GroutingDatePDA),ParameterDirection.Input),
  1620. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1621. SProductEntity.GroutingLineID,ParameterDirection.Input),
  1622. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  1623. SProductEntity.GroutingLineCode,ParameterDirection.Input),
  1624. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  1625. SProductEntity.GroutingLineName,ParameterDirection.Input),
  1626. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  1627. SProductEntity.GMouldTypeID,ParameterDirection.Input),
  1628. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1629. SProductEntity.GroutingLineDetailID,ParameterDirection.Input),
  1630. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1631. SProductEntity.GroutingMouldCode,ParameterDirection.Input),
  1632. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1633. SProductEntity.MouldCode,ParameterDirection.Input),
  1634. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1635. SProductEntity.GoodsLevelID,ParameterDirection.Input),
  1636. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1637. SProductEntity.GoodsLevelTypeID,ParameterDirection.Input),
  1638. new OracleParameter(":ResponType",OracleDbType.Int32,
  1639. Convert.ToInt32(SProductEntity.ResponType),ParameterDirection.Input),
  1640. new OracleParameter(":ScrapDate",OracleDbType.Date,
  1641. Convert.ToDateTime(SProductEntity.ScrapDatePDA),ParameterDirection.Input),
  1642. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1643. SProductEntity.Rreason,ParameterDirection.Input),
  1644. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1645. SProductEntity.Remarks,ParameterDirection.Input),
  1646. new OracleParameter(":AuditStatus",OracleDbType.Int32,
  1647. SProductEntity.AuditStatus,ParameterDirection.Input),
  1648. new OracleParameter(":AccountID",OracleDbType.Int32,
  1649. userInfo.AccountID,ParameterDirection.Input),
  1650. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1651. userInfo.UserID,ParameterDirection.Input),
  1652. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1653. userInfo.UserID,ParameterDirection.Input),
  1654. new OracleParameter(":GroutingUserID",OracleDbType.Int32,
  1655. SProductEntity.GroutingUserID,ParameterDirection.Input),
  1656. new OracleParameter(":GroutingUserCode",OracleDbType.NVarchar2,
  1657. SProductEntity.GroutingUserCode,ParameterDirection.Input),
  1658. new OracleParameter(":GroutingNum",OracleDbType.Decimal,
  1659. SProductEntity.GroutingNum,ParameterDirection.Input),
  1660. new OracleParameter(":IsPublicBody",OracleDbType.Int32,
  1661. SProductEntity.IsPublicBody,ParameterDirection.Input),
  1662. new OracleParameter(":IsReFire",OracleDbType.Int32,
  1663. SProductEntity.IsReFire,ParameterDirection.Input),
  1664. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  1665. SProductEntity.ScrapFine,ParameterDirection.Input),
  1666. new OracleParameter(":Auditor",OracleDbType.Int32,
  1667. userInfo.UserID,ParameterDirection.Input),
  1668. new OracleParameter(":AuditlDate",OracleDbType.Date,
  1669. result,ParameterDirection.Input),
  1670. new OracleParameter(":SpecialRepairflag",OracleDbType.Int32,
  1671. SProductEntity.SpecialRepairflag==null?0:SProductEntity.SpecialRepairflag,ParameterDirection.Input),//SpecialRepairflag
  1672. new OracleParameter(":Procedureid",OracleDbType.Int32,
  1673. completeProcdureID,ParameterDirection.Input),
  1674. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  1675. completeProcdureName,ParameterDirection.Input),
  1676. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  1677. completeProcdureCode,ParameterDirection.Input),
  1678. new OracleParameter(":logoid",OracleDbType.Int32,
  1679. SProductEntity.LogoID==0?null:SProductEntity.LogoID,ParameterDirection.Input),
  1680. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  1681. ProductionDataID,ParameterDirection.Input),
  1682. };
  1683. ll = 6;
  1684. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1685. ll = 7;
  1686. //如果是直接审批通过 wangxin 2015-03-24
  1687. if (SProductEntity.AuditStatus == 1)
  1688. {
  1689. ll = 8;
  1690. int DeleteRows = 0;
  1691. string sqlInsert = @"insert into TP_PM_InProductionTrash
  1692. (
  1693. BarCode,
  1694. ProductionLineID,
  1695. ProductionLineCode,
  1696. ProductionLineName,
  1697. ProcedureModel,
  1698. ModelType,
  1699. DefectFlag,
  1700. ReworkProcedureID,
  1701. IsPublicBody,
  1702. IsReFire,
  1703. GoodsLevelID,
  1704. GoodsLevelTypeID,
  1705. GoodsID,
  1706. GoodsCode,
  1707. GoodsName,
  1708. UserID,
  1709. GroutingDailyID,
  1710. GroutingDailyDetailID,
  1711. GroutingDate,
  1712. GroutingLineID,
  1713. GroutingLineCode,
  1714. GroutingLineName,
  1715. GMouldTypeID,
  1716. CanManyTimes,
  1717. GroutingLineDetailID,
  1718. GroutingMouldCode,
  1719. MouldCode,
  1720. GroutingUserID,
  1721. GroutingUserCode,
  1722. GroutingNum,
  1723. Remarks,
  1724. KilnID,
  1725. KilnCode,
  1726. KilnName,
  1727. KilnCarID,
  1728. KilnCarCode,
  1729. KilnCarName,
  1730. KilnCarBatchNo,
  1731. KilnCarPosition,
  1732. AccountID,
  1733. ValueFlag,
  1734. CreateUserID,
  1735. UpdateUserID,
  1736. SpecialRepairflag,
  1737. FlowProcedureID,
  1738. FlowProcedureTime,
  1739. ProcedureID,
  1740. ProcedureTime,
  1741. ProductionDataID,
  1742. logoid, ISREWORKFLAG, SEMICHECKID
  1743. )
  1744. select
  1745. BarCode,
  1746. ProductionLineID,
  1747. ProductionLineCode,
  1748. ProductionLineName,
  1749. ProcedureModel,
  1750. ModelType,
  1751. DefectFlag,
  1752. ReworkProcedureID,
  1753. IsPublicBody,
  1754. IsReFire,
  1755. :GoodsLevelID,
  1756. :GoodsLevelTypeID,
  1757. GoodsID,
  1758. GoodsCode,
  1759. GoodsName,
  1760. UserID,
  1761. GroutingDailyID,
  1762. GroutingDailyDetailID,
  1763. GroutingDate,
  1764. GroutingLineID,
  1765. GroutingLineCode,
  1766. GroutingLineName,
  1767. GMouldTypeID,
  1768. CanManyTimes,
  1769. GroutingLineDetailID,
  1770. GroutingMouldCode,
  1771. MouldCode,
  1772. GroutingUserID,
  1773. GroutingUserCode,
  1774. GroutingNum,
  1775. Remarks,
  1776. KilnID,
  1777. KilnCode,
  1778. KilnName,
  1779. KilnCarID,
  1780. KilnCarCode,
  1781. KilnCarName,
  1782. KilnCarBatchNo,
  1783. KilnCarPosition,
  1784. AccountID,
  1785. ValueFlag,
  1786. :CreateUserID,
  1787. :UpdateUserID,
  1788. SpecialRepairflag,
  1789. FlowProcedureID,
  1790. FlowProcedureTime,
  1791. ProcedureID,
  1792. ProcedureTime,
  1793. ProductionDataID,
  1794. logoid, ISREWORKFLAG, SEMICHECKID
  1795. from TP_PM_InProduction
  1796. where barcode='" + SProductEntity.BarCode + "'";
  1797. OracleParameter[] Paras2 = new OracleParameter[] {
  1798. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1799. userInfo.UserID,ParameterDirection.Input),
  1800. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1801. userInfo.UserID,ParameterDirection.Input),
  1802. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1803. SProductEntity.GoodsLevelID,ParameterDirection.Input),
  1804. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1805. SProductEntity.GoodsLevelTypeID,ParameterDirection.Input)
  1806. };
  1807. ll = 9;
  1808. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras2);
  1809. //20150714 modify wangx
  1810. ll = 10;
  1811. if (SProductEntity.ProcedureID != null)//在生产线上报废的,
  1812. {
  1813. sbSql.Clear();
  1814. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + SProductEntity.BarCode + "'");
  1815. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1816. }
  1817. //20150714 modify wangx end
  1818. ll = 11;
  1819. sbSql.Clear();
  1820. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + SProductEntity.BarCode + "'");
  1821. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1822. //如果没有删除在产产品,那么要去删除成品表
  1823. if (DeleteRows == 0)
  1824. {
  1825. sbSql.Clear();
  1826. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + SProductEntity.BarCode + "'");
  1827. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1828. }
  1829. //并且要把该产品的生产数据的最终状态添加上
  1830. //sbSql.Clear();
  1831. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + SProductEntity.BarCode + "'");
  1832. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1833. }
  1834. else
  1835. {
  1836. ll = 12;
  1837. if (SProductEntity.ProcedureID != null)//在生产线上报废的,
  1838. {
  1839. sbSql.Clear();
  1840. if (SProductEntity.AuditStatus == 0) //待审核
  1841. {
  1842. sbSql.Append("update TP_PM_InProduction set inscrapflag='1' where BarCode='" + SProductEntity.BarCode + "'");
  1843. }
  1844. else
  1845. {
  1846. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + SProductEntity.BarCode + "'");
  1847. }
  1848. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1849. }
  1850. }
  1851. ll = 13;
  1852. //判断一下责任类型,如果是责任工序的话,则添加责任工序信息
  1853. if (Convert.ToInt32(SProductEntity.ResponType) == 3)
  1854. {
  1855. //插入产品废弃责任工序
  1856. sbSql.Clear();
  1857. sbSql.Append("select SEQ_PM_ResponProcedure_ID.nextval from dual");
  1858. RProcedureEntity.ResponProcedureID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1859. sbSql.Clear();
  1860. sbSql.Append("Insert into TP_PM_ResponProcedure");
  1861. sbSql.Append("(ResponProcedureID,ScrapProductID,Barcode,ProductionDataID,ProductionLineID,");
  1862. sbSql.Append("ProductionLineCode,ProductionLineName,");
  1863. sbSql.Append("ProcedureID,ProcedureCode,ProcedureName,UserID,UserCode,UserName,Remarks,AccountID,");
  1864. sbSql.Append("ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  1865. sbSql.Append("Values(:ResponProcedureID,:ScrapProductID,:Barcode,:ProductionDataID,:ProductionLineID,");
  1866. sbSql.Append(":ProductionLineCode,:ProductionLineName,");
  1867. sbSql.Append(":ProcedureID,:ProcedureCode,:ProcedureName,:UserID,:UserCode,:UserName,:Remarks,");
  1868. sbSql.Append(":AccountID,1,sysdate,:CreateUserID,sysdate,:UpdateUserID,systimestamp)");
  1869. OracleParameter[] RPParas = new OracleParameter[]
  1870. {
  1871. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  1872. RProcedureEntity.ResponProcedureID,ParameterDirection.Input),
  1873. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1874. id,ParameterDirection.Input),
  1875. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1876. RProcedureEntity.BarCode,ParameterDirection.Input),
  1877. new OracleParameter(":ProductionDataID",OracleDbType.NVarchar2,
  1878. RProcedureEntity.ProductionDataID,ParameterDirection.Input),
  1879. new OracleParameter(":ProductionLineID",OracleDbType.NVarchar2,
  1880. RProcedureEntity.ProductionLineID,ParameterDirection.Input),
  1881. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  1882. RProcedureEntity.ProductionLineCode,ParameterDirection.Input),
  1883. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  1884. RProcedureEntity.ProductionLineName,ParameterDirection.Input),
  1885. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  1886. RProcedureEntity.ProcedureID,ParameterDirection.Input),
  1887. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  1888. RProcedureEntity.ProcedureCode,ParameterDirection.Input),
  1889. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  1890. RProcedureEntity.ProcedureName,ParameterDirection.Input),
  1891. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  1892. RProcedureEntity.UserID,ParameterDirection.Input),
  1893. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  1894. RProcedureEntity.UserCode,ParameterDirection.Input),
  1895. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  1896. RProcedureEntity.UserName,ParameterDirection.Input),
  1897. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1898. RProcedureEntity.Remarks,ParameterDirection.Input),
  1899. new OracleParameter(":AccountID",OracleDbType.NVarchar2,
  1900. userInfo.AccountID,ParameterDirection.Input),
  1901. new OracleParameter(":CreateUserID",OracleDbType.NVarchar2,
  1902. userInfo.UserID,ParameterDirection.Input),
  1903. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  1904. userInfo.UserID,ParameterDirection.Input)
  1905. };
  1906. ll = 14;
  1907. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  1908. #region 更新废弃责任工序的生产工序ID
  1909. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  1910. " SET (SP.RESPONPROCEDUREPROCEDUREID) =\n" +
  1911. " (SELECT RP.PROCEDUREID\n" +
  1912. " FROM TP_PM_RESPONPROCEDURE RP\n" +
  1913. " WHERE RP.SCRAPPRODUCTID = SP.SCRAPPRODUCTID)\n" +
  1914. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  1915. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  1916. RPParas = new OracleParameter[]
  1917. {
  1918. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,id,ParameterDirection.Input),
  1919. };
  1920. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, RPParas);
  1921. #endregion
  1922. }
  1923. ll = 15;
  1924. if (Convert.ToInt32(SProductEntity.ResponType) != 1)
  1925. {
  1926. //计算每个责任人的报废扣罚
  1927. decimal scrapfine = 0;
  1928. if (SResponsibleList.Length > 0)
  1929. {
  1930. scrapfine = SProductEntity.ScrapFine / SResponsibleList.Length;
  1931. }
  1932. //循环插入产品废弃责任者
  1933. OracleParameter[] SPParas;
  1934. foreach (ScrapResponsibleEntity spFor in SResponsibleList)
  1935. {
  1936. sbSql.Clear();
  1937. sbSql.Append("select SEQ_PM_ScrapResponsible_ID.nextval from dual");
  1938. spFor.ResponsibleID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1939. int? ResponProcedureID = null;
  1940. if (RProcedureEntity != null)
  1941. {
  1942. ResponProcedureID = RProcedureEntity.ResponProcedureID;
  1943. }
  1944. sbSql.Clear();
  1945. sbSql.Append("Insert into TP_PM_ScrapResponsible");
  1946. sbSql.Append("(ResponsibleID,ScrapProductID,ResponType,ResponProcedureID,Barcode,StaffID,UserID,UserCode,UJobsID,SJobsID,");
  1947. sbSql.Append("StaffStatus,AccountID,CreateTime,CreateUserID,");
  1948. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,Scrapfine)");
  1949. sbSql.Append("values(:ResponsibleID,:ScrapProductID,:ResponType,:ResponProcedureID,:Barcode,:StaffID,:UserID,:UserCode,:UJobsID,:SJobsID,");
  1950. sbSql.Append(":StaffStatus,:AccountID,sysdate,:CreateUserID,");
  1951. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:Scrapfine)");
  1952. SPParas = new OracleParameter[]
  1953. {
  1954. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  1955. spFor.ResponsibleID,ParameterDirection.Input),
  1956. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1957. id,ParameterDirection.Input),
  1958. new OracleParameter(":ResponType",OracleDbType.Int32,
  1959. Convert.ToInt32(SProductEntity.ResponType),ParameterDirection.Input),
  1960. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  1961. ResponProcedureID,ParameterDirection.Input),
  1962. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1963. spFor.BarCode,ParameterDirection.Input),
  1964. new OracleParameter(":StaffID",OracleDbType.Int32,
  1965. spFor.StaffID,ParameterDirection.Input),
  1966. new OracleParameter(":UserID",OracleDbType.Int32,
  1967. spFor.UserID,ParameterDirection.Input),
  1968. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  1969. spFor.UserCode,ParameterDirection.Input),
  1970. new OracleParameter(":UJobsID",OracleDbType.Int32,
  1971. spFor.UJobsID,ParameterDirection.Input),
  1972. new OracleParameter(":SJobsID",OracleDbType.Int32,
  1973. spFor.SJobsID,ParameterDirection.Input),
  1974. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  1975. spFor.StaffStatus,ParameterDirection.Input),
  1976. new OracleParameter(":AccountID",OracleDbType.Int32,
  1977. userInfo.AccountID,ParameterDirection.Input),
  1978. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1979. userInfo.UserID,ParameterDirection.Input),
  1980. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1981. userInfo.UserID,ParameterDirection.Input),
  1982. new OracleParameter(":Scrapfine",OracleDbType.Decimal,
  1983. scrapfine,ParameterDirection.Input)
  1984. };
  1985. sresponsibleReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  1986. }
  1987. #region 更新废弃责任工序的责任者ID和编码
  1988. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  1989. " SET (SP.RESPONSIBLEUSERID, SP.RESPONSIBLEUSERCODE) =\n" +
  1990. " (SELECT SR.USERID, SR.USERCODE\n" +
  1991. " FROM TP_PM_SCRAPRESPONSIBLE SR\n" +
  1992. " WHERE SR.SCRAPPRODUCTID = SP.SCRAPPRODUCTID\n" +
  1993. " GROUP BY SR.USERID, SR.USERCODE)\n" +
  1994. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  1995. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  1996. SPParas = new OracleParameter[]
  1997. {
  1998. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,id,ParameterDirection.Input),
  1999. };
  2000. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, SPParas);
  2001. #endregion
  2002. }
  2003. ll = 16;
  2004. if (returnRows == 0)
  2005. {
  2006. oracleTrConn.Rollback();
  2007. oracleTrConn.Disconnect();
  2008. }
  2009. else
  2010. {
  2011. oracleTrConn.Commit();
  2012. oracleTrConn.Disconnect();
  2013. }
  2014. }
  2015. catch (Exception ex)
  2016. {
  2017. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2018. {
  2019. oracleTrConn.Rollback();
  2020. oracleTrConn.Disconnect();
  2021. }
  2022. throw new Exception(ll.ToString(), ex);
  2023. }
  2024. finally
  2025. {
  2026. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2027. {
  2028. oracleTrConn.Disconnect();
  2029. }
  2030. }
  2031. return returnRows;
  2032. }
  2033. /// <summary>
  2034. /// 获取登陆帐户有无报损权限
  2035. /// </summary>
  2036. /// <param name="usercode">工号编码</param>
  2037. /// <returns></returns>
  2038. public static int GetScrapFuntion(string usercode, SUserInfo userInfo)
  2039. {
  2040. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2041. try
  2042. {
  2043. con.Open();
  2044. string strSql = "";
  2045. if (usercode.ToUpper() == "SYSTEM")
  2046. {
  2047. strSql = @"SELECT Functionlevel,
  2048. FunctionCode,
  2049. FunctionName,
  2050. FullName,
  2051. FunctionFlag,
  2052. FunctionButtonFlag,
  2053. FormName,
  2054. ButtonName
  2055. FROM TP_SYS_Function
  2056. WHERE ValueFlag = 1
  2057. AND FunctionCode = '01'
  2058. OR FunctionCode = '0101'
  2059. OR FunctionCode = '010101'";
  2060. }
  2061. else if (usercode.ToUpper() == "ADMIN")
  2062. {
  2063. strSql = @" SELECT Functionlevel,
  2064. FunctionCode,
  2065. FunctionName,
  2066. FullName,
  2067. FunctionFlag,
  2068. FunctionButtonFlag,
  2069. FormName,
  2070. ButtonName
  2071. FROM TP_SYS_Function WHERE ValueFlag = 1
  2072. AND FunctionCode LIKE '01%'
  2073. AND FunctionCode <> '0101'
  2074. AND FunctionCode <> '010101'";
  2075. }
  2076. else
  2077. {
  2078. strSql = @"SELECT F.Functionlevel,
  2079. F.FunctionCode,
  2080. F.FunctionName,
  2081. F.FullName,
  2082. F.FunctionFlag,
  2083. F.FunctionButtonFlag,
  2084. F.FormName,
  2085. F.ButtonName
  2086. FROM TP_MST_UserRight R LEFT OUTER JOIN
  2087. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  2088. WHERE F.ValueFlag = 1
  2089. AND F.FunctionCode NOT LIKE '0101%'
  2090. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '060401') = 1";
  2091. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  2092. }
  2093. DataSet ds = con.GetSqlResultToDs(strSql);
  2094. if (ds != null && ds.Tables[0].Rows.Count > 0)
  2095. {
  2096. return 1;
  2097. }
  2098. return 0;
  2099. }
  2100. catch (Exception ex)
  2101. {
  2102. throw ex;
  2103. }
  2104. finally
  2105. {
  2106. if (con.ConnState == ConnectionState.Open)
  2107. {
  2108. con.Close();
  2109. }
  2110. }
  2111. }
  2112. /// <summary>
  2113. /// 获取是否存在报损未审核产品
  2114. /// </summary>
  2115. /// <param name="BarCode">产品条码</param>
  2116. /// <returns>int</returns>
  2117. public static int GetScrapProductAuditStatus(string BarCode)
  2118. {
  2119. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2120. try
  2121. {
  2122. con.Open();
  2123. // wangx modify 2015/07/14
  2124. string strSql = "select inscrapflag from TP_PM_INPRODUCTION where barcode='" + BarCode + "'";
  2125. DataSet dsReturn = con.GetSqlResultToDs(strSql);
  2126. if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0)
  2127. {
  2128. if (dsReturn.Tables[0].Rows[0]["inscrapflag"].ToString() == "0")
  2129. {
  2130. return 0;
  2131. }
  2132. else
  2133. {
  2134. strSql = @"Select ScrapProductID from TP_PM_ScrapProduct where ValueFlag=1
  2135. and BarCode='" + BarCode + "' and (AuditStatus=0 or AuditStatus=2) order by ScrapProductid desc "; //AuditStatus=0 or
  2136. dsReturn = con.GetSqlResultToDs(strSql);
  2137. if (dsReturn.Tables[0].Rows.Count == 0)
  2138. {
  2139. return 0;
  2140. }
  2141. else
  2142. {
  2143. return Convert.ToInt32(dsReturn.Tables[0].Rows[0]["ScrapProductID"]);
  2144. }
  2145. }
  2146. }
  2147. else
  2148. {
  2149. return 0;
  2150. }
  2151. // wangx modify 2015/07/14 end
  2152. //string strSql = @"Select * from TP_PM_ScrapProduct where ValueFlag=1
  2153. // strSql = @"Select ScrapProductID from TP_PM_ScrapProduct where ValueFlag=1
  2154. // and BarCode='" + BarCode + "' and (AuditStatus=0 or AuditStatus=2) order by ScrapProductid desc "; //AuditStatus=0 or
  2155. // dsReturn = con.GetSqlResultToDs(strSql);
  2156. // if (dsReturn.Tables[0].Rows.Count == 0)
  2157. // {
  2158. // return 0;
  2159. // }
  2160. // else
  2161. // {
  2162. // return Convert.ToInt32(dsReturn.Tables[0].Rows[0]["ScrapProductID"]);
  2163. // }
  2164. }
  2165. catch (Exception ex)
  2166. {
  2167. throw ex;
  2168. }
  2169. finally
  2170. {
  2171. if (con.ConnState == ConnectionState.Open)
  2172. {
  2173. con.Close();
  2174. }
  2175. }
  2176. }
  2177. /// <summary>
  2178. /// 获取产品报损明细
  2179. /// </summary>
  2180. /// <param name="usercode">工号编码</param>
  2181. /// <returns></returns>
  2182. public static DataSet GetScrapProductInfo(string usercode, SUserInfo userInfo)
  2183. {
  2184. return null;
  2185. }
  2186. #endregion
  2187. /// <summary>
  2188. /// 修改废弃产品记录
  2189. /// </summary>
  2190. /// <param name="UpdateSProductEntity">修改的废弃产品实体</param>
  2191. /// <param name="UpdateRProcedureEntity">修改的废弃责任工序实体</param>
  2192. /// <param name="UpdateSResponsibleList">修改的废弃责任人实体</param>
  2193. /// <param name="YSResponsibleList">修改前的废弃责任人实体</param>
  2194. /// <param name="userInfo">用户基本信息</param>
  2195. /// <returns>int结果返回值</returns>
  2196. /// <remarks>
  2197. /// 庄天威 2014.09.24 新建
  2198. /// </remarks>
  2199. public static int UpdateScrapProduct(ScrapProductEntity UpdateSProductEntity,
  2200. ResponProcedureEntity UpdateRProcedureEntity,
  2201. ScrapResponsibleEntity[] UpdateSResponsibleList, ScrapResponsibleEntity[] YSResponsibleList,
  2202. SUserInfo userInfo)
  2203. {
  2204. int returnRows = 0;
  2205. int sresponsibleReturnRows = 0;
  2206. int rprocedureReturn = 0;
  2207. int deleteRprocedureReturn = 0;
  2208. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2209. try
  2210. {
  2211. oracleTrConn.Connect();
  2212. //首先修改废弃产品主体信息
  2213. StringBuilder sbSql = new StringBuilder();
  2214. sbSql.Append("update TP_PM_ScrapProduct");
  2215. sbSql.Append(" set ScrapDate=to_date(:ScrapDate,'yyyy-mm-dd hh24:mi:ss'),");
  2216. sbSql.Append(" Rreason=:Rreason,");
  2217. sbSql.Append(" Remarks=:Remarks,");
  2218. sbSql.Append(" ResponType=:ResponType,");
  2219. sbSql.Append(" UpdateUserID=:UpdateUserID,");
  2220. sbSql.Append(" ScrapFine=:ScrapFine");
  2221. if (UpdateSProductEntity.AuditStatus != null)
  2222. {
  2223. sbSql.Append(" ,AuditStatus=" + UpdateSProductEntity.AuditStatus);
  2224. }
  2225. if (UpdateSProductEntity.AuditStatus == 0) //待审批
  2226. {
  2227. sbSql.Append(" ,AuditDate=null,Auditor=null");
  2228. }
  2229. else
  2230. {
  2231. //2021年12月6日10:58:08 by fy modify 取系统时间
  2232. //object result = DBNull.Value;
  2233. //string strSql1 = "select FUN_CMN_GetAccountDate(:accountId) From DUAL";
  2234. //Oracle.ManagedDataAccess.Client.OracleParameter[] paras1 = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  2235. //{
  2236. // new Oracle.ManagedDataAccess.Client.OracleParameter(":accountId",userInfo.AccountID)
  2237. //};
  2238. //object strResult = oracleTrConn.GetSqlResultToObj(strSql1, paras1);
  2239. //if (strResult == null || strResult == DBNull.Value)
  2240. //{
  2241. // // 服务器时间错误
  2242. // throw new Exception("SystemDateTimeError");
  2243. //}
  2244. //result = Convert.ToDateTime(strResult);
  2245. //sbSql.Append(string.Format(" ,AuditDate=to_date('{0}','yyyy-mm-dd hh24:mi:ss'),Auditor={1}", result.ToString().Replace("/", "-"), userInfo.UserID));
  2246. sbSql.Append(string.Format(" ,AuditDate=sysdate,Auditor={0},accountdate=trunc(sysdate)", userInfo.UserID));
  2247. }
  2248. sbSql.Append(" where ScrapProductID=:ScrapProductID");
  2249. OracleParameter[] Paras = new OracleParameter[] {
  2250. new OracleParameter(":ScrapDate",OracleDbType.NVarchar2,
  2251. UpdateSProductEntity.ScrapDatePDA.ToString(),ParameterDirection.Input),
  2252. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  2253. UpdateSProductEntity.Rreason,ParameterDirection.Input),
  2254. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2255. UpdateSProductEntity.Remarks,ParameterDirection.Input),
  2256. new OracleParameter(":ResponType",OracleDbType.Int32,
  2257. UpdateSProductEntity.ResponType,ParameterDirection.Input),
  2258. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2259. userInfo.UserID,ParameterDirection.Input),
  2260. new OracleParameter(":ScrapProductID",OracleDbType.NVarchar2,
  2261. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2262. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  2263. UpdateSProductEntity.ScrapFine,ParameterDirection.Input)
  2264. };
  2265. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  2266. //如果是直接审批通过 wangxin 2015-03-24
  2267. if (UpdateSProductEntity.AuditStatus == 1)
  2268. {
  2269. int DeleteRows = 0;
  2270. string sqlInsert = @"insert into TP_PM_InProductionTrash
  2271. (
  2272. BarCode,
  2273. ProductionLineID,
  2274. ProductionLineCode,
  2275. ProductionLineName,
  2276. ProcedureModel,
  2277. ModelType,
  2278. DefectFlag,
  2279. ReworkProcedureID,
  2280. IsPublicBody,
  2281. IsReFire,
  2282. GoodsLevelID,
  2283. GoodsLevelTypeID,
  2284. GoodsID,
  2285. GoodsCode,
  2286. GoodsName,
  2287. UserID,
  2288. GroutingDailyID,
  2289. GroutingDailyDetailID,
  2290. GroutingDate,
  2291. GroutingLineID,
  2292. GroutingLineCode,
  2293. GroutingLineName,
  2294. GMouldTypeID,
  2295. CanManyTimes,
  2296. GroutingLineDetailID,
  2297. GroutingMouldCode,
  2298. MouldCode,
  2299. GroutingUserID,
  2300. GroutingUserCode,
  2301. GroutingNum,
  2302. Remarks,
  2303. KilnID,
  2304. KilnCode,
  2305. KilnName,
  2306. KilnCarID,
  2307. KilnCarCode,
  2308. KilnCarName,
  2309. KilnCarBatchNo,
  2310. KilnCarPosition,
  2311. AccountID,
  2312. ValueFlag,
  2313. CreateUserID,
  2314. UpdateUserID,
  2315. SpecialRepairflag,
  2316. FlowProcedureID,
  2317. FlowProcedureTime,
  2318. ProcedureID,
  2319. ProcedureTime,
  2320. ProductionDataID,
  2321. logoid, ISREWORKFLAG, SEMICHECKID
  2322. )
  2323. select
  2324. BarCode,
  2325. ProductionLineID,
  2326. ProductionLineCode,
  2327. ProductionLineName,
  2328. ProcedureModel,
  2329. ModelType,
  2330. DefectFlag,
  2331. ReworkProcedureID,
  2332. IsPublicBody,
  2333. IsReFire,
  2334. :GoodsLevelID,
  2335. :GoodsLevelTypeID,
  2336. GoodsID,
  2337. GoodsCode,
  2338. GoodsName,
  2339. UserID,
  2340. GroutingDailyID,
  2341. GroutingDailyDetailID,
  2342. GroutingDate,
  2343. GroutingLineID,
  2344. GroutingLineCode,
  2345. GroutingLineName,
  2346. GMouldTypeID,
  2347. CanManyTimes,
  2348. GroutingLineDetailID,
  2349. GroutingMouldCode,
  2350. MouldCode,
  2351. GroutingUserID,
  2352. GroutingUserCode,
  2353. GroutingNum,
  2354. Remarks,
  2355. KilnID,
  2356. KilnCode,
  2357. KilnName,
  2358. KilnCarID,
  2359. KilnCarCode,
  2360. KilnCarName,
  2361. KilnCarBatchNo,
  2362. KilnCarPosition,
  2363. AccountID,
  2364. ValueFlag,
  2365. :CreateUserID,
  2366. :UpdateUserID,
  2367. SpecialRepairflag,
  2368. FlowProcedureID,
  2369. FlowProcedureTime,
  2370. ProcedureID,
  2371. ProcedureTime,
  2372. ProductionDataID,
  2373. logoid, ISREWORKFLAG, SEMICHECKID
  2374. from TP_PM_InProduction
  2375. where barcode='" + UpdateSProductEntity.BarCode + "'";
  2376. OracleParameter[] Paras2 = new OracleParameter[] {
  2377. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2378. userInfo.UserID,ParameterDirection.Input),
  2379. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2380. userInfo.UserID,ParameterDirection.Input),
  2381. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  2382. UpdateSProductEntity.GoodsLevelID,ParameterDirection.Input),
  2383. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  2384. UpdateSProductEntity.GoodsLevelTypeID,ParameterDirection.Input)
  2385. };
  2386. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras2);
  2387. //20150714 modify wangx
  2388. if (UpdateSProductEntity.ProcedureID != null)//在生产线上报废的,
  2389. {
  2390. sbSql.Clear();
  2391. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2392. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2393. }
  2394. //20150714 modify wangx end
  2395. sbSql.Clear();
  2396. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2397. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2398. //如果没有删除在产产品,那么要去删除成品表
  2399. if (DeleteRows == 0)
  2400. {
  2401. sbSql.Clear();
  2402. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2403. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2404. }
  2405. //并且要把该产品的生产数据的最终状态添加上
  2406. //sbSql.Clear();
  2407. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2408. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2409. }
  2410. else
  2411. {
  2412. //if (UpdateSProductEntity.ProcedureID != null)//在生产线上报废的,
  2413. //{
  2414. sbSql.Clear();
  2415. if (UpdateSProductEntity.AuditStatus == 0) //待审核
  2416. {
  2417. sbSql.Append("update TP_PM_InProduction set inscrapflag='1' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2418. }
  2419. else
  2420. {
  2421. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2422. }
  2423. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2424. //}
  2425. }
  2426. //无论如何,要把原始的责任者数据删除
  2427. if (YSResponsibleList != null)
  2428. {
  2429. foreach (ScrapResponsibleEntity spFor in YSResponsibleList)
  2430. {
  2431. sbSql.Clear();
  2432. sbSql.Append("delete from TP_PM_ScrapResponsible");
  2433. sbSql.Append(" where ResponsibleID=:ResponsibleID ");
  2434. OracleParameter[] SPParas = new OracleParameter[] {
  2435. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  2436. spFor.ResponsibleID,ParameterDirection.Input)
  2437. };
  2438. deleteRprocedureReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  2439. }
  2440. }
  2441. //判断一下责任类型,如果有责任工序的话,则修改责任工序信息
  2442. if (Convert.ToInt32(UpdateSProductEntity.ResponType) == 3)
  2443. {
  2444. if (UpdateRProcedureEntity != null)
  2445. {
  2446. if (UpdateRProcedureEntity.ResponProcedureID != null)
  2447. {
  2448. sbSql.Clear();
  2449. sbSql.Append("update TP_PM_ResponProcedure");
  2450. sbSql.Append(" set ProcedureID=:ProcedureID,");
  2451. sbSql.Append(" ProcedureCode=:ProcedureCode,");
  2452. sbSql.Append(" ProcedureName=:ProcedureName,");
  2453. sbSql.Append(" UserID=:UserID,");
  2454. sbSql.Append(" UserCode=:UserCode,");
  2455. sbSql.Append(" UserName=:UserName,");
  2456. sbSql.Append(" UpdateUserID=:UpdateUserID");
  2457. sbSql.Append(" where ResponProcedureID=:ResponProcedureID");
  2458. OracleParameter[] RPParas = new OracleParameter[] {
  2459. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  2460. UpdateRProcedureEntity.ProcedureID,ParameterDirection.Input),
  2461. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  2462. UpdateRProcedureEntity.ProcedureCode,ParameterDirection.Input),
  2463. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  2464. UpdateRProcedureEntity.ProcedureName,ParameterDirection.Input),
  2465. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  2466. UpdateRProcedureEntity.UserID,ParameterDirection.Input),
  2467. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2468. UpdateRProcedureEntity.UserCode,ParameterDirection.Input),
  2469. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  2470. UpdateRProcedureEntity.UserName,ParameterDirection.Input),
  2471. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2472. userInfo.UserID,ParameterDirection.Input),
  2473. new OracleParameter(":ResponProcedureID",OracleDbType.Int32,
  2474. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input)
  2475. };
  2476. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2477. }
  2478. else
  2479. {
  2480. //插入产品废弃责任工序
  2481. sbSql.Clear();
  2482. sbSql.Append("select SEQ_PM_ResponProcedure_ID.nextval from dual");
  2483. UpdateRProcedureEntity.ResponProcedureID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2484. sbSql.Clear();
  2485. sbSql.Append("Insert into TP_PM_ResponProcedure");
  2486. sbSql.Append("(ResponProcedureID,ScrapProductID,Barcode,ProductionDataID,ProductionLineID,");
  2487. sbSql.Append("ProductionLineCode,ProductionLineName,");
  2488. sbSql.Append("ProcedureID,ProcedureCode,ProcedureName,UserID,UserCode,UserName,Remarks,AccountID,");
  2489. sbSql.Append("ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  2490. sbSql.Append("Values(:ResponProcedureID,:ScrapProductID,:Barcode,:ProductionDataID,:ProductionLineID,");
  2491. sbSql.Append(":ProductionLineCode,:ProductionLineName,");
  2492. sbSql.Append(":ProcedureID,:ProcedureCode,:ProcedureName,:UserID,:UserCode,:UserName,:Remarks,");
  2493. sbSql.Append(":AccountID,1,sysdate,:CreateUserID,sysdate,:UpdateUserID,systimestamp)");
  2494. OracleParameter[] RPParas = new OracleParameter[] {
  2495. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  2496. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input),
  2497. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  2498. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2499. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  2500. UpdateRProcedureEntity.BarCode,ParameterDirection.Input),
  2501. new OracleParameter(":ProductionDataID",OracleDbType.NVarchar2,
  2502. UpdateRProcedureEntity.ProductionDataID,ParameterDirection.Input),
  2503. new OracleParameter(":ProductionLineID",OracleDbType.NVarchar2,
  2504. UpdateRProcedureEntity.ProductionLineID,ParameterDirection.Input),
  2505. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  2506. UpdateRProcedureEntity.ProductionLineCode,ParameterDirection.Input),
  2507. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  2508. UpdateRProcedureEntity.ProductionLineName,ParameterDirection.Input),
  2509. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  2510. UpdateRProcedureEntity.ProcedureID,ParameterDirection.Input),
  2511. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  2512. UpdateRProcedureEntity.ProcedureCode,ParameterDirection.Input),
  2513. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  2514. UpdateRProcedureEntity.ProcedureName,ParameterDirection.Input),
  2515. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  2516. UpdateRProcedureEntity.UserID,ParameterDirection.Input),
  2517. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2518. UpdateRProcedureEntity.UserCode,ParameterDirection.Input),
  2519. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  2520. UpdateRProcedureEntity.UserName,ParameterDirection.Input),
  2521. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2522. UpdateRProcedureEntity.Remarks,ParameterDirection.Input),
  2523. new OracleParameter(":AccountID",OracleDbType.NVarchar2,
  2524. userInfo.AccountID,ParameterDirection.Input),
  2525. new OracleParameter(":CreateUserID",OracleDbType.NVarchar2,
  2526. userInfo.UserID,ParameterDirection.Input),
  2527. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2528. userInfo.UserID,ParameterDirection.Input)
  2529. };
  2530. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2531. }
  2532. }
  2533. }
  2534. else //责任类型改为不存在责任工序了,要把原来的删除
  2535. {
  2536. if (UpdateRProcedureEntity != null) //本来就没有的话就不用删了
  2537. {
  2538. if (UpdateRProcedureEntity.ValueFlag == 0) //直接删除即可
  2539. {
  2540. sbSql.Clear();
  2541. sbSql.Append("Delete from TP_PM_ResponProcedure");
  2542. sbSql.Append(" where ResponProcedureID=:ResponProcedureID");
  2543. OracleParameter[] RPParas = new OracleParameter[] {
  2544. new OracleParameter(":ResponProcedureID",OracleDbType.Int32,
  2545. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input)
  2546. };
  2547. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2548. }
  2549. }
  2550. }
  2551. //如果存在修改的产品废弃责任者
  2552. if (Convert.ToInt32(UpdateSProductEntity.ResponType) != 1)
  2553. {
  2554. //计算每个责任人的报废扣罚
  2555. decimal scrapfine = 0;
  2556. if (UpdateSResponsibleList.Length > 0)
  2557. {
  2558. scrapfine = UpdateSProductEntity.ScrapFine / UpdateSResponsibleList.Length;
  2559. }
  2560. //循环插入产品废弃责任者
  2561. foreach (ScrapResponsibleEntity spFor in UpdateSResponsibleList)
  2562. {
  2563. sbSql.Clear();
  2564. sbSql.Append("select SEQ_PM_ScrapResponsible_ID.nextval from dual");
  2565. spFor.ResponsibleID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2566. int? ResponProcedureID = null;
  2567. if (UpdateRProcedureEntity != null)
  2568. {
  2569. if (UpdateRProcedureEntity.ValueFlag != 0)
  2570. {
  2571. ResponProcedureID = UpdateRProcedureEntity.ResponProcedureID;
  2572. }
  2573. }
  2574. sbSql.Clear();
  2575. sbSql.Append("Insert into TP_PM_ScrapResponsible");
  2576. sbSql.Append("(ResponsibleID,ResponType,ResponProcedureID,Barcode,ScrapProductID,StaffID,UserID,UserCode,UJobsID,SJobsID,");
  2577. sbSql.Append("StaffStatus,AccountID,CreateTime,CreateUserID,");
  2578. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,Scrapfine)");
  2579. sbSql.Append("values(:ResponsibleID,:ResponType,:ResponProcedureID,:Barcode,:ScrapProductID,:StaffID,:UserID,:UserCode,:UJobsID,:SJobsID,");
  2580. sbSql.Append(":StaffStatus,:AccountID,sysdate,:CreateUserID,");
  2581. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:Scrapfine)");
  2582. OracleParameter[] SPParas = new OracleParameter[] {
  2583. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  2584. spFor.ResponsibleID,ParameterDirection.Input),
  2585. new OracleParameter(":ResponType",OracleDbType.Int32,
  2586. Convert.ToInt32(UpdateSProductEntity.ResponType),ParameterDirection.Input),
  2587. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  2588. ResponProcedureID,ParameterDirection.Input),
  2589. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  2590. spFor.BarCode,ParameterDirection.Input),
  2591. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  2592. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2593. new OracleParameter(":StaffID",OracleDbType.Int32,
  2594. spFor.StaffID,ParameterDirection.Input),
  2595. new OracleParameter(":UserID",OracleDbType.Int32,
  2596. spFor.UserID,ParameterDirection.Input),
  2597. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2598. spFor.UserCode,ParameterDirection.Input),
  2599. new OracleParameter(":UJobsID",OracleDbType.Int32,
  2600. spFor.UJobsID,ParameterDirection.Input),
  2601. new OracleParameter(":SJobsID",OracleDbType.Int32,
  2602. spFor.SJobsID,ParameterDirection.Input),
  2603. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  2604. spFor.StaffStatus,ParameterDirection.Input),
  2605. new OracleParameter(":AccountID",OracleDbType.Int32,
  2606. userInfo.AccountID,ParameterDirection.Input),
  2607. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2608. userInfo.UserID,ParameterDirection.Input),
  2609. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2610. userInfo.UserID,ParameterDirection.Input),
  2611. new OracleParameter(":Scrapfine",OracleDbType.Decimal,
  2612. scrapfine,ParameterDirection.Input)
  2613. };
  2614. sresponsibleReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  2615. }
  2616. }
  2617. #region 更新废弃责任工序的生产工序ID
  2618. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  2619. " SET (SP.RESPONPROCEDUREPROCEDUREID) =\n" +
  2620. " (SELECT RP.PROCEDUREID\n" +
  2621. " FROM TP_PM_RESPONPROCEDURE RP\n" +
  2622. " WHERE RP.SCRAPPRODUCTID = SP.SCRAPPRODUCTID)\n" +
  2623. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  2624. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  2625. Paras = new OracleParameter[]
  2626. {
  2627. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2628. };
  2629. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, Paras);
  2630. #endregion
  2631. #region 更新废弃责任工序的责任者ID和编码
  2632. sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  2633. " SET (SP.RESPONSIBLEUSERID, SP.RESPONSIBLEUSERCODE) =\n" +
  2634. " (SELECT SR.USERID, SR.USERCODE\n" +
  2635. " FROM TP_PM_SCRAPRESPONSIBLE SR\n" +
  2636. " WHERE SR.SCRAPPRODUCTID = SP.SCRAPPRODUCTID\n" +
  2637. " GROUP BY SR.USERID, SR.USERCODE)\n" +
  2638. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  2639. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  2640. Paras = new OracleParameter[]
  2641. {
  2642. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2643. };
  2644. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, Paras);
  2645. #endregion
  2646. if (returnRows == 0)
  2647. {
  2648. oracleTrConn.Rollback();
  2649. oracleTrConn.Disconnect();
  2650. }
  2651. else
  2652. {
  2653. oracleTrConn.Commit();
  2654. oracleTrConn.Disconnect();
  2655. }
  2656. }
  2657. catch (Exception ex)
  2658. {
  2659. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2660. {
  2661. oracleTrConn.Rollback();
  2662. oracleTrConn.Disconnect();
  2663. }
  2664. throw ex;
  2665. }
  2666. finally
  2667. {
  2668. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2669. {
  2670. oracleTrConn.Disconnect();
  2671. }
  2672. }
  2673. return returnRows;
  2674. }
  2675. /// <summary>
  2676. /// 获取窑炉管理的全部数据
  2677. /// </summary>
  2678. /// <param name="sUserInfo">用户基本信息</param>
  2679. /// <returns>DataSet</returns>
  2680. /// <remarks>
  2681. /// 2014.10.31 任海 新建
  2682. /// </remarks>
  2683. public static DataSet GetAllKilntInfo(SUserInfo sUserInfo)
  2684. {
  2685. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2686. try
  2687. {
  2688. //获取窑炉管理数据
  2689. string sqlString = "Select KilnID,KilnCode,KilnName,KilnType,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp "
  2690. + "from TP_MST_Kiln where AccountID = :AccountID and valueflag=1";
  2691. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  2692. {
  2693. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID",sUserInfo.AccountID)
  2694. };
  2695. oracleConn.Open();
  2696. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2697. oracleConn.Close();
  2698. return result;
  2699. }
  2700. catch (Exception ex)
  2701. {
  2702. throw ex;
  2703. }
  2704. finally
  2705. {
  2706. if (oracleConn.ConnState == ConnectionState.Open)
  2707. {
  2708. oracleConn.Close();
  2709. }
  2710. }
  2711. }
  2712. /// <summary>
  2713. /// 获取次品产品条码允许编辑
  2714. /// </summary>
  2715. /// <param name="barcode">产品条码</param>
  2716. /// <returns>Datase</returns>
  2717. public static DataSet GetSubstandardInfo(string barcode)
  2718. {
  2719. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2720. try
  2721. {
  2722. //获取窑炉管理数据
  2723. string sqlString = "Select barcode from TP_PM_InProductionTrash where barcode=:barcode";
  2724. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  2725. {
  2726. new Oracle.ManagedDataAccess.Client.OracleParameter(":barcode",barcode)
  2727. };
  2728. oracleConn.Open();
  2729. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2730. oracleConn.Close();
  2731. return result;
  2732. }
  2733. catch (Exception ex)
  2734. {
  2735. if (oracleConn.ConnState == ConnectionState.Open)
  2736. {
  2737. oracleConn.Close();
  2738. }
  2739. throw ex;
  2740. }
  2741. finally
  2742. {
  2743. if (oracleConn.ConnState == ConnectionState.Open)
  2744. {
  2745. oracleConn.Close();
  2746. }
  2747. }
  2748. }
  2749. /// <summary>
  2750. /// 获取产品条码是否重烧
  2751. /// </summary>
  2752. /// <param name="barcode">产品条码</param>
  2753. /// <returns>Datase</returns>
  2754. public static DataSet GetReFine(string barcode)
  2755. {
  2756. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2757. try
  2758. {
  2759. string sqlString = "select IsReFire from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode=:barcode)";
  2760. //获取窑炉管理数据
  2761. //string sqlString = "Select IsReFire from TP_PM_InProduction where barcode=:barcode";
  2762. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  2763. {
  2764. new Oracle.ManagedDataAccess.Client.OracleParameter(":barcode",barcode)
  2765. };
  2766. oracleConn.Open();
  2767. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  2768. oracleConn.Close();
  2769. return result;
  2770. }
  2771. catch (Exception ex)
  2772. {
  2773. if (oracleConn.ConnState == ConnectionState.Open)
  2774. {
  2775. oracleConn.Close();
  2776. }
  2777. throw ex;
  2778. }
  2779. finally
  2780. {
  2781. if (oracleConn.ConnState == ConnectionState.Open)
  2782. {
  2783. oracleConn.Close();
  2784. }
  2785. }
  2786. }
  2787. /// <summary>
  2788. /// 获取登陆帐户有无报损权限
  2789. /// </summary>
  2790. /// <param name="usercode">工号编码</param>
  2791. /// <returns></returns>
  2792. public static int GetFinishedProductEditFuntion(SUserInfo userInfo)
  2793. {
  2794. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2795. try
  2796. {
  2797. con.Open();
  2798. string strSql = "";
  2799. strSql = @"SELECT F.Functionlevel,
  2800. F.FunctionCode,
  2801. F.FunctionName,
  2802. F.FullName,
  2803. F.FunctionFlag,
  2804. F.FunctionButtonFlag,
  2805. F.FormName,
  2806. F.ButtonName
  2807. FROM TP_MST_UserRight R LEFT OUTER JOIN
  2808. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  2809. WHERE F.ValueFlag = 1
  2810. AND F.FunctionCode NOT LIKE '0101%'
  2811. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '060701') = 1 /*F.FunctionCode='060701'*/";
  2812. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  2813. DataSet ds = con.GetSqlResultToDs(strSql);
  2814. if (ds != null && ds.Tables[0].Rows.Count > 0)
  2815. {
  2816. return 1;
  2817. }
  2818. return 0;
  2819. }
  2820. catch (Exception ex)
  2821. {
  2822. throw ex;
  2823. }
  2824. finally
  2825. {
  2826. if (con.ConnState == ConnectionState.Open)
  2827. {
  2828. con.Close();
  2829. }
  2830. }
  2831. }
  2832. /// <summary>
  2833. /// 获取登陆帐户有无报损审批权限
  2834. /// </summary>
  2835. /// <param name="usercode">工号编码</param>
  2836. /// <returns></returns>
  2837. public static int GetScrapProductFuntion(SUserInfo userInfo)
  2838. {
  2839. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2840. try
  2841. {
  2842. con.Open();
  2843. string strSql = "";
  2844. strSql = @"SELECT F.Functionlevel,
  2845. F.FunctionCode,
  2846. F.FunctionName,
  2847. F.FullName,
  2848. F.FunctionFlag,
  2849. F.FunctionButtonFlag,
  2850. F.FormName,
  2851. F.ButtonName
  2852. FROM TP_MST_UserRight R LEFT OUTER JOIN
  2853. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  2854. WHERE F.ValueFlag = 1
  2855. AND F.FunctionCode NOT LIKE '0101%'
  2856. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '06040103') = 1 /*F.FunctionCode='06040103'*/";
  2857. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  2858. DataSet ds = con.GetSqlResultToDs(strSql);
  2859. if (ds != null && ds.Tables[0].Rows.Count > 0)
  2860. {
  2861. return 1;
  2862. }
  2863. return 0;
  2864. }
  2865. catch (Exception ex)
  2866. {
  2867. throw ex;
  2868. }
  2869. finally
  2870. {
  2871. if (con.ConnState == ConnectionState.Open)
  2872. {
  2873. con.Close();
  2874. }
  2875. }
  2876. }
  2877. /// <summary>
  2878. /// 获取登陆帐户有变更条码权限
  2879. /// </summary>
  2880. /// <returns></returns>
  2881. public static int GetBarCodeRecordFuntion(SUserInfo userInfo)
  2882. {
  2883. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2884. try
  2885. {
  2886. con.Open();
  2887. string strSql = "";
  2888. strSql = @"SELECT F.Functionlevel,
  2889. F.FunctionCode,
  2890. F.FunctionName,
  2891. F.FullName,
  2892. F.FunctionFlag,
  2893. F.FunctionButtonFlag,
  2894. F.FormName,
  2895. F.ButtonName
  2896. FROM TP_MST_UserRight R LEFT OUTER JOIN
  2897. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  2898. WHERE F.ValueFlag = 1
  2899. AND F.FunctionCode NOT LIKE '0101%'
  2900. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '060202') = 1 /*F.FunctionCode='060202'*/";
  2901. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  2902. DataSet ds = con.GetSqlResultToDs(strSql);
  2903. if (ds != null && ds.Tables[0].Rows.Count > 0)
  2904. {
  2905. return 1;
  2906. }
  2907. return 0;
  2908. }
  2909. catch (Exception ex)
  2910. {
  2911. throw ex;
  2912. }
  2913. finally
  2914. {
  2915. if (con.ConnState == ConnectionState.Open)
  2916. {
  2917. con.Close();
  2918. }
  2919. }
  2920. }
  2921. /// <summary>
  2922. /// 成检-校验生产工号
  2923. /// </summary>
  2924. /// <returns></returns>
  2925. public static DataSet GetUserCode(string usercode, SUserInfo userInfo)
  2926. {
  2927. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2928. try
  2929. {
  2930. con.Open();
  2931. DataSet dsReturn = new DataSet();
  2932. string strSql = "";
  2933. strSql = @"select userid,username,usercode from tp_mst_user where tp_mst_user.isworker=1 and valueflag=1 and accountid=:accountid and usercode=:usercode";
  2934. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  2935. {
  2936. new Oracle.ManagedDataAccess.Client.OracleParameter(":accountid",userInfo.AccountID),
  2937. new Oracle.ManagedDataAccess.Client.OracleParameter(":usercode",usercode)
  2938. };
  2939. DataSet ds = con.GetSqlResultToDs(strSql, oracleParameter);
  2940. ds.Tables[0].TableName = "TUser";
  2941. //strSql = "Select DictionaryID,DictionaryValue"
  2942. // + " from TP_MST_DataDictionary where valueflag = 1 and DictionaryType = 'ASE002' and AccountID = :AccountID";
  2943. //oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  2944. // {
  2945. // new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID",userInfo.AccountID),
  2946. // };
  2947. //DataSet ds2 = con.GetSqlResultToDs(strSql, oracleParameter);
  2948. //ds2.Tables[0].TableName = "TDataDictionary";
  2949. if (!dsReturn.Tables.Contains("TUser"))
  2950. {
  2951. dsReturn.Tables.Add(ds.Tables[0].Copy());
  2952. }
  2953. //if (!dsReturn.Tables.Contains("TDataDictionary"))
  2954. //{
  2955. // dsReturn.Tables.Add(ds2.Tables[0].Copy());
  2956. //}
  2957. return dsReturn;
  2958. }
  2959. catch (Exception ex)
  2960. {
  2961. throw ex;
  2962. }
  2963. finally
  2964. {
  2965. if (con.ConnState == ConnectionState.Open)
  2966. {
  2967. con.Close();
  2968. }
  2969. }
  2970. }
  2971. /// <summary>
  2972. /// 保存班次配置信息
  2973. /// </summary>
  2974. /// <param name="setEntity">班次配置实体</param>
  2975. /// <param name="dtClassesSetting">班次配置明细table</param>
  2976. /// <param name="sUserInfo">用户基本信息</param>
  2977. /// <returns>>0 保存成功 else 失败</returns>
  2978. /// <remarks>
  2979. /// 作者 日期 内容
  2980. /// 冯雪 2014-9-24 新建
  2981. /// </remarks>
  2982. public static int SaveClassesSetting(ClassesSettingEntity setEntity, ClassesDetailSettingEntity[] setDetailEntity, SUserInfo sUserInfo)
  2983. {
  2984. int returnRows = 0;
  2985. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2986. try
  2987. {
  2988. oracleTrConn.Connect();
  2989. // 查询新插入的生产数据ID
  2990. string sqlText = "SELECT SEQ_PC_ClassesSetting_ID.NextVAL FROM dual";
  2991. int classesSettingID = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  2992. // 插入班次配置表
  2993. string sqlString1 = " INSERT INTO TP_PC_ClassesSetting "
  2994. + " (ClassesSettingID,AccountDate,UserID,UserCode, "
  2995. + " Remarks,AccountID,CreateTime,CreateUserID,UpdateUserID) "
  2996. + " VALUES (:ClassesSettingID,:AccountDate,:userID,:userCode, "
  2997. + " :remarks,:accountID,sysdate,:createUserID,:updateUserID)";
  2998. OracleParameter[] parmeters1 = new OracleParameter[]
  2999. {
  3000. new OracleParameter(":ClassesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3001. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3002. new OracleParameter(":userID",OracleDbType.Int32,setEntity.UserID,ParameterDirection.Input),
  3003. new OracleParameter(":userCode",OracleDbType.Varchar2,setEntity.UserCode,ParameterDirection.Input),
  3004. new OracleParameter(":AccountDate",OracleDbType.Date,Convert.ToDateTime(setEntity.AccountDatePDA),ParameterDirection.Input),
  3005. new OracleParameter(":remarks",OracleDbType.Varchar2,setEntity.Remarks,ParameterDirection.Input),
  3006. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3007. new OracleParameter(":createUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3008. new OracleParameter(":updateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3009. };
  3010. returnRows = oracleTrConn.ExecuteNonQuery(sqlString1, parmeters1);
  3011. #region 保存班次配置明细信息
  3012. foreach (ClassesDetailSettingEntity entity in setDetailEntity)
  3013. {
  3014. if (entity.UJobsId.ToString() == "" && entity.StaffCode.ToString() == "")
  3015. {
  3016. continue;
  3017. }
  3018. string sqlInsertString = "INSERT INTO TP_PC_ClassesDetail "
  3019. + " (ClassesSettingID,AccountDate,userid,usercode,ujobsid,staffid,sjobsid,staffstatus,"
  3020. + " remarks,accountid,createtime,createuserid,UpdateUserID,UJobsNum) "
  3021. + "VALUES (:settingID,:AccountDate,:userid,:usercode,:ujobsid,:staffid,:sjobsid,:staffstatus,"
  3022. + " :remarks,:accountid,sysdate,:createuserid,:updateUserID,:uJobsNum)";
  3023. int UJobsNum = 0;//默认一个
  3024. foreach (ClassesDetailSettingEntity entitycount in setDetailEntity)
  3025. {
  3026. if (entitycount.UJobsId.ToString() == entity.UJobsId.ToString())
  3027. {
  3028. UJobsNum++;
  3029. }
  3030. }
  3031. OracleParameter[] oracleParameter = new OracleParameter[]
  3032. {
  3033. new OracleParameter(":settingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3034. new OracleParameter(":userid",OracleDbType.Int32,entity.Userid.ToString(),ParameterDirection.Input),
  3035. new OracleParameter(":usercode",OracleDbType.Varchar2,entity.Usercode.ToString(),ParameterDirection.Input),
  3036. new OracleParameter(":ujobsid",OracleDbType.Int32,entity.UJobsId.ToString(),ParameterDirection.Input),
  3037. new OracleParameter(":staffid",OracleDbType.Int32,entity.Staffid.ToString(),ParameterDirection.Input),
  3038. new OracleParameter(":sjobsid",OracleDbType.Int32,entity.Jobs.ToString(),ParameterDirection.Input),
  3039. new OracleParameter(":staffstatus",OracleDbType.Int32,entity.Staffstatus.ToString(),ParameterDirection.Input),
  3040. new OracleParameter(":remarks",OracleDbType.Varchar2,entity.Remarks,ParameterDirection.Input),
  3041. new OracleParameter(":AccountDate",OracleDbType.Date,Convert.ToDateTime(setEntity.AccountDatePDA),ParameterDirection.Input),
  3042. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3043. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3044. new OracleParameter(":updateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3045. new OracleParameter(":uJobsNum",OracleDbType.Decimal,UJobsNum,ParameterDirection.Input)
  3046. };
  3047. returnRows = oracleTrConn.ExecuteNonQuery(sqlInsertString, oracleParameter);
  3048. }
  3049. #endregion
  3050. oracleTrConn.Commit();
  3051. oracleTrConn.Disconnect();
  3052. return returnRows;
  3053. }
  3054. catch (Exception ex)
  3055. {
  3056. oracleTrConn.Rollback();
  3057. oracleTrConn.Disconnect();
  3058. throw ex;
  3059. }
  3060. finally
  3061. {
  3062. // 释放资源
  3063. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3064. {
  3065. oracleTrConn.Disconnect();
  3066. }
  3067. }
  3068. }
  3069. /// <summary>
  3070. /// 获取登陆帐户有班次配置权限
  3071. /// </summary>
  3072. /// <returns></returns>
  3073. public static int GetClassesSettingFuntion(SUserInfo userInfo)
  3074. {
  3075. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3076. try
  3077. {
  3078. con.Open();
  3079. string strSql = "";
  3080. strSql = @"SELECT F.Functionlevel,
  3081. F.FunctionCode,
  3082. F.FunctionName,
  3083. F.FullName,
  3084. F.FunctionFlag,
  3085. F.FunctionButtonFlag,
  3086. F.FormName,
  3087. F.ButtonName
  3088. FROM TP_MST_UserRight R LEFT OUTER JOIN
  3089. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  3090. WHERE F.ValueFlag = 1
  3091. AND F.FunctionCode NOT LIKE '0101%'
  3092. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '0404') = 1 /*F.FunctionCode='0404'*/";
  3093. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  3094. DataSet ds = con.GetSqlResultToDs(strSql);
  3095. if (ds != null && ds.Tables[0].Rows.Count > 0)
  3096. {
  3097. return 1;
  3098. }
  3099. return 0;
  3100. }
  3101. catch (Exception ex)
  3102. {
  3103. throw ex;
  3104. }
  3105. finally
  3106. {
  3107. if (con.ConnState == ConnectionState.Open)
  3108. {
  3109. con.Close();
  3110. }
  3111. }
  3112. }
  3113. #region PDA报表
  3114. /// <summary>
  3115. /// 取得RPT040104画面(产成品质量分析表)的查询数据
  3116. /// </summary>
  3117. /// <param name="user">登录用户信息</param>
  3118. /// <param name="se">查询条件</param>
  3119. /// <returns>查询结果</returns>
  3120. public static ServiceResultEntity GetRPT040104SData(SUserInfo user, RPT040104_SE se)
  3121. {
  3122. IDBConnection conn = null;
  3123. try
  3124. {
  3125. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3126. List<OracleParameter> parameters = new List<OracleParameter>();
  3127. string sql = PDAModuleLogic.GetRPT040104SSQL(user, se, ref parameters);
  3128. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  3129. ServiceResultEntity sre = new ServiceResultEntity();
  3130. if (data == null || data.Rows.Count == 0)
  3131. {
  3132. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3133. return sre;
  3134. }
  3135. sre.Data = new DataSet();
  3136. sre.Data.Tables.Add(data.Copy());
  3137. return sre;
  3138. }
  3139. catch (Exception ex)
  3140. {
  3141. throw ex;
  3142. }
  3143. finally
  3144. {
  3145. if (conn != null &&
  3146. conn.ConnState == ConnectionState.Open)
  3147. {
  3148. conn.Close();
  3149. }
  3150. }
  3151. }
  3152. /// <summary>
  3153. /// 获取RPT040104画面(产成品质量分析表)的查询sql
  3154. /// </summary>
  3155. /// <returns>sql</returns>
  3156. private static string GetRPT040104SSQL(SUserInfo user, RPT040104_SE se, ref List<OracleParameter> parameters)
  3157. {
  3158. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3159. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  3160. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3161. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3162. string sqlString = @"SELECT * from (
  3163. --查询当前页面所需字段
  3164. SELECT
  3165. GID,
  3166. kilncode,
  3167. goodstypename2 as subgoodstypecode,
  3168. OutKilnCount,
  3169. TO_CHAR(QualifiedPercent* 100, '990.00')|| '%' as GoodPercent
  3170. FROM(
  3171. --处理统计过后的数据 在进行分组统计
  3172. select qdgroup.gid
  3173. ,decode(qdgroup.gid, 7, '总计', qdgroup.productionlinename) productionlinename
  3174. ,decode(qdgroup.gid
  3175. ,3
  3176. ,'合计'
  3177. ,7
  3178. ,'总计'
  3179. ,CAST(qdgroup.kilncode AS VARCHAR2(50))) kilncode
  3180. , CASE WHEN qdgroup.goodstypename='隐藏式水箱座便器' THEN CAST('隐藏式' AS VARCHAR2(50))
  3181. WHEN qdgroup.goodstypename = '小便斗' THEN CAST('小便斗' AS VARCHAR2(50))
  3182. WHEN qdgroup.goodstypename = '柜盆' THEN CAST('柜盆' AS VARCHAR2(50))
  3183. ELSE TO_CHAR(decode(qdgroup.gid
  3184. ,1
  3185. ,qdgroup.goodstypename2
  3186. ,0
  3187. ,qdgroup.goodstypename2
  3188. ,'--')) END AS goodstypename2
  3189. ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename
  3190. ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode
  3191. ,qdgroup.OutKilnCount
  3192. ,qdgroup.GoodCount
  3193. ,decode(qdgroup.OutKilnCount
  3194. ,0
  3195. ,to_number(null)
  3196. ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 2)) GoodPercent
  3197. ,qdgroup.SubstandardCount
  3198. ,decode(qdgroup.OutKilnCount
  3199. ,0
  3200. ,to_number(null)
  3201. ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent
  3202. ,qdgroup.GoodCount + qdgroup.BadCount Qualified
  3203. ,decode(qdgroup.OutKilnCount
  3204. ,0
  3205. ,to_number(null)
  3206. ,round((qdgroup.GoodCount + qdgroup.BadCount) /
  3207. qdgroup.OutKilnCount
  3208. ,4)) QualifiedPercent
  3209. ,qdgroup.BadCount
  3210. ,decode(qdgroup.OutKilnCount
  3211. ,0
  3212. ,to_number(null)
  3213. ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent
  3214. ,qdgroup.ReFireCount
  3215. ,decode(qdgroup.OutKilnCount
  3216. ,0
  3217. ,to_number(null)
  3218. ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent
  3219. from (
  3220. --对所需数据进行统计
  3221. select grouping_id(productionlinename,kilncode,goodstypename2
  3222. ,goodscode) gid
  3223. ,productionlinename
  3224. ,kilncode
  3225. ,goodstypename2
  3226. ,goodstypename
  3227. ,goodscode
  3228. ,nvl(sum(decode(goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount
  3229. ,nvl(sum(decode(goodsleveltypeid, 5, 1, 0)), 0) BadCount
  3230. ,nvl(sum(decode(goodsleveltypeid, 6, 1, 0)), 0) ReFireCount
  3231. ,nvl(sum(decode(goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount
  3232. ,nvl(sum(decode(goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1, 0)), 0) GoodCount
  3233. FROM(
  3234. --当前select 获取计算关键字段
  3235. select
  3236. pcpl.productionlinename
  3237. ,mstkiln.kilncode
  3238. ,CASE WHEN mstgoodstype.goodstypename='隐藏式水箱座便器' THEN '隐藏式 '
  3239. WHEN mstgoodstype.goodstypename = '小便斗' THEN '小便斗 '
  3240. WHEN mstgoodstype.goodstypename = '柜盆' THEN '柜盆 '
  3241. WHEN mstgoodstype2.goodstypename = '大件' THEN TO_CHAR(mstgoodstype.goodstypename)
  3242. ELSE TO_CHAR(mstgoodstype2.goodstypename) END goodstypename2 --转换当前字段名称 方便下次grouping 分组统计
  3243. ,mstgoodstype.goodstypename
  3244. ,mstgoods.goodscode
  3245. ,ppcc.goodsleveltypeid
  3246. from (
  3247. select 0 goodsleveltypeid -- 出窑数量
  3248. ,pd.barcode
  3249. ,pd.productionlineid
  3250. ,pd.goodsid
  3251. ,pd.kilnid
  3252. ,pd.kilncarbatchno
  3253. ,1 cc
  3254. from tp_pm_productiondata pd
  3255. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  3256. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  3257. where pd.valueflag = '1'
  3258. AND GDT.goodstypecode NOT IN ('001001002')
  3259. and pd.procedureid = :in_rptSprocedureId
  3260. and pd.accountid = :AccountID
  3261. AND pd.createtime >= :CreateTimeStart
  3262. AND pd.createtime < :CreateTimeEnd
  3263. union all
  3264. select distinct pd.goodsleveltypeid
  3265. ,pd.barcode
  3266. ,pd.productionlineid
  3267. ,pd.goodsid
  3268. ,pd.kilnid
  3269. ,pd.kilncarbatchno
  3270. ,1 cc
  3271. from tp_pm_productiondata pd
  3272. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  3273. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  3274. INNER JOIN TP_PM_DEFECT DEFECT ON DEFECT.BARCODE = PD.BARCODE
  3275. where pd.valueflag = '1'
  3276. and pd.modeltype = -1
  3277. and pd.accountid = 1
  3278. AND DEFECT.VALUEFLAG=1
  3279. AND SUBSTR(DEFECT.DEFECTCODE, 0, 1) <> 0
  3280. and length(pd.kilncarbatchno) > 0
  3281. AND GDT.goodstypecode NOT IN ('001001002')
  3282. AND pd.createtime >= :CreateTimeStart
  3283. AND pd.createtime < :CreateTimeEnd
  3284. and exists
  3285. (select 1
  3286. from tp_pm_productiondata outpd
  3287. where outpd.barcode = pd.barcode
  3288. and outpd.procedureid = :in_rptSprocedureId
  3289. and outpd.valueflag = '1'
  3290. and outpd.kilncarbatchno = pd.kilncarbatchno)
  3291. ) ppcc
  3292. inner join tp_pc_productionline pcpl
  3293. on pcpl.productionlineid = ppcc.productionlineid
  3294. inner join tp_mst_kiln mstkiln
  3295. on mstkiln.kilnid = ppcc.kilnid
  3296. inner join tp_mst_goods mstgoods
  3297. on mstgoods.goodsid = ppcc.goodsid
  3298. inner join tp_mst_goodstype mstgoodstype
  3299. on mstgoodstype.goodstypeid = mstgoods.goodstypeid
  3300. and mstgoodstype.accountid = mstgoods.accountid
  3301. inner join tp_mst_goodstype mstgoodstype2 on mstgoodstype2.goodstypecode = substr(mstgoodstype.goodstypecode, 0, 6)
  3302. AND mstgoodstype2.goodstypecode NOT IN ('001001002')
  3303. LEFT JOIN tp_mst_goodstype mstgoodstype3 on mstgoodstype3.goodstypecode = mstgoodstype.goodstypecode AND mstgoodstype3.goodstypecode ='001001004'
  3304. and mstgoodstype.accountid = mstgoodstype2.accountid
  3305. )
  3306. group by grouping sets((productionlinename,kilncode,goodstypename2,goodstypename,goodscode),
  3307. (productionlinename, kilncode, goodstypename2),
  3308. (productionlinename, kilncode),(productionlinename)) ) qdgroup
  3309. ) WHERE GID <>0
  3310. union ALL
  3311. SELECT
  3312. 2 GID,
  3313. kilncode,
  3314. goodstypename2 as subgoodstypecode,
  3315. OutKilnCount,
  3316. TO_CHAR(QualifiedPercent* 100, '990.00')|| '%' as GoodPercent
  3317. FROM(
  3318. --处理统计过后的数据 在进行分组统计
  3319. select qdgroup.gid
  3320. ,qdgroup.productionlinename
  3321. ,CAST(qdgroup.kilncode AS VARCHAR2(50)) kilncode
  3322. , qdgroup.goodstypename2
  3323. ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename
  3324. ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode
  3325. ,qdgroup.OutKilnCount
  3326. ,qdgroup.GoodCount
  3327. ,decode(qdgroup.OutKilnCount
  3328. ,0
  3329. ,to_number(null)
  3330. ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 2)) GoodPercent
  3331. ,qdgroup.SubstandardCount
  3332. ,decode(qdgroup.OutKilnCount
  3333. ,0
  3334. ,to_number(null)
  3335. ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent
  3336. ,qdgroup.GoodCount + qdgroup.BadCount Qualified
  3337. ,decode(qdgroup.OutKilnCount
  3338. ,0
  3339. ,to_number(null)
  3340. ,round((qdgroup.GoodCount + qdgroup.BadCount) /
  3341. qdgroup.OutKilnCount
  3342. ,4)) QualifiedPercent
  3343. ,qdgroup.BadCount
  3344. ,decode(qdgroup.OutKilnCount
  3345. ,0
  3346. ,to_number(null)
  3347. ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent
  3348. ,qdgroup.ReFireCount
  3349. ,decode(qdgroup.OutKilnCount
  3350. ,0
  3351. ,to_number(null)
  3352. ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent
  3353. from (
  3354. --对所需数据进行统计
  3355. select grouping_id(productionlinename,kilncode,goodstypename2
  3356. ,goodscode) gid
  3357. ,productionlinename
  3358. ,kilncode
  3359. ,goodstypename2
  3360. ,goodstypename
  3361. ,goodscode
  3362. ,nvl(sum(decode(goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount
  3363. ,nvl(sum(decode(goodsleveltypeid, 5, 1, 0)), 0) BadCount
  3364. ,nvl(sum(decode(goodsleveltypeid, 6, 1, 0)), 0) ReFireCount
  3365. ,nvl(sum(decode(goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount
  3366. ,nvl(sum(decode(goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1, 0)), 0) GoodCount
  3367. FROM(
  3368. --当前select 获取计算关键字段
  3369. select
  3370. pcpl.productionlinename
  3371. ,mstkiln.kilncode
  3372. ,CASE WHEN mstgoodstype.GOODSTYPECODE in ('001001001','001001003')
  3373. THEN TO_CHAR(mstgoodstype2.goodstypename)
  3374. END goodstypename2 --转换当前字段名称 方便下次grouping 分组统计
  3375. ,mstgoodstype.goodstypename
  3376. ,mstgoods.goodscode
  3377. ,ppcc.goodsleveltypeid
  3378. from (
  3379. select 0 goodsleveltypeid -- 出窑数量
  3380. ,pd.barcode
  3381. ,pd.productionlineid
  3382. ,pd.goodsid
  3383. ,pd.kilnid
  3384. ,pd.kilncarbatchno
  3385. ,1 cc
  3386. from tp_pm_productiondata pd
  3387. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  3388. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  3389. where pd.valueflag = '1'
  3390. AND GDT.goodstypecode in ('001001001','001001003')
  3391. and pd.procedureid = :in_rptSprocedureId
  3392. and pd.accountid = 1
  3393. AND pd.createtime >= :CreateTimeStart
  3394. AND pd.createtime < :CreateTimeEnd
  3395. union all
  3396. select distinct pd.goodsleveltypeid
  3397. ,pd.barcode
  3398. ,pd.productionlineid
  3399. ,pd.goodsid
  3400. ,pd.kilnid
  3401. ,pd.kilncarbatchno
  3402. ,1 cc
  3403. from tp_pm_productiondata pd
  3404. LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  3405. LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  3406. INNER JOIN TP_PM_DEFECT DEFECT ON DEFECT.BARCODE = PD.BARCODE
  3407. where pd.valueflag = '1'
  3408. and pd.modeltype = -1
  3409. and pd.accountid = 1
  3410. AND DEFECT.VALUEFLAG=1
  3411. AND SUBSTR(DEFECT.DEFECTCODE, 0, 1) <> 0
  3412. and length(pd.kilncarbatchno) > 0
  3413. AND GDT.goodstypecode in ('001001001','001001003')
  3414. AND pd.createtime >= :CreateTimeStart
  3415. AND pd.createtime < :CreateTimeEnd
  3416. and exists
  3417. (select 1
  3418. from tp_pm_productiondata outpd
  3419. where outpd.barcode = pd.barcode
  3420. and outpd.procedureid = :in_rptSprocedureId
  3421. and outpd.valueflag = '1'
  3422. and outpd.kilncarbatchno = pd.kilncarbatchno)
  3423. ) ppcc
  3424. inner join tp_pc_productionline pcpl
  3425. on pcpl.productionlineid = ppcc.productionlineid
  3426. inner join tp_mst_kiln mstkiln
  3427. on mstkiln.kilnid = ppcc.kilnid
  3428. inner join tp_mst_goods mstgoods
  3429. on mstgoods.goodsid = ppcc.goodsid
  3430. inner join tp_mst_goodstype mstgoodstype
  3431. on mstgoodstype.goodstypeid = mstgoods.goodstypeid
  3432. and mstgoodstype.accountid = mstgoods.accountid
  3433. inner join tp_mst_goodstype mstgoodstype2 on mstgoodstype2.goodstypecode = substr(mstgoodstype.goodstypecode, 0, 6)
  3434. AND mstgoodstype2.goodstypecode NOT IN ('001001002')
  3435. )
  3436. group by grouping sets((productionlinename,kilncode,goodstypename2,goodstypename,goodscode),
  3437. (productionlinename, kilncode, goodstypename2)) ) qdgroup
  3438. ) WHERE GID not in(0,3) ) a ORDER BY GID";
  3439. // 2015-06-16 modify by chenxy
  3440. // string sqlString = @"--查询当前页面所需字段
  3441. //SELECT
  3442. //GID,
  3443. //kilncode,
  3444. //goodstypename2 as subgoodstypecode,
  3445. //OutKilnCount,
  3446. //TO_CHAR(QualifiedPercent* 100, '990.00')|| '%' as GoodPercent
  3447. //FROM(
  3448. //--处理统计过后的数据 在进行分组统计
  3449. //select qdgroup.gid
  3450. // ,decode(qdgroup.gid, 7, '总计', qdgroup.productionlinename) productionlinename
  3451. // ,decode(qdgroup.gid
  3452. // ,3
  3453. // ,'合计'
  3454. // ,7
  3455. // ,'总计'
  3456. // ,qdgroup.kilncode) kilncode
  3457. // , CASE WHEN qdgroup.goodstypename='隐藏式水箱座便器' THEN '隐藏式'
  3458. // WHEN qdgroup.goodstypename = '小便斗' THEN '小便斗'
  3459. // WHEN qdgroup.goodstypename = '柜盆' THEN '柜盆'
  3460. // ELSE TO_CHAR(decode(qdgroup.gid
  3461. // ,1
  3462. // ,qdgroup.goodstypename2
  3463. // ,0
  3464. // ,qdgroup.goodstypename2
  3465. // ,'--')) END AS goodstypename2
  3466. // ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename
  3467. // ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode
  3468. // ,qdgroup.OutKilnCount
  3469. // ,qdgroup.GoodCount
  3470. // ,decode(qdgroup.OutKilnCount
  3471. // ,0
  3472. // ,to_number(null)
  3473. // ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 2)) GoodPercent
  3474. // ,qdgroup.SubstandardCount
  3475. // ,decode(qdgroup.OutKilnCount
  3476. // ,0
  3477. // ,to_number(null)
  3478. // ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent
  3479. // ,qdgroup.GoodCount + qdgroup.BadCount Qualified
  3480. // ,decode(qdgroup.OutKilnCount
  3481. // ,0
  3482. // ,to_number(null)
  3483. // ,round((qdgroup.GoodCount + qdgroup.BadCount) /
  3484. // qdgroup.OutKilnCount
  3485. // ,4)) QualifiedPercent
  3486. // ,qdgroup.BadCount
  3487. // ,decode(qdgroup.OutKilnCount
  3488. // ,0
  3489. // ,to_number(null)
  3490. // ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent
  3491. // ,qdgroup.ReFireCount
  3492. // ,decode(qdgroup.OutKilnCount
  3493. // ,0
  3494. // ,to_number(null)
  3495. // ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent
  3496. // from (
  3497. // --对所需数据进行统计
  3498. //select grouping_id(productionlinename,kilncode,goodstypename2
  3499. // ,goodscode) gid
  3500. // ,productionlinename
  3501. // ,kilncode
  3502. // ,goodstypename2
  3503. // ,goodstypename
  3504. // ,goodscode
  3505. // ,nvl(sum(decode(goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount
  3506. // ,nvl(sum(decode(goodsleveltypeid, 5, 1, 0)), 0) BadCount
  3507. // ,nvl(sum(decode(goodsleveltypeid, 6, 1, 0)), 0) ReFireCount
  3508. // ,nvl(sum(decode(goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount
  3509. // ,nvl(sum(decode(goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1, 0)), 0) GoodCount
  3510. //FROM(
  3511. //--当前select 获取计算关键字段
  3512. //select
  3513. // pcpl.productionlinename
  3514. // ,mstkiln.kilncode
  3515. // ,CASE WHEN mstgoodstype.goodstypename='隐藏式水箱座便器' THEN '隐藏式 '
  3516. // WHEN mstgoodstype.goodstypename = '小便斗' THEN '小便斗 '
  3517. // WHEN mstgoodstype.goodstypename = '柜盆' THEN '柜盆 '
  3518. // WHEN mstgoodstype2.goodstypename = '大件' THEN TO_CHAR(mstgoodstype.goodstypename)
  3519. // ELSE TO_CHAR(mstgoodstype2.goodstypename) END goodstypename2 --转换当前字段名称 方便下次grouping 分组统计
  3520. // ,mstgoodstype.goodstypename
  3521. // ,mstgoods.goodscode
  3522. // ,ppcc.goodsleveltypeid
  3523. // from (
  3524. // select 0 goodsleveltypeid -- 出窑数量
  3525. // ,pd.barcode
  3526. // ,pd.productionlineid
  3527. // ,pd.goodsid
  3528. // ,pd.kilnid
  3529. // ,pd.kilncarbatchno
  3530. // ,1 cc
  3531. // from tp_pm_productiondata pd
  3532. // LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  3533. // LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  3534. // where pd.valueflag = '1'
  3535. // AND GDT.goodstypecode NOT IN ('001001002')
  3536. // and pd.procedureid = :in_rptSprocedureId
  3537. // and pd.accountid = :AccountID
  3538. // AND pd.createtime >= :CreateTimeStart
  3539. // AND pd.createtime < :CreateTimeEnd
  3540. // union all
  3541. // select distinct pd.goodsleveltypeid
  3542. // ,pd.barcode
  3543. // ,pd.productionlineid
  3544. // ,pd.goodsid
  3545. // ,pd.kilnid
  3546. // ,pd.kilncarbatchno
  3547. // ,1 cc
  3548. // from tp_pm_productiondata pd
  3549. // LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
  3550. // LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID
  3551. // INNER JOIN TP_PM_DEFECT DEFECT ON DEFECT.BARCODE = PD.BARCODE
  3552. // where pd.valueflag = '1'
  3553. // and pd.modeltype = -1
  3554. // and pd.accountid = :AccountID
  3555. // AND DEFECT.VALUEFLAG=1
  3556. // AND SUBSTR(DEFECT.DEFECTCODE, 0, 1) <> 0
  3557. // and length(pd.kilncarbatchno) > 0
  3558. // AND GDT.goodstypecode NOT IN ('001001002')
  3559. // AND pd.createtime >= :CreateTimeStart
  3560. // AND pd.createtime < :CreateTimeEnd
  3561. // and exists
  3562. // (select 1
  3563. // from tp_pm_productiondata outpd
  3564. // where outpd.barcode = pd.barcode
  3565. // and outpd.procedureid = :in_rptSprocedureId
  3566. // and outpd.valueflag = '1'
  3567. // and outpd.kilncarbatchno = pd.kilncarbatchno)
  3568. // ) ppcc
  3569. // inner join tp_pc_productionline pcpl
  3570. // on pcpl.productionlineid = ppcc.productionlineid
  3571. // inner join tp_mst_kiln mstkiln
  3572. // on mstkiln.kilnid = ppcc.kilnid
  3573. // inner join tp_mst_goods mstgoods
  3574. // on mstgoods.goodsid = ppcc.goodsid
  3575. // inner join tp_mst_goodstype mstgoodstype
  3576. // on mstgoodstype.goodstypeid = mstgoods.goodstypeid
  3577. // and mstgoodstype.accountid = mstgoods.accountid
  3578. // inner join tp_mst_goodstype mstgoodstype2 on mstgoodstype2.goodstypecode = substr(mstgoodstype.goodstypecode, 0, 6)
  3579. // AND mstgoodstype2.goodstypecode NOT IN ('001001002')
  3580. // LEFT JOIN tp_mst_goodstype mstgoodstype3 on mstgoodstype3.goodstypecode = mstgoodstype.goodstypecode AND mstgoodstype3.goodstypecode ='001001004'
  3581. // and mstgoodstype.accountid = mstgoodstype2.accountid
  3582. // )
  3583. // group by grouping sets((productionlinename,kilncode,goodstypename2,goodstypename,goodscode),
  3584. // (productionlinename, kilncode, goodstypename2),
  3585. // (productionlinename, kilncode),(productionlinename)) ) qdgroup
  3586. // ) WHERE GID <>0";
  3587. return sqlString.ToString();
  3588. }
  3589. /// <summary>
  3590. /// 取得FP00002画面(工号产量质量分析表)的查询数据
  3591. /// </summary>
  3592. /// <param name="user">登录用户信息</param>
  3593. /// <param name="se">查询条件</param>
  3594. /// <returns>查询结果</returns>
  3595. public static ServiceResultEntity GetFP00002Data(SUserInfo user, int rptSProcedureID, string usercode, DateTime date)
  3596. {
  3597. //if(string.IsNullOrWhiteSpace(usercode))
  3598. //{
  3599. // ServiceResultEntity sre = new ServiceResultEntity();
  3600. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3601. // return sre;
  3602. //}
  3603. IDBConnection conn = null;
  3604. try
  3605. {
  3606. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3607. List<OracleParameter> parameters = new List<OracleParameter>();
  3608. date = date.Date;
  3609. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3610. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, date, ParameterDirection.Input));
  3611. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, date.AddDays(1), ParameterDirection.Input));
  3612. parameters.Add(new OracleParameter(":Usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
  3613. // 产量
  3614. string sqlString = "\n" +
  3615. "select qdgroup.gid,\n" +
  3616. //" decode(qdgroup.gid, 7, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  3617. " decode(qdgroup.gid, 3, '总计', 1, '合计', 0, qdgroup.procedurename, '') procedurename,\n" +
  3618. //" decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  3619. //" --decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\n" +
  3620. //" decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
  3621. " decode(qdgroup.gid, 0, qdgroup.goodscode, '') goodscode,\n" +
  3622. " to_char(qdgroup.production) production\n" +
  3623. " from (select grouping_id(--pcpl.productionlinename,\n" +
  3624. " pcp.procedurename,\n" +
  3625. //" mstgoodstype2.goodstypename,\n" +
  3626. //" --qd.usercode,\n" +
  3627. " mstgoods.goodscode) gid,\n" +
  3628. //" pcpl.productionlinename,\n" +
  3629. " pcp.procedurename,\n" +
  3630. //" mstgoodstype2.goodstypename goodstypename2,\n" +
  3631. " --qd.usercode,\n" +
  3632. //" mstgoodstype.goodstypename,\n" +
  3633. " mstgoods.goodscode,\n" +
  3634. " sum(qd.production) production\n" +
  3635. " from (select --pd.barcode,\n" +
  3636. //" pd.productionlineid,\n" +
  3637. " pd.procedureid,\n" +
  3638. " pd.goodsid,\n" +
  3639. " --pd.userid,\n" +
  3640. " --pd.usercode,\n" +
  3641. " 1 production\n" +
  3642. " from tp_pm_productiondata pd\n" +
  3643. " where pd.valueflag = '1'\n" +
  3644. " and ((pd.modeltype <> 5) or\n" +
  3645. " (pd.modeltype = 5 and pd.SpecialRepairFlag = '0'))\n" +
  3646. " and pd.Usercode = :Usercode\n" +
  3647. " and pd.AccountID = :AccountID\n" +
  3648. " AND pd.createtime >= :CreateTimeStart\n" +
  3649. " AND pd.createtime < :CreateTimeEnd) qd\n" +
  3650. //" left join tp_pc_productionline pcpl\n" +
  3651. //" on pcpl.productionlineid = qd.productionlineid\n" +
  3652. " left join tp_pc_procedure pcp\n" +
  3653. " on pcp.procedureid = qd.procedureid\n" +
  3654. " left join tp_mst_goods mstgoods\n" +
  3655. " on mstgoods.goodsid = qd.goodsid\n" +
  3656. //" left join tp_mst_goodstype mstgoodstype\n" +
  3657. //" on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3658. //" left join tp_mst_goodstype mstgoodstype2\n" +
  3659. //" on mstgoodstype2.goodstypecode =\n" +
  3660. //" substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3661. " group by grouping sets((--pcpl.productionlinename,\n" +
  3662. " pcp.procedurename,\n" +
  3663. //" mstgoodstype2.goodstypename,\n" +
  3664. //" --qd.usercode,\n" +
  3665. //" mstgoodstype.goodstypename,\n" +
  3666. " mstgoods.goodscode),\n" +
  3667. " pcp.procedurename,())\n" +
  3668. " order by --pcpl.productionlinename,\n" +
  3669. " pcp.procedurename,\n" +
  3670. //" mstgoodstype2.goodstypename,\n" +
  3671. //" --qd.usercode,\n" +
  3672. //" mstgoodstype.goodstypename,\n" +
  3673. " mstgoods.goodscode) qdgroup";
  3674. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  3675. ServiceResultEntity sre = new ServiceResultEntity();
  3676. if (data == null || data.Rows.Count == 0)
  3677. {
  3678. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3679. return sre;
  3680. }
  3681. sre.Data = new DataSet();
  3682. sre.Data.Tables.Add(data);
  3683. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, rptSProcedureID, ParameterDirection.Input));
  3684. string sqlString1 = "\n" +
  3685. "select qdgroup.gid,\n" +
  3686. //" decode(qdgroup.gid, 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  3687. " decode(qdgroup.gid, 7, '总计', 3, '合计', 0, qdgroup.procedurename, '') procedurename,\n" +
  3688. " decode(qdgroup.gid, 1, '小计', 0, qdgroup.kilncode, '') kilncode,\n" +
  3689. //" decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  3690. " decode(qdgroup.gid, 0, qdgroup.goodstypename2, '') goodstypename2,\n" +
  3691. //" --decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\n" +
  3692. //" decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
  3693. //" decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode,\n" +
  3694. " to_char(qdgroup.OutKilnCount) OutKilnCount,\n" +
  3695. //" qdgroup.GoodCount,\n" +
  3696. // 合格率(正品+副品)
  3697. //" to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent\n" +
  3698. " to_char(((qdgroup.GoodCount +qdgroup.BadCount) / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent\n" +
  3699. //" qdgroup.SubstandardCount,\n" +
  3700. //" to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  3701. //" '990.00') || '%' SubstandardPercent,\n" +
  3702. //" qdgroup.BadCount,\n" +
  3703. //" to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  3704. //" qdgroup.ReFireCount,\n" +
  3705. //" to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  3706. //" '990.00') || '%' ReFirePercent\n" +
  3707. " from (select grouping_id(--pcpl.productionlinename,\n" +
  3708. " pcp.procedurename,\n" +
  3709. " mstkiln.kilncode,\n" +
  3710. " mstgoodstype2.goodstypename) gid,\n" +
  3711. //" --qd.usercode,\n" +
  3712. //" mstgoods.goodscode) gid,\n" +
  3713. //" pcpl.productionlinename,\n" +
  3714. " pcp.procedurename,\n" +
  3715. " mstkiln.kilncode,\n" +
  3716. " mstgoodstype2.goodstypename goodstypename2,\n" +
  3717. //" --qd.usercode,\n" +
  3718. //" mstgoodstype.goodstypename,\n" +
  3719. //" mstgoods.goodscode,\n" +
  3720. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  3721. " sum(qd.GoodCount) GoodCount,\n" +
  3722. //" sum(qd.SubstandardCount) SubstandardCount,\n" +
  3723. " sum(qd.BadCount) BadCount\n" +
  3724. //" sum(qd.ReFireCount) ReFireCount\n" +
  3725. " from (select --pdbc.barcode,\n" +
  3726. //" pdbc.productionlineid,\n" +
  3727. " pdata.procedureid,\n" +
  3728. //" --pdata.usercode,\n" +
  3729. " pdbc.goodsid,\n" +
  3730. " pdbc.kilnid,\n" +
  3731. " 1 OutKilnCount,\n" +
  3732. " case\n" +
  3733. " when defect.defectprocedureid is not null and glt.goodsleveltypeid in (5, 6, 7) then\n" +
  3734. " 0\n" +
  3735. " else\n" +
  3736. " 1\n" +
  3737. " end GoodCount,\n" +
  3738. //" case\n" +
  3739. //" when defect.defectprocedureid is not null and glt.goodsleveltypeid = 7 then\n" +
  3740. //" 1\n" +
  3741. //" else\n" +
  3742. //" 0\n" +
  3743. //" end SubstandardCount,\n" +
  3744. //" case\n" +
  3745. //" when defect.defectprocedureid is not null and glt.goodsleveltypeid = 6 then\n" +
  3746. //" 1\n" +
  3747. //" else\n" +
  3748. //" 0\n" +
  3749. //" end ReFireCount,\n" +
  3750. " case\n" +
  3751. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 5 then\n" +
  3752. " 1\n" +
  3753. " else\n" +
  3754. " 0\n" +
  3755. " end BadCount\n" +
  3756. " from (select distinct pd.barcode,\n" +
  3757. //" pd.productionlineid,\n" +
  3758. " pd.goodsid,\n" +
  3759. " pd.kilnid,\n" +
  3760. " pd.kilncarbatchno\n" +
  3761. " from tp_pm_productiondata pd\n" +
  3762. " where pd.valueflag = '1'\n" +
  3763. " and pd.procedureid = :in_rptSprocedureId \n" +
  3764. " and pd.AccountID = :AccountID\n" +
  3765. " and pd.createtime >= :CreateTimeStart\n" +
  3766. " and pd.createtime < :CreateTimeEnd\n" +
  3767. " ) pdbc\n" +
  3768. " inner join (select pd.barcode,\n" +
  3769. //" --pd.userid,\n" +
  3770. //" --pd.usercode,\n" +
  3771. " pd.procedureid\n" +
  3772. " from tp_pm_productiondata pd\n" +
  3773. " where pd.valueflag = '1'\n" +
  3774. " and pd.AccountID = :AccountID\n" +
  3775. " and pd.usercode = :Usercode\n" +
  3776. // 公坯、干补不算交坯工序的质量。
  3777. //" and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
  3778. // 干补不算交坯工序的质量。
  3779. " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" +
  3780. " ) pdata\n" +
  3781. " on pdata.barcode = pdbc.barcode\n" +
  3782. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid, kcbc.productiondataid\n" +
  3783. " from (select pd.barcode,\n" +
  3784. " pd.kilncarbatchno,\n" +
  3785. " pd.goodsleveltypeid,\n" +
  3786. " pd.productiondataid,\n" +
  3787. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  3788. " from tp_pm_productiondata pd\n" +
  3789. " where pd.valueflag = '1'\n" +
  3790. " and pd.AccountID = :AccountID\n" +
  3791. " and length(pd.kilncarbatchno) > 0\n" +
  3792. " AND pd.createtime >= :CreateTimeStart\n" +
  3793. " and pd.modeltype = -1) kcbc\n" +
  3794. " where kcbc.dataid = 1) glt\n" +
  3795. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  3796. " and pdbc.barcode = glt.barcode\n" +
  3797. " left join (select distinct productiondataid, defectprocedureid" +
  3798. " from tp_pm_defect def " +
  3799. " where def.valueflag='1'" +
  3800. " and def.AccountID = :AccountID\n" +
  3801. " AND def.createtime >= :CreateTimeStart) defect\n" +
  3802. " on defect.productiondataid = glt.productiondataid\n" +
  3803. " and pdata.procedureid = defect.defectprocedureid) qd\n" +
  3804. //" inner join tp_pc_productionline pcpl\n" +
  3805. //" on pcpl.productionlineid = qd.productionlineid\n" +
  3806. " inner join tp_pc_procedure pcp\n" +
  3807. " on pcp.procedureid = qd.procedureid\n" +
  3808. " inner join tp_mst_kiln mstkiln\n" +
  3809. " on mstkiln.kilnid = qd.kilnid\n" +
  3810. " inner join tp_mst_goods mstgoods\n" +
  3811. " on mstgoods.goodsid = qd.goodsid\n" +
  3812. " inner join tp_mst_goodstype mstgoodstype\n" +
  3813. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3814. " inner join tp_mst_goodstype mstgoodstype2\n" +
  3815. " on mstgoodstype2.goodstypecode =\n" +
  3816. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3817. " and mstgoodstype.AccountID = mstgoodstype2.AccountID\n" +
  3818. " group by grouping sets((--pcpl.productionlinename,\n" +
  3819. " pcp.procedurename,\n" +
  3820. " mstkiln.kilncode,\n" +
  3821. " mstgoodstype2.goodstypename),\n" +
  3822. //" --qd.usercode,\n" +
  3823. //" mstgoodstype.goodstypename,\n" +
  3824. //" mstgoods.goodscode),\n" +
  3825. " (--pcpl.productionlinename,\n" +
  3826. " pcp.procedurename,\n" +
  3827. " mstkiln.kilncode),\n" +
  3828. //" mstgoodstype2.goodstypename),\n" +
  3829. " (--pcpl.productionlinename,\n" +
  3830. " pcp.procedurename),\n" +
  3831. //" mstkiln.kilncode),\n" +
  3832. " ())\n" +
  3833. " order by --pcpl.productionlinename,\n" +
  3834. " pcp.procedurename,\n" +
  3835. " mstkiln.kilncode,\n" +
  3836. " mstgoodstype2.goodstypename\n" +
  3837. //" --qd.usercode,\n" +
  3838. //" mstgoodstype.goodstypename,\n" +
  3839. //" mstgoods.goodscode\n" +
  3840. " ) qdgroup\n";
  3841. DataTable data1 = conn.GetSqlResultToDt(sqlString1, parameters.ToArray());
  3842. if (data1 == null || data1.Rows.Count == 0)
  3843. {
  3844. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3845. return sre;
  3846. }
  3847. sre.Data.Tables.Add(data1);
  3848. return sre;
  3849. }
  3850. catch (Exception ex)
  3851. {
  3852. throw ex;
  3853. }
  3854. finally
  3855. {
  3856. if (conn != null &&
  3857. conn.ConnState == ConnectionState.Open)
  3858. {
  3859. conn.Close();
  3860. }
  3861. }
  3862. }
  3863. /// <summary>
  3864. /// 取得FP00002_1画面(工号产量质量分析表-中陶)的查询数据
  3865. /// </summary>
  3866. /// <param name="user">登录用户信息</param>
  3867. /// <param name="se">查询条件</param>
  3868. /// <returns>查询结果</returns>
  3869. public static ServiceResultEntity GetFP00002_1Data(SUserInfo user, int rptSProcedureID, string usercode, DateTime date, string goodscode)
  3870. {
  3871. //if(string.IsNullOrWhiteSpace(usercode))
  3872. //{
  3873. // ServiceResultEntity sre = new ServiceResultEntity();
  3874. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3875. // return sre;
  3876. //}
  3877. IDBConnection conn = null;
  3878. try
  3879. {
  3880. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3881. List<OracleParameter> parameters = new List<OracleParameter>();
  3882. date = date.Date;
  3883. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3884. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, date, ParameterDirection.Input));
  3885. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, date.AddDays(1), ParameterDirection.Input));
  3886. parameters.Add(new OracleParameter(":Usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
  3887. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, goodscode, ParameterDirection.Input));
  3888. #region
  3889. // 产量
  3890. string sqlString = "\n" +
  3891. "select qdgroup.gid,\n" +
  3892. //" decode(qdgroup.gid, 7, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  3893. " decode(qdgroup.gid, 3, '总计', 1, '合计', 0, qdgroup.procedurename, '') procedurename,\n" +
  3894. //" decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  3895. //" --decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\n" +
  3896. //" decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
  3897. " decode(qdgroup.gid, 0, qdgroup.goodscode, '') goodscode,\n" +
  3898. " to_char(qdgroup.production) production\n" +
  3899. " from (select grouping_id(--pcpl.productionlinename,\n" +
  3900. " pcp.procedurename,\n" +
  3901. //" mstgoodstype2.goodstypename,\n" +
  3902. //" --qd.usercode,\n" +
  3903. " mstgoods.goodscode) gid,\n" +
  3904. //" pcpl.productionlinename,\n" +
  3905. " pcp.procedurename,\n" +
  3906. //" mstgoodstype2.goodstypename goodstypename2,\n" +
  3907. " --qd.usercode,\n" +
  3908. //" mstgoodstype.goodstypename,\n" +
  3909. " mstgoods.goodscode,\n" +
  3910. " sum(qd.production) production\n" +
  3911. " from (select --pd.barcode,\n" +
  3912. //" pd.productionlineid,\n" +
  3913. " pd.procedureid,\n" +
  3914. " pd.goodsid,\n" +
  3915. " --pd.userid,\n" +
  3916. " --pd.usercode,\n" +
  3917. " 1 production\n" +
  3918. " from tp_pm_productiondata pd\n" +
  3919. " where pd.valueflag = '1'\n" +
  3920. " and ((pd.modeltype <> 5) or\n" +
  3921. " (pd.modeltype = 5 and pd.SpecialRepairFlag = '0'))\n" +
  3922. " and pd.Usercode = :Usercode\n" +
  3923. " and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
  3924. " and pd.AccountID = :AccountID\n" +
  3925. " AND pd.createtime >= :CreateTimeStart\n" +
  3926. " AND pd.createtime < :CreateTimeEnd) qd\n" +
  3927. //" left join tp_pc_productionline pcpl\n" +
  3928. //" on pcpl.productionlineid = qd.productionlineid\n" +
  3929. " left join tp_pc_procedure pcp\n" +
  3930. " on pcp.procedureid = qd.procedureid\n" +
  3931. " left join tp_mst_goods mstgoods\n" +
  3932. " on mstgoods.goodsid = qd.goodsid\n" +
  3933. //" left join tp_mst_goodstype mstgoodstype\n" +
  3934. //" on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3935. //" left join tp_mst_goodstype mstgoodstype2\n" +
  3936. //" on mstgoodstype2.goodstypecode =\n" +
  3937. //" substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3938. " group by grouping sets((--pcpl.productionlinename,\n" +
  3939. " pcp.procedurename,\n" +
  3940. //" mstgoodstype2.goodstypename,\n" +
  3941. //" --qd.usercode,\n" +
  3942. //" mstgoodstype.goodstypename,\n" +
  3943. " mstgoods.goodscode),\n" +
  3944. " pcp.procedurename,())\n" +
  3945. " order by --pcpl.productionlinename,\n" +
  3946. " pcp.procedurename,\n" +
  3947. //" mstgoodstype2.goodstypename,\n" +
  3948. //" --qd.usercode,\n" +
  3949. //" mstgoodstype.goodstypename,\n" +
  3950. " mstgoods.goodscode) qdgroup";
  3951. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  3952. ServiceResultEntity sre = new ServiceResultEntity();
  3953. if (data == null)
  3954. {
  3955. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3956. return sre;
  3957. }
  3958. sre.Data = new DataSet();
  3959. sre.Data.Tables.Add(data);
  3960. #endregion
  3961. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, rptSProcedureID, ParameterDirection.Input));
  3962. #region
  3963. string sqlString1 = "\n" +
  3964. "select qdgroup.gid,\n" +
  3965. //" decode(qdgroup.gid, 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  3966. " decode(qdgroup.gid, 7, '总计', 3, '合计', 0, qdgroup.procedurename, '') procedurename,\n" +
  3967. " decode(qdgroup.gid, 1, '小计', 0, qdgroup.kilncode, '') kilncode,\n" +
  3968. //" decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  3969. //" decode(qdgroup.gid, 0, qdgroup.goodstypename2, '') goodstypename2,\n" +
  3970. //" --decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\n" +
  3971. //" decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
  3972. " decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode,\n" +
  3973. " to_char(qdgroup.OutKilnCount) OutKilnCount,\n" +
  3974. //" qdgroup.GoodCount,\n" +
  3975. // 合格率(正品+副品)
  3976. //" to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent\n" +
  3977. " to_char(((qdgroup.GoodCount +qdgroup.BadCount) / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent\n" +
  3978. //" qdgroup.SubstandardCount,\n" +
  3979. //" to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  3980. //" '990.00') || '%' SubstandardPercent,\n" +
  3981. //" qdgroup.BadCount,\n" +
  3982. //" to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  3983. //" qdgroup.ReFireCount,\n" +
  3984. //" to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  3985. //" '990.00') || '%' ReFirePercent\n" +
  3986. " from (select grouping_id(--pcpl.productionlinename,\n" +
  3987. " pcp.procedurename,\n" +
  3988. " mstkiln.kilncode,\n" +
  3989. //" mstgoodstype2.goodstypename) gid,\n" +
  3990. //" --qd.usercode,\n" +
  3991. " mstgoods.goodscode) gid,\n" +
  3992. //" pcpl.productionlinename,\n" +
  3993. " pcp.procedurename,\n" +
  3994. " mstkiln.kilncode,\n" +
  3995. //" mstgoodstype2.goodstypename goodstypename2,\n" +
  3996. //" --qd.usercode,\n" +
  3997. //" mstgoodstype.goodstypename,\n" +
  3998. " mstgoods.goodscode,\n" +
  3999. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  4000. " sum(qd.GoodCount) GoodCount,\n" +
  4001. //" sum(qd.SubstandardCount) SubstandardCount,\n" +
  4002. " sum(qd.BadCount) BadCount\n" +
  4003. //" sum(qd.ReFireCount) ReFireCount\n" +
  4004. " from (select --pdbc.barcode,\n" +
  4005. //" pdbc.productionlineid,\n" +
  4006. " pdata.procedureid,\n" +
  4007. //" --pdata.usercode,\n" +
  4008. " pdbc.goodsid,\n" +
  4009. " pdbc.kilnid,\n" +
  4010. " 1 OutKilnCount,\n" +
  4011. " case\n" +
  4012. " when defect.defectprocedureid is not null and glt.goodsleveltypeid in (5, 6, 7) then\n" +
  4013. " 0\n" +
  4014. " else\n" +
  4015. " 1\n" +
  4016. " end GoodCount,\n" +
  4017. //" case\n" +
  4018. //" when defect.defectprocedureid is not null and glt.goodsleveltypeid = 7 then\n" +
  4019. //" 1\n" +
  4020. //" else\n" +
  4021. //" 0\n" +
  4022. //" end SubstandardCount,\n" +
  4023. //" case\n" +
  4024. //" when defect.defectprocedureid is not null and glt.goodsleveltypeid = 6 then\n" +
  4025. //" 1\n" +
  4026. //" else\n" +
  4027. //" 0\n" +
  4028. //" end ReFireCount,\n" +
  4029. " case\n" +
  4030. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 5 then\n" +
  4031. " 1\n" +
  4032. " else\n" +
  4033. " 0\n" +
  4034. " end BadCount\n" +
  4035. " from (select distinct pd.barcode,\n" +
  4036. //" pd.productionlineid,\n" +
  4037. " pd.goodsid,\n" +
  4038. " pd.kilnid,\n" +
  4039. " pd.kilncarbatchno\n" +
  4040. " from tp_pm_productiondata pd\n" +
  4041. " where pd.valueflag = '1'\n" +
  4042. " and pd.procedureid = :in_rptSprocedureId \n" +
  4043. " and pd.AccountID = :AccountID\n" +
  4044. " and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
  4045. " and pd.checktime >= :CreateTimeStart\n" +
  4046. " and pd.checktime < :CreateTimeEnd\n" +
  4047. " ) pdbc\n" +
  4048. " inner join (select pd.barcode,\n" +
  4049. //" --pd.userid,\n" +
  4050. //" --pd.usercode,\n" +
  4051. " pd.procedureid\n" +
  4052. " from tp_pm_productiondata pd\n" +
  4053. " where pd.valueflag = '1'\n" +
  4054. " and pd.AccountID = :AccountID\n" +
  4055. " and pd.usercode = :Usercode\n" +
  4056. " and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
  4057. // 公坯、干补不算交坯工序的质量。
  4058. //" and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
  4059. // 干补不算交坯工序的质量。
  4060. " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" +
  4061. " ) pdata\n" +
  4062. " on pdata.barcode = pdbc.barcode\n" +
  4063. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid, kcbc.productiondataid\n" +
  4064. " from (select pd.barcode,\n" +
  4065. " pd.kilncarbatchno,\n" +
  4066. " pd.goodsleveltypeid,\n" +
  4067. " pd.productiondataid,\n" +
  4068. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  4069. " from tp_pm_productiondata pd\n" +
  4070. " where pd.valueflag = '1'\n" +
  4071. " and pd.AccountID = :AccountID\n" +
  4072. " and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
  4073. " and length(pd.kilncarbatchno) > 0\n" +
  4074. " AND pd.createtime >= :CreateTimeStart\n" +
  4075. " and pd.modeltype = -1) kcbc\n" +
  4076. " where kcbc.dataid = 1) glt\n" +
  4077. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  4078. " and pdbc.barcode = glt.barcode\n" +
  4079. " left join (select distinct productiondataid, defectprocedureid" +
  4080. " from tp_pm_defect def " +
  4081. " where def.valueflag='1'" +
  4082. " and def.AccountID = :AccountID\n" +
  4083. " and (:goodscode is null or instr(def.goodscode, :goodscode) > 0)\n" +
  4084. " AND def.createtime >= :CreateTimeStart) defect\n" +
  4085. " on defect.productiondataid = glt.productiondataid\n" +
  4086. " and pdata.procedureid = defect.defectprocedureid) qd\n" +
  4087. //" inner join tp_pc_productionline pcpl\n" +
  4088. //" on pcpl.productionlineid = qd.productionlineid\n" +
  4089. " inner join tp_pc_procedure pcp\n" +
  4090. " on pcp.procedureid = qd.procedureid\n" +
  4091. " inner join tp_mst_kiln mstkiln\n" +
  4092. " on mstkiln.kilnid = qd.kilnid\n" +
  4093. " inner join tp_mst_goods mstgoods\n" +
  4094. " on mstgoods.goodsid = qd.goodsid\n" +
  4095. //" inner join tp_mst_goodstype mstgoodstype\n" +
  4096. //" on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  4097. //" inner join tp_mst_goodstype mstgoodstype2\n" +
  4098. //" on mstgoodstype2.goodstypecode =\n" +
  4099. //" substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  4100. //" and mstgoodstype.AccountID = mstgoodstype2.AccountID\n" +
  4101. " group by grouping sets((--pcpl.productionlinename,\n" +
  4102. " pcp.procedurename,\n" +
  4103. " mstkiln.kilncode,\n" +
  4104. //" mstgoodstype2.goodstypename),\n" +
  4105. //" --qd.usercode,\n" +
  4106. //" mstgoodstype.goodstypename,\n" +
  4107. " mstgoods.goodscode),\n" +
  4108. " (--pcpl.productionlinename,\n" +
  4109. " pcp.procedurename,\n" +
  4110. " mstkiln.kilncode),\n" +
  4111. //" mstgoodstype2.goodstypename),\n" +
  4112. " (--pcpl.productionlinename,\n" +
  4113. " pcp.procedurename),\n" +
  4114. //" mstkiln.kilncode),\n" +
  4115. " ())\n" +
  4116. " order by --pcpl.productionlinename,\n" +
  4117. " pcp.procedurename,\n" +
  4118. " mstkiln.kilncode,\n" +
  4119. //" mstgoodstype2.goodstypename\n" +
  4120. //" --qd.usercode,\n" +
  4121. //" mstgoodstype.goodstypename,\n" +
  4122. " mstgoods.goodscode\n" +
  4123. " ) qdgroup\n";
  4124. DataTable data1 = conn.GetSqlResultToDt(sqlString1, parameters.ToArray());
  4125. if (data1 == null)
  4126. {
  4127. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4128. return sre;
  4129. }
  4130. sre.Data.Tables.Add(data1);
  4131. return sre;
  4132. #endregion
  4133. }
  4134. catch (Exception ex)
  4135. {
  4136. throw ex;
  4137. }
  4138. finally
  4139. {
  4140. if (conn != null &&
  4141. conn.ConnState == ConnectionState.Open)
  4142. {
  4143. conn.Close();
  4144. }
  4145. }
  4146. }
  4147. /// <summary>
  4148. /// 取得RPT000001画面(半检数据统计表)的查询数据
  4149. /// </summary>
  4150. /// <param name="user">登录用户信息</param>
  4151. /// <param name="se">查询条件</param>
  4152. /// <returns>查询结果</returns>
  4153. public static ServiceResultEntity GetPDARPT000001Data(SUserInfo user, string usercode, DateTime datebegin, DateTime dateend)
  4154. {
  4155. IDBConnection conn = null;
  4156. try
  4157. {
  4158. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4159. List<OracleParameter> parameters = new List<OracleParameter>();
  4160. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4161. parameters.Add(new OracleParameter(":datebegin", OracleDbType.Date, datebegin, ParameterDirection.Input));
  4162. parameters.Add(new OracleParameter(":dateend", OracleDbType.Date, dateend, ParameterDirection.Input));
  4163. parameters.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
  4164. // 返工
  4165. string sqlString =
  4166. "SELECT p.procedurename, op.procedurename overprocedurename, sc.goodscode, COUNT(sc.semicheckid) reworkcount\n" +
  4167. " FROM TP_PM_SemiCheck sc\n" +
  4168. " INNER JOIN tp_pc_procedure p\n" +
  4169. " ON p.procedureid = sc.ReworkProcedureID\n" +
  4170. " INNER JOIN tp_pc_procedure op\n" +
  4171. " ON op.procedureid = sc.ProcedureID\n" +
  4172. " WHERE sc.accountid = :accountid\n" +
  4173. " AND sc.ValueFlag = '1'\n" +
  4174. " AND sc.BackOutFlag = '0'\n" +
  4175. " AND sc.SemiCheckType = 1\n" +
  4176. " AND (:usercode IS NULL OR sc.reworkusercode = :usercode)\n" +
  4177. " AND (:datebegin IS NULL OR sc.semichecktime >= :datebegin)\n" +
  4178. " AND (:dateend IS NULL OR sc.semichecktime <= :dateend)\n" +
  4179. " GROUP BY p.procedurename, op.procedurename, p.displayno, sc.goodscode, sc.goodsid\n" +
  4180. " ORDER BY p.displayno, sc.goodscode";
  4181. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  4182. ServiceResultEntity sre = new ServiceResultEntity();
  4183. //if (data == null || data.Rows.Count == 0)
  4184. //{
  4185. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4186. // return sre;
  4187. //}
  4188. data.TableName = "rework";
  4189. sre.Data = new DataSet();
  4190. sre.Data.Tables.Add(data);
  4191. // 复检
  4192. string sqlString1 =
  4193. "SELECT p.procedurename, op.procedurename overprocedurename\n" +
  4194. " ,sc.goodscode\n" +
  4195. " ,SUM(decode(sc.ReSemiCheckType, 1, 1, 0)) qcount\n" +
  4196. " ,SUM(decode(sc.ReSemiCheckType, 2, 1, 0)) unqcount\n" +
  4197. " FROM TP_PM_SemiCheck sc\n" +
  4198. " INNER JOIN tp_pc_procedure p\n" +
  4199. " ON p.procedureid = sc.ReworkProcedureID\n" +
  4200. " INNER JOIN tp_pc_procedure op\n" +
  4201. " ON op.procedureid = sc.ProcedureID\n" +
  4202. " WHERE sc.accountid = :accountid\n" +
  4203. " AND sc.ValueFlag = '1'\n" +
  4204. " AND sc.BackOutFlag = '0'\n" +
  4205. " AND sc.SemiCheckType = 1\n" +
  4206. " AND sc.ReSemiCheckType <> 0\n" +
  4207. " AND (:usercode IS NULL OR sc.reworkusercode = :usercode)\n" +
  4208. " AND (:datebegin IS NULL OR sc.semichecktime >= :datebegin)\n" +
  4209. " AND (:dateend IS NULL OR sc.semichecktime <= :dateend)\n" +
  4210. " GROUP BY p.procedurename, op.procedurename, p.displayno, sc.goodscode\n" +
  4211. " ORDER BY p.displayno, sc.goodscode";
  4212. DataTable data1 = conn.GetSqlResultToDt(sqlString1, parameters.ToArray());
  4213. //if (data1 == null || data1.Rows.Count == 0)
  4214. //{
  4215. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4216. // return sre;
  4217. //}
  4218. data1.TableName = "ReSemiCheck";
  4219. sre.Data.Tables.Add(data1);
  4220. // 未复检(总)
  4221. string sqlString2 =
  4222. "SELECT p.procedurename, op.procedurename overprocedurename\n" +
  4223. " ,sc.goodscode\n" +
  4224. //" ,SUM(decode(sc.ReSemiCheckType, 1, 1, 0)) qcount\n" +
  4225. //" ,SUM(decode(sc.ReSemiCheckType, 2, 1, 0)) unqcount\n" +
  4226. " ,COUNT(sc.semicheckid) renocountsum\n" +
  4227. " FROM TP_PM_SemiCheck sc\n" +
  4228. " INNER JOIN tp_pc_procedure p\n" +
  4229. " ON p.procedureid = sc.ReworkProcedureID\n" +
  4230. " INNER JOIN tp_pc_procedure op\n" +
  4231. " ON op.procedureid = sc.ProcedureID\n" +
  4232. " WHERE sc.accountid = :accountid\n" +
  4233. " AND sc.ValueFlag = '1'\n" +
  4234. " AND sc.BackOutFlag = '0'\n" +
  4235. " AND sc.SemiCheckType = 1\n" +
  4236. " AND sc.ReSemiCheckType = 0\n" +
  4237. " AND (:usercode IS NULL OR sc.reworkusercode = :usercode)\n" +
  4238. //" AND (:datebegin IS NULL OR sc.semichecktime >= :datebegin)\n" +
  4239. //" AND (:dateend IS NULL OR sc.semichecktime <= :dateend)\n" +
  4240. " GROUP BY p.procedurename, op.procedurename, p.displayno, sc.goodscode\n" +
  4241. " ORDER BY p.displayno, sc.goodscode";
  4242. parameters.Clear();
  4243. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4244. //parameters.Add(new OracleParameter(":datebegin", OracleDbType.Date, datebegin, ParameterDirection.Input));
  4245. //parameters.Add(new OracleParameter(":dateend", OracleDbType.Date, dateend, ParameterDirection.Input));
  4246. parameters.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
  4247. DataTable data2 = conn.GetSqlResultToDt(sqlString2, parameters.ToArray());
  4248. //if (data1 == null || data1.Rows.Count == 0)
  4249. //{
  4250. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4251. // return sre;
  4252. //}
  4253. data2.TableName = "NoReSemiCheck";
  4254. sre.Data.Tables.Add(data2);
  4255. // 半检不合格
  4256. string sqlString3 =
  4257. "SELECT scdp.procedurename, op.procedurename overprocedurename\n" +
  4258. " ,sc.goodscode\n" +
  4259. " ,COUNT(distinct sc.semicheckid) badcountsum\n" +
  4260. " FROM TP_PM_SemiCheck sc\n" +
  4261. //" INNER JOIN tp_pc_procedure p\n" +
  4262. //" ON p.procedureid = sc.ReworkProcedureID\n" +
  4263. " INNER JOIN tp_pc_procedure op\n" +
  4264. " ON op.procedureid = sc.ProcedureID\n" +
  4265. " LEFT JOIN TP_PM_SemiCheckDefect scd\n" +
  4266. " ON sc.semicheckid = scd.semicheckid\n" +
  4267. " LEFT JOIN tp_pc_procedure scdp\n" +
  4268. " ON scdp.procedureid = scd.defectprocedureid\n" +
  4269. " WHERE sc.accountid = :accountid\n" +
  4270. " AND sc.ValueFlag = '1'\n" +
  4271. " AND sc.BackOutFlag = '0'\n" +
  4272. " AND sc.SemiCheckType = 2\n" +
  4273. " AND sc.ReSemiCheckType = 0\n" +
  4274. //" AND (:usercode IS NULL OR sc.reworkusercode = :usercode)\n" +
  4275. " AND (:usercode IS NULL OR scd.defectusercode = :usercode)\n" +
  4276. " AND (:datebegin IS NULL OR sc.semichecktime >= :datebegin)\n" +
  4277. " AND (:dateend IS NULL OR sc.semichecktime <= :dateend)\n" +
  4278. " GROUP BY scdp.procedurename, op.procedurename, scdp.displayno, sc.goodscode\n" +
  4279. " ORDER BY scdp.displayno, sc.goodscode";
  4280. parameters.Clear();
  4281. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4282. parameters.Add(new OracleParameter(":datebegin", OracleDbType.Date, datebegin, ParameterDirection.Input));
  4283. parameters.Add(new OracleParameter(":dateend", OracleDbType.Date, dateend, ParameterDirection.Input));
  4284. parameters.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
  4285. DataTable data3 = conn.GetSqlResultToDt(sqlString3, parameters.ToArray());
  4286. //if (data1 == null || data1.Rows.Count == 0)
  4287. //{
  4288. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4289. // return sre;
  4290. //}
  4291. data3.TableName = "SemiCheckBad";
  4292. sre.Data.Tables.Add(data3);
  4293. return sre;
  4294. }
  4295. catch (Exception ex)
  4296. {
  4297. throw ex;
  4298. }
  4299. finally
  4300. {
  4301. if (conn != null &&
  4302. conn.ConnState == ConnectionState.Open)
  4303. {
  4304. conn.Close();
  4305. }
  4306. }
  4307. }
  4308. /// <summary>
  4309. /// 取得RPT000002画面(工号质量统计表)的查询数据
  4310. /// </summary>
  4311. /// <param name="user">登录用户信息</param>
  4312. /// <param name="se">查询条件</param>
  4313. /// <returns>查询结果</returns>
  4314. public static ServiceResultEntity GetPDARPT000002Data(SUserInfo user, int rptSProcedureID, string usercode, DateTime datebegin, DateTime dateend)
  4315. {
  4316. IDBConnection conn = null;
  4317. try
  4318. {
  4319. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4320. List<OracleParameter> parameters = new List<OracleParameter>();
  4321. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4322. parameters.Add(new OracleParameter(":DateBegin", OracleDbType.Date, datebegin, ParameterDirection.Input));
  4323. parameters.Add(new OracleParameter(":DateEnd", OracleDbType.Date, dateend, ParameterDirection.Input));
  4324. parameters.Add(new OracleParameter(":Usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
  4325. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, rptSProcedureID, ParameterDirection.Input));
  4326. string sqlString1 =
  4327. "select qdgroup.GoodsCode,\n" +
  4328. " qdgroup.OutKilnCount OutKilnCount,\n" +
  4329. // 合格品(正品+副品)
  4330. " qdgroup.GoodCount + qdgroup.BadCount as pcount,\n" +
  4331. // 合格率(正品+副品)
  4332. " to_char(((qdgroup.GoodCount +qdgroup.BadCount) / qdgroup.OutKilnCount) * 100, '990.00') || '%' PPercent,\n" +
  4333. // 正品
  4334. " qdgroup.GoodCount,\n" +
  4335. " to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent,\n" +
  4336. // 副品
  4337. " qdgroup.BadCount,\n" +
  4338. " to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  4339. // 次品
  4340. " qdgroup.SubstandardCount,\n" +
  4341. " to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  4342. " '990.00') || '%' SubstandardPercent,\n" +
  4343. // 重烧
  4344. " qdgroup.ReFireCount,\n" +
  4345. " to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  4346. " '990.00') || '%' ReFirePercent\n" +
  4347. " from (select qd.goodscode || '【' || pcp.procedurename || '】' as GoodsCode,\n" +
  4348. //" pcp.procedurename,\n" +
  4349. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  4350. " sum(qd.GoodCount) GoodCount,\n" +
  4351. " sum(qd.SubstandardCount) SubstandardCount,\n" +
  4352. " sum(qd.BadCount) BadCount,\n" +
  4353. " sum(qd.ReFireCount) ReFireCount\n" +
  4354. " from (select --pdbc.barcode,\n" +
  4355. " pdata.procedureid,\n" +
  4356. " pdbc.goodscode,\n" +
  4357. " 1 OutKilnCount,\n" +
  4358. " case\n" +
  4359. " when defect.defectprocedureid is not null and glt.goodsleveltypeid in (5, 6, 7) then\n" +
  4360. " 0\n" +
  4361. " else\n" +
  4362. " 1\n" +
  4363. " end GoodCount,\n" +
  4364. " case\n" +
  4365. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 7 then\n" +
  4366. " 1\n" +
  4367. " else\n" +
  4368. " 0\n" +
  4369. " end SubstandardCount,\n" +
  4370. " case\n" +
  4371. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 6 then\n" +
  4372. " 1\n" +
  4373. " else\n" +
  4374. " 0\n" +
  4375. " end ReFireCount,\n" +
  4376. " case\n" +
  4377. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 5 then\n" +
  4378. " 1\n" +
  4379. " else\n" +
  4380. " 0\n" +
  4381. " end BadCount\n" +
  4382. " from (select distinct pd.barcode,\n" +
  4383. " pd.goodscode,\n" +
  4384. " pd.kilncarbatchno\n" +
  4385. " from tp_pm_productiondata pd\n" +
  4386. " where pd.valueflag = '1'\n" +
  4387. " and pd.procedureid = :in_rptSprocedureId \n" +
  4388. " and pd.AccountID = :AccountID\n" +
  4389. " and pd.createtime >= :DateBegin\n" +
  4390. " and pd.createtime <= :DateEnd\n" +
  4391. " ) pdbc\n" +
  4392. " inner join (select pd.barcode,\n" +
  4393. " pd.procedureid\n" +
  4394. " from tp_pm_productiondata pd\n" +
  4395. " where pd.valueflag = '1'\n" +
  4396. " and pd.AccountID = :AccountID\n" +
  4397. " and pd.usercode = :Usercode\n" +
  4398. // 公坯、干补不算交坯工序的质量。
  4399. //" and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
  4400. // 干补不算交坯工序的质量。
  4401. " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" +
  4402. " ) pdata\n" +
  4403. " on pdata.barcode = pdbc.barcode\n" +
  4404. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid, kcbc.productiondataid\n" +
  4405. " from (select pd.barcode,\n" +
  4406. " pd.kilncarbatchno,\n" +
  4407. " pd.goodsleveltypeid,\n" +
  4408. " pd.productiondataid,\n" +
  4409. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  4410. " from tp_pm_productiondata pd\n" +
  4411. " where pd.valueflag = '1'\n" +
  4412. " and pd.AccountID = :AccountID\n" +
  4413. " and length(pd.kilncarbatchno) > 0\n" +
  4414. " AND pd.createtime >= :DateBegin\n" +
  4415. " and pd.modeltype = -1) kcbc\n" +
  4416. " where kcbc.dataid = 1) glt\n" +
  4417. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  4418. " and pdbc.barcode = glt.barcode\n" +
  4419. " left join (select distinct productiondataid, defectprocedureid\n" +
  4420. " from tp_pm_defect def\n" +
  4421. " where def.valueflag='1'\n" +
  4422. " and def.AccountID = :AccountID\n" +
  4423. " AND def.createtime >= :DateBegin) defect\n" +
  4424. " on defect.productiondataid = glt.productiondataid\n" +
  4425. " and pdata.procedureid = defect.defectprocedureid) qd\n" +
  4426. " inner join tp_pc_procedure pcp\n" +
  4427. " on pcp.procedureid = qd.procedureid\n" +
  4428. " group by qd.goodscode, pcp.procedurename, pcp.displayno\n" +
  4429. " order by pcp.displayno,\n" +
  4430. " qd.goodscode\n" +
  4431. " ) qdgroup\n";
  4432. ServiceResultEntity sre = new ServiceResultEntity();
  4433. sre.Data = new DataSet();
  4434. DataTable data1 = conn.GetSqlResultToDt(sqlString1, parameters.ToArray());
  4435. //if (data1 == null || data1.Rows.Count == 0)
  4436. //{
  4437. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4438. // return sre;
  4439. //}
  4440. sre.Data.Tables.Add(data1);
  4441. return sre;
  4442. }
  4443. catch (Exception ex)
  4444. {
  4445. throw ex;
  4446. }
  4447. finally
  4448. {
  4449. if (conn != null &&
  4450. conn.ConnState == ConnectionState.Open)
  4451. {
  4452. conn.Close();
  4453. }
  4454. }
  4455. }
  4456. /// <summary>
  4457. /// 取得RPT000003画面(损坯数据统计表)的查询数据
  4458. /// </summary>
  4459. /// <param name="user">登录用户信息</param>
  4460. /// <param name="se">查询条件</param>
  4461. /// <returns>查询结果</returns>
  4462. public static ServiceResultEntity GetPDARPT000003Data(SUserInfo user, string usercode, DateTime datebegin, DateTime dateend)
  4463. {
  4464. IDBConnection conn = null;
  4465. try
  4466. {
  4467. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4468. List<OracleParameter> parameters = new List<OracleParameter>();
  4469. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4470. parameters.Add(new OracleParameter(":datebegin", OracleDbType.Date, datebegin, ParameterDirection.Input));
  4471. parameters.Add(new OracleParameter(":dateend", OracleDbType.Date, dateend, ParameterDirection.Input));
  4472. parameters.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
  4473. // 本工号损坯
  4474. string sqlString =
  4475. "SELECT spp.procedurename sppname\n" +
  4476. " ,rpp.procedurename rppname\n" +
  4477. " ,sp.goodscode\n" +
  4478. " ,COUNT(sp.barcode) scount\n" +
  4479. " FROM TP_PM_ScrapProduct sp\n" +
  4480. " INNER JOIN tp_pc_procedure spp\n" +
  4481. " ON spp.ProcedureID = sp.procedureid\n" +
  4482. " LEFT JOIN TP_PM_ResponProcedure rp\n" +
  4483. " ON rp.scrapproductid = sp.scrapproductid\n" +
  4484. " LEFT JOIN tp_pc_procedure rpp\n" +
  4485. " ON rp.procedureid = rpp.procedureid\n" +
  4486. " WHERE sp.accountid = :accountid\n" +
  4487. " AND sp.auditstatus = 1\n" +
  4488. " AND sp.valueflag = '1'\n" +
  4489. " AND sp.GoodsLevelTypeID IN (8, 9)\n" +
  4490. " AND sp.ScrapType = '0'\n" +
  4491. // 重烧后报损,不算后道损
  4492. //" AND sp.IsReFire = '0'\n" +
  4493. " AND EXISTS (SELECT 1\n" +
  4494. " FROM TP_PM_ScrapResponsible sr\n" +
  4495. " WHERE sr.scrapproductid = sp.scrapproductid\n" +
  4496. " AND sr.usercode = :usercode)\n" +
  4497. " AND sp.AuditDate >= :datebegin\n" +
  4498. " AND sp.AuditDate <= :dateend\n" +
  4499. " GROUP BY spp.procedurename\n" +
  4500. " ,rpp.procedurename\n" +
  4501. " ,spp.displayno\n" +
  4502. " ,rpp.displayno\n" +
  4503. " ,sp.goodscode\n" +
  4504. " ORDER BY spp.displayno, rpp.displayno, sp.goodscode";
  4505. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  4506. ServiceResultEntity sre = new ServiceResultEntity();
  4507. //if (data == null || data.Rows.Count == 0)
  4508. //{
  4509. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4510. // return sre;
  4511. //}
  4512. data.TableName = "this";
  4513. sre.Data = new DataSet();
  4514. sre.Data.Tables.Add(data);
  4515. // 后道损坯
  4516. // 后道工序损坯,应该经本工序生产后,非本工序责任损坯
  4517. string sqlString1 =
  4518. "SELECT spp.procedurename sppname\n" +
  4519. " ,rpp.procedurename rppname\n" +
  4520. " ,sp.goodscode\n" +
  4521. " ,COUNT(DISTINCT sp.barcode) scount\n" +
  4522. " FROM TP_PM_ScrapProduct sp\n" +
  4523. " INNER JOIN tp_pc_procedure spp\n" +
  4524. " ON spp.ProcedureID = sp.procedureid\n" +
  4525. " LEFT JOIN TP_PM_ResponProcedure rp\n" +
  4526. " ON rp.scrapproductid = sp.scrapproductid\n" +
  4527. " LEFT JOIN tp_pc_procedure rpp\n" +
  4528. " ON rp.procedureid = rpp.procedureid\n" +
  4529. " WHERE sp.accountid = :accountid\n" +
  4530. " AND sp.auditstatus = 1\n" +
  4531. " AND sp.valueflag = '1'\n" +
  4532. " AND sp.GoodsLevelTypeID IN (8, 9)\n" +
  4533. " AND sp.ScrapType = '0'\n" +
  4534. // 重烧后报损,不算后道损
  4535. " AND sp.IsReFire = '0'\n" +
  4536. // 非本工序责任损坯
  4537. " AND NOT EXISTS (SELECT 1\n" +
  4538. " FROM TP_PM_ScrapResponsible sr\n" +
  4539. " WHERE sr.scrapproductid = sp.scrapproductid\n" +
  4540. " AND sr.usercode = :usercode)\n" +
  4541. // 经本工序生产后
  4542. " AND EXISTS (SELECT 1\n" +
  4543. " FROM tp_pm_productiondata pd\n" +
  4544. " WHERE pd.barcode = sp.barcode\n" +
  4545. " AND pd.productiondataid <= sp.productiondataid\n" +
  4546. " AND pd.usercode = :usercode)\n" +
  4547. " AND sp.AuditDate >= :datebegin\n" +
  4548. " AND sp.AuditDate <= :dateend\n" +
  4549. " GROUP BY spp.procedurename\n" +
  4550. " ,rpp.procedurename\n" +
  4551. " ,spp.displayno\n" +
  4552. " ,rpp.displayno\n" +
  4553. " ,sp.goodscode\n" +
  4554. " ORDER BY spp.displayno, rpp.displayno, sp.goodscode";
  4555. DataTable data1 = conn.GetSqlResultToDt(sqlString1, parameters.ToArray());
  4556. //if (data1 == null || data1.Rows.Count == 0)
  4557. //{
  4558. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4559. // return sre;
  4560. //}
  4561. data1.TableName = "next";
  4562. sre.Data.Tables.Add(data1);
  4563. return sre;
  4564. }
  4565. catch (Exception ex)
  4566. {
  4567. throw ex;
  4568. }
  4569. finally
  4570. {
  4571. if (conn != null &&
  4572. conn.ConnState == ConnectionState.Open)
  4573. {
  4574. conn.Close();
  4575. }
  4576. }
  4577. }
  4578. #endregion
  4579. /// <summary>
  4580. /// 获取用户是否有统计产成品权限
  4581. /// </summary>
  4582. /// <returns></returns>
  4583. public static int GetStatisticsFinishedProductFuntion(SUserInfo userInfo)
  4584. {
  4585. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4586. try
  4587. {
  4588. con.Open();
  4589. string strSql = "";
  4590. strSql = @"SELECT F.Functionlevel,
  4591. F.FunctionCode,
  4592. F.FunctionName,
  4593. F.FullName,
  4594. F.FunctionFlag,
  4595. F.FunctionButtonFlag,
  4596. F.FormName,
  4597. F.ButtonName
  4598. FROM TP_MST_UserRight R LEFT OUTER JOIN
  4599. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  4600. WHERE F.ValueFlag = 1
  4601. AND F.FunctionCode NOT LIKE '0101%'
  4602. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '070205') = 1 /*F.FunctionCode='070205'*/";
  4603. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  4604. DataSet ds = con.GetSqlResultToDs(strSql);
  4605. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4606. {
  4607. return 1;
  4608. }
  4609. return 0;
  4610. }
  4611. catch (Exception ex)
  4612. {
  4613. throw ex;
  4614. }
  4615. finally
  4616. {
  4617. if (con.ConnState == ConnectionState.Open)
  4618. {
  4619. con.Close();
  4620. }
  4621. }
  4622. }
  4623. /// <summary>
  4624. /// 获取用户是否有盘点权限
  4625. /// </summary>
  4626. /// <returns></returns>
  4627. public static int GetInCheckedFuntion(SUserInfo userInfo)
  4628. {
  4629. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4630. try
  4631. {
  4632. con.Open();
  4633. string strSql = "";
  4634. strSql = @"SELECT F.Functionlevel,
  4635. F.FunctionCode,
  4636. F.FunctionName,
  4637. F.FullName,
  4638. F.FunctionFlag,
  4639. F.FunctionButtonFlag,
  4640. F.FormName,
  4641. F.ButtonName
  4642. FROM TP_MST_UserRight R LEFT OUTER JOIN
  4643. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  4644. WHERE F.ValueFlag = 1
  4645. AND F.FunctionCode NOT LIKE '0101%'
  4646. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '060802') = 1 /*F.FunctionCode='060802'*/";
  4647. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  4648. DataSet ds = con.GetSqlResultToDs(strSql);
  4649. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4650. {
  4651. return 1;
  4652. }
  4653. return 0;
  4654. }
  4655. catch (Exception ex)
  4656. {
  4657. throw ex;
  4658. }
  4659. finally
  4660. {
  4661. if (con.ConnState == ConnectionState.Open)
  4662. {
  4663. con.Close();
  4664. }
  4665. }
  4666. }
  4667. /// <summary>
  4668. /// 获取主表盘点信息
  4669. /// </summary>
  4670. /// <param name="entity">盘点类</param>
  4671. /// <param name="sUserInfo">用户基本信息</param>
  4672. /// <returns></returns>
  4673. public static DataSet GetAllInChecked(InCheckedEntity entity, SUserInfo sUserInfo)
  4674. {
  4675. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4676. try
  4677. {
  4678. oracleConn.Open();
  4679. OracleParameter[] paras = new OracleParameter[]{
  4680. new OracleParameter("in_inCheckedNo",OracleDbType.NVarchar2, entity.InCheckedNo,ParameterDirection.Input),
  4681. new OracleParameter("in_inCheckedName",OracleDbType.NVarchar2, entity.InCheckedName,ParameterDirection.Input),
  4682. new OracleParameter("in_remarks",OracleDbType.NVarchar2, entity.Remarks,ParameterDirection.Input),
  4683. new OracleParameter("in_begindate",OracleDbType.Date, entity.BeginDate,ParameterDirection.Input),
  4684. new OracleParameter("in_enddate",OracleDbType.Date,entity.EndDate,ParameterDirection.Input),
  4685. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  4686. new OracleParameter("in_accountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  4687. new OracleParameter("in_userID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  4688. };
  4689. DataSet returnDataSet = oracleConn.ExecStoredProcedure("PRO_PM_GetInCheckedPDA", paras);
  4690. return returnDataSet;
  4691. }
  4692. catch (Exception ex)
  4693. {
  4694. throw ex;
  4695. }
  4696. finally
  4697. {
  4698. if (oracleConn.ConnState == ConnectionState.Open)
  4699. {
  4700. oracleConn.Close();
  4701. }
  4702. }
  4703. }
  4704. /// <summary>
  4705. /// 根据查询非工号下的员工档案信息
  4706. /// </summary>
  4707. /// <param name="searchStaffEntity">员工查询实体</param>
  4708. /// <param name="sUserInfo">用户基本信息</param>
  4709. /// <returns>DataSet</returns>
  4710. public static DataSet SearchStaffInfo(SearchStaffEntity searchStaffEntity, SUserInfo sUserInfo)
  4711. {
  4712. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4713. try
  4714. {
  4715. con.Open();
  4716. string strSql = " SELECT Staff.Staffid,Staff.Staffname,Staff.Organizationid,"
  4717. + " Staff.Jobs,Staff.Staffstatus,Staff.Staffcode, Staff.Post,"
  4718. + " (CASE Staff.staffStatus"
  4719. + " WHEN 0 THEN '未入职'"
  4720. + " WHEN 1 THEN '试用 '"
  4721. + " WHEN 2 THEN '转正'"
  4722. + " WHEN 3 THEN '离职'"
  4723. + " ELSE '' END) AS staffStatusName,"
  4724. + " Jobs.Jobsname,Org.Organizationname,Org.OrganizationFullName,Post.PostName,0 Sel"
  4725. + " FROM TP_HR_Staff Staff"
  4726. + " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = Staff.Jobs "
  4727. + " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Staff.Organizationid "
  4728. + " LEFT JOIN TP_MST_Post Post on Post.Postid = Staff.Post "
  4729. + " WHERE Staff.Accountid = :accountID "
  4730. + " AND Staff.Staffstatus in(1,2)"
  4731. + " AND (Staff.Jobs = :jobs OR :jobs is null)";
  4732. if (!string.IsNullOrEmpty(searchStaffEntity.StaffCode))
  4733. {
  4734. //strSql += " AND Staff.Staffcode like '%" + searchStaffEntity.StaffCode + "%'";
  4735. strSql += " AND Staff.Staffcode ='" + searchStaffEntity.StaffCode + "'";
  4736. }
  4737. if (!string.IsNullOrEmpty(searchStaffEntity.StaffName))
  4738. {
  4739. strSql += " AND Staff.Staffname like '%" + searchStaffEntity.StaffName + "%'";
  4740. }
  4741. OracleParameter[] paras = new OracleParameter[]{
  4742. new OracleParameter(":accountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  4743. new OracleParameter(":jobs", OracleDbType.Int32, searchStaffEntity.Jobs, ParameterDirection.Input),
  4744. new OracleParameter(":jobs", OracleDbType.Int32, searchStaffEntity.Jobs, ParameterDirection.Input),
  4745. };
  4746. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  4747. return ds;
  4748. }
  4749. catch (Exception ex)
  4750. {
  4751. throw ex;
  4752. }
  4753. finally
  4754. {
  4755. if (con.ConnState == ConnectionState.Open)
  4756. {
  4757. con.Close();
  4758. }
  4759. }
  4760. }
  4761. /// <summary>
  4762. /// 根据条件查询是否存在班次配置
  4763. /// </summary>
  4764. /// <param name="userCode">工号编码</param>
  4765. /// <param name="sUserInfo">用户基本信息</param>
  4766. /// <returns>DataSet</returns>
  4767. public static DataSet GetClassesSetting(string uCode, SUserInfo sUserInfo)
  4768. {
  4769. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4770. try
  4771. {
  4772. con.Open();
  4773. DataSet dsReturn = new DataSet();
  4774. string strSql = @"select userid,username,usercode,fun_cmn_getaccountdate(:accountid) as accountdate,
  4775. (select tp_pc_classessetting.remarks from tp_pc_classessetting where tp_pc_classessetting.classessettingid in
  4776. (select nvl(max(classessettingID),0) classessettingID from tp_pc_classessetting where tp_pc_classessetting.usercode=:usercode
  4777. and tp_pc_classessetting.accountdate=fun_cmn_getaccountdate(:accountid))) as remarks
  4778. from tp_mst_user where usercode=:usercode and accountid=:accountid";
  4779. OracleParameter[] paras = new OracleParameter[]{
  4780. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  4781. new OracleParameter(":usercode",OracleDbType.Varchar2,uCode,ParameterDirection.Input),
  4782. };
  4783. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  4784. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4785. {
  4786. ds.Tables[0].TableName = "Table1";
  4787. dsReturn.Tables.Add(ds.Tables[0].Copy());
  4788. }
  4789. strSql = " SELECT classesDetail.ClassesSettingID,"
  4790. + " classesDetail.StaffID,classesDetail.Createtime,"
  4791. + " classesDetail.UjobsId UjobsId,classesDetail.SjobsId jobs,classesDetail.Remarks,classesDetail.CreateUserID,"
  4792. + " classesDetail.UpdateTime,CUser.Username createUserName,"
  4793. + " Jobs.Jobsname,Muser.Organizationid,Org.Organizationname,Staff.Staffname,Staff.Staffcode,"
  4794. + " status.staffstatusname AS staffStatusName,classesDetail.staffStatus,UJobs.JobsName as UJobsName,classesDetail.Ujobsid as UJobsId "
  4795. + " FROM TP_PC_ClassesDetail classesDetail "
  4796. + " LEFT JOIN TP_MST_User MUser ON MUser.UserId = classesDetail.UserID "
  4797. + " LEFT JOIN TP_MST_User CUser ON CUser.UserId = classesDetail.CreateUserID "
  4798. + " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = classesDetail.SjobsId "
  4799. + " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Muser.Organizationid "
  4800. + " LEFT JOIN TP_HR_Staff Staff ON staff.staffid = classesDetail.Staffid "
  4801. + " LEFT JOIN TP_MST_UserStaff userStaff ON classesDetail.STAFFID = userStaff.Staffid and classesDetail.Userid = userStaff.UserId"
  4802. + " LEFT JOIN TP_MST_JOBS UJobs ON classesDetail.Ujobsid = UJobs.Jobsid"
  4803. + " Inner JOIN TP_SYS_StaffStatus status on classesDetail.Staffstatus = status.staffstatusid"
  4804. + " WHERE classesDetail.AccountID = :accountID "
  4805. + " AND classesDetail.ClassesSettingID = (select nvl(max(classessettingID),0) classessettingID from tp_pc_classessetting where tp_pc_classessetting.usercode=:usercode and tp_pc_classessetting.accountdate=fun_cmn_getaccountdate(:accountID))";
  4806. paras = new OracleParameter[]{
  4807. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  4808. new OracleParameter(":usercode",OracleDbType.Varchar2,uCode,ParameterDirection.Input),
  4809. };
  4810. ds = con.GetSqlResultToDs(strSql, paras);
  4811. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4812. {
  4813. ds.Tables[0].TableName = "Table2";
  4814. dsReturn.Tables.Add(ds.Tables[0].Copy());
  4815. return dsReturn;
  4816. }
  4817. strSql = " SELECT Staff.Staffid,Staff.Staffname,Staff.Organizationid,"
  4818. + " Staff.Jobs,Staff.Staffstatus,Staff.Staffcode,'' Remarks,"
  4819. + " (CASE Staff.staffStatus"
  4820. + " WHEN 0 THEN '未入职'"
  4821. + " WHEN 1 THEN '试用 '"
  4822. + " WHEN 2 THEN '转正'"
  4823. + " WHEN 3 THEN '离职'"
  4824. + " ELSE '' END) AS staffStatusName,"
  4825. + " Jobs.Jobsname,Org.Organizationname,TUserJobs.Jobsname as UJobsName,TUserJobs.JobsId as UJobsId"
  4826. + " FROM TP_HR_Staff Staff "
  4827. + " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = Staff.Jobs "
  4828. + " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Staff.Organizationid "
  4829. + " LEFT JOIN TP_MST_UserStaff TUserStaff on TUserStaff.StaffID = Staff.StaffID "
  4830. + " LEFT JOIN TP_MST_User TUser on TUserStaff.Userid = TUser.Userid"
  4831. + " LEFT JOIN TP_MST_Jobs TUserJobs on TUserJobs.Jobsid = TUserStaff.Ujobsid"
  4832. + " WHERE Staff.Accountid = :accountID "
  4833. + " AND TUser.UserCode = :UserCode"
  4834. + " AND Staff.Staffstatus in(1,2)";
  4835. paras = new OracleParameter[]{
  4836. new OracleParameter(":accountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  4837. new OracleParameter(":UserCode", OracleDbType.Varchar2, uCode, ParameterDirection.Input),
  4838. };
  4839. ds = con.GetSqlResultToDs(strSql, paras);
  4840. ds.Tables[0].TableName = "Table2";
  4841. dsReturn.Tables.Add(ds.Tables[0].Copy());
  4842. return dsReturn;
  4843. }
  4844. catch (Exception ex)
  4845. {
  4846. throw ex;
  4847. }
  4848. finally
  4849. {
  4850. if (con.ConnState == ConnectionState.Open)
  4851. {
  4852. con.Close();
  4853. }
  4854. }
  4855. }
  4856. /*
  4857. /// <summary>
  4858. /// 获取用户是否有撤销包装权限
  4859. /// </summary>
  4860. /// <returns></returns>
  4861. public static int GetChancelFinishedproductFuntion(SUserInfo userInfo)
  4862. {
  4863. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4864. try
  4865. {
  4866. con.Open();
  4867. string strSql = "";
  4868. strSql = @"SELECT F.Functionlevel,
  4869. F.FunctionCode,
  4870. F.FunctionName,
  4871. F.FullName,
  4872. F.FunctionFlag,
  4873. F.FunctionButtonFlag,
  4874. F.FormName,
  4875. F.ButtonName
  4876. FROM TP_MST_UserRight R LEFT OUTER JOIN
  4877. TP_SYS_Function F ON R.FunctionCode = F.FunctionCode
  4878. WHERE F.ValueFlag = 1
  4879. AND F.FunctionCode NOT LIKE '0101%'
  4880. AND F.FunctionCode NOT LIKE '0102%' and F.FunctionCode='0609'";
  4881. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  4882. DataSet ds = con.GetSqlResultToDs(strSql);
  4883. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4884. {
  4885. return 1;
  4886. }
  4887. return 0;
  4888. }
  4889. catch (Exception ex)
  4890. {
  4891. throw ex;
  4892. }
  4893. finally
  4894. {
  4895. if (con.ConnState == ConnectionState.Open)
  4896. {
  4897. con.Close();
  4898. }
  4899. }
  4900. }
  4901. /// <summary>
  4902. /// 获取用户是否有撤销权限
  4903. /// </summary>
  4904. /// <returns></returns>
  4905. public static int GetCancelScrapProductionFuntion(SUserInfo userInfo)
  4906. {
  4907. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4908. try
  4909. {
  4910. con.Open();
  4911. string strSql = "";
  4912. strSql = @"SELECT F.Functionlevel,
  4913. F.FunctionCode,
  4914. F.FunctionName,
  4915. F.FullName,
  4916. F.FunctionFlag,
  4917. F.FunctionButtonFlag,
  4918. F.FormName,
  4919. F.ButtonName
  4920. FROM TP_MST_UserRight R LEFT OUTER JOIN
  4921. TP_SYS_Function F ON R.FunctionCode = F.FunctionCode
  4922. WHERE F.ValueFlag = 1
  4923. AND F.FunctionCode NOT LIKE '0101%'
  4924. AND F.FunctionCode NOT LIKE '0102%' and F.FunctionCode='0610'";
  4925. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  4926. DataSet ds = con.GetSqlResultToDs(strSql);
  4927. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4928. {
  4929. return 1;
  4930. }
  4931. return 0;
  4932. }
  4933. catch (Exception ex)
  4934. {
  4935. throw ex;
  4936. }
  4937. finally
  4938. {
  4939. if (con.ConnState == ConnectionState.Open)
  4940. {
  4941. con.Close();
  4942. }
  4943. }
  4944. }
  4945. /// <summary>
  4946. /// 获取用户是否有公坯设定权限
  4947. /// </summary>
  4948. /// <returns></returns>
  4949. public static int GetPublicBodyProductFuntion(SUserInfo userInfo)
  4950. {
  4951. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4952. try
  4953. {
  4954. con.Open();
  4955. string strSql = "";
  4956. strSql = @"SELECT F.Functionlevel,
  4957. F.FunctionCode,
  4958. F.FunctionName,
  4959. F.FullName,
  4960. F.FunctionFlag,
  4961. F.FunctionButtonFlag,
  4962. F.FormName,
  4963. F.ButtonName
  4964. FROM TP_MST_UserRight R LEFT OUTER JOIN
  4965. TP_SYS_Function F ON R.FunctionCode = F.FunctionCode
  4966. WHERE F.ValueFlag = 1
  4967. AND F.FunctionCode NOT LIKE '0101%'
  4968. AND F.FunctionCode NOT LIKE '0102%' and F.FunctionCode='0611'";
  4969. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  4970. DataSet ds = con.GetSqlResultToDs(strSql);
  4971. if (ds != null && ds.Tables[0].Rows.Count > 0)
  4972. {
  4973. return 1;
  4974. }
  4975. return 0;
  4976. }
  4977. catch (Exception ex)
  4978. {
  4979. throw ex;
  4980. }
  4981. finally
  4982. {
  4983. if (con.ConnState == ConnectionState.Open)
  4984. {
  4985. con.Close();
  4986. }
  4987. }
  4988. }
  4989. */
  4990. /// <summary>
  4991. /// 获取用户是否有公坯设定权限
  4992. /// </summary>
  4993. /// <returns></returns>
  4994. public static DataSet GetUserAllFunction(SUserInfo userInfo)
  4995. {
  4996. // 产品报损
  4997. if (userInfo.UserCode.ToUpper() == "SYSTEM" ||
  4998. userInfo.UserCode.ToUpper() == "ADMIN")
  4999. {
  5000. return null;
  5001. }
  5002. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5003. try
  5004. {
  5005. con.Open();
  5006. OracleParameter[] parameters = new OracleParameter[]
  5007. {
  5008. new OracleParameter(":UserID", OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  5009. };
  5010. string strSql =
  5011. "SELECT F.FunctionCode, f.functionlevel, " +
  5012. " CASE WHEN F.FunctionCode='060401' THEN '产品报损'" +
  5013. " WHEN F.FunctionCode='060202' THEN '条码变更'" +
  5014. " WHEN F.FunctionCode='0404' THEN '班次配置'" +
  5015. " WHEN F.FunctionCode='060802' THEN '在产盘点'" +
  5016. " WHEN F.FunctionCode='06230103' THEN '成型盘点'" +
  5017. " WHEN F.FunctionCode='0609' THEN '成品撤销'" +
  5018. " WHEN F.FunctionCode='0610' THEN '损坯撤销'" +
  5019. " WHEN F.FunctionCode='0611' THEN '公坯设定'" +
  5020. " WHEN F.FunctionCode='070205' THEN '产成品质量分析表'" +
  5021. " WHEN F.FunctionCode='0615' THEN '计件撤销'" +
  5022. " WHEN F.FunctionCode='061601' THEN '交坯撤销'" +
  5023. " WHEN F.FunctionCode='070205' THEN '产成品质量分析表'" +
  5024. " WHEN F.FunctionCode='060203' THEN '商标设定'" +
  5025. " WHEN F.FunctionCode='062001' THEN '半成品检验'" +
  5026. " WHEN F.FunctionCode='06200101' THEN '半检登记'" +
  5027. " WHEN F.FunctionCode='06200102' THEN '复检登记'" +
  5028. " WHEN F.FunctionCode='06200103' THEN '撤销复检'" +
  5029. " WHEN F.FunctionCode='0614' THEN '条码恢复'" +
  5030. " WHEN F.FunctionCode='0622' THEN '产成品交接'" +
  5031. " WHEN F.FunctionCode='062201' THEN '交接'" +
  5032. " WHEN F.FunctionCode='062202' THEN '撤销'" +
  5033. " WHEN F.FunctionCode='062203' THEN '变更单号'" +
  5034. " WHEN F.FunctionCode='060204' THEN '条码补打'" +
  5035. " WHEN F.FunctionCode='0626' THEN '抽查记录'" +
  5036. " WHEN F.FunctionCode='062601' THEN '品保抽查'" +
  5037. " ELSE to_char(f.functionname) END functionname " +
  5038. " FROM TP_SYS_Function F " +
  5039. "WHERE F.ValueFlag = '1'" +
  5040. " AND F.IS_PDA = '1' " +
  5041. " AND EXISTS (SELECT 1" +
  5042. " FROM TP_MST_UserRight R" +
  5043. " WHERE R.UserID = :UserID" +
  5044. //" AND (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]'))" +
  5045. " AND (instr(R.FunctionCode , F.FunctionCode) = 1 OR R.FunctionCode = '[ALL]'))" +
  5046. //" AND (F.FunctionCode='060401'" +
  5047. //" OR F.FunctionCode='060202'" +
  5048. //" OR F.FunctionCode='0404'" +
  5049. //" OR F.FunctionCode='060802'" +
  5050. //" OR F.FunctionCode='06230103'" +
  5051. //" OR F.FunctionCode='0609'" +
  5052. //" OR F.FunctionCode='0610'" +
  5053. //" OR F.FunctionCode='0611'" +
  5054. //" OR F.FunctionCode='070205'" +
  5055. //" OR F.FunctionCode='0615'" +
  5056. //" OR F.FunctionCode='061601'" +
  5057. //" OR F.FunctionCode='070205'" +
  5058. //" OR F.FunctionCode='060203'" +
  5059. //" OR F.FunctionCode='062001'" +
  5060. //" OR F.FunctionCode='06200101'" +
  5061. //" OR F.FunctionCode='06200102'" +
  5062. //" OR F.FunctionCode='06200103'" +
  5063. //" OR F.FunctionCode='0614'" +
  5064. //" OR F.FunctionCode='0622'" +
  5065. //" OR F.FunctionCode='062201'" +
  5066. //" OR F.FunctionCode='062202'" +
  5067. //" OR F.FunctionCode='062203'" +
  5068. //" OR F.FunctionCode='060204'" +
  5069. //// 成型报损,撤销报损
  5070. //" OR F.FunctionCode='060106'" +
  5071. //" OR F.FunctionCode='060107'" +
  5072. //// 模具管理相关
  5073. //" OR F.FunctionCode in ('M04','M0401','M040103','M040104','M040105','M040106','M040107','M040108','M0402')" +
  5074. //" OR F.FunctionCode='070303'" +
  5075. //" OR F.FunctionCode='0402'" +
  5076. //" OR F.FunctionCode in ('0624', '062401', '062402', '070713','0625','9001','9002')" +
  5077. //" OR F.FunctionCode in ('0626','062601')" +
  5078. //" OR F.FunctionCode like 'PDA%'" +
  5079. //" )" +
  5080. " Order by f.functionlevel";
  5081. DataSet ds = con.GetSqlResultToDs(strSql, parameters);
  5082. return ds;
  5083. //if (ds != null && ds.Tables[0].Rows.Count > 0)
  5084. //{
  5085. // return 1;
  5086. //}
  5087. //return 0;
  5088. }
  5089. catch (Exception ex)
  5090. {
  5091. throw ex;
  5092. }
  5093. finally
  5094. {
  5095. if (con.ConnState == ConnectionState.Open)
  5096. {
  5097. con.Close();
  5098. }
  5099. }
  5100. }
  5101. /// <summary>
  5102. /// 获取登陆帐户有无入窑前检验数据编辑权限
  5103. /// </summary>
  5104. /// <param name="usercode">工号编码</param>
  5105. /// <returns></returns>
  5106. public static int GetIntoKilnCheckEditFuntion(SUserInfo userInfo)
  5107. {
  5108. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5109. try
  5110. {
  5111. con.Open();
  5112. string strSql = "";
  5113. strSql = @"SELECT F.Functionlevel,
  5114. F.FunctionCode,
  5115. F.FunctionName,
  5116. F.FullName,
  5117. F.FunctionFlag,
  5118. F.FunctionButtonFlag,
  5119. F.FormName,
  5120. F.ButtonName
  5121. FROM TP_MST_UserRight R LEFT OUTER JOIN
  5122. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  5123. WHERE F.ValueFlag = 1
  5124. AND F.FunctionCode NOT LIKE '0101%'
  5125. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '061801') = 1 /*F.FunctionCode='061801'*/";
  5126. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  5127. DataSet ds = con.GetSqlResultToDs(strSql);
  5128. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5129. {
  5130. return 1;
  5131. }
  5132. return 0;
  5133. }
  5134. catch (Exception ex)
  5135. {
  5136. throw ex;
  5137. }
  5138. finally
  5139. {
  5140. if (con.ConnState == ConnectionState.Open)
  5141. {
  5142. con.Close();
  5143. }
  5144. }
  5145. }
  5146. /// <summary>
  5147. /// 获取登陆帐户有无半检验数据编辑权限
  5148. /// </summary>
  5149. /// <param name="usercode">工号编码</param>
  5150. /// <returns></returns>
  5151. public static int GetNormalCheckEditFuntion(SUserInfo userInfo)
  5152. {
  5153. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5154. try
  5155. {
  5156. con.Open();
  5157. string strSql = "";
  5158. strSql = @"SELECT F.Functionlevel,
  5159. F.FunctionCode,
  5160. F.FunctionName,
  5161. F.FullName,
  5162. F.FunctionFlag,
  5163. F.FunctionButtonFlag,
  5164. F.FormName,
  5165. F.ButtonName
  5166. FROM TP_MST_UserRight R LEFT OUTER JOIN
  5167. TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]')
  5168. WHERE F.ValueFlag = 1
  5169. AND F.FunctionCode NOT LIKE '0101%'
  5170. AND F.FunctionCode NOT LIKE '0102%' and instr(F.FunctionCode, '061901') = 1 /*F.FunctionCode='061901'*/";
  5171. strSql = strSql + " AND R.UserID = " + userInfo.UserID;
  5172. DataSet ds = con.GetSqlResultToDs(strSql);
  5173. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5174. {
  5175. return 1;
  5176. }
  5177. return 0;
  5178. }
  5179. catch (Exception ex)
  5180. {
  5181. throw ex;
  5182. }
  5183. finally
  5184. {
  5185. if (con.ConnState == ConnectionState.Open)
  5186. {
  5187. con.Close();
  5188. }
  5189. }
  5190. }
  5191. #region 质量登记
  5192. /// <summary>
  5193. /// 通过条码查出责任工序
  5194. /// </summary>
  5195. /// <param name="barcode">产品条码</param>
  5196. /// <param name="defectid">缺陷ID</param>
  5197. /// <returns>DataSet</returns>
  5198. public static DataSet GetDutyProcedureByBarCode(string barcode, int defectid, int accountid)
  5199. {
  5200. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5201. try
  5202. {
  5203. con.Open();
  5204. DataSet dsReturn = new DataSet();
  5205. string sqlString =
  5206. "SELECT pdin.ProductionDataID\n" +
  5207. " ,pdin.ProcedureID AS DutyProcedureID\n" +
  5208. " ,pdin.ProcedureCode AS DutyProcedureCode\n" +
  5209. " ,pdin.ProcedureName AS DutyProcedureName\n" +
  5210. " ,pdin.NodeType\n" +
  5211. " ,pdin.ModelType\n" +
  5212. " ,pdin.classessettingid\n" +
  5213. " ,pdin.userid\n" +
  5214. " ,pdin.usercode\n" +
  5215. " ,pdin.username\n" +
  5216. " FROM TP_PM_ProductionDataIn pdin\n" +
  5217. " WHERE pdin.valueflag = '1'\n" +
  5218. " AND pdin.accountid = :accountid\n" +
  5219. " AND pdin.Barcode = :Barcode\n" +
  5220. " AND EXISTS (SELECT 1\n" +
  5221. " FROM TP_PC_DefectProcedureJobs dpJobs\n" +
  5222. " WHERE dpJobs.DefectID = :DefectID\n" +
  5223. " AND pdin.ProcedureID = dpJobs.ProcedureID)\n" +
  5224. " ORDER BY pdin.ProductionDataID";
  5225. OracleParameter[] paras = new OracleParameter[]{
  5226. new OracleParameter(":accountid",OracleDbType.Int32, accountid,ParameterDirection.Input),
  5227. new OracleParameter(":Barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5228. new OracleParameter(":DefectID",OracleDbType.Int32, defectid,ParameterDirection.Input),
  5229. };
  5230. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  5231. ds.Tables[0].TableName = "TProcedure";
  5232. //sqlString = "Select DictionaryID,DictionaryValue"
  5233. // + " from TP_MST_DataDictionary where valueflag = 1 and DictionaryType = 'ASE002' and AccountID = :AccountID";
  5234. //paras = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  5235. // {
  5236. // new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID",accountid),
  5237. // };
  5238. //DataSet ds2 = con.GetSqlResultToDs(sqlString, paras);
  5239. //ds2.Tables[0].TableName = "TDataDictionary";
  5240. sqlString = "select procedureid,jobsid from TP_PC_DefectProcedureJobs where TP_PC_DefectProcedureJobs.Defectid=:Defectid";
  5241. paras = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  5242. {
  5243. new Oracle.ManagedDataAccess.Client.OracleParameter(":Defectid",defectid),
  5244. };
  5245. DataSet ds3 = con.GetSqlResultToDs(sqlString, paras);
  5246. ds3.Tables[0].TableName = "TP_PC_DefectProcedureJobs";
  5247. if (!dsReturn.Tables.Contains("TProcedure"))
  5248. {
  5249. dsReturn.Tables.Add(ds.Tables[0].Copy());
  5250. }
  5251. //if (!dsReturn.Tables.Contains("TDataDictionary"))
  5252. //{
  5253. // dsReturn.Tables.Add(ds2.Tables[0].Copy());
  5254. //}
  5255. if (!dsReturn.Tables.Contains("TP_PC_DefectProcedureJobs"))
  5256. {
  5257. dsReturn.Tables.Add(ds3.Tables[0].Copy());
  5258. }
  5259. return dsReturn;
  5260. }
  5261. catch (Exception ex)
  5262. {
  5263. throw ex;
  5264. }
  5265. finally
  5266. {
  5267. if (con.ConnState == ConnectionState.Open)
  5268. {
  5269. con.Close();
  5270. }
  5271. }
  5272. }
  5273. /// <summary>
  5274. /// 获取责任工种
  5275. /// </summary>
  5276. /// <param name="classesSettingID"></param>
  5277. /// <param name="defectid"></param>
  5278. /// <param name="procedureID"></param>
  5279. /// <returns></returns>
  5280. public static DataSet GetDutyJobsCodeByUser(int classesSettingID, int defectid, int procedureID)
  5281. {
  5282. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5283. try
  5284. {
  5285. con.Open();
  5286. string sqlString = "SELECT DISTINCT cd.UserID, jobs.JobsID, jobs.JobsName, jobs.JobsCode\n" +
  5287. " FROM TP_PC_DefectProcedureJobs dpjobs\n" +
  5288. " INNER JOIN tp_pc_classesdetail cd\n" +
  5289. " ON cd.ujobsid = dpjobs.jobsid AND cd.valueflag = '1'\n" +
  5290. " LEFT JOIN TP_MST_Jobs jobs\n" +
  5291. " ON cd.UJobsID = jobs.JobsID\n" +
  5292. " WHERE dpjobs.procedureid = :procedureid\n" +
  5293. " AND dpjobs.defectid = :defectid\n" +
  5294. " AND cd.classessettingid = :classessettingid\n" +
  5295. " order by jobs.JobsCode";
  5296. OracleParameter[] paras = new OracleParameter[]{
  5297. new OracleParameter(":procedureid",OracleDbType.Int32, procedureID,ParameterDirection.Input),
  5298. new OracleParameter(":defectid",OracleDbType.Int32, defectid,ParameterDirection.Input),
  5299. new OracleParameter(":classessettingid",OracleDbType.Int32, classesSettingID,ParameterDirection.Input),
  5300. };
  5301. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  5302. return ds;
  5303. }
  5304. catch (Exception ex)
  5305. {
  5306. throw ex;
  5307. }
  5308. finally
  5309. {
  5310. if (con.ConnState == ConnectionState.Open)
  5311. {
  5312. con.Close();
  5313. }
  5314. }
  5315. }
  5316. /// <summary>
  5317. /// 获取责任员工
  5318. /// </summary>
  5319. /// <param name="productionDataID">生产数据ID</param>
  5320. /// <param name="userID">用户ID</param>
  5321. /// <param name="jobs">工种ID</param>
  5322. /// <returns>DataSet</returns>
  5323. public static DataSet GetDutyStaffByUserIDAndJobs(int classesSettingID, int jobsID)
  5324. {
  5325. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5326. try
  5327. {
  5328. con.Open();
  5329. string sqlString = @"select TP_HR_Staff.StaffID,
  5330. TP_HR_Staff.StaffCode,
  5331. TP_HR_Staff.StaffName,
  5332. TP_HR_Staff.StaffStatus,
  5333. tp_pc_classesdetail.SJobsID
  5334. from tp_pc_classesdetail
  5335. inner join TP_HR_Staff on tp_pc_classesdetail.StaffID =
  5336. TP_HR_Staff.StaffID
  5337. where tp_pc_classesdetail.ClassesSettingID=:classesSettingID
  5338. and tp_pc_classesdetail.valueflag = '1'
  5339. and TP_HR_Staff.valueflag = '1'
  5340. and tp_pc_classesdetail.UJobsID = :JobsID
  5341. order by TP_HR_Staff.StaffCode
  5342. ";
  5343. // --and TP_HR_Staff.StaffStatus in (1,2)
  5344. OracleParameter[] paras = new OracleParameter[]{
  5345. new OracleParameter(":classesSettingID",OracleDbType.Int32, classesSettingID,ParameterDirection.Input),
  5346. new OracleParameter(":JobsID",OracleDbType.Int32, jobsID,ParameterDirection.Input),
  5347. };
  5348. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  5349. return ds;
  5350. }
  5351. catch (Exception ex)
  5352. {
  5353. throw ex;
  5354. }
  5355. finally
  5356. {
  5357. if (con.ConnState == ConnectionState.Open)
  5358. {
  5359. con.Close();
  5360. }
  5361. }
  5362. }
  5363. #endregion
  5364. #region 注浆盘点
  5365. /// <summary>
  5366. /// 获取注浆盘点信息
  5367. /// </summary>
  5368. /// <param name="entity">盘点类</param>
  5369. /// <param name="sUserInfo">用户基本信息</param>
  5370. /// <returns></returns>
  5371. public static DataSet GetAllGBChecked(InCheckedEntity entity, SUserInfo sUserInfo)
  5372. {
  5373. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5374. try
  5375. {
  5376. oracleConn.Open();
  5377. string sqlString =
  5378. "SELECT gbc.GBCheckedID\n" +
  5379. " ,gbc.GBCheckedNo\n" +
  5380. " ,gbc.GBcheckname\n" +
  5381. " ,gbc.AccountDate\n" +
  5382. " ,gbc.Remarks\n" +
  5383. " ,gbc.CreateTime\n" +
  5384. " ,u.UserName AS CreateUserName\n" +
  5385. " ,u.UserCode AS CreateUserCode\n" +
  5386. " FROM Tp_Pm_Groutingchecked gbc\n" +
  5387. " LEFT JOIN TP_MST_USER u\n" +
  5388. " ON gbc.Createuserid = u.userid\n" +
  5389. " WHERE gbc.valueflag = '1'\n" +
  5390. " AND gbc.accountid = :accountid\n" +
  5391. " AND (:CheckedNo IS NULL OR instr(gbc.GBCheckedNo, :CheckedNo) > 0)\n" +
  5392. " AND gbc.CreateTime >= :begindate\n" +
  5393. " AND gbc.CreateTime <= :enddate\n" +
  5394. " AND (:CheckedName IS NULL OR instr(gbc.gbcheckname, :CheckedName) > 0)\n" +
  5395. " AND (:remarks IS NULL OR instr(gbc.remarks, :remarks) > 0)\n" +
  5396. " AND EXISTS (SELECT 1\n" +
  5397. " FROM tp_pm_gbcheckeduser\n" +
  5398. " WHERE userid = :userid\n" +
  5399. " AND GBCheckedID = gbc.gbCheckedID)\n" +
  5400. " ORDER BY gbc.gbCheckedID DESC";
  5401. OracleParameter[] paras = new OracleParameter[]{
  5402. new OracleParameter(":CheckedNo",OracleDbType.NVarchar2, entity.InCheckedNo,ParameterDirection.Input),
  5403. new OracleParameter(":CheckedName",OracleDbType.NVarchar2, entity.InCheckedName,ParameterDirection.Input),
  5404. new OracleParameter(":remarks",OracleDbType.NVarchar2, entity.Remarks,ParameterDirection.Input),
  5405. new OracleParameter(":begindate",OracleDbType.Date, entity.BeginDate,ParameterDirection.Input),
  5406. new OracleParameter(":enddate",OracleDbType.Date,entity.EndDate,ParameterDirection.Input),
  5407. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  5408. new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  5409. };
  5410. DataSet returnDataSet = oracleConn.GetSqlResultToDs(sqlString, paras);
  5411. return returnDataSet;
  5412. }
  5413. catch (Exception ex)
  5414. {
  5415. throw ex;
  5416. }
  5417. finally
  5418. {
  5419. if (oracleConn.ConnState == ConnectionState.Open)
  5420. {
  5421. oracleConn.Close();
  5422. }
  5423. }
  5424. }
  5425. #endregion
  5426. #region 模具盘点
  5427. /// <summary>
  5428. /// 获取模具盘点信息
  5429. /// </summary>
  5430. /// <param name="entity">盘点类</param>
  5431. /// <param name="sUserInfo">用户基本信息</param>
  5432. /// <returns></returns>
  5433. public static DataSet GetAllMouldChecked(InCheckedEntity entity, SUserInfo sUserInfo)
  5434. {
  5435. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5436. try
  5437. {
  5438. oracleConn.Open();
  5439. string sqlString =
  5440. "SELECT gbc.CheckedID\n" +
  5441. " ,gbc.CheckedNo\n" +
  5442. " ,gbc.checkname\n" +
  5443. " ,gbc.AccountDate\n" +
  5444. " ,gbc.Remarks\n" +
  5445. " ,gbc.CreateTime\n" +
  5446. " ,u.UserName AS CreateUserName\n" +
  5447. " ,u.UserCode AS CreateUserCode\n" +
  5448. " FROM tp_pc_mouldchecked gbc\n" +
  5449. " LEFT JOIN TP_MST_USER u\n" +
  5450. " ON gbc.Createuserid = u.userid\n" +
  5451. " WHERE gbc.valueflag = '1'\n" +
  5452. " AND gbc.accountid = :accountid\n" +
  5453. " AND (:CheckedNo IS NULL OR instr(gbc.CheckedNo, :CheckedNo) > 0)\n" +
  5454. " AND gbc.CreateTime >= :begindate\n" +
  5455. " AND gbc.CreateTime <= :enddate\n" +
  5456. " AND (:CheckedName IS NULL OR instr(gbc.checkname, :CheckedName) > 0)\n" +
  5457. " AND (:remarks IS NULL OR instr(gbc.remarks, :remarks) > 0)\n" +
  5458. " AND EXISTS (SELECT 1\n" +
  5459. " FROM tp_pc_mouldcheckeduser\n" +
  5460. " WHERE userid = :userid\n" +
  5461. " AND CheckedID = gbc.CheckedID)\n" +
  5462. " ORDER BY gbc.CheckedID DESC";
  5463. OracleParameter[] paras = new OracleParameter[]{
  5464. new OracleParameter(":CheckedNo",OracleDbType.NVarchar2, entity.InCheckedNo,ParameterDirection.Input),
  5465. new OracleParameter(":CheckedName",OracleDbType.NVarchar2, entity.InCheckedName,ParameterDirection.Input),
  5466. new OracleParameter(":remarks",OracleDbType.NVarchar2, entity.Remarks,ParameterDirection.Input),
  5467. new OracleParameter(":begindate",OracleDbType.Date, entity.BeginDate,ParameterDirection.Input),
  5468. new OracleParameter(":enddate",OracleDbType.Date,entity.EndDate,ParameterDirection.Input),
  5469. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  5470. new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  5471. };
  5472. DataSet returnDataSet = oracleConn.GetSqlResultToDs(sqlString, paras);
  5473. return returnDataSet;
  5474. }
  5475. catch (Exception ex)
  5476. {
  5477. throw ex;
  5478. }
  5479. finally
  5480. {
  5481. if (oracleConn.ConnState == ConnectionState.Open)
  5482. {
  5483. oracleConn.Close();
  5484. }
  5485. }
  5486. }
  5487. #endregion
  5488. #region 模具管理
  5489. /// <summary>
  5490. /// 验证模具管理生产工号
  5491. /// </summary>
  5492. /// <param name="sUserInfo"></param>
  5493. /// <returns></returns>
  5494. public static DataTable GetUserCodeOnMould(SUserInfo sUserInfo, string userCode)
  5495. {
  5496. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5497. try
  5498. {
  5499. con.Open();
  5500. string sqlString = "SELECT g.userid, g.usercode\n" +
  5501. " FROM tp_mst_user g\n" +
  5502. " WHERE g.usercode = :usercode";
  5503. OracleParameter[] parameters = new OracleParameter[]
  5504. {
  5505. new OracleParameter(":usercode", OracleDbType.NVarchar2,
  5506. userCode, ParameterDirection.Input),
  5507. };
  5508. return con.GetSqlResultToDt(sqlString, parameters);
  5509. }
  5510. catch (Exception ex)
  5511. {
  5512. throw ex;
  5513. }
  5514. finally
  5515. {
  5516. if (con.ConnState == ConnectionState.Open)
  5517. {
  5518. con.Close();
  5519. }
  5520. }
  5521. }
  5522. /// <summary>
  5523. /// 获取模具编辑信息
  5524. /// </summary>
  5525. /// <param name="sUserInfo"></param>
  5526. /// <returns></returns>
  5527. public static DataTable GetMouldEditInfo(SUserInfo sUserInfo, string mouldbarcode)
  5528. {
  5529. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5530. try
  5531. {
  5532. con.Open();
  5533. string sqlString = "SELECT m.mouldid\n" +
  5534. " ,m.mouldbarcode\n" +
  5535. " ,m.mouldtype\n" +
  5536. " ,dd.dictionaryvalue mouldtypeName\n" +
  5537. " ,m.materialsupplier\n" +
  5538. " ,mms.suppliername\n" +
  5539. " ,ms.mouldstatusname\n" +
  5540. " ,m.productiondate\n" +
  5541. " ,m.goodsid\n" +
  5542. " ,m.goodscode\n" +
  5543. " ,m.userid\n" +
  5544. " ,m.usercode\n" +
  5545. " ,m.weight\n" +
  5546. " ,m.cost\n" +
  5547. " ,m.standardgroutingnum\n" +
  5548. " ,m.remarks\n" +
  5549. " FROM tp_pc_mould m\n" +
  5550. " LEFT JOIN tp_mst_datadictionary dd\n" +
  5551. " ON dd.dictionaryid = m.mouldtype\n" +
  5552. " LEFT JOIN tp_mst_mouldmaterialsuppliers mms\n" +
  5553. " ON mms.supplierid = m.materialsupplier\n" +
  5554. " LEFT JOIN tp_sys_mouldstatus ms\n" +
  5555. " ON ms.mouldstatusid = m.mouldstatus\n" +
  5556. " WHERE m.mouldbarcode = :mouldbarcode";
  5557. OracleParameter[] parameters = new OracleParameter[]
  5558. {
  5559. new OracleParameter(":mouldbarcode", OracleDbType.Varchar2, mouldbarcode, ParameterDirection.Input),
  5560. };
  5561. return con.GetSqlResultToDt(sqlString, parameters);
  5562. }
  5563. catch (Exception ex)
  5564. {
  5565. throw ex;
  5566. }
  5567. finally
  5568. {
  5569. if (con.ConnState == ConnectionState.Open)
  5570. {
  5571. con.Close();
  5572. }
  5573. }
  5574. }
  5575. #endregion
  5576. #region 成型模具管理
  5577. /// <summary>
  5578. /// 获取当前用户成型线模具管理权限
  5579. /// </summary>
  5580. /// <param name="sUserInfo"></param>
  5581. /// <param name="mouldbarcode"></param>
  5582. /// <returns></returns>
  5583. public static DataTable GetGMouldStatusRight(SUserInfo sUserInfo)
  5584. {
  5585. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5586. try
  5587. {
  5588. con.Open();
  5589. string sqlString =
  5590. "SELECT f.functioncode, f.functionname\n" +
  5591. " FROM tp_sys_function f\n" +
  5592. " WHERE f.valueflag = '1'\n" +
  5593. " AND f.functionprogram = '1'\n" +
  5594. " AND f.functionflag = '0'\n" +
  5595. " AND f.functionbuttonflag = '1'\n" +
  5596. " AND f.functioncode LIKE '0402%'\n" +
  5597. " AND EXISTS (SELECT 1\n" +
  5598. " FROM tp_mst_userright ur\n" +
  5599. " WHERE (ur.functioncode = '[ALL]' OR\n" +
  5600. " f.functioncode = ur.functioncode)\n" +
  5601. " AND ur.userid = :userid)\n" +
  5602. " ORDER BY f.functionlevel";
  5603. OracleParameter[] parameters = new OracleParameter[]
  5604. {
  5605. new OracleParameter(":userid", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  5606. };
  5607. return con.GetSqlResultToDt(sqlString, parameters);
  5608. }
  5609. catch (Exception ex)
  5610. {
  5611. throw ex;
  5612. }
  5613. finally
  5614. {
  5615. if (con.ConnState == ConnectionState.Open)
  5616. {
  5617. con.Close();
  5618. }
  5619. }
  5620. }
  5621. /// <summary>
  5622. /// 获取成型线状态等信息,和成型模具信息
  5623. /// </summary>
  5624. /// <param name="sUserInfo"></param>
  5625. /// <param name="mouldbarcode"></param>
  5626. /// <returns></returns>
  5627. public static DataSet GetGroutingLineMould(SUserInfo sUserInfo, string groutingLineCode, int? groutingLineID)
  5628. {
  5629. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5630. try
  5631. {
  5632. con.Open();
  5633. string sqlString =
  5634. "SELECT gl.groutinglineid\n" +
  5635. " ,gl.groutinglinecode\n" +
  5636. " ,gl.gmouldstatus GroutingLineStatus\n" +
  5637. " ,gs.gmouldstatusname GroutingLineStatusName\n" +
  5638. " ,to_char(gl.optimestamp, 'yyyy-mm-dd hh24:mi:ss.ff') LineOPTimeStamp\n" +
  5639. " FROM tp_pc_groutingline gl\n" +
  5640. " INNER JOIN tp_sys_gmouldstatus gs\n" +
  5641. " ON gs.gmouldstatusid = gl.gmouldstatus\n" +
  5642. " WHERE gl.valueflag = '1'\n" +
  5643. " AND gl.gmouldstatus > 0\n" +
  5644. " AND ((:lineID IS NULL AND gl.groutinglinecode = :lineCode) OR\n" +
  5645. " gl.groutinglineid = :lineID)";
  5646. OracleParameter[] parameters = new OracleParameter[]
  5647. {
  5648. new OracleParameter(":lineID", OracleDbType.Int32, groutingLineID, ParameterDirection.Input),
  5649. new OracleParameter(":lineCode", OracleDbType.Varchar2, groutingLineCode, ParameterDirection.Input),
  5650. };
  5651. DataTable line = con.GetSqlResultToDt(sqlString, parameters);
  5652. if (line == null || line.Rows.Count == 0)
  5653. {
  5654. return null;
  5655. }
  5656. if (groutingLineID == null)
  5657. {
  5658. groutingLineID = Convert.ToInt32(line.Rows[0]["groutinglineid"]);
  5659. }
  5660. sqlString =
  5661. "SELECT gld.groutinglinedetailid GLineDetailID\n" +
  5662. " ,gld.groutinglineid\n" +
  5663. " ,gld.groutingmouldcode GLineDetailCode\n" +
  5664. " ,gld.MouldID\n" +
  5665. " ,gld.MouldCode\n" +
  5666. " ,nvl(gld.MouldOutputNo,0) MouldOutputNo\n" +
  5667. " ,m.MouldBarcode\n" +
  5668. " ,gld.GMouldStatus\n" +
  5669. " ,gms.GMouldStatusName\n" +
  5670. " ,gld.goodsid\n" +
  5671. " ,g.goodscode\n" +
  5672. " ,g.GOODSSPECIFICATION\n" +
  5673. " ,gld.standardgroutingcount\n" +
  5674. " ,gld.groutingcount\n" +
  5675. " ,gld.beginuseddate\n" +
  5676. " ,gld.remarks DetailRemarks\n" +
  5677. " ,gmr.remarks RecordRemarks\n" +
  5678. " ,to_char(gld.optimestamp, 'yyyy-mm-dd hh24:mi:ss.ff') OPTimeStamp\n" +
  5679. " FROM tp_pc_groutinglinedetail gld\n" +
  5680. " INNER JOIN tp_mst_goods g\n" +
  5681. " ON g.goodsid = gld.goodsid\n" +
  5682. " LEFT JOIN tp_pc_mould m\n" +
  5683. " ON (gld.mouldid is not null and gld.mouldid = m.mouldid) or (gld.mouldcode = m.mouldcode)\n" +
  5684. " INNER JOIN tp_sys_gmouldstatus gms\n" +
  5685. " ON gms.gmouldstatusid = gld.gmouldstatus\n" +
  5686. " LEFT JOIN tp_pc_gmouldrecord gmr\n" +
  5687. " ON gmr.gmouldrecordid = gld.lastgmouldrecordid\n" +
  5688. " WHERE gld.valueflag = '1'\n" +
  5689. " AND gld.groutinglineid = :lineID\n" +
  5690. " ORDER BY gld.groutingmouldcode";
  5691. parameters = new OracleParameter[]
  5692. {
  5693. new OracleParameter(":lineID", OracleDbType.Int32, groutingLineID, ParameterDirection.Input),
  5694. };
  5695. DataTable lineDetail = con.GetSqlResultToDt(sqlString, parameters);
  5696. DataSet ds = new DataSet();
  5697. line.TableName = "GroutingLineInfo";
  5698. lineDetail.TableName = "GMouldInfo";
  5699. ds.Tables.Add(line);
  5700. ds.Tables.Add(lineDetail);
  5701. return ds;
  5702. }
  5703. catch (Exception ex)
  5704. {
  5705. throw ex;
  5706. }
  5707. finally
  5708. {
  5709. if (con.ConnState == ConnectionState.Open)
  5710. {
  5711. con.Close();
  5712. }
  5713. }
  5714. }
  5715. /// <summary>
  5716. /// 获取成型线状态等信息,和成型模具信息
  5717. /// </summary>
  5718. /// <param name="sUserInfo"></param>
  5719. /// <param name="mouldbarcode"></param>
  5720. /// <returns></returns>
  5721. public static DataTable GetGroutingMouldOperationInit(SUserInfo sUserInfo, int groutingMouldOperationType)
  5722. {
  5723. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5724. try
  5725. {
  5726. con.Open();
  5727. // 结束换模、结束变产
  5728. if (groutingMouldOperationType == 6)
  5729. {
  5730. string sqlString =
  5731. "SELECT s.settingcode, s.settingvalue\n" +
  5732. " FROM tp_mst_systemsetting s\n" +
  5733. " WHERE s.accountid = :accountid\n" +
  5734. " AND s.settingcode = :settingcode";
  5735. OracleParameter[] parameters = new OracleParameter[]
  5736. {
  5737. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  5738. new OracleParameter(":settingcode", OracleDbType.Varchar2, "S_PC_001", ParameterDirection.Input),
  5739. };
  5740. return con.GetSqlResultToDt(sqlString, parameters);
  5741. }
  5742. return null;
  5743. }
  5744. catch (Exception ex)
  5745. {
  5746. throw ex;
  5747. }
  5748. finally
  5749. {
  5750. if (con.ConnState == ConnectionState.Open)
  5751. {
  5752. con.Close();
  5753. }
  5754. }
  5755. }
  5756. #endregion
  5757. #region 成型月度结算表
  5758. /// <summary>
  5759. /// 成型月度结算表(总表)
  5760. /// </summary>
  5761. /// <returns></returns>
  5762. public static ServiceResultEntity GetGroutingSettlementInfo(SUserInfo sUserInfo, DateTime month)
  5763. {
  5764. IDBTransaction tran = null;
  5765. try
  5766. {
  5767. tran = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5768. tran.Connect();
  5769. // 只限成型工查询
  5770. string sqlString = "select u.userid, u.isgroutingworker from tp_mst_user u where u.AccountID = :AccountID and u.usercode = :usercode";
  5771. OracleParameter[] paraUser = new OracleParameter[]
  5772. {
  5773. new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  5774. new OracleParameter(":usercode", OracleDbType.NVarchar2, sUserInfo.UserCode, ParameterDirection.Input),
  5775. };
  5776. DataTable dt = tran.GetSqlResultToDt(sqlString, paraUser);
  5777. if (dt == null || dt.Rows.Count == 0)
  5778. {
  5779. ServiceResultEntity sreUser = new ServiceResultEntity();
  5780. sreUser.Status = Constant.ServiceResultStatus.Other;
  5781. sreUser.Message = "系统中不存在此成型工号";
  5782. return sreUser;
  5783. }
  5784. if ("1" != (dt.Rows[0]["isgroutingworker"] + ""))
  5785. {
  5786. ServiceResultEntity sreUser = new ServiceResultEntity();
  5787. sreUser.Status = Constant.ServiceResultStatus.Other;
  5788. sreUser.Message = "此工号不是成型工号";
  5789. return sreUser;
  5790. }
  5791. OracleParameter[] parameters = new OracleParameter[]
  5792. {
  5793. new OracleParameter("in_AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  5794. new OracleParameter("in_UserCode", OracleDbType.NVarchar2, sUserInfo.UserCode, ParameterDirection.Input),
  5795. new OracleParameter("in_MonthBegin", OracleDbType.Date, month, ParameterDirection.Input),
  5796. new OracleParameter("in_NextMonth", OracleDbType.Date, month.AddMonths(1), ParameterDirection.Input),
  5797. new OracleParameter("out_DataM", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5798. };
  5799. DataSet data = tran.ExecStoredProcedure("PRO_P2_GetGUserPInfoByMonth", parameters);
  5800. ServiceResultEntity sre = new ServiceResultEntity();
  5801. if (data != null)
  5802. {
  5803. data.Tables[0].TableName = "DataM";
  5804. }
  5805. tran.Commit();
  5806. sre.Data = data;
  5807. return sre;
  5808. }
  5809. catch (Exception ex)
  5810. {
  5811. //if (tran != null)
  5812. //{
  5813. // tran.Rollback();
  5814. //}
  5815. throw ex;
  5816. }
  5817. finally
  5818. {
  5819. if (tran != null &&
  5820. tran.ConnState == ConnectionState.Open)
  5821. {
  5822. tran.Disconnect();
  5823. }
  5824. }
  5825. }
  5826. /// <summary>
  5827. /// 成型月度结算表(明细)
  5828. /// </summary>
  5829. /// <returns></returns>
  5830. public static ServiceResultEntity GetGroutingSettlementDetail(SUserInfo sUserInfo, DateTime month, string goodsCode, DateTime? date)
  5831. {
  5832. IDBTransaction tran = null;
  5833. try
  5834. {
  5835. tran = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5836. tran.Connect();
  5837. // 只限成型工查询
  5838. string sqlString = "select u.userid, u.isgroutingworker from tp_mst_user u where u.AccountID = :AccountID and u.usercode = :usercode";
  5839. OracleParameter[] paraUser = new OracleParameter[]
  5840. {
  5841. new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  5842. new OracleParameter(":usercode", OracleDbType.NVarchar2, sUserInfo.UserCode, ParameterDirection.Input),
  5843. };
  5844. DataTable dt = tran.GetSqlResultToDt(sqlString, paraUser);
  5845. if (dt == null || dt.Rows.Count == 0)
  5846. {
  5847. ServiceResultEntity sreUser = new ServiceResultEntity();
  5848. sreUser.Status = Constant.ServiceResultStatus.Other;
  5849. sreUser.Message = "系统中不存在此成型工号";
  5850. return sreUser;
  5851. }
  5852. if ("1" != (dt.Rows[0]["isgroutingworker"] + ""))
  5853. {
  5854. ServiceResultEntity sreUser = new ServiceResultEntity();
  5855. sreUser.Status = Constant.ServiceResultStatus.Other;
  5856. sreUser.Message = "此工号不是成型工号";
  5857. return sreUser;
  5858. }
  5859. OracleParameter[] parameters = new OracleParameter[]
  5860. {
  5861. new OracleParameter("in_AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  5862. new OracleParameter("in_UserCode", OracleDbType.NVarchar2, sUserInfo.UserCode, ParameterDirection.Input),
  5863. new OracleParameter("in_GoodsCode", OracleDbType.NVarchar2, goodsCode, ParameterDirection.Input),
  5864. new OracleParameter("in_MonthBegin", OracleDbType.Date, (date != null ? date.Value : month), ParameterDirection.Input),
  5865. new OracleParameter("in_NextMonth", OracleDbType.Date, (date != null ? date.Value.AddDays(1) :month.AddMonths(1)), ParameterDirection.Input),
  5866. new OracleParameter("out_DataCC", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5867. new OracleParameter("out_DataNS", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5868. new OracleParameter("out_DataSC", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5869. new OracleParameter("out_DataRC", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5870. };
  5871. //,out_DataCC OUT SYS_REFCURSOR -- 成检明细
  5872. //,out_DataNS OUT SYS_REFCURSOR -- 后损明细
  5873. //,out_DataSC OUT SYS_REFCURSOR -- 半检不合格
  5874. //,out_DataRC OUT SYS_REFCURSOR -- 返工合格
  5875. DataSet data = tran.ExecStoredProcedure("PRO_P2_GetGUserPInfoByDetail", parameters);
  5876. ServiceResultEntity sre = new ServiceResultEntity();
  5877. if (data != null)
  5878. {
  5879. data.Tables[0].TableName = "DataCC"; // 成检明细
  5880. data.Tables[1].TableName = "DataNS"; // 后损明细
  5881. data.Tables[2].TableName = "DataSC"; // 半检不合格
  5882. data.Tables[3].TableName = "DataRC"; // 返工合格
  5883. }
  5884. tran.Commit();
  5885. sre.Data = data;
  5886. return sre;
  5887. }
  5888. catch (Exception ex)
  5889. {
  5890. //if (tran != null)
  5891. //{
  5892. // tran.Rollback();
  5893. //}
  5894. throw ex;
  5895. }
  5896. finally
  5897. {
  5898. if (tran != null &&
  5899. tran.ConnState == ConnectionState.Open)
  5900. {
  5901. tran.Disconnect();
  5902. }
  5903. }
  5904. }
  5905. #endregion
  5906. #region 产成品质量改判
  5907. /// <summary>
  5908. /// 获取产成品信息及缺陷数据
  5909. /// </summary>
  5910. /// <param name="barcode"></param>
  5911. /// <param name="sUserInfo"></param>
  5912. /// <returns></returns>
  5913. public static ServiceResultEntity GetDefectData(string barcode, SUserInfo sUserInfo)
  5914. {
  5915. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5916. try
  5917. {
  5918. oracleConn.Open();
  5919. ServiceResultEntity sre = new ServiceResultEntity();
  5920. string gbarcode = null;
  5921. #region 数据验证
  5922. // 1、获得注浆条码
  5923. string sqlString = @"select FUN_CMN_GetBarCode(:barcode, null, :accountid) From DUAL";
  5924. OracleParameter[] paras = new OracleParameter[]
  5925. {
  5926. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  5927. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input)
  5928. };
  5929. DataSet dsResult = oracleConn.GetSqlResultToDs(sqlString, paras);
  5930. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5931. {
  5932. gbarcode = dsResult.Tables[0].Rows[0][0].ToString();
  5933. }
  5934. // 2.判断产品是否在产成品表中
  5935. sqlString = @"SELECT 1 FROM TP_PM_FINISHEDPRODUCT F WHERE F.VALUEFLAG = 1 AND F.GOODSLEVELTYPEID IN(4,5) AND F.BARCODE = :BARCODE";
  5936. paras = new OracleParameter[]
  5937. {
  5938. new OracleParameter(":BARCODE", OracleDbType.NVarchar2, gbarcode, ParameterDirection.Input)
  5939. };
  5940. dsResult = oracleConn.GetSqlResultToDs(sqlString, paras);
  5941. if (dsResult == null || dsResult.Tables.Count == 0 || dsResult.Tables[0].Rows.Count == 0)
  5942. {
  5943. sre.Status = Constant.ServiceResultStatus.Other;
  5944. sre.OtherStatus = -11;
  5945. sre.Message = "条码【" + barcode + "】,不符合条件";
  5946. return sre;
  5947. }
  5948. #endregion
  5949. #region 查询产品相关信息
  5950. // 查询总表
  5951. sqlString = "SELECT GD.BARCODE,\n" +
  5952. " GOODSTYPE.GOODSTYPENAME,\n" +
  5953. " GD.GOODSID,\n" +
  5954. " GD.GOODSCODE,\n" +
  5955. " L.LOGONAME || '[' || L.LOGOCODE || ']' AS LOGONAME,\n" +
  5956. " TO_CHAR(GD.GROUTINGDATE, 'yyyy-mm-dd') || '(' || GD.GROUTINGBATCHNO || ')' AS GROUTINGDATE,\n" +
  5957. " GD.USERCODE,\n" +
  5958. " GD.GROUTINGMOULDCODE\n" +
  5959. " FROM TP_PM_GROUTINGDAILYDETAIL GD\n" +
  5960. " INNER JOIN TP_MST_LOGO L\n" +
  5961. " ON GD.LOGOID = L.LOGOID\n" +
  5962. " INNER JOIN TP_MST_GOODS GOODS\n" +
  5963. " ON GD.GOODSID = GOODS.GOODSID\n" +
  5964. " INNER JOIN TP_MST_GOODSTYPE GOODSTYPE\n" +
  5965. " ON GOODSTYPE.GOODSTYPEID = GOODS.GOODSTYPEID\n" +
  5966. " WHERE GD.VALUEFLAG = '1'\n" +
  5967. " AND GD.BARCODE = :BARCODE";
  5968. dsResult = oracleConn.GetSqlResultToDs(sqlString, paras);
  5969. // 查询缺陷
  5970. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5971. {
  5972. PDADefectData defectData = new PDADefectData();
  5973. defectData.PDAGoodsDataTotal = dsResult.Tables[0];
  5974. sqlString = "SELECT PD.PRODUCTIONDATAID,\n" +
  5975. " PD.PROCEDUREID,\n" +
  5976. " PD.PROCEDURENAME,\n" +
  5977. " PD.USERCODE AS PROCEDUREUSERCODE,\n" +
  5978. " TO_CHAR(PD.CREATETIME, 'yyyy-mm-dd') AS PROCEDURETIME,\n" +
  5979. " GLT.GOODSLEVELTYPENAME,\n" +
  5980. " PD.ISREFIRE,\n" +
  5981. " PD.SPECIALREPAIRFLAG\n" +
  5982. " FROM TP_PM_PRODUCTIONDATA PD\n" +
  5983. " LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT\n" +
  5984. " ON PD.GOODSLEVELTYPEID = GLT.GOODSLEVELTYPEID\n" +
  5985. " WHERE PD.MODELTYPE = -1\n" +
  5986. " AND PD.VALUEFLAG = '1'\n" +
  5987. " AND PD.GOODSLEVELTYPEID IN (5, 6)\n" +
  5988. " AND PD.BARCODE = :BARCODE";
  5989. dsResult = oracleConn.GetSqlResultToDs(sqlString, paras);
  5990. // 查询缺陷明细
  5991. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  5992. {
  5993. PDADefectDataDetail defectDataDetail;
  5994. foreach (DataRow row in dsResult.Tables[0].Rows)
  5995. {
  5996. // 转实体
  5997. defectDataDetail = DataConvert.DataRowConvertToObject<PDADefectDataDetail>(row);
  5998. sqlString = "SELECT D.PRODUCTIONDEFECTID,\n" +
  5999. " D.DEFECTID,\n" +
  6000. " D.DEFECTCODE,\n" +
  6001. " D.DEFECTNAME,\n" +
  6002. " D.DEFECTPOSITIONID,\n" +
  6003. " D.DEFECTPOSITIONCODE,\n" +
  6004. " D.DEFECTPOSITIONNAME,\n" +
  6005. " D.DEFECTPROCEDUREID,\n" +
  6006. " D.DEFECTPROCEDURECODE,\n" +
  6007. " D.DEFECTPROCEDURENAME,\n" +
  6008. " D.DEFECTUSERID,\n" +
  6009. " D.DEFECTUSERCODE,\n" +
  6010. " D.DEFECTUSERNAME,\n" +
  6011. " D.DEFECTJOBS,\n" +
  6012. " J.JOBSNAME AS DEFECTJOBSNAME,\n" +
  6013. " D.DEFECTFINE,\n" +
  6014. " DF.DEFECTFINECODE,\n" +
  6015. " D.DEFECTDEDUCTIONNUM,\n" +
  6016. " D.SPECIALDEFECT\n" +
  6017. " FROM TP_PM_PRODUCTIONDATA PD\n" +
  6018. " INNER JOIN TP_PM_DEFECT D\n" +
  6019. " ON PD.PRODUCTIONDATAID = D.PRODUCTIONDATAID\n" +
  6020. " LEFT JOIN TP_MST_JOBS J\n" +
  6021. " ON J.JOBSID = D.DEFECTJOBS\n" +
  6022. " LEFT JOIN TP_MST_DEFECTFINE DF\n" +
  6023. " ON DF.DEFECTFINEID = D.DEFECTFINE\n" +
  6024. " WHERE PD.MODELTYPE = -1\n" +
  6025. " AND PD.VALUEFLAG = '1'\n" +
  6026. " AND PD.GOODSLEVELTYPEID IN (4, 5, 6)\n" +
  6027. " AND PD.PRODUCTIONDATAID = :PRODUCTIONDATAID";
  6028. paras = new OracleParameter[]
  6029. {
  6030. new OracleParameter(":PRODUCTIONDATAID", OracleDbType.NVarchar2, defectDataDetail.ProductionDataID, ParameterDirection.Input)
  6031. };
  6032. DataTable dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  6033. defectDataDetail.ProductionDefects = DataConvert.TableConvertToObject<PDADefectEntity>(dtResult);
  6034. // 查询缺陷责任者和缺陷图片
  6035. if (dtResult != null && dtResult.Rows.Count > 0)
  6036. {
  6037. int productionDefectID = 0;
  6038. List<PDADefectEntity> productionDefects = new List<PDADefectEntity>();
  6039. PDADefectEntity productionDefect;
  6040. for (int i = 0; i < dtResult.Rows.Count; i++)
  6041. {
  6042. productionDefect = new PDADefectEntity();
  6043. productionDefectID = int.Parse(dtResult.Rows[i]["PRODUCTIONDEFECTID"] + "");
  6044. sqlString = "SELECT D.PRODUCTIONDEFECTID,\n" +
  6045. " D.STAFFID,\n" +
  6046. " S.STAFFNAME,\n" +
  6047. " D.USERID,\n" +
  6048. " D.USERCODE,\n" +
  6049. " D.STAFFSTATUS,\n" +
  6050. " D.UJOBSID,\n" +
  6051. " D.SJOBSID\n" +
  6052. " FROM TP_PM_DEFECTRESPONSIBLE D\n" +
  6053. " LEFT JOIN TP_HR_STAFF S\n" +
  6054. " ON D.STAFFID = S.STAFFID\n" +
  6055. " WHERE PRODUCTIONDEFECTID = :PRODUCTIONDEFECTID";
  6056. paras = new OracleParameter[]
  6057. {
  6058. new OracleParameter(":PRODUCTIONDEFECTID", OracleDbType.Int32, productionDefectID, ParameterDirection.Input)
  6059. };
  6060. DataTable dtDefectResponsible = oracleConn.GetSqlResultToDt(sqlString, paras);
  6061. defectDataDetail.ProductionDefects[i].DefectResponsibles = DataConvert.TableConvertToObject<DefectResponsibleEntity>(dtDefectResponsible);
  6062. }
  6063. }
  6064. defectData.PDADefectDataDetailList.Add(defectDataDetail);
  6065. }
  6066. sre.Status = Constant.ServiceResultStatus.Success;
  6067. sre.Message = "条码【" + barcode + "】,查询成功";
  6068. }
  6069. sre.Result = defectData;
  6070. }
  6071. else
  6072. {
  6073. sre.Status = Constant.ServiceResultStatus.Other;
  6074. sre.OtherStatus = -12;
  6075. sre.Message = "条码【" + barcode + "】,未查到相应的产品信息";
  6076. return sre;
  6077. }
  6078. #endregion
  6079. return sre;
  6080. }
  6081. catch (Exception ex)
  6082. {
  6083. throw ex;
  6084. }
  6085. finally
  6086. {
  6087. if (oracleConn.ConnState == ConnectionState.Open)
  6088. {
  6089. oracleConn.Close();
  6090. }
  6091. }
  6092. }
  6093. /// <summary>
  6094. /// 成品改判
  6095. /// </summary>
  6096. /// <param name="procedureID">工序ID</param>
  6097. /// <param name="productionDataEntitys">生产数据集</param>
  6098. /// <param name="sUserInfo">用户基本信息</param>
  6099. /// <returns>string</returns>
  6100. public static ServiceResultEntity SaveDefectData(ProductionDataEntity productionDataEntity, SUserInfo sUserInfo)
  6101. {
  6102. string errMsg = "";
  6103. ServiceResultEntity sre = new ServiceResultEntity();
  6104. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6105. try
  6106. {
  6107. oracleTrConn.Connect();
  6108. #region 验证数据是否已经被修改
  6109. string sqlString = "SELECT 1 FROM TP_PM_PRODUCTIONDATA PD WHERE PD.VALUEFLAG = '1' AND PD.PRODUCTIONDATAID = :PRODUCTIONDATAID";
  6110. OracleParameter[] paras = new OracleParameter[]
  6111. {
  6112. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32, productionDataEntity.ProductionDataID,ParameterDirection.Input)
  6113. };
  6114. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  6115. if (dsResult == null || dsResult.Tables.Count == 0 || dsResult.Tables[0].Rows.Count == 0)
  6116. {
  6117. sre.Status = Constant.ServiceResultStatus.Other;
  6118. sre.Message = "【此条码生产数据已被修改,请重新扫描此条码】";
  6119. return sre;
  6120. }
  6121. #endregion
  6122. #region 查询新插入的生产数据ID
  6123. sqlString = "SELECT SEQ_PM_PRODUCTIONDATA_ID.NEXTVAL FROM DUAL";
  6124. string idStr = oracleTrConn.GetSqlResultToStr(sqlString);
  6125. int newProductionDataID = 0;
  6126. if (string.IsNullOrEmpty(idStr) || !int.TryParse(idStr, out newProductionDataID))
  6127. {
  6128. sre.Status = Constant.ServiceResultStatus.Other;
  6129. sre.Message = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6130. return sre;
  6131. }
  6132. #endregion
  6133. #region 插入生产数据
  6134. sqlString =
  6135. " SELECT BARCODE,\n" +
  6136. " CENTRALIZEDBATCHNO,\n" +
  6137. " PRODUCTIONLINEID,\n" +
  6138. " PRODUCTIONLINECODE,\n" +
  6139. " PRODUCTIONLINENAME,\n" +
  6140. " PROCEDUREID,\n" +
  6141. " PROCEDURECODE,\n" +
  6142. " PROCEDURENAME,\n" +
  6143. " PROCEDUREMODEL,\n" +
  6144. " MODELTYPE,\n" +
  6145. " PIECETYPE,\n" +
  6146. " ISREWORKED,\n" +
  6147. " NODETYPE,\n" +
  6148. " ISPUBLICBODY,\n" +
  6149. " ISREFIRE,\n" +
  6150. " ORGANIZATIONID,\n" +
  6151. " GOODSID,\n" +
  6152. " GOODSCODE,\n" +
  6153. " GOODSNAME,\n" +
  6154. " KILNID,\n" +
  6155. " KILNCODE,\n" +
  6156. " KILNNAME,\n" +
  6157. " KILNCARID,\n" +
  6158. " KILNCARCODE,\n" +
  6159. " KILNCARNAME,\n" +
  6160. " KILNCARBATCHNO,\n" +
  6161. " KILNCARPOSITION,\n" +
  6162. " REWORKPROCEDUREID,\n" +
  6163. " REWORKPROCEDURECODE,\n" +
  6164. " REWORKPROCEDURENAME,\n" +
  6165. " REMARKS,\n" +
  6166. " ACCOUNTDATE,\n" +
  6167. " SETTLEMENTFLAG,\n" +
  6168. " ACCOUNTID,\n" +
  6169. " CREATETIME,\n" +
  6170. " UPDATETIME,\n" +
  6171. " GOODSLEVELID,\n" +
  6172. " GOODSLEVELTYPEID,\n" +
  6173. " GROUTINGDATE,\n" +
  6174. " GROUTINGMOULDCODE,\n" +
  6175. " MOULDCODE,\n" +
  6176. " GROUTINGUSERID,\n" +
  6177. " GROUTINGUSERCODE,\n" +
  6178. " GROUTINGNUM,\n" +
  6179. " GROUTINGDAILYID,\n" +
  6180. " GROUTINGDAILYDETAILID,\n" +
  6181. " GROUTINGLINEID,\n" +
  6182. " GROUTINGLINECODE,\n" +
  6183. " GROUTINGLINENAME,\n" +
  6184. " GMOULDTYPEID,\n" +
  6185. " CANMANYTIMES,\n" +
  6186. " GROUTINGLINEDETAILID,\n" +
  6187. " SPECIALREPAIRFLAG,\n" +
  6188. " CLASSESSETTINGID,\n" +
  6189. " LOGOID,\n" +
  6190. " BACKOUTTIME,\n" +
  6191. " BACKOUTUSERID,\n" +
  6192. " BACKOUTUSERCODE,\n" +
  6193. " CHECKTIME\n" +
  6194. " FROM TP_PM_PRODUCTIONDATA\n" +
  6195. " WHERE VALUEFLAG = '1'\n" +
  6196. " AND PRODUCTIONDATAID = :PRODUCTIONDATAID";
  6197. paras = new OracleParameter[]
  6198. {
  6199. new OracleParameter(":PRODUCTIONDATAID", OracleDbType.Int32, productionDataEntity.ProductionDataID,ParameterDirection.Input)
  6200. };
  6201. DataTable data = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  6202. if (data == null || data.Rows.Count == 0)
  6203. {
  6204. errMsg = "无成检数据";
  6205. sre.Status = Constant.ServiceResultStatus.Other;
  6206. sre.Message = errMsg;
  6207. return sre;
  6208. }
  6209. #region
  6210. /*
  6211. sqlString = "INSERT INTO TP_PM_PRODUCTIONDATA(\n" +
  6212. " PRODUCTIONDATAID,\n" +
  6213. " BARCODE,\n" +
  6214. " CENTRALIZEDBATCHNO,\n" +
  6215. " PRODUCTIONLINEID,\n" +
  6216. " PRODUCTIONLINECODE,\n" +
  6217. " PRODUCTIONLINENAME,\n" +
  6218. " PROCEDUREID,\n" +
  6219. " PROCEDURECODE,\n" +
  6220. " PROCEDURENAME,\n" +
  6221. " PROCEDUREMODEL,\n" +
  6222. " MODELTYPE,\n" +
  6223. " PIECETYPE,\n" +
  6224. " ISREWORKED,\n" +
  6225. " NODETYPE,\n" +
  6226. " ISPUBLICBODY,\n" +
  6227. " ISREFIRE,\n" +
  6228. " ORGANIZATIONID,\n" +
  6229. " GOODSID,\n" +
  6230. " GOODSCODE,\n" +
  6231. " GOODSNAME,\n" +
  6232. " USERID,\n" +
  6233. " USERCODE,\n" +
  6234. " USERNAME,\n" +
  6235. " KILNID,\n" +
  6236. " KILNCODE,\n" +
  6237. " KILNNAME,\n" +
  6238. " KILNCARID,\n" +
  6239. " KILNCARCODE,\n" +
  6240. " KILNCARNAME,\n" +
  6241. " KILNCARBATCHNO,\n" +
  6242. " KILNCARPOSITION,\n" +
  6243. " REWORKPROCEDUREID,\n" +
  6244. " REWORKPROCEDURECODE,\n" +
  6245. " REWORKPROCEDURENAME,\n" +
  6246. " REMARKS,\n" +
  6247. " ACCOUNTDATE,\n" +
  6248. " SETTLEMENTFLAG,\n" +
  6249. " ACCOUNTID,\n" +
  6250. " VALUEFLAG,\n" +
  6251. " CREATETIME,\n" +
  6252. " CREATEUSERID,\n" +
  6253. " UPDATETIME,\n" +
  6254. " UPDATEUSERID,\n" +
  6255. //" OPTIMESTAMP,\n" +
  6256. " GOODSLEVELID,\n" +
  6257. " GOODSLEVELTYPEID,\n" +
  6258. " GROUTINGDATE,\n" +
  6259. " GROUTINGMOULDCODE,\n" +
  6260. " MOULDCODE,\n" +
  6261. " GROUTINGUSERID,\n" +
  6262. " GROUTINGUSERCODE,\n" +
  6263. " GROUTINGNUM,\n" +
  6264. " GROUTINGDAILYID,\n" +
  6265. " GROUTINGDAILYDETAILID,\n" +
  6266. " GROUTINGLINEID,\n" +
  6267. " GROUTINGLINECODE,\n" +
  6268. " GROUTINGLINENAME,\n" +
  6269. " GMOULDTYPEID,\n" +
  6270. " CANMANYTIMES,\n" +
  6271. " GROUTINGLINEDETAILID,\n" +
  6272. " SPECIALREPAIRFLAG,\n" +
  6273. " CLASSESSETTINGID,\n" +
  6274. " LOGOID,\n" +
  6275. " BACKOUTTIME,\n" +
  6276. " BACKOUTUSERID,\n" +
  6277. " BACKOUTUSERCODE,\n" +
  6278. " CHECKTIME,\n" +
  6279. " TAMPERTIME)\n" +
  6280. " SELECT :NEWPRODUCTIONDATAID,\n" +
  6281. " BARCODE,\n" +
  6282. " CENTRALIZEDBATCHNO,\n" +
  6283. " PRODUCTIONLINEID,\n" +
  6284. " PRODUCTIONLINECODE,\n" +
  6285. " PRODUCTIONLINENAME,\n" +
  6286. " PROCEDUREID,\n" +
  6287. " PROCEDURECODE,\n" +
  6288. " PROCEDURENAME,\n" +
  6289. " PROCEDUREMODEL,\n" +
  6290. " MODELTYPE,\n" +
  6291. " PIECETYPE,\n" +
  6292. " ISREWORKED,\n" +
  6293. " NODETYPE,\n" +
  6294. " ISPUBLICBODY,\n" +
  6295. " ISREFIRE,\n" +
  6296. " ORGANIZATIONID,\n" +
  6297. " GOODSID,\n" +
  6298. " GOODSCODE,\n" +
  6299. " GOODSNAME,\n" +
  6300. " :USERID,\n" +
  6301. " :USERCODE,\n" +
  6302. " :USERNAME,\n" +
  6303. " KILNID,\n" +
  6304. " KILNCODE,\n" +
  6305. " KILNNAME,\n" +
  6306. " KILNCARID,\n" +
  6307. " KILNCARCODE,\n" +
  6308. " KILNCARNAME,\n" +
  6309. " KILNCARBATCHNO,\n" +
  6310. " KILNCARPOSITION,\n" +
  6311. " REWORKPROCEDUREID,\n" +
  6312. " REWORKPROCEDURECODE,\n" +
  6313. " REWORKPROCEDURENAME,\n" +
  6314. " REMARKS,\n" +
  6315. " ACCOUNTDATE,\n" +
  6316. " SETTLEMENTFLAG,\n" +
  6317. " ACCOUNTID,\n" +
  6318. " '1',\n" +
  6319. " CREATETIME,\n" +
  6320. " :CREATEUSERID,\n" +
  6321. " UPDATETIME,\n" +
  6322. " :UPDATEUSERID,\n" +
  6323. //" OPTIMESTAMP,\n" +
  6324. " GOODSLEVELID,\n" +
  6325. " GOODSLEVELTYPEID,\n" +
  6326. " GROUTINGDATE,\n" +
  6327. " GROUTINGMOULDCODE,\n" +
  6328. " MOULDCODE,\n" +
  6329. " GROUTINGUSERID,\n" +
  6330. " GROUTINGUSERCODE,\n" +
  6331. " GROUTINGNUM,\n" +
  6332. " GROUTINGDAILYID,\n" +
  6333. " GROUTINGDAILYDETAILID,\n" +
  6334. " GROUTINGLINEID,\n" +
  6335. " GROUTINGLINECODE,\n" +
  6336. " GROUTINGLINENAME,\n" +
  6337. " GMOULDTYPEID,\n" +
  6338. " CANMANYTIMES,\n" +
  6339. " GROUTINGLINEDETAILID,\n" +
  6340. " SPECIALREPAIRFLAG,\n" +
  6341. " CLASSESSETTINGID,\n" +
  6342. " LOGOID,\n" +
  6343. " BACKOUTTIME,\n" +
  6344. " BACKOUTUSERID,\n" +
  6345. " BACKOUTUSERCODE,\n" +
  6346. " CHECKTIME,\n" +
  6347. " SYSDATE\n" +
  6348. " FROM TP_PM_PRODUCTIONDATA\n" +
  6349. " WHERE VALUEFLAG = '1'\n" +
  6350. " AND PRODUCTIONDATAID = :PRODUCTIONDATAID";
  6351. paras = new OracleParameter[]
  6352. {
  6353. new OracleParameter(":NEWPRODUCTIONDATAID",OracleDbType.Int32, newProductionDataID,ParameterDirection.Input),
  6354. new OracleParameter(":USERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6355. new OracleParameter(":USERCODE",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  6356. new OracleParameter(":USERNAME",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  6357. new OracleParameter(":CREATEUSERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6358. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6359. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32, productionDataEntity.ProductionDataID,ParameterDirection.Input)
  6360. };*/
  6361. #endregion
  6362. sqlString = "INSERT INTO TP_PM_PRODUCTIONDATA(\n" +
  6363. " PRODUCTIONDATAID,\n" +
  6364. " BARCODE,\n" +
  6365. " CENTRALIZEDBATCHNO,\n" +
  6366. " PRODUCTIONLINEID,\n" +
  6367. " PRODUCTIONLINECODE,\n" +
  6368. " PRODUCTIONLINENAME,\n" +
  6369. " PROCEDUREID,\n" +
  6370. " PROCEDURECODE,\n" +
  6371. " PROCEDURENAME,\n" +
  6372. " PROCEDUREMODEL,\n" +
  6373. " MODELTYPE,\n" +
  6374. " PIECETYPE,\n" +
  6375. " ISREWORKED,\n" +
  6376. " NODETYPE,\n" +
  6377. " ISPUBLICBODY,\n" +
  6378. " ISREFIRE,\n" +
  6379. " ORGANIZATIONID,\n" +
  6380. " GOODSID,\n" +
  6381. " GOODSCODE,\n" +
  6382. " GOODSNAME,\n" +
  6383. " USERID,\n" +
  6384. " USERCODE,\n" +
  6385. " USERNAME,\n" +
  6386. " KILNID,\n" +
  6387. " KILNCODE,\n" +
  6388. " KILNNAME,\n" +
  6389. " KILNCARID,\n" +
  6390. " KILNCARCODE,\n" +
  6391. " KILNCARNAME,\n" +
  6392. " KILNCARBATCHNO,\n" +
  6393. " KILNCARPOSITION,\n" +
  6394. " REWORKPROCEDUREID,\n" +
  6395. " REWORKPROCEDURECODE,\n" +
  6396. " REWORKPROCEDURENAME,\n" +
  6397. " REMARKS,\n" +
  6398. " ACCOUNTDATE,\n" +
  6399. " SETTLEMENTFLAG,\n" +
  6400. " ACCOUNTID,\n" +
  6401. " VALUEFLAG,\n" +
  6402. " CREATETIME,\n" +
  6403. " CREATEUSERID,\n" +
  6404. " UPDATETIME,\n" +
  6405. " UPDATEUSERID,\n" +
  6406. //" OPTIMESTAMP,\n" +
  6407. " GOODSLEVELID,\n" +
  6408. " GOODSLEVELTYPEID,\n" +
  6409. " GROUTINGDATE,\n" +
  6410. " GROUTINGMOULDCODE,\n" +
  6411. " MOULDCODE,\n" +
  6412. " GROUTINGUSERID,\n" +
  6413. " GROUTINGUSERCODE,\n" +
  6414. " GROUTINGNUM,\n" +
  6415. " GROUTINGDAILYID,\n" +
  6416. " GROUTINGDAILYDETAILID,\n" +
  6417. " GROUTINGLINEID,\n" +
  6418. " GROUTINGLINECODE,\n" +
  6419. " GROUTINGLINENAME,\n" +
  6420. " GMOULDTYPEID,\n" +
  6421. " CANMANYTIMES,\n" +
  6422. " GROUTINGLINEDETAILID,\n" +
  6423. " SPECIALREPAIRFLAG,\n" +
  6424. " CLASSESSETTINGID,\n" +
  6425. " LOGOID,\n" +
  6426. " BACKOUTTIME,\n" +
  6427. " BACKOUTUSERID,\n" +
  6428. " BACKOUTUSERCODE,\n" +
  6429. " CHECKTIME,\n" +
  6430. " TAMPERTIME)\n" +
  6431. " VALUES( :NEWPRODUCTIONDATAID,\n" +
  6432. " :BARCODE,\n" +
  6433. " :CENTRALIZEDBATCHNO,\n" +
  6434. " :PRODUCTIONLINEID,\n" +
  6435. " :PRODUCTIONLINECODE,\n" +
  6436. " :PRODUCTIONLINENAME,\n" +
  6437. " :PROCEDUREID,\n" +
  6438. " :PROCEDURECODE,\n" +
  6439. " :PROCEDURENAME,\n" +
  6440. " :PROCEDUREMODEL,\n" +
  6441. " :MODELTYPE,\n" +
  6442. " :PIECETYPE,\n" +
  6443. " :ISREWORKED,\n" +
  6444. " :NODETYPE,\n" +
  6445. " :ISPUBLICBODY,\n" +
  6446. " :ISREFIRE,\n" +
  6447. " :ORGANIZATIONID,\n" +
  6448. " :GOODSID,\n" +
  6449. " :GOODSCODE,\n" +
  6450. " :GOODSNAME,\n" +
  6451. " :USERID,\n" +
  6452. " :USERCODE,\n" +
  6453. " :USERNAME,\n" +
  6454. " :KILNID,\n" +
  6455. " :KILNCODE,\n" +
  6456. " :KILNNAME,\n" +
  6457. " :KILNCARID,\n" +
  6458. " :KILNCARCODE,\n" +
  6459. " :KILNCARNAME,\n" +
  6460. " :KILNCARBATCHNO,\n" +
  6461. " :KILNCARPOSITION,\n" +
  6462. " :REWORKPROCEDUREID,\n" +
  6463. " :REWORKPROCEDURECODE,\n" +
  6464. " :REWORKPROCEDURENAME,\n" +
  6465. " :REMARKS,\n" +
  6466. " :ACCOUNTDATE,\n" +
  6467. " :SETTLEMENTFLAG,\n" +
  6468. " :ACCOUNTID,\n" +
  6469. " '1',\n" +
  6470. " :CREATETIME,\n" +
  6471. " :CREATEUSERID,\n" +
  6472. " :UPDATETIME,\n" +
  6473. " :UPDATEUSERID,\n" +
  6474. //" OPTIMESTAMP,\n" +
  6475. " :GOODSLEVELID,\n" +
  6476. " :GOODSLEVELTYPEID,\n" +
  6477. " :GROUTINGDATE,\n" +
  6478. " :GROUTINGMOULDCODE,\n" +
  6479. " :MOULDCODE,\n" +
  6480. " :GROUTINGUSERID,\n" +
  6481. " :GROUTINGUSERCODE,\n" +
  6482. " :GROUTINGNUM,\n" +
  6483. " :GROUTINGDAILYID,\n" +
  6484. " :GROUTINGDAILYDETAILID,\n" +
  6485. " :GROUTINGLINEID,\n" +
  6486. " :GROUTINGLINECODE,\n" +
  6487. " :GROUTINGLINENAME,\n" +
  6488. " :GMOULDTYPEID,\n" +
  6489. " :CANMANYTIMES,\n" +
  6490. " :GROUTINGLINEDETAILID,\n" +
  6491. " :SPECIALREPAIRFLAG,\n" +
  6492. " :CLASSESSETTINGID,\n" +
  6493. " :LOGOID,\n" +
  6494. " :BACKOUTTIME,\n" +
  6495. " :BACKOUTUSERID,\n" +
  6496. " :BACKOUTUSERCODE,\n" +
  6497. " :CHECKTIME,\n" +
  6498. " SYSDATE)\n";
  6499. DataRow row = data.Rows[0];
  6500. paras = new OracleParameter[]
  6501. {
  6502. new OracleParameter(":NEWPRODUCTIONDATAID",OracleDbType.Int32, newProductionDataID,ParameterDirection.Input),
  6503. new OracleParameter(":USERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6504. new OracleParameter(":USERCODE",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  6505. new OracleParameter(":USERNAME",OracleDbType.Varchar2, sUserInfo.UserName,ParameterDirection.Input),
  6506. new OracleParameter(":CREATEUSERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6507. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6508. //new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32, productionDataEntity.ProductionDataID,ParameterDirection.Input)
  6509. new OracleParameter(":BARCODE",OracleDbType.NVarchar2, row["BARCODE"],ParameterDirection.Input),
  6510. new OracleParameter(":CENTRALIZEDBATCHNO",OracleDbType.Varchar2, row["CENTRALIZEDBATCHNO"],ParameterDirection.Input),
  6511. new OracleParameter(":PRODUCTIONLINEID",OracleDbType.Int32, row["PRODUCTIONLINEID"],ParameterDirection.Input),
  6512. new OracleParameter(":PRODUCTIONLINECODE",OracleDbType.NVarchar2, row["PRODUCTIONLINECODE"],ParameterDirection.Input),
  6513. new OracleParameter(":PRODUCTIONLINENAME",OracleDbType.NVarchar2, row["PRODUCTIONLINENAME"],ParameterDirection.Input),
  6514. new OracleParameter(":PROCEDUREID",OracleDbType.Int32, row["PROCEDUREID"],ParameterDirection.Input),
  6515. new OracleParameter(":PROCEDURECODE",OracleDbType.NVarchar2, row["PROCEDURECODE"],ParameterDirection.Input),
  6516. new OracleParameter(":PROCEDURENAME",OracleDbType.NVarchar2, row["PROCEDURENAME"],ParameterDirection.Input),
  6517. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Char, row["PROCEDUREMODEL"],ParameterDirection.Input),
  6518. new OracleParameter(":MODELTYPE",OracleDbType.Int32, row["MODELTYPE"],ParameterDirection.Input),
  6519. new OracleParameter(":PIECETYPE",OracleDbType.Char, row["PIECETYPE"],ParameterDirection.Input),
  6520. new OracleParameter(":ISREWORKED",OracleDbType.Char, row["ISREWORKED"],ParameterDirection.Input),
  6521. new OracleParameter(":NODETYPE",OracleDbType.Char, row["NODETYPE"],ParameterDirection.Input),
  6522. new OracleParameter(":ISPUBLICBODY",OracleDbType.Char, row["ISPUBLICBODY"],ParameterDirection.Input),
  6523. new OracleParameter(":ISREFIRE",OracleDbType.Char, row["ISREFIRE"],ParameterDirection.Input),
  6524. new OracleParameter(":ORGANIZATIONID",OracleDbType.Int32, row["ORGANIZATIONID"],ParameterDirection.Input),
  6525. new OracleParameter(":GOODSID",OracleDbType.Int32, row["GOODSID"],ParameterDirection.Input),
  6526. new OracleParameter(":GOODSCODE",OracleDbType.NVarchar2, row["GOODSCODE"],ParameterDirection.Input),
  6527. new OracleParameter(":GOODSNAME",OracleDbType.NVarchar2, row["GOODSNAME"],ParameterDirection.Input),
  6528. new OracleParameter(":KILNID",OracleDbType.Int32, row["KILNID"],ParameterDirection.Input),
  6529. new OracleParameter(":KILNCODE",OracleDbType.NVarchar2, row["KILNCODE"],ParameterDirection.Input),
  6530. new OracleParameter(":KILNNAME",OracleDbType.NVarchar2, row["KILNNAME"],ParameterDirection.Input),
  6531. new OracleParameter(":KILNCARID",OracleDbType.Int32, row["KILNCARID"],ParameterDirection.Input),
  6532. new OracleParameter(":KILNCARCODE",OracleDbType.NVarchar2, row["KILNCARCODE"],ParameterDirection.Input),
  6533. new OracleParameter(":KILNCARNAME",OracleDbType.NVarchar2, row["KILNCARNAME"],ParameterDirection.Input),
  6534. new OracleParameter(":KILNCARBATCHNO",OracleDbType.NVarchar2, row["KILNCARBATCHNO"],ParameterDirection.Input),
  6535. new OracleParameter(":KILNCARPOSITION",OracleDbType.Int32, row["KILNCARPOSITION"],ParameterDirection.Input),
  6536. new OracleParameter(":REWORKPROCEDUREID",OracleDbType.Int32, row["REWORKPROCEDUREID"],ParameterDirection.Input),
  6537. new OracleParameter(":REWORKPROCEDURECODE",OracleDbType.NVarchar2, row["REWORKPROCEDURECODE"],ParameterDirection.Input),
  6538. new OracleParameter(":REWORKPROCEDURENAME",OracleDbType.NVarchar2, row["REWORKPROCEDURENAME"],ParameterDirection.Input),
  6539. new OracleParameter(":REMARKS",OracleDbType.NVarchar2, row["REMARKS"],ParameterDirection.Input),
  6540. new OracleParameter(":ACCOUNTDATE",OracleDbType.Date, row["ACCOUNTDATE"],ParameterDirection.Input),
  6541. new OracleParameter(":SETTLEMENTFLAG",OracleDbType.Char, row["SETTLEMENTFLAG"],ParameterDirection.Input),
  6542. new OracleParameter(":ACCOUNTID",OracleDbType.Int32, row["ACCOUNTID"],ParameterDirection.Input),
  6543. new OracleParameter(":CREATETIME",OracleDbType.Date, row["CREATETIME"],ParameterDirection.Input),
  6544. new OracleParameter(":UPDATETIME",OracleDbType.Date, row["UPDATETIME"],ParameterDirection.Input),
  6545. new OracleParameter(":GOODSLEVELID",OracleDbType.Int32, row["GOODSLEVELID"],ParameterDirection.Input),
  6546. new OracleParameter(":GOODSLEVELTYPEID",OracleDbType.Int32, row["GOODSLEVELTYPEID"],ParameterDirection.Input),
  6547. new OracleParameter(":GROUTINGDATE",OracleDbType.Date, row["GROUTINGDATE"],ParameterDirection.Input),
  6548. new OracleParameter(":GROUTINGMOULDCODE",OracleDbType.NVarchar2, row["GROUTINGMOULDCODE"],ParameterDirection.Input),
  6549. new OracleParameter(":MOULDCODE",OracleDbType.NVarchar2, row["MOULDCODE"],ParameterDirection.Input),
  6550. new OracleParameter(":GROUTINGUSERID",OracleDbType.Int32, row["GROUTINGUSERID"],ParameterDirection.Input),
  6551. new OracleParameter(":GROUTINGUSERCODE",OracleDbType.NVarchar2, row["GROUTINGUSERCODE"],ParameterDirection.Input),
  6552. new OracleParameter(":GROUTINGNUM",OracleDbType.Decimal, row["GROUTINGNUM"],ParameterDirection.Input),
  6553. new OracleParameter(":GROUTINGDAILYID",OracleDbType.Int32, row["GROUTINGDAILYID"],ParameterDirection.Input),
  6554. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32, row["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  6555. new OracleParameter(":GROUTINGLINEID",OracleDbType.Int32, row["GROUTINGLINEID"],ParameterDirection.Input),
  6556. new OracleParameter(":GROUTINGLINECODE",OracleDbType.NVarchar2, row["GROUTINGLINECODE"],ParameterDirection.Input),
  6557. new OracleParameter(":GROUTINGLINENAME",OracleDbType.NVarchar2, row["GROUTINGLINENAME"],ParameterDirection.Input),
  6558. new OracleParameter(":GMOULDTYPEID",OracleDbType.Int32, row["GMOULDTYPEID"],ParameterDirection.Input),
  6559. new OracleParameter(":CANMANYTIMES",OracleDbType.Char, row["CANMANYTIMES"],ParameterDirection.Input),
  6560. new OracleParameter(":GROUTINGLINEDETAILID",OracleDbType.Int32, row["GROUTINGLINEDETAILID"],ParameterDirection.Input),
  6561. new OracleParameter(":SPECIALREPAIRFLAG",OracleDbType.Char, row["SPECIALREPAIRFLAG"],ParameterDirection.Input),
  6562. new OracleParameter(":CLASSESSETTINGID",OracleDbType.Int32, row["CLASSESSETTINGID"],ParameterDirection.Input),
  6563. new OracleParameter(":LOGOID",OracleDbType.Int32, row["LOGOID"],ParameterDirection.Input),
  6564. new OracleParameter(":BACKOUTTIME",OracleDbType.Date, row["BACKOUTTIME"],ParameterDirection.Input),
  6565. new OracleParameter(":BACKOUTUSERID",OracleDbType.Int32, row["BACKOUTUSERID"],ParameterDirection.Input),
  6566. new OracleParameter(":BACKOUTUSERCODE",OracleDbType.NVarchar2, row["BACKOUTUSERCODE"],ParameterDirection.Input),
  6567. new OracleParameter(":CHECKTIME",OracleDbType.Date, row["CHECKTIME"],ParameterDirection.Input),
  6568. };
  6569. int returnRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6570. #endregion
  6571. #region 查询刚插入得数据
  6572. sqlString = "SELECT * FROM TP_PM_PRODUCTIONDATA PD WHERE PD.VALUEFLAG = '1' AND PD.PRODUCTIONDATAID = :PRODUCTIONDATAID";
  6573. paras = new OracleParameter[]
  6574. {
  6575. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32, newProductionDataID,ParameterDirection.Input)
  6576. };
  6577. DataTable dtResult = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  6578. ProductionDataEntity newProductionDataEntity;
  6579. if (dtResult != null && dtResult.Rows.Count > 0)
  6580. {
  6581. newProductionDataEntity = DataConvert.DataRowConvertToObject<ProductionDataEntity>(dtResult.Rows[0]);
  6582. }
  6583. else
  6584. {
  6585. sre.Status = Constant.ServiceResultStatus.Other;
  6586. sre.Message = "【此条码生产数据已被修改,请重新扫描此条码】";
  6587. return sre;
  6588. }
  6589. #endregion
  6590. #region 删除原数据
  6591. // 删除生产数据
  6592. sqlString = "UPDATE TP_PM_PRODUCTIONDATA\n" +
  6593. " SET VALUEFLAG = '0'\n" +
  6594. " , BACKOUTTIME = sysdate\n" +
  6595. " , BACKOUTUSERID = " + sUserInfo.UserID + "\n" +
  6596. " , BACKOUTUSERCODE = '"+ sUserInfo.UserCode+ "'\n" +
  6597. " WHERE PRODUCTIONDATAID = :PRODUCTIONDATAID";
  6598. paras = new OracleParameter[]
  6599. {
  6600. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32, productionDataEntity.ProductionDataID,ParameterDirection.Input)
  6601. };
  6602. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6603. // 删除缺陷
  6604. sqlString = "UPDATE TP_PM_DEFECT\n" +
  6605. " SET VALUEFLAG = '0'\n" +
  6606. " WHERE PRODUCTIONDATAID = :PRODUCTIONDATAID";
  6607. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6608. // 删除缺陷责任人
  6609. sqlString = "UPDATE TP_PM_DEFECTRESPONSIBLE A\n" +
  6610. " SET A.VALUEFLAG = '0'\n" +
  6611. " WHERE A.PRODUCTIONDEFECTID IN\n" +
  6612. " (SELECT PRODUCTIONDEFECTID\n" +
  6613. " FROM TP_PM_DEFECT\n" +
  6614. " WHERE PRODUCTIONDATAID = :PRODUCTIONDATAID)";
  6615. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6616. #endregion
  6617. #region 条码有缺陷
  6618. // 存在缺陷 插入缺陷表
  6619. if (productionDataEntity.ProductionDefects != null)
  6620. {
  6621. #region 查询工序信息
  6622. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, productionDataEntity.ProcedureID);
  6623. #endregion
  6624. #region 取最近一条缺陷记录
  6625. sqlString = "SELECT PRODUCTIONDEFECTID\n" +
  6626. " FROM TP_PM_DEFECT\n" +
  6627. " WHERE PRODUCTIONDATAID = :PRODUCTIONDATAID\n" +
  6628. " ORDER BY PRODUCTIONDEFECTID DESC";
  6629. paras = new OracleParameter[]
  6630. {
  6631. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32, productionDataEntity.ProductionDataID,ParameterDirection.Input)
  6632. };
  6633. string productionDefectID = oracleTrConn.GetSqlResultToStr(sqlString, paras);
  6634. int originalProductionDefectID = 0;
  6635. if (!string.IsNullOrEmpty(productionDefectID))
  6636. {
  6637. originalProductionDefectID = int.Parse(productionDefectID);
  6638. }
  6639. #endregion
  6640. foreach (ProductionDefectEntity productionDefect in productionDataEntity.ProductionDefects)
  6641. {
  6642. #region 保存缺陷
  6643. productionDefect.ProductionDataID = newProductionDataID;
  6644. productionDefect.BarCode = newProductionDataEntity.Barcode;
  6645. productionDefect.ProductionLineID = procedure.ProductionLineID;
  6646. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6647. productionDefect.ProductionLineName = procedure.ProductionlineName;
  6648. productionDefect.ProcedureID = procedure.ProcedureID;
  6649. productionDefect.ProcedureCode = procedure.ProcedureCode;
  6650. productionDefect.ProcedureName = procedure.ProcedureName;
  6651. productionDefect.UserID = newProductionDataEntity.UserID;
  6652. productionDefect.UserCode = newProductionDataEntity.UserCode;
  6653. productionDefect.UserName = newProductionDataEntity.UserName;
  6654. productionDefect.GoodsID = newProductionDataEntity.GoodsID;
  6655. productionDefect.GoodsCode = newProductionDataEntity.GoodsCode;
  6656. productionDefect.GoodsName = newProductionDataEntity.GoodsName;
  6657. productionDefect.Remarks = newProductionDataEntity.Remarks;
  6658. productionDefect.ScrapResponFlag
  6659. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6660. productionDefect.ProductionDefectID = productionDefect.ProductionDefectID == 0 ?
  6661. originalProductionDefectID : productionDefect.ProductionDefectID;
  6662. productionDefect.CreateTime = newProductionDataEntity.CreateTime == null
  6663. ? DateTime.Now : DateTime.Parse(newProductionDataEntity.CreateTime + "");
  6664. productionDefect.CheckTime = newProductionDataEntity.CheckTime;
  6665. // 保存缺陷
  6666. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6667. if (!string.IsNullOrEmpty(errMsg))
  6668. {
  6669. sre.Status = Constant.ServiceResultStatus.Other;
  6670. sre.Message = errMsg;
  6671. return sre;
  6672. }
  6673. #endregion
  6674. }
  6675. }
  6676. #endregion
  6677. // 没有错误 提交事务
  6678. if (string.IsNullOrEmpty(errMsg))
  6679. {
  6680. oracleTrConn.Commit();
  6681. }
  6682. else
  6683. {
  6684. oracleTrConn.Rollback();
  6685. }
  6686. }
  6687. catch (Exception ex)
  6688. {
  6689. oracleTrConn.Rollback();
  6690. throw ex;
  6691. }
  6692. finally
  6693. {
  6694. // 释放资源
  6695. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6696. {
  6697. oracleTrConn.Disconnect();
  6698. }
  6699. }
  6700. return sre;
  6701. }
  6702. /// <summary>
  6703. /// 查询工序信息
  6704. /// </summary>
  6705. /// <param name="oracleTrConn">连接对象</param>
  6706. /// <param name="procedureID">工序ID</param>
  6707. /// <returns>工序实体</returns>
  6708. private static ProcedureEntity GetProcedurByID(IDBTransaction oracleTrConn, int procedureID)
  6709. {
  6710. ProcedureEntity procedureEntity = new ProcedureEntity();
  6711. string procsql = "pro_pm_searchProcedurbyID";
  6712. try
  6713. {
  6714. IDataParameter[] paras = new OracleParameter[]
  6715. {
  6716. new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input),
  6717. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  6718. };
  6719. DataSet returnDs = oracleTrConn.ExecStoredProcedure(procsql, paras);
  6720. if (returnDs != null
  6721. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6722. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6723. {
  6724. DataRow row = returnDs.Tables[0].Rows[0];
  6725. // 转实体
  6726. procedureEntity = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  6727. return procedureEntity;
  6728. }
  6729. else
  6730. {
  6731. return null;
  6732. }
  6733. }
  6734. catch (Exception ex)
  6735. {
  6736. throw ex;
  6737. }
  6738. }
  6739. /// <summary>
  6740. /// 保存缺陷
  6741. /// </summary>
  6742. /// <param name="oracleTrConn">连接对象</param>
  6743. /// <param name="productionDefect">缺陷数据</param>
  6744. /// <param name="sUserInfo">用户基本信息</param>
  6745. /// <returns>string</returns>
  6746. private static string AddDefect(IDBTransaction oracleTrConn, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  6747. {
  6748. // 查询新插入的生产缺陷ID
  6749. string sqlString = "select SEQ_PM_Defect_DefectID.nextval from dual";
  6750. string idStr = oracleTrConn.GetSqlResultToStr(sqlString);
  6751. int newProductionDefectID = 0;
  6752. if (!string.IsNullOrEmpty(idStr))
  6753. {
  6754. newProductionDefectID = int.Parse(idStr);
  6755. }
  6756. else
  6757. {
  6758. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6759. }
  6760. OracleParameter[] paras = null;
  6761. if (productionDefect.ProductionDefectID != 0)
  6762. {
  6763. #region SQL
  6764. sqlString = "INSERT INTO TP_PM_DEFECT\n" +
  6765. " (PRODUCTIONDEFECTID,\n" +
  6766. " PRODUCTIONDATAID,\n" +
  6767. " BARCODE,\n" +
  6768. " PRODUCTIONLINEID,\n" +
  6769. " PRODUCTIONLINECODE,\n" +
  6770. " PRODUCTIONLINENAME,\n" +
  6771. " PROCEDUREID,\n" +
  6772. " PROCEDURECODE,\n" +
  6773. " PROCEDURENAME,\n" +
  6774. " USERID,\n" +
  6775. " USERCODE,\n" +
  6776. " USERNAME,\n" +
  6777. " GOODSID,\n" +
  6778. " GOODSCODE,\n" +
  6779. " GOODSNAME,\n" +
  6780. " DEFECTID,\n" +
  6781. " DEFECTCODE,\n" +
  6782. " DEFECTNAME,\n" +
  6783. " DEFECTPOSITIONID,\n" +
  6784. " DEFECTPOSITIONCODE,\n" +
  6785. " DEFECTPOSITIONNAME,\n" +
  6786. " DEFECTPRODUCTIONDATAID,\n" +
  6787. " DEFECTPROCEDUREID,\n" +
  6788. " DEFECTPROCEDURECODE,\n" +
  6789. " DEFECTPROCEDURENAME,\n" +
  6790. " DEFECTUSERID,\n" +
  6791. " DEFECTUSERCODE,\n" +
  6792. " DEFECTUSERNAME,\n" +
  6793. " DEFECTJOBS,\n" +
  6794. " REMARKS,\n" +
  6795. " ACCOUNTID,\n" +
  6796. " VALUEFLAG,\n" +
  6797. " CREATETIME,\n" +
  6798. " CREATEUSERID,\n" +
  6799. " UPDATETIME,\n" +
  6800. " UPDATEUSERID,\n" +
  6801. " SCRAPRESPONFLAG,\n" +
  6802. " DEFECTFINE,\n" +
  6803. " MISSEDUSERID,\n" +
  6804. " MISSEDUSERCODE,\n" +
  6805. " MISSEDUSERNAME,\n" +
  6806. " SPECIALDEFECT,\n" +
  6807. " DEFECTDEDUCTIONNUM,\n" +
  6808. " CHECKTIME)\n" +
  6809. " SELECT :NEWPRODUCTIONDEFECTID,\n" +
  6810. " :PRODUCTIONDATAID,\n" +
  6811. " BARCODE,\n" +
  6812. " PRODUCTIONLINEID,\n" +
  6813. " PRODUCTIONLINECODE,\n" +
  6814. " PRODUCTIONLINENAME,\n" +
  6815. " PROCEDUREID,\n" +
  6816. " PROCEDURECODE,\n" +
  6817. " PROCEDURENAME,\n" +
  6818. " USERID,\n" +
  6819. " USERCODE,\n" +
  6820. " USERNAME,\n" +
  6821. " GOODSID,\n" +
  6822. " GOODSCODE,\n" +
  6823. " GOODSNAME,\n" +
  6824. " :DEFECTID,\n" +
  6825. " :DEFECTCODE,\n" +
  6826. " :DEFECTNAME,\n" +
  6827. " :DEFECTPOSITIONID,\n" +
  6828. " :DEFECTPOSITIONCODE,\n" +
  6829. " :DEFECTPOSITIONNAME,\n" +
  6830. " DEFECTPRODUCTIONDATAID,\n" +
  6831. " :DEFECTPROCEDUREID,\n" +
  6832. " :DEFECTPROCEDURECODE,\n" +
  6833. " :DEFECTPROCEDURENAME,\n" +
  6834. " :DEFECTUSERID,\n" +
  6835. " :DEFECTUSERCODE,\n" +
  6836. " :DEFECTUSERNAME,\n" +
  6837. " :DEFECTJOBS,\n" +
  6838. " REMARKS,\n" +
  6839. " ACCOUNTID,\n" +
  6840. " '1',\n" +
  6841. " CREATETIME,\n" +
  6842. " :CREATEUSERID,\n" +
  6843. " UPDATETIME,\n" +
  6844. " :UPDATEUSERID,\n" +
  6845. " SCRAPRESPONFLAG,\n" +
  6846. " :DEFECTFINE,\n" +
  6847. " MISSEDUSERID,\n" +
  6848. " MISSEDUSERCODE,\n" +
  6849. " MISSEDUSERNAME,\n" +
  6850. " SPECIALDEFECT,\n" +
  6851. " :DEFECTDEDUCTIONNUM,\n" +
  6852. " CHECKTIME\n" +
  6853. " FROM TP_PM_DEFECT\n" +
  6854. " WHERE PRODUCTIONDEFECTID = :PRODUCTIONDEFECTID";
  6855. #endregion
  6856. #region 参数
  6857. paras = new OracleParameter[]
  6858. {
  6859. new OracleParameter(":NEWPRODUCTIONDEFECTID",OracleDbType.Int32,newProductionDefectID,ParameterDirection.Input),
  6860. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,productionDefect.ProductionDataID,ParameterDirection.Input),
  6861. new OracleParameter(":DEFECTID",OracleDbType.Int32,productionDefect.DefectID,ParameterDirection.Input),
  6862. new OracleParameter(":DEFECTCODE",OracleDbType.Varchar2,productionDefect.DefectCode,ParameterDirection.Input),
  6863. new OracleParameter(":DEFECTNAME",OracleDbType.Varchar2,productionDefect.DefectName,ParameterDirection.Input),
  6864. new OracleParameter(":DEFECTPOSITIONID",OracleDbType.Int32,productionDefect.DefectPositionID,ParameterDirection.Input),
  6865. new OracleParameter(":DEFECTPOSITIONCODE",OracleDbType.Varchar2,productionDefect.DefectPositionCode,ParameterDirection.Input),
  6866. new OracleParameter(":DEFECTPOSITIONNAME",OracleDbType.Varchar2,productionDefect.DefectPositionName,ParameterDirection.Input),
  6867. new OracleParameter(":DEFECTPROCEDUREID",OracleDbType.Int32,productionDefect.DefectProcedureID,ParameterDirection.Input),
  6868. new OracleParameter(":DEFECTPROCEDURECODE",OracleDbType.Varchar2,productionDefect.DefectProcedureCode,ParameterDirection.Input),
  6869. new OracleParameter(":DEFECTPROCEDURENAME",OracleDbType.Varchar2,productionDefect.DefectProcedureName,ParameterDirection.Input),
  6870. new OracleParameter(":DEFECTUSERID",OracleDbType.Int32,productionDefect.DefectUserID,ParameterDirection.Input),
  6871. new OracleParameter(":DEFECTUSERCODE",OracleDbType.Varchar2,productionDefect.DefectUserCode,ParameterDirection.Input),
  6872. new OracleParameter(":DEFECTUSERNAME",OracleDbType.Varchar2,productionDefect.DefectUserName,ParameterDirection.Input),
  6873. new OracleParameter(":DEFECTJOBS",OracleDbType.Int32,productionDefect.DefectJobs,ParameterDirection.Input),
  6874. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  6875. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  6876. new OracleParameter(":DEFECTFINE",OracleDbType.Int32,productionDefect.DefectFine,ParameterDirection.Input),
  6877. new OracleParameter(":DefectDeductionNum",OracleDbType.Decimal,productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum,ParameterDirection.Input),
  6878. new OracleParameter(":PRODUCTIONDEFECTID",OracleDbType.Int32,productionDefect.ProductionDefectID,ParameterDirection.Input)
  6879. };
  6880. #endregion
  6881. }
  6882. else
  6883. {
  6884. #region SQL
  6885. sqlString = "insert into tp_pm_defect"
  6886. + " ( ProductionDefectID,"
  6887. + " productiondataid,"
  6888. + " barcode,"
  6889. + " productionlineid,"
  6890. + " productionlinecode,"
  6891. + " productionlinename,"
  6892. + " procedureid,"
  6893. + " procedurecode,"
  6894. + " procedurename,"
  6895. + " userid,"
  6896. + " usercode,"
  6897. + " username,"
  6898. + " goodsid,"
  6899. + " goodscode,"
  6900. + " goodsname,"
  6901. + " defectid,"
  6902. + " defectcode,"
  6903. + " defectname,"
  6904. + " defectpositionid,"
  6905. + " defectpositioncode,"
  6906. + " defectpositionname,"
  6907. + " scrapResponFlag,"
  6908. + " defectproductiondataid,"
  6909. + " defectprocedureid,"
  6910. + " defectprocedurecode,"
  6911. + " defectprocedurename,"
  6912. + " defectuserid,"
  6913. + " defectusercode,"
  6914. + " defectusername,"
  6915. + " defectjobs,"
  6916. + " remarks,"
  6917. + " accountid,"
  6918. + " createuserid,"
  6919. + " CREATETIME,"
  6920. + " defectfine,"
  6921. + " misseduserid,"
  6922. + " missedusercode,"
  6923. + " missedusername,"
  6924. + " updateuserid,SpecialDefect,DefectDeductionNum,CheckTime)"
  6925. + " values"
  6926. + " ("
  6927. + " :ProductionDefectID,"
  6928. + " :productiondataid,"
  6929. + " :barcode,"
  6930. + " :productionlineid,"
  6931. + " :productionlinecode,"
  6932. + " :productionlinename,"
  6933. + " :procedureid,"
  6934. + " :procedurecode,"
  6935. + " :procedurename,"
  6936. + " :userid,"
  6937. + " :usercode,"
  6938. + " :username,"
  6939. + " :goodsid,"
  6940. + " :goodscode,"
  6941. + " :goodsname,"
  6942. + " :defectid,"
  6943. + " :defectcode,"
  6944. + " :defectname,"
  6945. + " :defectpositionid,"
  6946. + " :defectpositioncode,"
  6947. + " :defectpositionname,"
  6948. + " :scrapResponFlag,"
  6949. + " :defectproductiondataid,"
  6950. + " :defectprocedureid,"
  6951. + " :defectprocedurecode,"
  6952. + " :defectprocedurename,"
  6953. + " :defectuserid,"
  6954. + " :defectusercode,"
  6955. + " :defectusername,"
  6956. + " :defectjobs,"
  6957. + " :remarks,"
  6958. + " :accountid,"
  6959. + " :createuserid,"
  6960. + " :createtime,"
  6961. + " :defectfine,"
  6962. + " :misseduserid,"
  6963. + " :missedusercode,"
  6964. + " :missedusername,"
  6965. + " :updateuserid,:SpecialDefect,:DefectDeductionNum,:CheckTime)";
  6966. #endregion
  6967. #region 参数
  6968. paras = new OracleParameter[]
  6969. {
  6970. new OracleParameter(":ProductionDefectID",newProductionDefectID),
  6971. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  6972. new OracleParameter(":barcode",productionDefect.BarCode),
  6973. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  6974. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  6975. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  6976. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  6977. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  6978. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  6979. new OracleParameter(":userid",productionDefect.UserID),
  6980. new OracleParameter(":usercode",productionDefect.UserCode),
  6981. new OracleParameter(":username",productionDefect.UserName),
  6982. new OracleParameter(":goodsid",productionDefect.GoodsID),
  6983. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  6984. new OracleParameter(":goodsname",productionDefect.GoodsName),
  6985. new OracleParameter(":defectid",productionDefect.DefectID),
  6986. new OracleParameter(":defectcode",productionDefect.DefectCode),
  6987. new OracleParameter(":defectname",productionDefect.DefectName),
  6988. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  6989. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  6990. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  6991. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  6992. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  6993. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  6994. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  6995. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  6996. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  6997. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  6998. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  6999. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  7000. new OracleParameter(":remarks",productionDefect.Remarks),
  7001. new OracleParameter(":accountid",sUserInfo.AccountID),
  7002. new OracleParameter(":createuserid",sUserInfo.UserID),
  7003. new OracleParameter(":createtime",productionDefect.CreateTime),
  7004. new OracleParameter(":defectfine",productionDefect.DefectFine),
  7005. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  7006. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  7007. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  7008. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7009. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  7010. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  7011. new OracleParameter(":CheckTime",productionDefect.CheckTime)
  7012. };
  7013. #endregion
  7014. }
  7015. int result = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  7016. // 保存失败
  7017. if (result < 1)
  7018. {
  7019. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7020. }
  7021. #region 插入生产缺陷责任者
  7022. if (productionDefect.DefectResponsibles != null)
  7023. {
  7024. foreach (DefectResponsibleEntity DefectResponsible in productionDefect.DefectResponsibles)
  7025. {
  7026. #region SQL
  7027. sqlString = "insert into tp_pm_defectresponsible"
  7028. + " (productiondefectid,"
  7029. + " staffid,"
  7030. + " userid,"
  7031. + " usercode,"
  7032. + " Ujobsid,"
  7033. + " SJobsID,"
  7034. + " staffstatus,"
  7035. + " accountid,"
  7036. + " createuserid,"
  7037. + " updateuserid)"
  7038. + " values"
  7039. + " (:productiondefectid,"
  7040. + " :staffid,"
  7041. + " :userid,"
  7042. + " :usercode,"
  7043. + " :ujobsid,"
  7044. + " :sjobsid,"
  7045. + " :staffstatus,"
  7046. + " :accountid,"
  7047. + " :createuserid,"
  7048. + " :updateuserid)";
  7049. #endregion
  7050. #region 参数
  7051. paras = new OracleParameter[]
  7052. {
  7053. new OracleParameter(":productiondefectid",OracleDbType.Int32,newProductionDefectID,ParameterDirection.Input),
  7054. new OracleParameter(":staffid",OracleDbType.Int32,DefectResponsible.StaffID,ParameterDirection.Input),
  7055. new OracleParameter(":userid",OracleDbType.Int32,DefectResponsible.UserID,ParameterDirection.Input),
  7056. new OracleParameter(":usercode",OracleDbType.Varchar2,DefectResponsible.UserCode,ParameterDirection.Input),
  7057. new OracleParameter(":ujobsid",OracleDbType.Int32,DefectResponsible.UJobsID,ParameterDirection.Input),
  7058. new OracleParameter(":sjobsid",OracleDbType.Int32,DefectResponsible.SJobsID,ParameterDirection.Input),
  7059. new OracleParameter(":staffstatus",OracleDbType.Int32,DefectResponsible.StaffStatus,ParameterDirection.Input),
  7060. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  7061. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7062. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
  7063. };
  7064. #endregion
  7065. result = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  7066. // 保存失败
  7067. if (result < 1)
  7068. {
  7069. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7070. }
  7071. }
  7072. }
  7073. #endregion
  7074. return null;
  7075. }
  7076. /// <summary>
  7077. /// 通过条码查出责任工序(成品改判用)
  7078. /// </summary>
  7079. /// <param name="barcode">产品条码</param>
  7080. /// <param name="defectid">缺陷ID</param>
  7081. /// <returns>DataSet</returns>
  7082. public static ServiceResultEntity GetDutyProcedureByBarCodeForTamper(string barcode, int defectid, int accountid)
  7083. {
  7084. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7085. try
  7086. {
  7087. con.Open();
  7088. ServiceResultEntity sre = new ServiceResultEntity();
  7089. DataSet dsReturn = new DataSet();
  7090. //string sqlString = "SELECT pdin.ProductionDataID\n" +
  7091. // " ,pdin.ProcedureID AS DutyProcedureID\n" +
  7092. // " ,pdin.ProcedureCode AS DutyProcedureCode\n" +
  7093. // " ,pdin.ProcedureName AS DutyProcedureName\n" +
  7094. // " ,pdin.NodeType\n" +
  7095. // " ,pdin.ModelType\n" +
  7096. // " ,pdin.classessettingid\n" +
  7097. // " ,pdin.userid\n" +
  7098. // " ,pdin.usercode\n" +
  7099. // " ,pdin.username\n" +
  7100. // " FROM TP_PM_ProductionData pdin\n" +
  7101. // " WHERE pdin.valueflag = '1'\n" +
  7102. // " AND pdin.accountid = :accountid\n" +
  7103. // " AND pdin.Barcode = :Barcode\n" +
  7104. // " AND EXISTS (SELECT 1\n" +
  7105. // " FROM TP_PC_DefectProcedureJobs dpJobs\n" +
  7106. // " WHERE dpJobs.DefectID = :DefectID\n" +
  7107. // " AND pdin.ProcedureID = dpJobs.ProcedureID)\n" +
  7108. // " ORDER BY pdin.ProductionDataID";
  7109. // 去掉重复工序(取最后一个)
  7110. string sqlString = "select pdin.ProductionDataID\n" +
  7111. " ,pdin.ProcedureID as DutyProcedureID\n" +
  7112. " ,pdin.ProcedureCode as DutyProcedureCode\n" +
  7113. " ,pdin.ProcedureName as DutyProcedureName\n" +
  7114. " ,pdin.NodeType\n" +
  7115. " ,pdin.ModelType\n" +
  7116. " ,pdin.classessettingid\n" +
  7117. " ,pdin.userid\n" +
  7118. " ,pdin.usercode\n" +
  7119. " ,pdin.username\n" +
  7120. " from TP_PM_ProductionDataIn pdin\n" +
  7121. " where pdin.productiondataid in\n" +
  7122. " (select max(pdi.productiondataid) pdid\n" +
  7123. " from TP_PM_ProductionDataIn pdi\n" +
  7124. " where pdi.valueflag = '1'\n" +
  7125. " and pdi.accountid = :accountid\n" +
  7126. " and pdi.Barcode = :Barcode\n" +
  7127. " and exists\n" +
  7128. " (select 1\n" +
  7129. " from TP_PC_DefectProcedureJobs dpJobs\n" +
  7130. " where dpJobs.DefectID = :DefectID\n" +
  7131. " and pdi.ProcedureID = dpJobs.ProcedureID)\n" +
  7132. " group by pdi.ProcedureID)\n" +
  7133. " order by pdin.ProductionDataID";
  7134. OracleParameter[] paras = new OracleParameter[]{
  7135. new OracleParameter(":accountid",OracleDbType.Int32, accountid,ParameterDirection.Input),
  7136. new OracleParameter(":Barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  7137. new OracleParameter(":DefectID",OracleDbType.Int32, defectid,ParameterDirection.Input),
  7138. };
  7139. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  7140. ds.Tables[0].TableName = "TProcedure";
  7141. sqlString = "select procedureid,jobsid from TP_PC_DefectProcedureJobs where TP_PC_DefectProcedureJobs.Defectid=:Defectid";
  7142. paras = new OracleParameter[]
  7143. {
  7144. new OracleParameter(":Defectid",defectid),
  7145. };
  7146. DataSet ds3 = con.GetSqlResultToDs(sqlString, paras);
  7147. ds3.Tables[0].TableName = "TP_PC_DefectProcedureJobs";
  7148. if (!dsReturn.Tables.Contains("TProcedure"))
  7149. {
  7150. dsReturn.Tables.Add(ds.Tables[0].Copy());
  7151. }
  7152. if (!dsReturn.Tables.Contains("TP_PC_DefectProcedureJobs"))
  7153. {
  7154. dsReturn.Tables.Add(ds3.Tables[0].Copy());
  7155. }
  7156. sre.Status = Constant.ServiceResultStatus.Success;
  7157. sre.Data = dsReturn;
  7158. return sre;
  7159. }
  7160. catch (Exception ex)
  7161. {
  7162. throw ex;
  7163. }
  7164. finally
  7165. {
  7166. if (con.ConnState == ConnectionState.Open)
  7167. {
  7168. con.Close();
  7169. }
  7170. }
  7171. }
  7172. #endregion
  7173. #region 水效标识
  7174. public static ServiceResultEntity GetGoodsByBarCode(string barcode, SUserInfo sUserInfo)
  7175. {
  7176. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7177. try
  7178. {
  7179. oracleConn.Open();
  7180. ServiceResultEntity sre = new ServiceResultEntity();
  7181. string gbarcode = null;
  7182. #region 获得注浆条码
  7183. string sqlString = @"select FUN_CMN_GetBarCode(:barcode, null, :accountid) From DUAL";
  7184. OracleParameter[] paras = new OracleParameter[]
  7185. {
  7186. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  7187. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input)
  7188. };
  7189. DataTable dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7190. if (dtResult != null && dtResult.Rows.Count > 0)
  7191. {
  7192. gbarcode = dtResult.Rows[0][0].ToString();
  7193. }
  7194. else
  7195. {
  7196. sre.Status = Constant.ServiceResultStatus.Other;
  7197. sre.OtherStatus = -11;
  7198. sre.Message = "条码【" + barcode + "】,不符合条件。";
  7199. return sre;
  7200. }
  7201. //// 2.判断产品是否在产成品表中
  7202. //sqlString = @"SELECT 1 FROM TP_PM_FINISHEDPRODUCT F WHERE F.VALUEFLAG = 1 AND F.GOODSLEVELTYPEID IN(4,5) AND F.BARCODE = :BARCODE";
  7203. //paras = new OracleParameter[]
  7204. //{
  7205. // new OracleParameter(":BARCODE", OracleDbType.NVarchar2, gbarcode, ParameterDirection.Input)
  7206. //};
  7207. //dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7208. //if (dtResult != null && dtResult.Rows.Count > 0)
  7209. //{
  7210. // sre.Status = Constant.ServiceResultStatus.Other;
  7211. // sre.OtherStatus = -11;
  7212. // sre.Message = "条码【" + barcode + "】,已经是产成品。";
  7213. // return sre;
  7214. //}
  7215. #endregion
  7216. #region 查询产品相关信息
  7217. sqlString = "SELECT GD.BARCODE,\n" +
  7218. //" (GOODS.MATERIALCODE || L.TAGCODE || GD.ONLYCODE) AS FINISHEDBARCODE,\n" +
  7219. " nvl(GD.outlabelcode, (GOODS.MATERIALCODE || (select a.workcode from tp_mst_account a where a.accountid = gd.accountid) || L.TAGCODE || GD.ONLYCODE)) AS FINISHEDBARCODE,\n" +
  7220. " L.LOGONAME || '[' || L.LOGOCODE || ']' AS LOGONAME,\n" +
  7221. " GD.GOODSCODE,\n" +
  7222. " GOODS.GOODSMODEL,\n" +
  7223. //" GOODS.WATERLABELCODE\n" +
  7224. " nvl((select gls.WATERLABELCODE\n" +
  7225. " from TP_MST_GOODSLOGOSAP gls\n" +
  7226. " where gls.goodsid = GD.goodsid\n" +
  7227. " and gls.logoid = GD.LOGOID)\n" +
  7228. " ,GOODS.WATERLABELCODE) WATERLABELCODE\n" +
  7229. " FROM TP_PM_GROUTINGDAILYDETAIL GD\n" +
  7230. " INNER JOIN TP_MST_LOGO L\n" +
  7231. " ON GD.LOGOID = L.LOGOID\n" +
  7232. " INNER JOIN TP_MST_GOODS GOODS\n" +
  7233. " ON GD.GOODSID = GOODS.GOODSID\n" +
  7234. " WHERE GD.VALUEFLAG = '1'\n" +
  7235. " AND GD.BARCODE = :BARCODE";
  7236. paras = new OracleParameter[]
  7237. {
  7238. new OracleParameter(":BARCODE", OracleDbType.NVarchar2, gbarcode, ParameterDirection.Input)
  7239. };
  7240. dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7241. if (dtResult != null && dtResult.Rows.Count > 0)
  7242. {
  7243. sre.Status = Constant.ServiceResultStatus.Success;
  7244. sre.Result = dtResult;
  7245. }
  7246. else
  7247. {
  7248. sre.Status = Constant.ServiceResultStatus.Other;
  7249. sre.OtherStatus = -11;
  7250. sre.Message = "条码【" + barcode + "】,不符合条件。";
  7251. }
  7252. #endregion
  7253. return sre;
  7254. }
  7255. catch (Exception ex)
  7256. {
  7257. throw ex;
  7258. }
  7259. finally
  7260. {
  7261. if (oracleConn.ConnState == ConnectionState.Open)
  7262. {
  7263. oracleConn.Close();
  7264. }
  7265. }
  7266. }
  7267. #endregion
  7268. #region 工厂调出
  7269. /// <summary>
  7270. /// 获取工厂调出记录
  7271. /// </summary>
  7272. /// <param name="procedureID">工序ID</param>
  7273. /// <param name="barcode">产品条码</param>
  7274. /// <returns>DataSet</returns>
  7275. public static ServiceResultEntity GetAllocateOut(ClientRequestEntity cre, SUserInfo sUserInfo)
  7276. {
  7277. ServiceResultEntity sre = new ServiceResultEntity();
  7278. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7279. List<OracleParameter> paras = new List<OracleParameter>();
  7280. try
  7281. {
  7282. con.Open();
  7283. string sqlString =
  7284. "SELECT sp.barcode\n" +
  7285. " ,sp.productionlinecode\n" +
  7286. " ,sp.productionlinename\n" +
  7287. " ,sp.goodscode\n" +
  7288. " ,sp.goodsname\n" +
  7289. " ,sp.groutingdate\n" +
  7290. " ,sp.groutinglinecode\n" +
  7291. " ,sp.groutinglinename\n" +
  7292. " ,sp.groutingmouldcode\n" +
  7293. " ,sp.mouldcode\n" +
  7294. " ,sp.scrapdate\n" +
  7295. " ,sp.rreason\n" +
  7296. " ,sp.remarks\n" +
  7297. " ,sp.accountdate\n" +
  7298. " ,sp.groutingusercode\n" +
  7299. " ,sp.procedurecode\n" +
  7300. " ,sp.procedurename\n" +
  7301. " ,sp.scraptype\n" +
  7302. " ,sp.recyclingflag\n" +
  7303. " ,sp.recyclingusercode\n" +
  7304. " ,sp.recyclingtime\n" +
  7305. " ,sp.responsibleusercode\n" +
  7306. " ,sp.backouttime\n" +
  7307. " ,gl.goodslevelname\n" +
  7308. " ,gdd.ispublicbody\n" +
  7309. " ,gdd.specialrepairflag\n" +
  7310. " FROM tp_pm_scrapproduct sp\n" +
  7311. " INNER JOIN tp_mst_goodslevel gl\n" +
  7312. " ON sp.goodslevelid = gl.goodslevelid\n" +
  7313. " LEFT JOIN tp_pm_groutingdailydetail gdd\n" +
  7314. " ON sp.barcode = gdd.barcode\n" +
  7315. " WHERE sp.valueflag = '1'\n" +
  7316. " AND gl.goodsleveltypeid = 10\n" +
  7317. " AND sp.accountid = :accountid\n" +
  7318. " AND sp.scrapdate >= :scrapdatestart\n" +
  7319. " AND sp.scrapdate < :scrapdateend\n";
  7320. paras.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  7321. paras.Add(new OracleParameter(":scrapdatestart", cre.Properties["scrapdatestart"]));
  7322. paras.Add(new OracleParameter(":scrapdateend", cre.Properties["scrapdateend"]));
  7323. if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
  7324. {
  7325. sqlString += " AND sp.barcode LIKE :barcode ";
  7326. paras.Add(new OracleParameter(":barcode", "%" + cre.Properties["barcode"] + "%"));
  7327. }
  7328. if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
  7329. {
  7330. sqlString += " AND sp.goodscode LIKE :goodscode ";
  7331. paras.Add(new OracleParameter(":goodscode", "%" + cre.Properties["goodscode"] + "%"));
  7332. }
  7333. if (!string.IsNullOrEmpty(cre.Properties["goodsname"] + ""))
  7334. {
  7335. sqlString += " AND sp.goodsname LIKE :goodsname ";
  7336. paras.Add(new OracleParameter(":goodsname", "%" + cre.Properties["goodsname"] + "%"));
  7337. }
  7338. if (!string.IsNullOrEmpty(cre.Properties["groutinglinecode"] + ""))
  7339. {
  7340. sqlString += " AND sp.groutinglinecode LIKE :groutinglinecode ";
  7341. paras.Add(new OracleParameter(":groutinglinecode", "%" + cre.Properties["groutinglinecode"] + "%"));
  7342. }
  7343. if (!string.IsNullOrEmpty(cre.Properties["groutinglinename"] + ""))
  7344. {
  7345. sqlString += " AND sp.groutinglinename LIKE :groutinglinename ";
  7346. paras.Add(new OracleParameter(":groutinglinename", "%" + cre.Properties["groutinglinename"] + "%"));
  7347. }
  7348. if (!string.IsNullOrEmpty(cre.Properties["rreason"] + ""))
  7349. {
  7350. sqlString += " AND sp.rreason LIKE :rreason ";
  7351. paras.Add(new OracleParameter(":rreason", "%" + cre.Properties["rreason"]+ "%"));
  7352. }
  7353. if (!string.IsNullOrEmpty(cre.Properties["remarks"] + ""))
  7354. {
  7355. sqlString += " AND sp.remarks LIKE :remarks ";
  7356. paras.Add(new OracleParameter(":remarks", "%" + cre.Properties["remarks"] + "%"));
  7357. }
  7358. sqlString += " ORDER BY sp.barcode";
  7359. sre.Data = con.GetSqlResultToDs(sqlString, paras.ToArray());
  7360. return sre;
  7361. }
  7362. catch (Exception ex)
  7363. {
  7364. throw ex;
  7365. }
  7366. finally
  7367. {
  7368. if (con.ConnState == ConnectionState.Open)
  7369. {
  7370. con.Close();
  7371. }
  7372. }
  7373. }
  7374. /// <summary>
  7375. /// 验证工厂调出条码
  7376. /// </summary>
  7377. /// <param name="barcode">条码</param>
  7378. /// <param name="outFlag">1:调出;0:撤销调出</param>
  7379. /// <param name="sUserInfo"></param>
  7380. /// <returns></returns>
  7381. public static ServiceResultEntity CheckAllocateOut(string barcode, int outFlag, SUserInfo sUserInfo)
  7382. {
  7383. ServiceResultEntity sre = new ServiceResultEntity();
  7384. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7385. try
  7386. {
  7387. string sqlString = string.Empty;
  7388. OracleParameter[] paras = null;
  7389. con.Open();
  7390. if (outFlag == 1)
  7391. {
  7392. // 当前工号是否有条码所在工序的操作权限
  7393. sqlString =
  7394. "SELECT inp.procedureid\n" +
  7395. " ,p.procedurename\n" +
  7396. " ,p.MODELTYPE\n" +
  7397. " ,(SELECT 1\n" +
  7398. " FROM tp_mst_userpurview t\n" +
  7399. " WHERE t.purviewtype = 10\n" +
  7400. " AND t.userid = :userid\n" +
  7401. " AND (t.purviewid = -1 OR t.purviewid = inp.procedureid)\n" +
  7402. " AND rownum = 1) userpurview\n" +
  7403. " FROM tp_pm_inproduction inp\n" +
  7404. " LEFT JOIN tp_pc_procedure p\n" +
  7405. " ON p.procedureid = inp.procedureid\n" +
  7406. " WHERE inp.barcode = :barcode";
  7407. paras = new OracleParameter[]
  7408. {
  7409. new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  7410. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  7411. };
  7412. DataTable dt = con.GetSqlResultToDt(sqlString, paras);
  7413. if (dt == null || dt.Rows.Count == 0)
  7414. {
  7415. sre.OtherStatus = -1;
  7416. sre.Message = "条码不在产";
  7417. return sre;
  7418. }
  7419. object userpurview = dt.Rows[0]["userpurview"];
  7420. if (userpurview == null || userpurview == DBNull.Value)
  7421. {
  7422. sre.OtherStatus = -1;
  7423. sre.Message = "当前工号没有条码所在工序【" + dt.Rows[0]["procedurename"] + "】的操作权限";
  7424. return sre;
  7425. }
  7426. int MODELTYPE = Convert.ToInt32(dt.Rows[0]["MODELTYPE"]);
  7427. if (MODELTYPE == 1 || MODELTYPE == 2 || MODELTYPE == 3 || MODELTYPE == 6)
  7428. {
  7429. sre.OtherStatus = -1;
  7430. sre.Message = "该产品处于无法调出的特殊工序中";
  7431. return sre;
  7432. }
  7433. }
  7434. #region 判断产品是否被挂起
  7435. sqlString = "select 1 as res\n" +
  7436. " from tp_pm_productsuspend ps\n" +
  7437. " inner join tp_pm_groutingdailydetail gdd\n" +
  7438. " on gdd.groutingdailydetailid = ps.groutingdailydetailid\n" +
  7439. " where gdd.barcode = :barcode";
  7440. OracleParameter[] pars = new OracleParameter[]
  7441. {
  7442. new OracleParameter(":barcode", barcode),
  7443. };
  7444. object objResult = con.GetSqlResultToObj(sqlString, pars);
  7445. if (objResult != null)
  7446. {
  7447. sre.OtherStatus = -1;
  7448. sre.Message = "该产品被挂起";
  7449. return sre;
  7450. }
  7451. #endregion
  7452. string strSql =
  7453. "SELECT 1\n" +
  7454. " FROM tp_pm_scrapproduct\n" +
  7455. " WHERE valueflag = '1'\n" +
  7456. " AND goodsleveltypeid = 10\n" +
  7457. " AND barcode = :barcode\n" +
  7458. " AND createtime = (SELECT MAX(createtime)\n" +
  7459. " FROM tp_pm_scrapproduct\n" +
  7460. " WHERE valueflag = '1'\n" +
  7461. " AND goodsleveltypeid = 10\n" +
  7462. " AND barcode = :barcode)";
  7463. paras = new OracleParameter[]
  7464. {
  7465. new OracleParameter(":barcode", barcode),
  7466. };
  7467. object isExists = con.GetSqlResultToObj(strSql, paras);
  7468. if (outFlag == 1 && isExists != null)
  7469. {
  7470. sre.OtherStatus = -1;
  7471. sre.Message = "该产品已调出";
  7472. return sre;
  7473. }
  7474. if (outFlag == 0 && isExists == null)
  7475. {
  7476. sre.OtherStatus = -1;
  7477. sre.Message = "该产品未调出";
  7478. return sre;
  7479. }
  7480. sqlString = "SELECT gdd.barcode\n" +
  7481. " ,gdd.goodscode\n" +
  7482. " ,gdd.goodsname\n" +
  7483. " ,gdd.groutinglinecode\n" +
  7484. " ,gdd.mouldcode\n" +
  7485. " FROM tp_pm_groutingdailydetail gdd\n" +
  7486. " WHERE gdd.barcode = :barcode";
  7487. OracleParameter[] Paras = new OracleParameter[]
  7488. {
  7489. new OracleParameter(":barcode", barcode)
  7490. };
  7491. sre.Data = con.GetSqlResultToDs(sqlString, Paras);
  7492. sre.Data.Tables[0].TableName = "AllocateOutData";
  7493. return sre;
  7494. }
  7495. catch (Exception ex)
  7496. {
  7497. throw ex;
  7498. }
  7499. finally
  7500. {
  7501. if (con.ConnState == ConnectionState.Open)
  7502. {
  7503. con.Close();
  7504. }
  7505. }
  7506. }
  7507. /// <summary>
  7508. /// 添加工厂调出
  7509. /// </summary>
  7510. /// <param name="SProductEntity"></param>
  7511. /// <param name="userInfo"></param>
  7512. /// <returns></returns>
  7513. public static ServiceResultEntity SaveAllocateOut(ClientRequestEntity cre, SUserInfo userInfo)
  7514. {
  7515. ServiceResultEntity sre = new ServiceResultEntity();
  7516. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  7517. try
  7518. {
  7519. string sqlString = string.Empty;
  7520. string barcode = string.Empty;
  7521. OracleParameter[] oracleParameter = null;
  7522. oracleTrConn.Connect();
  7523. #region SQL
  7524. // 检查在产表
  7525. string checkInproduction =
  7526. "SELECT 1\n" +
  7527. " FROM tp_pm_inproduction i\n" +
  7528. " LEFT JOIN tp_pc_procedure p\n" +
  7529. " ON i.procedureid = p.procedureid\n" +
  7530. " WHERE i.barcode = :barcode\n" +
  7531. " FOR UPDATE";
  7532. // 废弃产品主体信息
  7533. string insertScrapproduct =
  7534. "INSERT INTO tp_pm_scrapproduct\n" +
  7535. " (barcode\n" +
  7536. " ,productionlineid\n" +
  7537. " ,productionlinecode\n" +
  7538. " ,productionlinename\n" +
  7539. " ,goodsid\n" +
  7540. " ,goodscode\n" +
  7541. " ,goodsname\n" +
  7542. " ,groutingdailyid\n" +
  7543. " ,groutingdailydetailid\n" +
  7544. " ,groutingdate\n" +
  7545. " ,groutinglineid\n" +
  7546. " ,groutinglinecode\n" +
  7547. " ,groutinglinename\n" +
  7548. " ,gmouldtypeid\n" +
  7549. " ,groutinglinedetailid\n" +
  7550. " ,groutingmouldcode\n" +
  7551. " ,mouldcode\n" +
  7552. " ,goodslevelid\n" +
  7553. " ,goodsleveltypeid\n" +
  7554. " ,respontype\n" +
  7555. " ,scrapdate\n" +
  7556. " ,accountdate\n" +
  7557. " ,rreason\n" +
  7558. " ,remarks\n" +
  7559. " ,auditstatus\n" +
  7560. " ,auditor\n" +
  7561. " ,auditdate\n" +
  7562. " ,accountid\n" +
  7563. " ,createuserid\n" +
  7564. " ,updateuserid\n" +
  7565. " ,groutinguserid\n" +
  7566. " ,groutingusercode\n" +
  7567. " ,groutingnum\n" +
  7568. " ,ispublicbody\n" +
  7569. " ,isrefire\n" +
  7570. " ,specialrepairflag\n" +
  7571. " ,procedureid\n" +
  7572. " ,procedurename\n" +
  7573. " ,procedurecode\n" +
  7574. " ,logoid\n" +
  7575. " ,productiondataid)\n" +
  7576. " SELECT gdd.barcode\n" +
  7577. " ,ip.productionlineid\n" +
  7578. " ,ip.productionlinecode\n" +
  7579. " ,ip.productionlinename\n" +
  7580. " ,gdd.goodsid\n" +
  7581. " ,gdd.goodscode\n" +
  7582. " ,gdd.goodsname\n" +
  7583. " ,gdd.groutingdailyid\n" +
  7584. " ,gdd.groutingdailydetailid\n" +
  7585. " ,gdd.groutingdate\n" +
  7586. " ,gdd.groutinglineid\n" +
  7587. " ,gdd.groutinglinecode\n" +
  7588. " ,gdd.groutinglinename\n" +
  7589. " ,gdd.gmouldtypeid\n" +
  7590. " ,gdd.groutinglinedetailid\n" +
  7591. " ,gdd.groutingmouldcode\n" +
  7592. " ,gdd.mouldcode\n" +
  7593. " ,(SELECT g.goodslevelid\n" +
  7594. " FROM tp_mst_goodslevel g\n" +
  7595. " WHERE g.goodsleveltypeid = 10\n" +
  7596. " AND rownum = 1)\n" +
  7597. " ,10\n" +
  7598. " ,'1'\n" +
  7599. " ,:scrapdate\n" +
  7600. " ,:scrapdate\n" +
  7601. " ,:rreason\n" +
  7602. " ,:remarks\n" +
  7603. " ,1\n" +
  7604. " ,:auditor\n" +
  7605. " ,:auditdate\n" +
  7606. " ,:accountid\n" +
  7607. " ,:userid\n" +
  7608. " ,:userid\n" +
  7609. " ,ip.groutinguserid\n" +
  7610. " ,ip.groutingusercode\n" +
  7611. " ,ip.groutingnum\n" +
  7612. " ,gdd.ispublicbody\n" +
  7613. " ,ip.isrefire\n" +
  7614. " ,gdd.specialrepairflag\n" +
  7615. " ,ip.procedureid\n" +
  7616. " ,p.procedurename\n" +
  7617. " ,p.procedurecode\n" +
  7618. " ,gdd.logoid\n" +
  7619. " ,ip.productiondataid\n" +
  7620. " FROM tp_pm_groutingdailydetail gdd\n" +
  7621. " INNER JOIN tp_pm_inproduction ip\n" +
  7622. " ON ip.groutingdailydetailid = gdd.groutingdailydetailid\n" +
  7623. " INNER JOIN tp_pc_procedure p\n" +
  7624. " ON p.procedureid = ip.procedureid\n" +
  7625. " WHERE gdd.barcode = :barcode";
  7626. // 在产产品回收站
  7627. string insertInproductiontrash =
  7628. "INSERT INTO tp_pm_inproductiontrash\n" +
  7629. " (barcode\n" +
  7630. " ,productionlineid\n" +
  7631. " ,productionlinecode\n" +
  7632. " ,productionlinename\n" +
  7633. " ,proceduremodel\n" +
  7634. " ,modeltype\n" +
  7635. " ,defectflag\n" +
  7636. " ,reworkprocedureid\n" +
  7637. " ,ispublicbody\n" +
  7638. " ,isrefire\n" +
  7639. " ,goodslevelid\n" +
  7640. " ,goodsleveltypeid\n" +
  7641. " ,goodsid\n" +
  7642. " ,goodscode\n" +
  7643. " ,goodsname\n" +
  7644. " ,userid\n" +
  7645. " ,groutingdailyid\n" +
  7646. " ,groutingdailydetailid\n" +
  7647. " ,groutingdate\n" +
  7648. " ,groutinglineid\n" +
  7649. " ,groutinglinecode\n" +
  7650. " ,groutinglinename\n" +
  7651. " ,gmouldtypeid\n" +
  7652. " ,canmanytimes\n" +
  7653. " ,groutinglinedetailid\n" +
  7654. " ,groutingmouldcode\n" +
  7655. " ,mouldcode\n" +
  7656. " ,groutinguserid\n" +
  7657. " ,groutingusercode\n" +
  7658. " ,groutingnum\n" +
  7659. " ,remarks\n" +
  7660. " ,kilnid\n" +
  7661. " ,kilncode\n" +
  7662. " ,kilnname\n" +
  7663. " ,kilncarid\n" +
  7664. " ,kilncarcode\n" +
  7665. " ,kilncarname\n" +
  7666. " ,kilncarbatchno\n" +
  7667. " ,kilncarposition\n" +
  7668. " ,accountid\n" +
  7669. " ,valueflag\n" +
  7670. " ,createuserid\n" +
  7671. " ,updateuserid\n" +
  7672. " ,specialrepairflag\n" +
  7673. " ,flowprocedureid\n" +
  7674. " ,flowproceduretime\n" +
  7675. " ,procedureid\n" +
  7676. " ,proceduretime\n" +
  7677. " ,productiondataid\n" +
  7678. " ,logoid\n" +
  7679. " ,isreworkflag\n" +
  7680. " ,semicheckid)\n" +
  7681. " SELECT barcode\n" +
  7682. " ,productionlineid\n" +
  7683. " ,productionlinecode\n" +
  7684. " ,productionlinename\n" +
  7685. " ,proceduremodel\n" +
  7686. " ,modeltype\n" +
  7687. " ,defectflag\n" +
  7688. " ,reworkprocedureid\n" +
  7689. " ,ispublicbody\n" +
  7690. " ,isrefire\n" +
  7691. " ,(SELECT g.goodslevelid\n" +
  7692. " FROM tp_mst_goodslevel g\n" +
  7693. " WHERE g.goodsleveltypeid = 10\n" +
  7694. " AND rownum = 1)\n" +
  7695. " ,10\n" +
  7696. " ,goodsid\n" +
  7697. " ,goodscode\n" +
  7698. " ,goodsname\n" +
  7699. " ,userid\n" +
  7700. " ,groutingdailyid\n" +
  7701. " ,groutingdailydetailid\n" +
  7702. " ,groutingdate\n" +
  7703. " ,groutinglineid\n" +
  7704. " ,groutinglinecode\n" +
  7705. " ,groutinglinename\n" +
  7706. " ,gmouldtypeid\n" +
  7707. " ,canmanytimes\n" +
  7708. " ,groutinglinedetailid\n" +
  7709. " ,groutingmouldcode\n" +
  7710. " ,mouldcode\n" +
  7711. " ,groutinguserid\n" +
  7712. " ,groutingusercode\n" +
  7713. " ,groutingnum\n" +
  7714. " ,remarks\n" +
  7715. " ,kilnid\n" +
  7716. " ,kilncode\n" +
  7717. " ,kilnname\n" +
  7718. " ,kilncarid\n" +
  7719. " ,kilncarcode\n" +
  7720. " ,kilncarname\n" +
  7721. " ,kilncarbatchno\n" +
  7722. " ,kilncarposition\n" +
  7723. " ,accountid\n" +
  7724. " ,valueflag\n" +
  7725. " ,:userid\n" +
  7726. " ,:userid\n" +
  7727. " ,specialrepairflag\n" +
  7728. " ,flowprocedureid\n" +
  7729. " ,flowproceduretime\n" +
  7730. " ,procedureid\n" +
  7731. " ,proceduretime\n" +
  7732. " ,productiondataid\n" +
  7733. " ,logoid\n" +
  7734. " ,isreworkflag\n" +
  7735. " ,semicheckid\n" +
  7736. " FROM tp_pm_inproduction\n" +
  7737. " WHERE barcode = :barcode";
  7738. #endregion
  7739. #region 执行
  7740. foreach (DataRow row in cre.Data.Tables[0].Rows)
  7741. {
  7742. barcode = row["barcode"] + "";
  7743. // 检查在产表
  7744. oracleParameter = new OracleParameter[]
  7745. {
  7746. new OracleParameter(":barcode", barcode),
  7747. };
  7748. object isExists = oracleTrConn.GetSqlResultToDt(checkInproduction, oracleParameter);
  7749. if (isExists == null)
  7750. {
  7751. sre.OtherStatus = -1;
  7752. sre.Message = "操作的数据已经发生了变化";
  7753. return sre;
  7754. }
  7755. // 插入废弃产品主体信息
  7756. oracleParameter = new OracleParameter[]
  7757. {
  7758. new OracleParameter(":scrapdate", DateTime.Now.Date),
  7759. new OracleParameter(":rreason",cre.Properties["rreason"]),
  7760. new OracleParameter(":remarks",cre.Properties["remarks"]),
  7761. new OracleParameter(":accountid",userInfo.AccountID),
  7762. new OracleParameter(":userid",userInfo.UserID),
  7763. new OracleParameter(":barcode", barcode),
  7764. new OracleParameter(":auditor", userInfo.UserID),
  7765. new OracleParameter(":auditdate", DateTime.Now.Date)
  7766. };
  7767. sre.OtherStatus += oracleTrConn.ExecuteNonQuery(insertScrapproduct, oracleParameter);
  7768. // 插入在产产品回收站
  7769. oracleParameter = new OracleParameter[]
  7770. {
  7771. new OracleParameter(":userid",userInfo.UserID),
  7772. new OracleParameter(":barcode", barcode),
  7773. };
  7774. sre.OtherStatus += oracleTrConn.ExecuteNonQuery(insertInproductiontrash, oracleParameter);
  7775. // 更新在产表
  7776. sqlString = "update TP_PM_InProduction set inscrapflag='0' where BarCode=:barcode";
  7777. oracleParameter = new OracleParameter[]
  7778. {
  7779. new OracleParameter(":barcode", barcode),
  7780. };
  7781. sre.OtherStatus += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  7782. // 删除在产表
  7783. sqlString = "Delete from TP_PM_InProduction where BarCode=:barcode";
  7784. sre.OtherStatus += oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  7785. }
  7786. #endregion
  7787. oracleTrConn.Commit();
  7788. oracleTrConn.Disconnect();
  7789. }
  7790. catch (Exception ex)
  7791. {
  7792. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  7793. {
  7794. oracleTrConn.Rollback();
  7795. oracleTrConn.Disconnect();
  7796. }
  7797. throw new Exception(ex.ToString(), ex);
  7798. }
  7799. finally
  7800. {
  7801. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  7802. {
  7803. oracleTrConn.Disconnect();
  7804. }
  7805. }
  7806. return sre;
  7807. }
  7808. /// <summary>
  7809. /// 撤销工厂调出
  7810. /// </summary>
  7811. /// <param name="barcode">产品条码</param>
  7812. /// <param name="sUserInfo"></param>
  7813. /// <returns></returns>
  7814. public static ServiceResultEntity CancelAllocateOut(ClientRequestEntity cre, SUserInfo sUserInfo)
  7815. {
  7816. ServiceResultEntity sre = new ServiceResultEntity();
  7817. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  7818. try
  7819. {
  7820. string sqlString = string.Empty;
  7821. string barcode = string.Empty;
  7822. OracleParameter[] paras = null;
  7823. int ScrapProductID = 0;
  7824. oracleTrConn.Connect();
  7825. #region SQL
  7826. string chenkScrapproduct =
  7827. "SELECT scrapproductid\n" +
  7828. " ,recyclingflag\n" +
  7829. " FROM tp_pm_scrapproduct\n" +
  7830. " WHERE barcode = :barcode\n" +
  7831. " AND valueflag = '1'\n" +
  7832. " AND goodsleveltypeid = 10\n" +
  7833. " AND createtime = (SELECT MAX(createtime)\n" +
  7834. " FROM tp_pm_scrapproduct\n" +
  7835. " WHERE barcode = :barcode\n" +
  7836. " AND valueflag = '1'\n" +
  7837. " AND goodsleveltypeid = 10)";
  7838. // 回收站中数据回到在产中
  7839. string insertInproduction =
  7840. "INSERT INTO tp_pm_inproduction\n" +
  7841. " (barcode\n" +
  7842. " ,productionlineid\n" +
  7843. " ,productionlinecode\n" +
  7844. " ,productionlinename\n" +
  7845. " ,proceduremodel\n" +
  7846. " ,modeltype\n" +
  7847. " ,reworkprocedureid\n" +
  7848. " ,ispublicbody\n" +
  7849. " ,goodsid\n" +
  7850. " ,goodscode\n" +
  7851. " ,goodsname\n" +
  7852. " ,userid\n" +
  7853. " ,groutingdailyid\n" +
  7854. " ,groutingdailydetailid\n" +
  7855. " ,groutingdate\n" +
  7856. " ,groutinglineid\n" +
  7857. " ,groutinglinecode\n" +
  7858. " ,groutinglinename\n" +
  7859. " ,gmouldtypeid\n" +
  7860. " ,canmanytimes\n" +
  7861. " ,groutinglinedetailid\n" +
  7862. " ,groutingmouldcode\n" +
  7863. " ,mouldcode\n" +
  7864. " ,remarks\n" +
  7865. " ,accountid\n" +
  7866. " ,valueflag\n" +
  7867. " ,createtime\n" +
  7868. " ,createuserid\n" +
  7869. " ,updatetime\n" +
  7870. " ,updateuserid\n" +
  7871. " ,isrefire\n" +
  7872. " ,goodslevelid\n" +
  7873. " ,goodsleveltypeid\n" +
  7874. " ,defectflag\n" +
  7875. " ,groutinguserid\n" +
  7876. " ,groutingusercode\n" +
  7877. " ,groutingnum\n" +
  7878. " ,kilnid\n" +
  7879. " ,kilncode\n" +
  7880. " ,kilnname\n" +
  7881. " ,kilncarid\n" +
  7882. " ,kilncarcode\n" +
  7883. " ,kilncarname\n" +
  7884. " ,kilncarbatchno\n" +
  7885. " ,kilncarposition\n" +
  7886. " ,specialrepairflag\n" +
  7887. " ,flowprocedureid\n" +
  7888. " ,flowproceduretime\n" +
  7889. " ,procedureid\n" +
  7890. " ,proceduretime\n" +
  7891. " ,productiondataid\n" +
  7892. " ,logoid\n" +
  7893. " ,isreworkflag\n" +
  7894. " ,semicheckid)\n" +
  7895. " SELECT barcode\n" +
  7896. " ,productionlineid\n" +
  7897. " ,productionlinecode\n" +
  7898. " ,productionlinename\n" +
  7899. " ,proceduremodel\n" +
  7900. " ,modeltype\n" +
  7901. " ,reworkprocedureid\n" +
  7902. " ,ispublicbody\n" +
  7903. " ,goodsid\n" +
  7904. " ,goodscode\n" +
  7905. " ,goodsname\n" +
  7906. " ,userid\n" +
  7907. " ,groutingdailyid\n" +
  7908. " ,groutingdailydetailid\n" +
  7909. " ,groutingdate\n" +
  7910. " ,groutinglineid\n" +
  7911. " ,groutinglinecode\n" +
  7912. " ,groutinglinename\n" +
  7913. " ,gmouldtypeid\n" +
  7914. " ,canmanytimes\n" +
  7915. " ,groutinglinedetailid\n" +
  7916. " ,groutingmouldcode\n" +
  7917. " ,mouldcode\n" +
  7918. " ,remarks\n" +
  7919. " ,accountid\n" +
  7920. " ,valueflag\n" +
  7921. " ,createtime\n" +
  7922. " ,createuserid\n" +
  7923. " ,updatetime\n" +
  7924. " ,:updateuserid\n" +
  7925. " ,isrefire\n" +
  7926. " ,NULL\n" +
  7927. " ,NULL\n" +
  7928. " ,defectflag\n" +
  7929. " ,groutinguserid\n" +
  7930. " ,groutingusercode\n" +
  7931. " ,groutingnum\n" +
  7932. " ,kilnid\n" +
  7933. " ,kilncode\n" +
  7934. " ,kilnname\n" +
  7935. " ,kilncarid\n" +
  7936. " ,kilncarcode\n" +
  7937. " ,kilncarname\n" +
  7938. " ,kilncarbatchno\n" +
  7939. " ,kilncarposition\n" +
  7940. " ,specialrepairflag\n" +
  7941. " ,flowprocedureid\n" +
  7942. " ,flowproceduretime\n" +
  7943. " ,procedureid\n" +
  7944. " ,SYSDATE\n" +
  7945. " ,productiondataid\n" +
  7946. " ,logoid\n" +
  7947. " ,isreworkflag\n" +
  7948. " ,semicheckid\n" +
  7949. " FROM tp_pm_inproductiontrash\n" +
  7950. " WHERE barcode = :barcode";
  7951. // 生产数据恢复到在产生产数据
  7952. string insertProductiondatain =
  7953. "INSERT INTO tp_pm_productiondatain\n" +
  7954. " (productiondataid\n" +
  7955. " ,barcode\n" +
  7956. " ,centralizedbatchno\n" +
  7957. " ,productionlineid\n" +
  7958. " ,productionlinecode\n" +
  7959. " ,productionlinename\n" +
  7960. " ,procedureid\n" +
  7961. " ,procedurecode\n" +
  7962. " ,procedurename\n" +
  7963. " ,proceduremodel\n" +
  7964. " ,modeltype\n" +
  7965. " ,piecetype\n" +
  7966. " ,isreworked\n" +
  7967. " ,nodetype\n" +
  7968. " ,ispublicbody\n" +
  7969. " ,isrefire\n" +
  7970. " ,goodslevelid\n" +
  7971. " ,goodsleveltypeid\n" +
  7972. " ,specialrepairflag\n" +
  7973. " ,organizationid\n" +
  7974. " ,goodsid\n" +
  7975. " ,goodscode\n" +
  7976. " ,goodsname\n" +
  7977. " ,userid\n" +
  7978. " ,usercode\n" +
  7979. " ,username\n" +
  7980. " ,classessettingid\n" +
  7981. " ,kilnid\n" +
  7982. " ,kilncode\n" +
  7983. " ,kilnname\n" +
  7984. " ,kilncarid\n" +
  7985. " ,kilncarcode\n" +
  7986. " ,kilncarname\n" +
  7987. " ,kilncarbatchno\n" +
  7988. " ,kilncarposition\n" +
  7989. " ,reworkprocedureid\n" +
  7990. " ,reworkprocedurecode\n" +
  7991. " ,reworkprocedurename\n" +
  7992. " ,groutingdailyid\n" +
  7993. " ,groutingdailydetailid\n" +
  7994. " ,groutinglineid\n" +
  7995. " ,groutinglinecode\n" +
  7996. " ,groutinglinename\n" +
  7997. " ,gmouldtypeid\n" +
  7998. " ,canmanytimes\n" +
  7999. " ,groutinglinedetailid\n" +
  8000. " ,groutingdate\n" +
  8001. " ,groutingmouldcode\n" +
  8002. " ,mouldcode\n" +
  8003. " ,groutinguserid\n" +
  8004. " ,groutingusercode\n" +
  8005. " ,groutingnum\n" +
  8006. " ,remarks\n" +
  8007. " ,accountdate\n" +
  8008. " ,settlementflag\n" +
  8009. " ,accountid\n" +
  8010. " ,valueflag\n" +
  8011. " ,createtime\n" +
  8012. " ,createuserid\n" +
  8013. " ,updatetime\n" +
  8014. " ,updateuserid\n" +
  8015. " ,optimestamp\n" +
  8016. " ,triggerflag\n" +
  8017. " ,logoid\n" +
  8018. " ,backouttime\n" +
  8019. " ,backoutuserid\n" +
  8020. " ,backoutusercode\n" +
  8021. " ,checktime)\n" +
  8022. " SELECT productiondataid\n" +
  8023. " ,barcode\n" +
  8024. " ,centralizedbatchno\n" +
  8025. " ,productionlineid\n" +
  8026. " ,productionlinecode\n" +
  8027. " ,productionlinename\n" +
  8028. " ,procedureid\n" +
  8029. " ,procedurecode\n" +
  8030. " ,procedurename\n" +
  8031. " ,proceduremodel\n" +
  8032. " ,modeltype\n" +
  8033. " ,piecetype\n" +
  8034. " ,isreworked\n" +
  8035. " ,nodetype\n" +
  8036. " ,ispublicbody\n" +
  8037. " ,isrefire\n" +
  8038. " ,goodslevelid\n" +
  8039. " ,goodsleveltypeid\n" +
  8040. " ,specialrepairflag\n" +
  8041. " ,organizationid\n" +
  8042. " ,goodsid\n" +
  8043. " ,goodscode\n" +
  8044. " ,goodsname\n" +
  8045. " ,userid\n" +
  8046. " ,usercode\n" +
  8047. " ,username\n" +
  8048. " ,classessettingid\n" +
  8049. " ,kilnid\n" +
  8050. " ,kilncode\n" +
  8051. " ,kilnname\n" +
  8052. " ,kilncarid\n" +
  8053. " ,kilncarcode\n" +
  8054. " ,kilncarname\n" +
  8055. " ,kilncarbatchno\n" +
  8056. " ,kilncarposition\n" +
  8057. " ,reworkprocedureid\n" +
  8058. " ,reworkprocedurecode\n" +
  8059. " ,reworkprocedurename\n" +
  8060. " ,groutingdailyid\n" +
  8061. " ,groutingdailydetailid\n" +
  8062. " ,groutinglineid\n" +
  8063. " ,groutinglinecode\n" +
  8064. " ,groutinglinename\n" +
  8065. " ,gmouldtypeid\n" +
  8066. " ,canmanytimes\n" +
  8067. " ,groutinglinedetailid\n" +
  8068. " ,groutingdate\n" +
  8069. " ,groutingmouldcode\n" +
  8070. " ,mouldcode\n" +
  8071. " ,groutinguserid\n" +
  8072. " ,groutingusercode\n" +
  8073. " ,groutingnum\n" +
  8074. " ,remarks\n" +
  8075. " ,accountdate\n" +
  8076. " ,settlementflag\n" +
  8077. " ,accountid\n" +
  8078. " ,valueflag\n" +
  8079. " ,createtime\n" +
  8080. " ,createuserid\n" +
  8081. " ,updatetime\n" +
  8082. " ,updateuserid\n" +
  8083. " ,optimestamp\n" +
  8084. " ,1\n" +
  8085. " ,logoid\n" +
  8086. " ,backouttime\n" +
  8087. " ,backoutuserid\n" +
  8088. " ,backoutusercode\n" +
  8089. " ,checktime\n" +
  8090. " FROM tp_pm_productiondata\n" +
  8091. " WHERE valueflag = 1\n" +
  8092. " AND barcode = :barcode";
  8093. #endregion
  8094. foreach (DataRow row in cre.Data.Tables[0].Rows)
  8095. {
  8096. barcode = row["barcode"] + "";
  8097. // 校验废品表
  8098. paras = new OracleParameter[]
  8099. {
  8100. new OracleParameter(":barcode", barcode),
  8101. };
  8102. DataSet ds = oracleTrConn.GetSqlResultToDs(chenkScrapproduct, paras);
  8103. if (ds != null && ds.Tables[0].Rows.Count == 0)
  8104. {
  8105. sre.OtherStatus = -1;
  8106. sre.Message = "此产品没有损坯,不能撤销";
  8107. return sre;
  8108. }
  8109. else
  8110. {
  8111. if (Convert.ToInt32(ds.Tables[0].Rows[0]["recyclingflag"]) > 0)
  8112. {
  8113. sre.Result = -1;
  8114. sre.Message = "此产品已经回收,不能撤销";
  8115. return sre;
  8116. }
  8117. ScrapProductID = Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapProductID"]);
  8118. }
  8119. // 第二步,回收站中数据回到在产中。
  8120. paras = new OracleParameter[]
  8121. {
  8122. new OracleParameter(":updateuserid", sUserInfo.UserID),
  8123. new OracleParameter(":barcode", barcode),
  8124. };
  8125. sre.OtherStatus += oracleTrConn.ExecuteNonQuery(insertInproduction, paras);
  8126. //第三步,删除回收站中的条码
  8127. sqlString = "DELETE FROM TP_PM_InProductionTrash WHERE barcode=:barcode ";
  8128. paras = new OracleParameter[]
  8129. {
  8130. new OracleParameter(":barcode", barcode)
  8131. };
  8132. sre.OtherStatus += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  8133. //第四步,停用对应报损产品
  8134. sqlString = "UPDATE TP_PM_ScrapProduct SET valueflag = '0' WHERE scrapproductid = :scrapproductid ";
  8135. paras = new OracleParameter[]
  8136. {
  8137. new OracleParameter(":scrapproductid", ScrapProductID)
  8138. };
  8139. sre.OtherStatus += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  8140. //第五步,回添加生产数据
  8141. sqlString = "SELECT 1 FROM tp_pm_productiondatain WHERE valueflag = '1' AND barcode=:barcode ";
  8142. paras = new OracleParameter[]
  8143. {
  8144. new OracleParameter(":barcode", barcode)
  8145. };
  8146. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  8147. if (ds.Tables[0].Rows.Count == 0)
  8148. {
  8149. // 2 生产数据恢复到在产生产数据
  8150. paras = new OracleParameter[]
  8151. {
  8152. new OracleParameter(":barcode", barcode)
  8153. };
  8154. ds = oracleTrConn.GetSqlResultToDs(insertProductiondatain, paras);
  8155. sre.OtherStatus += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  8156. }
  8157. }
  8158. oracleTrConn.Commit();
  8159. oracleTrConn.Disconnect();
  8160. }
  8161. catch (Exception ex)
  8162. {
  8163. oracleTrConn.Rollback();
  8164. throw ex;
  8165. }
  8166. finally
  8167. {
  8168. // 释放资源
  8169. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8170. {
  8171. oracleTrConn.Disconnect();
  8172. }
  8173. }
  8174. return sre;
  8175. }
  8176. /// <summary>
  8177. /// 工厂调出汇总表
  8178. /// </summary>
  8179. /// <param name="procedureID">工序ID</param>
  8180. /// <param name="barcode">产品条码</param>
  8181. /// <returns>DataSet</returns>
  8182. public static ServiceResultEntity GetAllocateOutTotal(ClientRequestEntity cre, SUserInfo sUserInfo)
  8183. {
  8184. ServiceResultEntity sre = new ServiceResultEntity();
  8185. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8186. List<OracleParameter> paras = new List<OracleParameter>();
  8187. try
  8188. {
  8189. con.Open();
  8190. string sqlString =
  8191. "SELECT decode(t.groupingid\n" +
  8192. " ,7\n" +
  8193. " ,'小计[' || to_char(t.scrapdate, 'yyyy-MM-dd') || ']'\n" +
  8194. " ,15\n" +
  8195. " ,'合计'\n" +
  8196. " ,to_char(t.scrapdate, 'yyyy-MM-dd')) AS scrapdate\n" +
  8197. " ,decode(t.groupingid, 3, '小计[' || t.rreason || ']', t.rreason) AS rreason\n" +
  8198. " ,decode(t.groupingid, 0, t.goodscode, '--') AS goodscode\n" +
  8199. " ,decode(t.groupingid, 0, t.goodsname, '--') AS goodsname\n" +
  8200. " ,t.quantity\n" +
  8201. " FROM (SELECT grouping_id(sp.scrapdate, sp.rreason, sp.goodscode, sp.goodsname) AS groupingid\n" +
  8202. " ,sp.scrapdate\n" +
  8203. " ,sp.rreason\n" +
  8204. " ,sp.goodscode\n" +
  8205. " ,sp.goodsname\n" +
  8206. " ,COUNT(1) AS quantity\n" +
  8207. " FROM tp_pm_scrapproduct sp\n" +
  8208. " INNER JOIN tp_mst_goodslevel gl\n" +
  8209. " ON sp.goodslevelid = gl.goodslevelid\n" +
  8210. " WHERE sp.valueflag = '1'\n" +
  8211. " AND gl.goodsleveltypeid = 10\n" +
  8212. " AND sp.accountid = :accountid\n" +
  8213. " AND sp.scrapdate >= :scrapdatestart\n" +
  8214. " AND sp.scrapdate < :scrapdateend ";
  8215. paras.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  8216. paras.Add(new OracleParameter(":scrapdatestart", cre.Properties["scrapdatestart"]));
  8217. paras.Add(new OracleParameter(":scrapdateend", cre.Properties["scrapdateend"]));
  8218. if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
  8219. {
  8220. sqlString += " AND sp.barcode LIKE :barcode ";
  8221. paras.Add(new OracleParameter(":barcode", "%" + cre.Properties["barcode"] + "%"));
  8222. }
  8223. if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
  8224. {
  8225. sqlString += " AND sp.goodscode LIKE :goodscode ";
  8226. paras.Add(new OracleParameter(":goodscode", "%" + cre.Properties["goodscode"] + "%"));
  8227. }
  8228. if (!string.IsNullOrEmpty(cre.Properties["rreason"] + ""))
  8229. {
  8230. sqlString += " AND sp.rreason = :rreason ";
  8231. paras.Add(new OracleParameter(":rreason", cre.Properties["rreason"]));
  8232. }
  8233. sqlString +=
  8234. " GROUP BY GROUPING SETS(\n" +
  8235. " (sp.scrapdate, sp.rreason, sp.goodscode, sp.goodsname),\n" +
  8236. " (sp.scrapdate, sp.rreason),(sp.scrapdate),())\n" +
  8237. " ORDER BY sp.scrapdate\n" +
  8238. " ,sp.rreason\n" +
  8239. " ,sp.goodscode) t";
  8240. sre.Data = con.GetSqlResultToDs(sqlString, paras.ToArray());
  8241. return sre;
  8242. }
  8243. catch (Exception ex)
  8244. {
  8245. throw ex;
  8246. }
  8247. finally
  8248. {
  8249. if (con.ConnState == ConnectionState.Open)
  8250. {
  8251. con.Close();
  8252. }
  8253. }
  8254. }
  8255. /// <summary>
  8256. /// 工厂调出明细表
  8257. /// </summary>
  8258. /// <param name="procedureID">工序ID</param>
  8259. /// <param name="barcode">产品条码</param>
  8260. /// <returns>DataSet</returns>
  8261. public static ServiceResultEntity GetAllocateOutDetail(ClientRequestEntity cre, SUserInfo sUserInfo)
  8262. {
  8263. ServiceResultEntity sre = new ServiceResultEntity();
  8264. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8265. List<OracleParameter> paras = new List<OracleParameter>();
  8266. try
  8267. {
  8268. con.Open();
  8269. string sqlString =
  8270. "SELECT sp.barcode\n" +
  8271. " ,sp.productionlinecode\n" +
  8272. " ,sp.productionlinename\n" +
  8273. " ,sp.goodscode\n" +
  8274. " ,sp.goodsname\n" +
  8275. " ,sp.groutingdate\n" +
  8276. " ,sp.groutinglinecode\n" +
  8277. " ,sp.groutinglinename\n" +
  8278. " ,sp.groutingmouldcode\n" +
  8279. " ,sp.mouldcode\n" +
  8280. " ,sp.scrapdate\n" +
  8281. " ,sp.rreason\n" +
  8282. " ,sp.remarks\n" +
  8283. " ,sp.accountdate\n" +
  8284. " ,sp.groutingusercode\n" +
  8285. " ,sp.procedurecode\n" +
  8286. " ,sp.procedurename\n" +
  8287. " ,sp.scraptype\n" +
  8288. " ,sp.recyclingflag\n" +
  8289. " ,sp.recyclingusercode\n" +
  8290. " ,sp.recyclingtime\n" +
  8291. " ,sp.responsibleusercode\n" +
  8292. " ,sp.backouttime\n" +
  8293. " ,gl.goodslevelname\n" +
  8294. " ,gdd.ispublicbody\n" +
  8295. " ,gdd.specialrepairflag\n" +
  8296. " FROM tp_pm_scrapproduct sp\n" +
  8297. " INNER JOIN tp_mst_goodslevel gl\n" +
  8298. " ON sp.goodslevelid = gl.goodslevelid\n" +
  8299. " LEFT JOIN tp_pm_groutingdailydetail gdd\n" +
  8300. " ON sp.barcode = gdd.barcode\n" +
  8301. " WHERE sp.valueflag = '1'\n" +
  8302. " AND gl.goodsleveltypeid = 10\n" +
  8303. " AND sp.accountid = :accountid\n" +
  8304. " AND sp.createtime >= :scrapdatestart\n" +
  8305. " AND sp.createtime < :scrapdateend\n";
  8306. paras.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  8307. paras.Add(new OracleParameter(":scrapdatestart", cre.Properties["scrapdatestart"]));
  8308. paras.Add(new OracleParameter(":scrapdateend", cre.Properties["scrapdateend"]));
  8309. if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
  8310. {
  8311. sqlString += " AND sp.barcode LIKE :barcode ";
  8312. paras.Add(new OracleParameter(":barcode", "%" + cre.Properties["barcode"] + "%"));
  8313. }
  8314. if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
  8315. {
  8316. sqlString += " AND sp.goodscode LIKE :goodscode ";
  8317. paras.Add(new OracleParameter(":goodscode", "%" + cre.Properties["goodscode"] + "%"));
  8318. }
  8319. if (!string.IsNullOrEmpty(cre.Properties["rreason"] + ""))
  8320. {
  8321. sqlString += " AND sp.rreason LIKE :rreason ";
  8322. paras.Add(new OracleParameter(":rreason", "%" + cre.Properties["rreason"] + "%"));
  8323. }
  8324. sqlString += " ORDER BY sp.barcode";
  8325. sre.Data = con.GetSqlResultToDs(sqlString, paras.ToArray());
  8326. return sre;
  8327. }
  8328. catch (Exception ex)
  8329. {
  8330. throw ex;
  8331. }
  8332. finally
  8333. {
  8334. if (con.ConnState == ConnectionState.Open)
  8335. {
  8336. con.Close();
  8337. }
  8338. }
  8339. }
  8340. #endregion
  8341. }
  8342. }