PMModuleLogicPartial.cs 291 KB

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