PMModuleLogicPartial.cs 411 KB

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