ReportModuleLogic.cs 1.1 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:ReportModuleLogic.cs
  5. * 2.功能描述:生产线报表分析
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 宋扬 2014/11/08 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Text;
  14. using Oracle.ManagedDataAccess.Client;
  15. using Dongke.IBOSS.PRD.Basics.BaseResources;
  16. using Dongke.IBOSS.PRD.Basics.DataAccess;
  17. using Dongke.IBOSS.PRD.Service.DataModels;
  18. using Dongke.IBOSS.PRD.WCF.DataModels;
  19. using Dongke.IBOSS.PRD.WCF.DataModels.ReportModule;
  20. using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
  21. using Dongke.WinForm.Utilities;
  22. namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
  23. {
  24. /// <summary>
  25. /// 生产线报表分析
  26. /// </summary>
  27. public class ReportModuleLogic
  28. {
  29. #region 综合报表
  30. #region 跟踪统计表
  31. #region 生产管理
  32. /// <summary>
  33. /// 产品跟踪明细查询
  34. /// </summary>
  35. /// <param name="searchGoodsFollowingEntity">产品跟踪统计实体类</param>
  36. /// <param name="sUserInfo">用户基本信息</param>
  37. /// <returns>DataSet</returns>
  38. public static DataSet GetSearchGoodsFollowingDetailModule(SearchGoodsFollowingEntity searchGoodsFollowingEntity, SUserInfo sUserInfo)
  39. {
  40. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  41. try
  42. {
  43. con.Open();
  44. OracleParameter[] paras = new OracleParameter[]{
  45. new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  46. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  47. };
  48. DataSet dsSearchReport = con.ExecStoredProcedure("PRO_RPT_GetRPTDetailData", paras);
  49. return dsSearchReport;
  50. }
  51. catch (Exception ex)
  52. {
  53. throw ex;
  54. }
  55. finally
  56. {
  57. if (con.ConnState == ConnectionState.Open)
  58. {
  59. con.Close();
  60. }
  61. }
  62. }
  63. #endregion
  64. #endregion
  65. #endregion
  66. #region 统一使用ServiceResultEntity类模式
  67. #region 跟踪报表
  68. /// <summary>
  69. /// 取得RPT020101_1画面(产品跟踪)的查询数据
  70. /// </summary>
  71. /// <param name="user">登录用户信息</param>
  72. /// <param name="se">查询条件</param>
  73. /// <returns>查询结果</returns>
  74. public static ServiceResultEntity GetRPT020101SData(SUserInfo user, RPT020101_SE se)
  75. {
  76. IDBConnection conn = null;
  77. try
  78. {
  79. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  80. OracleParameter[] paras = new OracleParameter[]{
  81. new OracleParameter("in_barCode",OracleDbType.Varchar2,se.Barcode,ParameterDirection.Input),
  82. new OracleParameter("in_accountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  83. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  84. new OracleParameter("out_result1",OracleDbType.RefCursor,ParameterDirection.Output),
  85. };
  86. //DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  87. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetGoodsFollowingData", paras);
  88. ServiceResultEntity sre = new ServiceResultEntity();
  89. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  90. {
  91. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  92. return sre;
  93. }
  94. string sqlString = @"
  95. SELECT T.RELATIONID as ParentID,
  96. P.PROCEDURENAME,
  97. '【装配组件】' AS ProductionLineName,
  98. T.PROCEDUREID,
  99. T.CreateTime,
  100. U.USERCODE AS CreateUserCode,
  101. U.USERNAME AS CreateUserName,
  102. T.IDNRK,
  103. T.IDNRKNAME,
  104. substr(T.IDNRKONLYCODE,0,instr(T.IDNRKONLYCODE,',')-1) as IDNRKONLYCODE,
  105. T.CHARG,
  106. '【组件编码:' || T.IDNRK || ', 组件名称:' || T.IDNRKNAME || ', 组件唯一编码:' || substr(T.IDNRKONLYCODE,0,instr(T.IDNRKONLYCODE,',')-1) || ', 批次:' || T.CHARG || '】' as IdnrkInformation
  107. FROM TP_PM_BARCODEIDNRKREL T
  108. LEFT JOIN TP_PC_PROCEDURE P
  109. ON T.PROCEDUREID = P.PROCEDUREID
  110. LEFT JOIN tp_mst_user u
  111. ON u.UserID = T.Createuserid
  112. WHERE T.ACCOUNTID = :ACCOUNTID
  113. AND INSTR(T.BARCODE, :BARCODE) > 0";
  114. OracleParameter[] parameters = new OracleParameter[]
  115. {
  116. new OracleParameter(":ACCOUNTID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  117. new OracleParameter(":BARCODE", OracleDbType.Varchar2, se.Barcode, ParameterDirection.Input),
  118. };
  119. DataTable dt = conn.GetSqlResultToDt(sqlString, parameters);
  120. if (dt != null && dt.Rows.Count > 0)
  121. {
  122. dt.TableName = "IdnrkTable";
  123. data.Tables.Add(dt.Copy());
  124. }
  125. sre.Data = new DataSet();
  126. sre.Data = data;
  127. return sre;
  128. }
  129. catch (Exception ex)
  130. {
  131. throw ex;
  132. }
  133. finally
  134. {
  135. if (conn != null &&
  136. conn.ConnState == ConnectionState.Open)
  137. {
  138. conn.Close();
  139. }
  140. }
  141. }
  142. #endregion
  143. #region 明细报表
  144. /// <summary>
  145. /// 取得RPT010101_1画面(注浆明细表)的查询数据
  146. /// </summary>
  147. /// <param name="user">登录用户信息</param>
  148. /// <param name="se">查询条件</param>
  149. /// <returns>查询结果</returns>
  150. public static ServiceResultEntity GetRPT010101SData(SUserInfo user, RPT010101_SE se)
  151. {
  152. IDBConnection conn = null;
  153. try
  154. {
  155. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  156. List<OracleParameter> parameters = new List<OracleParameter>();
  157. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010101SSQL());
  158. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  159. if (se != null)
  160. {
  161. // 成型线类型ids
  162. if (!string.IsNullOrEmpty(se.GMouldTypeIDS))
  163. {
  164. sql.Append("AND instr(','||:GMouldTypeIDS||',',','||TP_MST_GMouldType.gMouldTypeId||',')>0 ");
  165. parameters.Add(new OracleParameter(":GMouldTypeIDS", OracleDbType.NVarchar2, se.GMouldTypeIDS, ParameterDirection.Input));
  166. }
  167. // 成型线IDS
  168. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  169. {
  170. sql.Append("AND instr(','||:GroutingLineIDS||',',','||gdd.GroutingLineId||',')>0 ");
  171. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  172. }
  173. // 产品IDS
  174. if (!string.IsNullOrEmpty(se.GoodsIDS))
  175. {
  176. sql.Append("AND instr(','||:GoodsIDS||',',','||gdd.GoodsId||',')>0 ");
  177. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  178. }
  179. // 产品类别IDS
  180. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  181. {
  182. // sql.Append("AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1 ");
  183. sql.Append("AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1 ");
  184. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  185. }
  186. // 模具号
  187. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  188. {
  189. sql.Append("AND instr(gdd.GroutingMouldCode,:GroutingMouldCode)>0 ");
  190. parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  191. }
  192. // 注浆时间-开始
  193. if (se.GroutingDateStart.HasValue)
  194. {
  195. sql.Append("AND gdd.GroutingDate >= :GroutingDateStart ");
  196. parameters.Add(new OracleParameter(":GroutingDateStart", OracleDbType.Date, se.GroutingDateStart.Value, ParameterDirection.Input));
  197. }
  198. // 模具类型IDS
  199. if (se.GroutingDateEnd.HasValue)
  200. {
  201. sql.Append("AND gdd.GroutingDate <= :GroutingDateEnd ");
  202. parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  203. }
  204. if (se.GroutingBatchNo.HasValue)
  205. {
  206. //sql.Append(" AND TP_PM_GroutingDailyDetail.GroutingBatchNo = :GroutingBatchNo");
  207. sql.Append(" AND instr(gdd.GroutingBatchNo,:GroutingBatchNo)>0");
  208. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
  209. }
  210. // 成型工号IDS
  211. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  212. {
  213. sql.Append("and instr(',' || :GroutingUserIDS || ',' ,','||gdd.UserID||',' )>0 ");
  214. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.Clob, se.GroutingUserIDS, ParameterDirection.Input));
  215. }
  216. // 未注浆原因
  217. if (!string.IsNullOrEmpty(se.NoGroutingRreason))
  218. {
  219. sql.Append("AND instr(b.dictionaryvalue,:NoGroutingRreason)>0 ");
  220. parameters.Add(new OracleParameter(":NoGroutingRreason", OracleDbType.NVarchar2, se.NoGroutingRreason, ParameterDirection.Input));
  221. }
  222. // 生产工号IDS
  223. if (!string.IsNullOrEmpty(se.CreateUserIDS))
  224. {
  225. sql.Append("and instr(',' || :CreateUserIDS || ',' ,','||gdd.CreateUserID||',' )>0 ");
  226. parameters.Add(new OracleParameter(":CreateUserIDS", OracleDbType.NVarchar2, se.CreateUserIDS, ParameterDirection.Input));
  227. }
  228. // 产品条码
  229. if (!string.IsNullOrEmpty(se.Barcode))
  230. {
  231. sql.Append(" AND gdd.Barcode = :Barcode ");
  232. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  233. }
  234. // 备注
  235. if (!string.IsNullOrEmpty(se.Remarks))
  236. {
  237. sql.Append(" AND INSTR(gdd.Remarks, :Remarks) > 0");
  238. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  239. }
  240. // 注浆标识
  241. if (!string.IsNullOrEmpty(se.GroutingFlag))
  242. {
  243. sql.Append(" AND gdd.GroutingFlag = :GroutingFlag");
  244. parameters.Add(new OracleParameter(":GroutingFlag", OracleDbType.Char, se.GroutingFlag, ParameterDirection.Input));
  245. }
  246. // 损坯标识
  247. if (!string.IsNullOrEmpty(se.ScrapFlag))
  248. {
  249. sql.Append(" AND gdd.ScrapFlag = :ScrapFlag");
  250. parameters.Add(new OracleParameter(":ScrapFlag", OracleDbType.Char, se.ScrapFlag, ParameterDirection.Input));
  251. }
  252. // 绑定条码
  253. if (!string.IsNullOrEmpty(se.BarCodeFlag))
  254. {
  255. if ("1" == se.BarCodeFlag)
  256. {
  257. sql.Append(" AND LENGTH(gdd.BarCode) > 0");
  258. }
  259. else
  260. {
  261. sql.Append(" AND (gdd.BarCode IS NULL OR LENGTH(gdd.BarCode) = 0)");
  262. }
  263. }
  264. // 交坯日期-开始
  265. if (se.DeliverTimeBegin.HasValue)
  266. {
  267. sql.Append(" AND gdd.DeliverTime >= :DeliverTimeBegin");
  268. parameters.Add(new OracleParameter(":DeliverTimeBegin", OracleDbType.Date, se.DeliverTimeBegin.Value, ParameterDirection.Input));
  269. }
  270. // 交坯日期-结束
  271. if (se.DeliverTimeEnd.HasValue)
  272. {
  273. sql.Append(" AND gdd.DeliverTime <= :DeliverTimeEnd");
  274. parameters.Add(new OracleParameter(":DeliverTimeEnd", OracleDbType.Date, se.DeliverTimeEnd.Value, ParameterDirection.Input));
  275. }
  276. // 交坯标识
  277. if (!string.IsNullOrEmpty(se.DeliverFlag))
  278. {
  279. sql.Append(" AND gdd.DeliverFlag = :DeliverFlag");
  280. parameters.Add(new OracleParameter(":DeliverFlag", OracleDbType.Char, se.DeliverFlag, ParameterDirection.Input));
  281. }
  282. // 损坯日期-开始
  283. if (se.ScrapTimeBegin.HasValue)
  284. {
  285. sql.Append(" AND gdd.ScrapTime >= :ScrapTimeBegin");
  286. parameters.Add(new OracleParameter(":ScrapTimeBegin", OracleDbType.Date, se.ScrapTimeBegin.Value, ParameterDirection.Input));
  287. }
  288. // 损坯日期-结束
  289. if (se.ScrapTimeEnd.HasValue)
  290. {
  291. sql.Append(" AND gdd.ScrapTime <= :ScrapTimeEnd");
  292. parameters.Add(new OracleParameter(":ScrapTimeEnd", OracleDbType.Date, se.ScrapTimeEnd.Value, ParameterDirection.Input));
  293. }
  294. // 注浆操作时间-开始
  295. if (se.GCTimeBegin.HasValue)
  296. {
  297. sql.Append(" AND gdd.CreateTime >= :GCTimeBegin");
  298. parameters.Add(new OracleParameter(":GCTimeBegin", OracleDbType.Date, se.GCTimeBegin.Value, ParameterDirection.Input));
  299. }
  300. // 注浆操作时间-结束
  301. if (se.GCTimeEnd.HasValue)
  302. {
  303. sql.Append(" AND gdd.CreateTime <= :GCTimeEnd");
  304. parameters.Add(new OracleParameter(":GCTimeEnd", OracleDbType.Date, se.GCTimeEnd.Value, ParameterDirection.Input));
  305. }
  306. // 试验标识
  307. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  308. {
  309. sql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag");
  310. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  311. }
  312. //sql.Append(" AND TP_PM_GroutingDailyDetail.GroutingLineID in(Select PurviewID from TP_MST_UserPurview where PurviewType= 5 and UserID = :UserID) ");
  313. sql.Append(" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 5 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID= gdd.GroutingLineID))");
  314. parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  315. }
  316. sql.Append(" order by gdd.GroutingDate desc, ");
  317. sql.Append(" gdd.GroutingLineCode, ");
  318. sql.Append(" gdd.GroutingBatchNo, ");
  319. sql.Append(" gdd.GroutingMouldCode");
  320. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  321. ServiceResultEntity sre = new ServiceResultEntity();
  322. if (data == null || data.Rows.Count == 0)
  323. {
  324. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  325. return sre;
  326. }
  327. sre.Data = new DataSet();
  328. sre.Data.Tables.Add(data);
  329. return sre;
  330. }
  331. catch (Exception ex)
  332. {
  333. throw ex;
  334. }
  335. finally
  336. {
  337. if (conn != null &&
  338. conn.ConnState == ConnectionState.Open)
  339. {
  340. conn.Close();
  341. }
  342. }
  343. }
  344. /// <summary>
  345. /// 获取RPT010101_1画面(注浆明细表)的查询sql
  346. /// </summary>
  347. /// <returns>sql</returns>
  348. private static string GetRPT010101SSQL()
  349. {
  350. string selSql =
  351. "select " +
  352. " gdd.GroutingDate, " +
  353. " gdd.GroutingBatchNo, " +
  354. " gdd.GroutingLineCode, " +
  355. " TP_MST_GMouldType.Gmouldtypename, " +
  356. " TP_MST_GOODSTYPE.GOODSTYPENAME, " +
  357. " gdd.GoodsCode, " +
  358. " TP_MST_GOODS.GOODSSPECIFICATION, " +
  359. " gdd.GroutingMouldCode, " +
  360. " TP_MST_DataDictionary.DICTIONARYVALUE, " +
  361. " gdd.Groutingcount, " +
  362. " gdd.Barcode, " +
  363. " tp_mst_user.UserCode CreateUserCode, " +
  364. " tp_mst_user.username CreateUserName, " +
  365. " gdd.UserCode, " +
  366. " gdd.SCRAPFLAG, " +
  367. //" decode(gdd.SCRAPFLAG,'1',TPSP.PROCEDURENAME,'') as PROCEDURENAME, " +
  368. //" decode(TPSP.scraptype,'0',TPSP.PROCEDURENAME,'') as PROCEDURENAME, " +
  369. " TPSP.PROCEDURENAME, " +
  370. " gdd.GoodsName, " +
  371. " gdd.GROUTINGFLAG, " +
  372. " gdd.GMOULDSTATUS, " +
  373. " gdd.DeliverTime, " +
  374. " gdd.DeliverFlag, " +
  375. //20210116 注浆明细表加入注浆重量等重量信息
  376. " gdd.SLURRY_WEIGHT, " +
  377. " gdd.COOL1_WEIGHT, " +
  378. " gdd.BAKEOUT1_WEIGHT, " +
  379. " gdd.DELIVER_WEIGHT, " +
  380. " gdd.GLAZE1_WEIGHT, " +
  381. " gdd.GLAZE2_WEIGHT, " +
  382. " gdd.FINISHED_WEIGHT, " +
  383. //end
  384. //20220408 fy 光瓷重量
  385. " gdd.LUSTERWAREWEIGHT, " +
  386. " tp_sys_gmouldstatus.gmouldstatusname, " +
  387. " b.dictionaryvalue AS NoGroutingRreason, " +
  388. " gdd.SCRAPTIME, " +
  389. " gdd.CreateTime GCTime, " +
  390. " mu.usercode MONITORCODE, " +
  391. " mu.username MONITORNAME, " +
  392. " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName, " +
  393. //2021年12月28日11:01:36 by fy modify 添加防伪码
  394. " gdd.SecurityCode, " +
  395. " gdd.testflag, " +
  396. " gdd.testmouldflag, " +
  397. " case when gdd.testflag = 1 then '试验线' when gdd.testflag = 0 then '普通线' end testflagname " +
  398. "from TP_PM_GroutingDailyDetail gdd " +
  399. "inner join TP_PM_GroutingDaily gd on gd.GroutingDailyID = gdd.GroutingDailyID " +
  400. "left join tp_mst_user mu on mu.userid = gd.MONITORID " +
  401. "inner join TP_PC_GroutingLine on TP_PC_GroutingLine.GroutingLineID=gdd.GroutingLineID " +
  402. "inner join TP_MST_GMouldType on TP_MST_GMouldType.GMOULDTYPEID=TP_PC_GroutingLine.GMOULDTYPEID " +
  403. "inner join TP_MST_Goods on TP_MST_Goods.Goodsid=gdd.GoodsID " +
  404. "inner join TP_MST_DataDictionary on TP_MST_DataDictionary.Dictionaryid=TP_MST_Goods.Glazetypeid " +
  405. "inner join TP_MST_GOODSTYPE on TP_MST_GOODSTYPE.GOODSTYPEID=TP_MST_Goods.Goodstypeid " +
  406. "inner join tp_sys_gmouldstatus on gdd.gmouldstatus = tp_sys_gmouldstatus.gmouldstatusid " +
  407. "left join tp_mst_user on gdd.CreateUserID=tp_mst_user.userid " +
  408. "left join TP_MST_DataDictionary b on gdd.NoGroutingRreason=b.DictionaryID " +
  409. "left join TP_MST_logo on gdd.logoid=TP_MST_logo.logoid " +
  410. "left join TP_PM_SCRAPPRODUCT TPSP ON gdd.BARCODE = TPSP.BARCODE " +
  411. //"and TPSP.goodsleveltypeid = 8 " +
  412. //"and TPSP.scraptype = '0' " +
  413. //"and TPSP.AUDITSTATUS <> 2" +
  414. //没回收标识,没干补标识
  415. "and TPSP.RECYCLINGFLAG = 0" +
  416. "and TPSP.SPECIALREPAIRFLAG = 0" +
  417. "and TPSP.AUDITSTATUS = 1" +
  418. "and TPSP.valueflag = '1'" +
  419. "Where 1=1 " +
  420. "and gdd.Valueflag=1 " +
  421. "and gdd.AccountID=:AccountID ";
  422. return selSql;
  423. }
  424. /// <summary>
  425. /// 取得RPT010102_1画面(半检明细表)的查询数据
  426. /// </summary>
  427. /// <param name="user">登录用户信息</param>
  428. /// <param name="se">查询条件</param>
  429. /// <returns>查询结果</returns>
  430. public static ServiceResultEntity GetRPT010102SData(SUserInfo user, RPT010102_SE se)
  431. {
  432. IDBConnection conn = null;
  433. try
  434. {
  435. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  436. OracleParameter[] paras = new OracleParameter[]{
  437. new OracleParameter("in_goodsID",OracleDbType.Varchar2,se.GoodsIDS,ParameterDirection.Input),
  438. new OracleParameter("in_testUserID",OracleDbType.Varchar2,se.TestUserIDS,ParameterDirection.Input),
  439. new OracleParameter("in_groutingUserID",OracleDbType.Varchar2,se.GroutingUserIDS,ParameterDirection.Input),
  440. new OracleParameter("in_goodsTypeID",OracleDbType.Varchar2,se.GoodsTypeIDS,ParameterDirection.Input),
  441. new OracleParameter("in_semiTestTypeID",OracleDbType.Varchar2,se.semiTestTypeID,ParameterDirection.Input),
  442. new OracleParameter("in_remarks",OracleDbType.Varchar2,se.Remarks,ParameterDirection.Input),
  443. new OracleParameter("in_semiTestDateStart",OracleDbType.Varchar2,se.SemiTestDateStart,ParameterDirection.Input),
  444. new OracleParameter("in_semiTestDateEnd",OracleDbType.Varchar2,se.SemiTestDateEnd,ParameterDirection.Input),
  445. new OracleParameter("in_accountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  446. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  447. };
  448. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetSemiTestDetail", paras);
  449. ServiceResultEntity sre = new ServiceResultEntity();
  450. if (data == null || data.Tables.Count == 0)
  451. {
  452. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  453. return sre;
  454. }
  455. sre.Data = new DataSet();
  456. sre.Data = data;
  457. return sre;
  458. }
  459. catch (Exception ex)
  460. {
  461. throw ex;
  462. }
  463. finally
  464. {
  465. if (conn != null &&
  466. conn.ConnState == ConnectionState.Open)
  467. {
  468. conn.Close();
  469. }
  470. }
  471. }
  472. /// <summary>
  473. /// 取得RPT010103画面(交坯明细表)的查询数据
  474. /// </summary>
  475. /// <param name="user">登录用户信息</param>
  476. /// <param name="se">查询条件</param>
  477. /// <returns>查询结果</returns>
  478. public static ServiceResultEntity GetRPT010103SData(SUserInfo user, RPT010103_SE se)
  479. {
  480. IDBConnection conn = null;
  481. try
  482. {
  483. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  484. List<OracleParameter> parameters = new List<OracleParameter>();
  485. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010103SSQL());
  486. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  487. // parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  488. if (se != null)
  489. {
  490. //成型线IDS
  491. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  492. {
  493. sql.Append(" and instr(','||:GroutingLineIDS||',',','||pd.GroutingLineID||',')>0 ");
  494. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  495. }
  496. // 成型线类别
  497. if (!string.IsNullOrEmpty(se.GMouldTypeIDS))
  498. {
  499. sql.Append(" AND instr(','||:GMouldTypeIDS||',',','||gt.GMouldTypeID||',')>0 ");
  500. parameters.Add(new OracleParameter(":GMouldTypeIDS", OracleDbType.NVarchar2, se.GMouldTypeIDS, ParameterDirection.Input));
  501. }
  502. // 交坯日期-开始
  503. if (se.CreateTimeBegin.HasValue)
  504. {
  505. sql.Append(" AND pd.CreateTime >= :CreateTimeBegin ");
  506. parameters.Add(new OracleParameter(":CreateTimeBegin", OracleDbType.Date, se.CreateTimeBegin.Value, ParameterDirection.Input));
  507. }
  508. // 交坯日期-结束
  509. if (se.CreateTimeEnd.HasValue)
  510. {
  511. sql.Append(" AND pd.CreateTime <= :CreateTimeEnd ");
  512. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  513. }
  514. // 注浆模具编号
  515. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  516. {
  517. //sql.Append(" AND INSTR(','||:GroutingMouldCode||',',','||pd.GroutingMouldCode||',') > 0 ");
  518. sql.Append(" AND INSTR(pd.GroutingMouldCode,:GroutingMouldCode) > 0 ");
  519. parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  520. }
  521. //产品IDS
  522. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  523. {
  524. // sql.Append(" and instr(','||:GoodsTypeIDS||',',','||gdt.GoodsTypeCode||',')=1");
  525. sql.Append("AND instr(gdt.GoodsTypeCode,:GoodsTypeIDS)=1 ");
  526. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  527. }
  528. //产品类别IDS
  529. if (!string.IsNullOrEmpty(se.GoodsIDS))
  530. {
  531. sql.Append(" and instr(','||:GoodsIDS||',',','||pd.goodsid||',')>0");
  532. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  533. }
  534. // 备注
  535. if (!string.IsNullOrEmpty(se.Remarks))
  536. {
  537. sql.Append(" AND INSTR(pd.Remarks, :Remarks) > 0");
  538. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  539. }
  540. // 注浆工号
  541. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  542. {
  543. sql.Append(" AND INSTR( ','||:GroutingUserCode||',',','||pd.GroutingUserCode||',') > 0");
  544. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  545. }
  546. // 条码
  547. if (!string.IsNullOrEmpty(se.BarCode))
  548. {
  549. //sql.Append(" AND INSTR(','||:BarCode||',',','||pd.BarCode||',') > 0");
  550. sql.Append(" AND INSTR(pd.BarCode,:BarCode) > 0");
  551. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  552. }
  553. // 生产工号和注浆工号不同
  554. if (se.ProdUserIsGroutingUserFlag == 1)
  555. {
  556. sql.Append(" and pd.usercode<>pd.GroutingUserCode");
  557. }
  558. }
  559. sql.Append(" ORDER BY pd.CreateTime, pd.GroutingLineCode, pd.GroutingMouldCode");
  560. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  561. ServiceResultEntity sre = new ServiceResultEntity();
  562. if (data == null || data.Rows.Count == 0)
  563. {
  564. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  565. return sre;
  566. }
  567. sre.Data = new DataSet();
  568. sre.Data.Tables.Add(data);
  569. return sre;
  570. }
  571. catch (Exception ex)
  572. {
  573. throw ex;
  574. }
  575. finally
  576. {
  577. if (conn != null &&
  578. conn.ConnState == ConnectionState.Open)
  579. {
  580. conn.Close();
  581. }
  582. }
  583. }
  584. /// <summary>
  585. /// 获取RPT010103画面(交坯明细表)的查询sql
  586. /// </summary>
  587. /// <returns>sql</returns>
  588. private static string GetRPT010103SSQL()
  589. {
  590. string selSql =
  591. "select "
  592. //---产品条码
  593. + "pd.barcode, "
  594. //注浆时间
  595. + "pd.groutingdate,"
  596. //交坯时间
  597. + "pd.CreateTime,"
  598. //---产品类别
  599. + "g.GoodsTypeID,"
  600. //---产品类别编码
  601. + "gdt.GoodsTypeCode,"
  602. //---产品类别名称
  603. + "gdt.GoodsTypeName,"
  604. //----产品ID
  605. + "pd.goodsid,"
  606. //----产品编码
  607. + "pd.goodscode,"
  608. //----产品名称
  609. + "pd.goodsname,"
  610. //----规格
  611. + "g.GoodsSpecification,"
  612. //----釉色类别ID
  613. + "g.GlazeTypeID,"
  614. //----釉色类别描述
  615. + "dd.dictionaryvalue as GlazeTypeName,"
  616. //----注浆模具
  617. + "pd.GroutingMouldCode,"
  618. //---生产线号
  619. + "pd.ProductionLineID,"
  620. //---成型线编码
  621. + "pd.ProductionLineCode,"
  622. //---成型线名称
  623. + "pd.ProductionLineName,"
  624. //---成型线号Id
  625. + " pd.GroutingLineID,"
  626. //---成型线号
  627. + " pd.GroutingLineCode,"
  628. //---成型线类型ID
  629. + "gt.GMouldTypeID,"
  630. //---成型线类型
  631. + "gt.GMouldTypeName,"
  632. //---生产工号
  633. + "pd.UserID,"
  634. //---生产工号用户编号
  635. + "u.usercode,"
  636. //----注浆工号
  637. + "pd.GroutingUserID,"
  638. //---注浆工号用户编号
  639. + "pd.GroutingUserCode, "
  640. // 成型班长
  641. + " mu.username as MONITORName,"
  642. //--公坯标识
  643. + " pd.ISPUBLICBODY, "
  644. //--注浆次数
  645. + " gdd.GROUTINGCOUNT, "
  646. + " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName "
  647. //--查油工号
  648. + " , uc.usercode check1 "
  649. //生产数据
  650. + "from TP_PM_PRODUCTIONDATA pd "
  651. // 成型线
  652. + " LEFT JOIN tp_pc_groutingline gl" +
  653. " ON gl.groutinglineid = pd.GroutingLineID" +
  654. // 成型班长
  655. " LEFT JOIN tp_mst_user mu" +
  656. " ON mu.userid = gl.MONITORID"
  657. //注浆明细
  658. + " inner join TP_PM_GROUTINGDAILYDETAIL gdd on pd.GROUTINGDAILYDETAILID=gdd.GROUTINGDAILYDETAILID "
  659. //模具类型
  660. + "inner join TP_MST_GMouldType gt "
  661. + "on pd.GMOULDTYPEID=gt.GMouldTypeID "
  662. //产品档案
  663. + "inner join TP_MST_Goods g "
  664. + "on pd.goodsid=g.goodsid "
  665. //数据字典,TPC002为釉色类别
  666. + "inner join TP_MST_DataDictionary dd "
  667. //
  668. + "on dd.DictionaryType = 'TPC002' "
  669. //
  670. + "and dd.dictionaryid= g.GlazeTypeID "
  671. //用户信息
  672. + "inner join tp_mst_user u "
  673. + "on pd.userid=u.userid "
  674. + "inner join tp_mst_user uc "
  675. + "on pd.createuserid=uc.userid "
  676. //
  677. + "inner join TP_MST_GoodsType gdt "
  678. + "on g.GoodsTypeID=gdt.GoodsTypeID "
  679. + "inner join TP_MST_logo "
  680. + "on gdd.logoid=TP_MST_logo.logoid "
  681. // 交坯
  682. + " WHERE pd.modeltype=5 "
  683. // 账套
  684. + " and pd.AccountID=:AccountID"
  685. + " and pd.ValueFlag='" + (int)Constant.ValueFlag.Effective + "'";
  686. //成型线查看权限
  687. //+ " and exists (select up.PurviewID "
  688. //+ " from TP_MST_UserPurview up where up.PurviewType='"
  689. //+ (int)Constant.PurviewType.ViewGroutingLine
  690. //+ "' and up.PurviewID=pd.GroutingLineID "
  691. //+ " and up.UserId=:UPUserId)";
  692. return selSql;
  693. }
  694. /// <summary>
  695. /// 取得RPT010105画面(成型线模具使用明细表)的查询数据
  696. /// </summary>
  697. /// <param name="user">登录用户信息</param>
  698. /// <param name="se">查询条件</param>
  699. /// <returns>查询结果</returns>
  700. public static ServiceResultEntity GetRPT010105SData(SUserInfo user, RPT010105_SE se)
  701. {
  702. IDBConnection conn = null;
  703. try
  704. {
  705. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  706. string sqlString =
  707. "SELECT t.groutinglinecode\n" +
  708. " ,gl.BuildingNo\n" +
  709. " ,gl.FloorNo\n" +
  710. " ,gl.GroutingLineNo\n" +
  711. " ,t.usercode\n" +
  712. " ,t.goodscode\n" +
  713. " ,t.GOODSSPECIFICATION\n" +
  714. " ,t.goodstypename\n" +
  715. " ,t.MouldQuantity\n" +
  716. " ,gld.groutingmouldcode\n" +
  717. " ,gms.gmouldstatusname\n" +
  718. " ,gld.beginuseddate\n" +
  719. " ,(SELECT MIN(ggg.groutingdate)\n" +
  720. " FROM tp_pm_groutingdailydetail ggg\n" +
  721. " WHERE ggg.groutinglinedetailid = t.groutinglinedetailid) groutingdate\n" +
  722. " ,MAX(t.GroutingCount)-SUM(t.groutingflag) mingroutingcount\n" +
  723. " ,SUM(t.groutingflag) sumgroutingcount\n" +
  724. " ,MAX(t.GroutingCount) maxGroutingCount\n" +
  725. " ,gld.groutingcount\n" +
  726. " FROM (SELECT gd.groutinglinecode\n" +
  727. " ,gd.usercode\n" +
  728. " ,gdd.goodsid\n" +
  729. " ,gd.MouldQuantity\n" +
  730. " ,gdd.groutinglinedetailid\n" +
  731. " ,decode(gdd.groutingflag, '1', 1, 0) groutingflag\n" +
  732. " ,gdd.GroutingCount\n" +
  733. " ,gt.goodstypename\n" +
  734. " ,g.goodscode\n" +
  735. " ,g.GOODSSPECIFICATION\n" +
  736. " FROM TP_PM_GroutingDaily gd\n" +
  737. " INNER JOIN TP_PM_GroutingDailyDetail gdd\n" +
  738. " ON gdd.groutingdailyid = gd.groutingdailyid\n" +
  739. " INNER JOIN TP_MST_Goods g\n" +
  740. " ON g.goodsid = gdd.goodsid\n" +
  741. " INNER JOIN TP_MST_GOODSTYPE gt\n" +
  742. " ON gt.goodstypeid = g.goodstypeid\n" +
  743. " WHERE gd.accountid = :AccountID\n" +
  744. " AND gd.groutingdate >= :GDateBegin\n" +
  745. " AND gd.groutingdate <= :GDateEnd\n";
  746. List<OracleParameter> parameters = new List<OracleParameter>();
  747. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  748. {
  749. sqlString += " AND instr(gd.groutinglinecode, :groutinglinecode) > 0 ";
  750. parameters.Add(new OracleParameter(":groutinglinecode", OracleDbType.Varchar2, se.GroutingLineCode, ParameterDirection.Input));
  751. }
  752. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  753. {
  754. sqlString += " AND instr(gdd.usercode, :groutingusercode) > 0 ";
  755. parameters.Add(new OracleParameter(":groutingusercode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  756. }
  757. if (!string.IsNullOrEmpty(se.GoodsCode))
  758. {
  759. sqlString += " AND instr(gdd.goodscode, :goodscode) > 0 ";
  760. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  761. }
  762. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  763. {
  764. sqlString += " AND instr(gt.goodstypecode, :goodstypecode) = 1 ";
  765. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  766. }
  767. sqlString +=
  768. " ) t\n" +
  769. " INNER JOIN tp_pc_groutinglinedetail gld\n" +
  770. " ON gld.groutinglinedetailid = t.groutinglinedetailid\n" +
  771. " INNER JOIN tp_pc_groutingline gl\n" +
  772. " ON gld.groutinglineid = gl.groutinglineid\n" +
  773. " INNER JOIN TP_SYS_GMouldStatus gms\n" +
  774. " ON gms.gmouldstatusid = gld.gmouldstatus\n" +
  775. " GROUP BY t.groutinglinecode\n" +
  776. " ,gl.BuildingNo\n" +
  777. " ,gl.FloorNo\n" +
  778. " ,gl.GroutingLineNo\n" +
  779. " ,t.usercode\n" +
  780. " ,t.goodscode\n" +
  781. " ,t.GOODSSPECIFICATION\n" +
  782. " ,t.goodstypename\n" +
  783. " ,t.MouldQuantity\n" +
  784. " ,gld.groutingmouldcode\n" +
  785. " ,gms.gmouldstatusname\n" +
  786. " ,gld.beginuseddate\n" +
  787. " ,gld.groutingcount\n" +
  788. " ,t.groutinglinedetailid\n" +
  789. " ORDER BY t.groutinglinecode, gld.groutingmouldcode, t.groutinglinedetailid";
  790. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  791. parameters.Add(new OracleParameter(":GDateBegin", OracleDbType.Date, se.GDateBegin, ParameterDirection.Input));
  792. parameters.Add(new OracleParameter(":GDateEnd", OracleDbType.Date, se.GDateEnd, ParameterDirection.Input));
  793. DataTable data = conn.GetSqlResultToDt(sqlString.ToString(), parameters.ToArray());
  794. ServiceResultEntity sre = new ServiceResultEntity();
  795. if (data == null || data.Rows.Count == 0)
  796. {
  797. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  798. return sre;
  799. }
  800. sre.Data = new DataSet();
  801. sre.Data.Tables.Add(data);
  802. return sre;
  803. }
  804. catch (Exception ex)
  805. {
  806. throw ex;
  807. }
  808. finally
  809. {
  810. if (conn != null &&
  811. conn.ConnState == ConnectionState.Open)
  812. {
  813. conn.Close();
  814. }
  815. }
  816. }
  817. /// <summary>
  818. /// 取得RPT010106画面(成型线剩余注浆次数)的查询数据
  819. /// </summary>
  820. /// <param name="user">登录用户信息</param>
  821. /// <param name="se">查询条件</param>
  822. /// <returns>查询结果</returns>
  823. public static ServiceResultEntity GetRPT010106SData(SUserInfo user, RPT010106_SE se)
  824. {
  825. IDBConnection conn = null;
  826. try
  827. {
  828. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  829. string sqlString =
  830. "SELECT gl.buildingno\n" +
  831. " ,gl.floorno\n" +
  832. " ,gl.groutinglineno\n" +
  833. " ,gl.groutinglinecode\n" +
  834. " ,gl.Remarks\n" +
  835. " ,decode(UserCount,\n" +
  836. " 1,\n" +
  837. " mu.usercode,\n" +
  838. " (SELECT wmsys.wm_concat(to_char(gmu.usercode))\n" +
  839. " FROM tp_pc_groutinguser gu\n" +
  840. " INNER JOIN tp_mst_user gmu\n" +
  841. " ON gmu.userid = gu.userid\n" +
  842. " WHERE gu.groutinglineid = gl.groutinglineid)) groutingusercode\n" +
  843. // 成型班长
  844. " ,mnu.username as MONITORName" +
  845. " ,g.goodscode\n" +
  846. " ,g.goodsspecification\n" +
  847. " ,gt.goodstypename\n" +
  848. " --,gl.mouldquantity\n" +
  849. " ,gldd.mouldquantity\n" +
  850. " ,gmt.gmouldtypename\n" +
  851. " ,gms.gmouldstatusname\n" +
  852. " ,gldd.beginuseddate -- 上模日期\n" +
  853. " ,gldd.groutingdate -- 首次注浆日期\n" +
  854. " ,gldd.standardgroutingcount AS standardcount -- 标准注浆次数\n" +
  855. " ,gldd.groutingcount -- 最大注浆次数\n" +
  856. " ,gldd.standardgroutingcount - gldd.groutingcount AS mincount --剩余最少注浆次数\n" +
  857. " ,gldd.sumstandardgroutingcount AS sumstandardcount -- 标准总注浆次数\n" +
  858. " ,gldd.sumgroutingcount -- 总注浆次数\n" +
  859. " ,gldd.sumstandardgroutingcount - gldd.sumgroutingcount AS leftcount --剩余总注浆次数\n" +
  860. " ,round(decode(gl.mouldquantity,\n" +
  861. " 0,\n" +
  862. " 0,\n" +
  863. " (gldd.sumstandardgroutingcount - gldd.sumgroutingcount) /\n" +
  864. " gl.mouldquantity),\n" +
  865. " 2) AS leftmaxcount -- 剩余最大注浆次数\n" +
  866. " FROM tp_pc_groutingline gl\n" +
  867. " INNER JOIN (SELECT gld.groutinglineid\n" +
  868. " ,gld.goodsid\n" +
  869. " ,COUNT(gld.groutinglinedetailid) mouldquantity\n" +
  870. " ,MIN(gld.beginuseddate) beginuseddate\n" +
  871. " ,MIN(gddd.groutingdate) groutingdate\n" +
  872. " /* ,(SELECT MIN(gdd.groutingdate)\n" +
  873. " FROM tp_pm_groutingdailydetail gdd\n" +
  874. " WHERE gdd.groutinglinedetailid = gld.groutinglinedetailid\n" +
  875. " AND gdd.groutingflag = '1') groutingdate*/\n" +
  876. " ,MAX(gld.standardgroutingcount) standardgroutingcount\n" +
  877. " ,MAX(gld.groutingcount) groutingcount\n" +
  878. " ,SUM(gld.standardgroutingcount) sumstandardgroutingcount\n" +
  879. " ,SUM(gld.groutingcount) sumgroutingcount\n" +
  880. " FROM tp_pc_groutinglinedetail gld\n" +
  881. " --LEFT JOIN tp_pm_groutingdailydetail gdd\n" +
  882. " -- ON gdd.groutinglinedetailid = gld.groutinglinedetailid\n" +
  883. " -- AND gdd.groutingflag = '1'\n" +
  884. " LEFT JOIN (SELECT gdd.groutinglinedetailid\n" +
  885. " ,gdd.mouldcode\n" +
  886. " ,MIN(gdd.groutingdate) groutingdate\n" +
  887. " FROM tp_pm_groutingdailydetail gdd\n" +
  888. " WHERE gdd.accountid = :AccountID\n" +
  889. " AND gdd.groutingflag = '1'\n" +
  890. " GROUP BY gdd.groutinglinedetailid, gdd.mouldcode) gddd\n" +
  891. " ON gddd.groutinglinedetailid = gld.groutinglinedetailid\n" +
  892. " AND gddd.mouldcode = gld.mouldcode\n" +
  893. " WHERE gld.valueflag = '1'\n" +
  894. " GROUP BY gld.groutinglineid, gld.goodsid) gldd\n" +
  895. " ON gldd.groutinglineid = gl.groutinglineid\n" +
  896. " INNER JOIN tp_mst_goods g\n" +
  897. " ON g.goodsid = gldd.goodsid\n" +
  898. " INNER JOIN tp_mst_goodstype gt\n" +
  899. " ON gt.goodstypeid = g.goodstypeid\n" +
  900. " INNER JOIN tp_mst_gmouldtype gmt\n" +
  901. " ON gmt.gmouldtypeid = gl.gmouldtypeid\n" +
  902. " INNER JOIN tp_sys_gmouldstatus gms\n" +
  903. " ON gms.gmouldstatusid = gl.gmouldstatus\n" +
  904. " LEFT JOIN tp_mst_user mu\n" +
  905. " ON mu.userid = gl.userid\n" +
  906. // 成型班长
  907. " LEFT JOIN tp_mst_user mnu" +
  908. " ON mnu.userid = gl.MONITORID" +
  909. " WHERE gl.accountid = :AccountID\n" +
  910. " AND gl.valueflag = '1'\n" +
  911. " AND (:Remarks is null or instr(gl.Remarks, :Remarks) > 0)\n" +
  912. " AND (:groutinglinecode is null or instr(gl.groutinglinecode, :groutinglinecode) > 0)\n" +
  913. " AND (:goodscode is null or instr(g.goodscode, :goodscode) > 0)\n" +
  914. " AND (:goodstypecode is null or instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  915. " ORDER BY gl.groutinglinecode, g.goodscode";
  916. List<OracleParameter> parameters = new List<OracleParameter>();
  917. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  918. parameters.Add(new OracleParameter(":Remarks", OracleDbType.Varchar2, se.Remarks, ParameterDirection.Input));
  919. parameters.Add(new OracleParameter(":groutinglinecode", OracleDbType.Varchar2, se.GroutingLineCode, ParameterDirection.Input));
  920. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  921. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  922. DataTable data = conn.GetSqlResultToDt(sqlString.ToString(), parameters.ToArray());
  923. ServiceResultEntity sre = new ServiceResultEntity();
  924. if (data == null || data.Rows.Count == 0)
  925. {
  926. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  927. return sre;
  928. }
  929. sre.Data = new DataSet();
  930. sre.Data.Tables.Add(data);
  931. return sre;
  932. }
  933. catch (Exception ex)
  934. {
  935. throw ex;
  936. }
  937. finally
  938. {
  939. if (conn != null &&
  940. conn.ConnState == ConnectionState.Open)
  941. {
  942. conn.Close();
  943. }
  944. }
  945. }
  946. /// <summary>
  947. /// 取得RPT010201_1画面(工序漏扫明细表)的查询数据
  948. /// </summary>
  949. /// <param name="user">登录用户信息</param>
  950. /// <param name="se">查询条件</param>
  951. /// <returns>查询结果</returns>
  952. public static ServiceResultEntity GetRPT010201SData(SUserInfo user, RPT010201_SE se)
  953. {
  954. IDBConnection conn = null;
  955. try
  956. {
  957. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  958. List<OracleParameter> parameters = new List<OracleParameter>();
  959. // 校验时间--开始
  960. if (se.beginCreateTime.HasValue)
  961. {
  962. parameters.Add(new OracleParameter("in_stardate", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  963. }
  964. // 校验时间--结束
  965. if (se.endCreateTime.HasValue)
  966. {
  967. parameters.Add(new OracleParameter("in_enddate", OracleDbType.Date, se.endCreateTime.Value, ParameterDirection.Input));
  968. }
  969. conn.ExecStoredProcedure("PRO_PM_InitBarcodeMissing", parameters.ToArray());
  970. parameters.Clear();
  971. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010201SSQL(user, se, ref parameters));
  972. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  973. ServiceResultEntity sre = new ServiceResultEntity();
  974. if (data == null || data.Rows.Count == 0)
  975. {
  976. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  977. return sre;
  978. }
  979. sre.Data = new DataSet();
  980. sre.Data.Tables.Add(data);
  981. return sre;
  982. }
  983. catch (Exception ex)
  984. {
  985. throw ex;
  986. }
  987. finally
  988. {
  989. if (conn != null &&
  990. conn.ConnState == ConnectionState.Open)
  991. {
  992. conn.Close();
  993. }
  994. }
  995. }
  996. /// <summary>
  997. /// 获取RPT010201_1画面(工序漏扫明细表)的查询sql
  998. /// </summary>
  999. /// <returns>sql</returns>
  1000. private static string GetRPT010201SSQL(SUserInfo user, RPT010201_SE se, ref List<OracleParameter> parameters)
  1001. {
  1002. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  1003. #region
  1004. /*
  1005. selSql = selSql +
  1006. "select * from (" +
  1007. "select " +
  1008. "MissProcedureID, " +
  1009. "MissProcedureCode, " +
  1010. "case when GoodsType=TP_MST_GoodsType.GoodsTypeCode then to_char(TP_MST_GoodsType.GoodsTypeName) else to_char(GoodsType) end GoodsType, " +
  1011. "MissProcedureName, " +
  1012. "MissID, " +
  1013. "BarCode, " +
  1014. "OrganizationID, " +
  1015. "OrganizationName, " +
  1016. "OrganizationCode, " +
  1017. "OrganizationFullName, " +
  1018. "CompleteProcedureID, " +
  1019. "CompleteProcedureCode, " +
  1020. "CompleteProcedureName, " +
  1021. "ProcedureID, " +
  1022. "ProcedureCode, " +
  1023. "ProcedureName, " +
  1024. "GoodsID, " +
  1025. "GoodsCode, " +
  1026. "GoodsName, " +
  1027. "result.GoodsTypeID, " +
  1028. "result.CreateTime, " +
  1029. "result.GoodsTypeName, " +
  1030. "UserName, " +
  1031. "MissUserCode, " +
  1032. "barcodecount, seqno " +
  1033. "from " +
  1034. " ( " +
  1035. " select " +
  1036. " MissProcedureID, " +
  1037. " MissProcedureCode, " +
  1038. " decode(MissProcedureName,'小计',decode(MissProcedureID,'--','合计','--'),GoodsType) GoodsType, " +
  1039. " decode(MissProcedureID,'--','--',decode(MissProcedureName,'小计','小计',MissProcedureName)) MissProcedureName, " +
  1040. " MissID, " +
  1041. " BarCode, " +
  1042. " OrganizationID, " +
  1043. " OrganizationName, " +
  1044. " OrganizationCode, " +
  1045. " OrganizationFullName, " +
  1046. " CompleteProcedureID, " +
  1047. " CompleteProcedureCode, " +
  1048. " CompleteProcedureName, " +
  1049. " ProcedureID, " +
  1050. " ProcedureCode, " +
  1051. " ProcedureName, " +
  1052. " GoodsID, " +
  1053. " GoodsCode, " +
  1054. " GoodsName, " +
  1055. " GoodsTypeID, " +
  1056. " CreateTime, " +
  1057. " GoodsTypeName, " +
  1058. " UserName, " +
  1059. " MissUserCode, " +
  1060. " barcodecount,rownum seqno " +
  1061. " from " +
  1062. " ( " +
  1063. " select " +
  1064. " decode(grouping( MissProcedureID),1,'--',MissProcedureID) MissProcedureID, " +
  1065. " decode(grouping( MissProcedureCode),1,'--',MissProcedureCode) MissProcedureCode, " +
  1066. " decode(grouping( MissProcedureName),1,'小计',MissProcedureName) MissProcedureName, " +
  1067. " decode(grouping(GoodsType),1,'合计',GoodsType) GoodsType, " +
  1068. " decode(grouping(MissID),1,'--',MissID) MissID, " +
  1069. " decode(grouping(BarCode),1,'--',BarCode) BarCode, " +
  1070. " decode(grouping(OrganizationID),1,'--',OrganizationID) OrganizationID, " +
  1071. " decode(grouping(OrganizationName),1,'--',OrganizationName) OrganizationName, " +
  1072. " decode(grouping(OrganizationCode),1,'--',OrganizationCode) OrganizationCode, " +
  1073. " decode(grouping(OrganizationFullName),1,'--',OrganizationFullName) OrganizationFullName, " +
  1074. " decode(grouping(CompleteProcedureID),1,'--',CompleteProcedureID) CompleteProcedureID, " +
  1075. " decode(grouping(CompleteProcedureCode),1,'--',CompleteProcedureCode) CompleteProcedureCode, " +
  1076. " decode(grouping(CompleteProcedureName),1,'--',CompleteProcedureName) CompleteProcedureName, " +
  1077. " decode(grouping(ProcedureID),1,'--',ProcedureID) ProcedureID, " +
  1078. " decode(grouping(ProcedureCode),1,'--',ProcedureCode) ProcedureCode, " +
  1079. " decode(grouping(ProcedureName),1,'--',ProcedureName) ProcedureName, " +
  1080. " decode(grouping(GoodsID),1,'--',GoodsID) GoodsID, " +
  1081. " decode(grouping(GoodsCode),1,'--',GoodsCode) GoodsCode, " +
  1082. " decode(grouping(GoodsName),1,'--',GoodsName) GoodsName, " +
  1083. " decode(grouping(GoodsTypeID),1,'--',GoodsTypeID) GoodsTypeID, " +
  1084. " decode(grouping(CreateTime),1,'--',CreateTime) CreateTime, " +
  1085. " decode(grouping(GoodsTypeName),1,'--',GoodsTypeName) GoodsTypeName, " +
  1086. " decode(grouping(UserName),1,'--',UserName) UserName, " +
  1087. " decode(grouping(MissUserCode),1,'--',MissUserCode) MissUserCode, " +
  1088. " count(barcode) barcodecount " +
  1089. " from " +
  1090. " ( " +
  1091. " select TP_PM_BarCodeMissing.MissProcedureID, " +
  1092. " TP_PM_BarCodeMissing.MissProcedureCode, " +
  1093. " TP_PM_BarCodeMissing.MissProcedureName, " +
  1094. " substr(TP_MST_GoodsType.GOODSTYPECODE,1,6) GoodsType, " +
  1095. " TP_PM_BarCodeMissing.MissID, " +
  1096. " TP_PM_BarCodeMissing.BarCode, " +
  1097. " TP_PM_BarCodeMissing.OrganizationID, " +
  1098. " TP_PM_BarCodeMissing.OrganizationName, " +
  1099. " TP_PM_BarCodeMissing.OrganizationCode, " +
  1100. " TP_PM_BarCodeMissing.OrganizationFullName, " +
  1101. " TP_PM_BarCodeMissing.CompleteProcedureID, " +
  1102. " TP_PM_BarCodeMissing.CompleteProcedureCode, " +
  1103. " TP_PM_BarCodeMissing.CompleteProcedureName, " +
  1104. " TP_PM_BarCodeMissing.ProcedureID, " +
  1105. " TP_PM_BarCodeMissing.ProcedureCode, " +
  1106. " TP_PM_BarCodeMissing.ProcedureName, " +
  1107. " TP_PM_BarCodeMissing.GoodsID, " +
  1108. " TP_PM_BarCodeMissing.GoodsCode, " +
  1109. " TP_PM_BarCodeMissing.GoodsName, " +
  1110. " TP_PM_BarCodeMissing.GoodsTypeID, " +
  1111. " TP_PM_BarCodeMissing.MissUserCode, " +
  1112. " to_char(TP_PM_BarCodeMissing.CreateTime,'yyyy-MM-dd HH24:mi:ss') CreateTime, " +
  1113. " TP_MST_GoodsType.GoodsTypeName, " +
  1114. " TP_MST_USER.UserName " +
  1115. " from TP_PM_BarCodeMissing left join TP_MST_GoodsType " +
  1116. " on TP_PM_BarCodeMissing.GoodsTypeID=TP_MST_GoodsType.GoodsTypeID " +
  1117. " left join TP_MST_USER " +
  1118. " on TP_PM_BarCodeMissing.CreateUserID=TP_MST_USER.UserID " +
  1119. " where TP_PM_BarCodeMissing.valueflag=1 " +
  1120. " and TP_PM_BarCodeMissing.accountid=:AccountID ";
  1121. // 产品条码
  1122. if (!string.IsNullOrEmpty(se.Barcode))
  1123. {
  1124. selSql = selSql + " and TP_PM_BarCodeMissing.barcode=:Barcode ";
  1125. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1126. }
  1127. // 组织结构
  1128. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  1129. {
  1130. selSql = selSql + " and instr(',' || :OrganizationIDS || ',' ,','||TP_PM_BarCodeMissing.OrganizationID||',' )>0 ";
  1131. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  1132. }
  1133. // 完成工序
  1134. if (!string.IsNullOrEmpty(se.CompleteProcedureIDS))
  1135. {
  1136. selSql = selSql + " and instr(',' || :CompleteProcedureIDS || ',',','||TP_PM_BarCodeMissing.CompleteProcedureID||',' )>0 ";
  1137. parameters.Add(new OracleParameter(":CompleteProcedureIDS", OracleDbType.NVarchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  1138. }
  1139. // 校验工序
  1140. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  1141. {
  1142. selSql = selSql + " and instr(',' || :ProcedureIDS || ',',','||TP_PM_BarCodeMissing.procedureID||',' )>0 ";
  1143. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  1144. }
  1145. // 漏扫工序
  1146. if (!string.IsNullOrEmpty(se.MissingProcedureIDS))
  1147. {
  1148. selSql = selSql + " and instr(',' || :MissingProcedureIDS || ',',','||TP_PM_BarCodeMissing.missProcedureID||',' )>0 ";
  1149. parameters.Add(new OracleParameter(":MissingProcedureIDS", OracleDbType.NVarchar2, se.MissingProcedureIDS, ParameterDirection.Input));
  1150. }
  1151. // 产品IDS
  1152. if (!string.IsNullOrEmpty(se.GoodsIDS))
  1153. {
  1154. selSql = selSql + " and instr(',' || :GoodsIDS || ',',','||TP_PM_BarCodeMissing.goodsID||',' )>0 ";
  1155. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  1156. }
  1157. // 产品IDS
  1158. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  1159. {
  1160. selSql = selSql + " and instr(',' || :GoodsTypeIDS || ',',','||TP_PM_BarCodeMissing.goodsTypeID||',' )>0 ";
  1161. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  1162. }
  1163. // 校验时间--开始
  1164. if (se.beginCreateTime.HasValue)
  1165. {
  1166. selSql = selSql + " and TP_PM_BarCodeMissing.CreateTime>= :CreateTimeStart ";
  1167. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  1168. }
  1169. // 校验时间--结束
  1170. if (se.endCreateTime.HasValue)
  1171. {
  1172. selSql = selSql + " and TP_PM_BarCodeMissing.CreateTime<= :CreateTimeEnd ";
  1173. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.endCreateTime.Value, ParameterDirection.Input));
  1174. }
  1175. selSql = selSql +
  1176. // " order by missprocedureid,username " +
  1177. " ) " +
  1178. " group by rollup( " +
  1179. " GoodsType, " +
  1180. " MissProcedureID, " +
  1181. " MissProcedureCode, " +
  1182. " MissProcedureName, " +
  1183. " MissID, " +
  1184. " BarCode, " +
  1185. " OrganizationID, " +
  1186. " OrganizationName, " +
  1187. " OrganizationCode, " +
  1188. " OrganizationFullName, " +
  1189. " CompleteProcedureID, " +
  1190. " CompleteProcedureCode, " +
  1191. " CompleteProcedureName, " +
  1192. " ProcedureID, " +
  1193. " ProcedureCode, " +
  1194. " ProcedureName, " +
  1195. " GoodsID, " +
  1196. " GoodsCode, " +
  1197. " GoodsName, " +
  1198. " GoodsTypeID, " +
  1199. " CreateTime, " +
  1200. " GoodsTypeName,MissUserCode, " +
  1201. " UserName ) " +
  1202. " ) " +
  1203. " where UserName!='--' or " +
  1204. " (USERNAME='--' and missprocedurename='小计'and missprocedurecode='--' and missprocedureid!='--' ) " +
  1205. " or " +
  1206. " (USERNAME='--' and missprocedureid='--' and GoodsType!='合计') " +
  1207. " ) result left join TP_MST_GoodsType on result.GoodsType=TP_MST_GoodsType.GoodsTypeCode"
  1208. + " ) order by seqno";
  1209. */
  1210. #endregion
  1211. string selSql = "select decode(tt.gid, 0, tt.MissID, null) MissID, --漏扫ID\n" +
  1212. " decode(tt.gid, 7, '总计', 0, tt.BarCode, '--') BarCode, --产品条码\n" +
  1213. " --decode(tt.gid, 0, tt.OrganizationID, null) OrganizationID,\n" +
  1214. " --decode(tt.gid, 0, tt.OrganizationCode, '--') OrganizationCode,\n" +
  1215. " decode(tt.gid, 0, tt.OrganizationName, '--') OrganizationName, --漏扫部门\n" +
  1216. " --decode(tt.gid, 0, tt.OrganizationFullName, '--') OrganizationFullName,\n" +
  1217. " --decode(tt.gid, 0, tt.CompleteProcedureID, null) CompleteProcedureID,\n" +
  1218. " --decode(tt.gid, 0, tt.CompleteProcedureCode, '--') CompleteProcedureCode,\n" +
  1219. " decode(tt.gid, 0, tt.CompleteProcedureName, '--') CompleteProcedureName,\n" +
  1220. " --decode(tt.gid, 0, tt.ProcedureID, null) ProcedureID,\n" +
  1221. " --decode(tt.gid, 0, tt.ProcedureCode, '--') ProcedureCode,\n" +
  1222. " decode(tt.gid, 0, tt.ProcedureName, '--') ProcedureName,\n" +
  1223. " --decode(tt.gid, 0, tt.MissProcedureID, null) MissProcedureID,\n" +
  1224. " --decode(tt.gid, 0, tt.MissProcedureCode, '--') MissProcedureCode,\n" +
  1225. " decode(tt.gid, 1, '小计', 0, tt.MissProcedureName, '--') MissProcedureName,\n" +
  1226. " decode(tt.gid, 0, tt.GoodsID, null) GoodsID,\n" +
  1227. " decode(tt.gid, 0, tt.GoodsCode, '--') GoodsCode,\n" +
  1228. " decode(tt.gid, 0, tt.GoodsName, '--') GoodsName,\n" +
  1229. " decode(tt.gid, 0, tt.GoodsTypeID, null) GoodsTypeID,\n" +
  1230. " decode(tt.gid, 0, tt.MissUserID, null) MissUserID,\n" +
  1231. " decode(tt.gid, 0, tt.MissUserCode, '--') MissUserCode,\n" +
  1232. " decode(tt.gid, 0, tt.CreateTime, null) CreateTime,\n" +
  1233. " decode(tt.gid, 0, tt.CreateUserID, null) CreateUserID,\n" +
  1234. " decode(tt.gid, 0, tt.username, '--') username,\n" +
  1235. " decode(tt.gid, 0, tt.repaircode, '--') repaircode,\n" +
  1236. " decode(tt.gid, 0, tt.prepaircode, '--') prepaircode,\n" +
  1237. " decode(tt.gid, 3, '合计', 0, tt.goodstypename2, '--') goodstype,\n" +
  1238. " tt.barcodecount, --数量\n" +
  1239. " tt.LogoCodeName\n" +
  1240. " from (select grouping_id(t.goodstypename2, --产品大类\n" +
  1241. " --t.MissProcedureCode,\n" +
  1242. " t.MissProcedureName,\n" +
  1243. " t.MissID) gid,\n" +
  1244. " t.MissID, --漏扫ID\n" +
  1245. " t.BarCode, --产品条码\n" +
  1246. " --t.OrganizationID,\n" +
  1247. " --t.OrganizationCode,\n" +
  1248. " t.OrganizationName, --漏扫部门\n" +
  1249. " --t.OrganizationFullName,\n" +
  1250. " --t.CompleteProcedureID,\n" +
  1251. " --t.CompleteProcedureCode,\n" +
  1252. " t.CompleteProcedureName, --完成工序\n" +
  1253. " --t.ProcedureID,\n" +
  1254. " --t.ProcedureCode,\n" +
  1255. " t.ProcedureName, --校验工序\n" +
  1256. " --t.MissProcedureID,\n" +
  1257. " --t.MissProcedureCode,\n" +
  1258. " t.MissProcedureName, --漏扫工序\n" +
  1259. " t.GoodsID,\n" +
  1260. " t.GoodsCode, --产品编码\n" +
  1261. " t.GoodsName, --产品名称\n" +
  1262. " t.GoodsTypeID,\n" +
  1263. " t.MissUserID,\n" +
  1264. " t.MissUserCode, --漏扫工号\n" +
  1265. " t.CreateTime, --校验漏扫时间\n" +
  1266. " t.CreateUserID,\n" +
  1267. " t.username, --校验者\n" +
  1268. " t.repaircode, --补扫操作工号\n" +
  1269. " t.prepaircode, --补扫生产工号\n" +
  1270. " t.goodstypename2, --产品大类\n" +
  1271. " count(t.barcodecount) barcodecount, --数量\n" +
  1272. " t.LogoCodeName\n" +
  1273. " from (select bcm.MissID, --漏扫ID\n" +
  1274. " bcm.BarCode, --产品条码\n" +
  1275. " --bcm.OrganizationID,\n" +
  1276. " --bcm.OrganizationCode,\n" +
  1277. " bcm.OrganizationName, --漏扫部门\n" +
  1278. " --bcm.OrganizationFullName,\n" +
  1279. " --bcm.CompleteProcedureID,\n" +
  1280. " --bcm.CompleteProcedureCode,\n" +
  1281. " --bcm.CompleteProcedureName, --完成工序\n" +
  1282. " cedp.ProcedureName as CompleteProcedureName, --完成工序\n" +
  1283. " --bcm.ProcedureID,\n" +
  1284. " --bcm.ProcedureCode,\n" +
  1285. " --bcm.ProcedureName, --校验工序\n" +
  1286. " cp.ProcedureName, --校验工序\n" +
  1287. " --bcm.MissProcedureID,\n" +
  1288. " --bcm.MissProcedureCode,\n" +
  1289. " --bcm.MissProcedureName, --漏扫工序\n" +
  1290. " mp.ProcedureName as MissProcedureName, --漏扫工序\n" +
  1291. " bcm.GoodsID,\n" +
  1292. " bcm.GoodsCode, --产品编码\n" +
  1293. " bcm.GoodsName, --产品名称\n" +
  1294. " bcm.GoodsTypeID,\n" +
  1295. " bcm.MissUserID,\n" +
  1296. " bcm.MissUserCode, --漏扫工号\n" +
  1297. " bcm.CreateTime, --校验漏扫时间\n" +
  1298. " bcm.CreateUserID,\n" +
  1299. " u.username, --校验者\n" +
  1300. //" MU.usercode repaircode, --补扫操作工号\n" +
  1301. //" MU.pusercode prepaircode, --补扫生产工号\n" +
  1302. " bcm.ROPUserCode repaircode, --补扫操作工号\n" +
  1303. " bcm.RWorkUserCode prepaircode, --补扫生产工号\n" +
  1304. " gt2.goodstypename goodstypename2, --产品大类\n" +
  1305. " 1 barcodecount, --数量\n" +
  1306. " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName\n" +
  1307. " from TP_PM_BarCodeMissing bcm\n" +
  1308. " left join TP_MST_User u\n" +
  1309. " on bcm.CreateUserID = u.userid\n" +
  1310. " left join TP_MST_GoodsType gt\n" +
  1311. " on bcm.GoodsTypeID = gt.GoodsTypeID\n" +
  1312. " left join TP_MST_GoodsType gt2\n" +
  1313. " on substr(gt.GoodsTypeCode, 1, 6) = gt2.GoodsTypeCode\n" +
  1314. " and gt.accountid = gt2.accountid\n" +
  1315. /*
  1316. //" left join TP_PM_ProductionData PD\n" +
  1317. //" on PD.BarCode = bcm.BarCode\n" +
  1318. //" and PD.ProcedureID = bcm.MissProcedureID\n" +
  1319. //" left join TP_MST_User MU\n" +
  1320. //" on MU.UserID = PD.CreateUserID\n" +
  1321. " left join (select pd.barcode,\n" +
  1322. " pd.procedureid,\n" +
  1323. " pd.usercode pusercode,\n" +
  1324. " mu.usercode,\n" +
  1325. //" pd.usercode,\n" +
  1326. " max(bm.missid) missid\n" +
  1327. //" row_number() over(partition by pd.barcode, pd.procedureid order by pd.productiondataid) rnum\n" +
  1328. " from tp_pm_productiondata pd\n" +
  1329. " inner join tp_pm_barcodemissing bm\n" +
  1330. " on bm.barcode = pd.barcode\n" +
  1331. " and bm.missprocedureid = pd.procedureid\n" +
  1332. " and bm.createtime < pd.createtime\n" +
  1333. " and bm.valueflag ='1'\n" +
  1334. " inner join tp_mst_user mu\n" +
  1335. " on mu.userid = pd.createuserid\n" +
  1336. " where pd.valueflag = '1'\n" +
  1337. " group by pd.barcode, pd.procedureid, pd.usercode, mu.usercode\n" +
  1338. " ) MU\n" +
  1339. " on MU.barcode = bcm.barcode\n" +
  1340. " and MU.procedureid = bcm.missprocedureid\n" +
  1341. " and MU.missid = bcm.missid" +
  1342. //" and MU.rnum = 1" +
  1343. */
  1344. " left join tp_pc_procedure cedp \n" +
  1345. " on cedp.procedureid = bcm.CompleteProcedureID\n" +
  1346. " left join tp_pc_procedure cp \n" +
  1347. " on cp.procedureid = bcm.ProcedureID\n" +
  1348. " left join tp_pc_procedure mp \n" +
  1349. " on mp.procedureid = bcm.MissProcedureID\n" +
  1350. " left join TP_PM_GroutingDailyDetail \n" +
  1351. " on TP_PM_GroutingDailyDetail.barcode = bcm.BarCode\n" +
  1352. " left join tp_mst_logo \n" +
  1353. " on tp_mst_logo.logoid = TP_PM_GroutingDailyDetail.logoid\n" +
  1354. " where bcm.valueflag='1' \n" +
  1355. " and bcm.accountid=:AccountID \n";
  1356. // 产品条码
  1357. if (!string.IsNullOrEmpty(se.Barcode))
  1358. {
  1359. selSql = selSql + " and bcm.barcode=:Barcode ";
  1360. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1361. }
  1362. // 组织结构
  1363. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  1364. {
  1365. selSql = selSql + " and instr(',' || :OrganizationIDS || ',' ,','||bcm.OrganizationID||',' )>0 ";
  1366. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  1367. }
  1368. // 完成工序
  1369. if (!string.IsNullOrEmpty(se.CompleteProcedureIDS))
  1370. {
  1371. selSql = selSql + " and instr(',' || :CompleteProcedureIDS || ',',','||bcm.CompleteProcedureID||',' )>0 ";
  1372. parameters.Add(new OracleParameter(":CompleteProcedureIDS", OracleDbType.NVarchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  1373. }
  1374. // 校验工序
  1375. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  1376. {
  1377. selSql = selSql + " and instr(',' || :ProcedureIDS || ',',','||bcm.procedureID||',' )>0 ";
  1378. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  1379. }
  1380. // 漏扫工序
  1381. if (!string.IsNullOrEmpty(se.MissingProcedureIDS))
  1382. {
  1383. selSql = selSql + " and instr(',' || :MissingProcedureIDS || ',',','||bcm.missProcedureID||',' )>0 ";
  1384. parameters.Add(new OracleParameter(":MissingProcedureIDS", OracleDbType.NVarchar2, se.MissingProcedureIDS, ParameterDirection.Input));
  1385. }
  1386. // 产品IDS
  1387. if (!string.IsNullOrEmpty(se.GoodsIDS))
  1388. {
  1389. selSql = selSql + " and instr(',' || :GoodsIDS || ',',','||bcm.goodsID||',' )>0 ";
  1390. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  1391. }
  1392. // 产品IDS
  1393. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  1394. {
  1395. //selSql = selSql + " and instr(',' || :GoodsTypeIDS || ',',','||gt.goodsTypeCode||',' )=1 ";
  1396. selSql = selSql + " and instr(gt.goodsTypeCode,:GoodsTypeIDS )=1 ";
  1397. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  1398. }
  1399. // 校验时间--开始
  1400. if (se.beginCreateTime.HasValue)
  1401. {
  1402. selSql = selSql + " and bcm.CreateTime>= :CreateTimeStart ";
  1403. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  1404. }
  1405. // 校验时间--结束
  1406. if (se.endCreateTime.HasValue)
  1407. {
  1408. selSql = selSql + " and bcm.CreateTime<= :CreateTimeEnd ";
  1409. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.endCreateTime.Value, ParameterDirection.Input));
  1410. }
  1411. selSql += "\n" +
  1412. //" order by gt2.GoodsTypeCode,bcm.MissProcedureCode,\n" +
  1413. //" --bcm.GoodsCode,\n" +
  1414. //" bcm.BarCode,\n" +
  1415. //" bcm.ProcedureCode,\n" +
  1416. //" bcm.CompleteProcedureCode\n" +
  1417. //" ) t\n" +
  1418. " order by gt2.GoodsTypeCode,mp.ProcedureName,\n" +
  1419. " --bcm.GoodsCode,\n" +
  1420. " bcm.BarCode,\n" +
  1421. " cp.ProcedureName,\n" +
  1422. " cedp.ProcedureName\n" +
  1423. " ) t\n" +
  1424. " group by grouping sets((t.MissID, --漏扫ID\n" +
  1425. " t.BarCode, --产品条码\n" +
  1426. " t.goodstypename2, --产品大类\n" +
  1427. " /*t.OrganizationID, t.OrganizationCode,*/ t.OrganizationName, --漏扫部门\n" +
  1428. " /*t.OrganizationFullName, t.CompleteProcedureID, t.CompleteProcedureCode, t.CompleteProcedureName,*/ t.CompleteProcedureName, --完成工序\n" +
  1429. " /*t.ProcedureID, t.ProcedureCode, t.ProcedureName,*/ t.ProcedureName, --校验工序\n" +
  1430. " /*t.MissProcedureID, t.MissProcedureCode, t.MissProcedureName,*/ t.MissProcedureName, --漏扫工序\n" +
  1431. " t.GoodsID, t.GoodsCode, --产品编码\n" +
  1432. " t.GoodsName, --产品名称\n" +
  1433. " t.GoodsTypeID, t.MissUserID, t.MissUserCode, --漏扫工号\n" +
  1434. " t.CreateTime, --校验漏扫时间\n" +
  1435. " t.CreateUserID, t.username, --校验者\n" +
  1436. " t.repaircode, --补扫工号\n" +
  1437. " t.prepaircode, --补扫工号\n" +
  1438. " t.LogoCodeName --商标\n" +
  1439. " ),(t.goodstypename2, --产品大类\n" +
  1440. " /*t.MissProcedureCode,*/ t.MissProcedureName --漏扫工序\n" +
  1441. " ),(t.goodstypename2 --产品大类\n" +
  1442. " ),())) tt";
  1443. return selSql;
  1444. }
  1445. /// <summary>
  1446. /// 取得RPT010301_1画面(条码变更明细表)的查询数据
  1447. /// </summary>
  1448. /// <param name="user">登录用户信息</param>
  1449. /// <param name="se">查询条件</param>
  1450. /// <returns>查询结果</returns>
  1451. public static ServiceResultEntity GetRPT010301SData(SUserInfo user, RPT010301_SE se)
  1452. {
  1453. IDBConnection conn = null;
  1454. try
  1455. {
  1456. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1457. List<OracleParameter> parameters = new List<OracleParameter>();
  1458. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010301SSQL());
  1459. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  1460. if (se != null)
  1461. {
  1462. // 更换条码时间-开始
  1463. if (se.createTimeBegin.HasValue)
  1464. {
  1465. sql.Append(" and TP_PM_BarCodeRecord.CreateTime>= :CreateTimeBegin ");
  1466. parameters.Add(new OracleParameter(":CreateTimeBegin", OracleDbType.Date, se.createTimeBegin.Value, ParameterDirection.Input));
  1467. }
  1468. // 更换条码时间-结束
  1469. if (se.createTimeEnd.HasValue)
  1470. {
  1471. sql.Append(" and TP_PM_BarCodeRecord.CreateTime<= :CreateTimeEnd ");
  1472. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.createTimeEnd.Value, ParameterDirection.Input));
  1473. }
  1474. //成型线IDS
  1475. if (!string.IsNullOrEmpty(se.Barcode))
  1476. {
  1477. // sql.Append(" and (TP_PM_BarCodeRecord.BARCODE=:Barcode or TP_PM_BarCodeRecord.NEWBARCODE=:Barcode or TP_PM_BarCodeRecord.FIRSTBARCODE=:Barcode or TP_PM_BarCodeRecord.FINALBARCODE=:Barcode )");
  1478. sql.Append(" and (instr(TP_PM_BarCodeRecord.BARCODE,:Barcode)>0 or instr(TP_PM_BarCodeRecord.NEWBARCODE,:Barcode)>0 or instr(TP_PM_BarCodeRecord.FIRSTBARCODE,:Barcode)>0 or instr(TP_PM_BarCodeRecord.FINALBARCODE,:Barcode)>0 )");
  1479. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1480. }
  1481. }
  1482. sql.Append(" ORDER BY TP_PM_BarCodeRecord.CREATETIME ");
  1483. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  1484. ServiceResultEntity sre = new ServiceResultEntity();
  1485. if (data == null || data.Rows.Count == 0)
  1486. {
  1487. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  1488. return sre;
  1489. }
  1490. sre.Data = new DataSet();
  1491. sre.Data.Tables.Add(data);
  1492. return sre;
  1493. }
  1494. catch (Exception ex)
  1495. {
  1496. throw ex;
  1497. }
  1498. finally
  1499. {
  1500. if (conn != null &&
  1501. conn.ConnState == ConnectionState.Open)
  1502. {
  1503. conn.Close();
  1504. }
  1505. }
  1506. }
  1507. /// <summary>
  1508. /// 获取RPT010301_1画面(条码变更明细表)的查询sql
  1509. /// </summary>
  1510. /// <returns>sql</returns>
  1511. private static string GetRPT010301SSQL()
  1512. {
  1513. string selSql =
  1514. " SELECT "
  1515. + " TP_PM_BarCodeRecord.BarCode, "
  1516. + " TP_PM_BarCodeRecord.NewBarCode, "
  1517. + " TP_PM_BarCodeRecord.FirstBarCode, "
  1518. + " TP_PM_BarCodeRecord.FinalBarCode, "
  1519. + " TP_PM_BarCodeRecord.Createtime, "
  1520. + " TP_PM_GROUTINGDAILYDETAIL.GroutingLineCode, "
  1521. + " TP_PM_GROUTINGDAILYDETAIL.GroutingLineName, "
  1522. + " TP_MST_GMouldType.Gmouldtypename, "
  1523. + " TP_PM_GROUTINGDAILYDETAIL.GroutingDate, "
  1524. + " TP_PM_GROUTINGDAILYDETAIL.GroutingMouldCode, "
  1525. + " TP_PM_GROUTINGDAILYDETAIL.MouldCode, "
  1526. + " TP_PM_GROUTINGDAILYDETAIL.UserCode GroutingUserCode, "
  1527. + " TP_PM_GROUTINGDAILYDETAIL.GroutingCount , "
  1528. + " TP_PM_GROUTINGDAILYDETAIL.GoodsCode, "
  1529. + " TP_PM_GROUTINGDAILYDETAIL.GoodsName, "
  1530. + " TP_PC_PROCEDURE.PROCEDURECODE, "
  1531. + " TP_PC_PROCEDURE.PROCEDURENAME, "
  1532. // 成型班长
  1533. + " mu.username as MONITORName,"
  1534. + " TP_MST_USER.USERNAME, "
  1535. + " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName "
  1536. + " from TP_PM_BarCodeRecord "
  1537. + " left join TP_PM_GROUTINGDAILYDETAIL on TP_PM_BarCodeRecord.FinalBarCode=TP_PM_GROUTINGDAILYDETAIL.Barcode "
  1538. + " inner join TP_PC_GroutingLine on TP_PC_GroutingLine.GroutingLineID=TP_PM_GroutingDailyDetail.GroutingLineID "
  1539. // 成型班长
  1540. + " LEFT JOIN tp_mst_user mu" +
  1541. " ON mu.userid = TP_PC_GroutingLine.MONITORID"
  1542. + " inner join TP_MST_GMouldType on TP_MST_GMouldType.GMOULDTYPEID=TP_PC_GroutingLine.GMOULDTYPEID "
  1543. + " left join TP_PC_PROCEDURE on TP_PM_BarCodeRecord.Procedureid=TP_PC_PROCEDURE.PROCEDUREID "
  1544. + " left join TP_MST_USER ON TP_PM_BarCodeRecord.CreateUserID=TP_MST_USER.USERID "
  1545. + " left join TP_MST_logo ON TP_MST_logo.logoid=TP_PM_GROUTINGDAILYDETAIL.logoid "
  1546. + " where TP_PM_GROUTINGDAILYDETAIL.ACCOUNTID=:AccountID ";
  1547. return selSql;
  1548. }
  1549. /// <summary>
  1550. /// 取得RPT010401画面(在产品明细表)的查询数据
  1551. /// </summary>
  1552. /// <param name="user">登录用户信息</param>
  1553. /// <param name="se">查询条件</param>
  1554. /// <returns>查询结果</returns>
  1555. public static ServiceResultEntity GetRPT010401SData(SUserInfo user, RPT010401_SE se)
  1556. {
  1557. IDBConnection conn = null;
  1558. try
  1559. {
  1560. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1561. List<OracleParameter> parameters = new List<OracleParameter>();
  1562. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010401SSQL());
  1563. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  1564. if (se != null)
  1565. {
  1566. // 条码
  1567. if (!string.IsNullOrEmpty(se.Barcode))
  1568. {
  1569. //sql.Append(" AND TP_PM_InProduction.BarCode=:Barcode ");
  1570. sql.Append(" AND instr(TP_PM_InProduction.BarCode,:Barcode)>0 ");
  1571. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1572. }
  1573. // 产品IDS
  1574. if (!string.IsNullOrEmpty(se.GoodsIDS))
  1575. {
  1576. sql.Append(" AND instr(','||:GoodsIDS||',',','||TP_PM_InProduction.GoodsId||',')>0 ");
  1577. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  1578. }
  1579. //生产线IDS
  1580. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  1581. {
  1582. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction.ProductionLineID||',')>0 ");
  1583. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  1584. }
  1585. //完成工序IDS
  1586. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  1587. {
  1588. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ");
  1589. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  1590. }
  1591. //生产工号IDS
  1592. if (!string.IsNullOrEmpty(se.UserIDS))
  1593. {
  1594. sql.Append(" AND instr(','||:UserIDS||',',','||TP_PM_InProduction.UserID||',')>0 ");
  1595. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  1596. }
  1597. // 成型线IDS
  1598. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  1599. {
  1600. sql.Append(" AND instr(','||:GroutingLineIDS||',',','||TP_PM_InProduction.GroutingLineID||',')>0 ");
  1601. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  1602. }
  1603. // 成型线类型IDS
  1604. if (!string.IsNullOrEmpty(se.GMouldTypeIDS))
  1605. {
  1606. sql.Append(" AND instr(','||:GMouldTypeIDS||',',','||TP_PM_InProduction.GMouldTypeID||',')>0 ");
  1607. parameters.Add(new OracleParameter(":GMouldTypeIDS", OracleDbType.NVarchar2, se.GMouldTypeIDS, ParameterDirection.Input));
  1608. }
  1609. // 交坯时间--开始
  1610. if (se.CreateTimeStart.HasValue)
  1611. {
  1612. sql.Append(" AND TP_PM_GroutingDailyDetail.delivertime >= :CreateTimeStart ");
  1613. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  1614. }
  1615. // 交坯时间--结束
  1616. if (se.CreateTimeEnd.HasValue)
  1617. {
  1618. sql.Append(" AND TP_PM_GroutingDailyDetail.delivertime <= :CreateTimeEnd ");
  1619. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  1620. }
  1621. // 完成时间--开始
  1622. if (se.UpdateTimeStart.HasValue)
  1623. {
  1624. sql.Append(" AND TP_PM_InProduction.Proceduretime >= :UpdateTimeStart ");
  1625. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  1626. }
  1627. // 完成时间--结束
  1628. if (se.UpdateTimeEnd.HasValue)
  1629. {
  1630. sql.Append(" AND TP_PM_InProduction.Proceduretime <= :UpdateTimeEnd ");
  1631. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  1632. }
  1633. if (se.inscrapflag != 2)
  1634. {
  1635. sql.Append(" AND TP_PM_InProduction.inscrapflag=:inscrapflag ");
  1636. parameters.Add(new OracleParameter(":inscrapflag", OracleDbType.NVarchar2, se.inscrapflag, ParameterDirection.Input));
  1637. }
  1638. if (!string.IsNullOrWhiteSpace(se.GoodsTypeCode))
  1639. {
  1640. sql.Append(" AND instr(gt.goodstypecode, :GoodsTypeCode) = 1 ");
  1641. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  1642. }
  1643. // 试验标识
  1644. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  1645. {
  1646. sql.Append(" AND TP_PM_GroutingDailyDetail.TestMouldFlag = :TestMouldFlag ");
  1647. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  1648. }
  1649. }
  1650. sql.Append(" order by TP_PM_InProduction.UpdateTime desc");
  1651. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  1652. ServiceResultEntity sre = new ServiceResultEntity();
  1653. if (data == null || data.Rows.Count == 0)
  1654. {
  1655. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  1656. return sre;
  1657. }
  1658. sre.Data = new DataSet();
  1659. sre.Data.Tables.Add(data);
  1660. return sre;
  1661. }
  1662. catch (Exception ex)
  1663. {
  1664. throw ex;
  1665. }
  1666. finally
  1667. {
  1668. if (conn != null &&
  1669. conn.ConnState == ConnectionState.Open)
  1670. {
  1671. conn.Close();
  1672. }
  1673. }
  1674. }
  1675. /// <summary>
  1676. /// 获取RPT010401画面(在产品明细表)的查询sql
  1677. /// </summary>
  1678. /// <returns>sql</returns>
  1679. private static string GetRPT010401SSQL()
  1680. {
  1681. string selSql =
  1682. "SELECT " +
  1683. " TP_PM_InProduction.BarCode, " +
  1684. " TP_PM_InProduction.GoodsID,TP_PM_InProduction.GoodsCode, " +
  1685. " TP_PM_InProduction.GoodsName, gt.goodstypename," +
  1686. " TP_PM_InProduction.Userid,A.USERNAME as UserName,A.USERCode as UserCode, " +
  1687. " TP_PM_InProduction.ProductionLineID, " +
  1688. " TP_PM_InProduction.ProductionLineCode, " +
  1689. " pin.ProductionLineName, " +
  1690. " TP_PM_InProduction.ModelType, " +
  1691. " decode(TP_PM_InProduction.inscrapflag , '1', '待审核的报废品' , '正常') as inscrapflag, " +
  1692. //" decode(TP_PM_InProduction.IsPublicBody, '1', '是' , '否') as IsPublicBody, " +
  1693. " TP_PM_InProduction.IsPublicBody, " +
  1694. //" decode(TP_PM_InProduction.IsReFire, '1', '是' , '否') as IsReFire, " +
  1695. " decode(TP_PM_InProduction.IsReFire, '6', '1' , '0') as IsReFire, " +
  1696. " TP_PM_InProduction.IsReworkFlag, " +
  1697. " decode(TP_PM_InProduction.CanManyTimes, '1', '能' , '不能') as CanManyTimes, " +
  1698. " decode(TP_PM_InProduction.ProcedureModel, '1', '计件模型' , '检验模型') as ProcedureModel, " +
  1699. " TP_PM_InProduction.GroutingDailyID, " +
  1700. " TP_PM_InProduction.GroutingDailyDetailID, " +
  1701. " TP_PM_InProduction.GroutingDate, " +
  1702. " TP_PM_InProduction.GroutingLineID, " +
  1703. " TP_PM_InProduction.GroutingLineCode, " +
  1704. " TP_PM_InProduction.GroutingLineName, " +
  1705. " TP_PM_InProduction.KILNCODE, " +
  1706. " TP_PM_InProduction.KILNCARCODE, " +
  1707. " TP_PM_InProduction.ProcedureID CompleteProcedureID, " +
  1708. " D.ProcedureName as CompleteProcedureName, " +
  1709. " TP_PM_InProduction.GMouldTypeID, " +
  1710. " TP_MST_GMouldType.GMOULDTYPENAME as GMouldTypeName, " +
  1711. " TP_PM_InProduction.GroutingLineDetailID, " +
  1712. " TP_PM_InProduction.GroutingMouldCode, " +
  1713. " TP_PM_InProduction.SPECIALREPAIRFLAG, " +
  1714. " TP_PM_InProduction.GROUTINGUSERCODE, " +
  1715. " TP_PM_GroutingDailyDetail.GROUTINGCOUNT, " +
  1716. "TP_PM_GroutingDailyDetail.GLAZE1_WEIGHT," +
  1717. "TP_PM_GroutingDailyDetail.GLAZE2_WEIGHT," +
  1718. " TP_PM_GroutingDailyDetail.GROUTINGBATCHNO, " +
  1719. " TP_PM_GroutingDailyDetail.delivertime, " +
  1720. " TP_PM_InProduction.proceduretime, " +
  1721. " TP_PM_InProduction.Remarks, " +
  1722. " TP_PM_InProduction.GoodsLevelID,TP_MST_GoodsLevel.GOODSLEVELNAME, " +
  1723. " TP_PM_InProduction.GoodsLevelTypeID,TP_SYS_GoodsLevelType.GOODSLEVELTYPENAME, " +
  1724. " TP_PM_InProduction.AccountID,TP_PM_InProduction.ValueFlag, " +
  1725. " TP_PM_GroutingDailyDetail.glazingroom," +
  1726. " TP_PM_GroutingDailyDetail.SecurityCode," +
  1727. " TP_PM_GroutingDailyDetail.TestMouldFlag," +
  1728. " TP_PM_InProduction.CreateTime,TP_PM_InProduction.CreateUserID,B.USERNAME as CreateUserName, " +
  1729. " TP_PM_InProduction.PROCEDURETIME AS UpdateTime,TP_PM_InProduction.UpdateUserID,C.USERNAME as UpdateUserName, " +
  1730. " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName, " +
  1731. //" (Goods.MaterialCode || TP_MST_Logo.tagcode || TP_PM_GroutingDailyDetail.onlycode) as FinishedBarCode " +
  1732. " nvl(TP_PM_GroutingDailyDetail.outlabelcode, TP_PM_GroutingDailyDetail.MaterialCode || (select a.workcode from tp_mst_account a where a.accountid = TP_PM_GroutingDailyDetail.accountid) || TP_MST_Logo.tagcode || TP_PM_GroutingDailyDetail.onlycode) as FinishedBarCode " +
  1733. " ,PPD.PROCEDURENAME " +
  1734. " FROM TP_PM_InProduction " +
  1735. " left join TP_PC_PRODUCTIONLINE pin on pin.productionlineid = TP_PM_InProduction.productionlineid " +//生产线显示 xcm 2023-3-28
  1736. " inner join TP_MST_User A on A.UserID=TP_PM_InProduction.Userid " +
  1737. " inner join TP_MST_User B on B.UserID=TP_PM_InProduction.CreateUserID " +
  1738. " inner join TP_MST_User C on C.UserID=TP_PM_InProduction.UpdateUserID " +
  1739. " inner join TP_PC_Procedure D on D.PROCEDUREID=TP_PM_InProduction.ProcedureID " +
  1740. " inner join TP_MST_GMouldType on TP_MST_GMouldType.GMouldTypeID=TP_PM_InProduction.GMouldTypeID " +
  1741. " inner join TP_SYS_ProcedureModelType on TP_SYS_ProcedureModelType.ProcedureModelTypeID=TP_PM_InProduction.ModelType " +
  1742. " inner join TP_PM_GroutingDaily on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_InProduction.GroutingDailyID " +
  1743. " inner join TP_PM_GroutingDailyDetail on TP_PM_GroutingDailyDetail.Groutingdailydetailid=TP_PM_InProduction.GroutingDailyDetailID " +
  1744. " inner join TP_PC_GroutingLineDetail on TP_PC_GroutingLineDetail.Groutinglinedetailid=TP_PM_InProduction.GroutingLineDetailID " +
  1745. " inner join TP_MST_Account on TP_MST_Account.Accountid=TP_PM_InProduction.Accountid " +
  1746. " left join TP_MST_GoodsLevel on TP_MST_GoodsLevel.GoodsLevelID=TP_PM_InProduction.GoodsLevelID " +
  1747. " left join TP_SYS_GoodsLevelType on TP_SYS_GoodsLevelType.GoodsLevelTypeID=TP_PM_InProduction.GoodsLevelTypeID " +
  1748. " left join TP_MST_Logo on TP_PM_InProduction.logoid=TP_MST_Logo.logoid " +
  1749. " left join TP_MST_Goods Goods on TP_PM_InProduction.GoodsID=Goods.GoodsID " +
  1750. " left join tp_mst_goodstype gt on gt.goodstypeid = Goods.goodstypeid " +
  1751. " LEFT JOIN TP_PM_ProductionData PD " +
  1752. " ON PD.PRODUCTIONDATAID = tp_pm_inproduction.Productiondataid " +
  1753. " LEFT JOIN TP_PC_Procedure PPD " +
  1754. " ON PD.FINISHEDPROCEDUREID = PPD.PROCEDUREID " +
  1755. " Where TP_PM_InProduction.ValueFlag = 1 " +
  1756. " and TP_PM_InProduction.AccountID=:AccountID ";
  1757. return selSql;
  1758. }
  1759. /// <summary>
  1760. /// 取得RPT010402画面(产成品明细表)的查询数据
  1761. /// </summary>
  1762. /// <param name="user">登录用户信息</param>
  1763. /// <param name="se">查询条件</param>
  1764. /// <returns>查询结果</returns>
  1765. public static ServiceResultEntity GetRPT010402SData(SUserInfo user, RPT010402_SE se)
  1766. {
  1767. IDBConnection conn = null;
  1768. try
  1769. {
  1770. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1771. List<OracleParameter> parameters = new List<OracleParameter>();
  1772. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010402SSQL());
  1773. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  1774. if (se != null)
  1775. {
  1776. // 条码
  1777. if (!string.IsNullOrEmpty(se.Barcode))
  1778. {
  1779. //sql.Append(" AND TP_PM_FinishedProduct.BarCode=:BarCode ");
  1780. sql.Append(" AND instr(TP_PM_FinishedProduct.BarCode,:Barcode)>0 ");
  1781. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1782. }
  1783. // 产品IDS
  1784. if (!string.IsNullOrEmpty(se.GoodsIDS))
  1785. {
  1786. sql.Append(" AND instr(','||:GoodsIDS||',',','||TP_PM_FinishedProduct.GoodsId||',')>0 ");
  1787. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  1788. }
  1789. // 生产线IDS
  1790. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  1791. {
  1792. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_FinishedProduct.ProductionLineID||',')>0 ");
  1793. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  1794. }
  1795. // 成型线ids
  1796. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  1797. {
  1798. sql.Append(" AND instr(','||:GroutingLineIDS||',',','||TP_PM_FinishedProduct.GroutingLineID||',')>0 ");
  1799. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  1800. }
  1801. // 成型线类型ids
  1802. if (!string.IsNullOrEmpty(se.GMouldTypeIDS))
  1803. {
  1804. sql.Append(" AND instr(','||:GMouldTypeIDS||',',','||TP_PM_FinishedProduct.GMouldTypeID||',')>0 ");
  1805. parameters.Add(new OracleParameter(":GMouldTypeIDS", OracleDbType.NVarchar2, se.GMouldTypeIDS, ParameterDirection.Input));
  1806. }
  1807. // 财务日期--开始
  1808. if (se.AccountDateStart.HasValue)
  1809. {
  1810. //sql.Append(" AND TP_PM_FinishedProduct.AccountDate >= :AccountDateStart ");
  1811. sql.Append(" AND TP_PM_FinishedProduct.CreateTime >= :AccountDateStart ");
  1812. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  1813. }
  1814. // 财务日期--结束
  1815. if (se.AccountDateEnd.HasValue)
  1816. {
  1817. //sql.Append(" AND TP_PM_FinishedProduct.AccountDate <= :AccountDateEnd ");
  1818. sql.Append(" AND TP_PM_FinishedProduct.CreateTime <= :AccountDateEnd ");
  1819. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  1820. }
  1821. // 注浆时间--开始
  1822. if (se.CreateTimeStart.HasValue)
  1823. {
  1824. sql.Append(" AND TP_PM_GroutingDaily.CreateTime >= :CreateTimeStart ");
  1825. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  1826. }
  1827. // 注浆时间--结束
  1828. if (se.CreateTimeEnd.HasValue)
  1829. {
  1830. sql.Append(" AND TP_PM_GroutingDaily.CreateTime <= :CreateTimeEnd ");
  1831. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  1832. }
  1833. // 产品类别
  1834. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  1835. {
  1836. //sql.Append(" AND instr(',' || :GoodsTypeIDS ||',',','||gt.GOODSTYPECode||',')=1");
  1837. sql.Append(" AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1");
  1838. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  1839. }
  1840. }
  1841. sql.Append(" order by TP_PM_FinishedProduct.UpdateTime desc");
  1842. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  1843. ServiceResultEntity sre = new ServiceResultEntity();
  1844. if (data == null || data.Rows.Count == 0)
  1845. {
  1846. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  1847. return sre;
  1848. }
  1849. sre.Data = new DataSet();
  1850. sre.Data.Tables.Add(data);
  1851. return sre;
  1852. }
  1853. catch (Exception ex)
  1854. {
  1855. throw ex;
  1856. }
  1857. finally
  1858. {
  1859. if (conn != null &&
  1860. conn.ConnState == ConnectionState.Open)
  1861. {
  1862. conn.Close();
  1863. }
  1864. }
  1865. }
  1866. /// <summary>
  1867. /// 获取RPT010402画面(产成品明细表)的查询sql
  1868. /// </summary>
  1869. /// <returns>sql</returns>
  1870. private static string GetRPT010402SSQL()
  1871. {
  1872. string selSql =
  1873. "SELECT " +
  1874. " TP_PM_FinishedProduct.BarCode, " +
  1875. " TP_PM_FinishedProduct.GoodsID, " +
  1876. " TP_PM_FinishedProduct.GoodsCode, " +
  1877. " TP_PM_FinishedProduct.GoodsName, " +
  1878. " TP_PM_FinishedProduct.ProductionLineID, " +
  1879. " pin.ProductionLineCode, " +
  1880. " pin.ProductionLineName, " +
  1881. //" decode(TP_PM_FinishedProduct.IsPublicBody, '1', '是' , '否') as IsPublicBody, " +
  1882. //" decode(TP_PM_FinishedProduct.IsReFire, '1', '是' , '否') as IsReFire, " +
  1883. " TP_PM_FinishedProduct.IsPublicBody, " +
  1884. " decode(TP_PM_FinishedProduct.IsReFire, '6', '1' , '0') as IsReFire, " +
  1885. " decode(TP_PM_GroutingDaily.CanManyTimes, '1', '是' , '否') as CanManyTimes, " +
  1886. " decode(TP_PM_FinishedProduct.SettlementFlag, '1', '已结算' , '未结算') as SettlementFlag, " +
  1887. " TP_PM_FinishedProduct.GroutingDailyID, " +
  1888. " TP_PM_FinishedProduct.GroutingDailyDetailID, " +
  1889. " TP_PM_FinishedProduct.GroutingDate, " +
  1890. " TP_PM_FinishedProduct.GroutingLineID, " +
  1891. " TP_PM_FinishedProduct.GroutingLineCode," +
  1892. " TP_PM_FinishedProduct.GroutingLineName, " +
  1893. " TP_PM_FinishedProduct.GMouldTypeID, " +
  1894. " TP_MST_GMouldType.GMOULDTYPENAME as GMouldTypeName, " +
  1895. " TP_PM_FinishedProduct.GroutingLineDetailID, " +
  1896. " TP_PM_FinishedProduct.GroutingMouldCode," +
  1897. " TP_PM_GroutingDailyDetail.GROUTINGCOUNT," +
  1898. " TP_PM_FinishedProduct.GROUTINGUSERCODE," +
  1899. " TP_PM_FinishedProduct.SPECIALREPAIRFLAG," +
  1900. " TP_PM_FinishedProduct.KILNID," +
  1901. " TP_PM_FinishedProduct.KILNCODE," +
  1902. " TP_PM_FinishedProduct.KILNNAME," +
  1903. " TP_PM_FinishedProduct.KILNCARID," +
  1904. " TP_PM_FinishedProduct.KILNCARCODE," +
  1905. " TP_PM_FinishedProduct.KILNCARNAME," +
  1906. " TP_MST_DATADICTIONARY.DICTIONARYVALUE KILNCARPOSITION," +
  1907. " TP_PM_FinishedProduct.MouldCode, " +
  1908. " TP_PM_FinishedProduct.Remarks, " +
  1909. " TP_PM_FinishedProduct.GoodsLevelID,TP_MST_GoodsLevel.GOODSLEVELNAME, " +
  1910. " TP_PM_FinishedProduct.GoodsLevelTypeID, " +
  1911. " TP_SYS_GoodsLevelType.GOODSLEVELTYPENAME, " +
  1912. " TP_PM_GroutingDailyDetail.SecurityCode, " +
  1913. //" TP_PM_FinishedProduct.FHUSERCODE, " +
  1914. //" TP_PM_FinishedProduct.FHTIME, " +
  1915. " nvl(TP_PM_FinishedProduct.FHUSERCODE,TP_PM_FinishedProduct.LCFHUSERCODE)FHUSERCODE, " +
  1916. " nvl(TP_PM_FinishedProduct.FHTIME,TP_PM_FinishedProduct.LCFHTIME)FHTIME, " +
  1917. " odr.ORDERNO, " +
  1918. //20210116 产成品明细表加入注浆重量等重量信息
  1919. " TP_PM_GroutingDailyDetail.SLURRY_WEIGHT, " +
  1920. " TP_PM_GroutingDailyDetail.COOL1_WEIGHT, " +
  1921. " TP_PM_GroutingDailyDetail.BAKEOUT1_WEIGHT, " +
  1922. " TP_PM_GroutingDailyDetail.DELIVER_WEIGHT, " +
  1923. " TP_PM_GroutingDailyDetail.GLAZE1_WEIGHT, " +
  1924. " TP_PM_GroutingDailyDetail.GLAZE2_WEIGHT, " +
  1925. " TP_PM_GroutingDailyDetail.FINISHED_WEIGHT, " +
  1926. //end
  1927. " TP_PM_FinishedProduct.AccountID, " +
  1928. " TP_PM_FinishedProduct.ValueFlag, " +
  1929. " TP_PM_FinishedProduct.AccountDate, " +
  1930. " TP_PM_FinishedProduct.CreateTime, " +
  1931. " TP_PM_FinishedProduct.CreateUserID, " +
  1932. " B.USERNAME as CreateUserName, " +
  1933. " TP_PM_FinishedProduct.UpdateTime, " +
  1934. " TP_PM_FinishedProduct.UpdateUserID, " +
  1935. " C.USERNAME as UpdateUserName, " +
  1936. " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName," +
  1937. " TP_PM_GroutingDailyDetail.Materialcode," +
  1938. //" (Goods.MaterialCode || tp_mst_logo.tagcode || TP_PM_GroutingDailyDetail.onlycode) as FinishedBarCode " +
  1939. " TP_PM_GroutingDailyDetail.outlabelcode as FinishedBarCode, " +
  1940. " TP_PM_FinishedProduct.BanMa " +
  1941. " FROM TP_PM_FinishedProduct " +
  1942. " left join TP_PC_PRODUCTIONLINE pin on pin.productionlineid =TP_PM_FinishedProduct .productionlineid" +
  1943. " left join TP_PM_ORDER odr on odr.ORDERID=TP_PM_FinishedProduct.FHORDERID " +
  1944. " left join TP_MST_User B on B.UserID=TP_PM_FinishedProduct.CreateUserID " +
  1945. " left join TP_MST_User C on C.UserID=TP_PM_FinishedProduct.UpdateUserID " +
  1946. " left join TP_MST_GMouldType on TP_MST_GMouldType.GMouldTypeID=TP_PM_FinishedProduct.GMouldTypeID " +
  1947. " left join TP_MST_DATADICTIONARY on TP_PM_FinishedProduct.KILNCARPOSITION=TP_MST_DATADICTIONARY.DICTIONARYID " +
  1948. " left join TP_PM_GroutingDaily on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_FinishedProduct.GroutingDailyID " +
  1949. " left join TP_PM_GroutingDailyDetail on TP_PM_GroutingDailyDetail.Groutingdailydetailid=TP_PM_FinishedProduct.GroutingDailyDetailID " +
  1950. " left join TP_PC_GroutingLineDetail on TP_PC_GroutingLineDetail.Groutinglinedetailid=TP_PM_FinishedProduct.GroutingLineDetailID " +
  1951. " left join TP_MST_Account on TP_MST_Account.Accountid=TP_PM_FinishedProduct.Accountid " +
  1952. " left join TP_MST_GoodsLevel on TP_MST_GoodsLevel.GOODSLEVELID=TP_PM_FinishedProduct.GoodsLevelID " +
  1953. " left join TP_SYS_GoodsLevelType on TP_SYS_GoodsLevelType.GoodsLevelTypeID=TP_PM_FinishedProduct.GoodsLevelTypeID " +
  1954. " left join tp_mst_logo on TP_PM_FinishedProduct.logoid=tp_mst_logo.logoid " +
  1955. " left join TP_MST_Goods Goods on TP_PM_FinishedProduct.GoodsID=Goods.GoodsID " +
  1956. " left join tp_mst_goodstype gt on gt.goodstypeid=Goods.goodstypeid " +
  1957. " Where 1=1 and TP_PM_FinishedProduct.ValueFlag = 1 " +
  1958. " and TP_PM_FinishedProduct.AccountID=:AccountID ";
  1959. return selSql;
  1960. }
  1961. /// <summary>
  1962. /// 取得RPT010403画面(生产数据明细表)的查询数据
  1963. /// </summary>
  1964. /// <param name="user">登录用户信息</param>
  1965. /// <param name="se">查询条件</param>
  1966. /// <returns>查询结果</returns>
  1967. public static ServiceResultEntity GetRPT010403SData(SUserInfo user, RPT010403_SE se)
  1968. {
  1969. IDBConnection conn = null;
  1970. try
  1971. {
  1972. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1973. List<OracleParameter> parameters = new List<OracleParameter>();
  1974. string sqlString =
  1975. "SELECT *\n" +
  1976. " FROM (SELECT pd.barcode\n" +
  1977. " ,gt2.goodstypename as goodstypename2\n" +
  1978. " ,gt.goodstypename\n" +
  1979. " ,g.goodscode\n" +
  1980. " ,pin.ProductionLineName\n" +
  1981. " ,to_char(p.ProcedureName) AS ProcedureName\n" +
  1982. " ,op.organizationfullname AS porgname\n" +
  1983. " ,pd.CreateTime\n" +
  1984. " ,PD.UserCode\n" +
  1985. " ,cu.Usercode AS CreateUsercode\n" +
  1986. " ,cu.Username AS CreateUserName\n" +
  1987. " ,co.organizationfullname corgname\n" +
  1988. " , CASE\n" +
  1989. " WHEN PD.valueflag = '0' AND PD.ProcedureModel = '1' THEN\n" +
  1990. " '撤销(['|| to_char(bu.usercode) || ']' || to_char(bu.username) || ' ' ||\n" +
  1991. " to_char(PD.Backouttime, 'yyyy-mm-dd hh24:mi:ss') || ')'\n" +
  1992. " WHEN PD.valueflag = '0' AND PD.ProcedureModel = '2' THEN\n" +
  1993. " to_char(GL.GOODSLEVELNAME) || '(被修改)'\n" +
  1994. " ELSE\n" +
  1995. " to_char(GL.GOODSLEVELNAME)\n" +
  1996. " END || CASE\n" +
  1997. " WHEN pd.modeltype = 1 THEN\n" +
  1998. " '[' || to_char(pd.kilncarcode) || ']'\n" +
  1999. " ELSE\n" +
  2000. " ''\n" +
  2001. " END GOODSLEVELNAME\n" +
  2002. " ,gdd.glazingroom" +
  2003. " FROM TP_PM_ProductionData PD\n" +
  2004. " left join TP_PC_PRODUCTIONLINE pin on pd.productionlineid = pd.productionlineid" +
  2005. " INNER JOIN tp_pc_procedure p\n" +
  2006. " ON p.procedureid = pd.procedureid\n" +
  2007. " LEFT JOIN tp_mst_goods g\n" +
  2008. " ON g.goodsid = pd.goodsid\n" +
  2009. " LEFT JOIN TP_PM_GroutingDailyDetail gdd\n" +
  2010. " ON gdd.Groutingdailydetailid = pd.Groutingdailydetailid\n" +
  2011. " LEFT JOIN tp_mst_goodstype gt\n" +
  2012. " ON gt.goodstypeid = g.goodstypeid\n" +
  2013. " LEFT JOIN tp_mst_goodstype gt2\n" +
  2014. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  2015. " AND gt2.AccountID = :AccountID\n" +
  2016. " INNER JOIN tp_mst_organization op\n" +
  2017. " ON op.organizationid = p.organizationid\n" +
  2018. " INNER JOIN tp_mst_user cu\n" +
  2019. " ON cu.userid = PD.Createuserid\n" +
  2020. " INNER JOIN tp_mst_organization co\n" +
  2021. " ON co.organizationid = cu.organizationid\n" +
  2022. " LEFT JOIN tp_mst_user bu\n" +
  2023. " ON bu.userid = PD.Backoutuserid\n" +
  2024. " LEFT JOIN tp_mst_goodslevel GL\n" +
  2025. " ON GL.GOODSLEVELID = PD.GOODSLEVELID\n" +
  2026. " AND gl.AccountID = :AccountID\n" +
  2027. " WHERE PD.AccountID = :AccountID\n" +
  2028. " AND PD.Createtime >= :CreatetimeBegin\n" +
  2029. " AND PD.Createtime <= :CreatetimeEnd\n" +
  2030. " AND (:ProductionLineID IS NULL OR\n" +
  2031. " pd.productionlineid = :ProductionLineID)\n" +
  2032. " AND (:GoodsTypeCode IS NULL OR\n" +
  2033. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)\n" +
  2034. " AND (:GoodsCode IS NULL OR instr(g.GoodsCode, :GoodsCode) > 0)\n" +
  2035. " AND (:BarCode IS NULL OR instr(pd.BarCode, :BarCode) > 0)\n" +
  2036. " UNION ALL\n" +
  2037. " -- 报损\n" +
  2038. " SELECT sp.barcode\n" +
  2039. " ,gt2.goodstypename as goodstypename2\n" +
  2040. " ,gt.goodstypename\n" +
  2041. " ,g.goodscode\n" +
  2042. " ,sp.productionlinename\n" +
  2043. //" ,to_char(gl.goodslevelname) || '-完成工序【' ||\n" +
  2044. //" to_char(p.procedurename) || '】' AS procedurename\n" +
  2045. " ,'损坯-完成工序【' || to_char(p.procedurename) || '】-责任工序【' || CASE\n" +
  2046. " WHEN rpp.procedureid IS NOT NULL THEN\n" +
  2047. " to_char(rpp.procedurename)\n" +
  2048. " ELSE\n" +
  2049. " '无'\n" +
  2050. " END || '】-责任工号【[' || to_char(sruser.usercode) || ']' ||\n" +
  2051. " to_char(sruser.Username) || '】-原因【' ||\n" +
  2052. " to_char(sp.rreason) || '】' AS procedurename" +
  2053. " ,NULL AS porgname\n" +
  2054. " ,sp.Createtime\n" +
  2055. " ,NULL AS Usercode\n" +
  2056. " ,u.Usercode AS CreateUsercode\n" +
  2057. " ,U.Username AS CreateUserName\n" +
  2058. " ,co.organizationfullname corgname\n" +
  2059. " ,to_char(A.AUDITSTATUSNAME) || CASE\n" +
  2060. " WHEN Length(AU.usercode) > 0 THEN\n" +
  2061. " '(['|| to_char(AU.usercode) || ']' || to_char(AU.Username) || ' ' ||\n" +
  2062. " to_char(sp.AuditDate, 'yyyy-mm-dd hh24:mi:ss') || ')'\n" +
  2063. " ELSE\n" +
  2064. " ''\n" +
  2065. " END || CASE\n" +
  2066. " WHEN sp.valueflag = '0' THEN\n" +
  2067. " '-撤销(['|| to_char(uu.usercode) || ']' || to_char(uu.username) || ' ' ||\n" +
  2068. " to_char(sp.updatetime, 'yyyy-mm-dd hh24:mi:ss') || ')'\n" +
  2069. " ELSE\n" +
  2070. " ''\n" +
  2071. " END AS GOODSLEVELNAME\n" +
  2072. " ,null glazingroom\n" +
  2073. " FROM tp_pm_scrapproduct sp\n" +
  2074. " LEFT JOIN tp_mst_goods g\n" +
  2075. " ON g.goodsid = sp.goodsid\n" +
  2076. " LEFT JOIN tp_mst_goodstype gt\n" +
  2077. " ON gt.goodstypeid = g.goodstypeid\n" +
  2078. " LEFT JOIN tp_mst_goodstype gt2\n" +
  2079. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  2080. " AND gt2.AccountID = :AccountID\n" +
  2081. " INNER JOIN tp_pc_procedure p\n" +
  2082. " ON p.procedureid = sp.procedureid\n" +
  2083. " --inner join tp_mst_organization op\n" +
  2084. " -- on op.organizationid = p.organizationid\n" +
  2085. " INNER JOIN tp_mst_user U\n" +
  2086. " ON U.userid = sp.CREATEUSERID\n" +
  2087. " INNER JOIN tp_mst_organization co\n" +
  2088. " ON co.organizationid = u.organizationid\n" +
  2089. " INNER JOIN tp_mst_user uu\n" +
  2090. " ON uu.userid = sp.Updateuserid\n" +
  2091. " INNER JOIN tp_sys_AuditStatus A\n" +
  2092. " ON A.AuditStatusid = sp.AuditStatus\n" +
  2093. " LEFT JOIN tp_mst_goodslevel gl\n" +
  2094. " ON gl.goodsleveltypeid = 8\n" +
  2095. " AND gl.accountid = 1\n" +
  2096. " LEFT JOIN tp_mst_user AU\n" +
  2097. " ON au.userid = sp.auditor\n" +
  2098. " LEFT JOIN TP_PM_ResponProcedure rp\n" +
  2099. " ON rp.scrapproductid = sp.scrapproductid\n" +
  2100. " LEFT JOIN tp_pc_procedure rpp\n" +
  2101. " ON rpp.procedureid = rp.procedureid\n" +
  2102. " LEFT JOIN (SELECT DISTINCT sr.scrapproductid, sr.userid\n" +
  2103. " FROM TP_PM_ScrapResponsible sr\n" +
  2104. " WHERE sr.AccountID = :AccountID\n" +
  2105. " -- 编辑后 时间不一致\n" +
  2106. " --AND sr.Createtime >= :CreatetimeBegin\n" +
  2107. " --AND sr.Createtime <= :CreatetimeEnd\n" +
  2108. " ) sru\n" +
  2109. " ON sru.scrapproductid = sp.scrapproductid\n" +
  2110. " LEFT JOIN tp_mst_user sruser\n" +
  2111. " ON sruser.userid = sru.userid" +
  2112. " WHERE (sp.goodsleveltypeid = 8 OR sp.goodsleveltypeid = 9)\n" +
  2113. " AND sp.scraptype = '0'\n" +
  2114. " AND sp.AccountID = :AccountID\n" +
  2115. " AND sp.Createtime >= :CreatetimeBegin\n" +
  2116. " AND sp.Createtime <= :CreatetimeEnd\n" +
  2117. " AND (:ProductionLineID IS NULL OR\n" +
  2118. " sp.productionlineid = :ProductionLineID)\n" +
  2119. " AND (:GoodsTypeCode IS NULL OR\n" +
  2120. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)\n" +
  2121. " AND (:BarCode IS NULL OR instr(sp.BarCode, :BarCode) > 0)\n" +
  2122. " AND (:GoodsCode IS NULL OR instr(g.GoodsCode, :GoodsCode) > 0)) t\n" +
  2123. " ORDER BY t.barcode, t.Createtime";
  2124. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2125. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  2126. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  2127. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  2128. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  2129. parameters.Add(new OracleParameter(":CreatetimeBegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input));
  2130. parameters.Add(new OracleParameter(":CreatetimeEnd", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input));
  2131. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2132. ServiceResultEntity sre = new ServiceResultEntity();
  2133. if (data == null || data.Rows.Count == 0)
  2134. {
  2135. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2136. return sre;
  2137. }
  2138. sre.Data = new DataSet();
  2139. sre.Data.Tables.Add(data);
  2140. return sre;
  2141. }
  2142. catch (Exception ex)
  2143. {
  2144. throw ex;
  2145. }
  2146. finally
  2147. {
  2148. if (conn != null &&
  2149. conn.ConnState == ConnectionState.Open)
  2150. {
  2151. conn.Close();
  2152. }
  2153. }
  2154. }
  2155. /// <summary>
  2156. /// 取得RPT010302画面(商标变更明细表)的查询数据
  2157. /// </summary>
  2158. /// <param name="user">登录用户信息</param>
  2159. /// <param name="se">查询条件</param>
  2160. /// <returns>查询结果</returns>
  2161. public static ServiceResultEntity GetRPT010302SData(SUserInfo user, RPT010302_SE se)
  2162. {
  2163. IDBConnection conn = null;
  2164. try
  2165. {
  2166. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2167. List<OracleParameter> parameters = new List<OracleParameter>();
  2168. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010302SSQL());
  2169. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2170. if (se != null)
  2171. {
  2172. // 更换条码时间-开始
  2173. if (se.createTimeBegin.HasValue)
  2174. {
  2175. sql.Append(" and lcr.CreateTime>= :CreateTimeBegin ");
  2176. parameters.Add(new OracleParameter(":CreateTimeBegin", OracleDbType.Date, se.createTimeBegin.Value, ParameterDirection.Input));
  2177. }
  2178. // 更换条码时间-结束
  2179. if (se.createTimeEnd.HasValue)
  2180. {
  2181. sql.Append(" and lcr.CreateTime<= :CreateTimeEnd ");
  2182. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.createTimeEnd.Value, ParameterDirection.Input));
  2183. }
  2184. //成型线IDS
  2185. if (!string.IsNullOrEmpty(se.Barcode))
  2186. {
  2187. // sql.Append(" and (TP_PM_BarCodeRecord.BARCODE=:Barcode or TP_PM_BarCodeRecord.NEWBARCODE=:Barcode or TP_PM_BarCodeRecord.FIRSTBARCODE=:Barcode or TP_PM_BarCodeRecord.FINALBARCODE=:Barcode )");
  2188. sql.Append(" and (instr(lcr.BARCODE,:Barcode)>0 )");
  2189. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  2190. }
  2191. }
  2192. sql.Append(" ORDER BY lcr.CREATETIME ");
  2193. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  2194. ServiceResultEntity sre = new ServiceResultEntity();
  2195. if (data == null || data.Rows.Count == 0)
  2196. {
  2197. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2198. return sre;
  2199. }
  2200. sre.Data = new DataSet();
  2201. sre.Data.Tables.Add(data);
  2202. return sre;
  2203. }
  2204. catch (Exception ex)
  2205. {
  2206. throw ex;
  2207. }
  2208. finally
  2209. {
  2210. if (conn != null &&
  2211. conn.ConnState == ConnectionState.Open)
  2212. {
  2213. conn.Close();
  2214. }
  2215. }
  2216. }
  2217. /// <summary>
  2218. /// 获取RPT010302画面(商标变更明细表)的查询sql
  2219. /// </summary>
  2220. /// <returns>sql</returns>
  2221. private static string GetRPT010302SSQL()
  2222. {
  2223. string selSql =
  2224. "SELECT lcr.BarCode\n" +
  2225. " ,REPLACE((oldlogo.Logoname || '[' || oldlogo.Logocode || ']'),\n" +
  2226. " '[]',\n" +
  2227. " '') AS oldLogoCodeName\n" +
  2228. " ,REPLACE((newlogo.Logoname || '[' || newlogo.Logocode || ']'),\n" +
  2229. " '[]',\n" +
  2230. " '') AS newLogoCodeName\n" +
  2231. " ,lcr.Createtime\n" +
  2232. " ,gdd.GroutingLineCode\n" +
  2233. " ,gdd.GroutingLineName\n" +
  2234. " ,gdd.GroutingDate\n" +
  2235. " ,gdd.GroutingMouldCode\n" +
  2236. " ,gdd.MouldCode\n" +
  2237. " ,gdd.UserCode GroutingUserCode\n" +
  2238. " ,gdd.GroutingCount\n" +
  2239. " ,gdd.GoodsCode\n" +
  2240. " ,gdd.GoodsName\n" +
  2241. " ,p.PROCEDURECODE\n" +
  2242. " ,p.PROCEDURENAME\n" +
  2243. " ,u.USERCode\n" +
  2244. " ,u.USERNAME\n" +
  2245. " FROM TP_PM_LogoChangedRecord lcr\n" +
  2246. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gdd\n" +
  2247. " ON lcr.barcode = gdd.Barcode\n" +
  2248. " LEFT JOIN TP_PC_PROCEDURE p\n" +
  2249. " ON lcr.Procedureid = p.PROCEDUREID\n" +
  2250. " LEFT JOIN TP_MST_USER u\n" +
  2251. " ON lcr.CreateUserID = u.USERID\n" +
  2252. " LEFT JOIN TP_MST_logo oldlogo\n" +
  2253. " ON lcr.oldlogoid = oldlogo.logoid\n" +
  2254. " LEFT JOIN TP_MST_logo newlogo\n" +
  2255. " ON lcr.newlogoid = newlogo.logoid\n" +
  2256. " WHERE lcr.ACCOUNTID = :AccountID";
  2257. return selSql;
  2258. }
  2259. #endregion 明细报表
  2260. #region 分析报表
  2261. /// <summary>
  2262. /// 取得RPT040101_1画面(注浆交坯比率分析表)的查询数据
  2263. /// </summary>
  2264. /// <param name="user">登录用户信息</param>
  2265. /// <param name="se">查询条件</param>
  2266. /// <returns>查询结果</returns>
  2267. public static ServiceResultEntity GetRPT040101SData(SUserInfo user, RPT040101_SE se)
  2268. {
  2269. IDBConnection conn = null;
  2270. try
  2271. {
  2272. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2273. #region
  2274. /*
  2275. List<OracleParameter> parameters = new List<OracleParameter>();
  2276. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT040101SSQL());
  2277. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2278. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.GroutingDateStart.Value, ParameterDirection.Input));
  2279. parameters.Add(new OracleParameter(":groutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  2280. parameters.Add(new OracleParameter(":dateDifference", OracleDbType.Int32, se.DateDifference, ParameterDirection.Input));
  2281. if (se != null)
  2282. {
  2283. // 成型线IDS
  2284. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  2285. {
  2286. sql.Append(" AND instr(',' || :GroutingLineIDS ||',',','||TP_PM_GroutingDailyDetail.GroutingLineId||',')>0 ");
  2287. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  2288. }
  2289. // 成型工IDS
  2290. if (!string.IsNullOrEmpty(se.UserIDS))
  2291. {
  2292. sql.Append(" AND instr(',' || :UserIDS ||',',','||TP_PM_GroutingDailyDetail.UserId||',')>0 ");
  2293. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  2294. }
  2295. //产品类型IDS
  2296. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  2297. {
  2298. sql.Append(" AND instr(',' || :GoodsTypeIDS ||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ");
  2299. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  2300. }
  2301. //产品IDS
  2302. if (!string.IsNullOrEmpty(se.GoodsIDS))
  2303. {
  2304. sql.Append(" AND instr(',' || :GoodsIDS ||',',','||TP_PM_GroutingDailyDetail.GoodsId||',')>0 ");
  2305. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  2306. }
  2307. }
  2308. sql.Append(" group by ");
  2309. sql.Append(" TP_PM_GroutingDailyDetail.UserCode, ");
  2310. sql.Append(" TP_PM_GroutingDailyDetail.Groutinglineid, ");
  2311. sql.Append(" line.GroutinglineCode, ");
  2312. sql.Append(" TP_MST_GOODSTYPE.GoodsTypeName, ");
  2313. sql.Append(" TP_PM_GroutingDailyDetail.GoodsCode, ");
  2314. sql.Append(" TP_MST_Goods.Goodsspecification, ");
  2315. sql.Append(" TP_MST_DataDictionary.DICTIONARYVALUE, ");
  2316. sql.Append(" MouldQuantity ");
  2317. sql.Append(" ) temp ");
  2318. sql.Append(" ) a ");
  2319. sql.Append(" group by rollup( ");
  2320. sql.Append(" UserCode, ");
  2321. sql.Append(" Groutinglinecode, ");
  2322. sql.Append(" GoodsTypeName, ");
  2323. sql.Append(" GoodsCode, ");
  2324. sql.Append(" Goodsspecification, ");
  2325. sql.Append(" DICTIONARYVALUE, ");
  2326. sql.Append(" MouldQuantity, ");
  2327. sql.Append(" 注浆量, ");
  2328. sql.Append(" 交坯量 ");
  2329. sql.Append(" ) ");
  2330. sql.Append(") Temp where 交坯量 is not null");
  2331. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  2332. */
  2333. #endregion
  2334. List<OracleParameter> parameters = new List<OracleParameter>();
  2335. //StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT040101SSQL());
  2336. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2337. //parameters.Add(new OracleParameter(":dateDifference", OracleDbType.Int32, se.DateDifference, ParameterDirection.Input));
  2338. string sqlGroutingdate = null;
  2339. StringBuilder sql = new StringBuilder();
  2340. if (se != null)
  2341. {
  2342. // 成型线IDS
  2343. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  2344. {
  2345. sql.Append(" AND instr(',' || :GroutingLineIDS ||',',','||gdd.GroutingLineId||',')>0 ");
  2346. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  2347. }
  2348. // 成型工IDS
  2349. if (!string.IsNullOrEmpty(se.UserIDS))
  2350. {
  2351. sql.Append(" AND instr(',' || :UserIDS ||',',','||gdd.UserId||',')>0 ");
  2352. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  2353. }
  2354. //产品类型IDS
  2355. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  2356. {
  2357. //sql.Append(" AND instr(',' || :GoodsTypeIDS ||',',','||gt.GOODSTYPECode||',')=1");
  2358. sql.Append(" AND instr(gt.GOODSTYPECode,:GoodsTypeIDS)=1");
  2359. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  2360. }
  2361. //产品IDS
  2362. if (!string.IsNullOrEmpty(se.GoodsIDS))
  2363. {
  2364. sql.Append(" AND instr(',' || :GoodsIDS ||',',','||gdd.GoodsId||',')>0 ");
  2365. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  2366. }
  2367. if (se.GroutingDateStart.HasValue)
  2368. {
  2369. //sql.Append(" and gdd.groutingdate >= :groutingDateStart \n");
  2370. //sql.Append(" and gdd.groutingdate <= :groutingDateEnd \n");
  2371. sqlGroutingdate = " and gdd.groutingdate >= :groutingDateStart \n"
  2372. + " and gdd.groutingdate <= :groutingDateEnd \n";
  2373. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.GroutingDateStart.Value, ParameterDirection.Input));
  2374. parameters.Add(new OracleParameter(":groutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  2375. parameters.Add(new OracleParameter(":DeliverTimeStart", OracleDbType.Date, se.GroutingDateStart.Value.AddDays(se.DateDifference), ParameterDirection.Input));
  2376. parameters.Add(new OracleParameter(":DeliverTimeEnd", OracleDbType.Date, se.GroutingDateEnd.Value.AddDays(se.DateDifference), ParameterDirection.Input));
  2377. }
  2378. else if (se.GCTimeBegin.HasValue)
  2379. {
  2380. //sql.Append(" and gdd.createtime >= :groutingDateStart \n");
  2381. //sql.Append(" and gdd.createtime <= :groutingDateEnd \n");
  2382. sqlGroutingdate = " and gdd.createtime >= :groutingDateStart \n"
  2383. + " and gdd.createtime <= :groutingDateEnd \n";
  2384. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.GCTimeBegin.Value, ParameterDirection.Input));
  2385. parameters.Add(new OracleParameter(":groutingDateEnd", OracleDbType.Date, se.GCTimeEnd.Value, ParameterDirection.Input));
  2386. parameters.Add(new OracleParameter(":DeliverTimeStart", OracleDbType.Date, se.GCTimeBegin.Value.Date.AddDays(se.DateDifference), ParameterDirection.Input));
  2387. parameters.Add(new OracleParameter(":DeliverTimeEnd", OracleDbType.Date, se.GCTimeEnd.Value.Date.AddDays(se.DateDifference), ParameterDirection.Input));
  2388. }
  2389. }
  2390. string sqlString =
  2391. "select decode(gid, 7, '总计', 3, '合计['|| gddata.usercode ||']', gddata.usercode) usercode,\n" +
  2392. " decode(gid, 1, '小计['|| gddata.goodscode ||']', 0, gddata.goodscode, '--') goodscode,\n" +
  2393. " decode(gid, 0, gddata.goodstypename, '--') goodstypename,\n" +
  2394. " decode(gid, 0, gddata.goodsspecification, '--') goodsspecification,\n" +
  2395. " decode(gid, 0, gddata.GlazeType, '--') GlazeType,\n" +
  2396. " decode(gid, 0, gddata.groutinglinecode, '--') groutinglinecode,\n" +
  2397. " decode(gid, 0, to_char(gddata.MouldQuantity), '--') MouldQuantity,\n" +
  2398. //" select gddata.usercode,\n" +
  2399. //" gddata.goodscode,\n" +
  2400. //" gddata.goodstypename,\n" +
  2401. //" gddata.goodsspecification,\n" +
  2402. //" gddata.GlazeType,\n" +
  2403. //" gddata.groutinglinecode,\n" +
  2404. //" gddata.MouldQuantity,\n" +
  2405. " gddata.GroutingNum,\n" +
  2406. " gddata.StrippingNum,\n" +
  2407. " gddata.DeliverNum,\n" +
  2408. " decode(gddata.GroutingNum,\n" +
  2409. " 0,\n" +
  2410. " '0.00%',\n" +
  2411. " to_char((gddata.StrippingNum / gddata.GroutingNum) * 100,\n" +
  2412. " '9,990.00') || '%') GSPercent, -- 注成比,\n" +
  2413. " decode(gddata.GroutingNum,\n" +
  2414. " 0,\n" +
  2415. " '0.00%',\n" +
  2416. " to_char((gddata.DeliverNum / gddata.GroutingNum) * 100,\n" +
  2417. " '9,990.00') || '%') GDPercent, -- 注交比,\n" +
  2418. " decode(gddata.StrippingNum,\n" +
  2419. " 0,\n" +
  2420. " '0.00%',\n" +
  2421. " to_char((gddata.DeliverNum / gddata.StrippingNum) * 100,\n" +
  2422. " '9,990.00') || '%') SDPercent -- 成交比,\n" +
  2423. " from (select grouping_id(gdd.flag,gdd.usercode, gdd.goodscode, gdd.groutinglinecode) gid,\n" +
  2424. //" select grouping_id(gdd.flag,gdd.usercode, gdd.goodscode, gdd.groutinglinecode) gid,\n" +
  2425. " gdd.usercode,\n" +
  2426. " gdd.goodscode,\n" +
  2427. " gdd.goodstypename,\n" +
  2428. " gdd.goodsspecification,\n" +
  2429. " gdd.GlazeType,\n" +
  2430. " gdd.groutinglinecode,\n" +
  2431. " gdd.MouldQuantity,\n" +
  2432. " sum(gdd.GroutingNum) GroutingNum,\n" +
  2433. " sum(gdd.StrippingNum) StrippingNum,\n" +
  2434. " sum(gdd.DeliverNum) DeliverNum\n" +
  2435. " from (select 1 flag,\n" +
  2436. //" select 1 flag,\n" +
  2437. " gddgroup.usercode,\n" +
  2438. " gddgroup.goodscode,\n" +
  2439. " gddgroup.goodstypename,\n" +
  2440. " gddgroup.goodsspecification,\n" +
  2441. " gddgroup.GlazeType,\n" +
  2442. " gddgroup.groutinglinecode,\n" +
  2443. " gddgroup.MouldQuantity,\n" +
  2444. " sum(gddgroup.GroutingNum) GroutingNum,\n" +
  2445. " sum(gddgroup.StrippingNum) StrippingNum,\n" +
  2446. " sum(gddgroup.DeliverNum) DeliverNum\n" +
  2447. " from (select --gdd.groutingdailydetailid,\n" +
  2448. " gd.groutinglinecode,\n" +
  2449. " gt.goodstypename,\n" +
  2450. " g.goodscode,\n" +
  2451. " g.goodsspecification,\n" +
  2452. " dd.dictionaryvalue GlazeType,\n" +
  2453. //" gdd.usercode,\n" +
  2454. (se.IsMonitor ? " mu.username usercode,\n" : " gdd.usercode,\n") +
  2455. " gd.MouldQuantity,\n" +
  2456. " decode(gdd.GroutingFlag, '1', 1, 0) GroutingNum,\n" +
  2457. " case\n" +
  2458. " when gdd.GroutingFlag = '1' and gdd.ScrapFlag = '0' then\n" +
  2459. " 1\n" +
  2460. " else\n" +
  2461. " 0\n" +
  2462. " end StrippingNum,\n" +
  2463. " 0 DeliverNum\n" +
  2464. " from tp_pm_groutingdaily gd\n" +
  2465. " inner join tp_pm_groutingdailydetail gdd\n" +
  2466. " on gd.groutingdailyid = gdd.groutingdailyid\n" +
  2467. " left join tp_mst_user mu\n" +
  2468. " on mu.userid = gd.MonitorID\n" +
  2469. " inner join tp_mst_goods g\n" +
  2470. " on gdd.goodsid = g.goodsid\n" +
  2471. " inner join tp_mst_goodstype gt\n" +
  2472. " on g.goodstypeid = gt.goodstypeid\n" +
  2473. " inner join tp_mst_datadictionary dd\n" +
  2474. " on dd.dictionaryid = g.GlazeTypeID\n" +
  2475. " where gd.valueflag = '1'\n" +
  2476. " and gd.accountid = :AccountID\n"
  2477. + sqlGroutingdate +
  2478. //" and gdd.groutingdate >= :groutingDateStart \n" +
  2479. //" and gdd.groutingdate <= :groutingDateEnd \n" +
  2480. sql +
  2481. " union all\n" +
  2482. " select --gdd.groutingdailydetailid,\n" +
  2483. " gd.groutinglinecode,\n" +
  2484. " gt.goodstypename,\n" +
  2485. " g.goodscode,\n" +
  2486. " g.goodsspecification,\n" +
  2487. " dd.dictionaryvalue GlazeType,\n" +
  2488. //" gdd.usercode,\n" +
  2489. (se.IsMonitor ? " mu.username usercode,\n" : " gdd.usercode,\n") +
  2490. " gd.MouldQuantity,\n" +
  2491. " 0 GroutingNum,\n" +
  2492. " 0 StrippingNum,\n" +
  2493. " decode(gdd.deliverflag, '1', 1, 0) DeliverNum\n" +
  2494. " from tp_pm_groutingdaily gd\n" +
  2495. " inner join tp_pm_groutingdailydetail gdd\n" +
  2496. " on gd.groutingdailyid = gdd.groutingdailyid\n" +
  2497. " left join tp_mst_user mu\n" +
  2498. " on mu.userid = gd.MonitorID\n" +
  2499. " inner join tp_mst_goods g\n" +
  2500. " on gdd.goodsid = g.goodsid\n" +
  2501. " inner join tp_mst_goodstype gt\n" +
  2502. " on g.goodstypeid = gt.goodstypeid\n" +
  2503. " inner join tp_mst_datadictionary dd\n" +
  2504. " on dd.dictionaryid = g.GlazeTypeID\n" +
  2505. " where gd.valueflag = '1'\n" +
  2506. " and gd.accountid = :AccountID\n" +
  2507. " and gdd.DeliverTime >= :DeliverTimeStart \n" +
  2508. " and gdd.DeliverTime <= :DeliverTimeEnd \n" + sql +
  2509. " ) gddgroup\n" +
  2510. " group by gddgroup.usercode, gddgroup.goodscode, gddgroup.goodstypename, gddgroup.goodsspecification, gddgroup.GlazeType, gddgroup.groutinglinecode, gddgroup.MouldQuantity\n" +
  2511. " order by gddgroup.usercode, gddgroup.goodscode, gddgroup.groutinglinecode\n" +
  2512. " ) gdd\n" +
  2513. " group by grouping sets((gdd.flag,gdd.usercode, gdd.goodscode, gdd.goodstypename, gdd.goodsspecification, gdd.GlazeType, gdd.groutinglinecode, gdd.MouldQuantity),(gdd.flag,gdd.usercode, gdd.goodscode),(gdd.flag,gdd.usercode),gdd.flag)\n" +
  2514. //" order by gdd.usercode, gdd.goodscode, gdd.groutinglinecode " +
  2515. ") gddata";
  2516. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2517. ServiceResultEntity sre = new ServiceResultEntity();
  2518. if (data == null || data.Rows.Count == 0)
  2519. {
  2520. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2521. return sre;
  2522. }
  2523. sre.Data = new DataSet();
  2524. sre.Data.Tables.Add(data);
  2525. return sre;
  2526. }
  2527. catch (Exception ex)
  2528. {
  2529. throw ex;
  2530. }
  2531. finally
  2532. {
  2533. if (conn != null &&
  2534. conn.ConnState == ConnectionState.Open)
  2535. {
  2536. conn.Close();
  2537. }
  2538. }
  2539. }
  2540. /// <summary>
  2541. /// 获取RPT040101_1画面(注浆交坯比率分析表)的查询sql
  2542. /// </summary>
  2543. /// <returns>sql</returns>
  2544. private static string GetRPT040101SSQL()
  2545. {
  2546. string selSql =
  2547. "select " +
  2548. "UserCode, " +
  2549. "Groutinglinename, " +
  2550. "GoodsTypeName, " +
  2551. "GoodsCode, " +
  2552. "Goodsspecification, " +
  2553. "DICTIONARYVALUE, " +
  2554. "MouldQuantity, " +
  2555. "注浆量, " +
  2556. "交坯量, " +
  2557. "交坯率 " +
  2558. "from " +
  2559. "( " +
  2560. " select " +
  2561. " decode(grouping(UserCode),1,'合计', UserCode) UserCode, " +
  2562. " decode(grouping(UserCode),1,'--', Groutinglinecode) Groutinglinename, " +
  2563. " decode(grouping(UserCode),1,'--', GoodsTypeName) GoodsTypeName, " +
  2564. " decode(grouping(UserCode),1,'--', GoodsCode) GoodsCode, " +
  2565. " decode(grouping(UserCode),1,'--', Goodsspecification) Goodsspecification, " +
  2566. " decode(grouping(UserCode),1,'--', DICTIONARYVALUE) DICTIONARYVALUE, " +
  2567. " decode(grouping(UserCode),1,sum(MouldQuantity), MouldQuantity) MouldQuantity, " +
  2568. " decode(grouping(UserCode),1,sum(注浆量), 注浆量) 注浆量, " +
  2569. " decode(grouping(UserCode),1,sum(交坯量), 交坯量) 交坯量, " +
  2570. " decode(grouping(UserCode),1,TO_CHAR((sum(交坯量)/sum(注浆量))*100,'9,999.99')||'%', TO_CHAR((交坯量/注浆量)*100,'9,999.99')||'%' ) 交坯率 " +
  2571. " from " +
  2572. " ( " +
  2573. " select " +
  2574. " UserCode, " +
  2575. " Groutinglinecode, " +
  2576. " GoodsTypeName, " +
  2577. " GoodsCode, " +
  2578. " Goodsspecification, " +
  2579. " DICTIONARYVALUE, " +
  2580. " MouldQuantity, " +
  2581. " 注浆量, " +
  2582. " ( " +
  2583. " select count(TP_PM_ProductionData.Productiondataid) " +
  2584. " from TP_PM_ProductionData " +
  2585. " where " +
  2586. " TP_PM_ProductionData.Accountid=:AccountID and TP_PM_ProductionData.ModelType=5 " +
  2587. " and TP_PM_ProductionData.Usercode=temp.UserCode " +
  2588. " and TP_PM_ProductionData.GROUTINGLINEID=temp.Groutinglineid " +
  2589. //--交坯比率应该是统计的某一时间段注浆的产品,其所交坯的数量,
  2590. //所以交坯的的产品应属于这段期间注浆的产品---袁新成2015-4-16改 --
  2591. //" and TP_PM_ProductionData.Barcode in (select barcode from TP_PM_GroutingDailyDetail where " +
  2592. //" TP_PM_GroutingDailyDetail.Valueflag=1 " +
  2593. //" and TP_PM_GroutingDailyDetail.GroutingFlag=1 " +
  2594. //" AND TP_PM_GroutingDailyDetail.AccountID=:AccountID " +
  2595. //" AND TP_PM_GroutingDailyDetail.GroutingDate >= :groutingDateStart " +
  2596. //" AND TP_PM_GroutingDailyDetail.GroutingDate <= :groutingDateEnd )" +
  2597. //交坯的其实日期应该还是与注浆的开始日期相同,只是结束日期推后 dateDifferentce天 ---袁新成2015-4-16改--
  2598. //" and TP_PM_ProductionData.AccountDate >= :groutingDateStart " +
  2599. " and TP_PM_ProductionData.AccountDate >= :groutingDateStart+:dateDifference " +
  2600. " and TP_PM_ProductionData.AccountDate >= :groutingDateStart " +
  2601. " and TP_PM_ProductionData.AccountDate <= :groutingDateEnd +:dateDifference " +
  2602. " ) as 交坯量 " +
  2603. " from " +
  2604. " ( " +
  2605. " select " +
  2606. " TP_PM_GroutingDailyDetail.UserCode as UserCode, " +
  2607. " TP_PM_GroutingDailyDetail.Groutinglineid, " +
  2608. " line.GroutinglineCode, " +
  2609. " TP_MST_GOODSTYPE.GoodsTypeName, " +
  2610. " TP_PM_GroutingDailyDetail.GoodsCode, " +
  2611. " TP_MST_Goods.Goodsspecification, " +
  2612. " TP_MST_DataDictionary.DICTIONARYVALUE, " +
  2613. " line.MouldQuantity, " +
  2614. " count(TP_PM_GroutingDailyDetail.GroutingCount) as 注浆量 " +
  2615. " from " +
  2616. " TP_PM_GroutingDailyDetail " +
  2617. " inner join TP_MST_Goods on TP_MST_Goods.Goodsid= TP_PM_GroutingDailyDetail.Goodsid " +
  2618. " inner join TP_MST_GOODSTYPE on TP_MST_GOODSTYPE.GOODSTYPEID = TP_MST_Goods.Goodstypeid " +
  2619. " inner join TP_MST_DataDictionary on TP_MST_DataDictionary.Dictionaryid=TP_MST_Goods.GLAZETYPEID " +
  2620. " inner join TP_PM_GroutingDaily on TP_PM_GroutingDailyDetail.Groutingdailyid=TP_PM_GroutingDaily.Groutingdailyid " +
  2621. " inner join TP_PC_GroutingLine line on line.Groutinglineid = TP_PM_GroutingDailyDetail.Groutinglineid " +
  2622. " where " +
  2623. " TP_PM_GroutingDailyDetail.Valueflag=1 " +
  2624. " and TP_PM_GroutingDailyDetail.GroutingFlag=1 " +
  2625. " AND TP_PM_GroutingDailyDetail.AccountID=:AccountID " +
  2626. " AND TP_PM_GroutingDailyDetail.GroutingDate >= :groutingDateStart " +
  2627. " AND TP_PM_GroutingDailyDetail.GroutingDate <= :groutingDateEnd ";
  2628. return selSql;
  2629. }
  2630. /// <summary>
  2631. /// 取得RPT040102_1画面(工序产量分析表)的查询数据
  2632. /// </summary>
  2633. /// <param name="user">登录用户信息</param>
  2634. /// <param name="se">查询条件</param>
  2635. /// <returns>查询结果</returns>
  2636. public static ServiceResultEntity GetRPT040102SData(SUserInfo user, RPT040102_SE se)
  2637. {
  2638. IDBConnection conn = null;
  2639. try
  2640. {
  2641. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2642. //OracleParameter[] paras = new OracleParameter[]{
  2643. // new OracleParameter("in_goodsTypeIds",OracleDbType.Varchar2,se.GoodsTypeIDS,ParameterDirection.Input),
  2644. // new OracleParameter("in_goodsIds",OracleDbType.Varchar2,se.GoodsIDS,ParameterDirection.Input),
  2645. // new OracleParameter("in_productionLineId",OracleDbType.Int32,se.ProductionLineID,ParameterDirection.Input),
  2646. // new OracleParameter("in_accountDateStart",OracleDbType.Varchar2,se.AccountDateStart,ParameterDirection.Input),
  2647. // new OracleParameter("in_accountDateEnd",OracleDbType.Varchar2,se.AccountDateEnd,ParameterDirection.Input),
  2648. // new OracleParameter("in_accountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  2649. // new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  2650. //};
  2651. /*
  2652. OracleParameter[] paras = new OracleParameter[]{
  2653. new OracleParameter("in_productionLineId",OracleDbType.Int32,se.ProductionLineID,ParameterDirection.Input),
  2654. new OracleParameter("in_procedureids",OracleDbType.Varchar2,se.ProcedureIDs,ParameterDirection.Input),
  2655. new OracleParameter("in_goodsTypeIds",OracleDbType.Varchar2,se.GoodsTypeIDS,ParameterDirection.Input),
  2656. new OracleParameter("in_goodsIds",OracleDbType.Varchar2,se.GoodsIDS,ParameterDirection.Input),
  2657. new OracleParameter("in_accountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  2658. new OracleParameter("in_accountDateStart",OracleDbType.Date,se.AccountDateStart,ParameterDirection.Input),
  2659. new OracleParameter("in_accountDateEnd",OracleDbType.Date,se.AccountDateEnd,ParameterDirection.Input),
  2660. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  2661. };
  2662. //DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetLineProcessTotal", paras);
  2663. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetLineProcessTotalNew", paras);
  2664. ServiceResultEntity sre = new ServiceResultEntity();
  2665. if (data == null || data.Tables.Count == 0)
  2666. {
  2667. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2668. return sre;
  2669. }
  2670. sre.Data = new DataSet();
  2671. sre.Data = data;
  2672. return sre;
  2673. */
  2674. ServiceResultEntity sre = new ServiceResultEntity();
  2675. List<OracleParameter> parameters = new List<OracleParameter>();
  2676. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2677. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  2678. string sqlString =
  2679. "select p.procedureid, p.procedurecode, p.procedurename\n" +
  2680. " from tp_pc_procedure p\n" +
  2681. " where p.valueflag = '1'\n" +
  2682. " and p.AccountID = :AccountID" +
  2683. " and p.productionlineid = :productionlineid\n";
  2684. if (!string.IsNullOrWhiteSpace(se.ProcedureIDs))
  2685. {
  2686. sqlString += " and instr(',' || :procedureids || ',', ',' || p.procedureid || ',') > 0\n";
  2687. parameters.Add(new OracleParameter(":procedureids", OracleDbType.NVarchar2, se.ProcedureIDs, ParameterDirection.Input));
  2688. }
  2689. sqlString += "order by p.Displayno";
  2690. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2691. if (data == null || data.Rows.Count == 0)
  2692. {
  2693. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2694. return sre;
  2695. }
  2696. parameters.Clear();
  2697. StringBuilder sql1 = new StringBuilder();
  2698. StringBuilder sql2 = new StringBuilder();
  2699. StringBuilder sql3 = new StringBuilder();
  2700. foreach (DataRow item in data.Rows)
  2701. {
  2702. //sql1.Append(", decode(pd.procedureid, " + item["procedureid"] + ", 1, 0) as A" + item["procedurecode"] + "\n");
  2703. //sql2.Append(", sum(pdata.A" + item["procedurecode"] + ") as A" + item["procedurecode"] + "\n");
  2704. //sql3.Append(", pdg.A" + item["procedurecode"] + " as \"" + item["procedurename"] + "\" \n");
  2705. sql1.Append(", sum(decode(pd.procedureid, " + item["procedureid"] + ", 1, 0)) as A" + item["procedurecode"] + "\n");
  2706. sql2.Append(", sum(pdata.A" + item["procedurecode"] + ") as A" + item["procedurecode"] + "\n");
  2707. sql3.Append(", pdg.A" + item["procedurecode"] + " as \"" + item["procedurename"] + "\" \n");
  2708. }
  2709. sqlString =
  2710. "select --pdg.gid,\n" +
  2711. " decode(pdg.gid, 1, '小计', 3, '合计', 0, pdg.goodstypename2, '--') \"产品二级类别\",\n" +
  2712. " decode(pdg.gid, 0, pdg.goodstypename, '--') \"产品类别\",\n" +
  2713. " decode(pdg.gid, 0, pdg.goodscode, '--') \"产品编码\",\n" +
  2714. " decode(pdg.gid, 0, pdg.goodsspecification, '--') \"产品规格\",\n" +
  2715. " --decode(pdg.gid, 0, pdg.GOODSMODEL, '--') \"产品型号\",\n" +
  2716. " decode(pdg.gid, 0, pdg.GLAZETYPE, '--') \"釉料类别\"\n" +
  2717. sql3 +
  2718. " from ( select " +
  2719. " grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid," +
  2720. " pdata.productionlineid,\n" +
  2721. " pdata.goodstypename2,\n" +
  2722. " pdata.goodstypename,\n" +
  2723. " pdata.goodscode,\n" +
  2724. " pdata.goodsspecification,\n" +
  2725. " pdata.GOODSMODEL,\n" +
  2726. " pdata.GLAZETYPE\n" +
  2727. sql2 +
  2728. " from (" +
  2729. " select\n" +
  2730. " pd.productionlineid,\n" +
  2731. " gt2.goodstypename goodstypename2,\n" +
  2732. " gt.goodstypename,\n" +
  2733. " g.goodscode,\n" +
  2734. " g.goodsspecification,\n" +
  2735. " g.GOODSMODEL,\n" +
  2736. " dd.dictionaryvalue GLAZETYPE\n" +
  2737. sql1 +
  2738. " from tp_pm_productiondata pd\n" +
  2739. " inner join tp_mst_goods g\n" +
  2740. " on g.goodsid = pd.goodsid\n" +
  2741. " inner join tp_mst_goodstype gt\n" +
  2742. " on gt.goodstypeid = g.goodstypeid\n" +
  2743. " inner join tp_mst_goodstype gt2\n" +
  2744. " on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)\n" +
  2745. " and gt2.accountid = gt.accountid\n" +
  2746. " inner join tp_mst_datadictionary dd\n" +
  2747. " on dd.dictionaryid = g.GLAZETYPEID\n" +
  2748. " where pd.accountid = :accountid\n" +
  2749. // 公坯、干补不算交坯工序的产量。
  2750. //" and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
  2751. // modify wangx 2015-12-3
  2752. (se.ProductionFlag == "1" ? " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  2753. // " and pd.accountid = :accountid\n" +
  2754. " and pd.productionlineid = :productionlineid\n" +
  2755. " and pd.createtime >= :createtimeStart\n" +
  2756. " and pd.createtime < :createtimeEnd\n" +
  2757. " AND((pd.procedureid = 11 AND pd.valueflag = '1' AND(pd.checkflag = '1' OR pd.checkflag IS NULL)) OR \n" +
  2758. " (pd.procedureid = 104 AND pd.checkflag = '1') OR (pd.procedureid NOT IN(11,104) AND pd.valueflag = '1'))";
  2759. StringBuilder sql = new StringBuilder(sqlString);
  2760. if (!string.IsNullOrWhiteSpace(se.GoodsIDS))
  2761. {
  2762. sql.Append(" and instr(',' || :goodsIds || ',', ',' || pd.goodsid || ',') > 0\n");
  2763. parameters.Add(new OracleParameter(":goodsIds", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  2764. }
  2765. if (!string.IsNullOrWhiteSpace(se.GoodsTypeIDS))
  2766. {
  2767. //sql.Append(" and instr(',' || :goodsTypeIds || ',', ',' || gt.goodstypecode || ',') =1\n");
  2768. sql.Append(" and instr(gt.goodstypecode,:goodsTypeIds) =1\n");
  2769. parameters.Add(new OracleParameter(":goodsTypeIds", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  2770. }
  2771. if (!string.IsNullOrWhiteSpace(se.ProcedureIDs))
  2772. {
  2773. sql.Append(" and instr(',' || :procedureids || ',', ',' || pd.procedureid || ',') > 0\n");
  2774. parameters.Add(new OracleParameter(":procedureids", OracleDbType.NVarchar2, se.ProcedureIDs, ParameterDirection.Input));
  2775. }
  2776. if (!string.IsNullOrWhiteSpace(se.TestRefireFlag))
  2777. {
  2778. sql.Append(" and(:testRefireFlag is null or ( :testRefireFlag = '1' and pd.isrefire = '0')or( :testRefireFlag = '0' and pd.isrefire = '6')) \n");
  2779. parameters.Add(new OracleParameter(":testRefireFlag", OracleDbType.Varchar2, se.TestRefireFlag, ParameterDirection.Input));
  2780. }
  2781. sql.Append(" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId))");
  2782. parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  2783. sqlString =
  2784. " group by \n" +
  2785. " pd.productionlineid,\n" +
  2786. " gt2.goodstypename,\n" +
  2787. " gt.goodstypename,\n" +
  2788. " g.goodscode,\n" +
  2789. " g.goodsspecification,\n" +
  2790. " g.GOODSMODEL,\n" +
  2791. " dd.dictionaryvalue\n" +
  2792. " order by gt2.goodstypename, g.goodscode" +
  2793. " ) pdata\n" +
  2794. " group by grouping sets((pdata.productionlineid,\n" +
  2795. " pdata.goodstypename2,\n" +
  2796. " pdata.goodstypename,\n" +
  2797. " pdata.goodsspecification,\n" +
  2798. " pdata.GOODSMODEL,\n" +
  2799. " pdata.GLAZETYPE,\n" +
  2800. " pdata.goodscode),\n" +
  2801. " (pdata.productionlineid,pdata.goodstypename2),\n" +
  2802. " pdata.productionlineid)\n" +
  2803. " ) pdg";
  2804. sql.Append(sqlString);
  2805. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2806. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  2807. parameters.Add(new OracleParameter(":createtimeStart", OracleDbType.Date, se.AccountDateStart, ParameterDirection.Input));
  2808. parameters.Add(new OracleParameter(":createtimeEnd", OracleDbType.Date, se.AccountDateEnd, ParameterDirection.Input));
  2809. DataTable data1 = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  2810. if (data1 == null || data1.Rows.Count == 0)
  2811. {
  2812. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2813. return sre;
  2814. }
  2815. sre.Data = new DataSet();
  2816. sre.Data.Tables.Add(data1);
  2817. return sre;
  2818. }
  2819. catch (Exception ex)
  2820. {
  2821. throw ex;
  2822. }
  2823. finally
  2824. {
  2825. if (conn != null &&
  2826. conn.ConnState == ConnectionState.Open)
  2827. {
  2828. conn.Close();
  2829. }
  2830. }
  2831. }
  2832. /// <summary>
  2833. /// 取得RPT040103画面(工序质量分析表)的查询数据
  2834. /// </summary>
  2835. /// <param name="user">登录用户信息</param>
  2836. /// <param name="se">查询条件</param>
  2837. /// <returns>查询结果</returns>
  2838. public static ServiceResultEntity GetRPT040103SData(SUserInfo user, RPT040103_SE se)
  2839. {
  2840. IDBConnection conn = null;
  2841. try
  2842. {
  2843. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2844. List<OracleParameter> parameters = new List<OracleParameter>();
  2845. //string sql = ReportModuleLogic.GetRPT040103SSQL(user, se, ref parameters);
  2846. string sql = ReportModuleLogic.GetRPT040103S1SQL(user, se, ref parameters);
  2847. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  2848. ServiceResultEntity sre = new ServiceResultEntity();
  2849. if (data == null || data.Rows.Count == 0)
  2850. {
  2851. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2852. return sre;
  2853. }
  2854. sre.Data = new DataSet();
  2855. sre.Data.Tables.Add(data);
  2856. return sre;
  2857. }
  2858. catch (Exception ex)
  2859. {
  2860. throw ex;
  2861. }
  2862. finally
  2863. {
  2864. if (conn != null &&
  2865. conn.ConnState == ConnectionState.Open)
  2866. {
  2867. conn.Close();
  2868. }
  2869. }
  2870. }
  2871. /// <summary>
  2872. /// 获取RPT040103画面(工序质量分析表)的查询sql
  2873. /// </summary>
  2874. /// <returns>sql</returns>
  2875. private static string GetRPT040103SSQL(SUserInfo user, RPT040103_SE se, ref List<OracleParameter> parameters)
  2876. {
  2877. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2878. parameters.Add(new OracleParameter(":in_rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  2879. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  2880. // 2015-06-16 modify by chenxy
  2881. string sqlString = "\n" +
  2882. "select qdgroup.gid,\n" +
  2883. " decode(qdgroup.gid, 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  2884. " decode(qdgroup.gid, 15, '总计', 0, qdgroup.procedurename, '--') procedurename,\n" +
  2885. " decode(qdgroup.gid, 7, '合计', 0, qdgroup.kilncode, '--') kilncode,\n" +
  2886. " decode(qdgroup.gid, 3, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  2887. " decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\n" +
  2888. " decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
  2889. " decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode,\n" +
  2890. " qdgroup.OutKilnCount,\n" +
  2891. " qdgroup.GoodCount,\n" +
  2892. " to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent,\n" +
  2893. " qdgroup.SubstandardCount,\n" +
  2894. " to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  2895. " '990.00') || '%' SubstandardPercent,\n" +
  2896. " qdgroup.GoodCount+qdgroup.BadCount Qualified,\n" +
  2897. " to_char(((qdgroup.GoodCount+qdgroup.BadCount) / qdgroup.OutKilnCount) * 100,\n" +
  2898. " '990.00') || '%' QualifiedPercent,\n" +
  2899. " qdgroup.BadCount,\n" +
  2900. " to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  2901. " qdgroup.ReFireCount,\n" +
  2902. " to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  2903. " '990.00') || '%' ReFirePercent\n" +
  2904. " from (select grouping_id(pcpl.productionlinename,\n" +
  2905. " pcp.procedurename,\n" +
  2906. " mstkiln.kilncode,\n" +
  2907. " mstgoodstype2.goodstypename,\n" +
  2908. " qd.usercode,\n" +
  2909. " --mstgoodstype.goodstypename,\n" +
  2910. " mstgoods.goodscode) gid,\n" +
  2911. " pcpl.productionlinename,\n" +
  2912. " pcp.procedurename,\n" +
  2913. " --qd.kilnid,\n" +
  2914. " mstkiln.kilncode,\n" +
  2915. " mstgoodstype2.goodstypename goodstypename2,\n" +
  2916. " qd.usercode,\n" +
  2917. " mstgoodstype.goodstypename,\n" +
  2918. " mstgoods.goodscode,\n" +
  2919. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  2920. " sum(qd.GoodCount) GoodCount,\n" +
  2921. " sum(qd.SubstandardCount) SubstandardCount,\n" +
  2922. " sum(qd.BadCount) BadCount,\n" +
  2923. " sum(qd.ReFireCount) ReFireCount\n" +
  2924. " from (select --pdbc.barcode,\n" +
  2925. " pdbc.productionlineid,\n" +
  2926. " pdata.procedureid,\n" +
  2927. " pdata.usercode,\n" +
  2928. " pdbc.goodsid,\n" +
  2929. " pdbc.kilnid,\n" +
  2930. " --pdbc.kilncarid,\n" +
  2931. " --pdbc.kilncarbatchno,\n" +
  2932. " 1 OutKilnCount,\n" +
  2933. " case\n" +
  2934. " when defect.defectprocedureid is not null and glt.goodsleveltypeid in (5, 6, 7) then\n" +
  2935. " 0\n" +
  2936. " else\n" +
  2937. " 1\n" +
  2938. " end GoodCount,\n" +
  2939. " case\n" +
  2940. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 7 then\n" +
  2941. " 1\n" +
  2942. " else\n" +
  2943. " 0\n" +
  2944. " end SubstandardCount,\n" +
  2945. " case\n" +
  2946. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 6 then\n" +
  2947. " 1\n" +
  2948. " else\n" +
  2949. " 0\n" +
  2950. " end ReFireCount,\n" +
  2951. " case\n" +
  2952. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 5 then\n" +
  2953. " 1\n" +
  2954. " else\n" +
  2955. " 0\n" +
  2956. " end BadCount\n" +
  2957. " from (select distinct pd.barcode,\n" +
  2958. " pd.productionlineid,\n" +
  2959. " pd.goodsid,\n" +
  2960. " pd.kilnid,\n" +
  2961. " --pd.kilncarid,\n" +
  2962. " pd.kilncarbatchno\n" +
  2963. " from tp_pm_productiondata pd\n" +
  2964. // 恒洁三车间特殊处理(质量相关)
  2965. //" where pd.valueflag = '1'\n" +
  2966. //" and pd.procedureid = :in_rptSprocedureId \n" +
  2967. //" and pd.AccountID = :AccountID\n ";
  2968. " where pd.accountid = :AccountID\n" +
  2969. " AND ((:in_rptSprocedureId = 11 AND ((pd.procedureid = 11 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '0' AND pd.checkflag = '1'))) \n" +
  2970. " OR (:in_rptSprocedureId = 58 AND ((pd.procedureid = 58 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '6' AND pd.checkflag = '1'))) \n" +
  2971. " OR (:in_rptSprocedureId not in (11,58) AND pd.valueflag = '1' AND pd.procedureid = :in_rptSprocedureId))\n";
  2972. // end
  2973. StringBuilder selSql = new StringBuilder(sqlString);
  2974. if (se.CreateTimeStart.HasValue)
  2975. {
  2976. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  2977. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  2978. }
  2979. if (se.CreateTimeEnd.HasValue)
  2980. {
  2981. selSql.Append(" AND pd.createtime <= :CreateTimeEnd\n");
  2982. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  2983. }
  2984. if (!string.IsNullOrEmpty(se.GoodsIDS))
  2985. {
  2986. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  2987. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  2988. }
  2989. if (se.ProductionLineID.HasValue)
  2990. {
  2991. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  2992. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  2993. }
  2994. //selSql.Append(" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId))");
  2995. //parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  2996. if (se.KilnID.HasValue)
  2997. {
  2998. selSql.Append(" AND pd.KilnID = :KilnID\n");
  2999. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3000. }
  3001. sqlString =
  3002. " ) pdbc\n" + // 成检交接工序
  3003. " inner join (select distinct pd.barcode,\n" +
  3004. " pd.userid,\n" +
  3005. " pd.usercode,\n" +
  3006. " pd.procedureid\n" +
  3007. " from tp_pm_productiondata pd\n" +
  3008. " where pd.valueflag = '1'\n" +
  3009. " and pd.AccountID = :AccountID\n" +
  3010. // 公坯、干补不算交坯工序的质量。
  3011. //" and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
  3012. // 干补不算交坯工序的质量。
  3013. " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" +
  3014. " and exists\n" +
  3015. " (select 1\n" +
  3016. " from tp_mst_rpttprocedure rptt\n" +
  3017. " where rptt.RPTPROCEDUREID = :in_rptProcedureId\n";
  3018. selSql.Append(sqlString);
  3019. if (!string.IsNullOrEmpty(se.RptTProcedureIDS))
  3020. {
  3021. selSql.Append(" AND instr(','||:rptTprocedureIDS||',', ','||rptt.procedureid||',') > 0\n");
  3022. parameters.Add(new OracleParameter(":rptTprocedureIDS", OracleDbType.NVarchar2, se.RptTProcedureIDS, ParameterDirection.Input));
  3023. }
  3024. //selSql.Append(" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=pd.procedureid))");
  3025. selSql.Append(" and rptt.procedureid = pd.procedureid)\n");
  3026. if (!string.IsNullOrEmpty(se.UserIDS))
  3027. {
  3028. selSql.Append(" and instr(','||:userIDS||',', ','||pd.Userid||',') > 0\n");
  3029. parameters.Add(new OracleParameter(":userIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  3030. }
  3031. sqlString =
  3032. " ) pdata\n" + // 生产工序
  3033. " on pdata.barcode = pdbc.barcode\n" +
  3034. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid, kcbc.productiondataid\n" +
  3035. " from (select pd.barcode,\n" +
  3036. " pd.kilncarbatchno,\n" +
  3037. " pd.goodsleveltypeid,\n" +
  3038. " pd.productiondataid,\n" +
  3039. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  3040. " from tp_pm_productiondata pd\n" +
  3041. " where pd.valueflag = '1'\n" +
  3042. " and pd.AccountID = :AccountID\n" +
  3043. " and length(pd.kilncarbatchno) > 0\n" +
  3044. " AND pd.createtime >= :CreateTimeStart\n" +
  3045. " and pd.modeltype = -1) kcbc\n" +
  3046. " where kcbc.dataid = 1) glt\n" +
  3047. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  3048. " and pdbc.barcode = glt.barcode\n" +
  3049. " left join (select distinct productiondataid, defectprocedureid" +
  3050. " from tp_pm_defect def " +
  3051. " where def.valueflag='1'" +
  3052. " and def.AccountID = :AccountID\n" +
  3053. " AND def.createtime >= :CreateTimeStart) defect\n" +
  3054. " on defect.productiondataid = glt.productiondataid\n" +
  3055. " and pdata.procedureid = defect.defectprocedureid\n" +
  3056. " ) qd\n" +
  3057. " inner join tp_pc_productionline pcpl\n" +
  3058. " on pcpl.productionlineid = qd.productionlineid\n" +
  3059. " inner join tp_pc_procedure pcp\n" +
  3060. " on pcp.procedureid = qd.procedureid\n" +
  3061. " inner join tp_mst_kiln mstkiln\n" +
  3062. " on mstkiln.kilnid = qd.kilnid\n" +
  3063. " inner join tp_mst_goods mstgoods\n" +
  3064. " on mstgoods.goodsid = qd.goodsid\n" +
  3065. " inner join tp_mst_goodstype mstgoodstype\n" +
  3066. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3067. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  3068. " inner join tp_mst_goodstype mstgoodstype2\n" +
  3069. " on mstgoodstype2.goodstypecode =\n" +
  3070. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3071. " and mstgoodstype.accountid = mstgoodstype2.accountid\n" +
  3072. " where 1=1\n";
  3073. selSql.Append(sqlString);
  3074. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  3075. {
  3076. //selSql.Append(" AND instr(','||:GoodsTypeIDS||',', ','||mstgoodstype.GOODSTYPECode||',')=1\n");
  3077. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
  3078. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  3079. }
  3080. sqlString =
  3081. " group by grouping sets((pcpl.productionlinename,\n" +
  3082. " pcp.procedurename,\n" +
  3083. " mstkiln.kilncode,\n" +
  3084. " mstgoodstype2.goodstypename,\n" +
  3085. " qd.usercode,\n" +
  3086. " mstgoodstype.goodstypename,\n" +
  3087. " mstgoods.goodscode),\n" +
  3088. " (pcpl.productionlinename,\n" +
  3089. " pcp.procedurename,\n" +
  3090. " mstkiln.kilncode,\n" +
  3091. " mstgoodstype2.goodstypename),\n" +
  3092. " (pcpl.productionlinename,\n" +
  3093. " pcp.procedurename,\n" +
  3094. " mstkiln.kilncode),\n" +
  3095. " (pcpl.productionlinename, pcp.procedurename))\n" +
  3096. " order by pcpl.productionlinename,\n" +
  3097. " pcp.procedurename,\n" +
  3098. " mstkiln.kilncode,\n" +
  3099. " mstgoodstype2.goodstypename,\n" +
  3100. " qd.usercode,\n" +
  3101. " mstgoodstype.goodstypename,\n" +
  3102. " mstgoods.goodscode\n" +
  3103. " ) qdgroup\n";
  3104. selSql.Append(sqlString);
  3105. return selSql.ToString();
  3106. }
  3107. /// <summary>
  3108. /// 获取RPT040103画面(工序质量分析表-按登记时间)的查询sql
  3109. /// </summary>
  3110. /// <returns>sql</returns>
  3111. private static string GetRPT040103S1SQL(SUserInfo user, RPT040103_SE se, ref List<OracleParameter> parameters)
  3112. {
  3113. parameters.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3114. parameters.Add(new OracleParameter(":in_rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  3115. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  3116. string sqlString = @"select qdgroup.gid
  3117. ,qdgroup.productionlinename
  3118. ,decode(qdgroup.gid
  3119. ,15
  3120. ,'总计[' || qdgroup.procedurename || ']'
  3121. ,qdgroup.procedurename) procedurename
  3122. ,decode(qdgroup.gid
  3123. ,7
  3124. ,'合计[' || qdgroup.kilncode || ']'
  3125. ,15
  3126. ,'--'
  3127. ,qdgroup.kilncode) kilncode
  3128. ,decode(qdgroup.gid
  3129. ,3
  3130. ,'小计[' || qdgroup.goodstypename2 || ']'
  3131. ,15
  3132. ,'--'
  3133. ,7
  3134. ,'--'
  3135. ,qdgroup.goodstypename2) goodstypename2
  3136. ,decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode
  3137. ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename
  3138. ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode
  3139. ,qdgroup.OutKilnCount
  3140. ,qdgroup.GoodCount
  3141. ,decode(qdgroup.OutKilnCount
  3142. ,0
  3143. ,to_number(null)
  3144. ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 4)) GoodPercent
  3145. ,qdgroup.SubstandardCount
  3146. ,decode(qdgroup.OutKilnCount
  3147. ,0
  3148. ,to_number(null)
  3149. ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent
  3150. ,qdgroup.GoodCount + qdgroup.BadCount Qualified
  3151. ,decode(qdgroup.OutKilnCount
  3152. ,0
  3153. ,to_number(null)
  3154. ,round((qdgroup.GoodCount + qdgroup.BadCount) /
  3155. qdgroup.OutKilnCount
  3156. ,4)) QualifiedPercent
  3157. ,qdgroup.BadCount
  3158. ,decode(qdgroup.OutKilnCount
  3159. ,0
  3160. ,to_number(null)
  3161. ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent
  3162. ,qdgroup.ReFireCount
  3163. ,decode(qdgroup.OutKilnCount
  3164. ,0
  3165. ,to_number(null)
  3166. ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent
  3167. ,qdgroup.LengBuCount
  3168. ,decode(qdgroup.OutKilnCount
  3169. ,0
  3170. ,to_number(null)
  3171. ,round(qdgroup.LENGBUCOUNT / qdgroup.OutKilnCount, 4)) LengBuPercent
  3172. from (select grouping_id(pcpl.productionlinename
  3173. ,pcp.procedurename
  3174. ,mstkiln.kilncode
  3175. ,mstgoodstype2.goodstypecode
  3176. ,pdata.usercode
  3177. ,mstgoods.goodscode) gid
  3178. ,pcpl.productionlinename
  3179. ,pcp.procedurename
  3180. ,mstkiln.kilncode
  3181. ,mstgoodstype2.goodstypename goodstypename2
  3182. ,mstgoodstype2.goodstypecode goodstypecode2
  3183. ,pdata.usercode
  3184. ,mstgoodstype.goodstypename
  3185. ,mstgoods.goodscode
  3186. ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount
  3187. , nvl(sum(CASE WHEN ppcc.goodsleveltypeid = 5 ";
  3188. StringBuilder selSql = new StringBuilder(sqlString);
  3189. //回收标识
  3190. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  3191. {
  3192. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3193. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  3194. }
  3195. sqlString =
  3196. " THEN 1 ELSE 0 END), 0) BadCount\n" +
  3197. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid=6 ";
  3198. selSql.Append(sqlString);
  3199. //回收标识
  3200. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  3201. {
  3202. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3203. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  3204. }
  3205. sqlString =
  3206. " THEN 1 ELSE 0 END), 0) ReFireCount\n" +
  3207. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid=7 ";
  3208. selSql.Append(sqlString);
  3209. //回收标识
  3210. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  3211. {
  3212. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3213. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  3214. }
  3215. sqlString =
  3216. " THEN 1 ELSE 0 END), 0) SubstandardCount\n" +
  3217. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid=16 ";
  3218. selSql.Append(sqlString);
  3219. //回收标识
  3220. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  3221. {
  3222. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3223. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  3224. }
  3225. sqlString =
  3226. " THEN 1 ELSE 0 END), 0) LengBuCount\n" +
  3227. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid = 0 THEN 1\n" +
  3228. " WHEN ppcc.goodsleveltypeid = 5";
  3229. selSql.Append(sqlString);
  3230. //回收标识
  3231. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  3232. {
  3233. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3234. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  3235. }
  3236. sqlString =
  3237. " THEN -1\n" +
  3238. " WHEN ppcc.goodsleveltypeid = 6";
  3239. selSql.Append(sqlString);
  3240. //回收标识
  3241. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  3242. {
  3243. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3244. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  3245. }
  3246. sqlString =
  3247. " THEN -1\n" +
  3248. " WHEN ppcc.goodsleveltypeid = 7";
  3249. selSql.Append(sqlString);
  3250. //回收标识
  3251. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  3252. {
  3253. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3254. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  3255. }
  3256. sqlString =
  3257. " THEN -1\n" +
  3258. " WHEN ppcc.goodsleveltypeid = 16";
  3259. selSql.Append(sqlString);
  3260. //回收标识
  3261. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  3262. {
  3263. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3264. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  3265. }
  3266. selSql.Append(sqlString);
  3267. sqlString =
  3268. @" THEN -1 ELSE 0 END),0 ) GoodCount
  3269. from(select distinct 0 goodsleveltypeid-- 出窑数量
  3270. , pd.barcode
  3271. , pd.productionlineid
  3272. , pd.goodsid
  3273. , pd.kilnid
  3274. , pd.kilncarbatchno
  3275. , 0 procedureid
  3276. , gdd.RECYCLINGFLAG
  3277. , 1 cc
  3278. from tp_pm_productiondata pd
  3279. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE = pd.BARCODE
  3280. where pd.accountid = :in_AccountID
  3281. AND((: in_rptSprocedureId = 11 AND((pd.procedureid = 11 AND pd.valueflag = '1') OR(pd.procedureid = 104 AND pd.isrefire = '0' AND pd.checkflag = '1')))
  3282. OR(:in_rptSprocedureId = 58 AND((pd.procedureid = 58 AND pd.valueflag = '1') OR(pd.procedureid = 104 AND pd.isrefire = '6' AND pd.checkflag = '1')))
  3283. OR(:in_rptSprocedureId not in (11, 58) AND pd.valueflag = '1' AND pd.procedureid = :in_rptSprocedureId))
  3284. ";
  3285. selSql.Append(sqlString);
  3286. if (se.RptSProcedureID == 58)
  3287. {
  3288. selSql.Append(" and pd.procedureid IN(11, 104, 58) ");
  3289. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  3290. //selSql.Append(" AND PD.KILNID IN(3,4,6) ");// 现在要用隧道窑重烧产品 2024-07-10
  3291. }
  3292. else
  3293. {
  3294. selSql.Append(" and pd.procedureid IN(11,104) ");
  3295. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  3296. selSql.Append(" AND PD.KILNID IN(1,2,5) ");
  3297. }
  3298. if (se.CreateTimeStart.HasValue)
  3299. {
  3300. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  3301. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3302. }
  3303. if (se.CreateTimeEnd.HasValue)
  3304. {
  3305. selSql.Append(" AND pd.createtime < :CreateTimeEnd\n");
  3306. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3307. }
  3308. if (!string.IsNullOrEmpty(se.GoodsIDS))
  3309. {
  3310. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  3311. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3312. }
  3313. if (se.ProductionLineID.HasValue)
  3314. {
  3315. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  3316. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  3317. }
  3318. if (se.KilnID.HasValue)
  3319. {
  3320. selSql.Append(" AND pd.KilnID = :KilnID\n");
  3321. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3322. }
  3323. //sqlString = @"
  3324. //UNION ALL
  3325. //SELECT T.GOODSLEVELTYPEID,
  3326. // T.BARCODE,
  3327. // T.PRODUCTIONLINEID,
  3328. // T.GOODSID,
  3329. // T.KILNID,
  3330. // T.KILNCARBATCHNO,
  3331. // T.PROCEDUREID,
  3332. // 1 AS CC
  3333. // FROM (SELECT ppd.GOODSLEVELTYPEID,
  3334. // dd.BARCODE,
  3335. // dd.PRODUCTIONLINEID,
  3336. // dd.GOODSID,
  3337. // ppd.KILNID,
  3338. // ppd.KILNCARBATCHNO,
  3339. // dd.defectprocedureid as procedureid,
  3340. // RANK() OVER(PARTITION BY ppd.BARCODE, ppd.KILNID ORDER BY ppd.PRODUCTIONDATAID DESC) AS RK
  3341. // FROM (SELECT PD.BARCODE
  3342. // ,PD.PRODUCTIONDATAID
  3343. // ,PD.GOODSLEVELTYPEID
  3344. // ,PD.KILNID
  3345. // ,PD.KILNCARBATCHNO
  3346. // FROM TP_PM_PRODUCTIONDATA PD
  3347. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  3348. // ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  3349. // WHERE PD.VALUEFLAG = '1'
  3350. // AND PD.MODELTYPE IN (-1, -4, -5)
  3351. // AND PD.ACCOUNTID = :in_AccountID
  3352. // AND LENGTH(PD.KILNCARBATCHNO) > 0 ";
  3353. //AND ((:in_rptSprocedureId IS NULL)
  3354. // OR (:in_rptSprocedureId = 11 AND (GDD.Twoleveltime IS NULL OR pd.createtime < GDD.Twoleveltime))
  3355. // OR (:in_rptSprocedureId = 58 AND GDD.Twoleveltime IS NOT NULL AND pd.createtime >= GDD.Twoleveltime)) ";
  3356. sqlString =
  3357. " union all\n" +
  3358. " select distinct ppd.goodsleveltypeid\n" +
  3359. " ,dd.barcode\n" +
  3360. " ,dd.productionlineid\n" +
  3361. " ,dd.goodsid\n" +
  3362. " ,ppd.kilnid\n" +
  3363. " ,ppd.kilncarbatchno\n" +
  3364. " ,dd.defectprocedureid procedureid\n" +
  3365. " ,ppd.RECYCLINGFLAG\n" +
  3366. " ,1 cc\n" +
  3367. " from (select pd.productiondataid\n" +
  3368. " ,pd.goodsleveltypeid\n" +
  3369. " ,pd.kilnid\n" +
  3370. " ,pd.kilncarbatchno\n" +
  3371. " ,gdd.RECYCLINGFLAG\n" +
  3372. " from tp_pm_productiondata pd\n" +
  3373. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE=pd.BARCODE " +
  3374. " where pd.valueflag = '1'\n" +
  3375. " and pd.AccountID = :in_AccountID\n" +
  3376. " and length(pd.kilncarbatchno) > 0\n" +
  3377. " and pd.modeltype IN (-1, -4, -5)\n" +
  3378. " and pd.CHECKBATCHNO = 1\n";
  3379. selSql.Append(sqlString);
  3380. if (se.RptSProcedureID == 58)
  3381. {
  3382. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  3383. //selSql.Append(" AND PD.KILNID IN(3, 4, 6) ");// 现在要用隧道窑重烧产品 2024-07-10
  3384. }
  3385. else
  3386. {
  3387. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  3388. selSql.Append(" AND PD.KILNID IN(1, 2, 5) ");
  3389. }
  3390. if (se.CreateTimeStart.HasValue)
  3391. {
  3392. //selSql.Append(" AND pd.checktime >= :checktimeStart\n");
  3393. selSql.Append(" AND pd.createtime >= :checktimeStart\n");
  3394. parameters.Add(new OracleParameter(":checktimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3395. }
  3396. if (se.CreateTimeEnd.HasValue)
  3397. {
  3398. //selSql.Append(" AND pd.checktime < :checktimeEnd\n");
  3399. selSql.Append(" AND pd.createtime < :checktimeEnd\n");
  3400. parameters.Add(new OracleParameter(":checktimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3401. }
  3402. if (!string.IsNullOrEmpty(se.GoodsIDS))
  3403. {
  3404. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  3405. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3406. }
  3407. if (se.ProductionLineID.HasValue)
  3408. {
  3409. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  3410. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  3411. }
  3412. if (se.KilnID.HasValue)
  3413. {
  3414. selSql.Append(" AND pd.KilnID = :KilnID\n");
  3415. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3416. }
  3417. sqlString =
  3418. " ) ppd\n" +
  3419. " inner join tp_pm_defect dd\n" +
  3420. " on dd.productiondataid = ppd.productiondataid\n";
  3421. //" --and dd.checktime >= in_DateBegin\n" +
  3422. //" --and dd.checktime <= in_DateEnd\n" +
  3423. sqlString += " ) ppcc\n" +
  3424. " inner join tp_pm_productiondata pdata\n" +
  3425. " on pdata.barcode = ppcc.barcode\n" +
  3426. // 干补不算交坯工序的质量。
  3427. " and ((pdata.modeltype <> 5) or (pdata.modeltype = 5 and pdata.SpecialRepairFlag = '0')) \n" +
  3428. " and exists\n" +
  3429. " (select 1\n" +
  3430. " from tp_mst_rpttprocedure rptt\n" +
  3431. " where rptt.RPTPROCEDUREID = :in_rptProcedureId \n";
  3432. selSql.Append(sqlString);
  3433. if (!string.IsNullOrEmpty(se.RptTProcedureIDS))
  3434. {
  3435. selSql.Append(" AND instr(','||:rptTprocedureIDS||',', ','||rptt.procedureid||',') > 0\n");
  3436. parameters.Add(new OracleParameter(":rptTprocedureIDS", OracleDbType.NVarchar2, se.RptTProcedureIDS, ParameterDirection.Input));
  3437. }
  3438. sqlString =
  3439. " and rptt.procedureid = pdata.procedureid)\n" +
  3440. " and (ppcc.procedureid = 0 or ppcc.procedureid = pdata.procedureid)\n";
  3441. selSql.Append(sqlString);
  3442. if (!string.IsNullOrEmpty(se.UserIDS))
  3443. {
  3444. selSql.Append(" and instr(','||:userIDS||',', ','||pdata.Userid||',') > 0\n");
  3445. parameters.Add(new OracleParameter(":userIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  3446. }
  3447. sqlString =
  3448. " inner join tp_pc_productionline pcpl\n" +
  3449. " on pcpl.productionlineid = pdata.productionlineid\n" +
  3450. " inner join tp_pc_procedure pcp\n" +
  3451. " on pcp.procedureid = pdata.procedureid\n" +
  3452. " inner join tp_mst_kiln mstkiln\n" +
  3453. " on mstkiln.kilnid = ppcc.kilnid\n" +
  3454. " inner join tp_mst_goods mstgoods\n" +
  3455. " on mstgoods.goodsid = pdata.goodsid\n" +
  3456. " inner join tp_mst_goodstype mstgoodstype\n" +
  3457. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3458. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  3459. " inner join tp_mst_goodstype mstgoodstype2\n" +
  3460. " on mstgoodstype2.goodstypecode =\n" +
  3461. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3462. " and mstgoodstype.accountid = mstgoodstype2.accountid\n";
  3463. // 产品类别
  3464. selSql.Append(sqlString);
  3465. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  3466. {
  3467. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
  3468. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  3469. }
  3470. sqlString =
  3471. " group by grouping sets((pcpl.productionlinename, pcp.displayno, pcp.procedurename, mstkiln.kilncode, mstgoodstype2.goodstypecode, mstgoodstype2.goodstypename, pdata.usercode, mstgoodstype.goodstypecode, mstgoodstype.goodstypename, mstgoods.goodscode),(pcpl.productionlinename, pcp.displayno, pcp.procedurename, mstkiln.kilncode, mstgoodstype2.goodstypecode, mstgoodstype2.goodstypename),(pcpl.productionlinename, pcp.displayno, pcp.procedurename, mstkiln.kilncode),(pcpl.productionlinename, pcp.displayno, pcp.procedurename))\n" +
  3472. " order by pcpl.productionlinename\n" +
  3473. " ,pcp.displayno\n" +
  3474. " ,pcp.procedurename\n" +
  3475. " ,mstkiln.kilncode\n" +
  3476. " ,mstgoodstype2.goodstypecode\n" +
  3477. " ,pdata.usercode\n" +
  3478. " ,mstgoodstype.goodstypecode\n" +
  3479. " ,mstgoods.goodscode) qdgroup";
  3480. selSql.Append(sqlString);
  3481. return selSql.ToString();
  3482. }
  3483. /// <summary>
  3484. /// 取得RPT040104画面(产成品质量分析表)的查询数据
  3485. /// </summary>
  3486. /// <param name="user">登录用户信息</param>
  3487. /// <param name="se">查询条件</param>
  3488. /// <returns>查询结果</returns>
  3489. public static ServiceResultEntity GetRPT040104SData(SUserInfo user, RPT040104_SE se)
  3490. {
  3491. IDBConnection conn = null;
  3492. try
  3493. {
  3494. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3495. string sq = null;
  3496. DataTable data = new DataTable();
  3497. List<OracleParameter> parameters = new List<OracleParameter>();
  3498. #region 注销
  3499. //if (se.GroutingLineLh != "")
  3500. //{
  3501. // if (se.GroutingLineLc != "")
  3502. // {
  3503. // if (se.GroutingLineMh != "")
  3504. // {
  3505. // if (se.GroutingLineXh != "")
  3506. // {
  3507. // string[] arrStrlh = se.GroutingLineLh.ToString().Split(',');
  3508. // string[] arrStrlc = se.GroutingLineLc.ToString().Split(',');
  3509. // string[] arrStrmh = se.GroutingLineMh.ToString().Split(',');
  3510. // string[] arrStrxh = se.GroutingLineXh.ToString().Split(',');
  3511. // foreach (string lc in arrStrlc)
  3512. // {
  3513. // string newlc = null;
  3514. // if (lc.Length == 1)
  3515. // {
  3516. // newlc = "0" + lc;
  3517. // }
  3518. // else
  3519. // {
  3520. // newlc = lc;
  3521. // }
  3522. // foreach (string lh in arrStrlh)
  3523. // {
  3524. // foreach (string mh in arrStrmh)
  3525. // {
  3526. // foreach (string xh in arrStrxh)
  3527. // {
  3528. // sq += lh + newlc + mh + xh + ",";
  3529. // }
  3530. // }
  3531. // }
  3532. // }
  3533. // }
  3534. // else
  3535. // {
  3536. // string[] arrStrlc = se.GroutingLineLc.ToString().Split(',');
  3537. // string[] arrStrlh = se.GroutingLineLh.ToString().Split(',');
  3538. // string[] arrStrmh = se.GroutingLineMh.ToString().Split(',');
  3539. // foreach (string lc in arrStrlc)
  3540. // {
  3541. // string newlc = null;
  3542. // if (lc.Length == 1)
  3543. // {
  3544. // newlc = "0" + lc;
  3545. // }
  3546. // else
  3547. // {
  3548. // newlc = lc;
  3549. // }
  3550. // foreach (string lh in arrStrlh)
  3551. // {
  3552. // foreach (string mh in arrStrmh)
  3553. // {
  3554. // sq += lh + newlc + mh + ",";
  3555. // }
  3556. // }
  3557. // }
  3558. // }
  3559. // }
  3560. // else
  3561. // {
  3562. // string[] arrStrlc = se.GroutingLineLc.ToString().Split(',');
  3563. // string[] arrStrlh = se.GroutingLineLh.ToString().Split(',');
  3564. // foreach (string lc in arrStrlc)
  3565. // {
  3566. // string newlc = null;
  3567. // if (lc.Length == 1)
  3568. // {
  3569. // newlc = "0" + lc;
  3570. // }
  3571. // else
  3572. // {
  3573. // newlc = lc;
  3574. // }
  3575. // foreach (string lh in arrStrlh)
  3576. // {
  3577. // sq += lh + newlc + ",";
  3578. // }
  3579. // }
  3580. // }
  3581. // }
  3582. // else
  3583. // {
  3584. // string[] arrStrlc = se.GroutingLineLc.ToString().Split(',');
  3585. // foreach (string lc in arrStrlc)
  3586. // {
  3587. // sq += lc + ",";
  3588. // }
  3589. // }
  3590. //}
  3591. //if (sq != null)
  3592. //{
  3593. // string[] sqstr = sq.Split(',');
  3594. // foreach (string sqt in sqstr)
  3595. // {
  3596. // if (sqt.Trim().Length > 0)
  3597. // {
  3598. // se.GroutingLineIDS = sqt;
  3599. // string sql = ReportModuleLogic.GetRPT040104S1SQL(user, se, ref parameters);
  3600. // DataTable da = conn.GetSqlResultToDt(sql, parameters.ToArray());
  3601. // if (da.Rows.Count > 0)
  3602. // {
  3603. // //data = da.Clone();
  3604. // if (data == null)
  3605. // {
  3606. // data = da.Clone();
  3607. // }
  3608. // data.Merge(da, false, MissingSchemaAction.Ignore);
  3609. // //object[] obj = new object[data.Columns.Count];
  3610. // //for (int i = 0; i < da.Rows.Count; i++)
  3611. // //{
  3612. // // da.Rows[i].ItemArray.CopyTo(obj, 0);
  3613. // // data.Rows.Add(obj);
  3614. // //}
  3615. // }
  3616. // }
  3617. // }
  3618. //}
  3619. //else
  3620. //{
  3621. // string sql = ReportModuleLogic.GetRPT040104S1SQL(user, se, ref parameters);
  3622. // data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  3623. //}
  3624. #endregion
  3625. if (se.GroutingLineLc.Length == 1)
  3626. {
  3627. se.GroutingLineLc = "0" + se.GroutingLineLc;
  3628. }
  3629. se.GroutingLineIDS = se.GroutingLineLh + se.GroutingLineLc + se.GroutingLineMh + se.GroutingLineXh;
  3630. string sql = ReportModuleLogic.GetRPT040104S1SQL(user, se, ref parameters);
  3631. data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  3632. //string sql = ReportModuleLogic.GetRPT040104SSQL(user, se, ref parameters);
  3633. ServiceResultEntity sre = new ServiceResultEntity();
  3634. if (data == null || data.Rows.Count == 0)
  3635. {
  3636. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3637. return sre;
  3638. }
  3639. sre.Data = new DataSet();
  3640. sre.Data.Tables.Add(data);
  3641. return sre;
  3642. }
  3643. catch (Exception ex)
  3644. {
  3645. throw ex;
  3646. }
  3647. finally
  3648. {
  3649. if (conn != null &&
  3650. conn.ConnState == ConnectionState.Open)
  3651. {
  3652. conn.Close();
  3653. }
  3654. }
  3655. }
  3656. /// <summary>
  3657. /// 获取RPT040104画面(产成品质量分析表)的查询sql
  3658. /// </summary>
  3659. /// <returns>sql</returns>
  3660. private static string GetRPT040104SSQL(SUserInfo user, RPT040104_SE se, ref List<OracleParameter> parameters)
  3661. {
  3662. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3663. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  3664. // 2015-06-16 modify by chenxy
  3665. string sqlString = "\n" +
  3666. "select qdgroup.gid,\n" +
  3667. " decode(qdgroup.gid, 7, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  3668. " decode(qdgroup.gid, 3, '合计', 0, qdgroup.kilncode, '--') kilncode,\n" +
  3669. " decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  3670. " decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
  3671. " decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode,\n" +
  3672. " qdgroup.OutKilnCount,\n" +
  3673. " qdgroup.GoodCount,\n" +
  3674. " to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent,\n" +
  3675. " qdgroup.SubstandardCount,\n" +
  3676. " to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  3677. " '990.00') || '%' SubstandardPercent,\n" +
  3678. " qdgroup.GoodCount+qdgroup.BadCount Qualified,\n" +
  3679. " to_char(((qdgroup.GoodCount + qdgroup.BadCount) / qdgroup.OutKilnCount) * 100,\n" +
  3680. " '990.00') || '%' QualifiedPercent,\n" +
  3681. " qdgroup.BadCount,\n" +
  3682. " to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  3683. " qdgroup.ReFireCount,\n" +
  3684. " to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  3685. " '990.00') || '%' ReFirePercent\n" +
  3686. " from (select grouping_id(pcpl.productionlinename,\n" +
  3687. " mstkiln.kilncode,\n" +
  3688. " mstgoodstype2.goodstypename,\n" +
  3689. " --mstgoodstype.goodstypename,\n" +
  3690. " mstgoods.goodscode) gid,\n" +
  3691. " pcpl.productionlinename,\n" +
  3692. " --qd.kilnid,\n" +
  3693. " mstkiln.kilncode,\n" +
  3694. " mstgoodstype2.goodstypename goodstypename2,\n" +
  3695. " mstgoodstype.goodstypename,\n" +
  3696. " mstgoods.goodscode,\n" +
  3697. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  3698. " sum(qd.GoodCount) GoodCount,\n" +
  3699. " sum(qd.SubstandardCount) SubstandardCount,\n" +
  3700. " sum(qd.BadCount) BadCount,\n" +
  3701. " sum(qd.ReFireCount) ReFireCount\n" +
  3702. " from (select --pdbc.barcode,\n" +
  3703. " pdbc.productionlineid,\n" +
  3704. " pdbc.goodsid,\n" +
  3705. " pdbc.kilnid,\n" +
  3706. " --pdbc.kilncarid,\n" +
  3707. " --pdbc.kilncarbatchno,\n" +
  3708. " 1 OutKilnCount,\n" +
  3709. " case\n" +
  3710. " when glt.goodsleveltypeid in (5, 6, 7) then\n" +
  3711. " 0\n" +
  3712. " else\n" +
  3713. " 1\n" +
  3714. " end GoodCount,\n" +
  3715. " case\n" +
  3716. " when glt.goodsleveltypeid = 7 then\n" +
  3717. " 1\n" +
  3718. " else\n" +
  3719. " 0\n" +
  3720. " end SubstandardCount,\n" +
  3721. " case\n" +
  3722. " when glt.goodsleveltypeid = 6 then\n" +
  3723. " 1\n" +
  3724. " else\n" +
  3725. " 0\n" +
  3726. " end ReFireCount,\n" +
  3727. " case\n" +
  3728. " when glt.goodsleveltypeid = 5 then\n" +
  3729. " 1\n" +
  3730. " else\n" +
  3731. " 0\n" +
  3732. " end BadCount\n" +
  3733. " from (select distinct pd.barcode,\n" +
  3734. " pd.productionlineid,\n" +
  3735. " pd.goodsid,\n" +
  3736. " pd.kilnid,\n" +
  3737. " --pd.kilncarid,\n" +
  3738. " pd.kilncarbatchno\n" +
  3739. " from tp_pm_productiondata pd\n" +
  3740. " where pd.valueflag = '1'\n" +
  3741. " and pd.procedureid = :in_rptSprocedureId \n" +
  3742. " and pd.AccountID = :AccountID\n";
  3743. StringBuilder selSql = new StringBuilder(sqlString);
  3744. if (se.CreateTimeStart.HasValue)
  3745. {
  3746. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  3747. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3748. }
  3749. if (se.CreateTimeEnd.HasValue)
  3750. {
  3751. selSql.Append(" AND pd.createtime <= :CreateTimeEnd\n");
  3752. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3753. }
  3754. if (!string.IsNullOrEmpty(se.GoodsIDS))
  3755. {
  3756. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  3757. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3758. }
  3759. if (se.ProductionLineID.HasValue)
  3760. {
  3761. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  3762. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  3763. }
  3764. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  3765. {
  3766. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  3767. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  3768. }
  3769. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  3770. {
  3771. selSql.Append(" AND instr(','||:GroutingLin" +
  3772. "eIDS||',', ','||pd.groutinglineid||',') > 0\n");
  3773. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  3774. }
  3775. //selSql.Append(" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID= pd.ProductionLineId))");
  3776. //parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  3777. if (se.KilnID.HasValue)
  3778. {
  3779. selSql.Append(" AND pd.KilnID = :KilnID\n");
  3780. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3781. }
  3782. sqlString =
  3783. " ) pdbc\n" +
  3784. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid\n" +
  3785. " from (select pd.barcode,\n" +
  3786. " pd.kilncarbatchno,\n" +
  3787. " pd.goodsleveltypeid,\n" +
  3788. " pd.productiondataid,\n" +
  3789. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  3790. " from tp_pm_productiondata pd\n" +
  3791. " where pd.valueflag = '1'\n" +
  3792. " and pd.AccountID = :AccountID\n" +
  3793. " and length(pd.kilncarbatchno) > 0\n" +
  3794. " AND pd.createtime >= :CreateTimeStart\n" +
  3795. " and pd.modeltype = -1) kcbc\n" +
  3796. " where kcbc.dataid = 1) glt\n" +
  3797. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  3798. " and pdbc.barcode = glt.barcode) qd\n" +
  3799. " inner join tp_pc_productionline pcpl\n" +
  3800. " on pcpl.productionlineid = qd.productionlineid\n" +
  3801. " inner join tp_mst_kiln mstkiln\n" +
  3802. " on mstkiln.kilnid = qd.kilnid\n" +
  3803. " inner join tp_mst_goods mstgoods\n" +
  3804. " on mstgoods.goodsid = qd.goodsid\n" +
  3805. " inner join tp_mst_goodstype mstgoodstype\n" +
  3806. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3807. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  3808. " inner join tp_mst_goodstype mstgoodstype2\n" +
  3809. " on mstgoodstype2.goodstypecode =\n" +
  3810. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3811. " and mstgoodstype.accountid = mstgoodstype2.accountid\n" +
  3812. " where 1=1\n";
  3813. selSql.Append(sqlString);
  3814. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  3815. {
  3816. //selSql.Append(" AND instr(','||:GoodsTypeIDS||',', ','||mstgoodstype.GOODSTYPECode||',') =1\n");
  3817. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS) =1\n");
  3818. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  3819. }
  3820. sqlString =
  3821. " group by grouping sets((pcpl.productionlinename,\n" +
  3822. " mstkiln.kilncode,\n" +
  3823. " mstgoodstype2.goodstypename,\n" +
  3824. " mstgoodstype.goodstypename,\n" +
  3825. " mstgoods.goodscode),\n" +
  3826. " (pcpl.productionlinename,\n" +
  3827. " mstkiln.kilncode,\n" +
  3828. " mstgoodstype2.goodstypename),\n" +
  3829. " (pcpl.productionlinename,\n" +
  3830. " mstkiln.kilncode),\n" +
  3831. " pcpl.productionlinename)\n" +
  3832. " order by pcpl.productionlinename,\n" +
  3833. " mstkiln.kilncode,\n" +
  3834. " mstgoodstype2.goodstypename,\n" +
  3835. " mstgoodstype.goodstypename,\n" +
  3836. " mstgoods.goodscode\n" +
  3837. " ) qdgroup\n";
  3838. selSql.Append(sqlString);
  3839. return selSql.ToString();
  3840. }
  3841. /// <summary>
  3842. /// 获取RPT040104画面(产成品质量分析表-按登记时间)的查询sql
  3843. /// </summary>
  3844. /// <returns>sql</returns>
  3845. private static string GetRPT040104S1SQL(SUserInfo user, RPT040104_SE se, ref List<OracleParameter> parameters)
  3846. {
  3847. parameters.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3848. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  3849. string sqlString = "select qdgroup.gid\n" +
  3850. " ,decode(qdgroup.gid, 7, '总计', qdgroup.productionlinename) productionlinename\n" +
  3851. " ,decode(qdgroup.gid\n" +
  3852. " ,3\n" +
  3853. " ,'合计[' || qdgroup.kilncode || ']'\n" +
  3854. " ,7\n" +
  3855. " ,'--'\n" +
  3856. " ,qdgroup.kilncode) kilncode\n" +
  3857. " ,decode(qdgroup.gid\n" +
  3858. " ,1\n" +
  3859. " ,'小计[' || qdgroup.goodstypename2 || ']'\n" +
  3860. " ,0\n" +
  3861. " ,qdgroup.goodstypename2\n" +
  3862. " ,'--') goodstypename2\n" +
  3863. " ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename\n" +
  3864. " ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode\n" +
  3865. " ,qdgroup.OutKilnCount\n" +
  3866. " ,qdgroup.GoodCount\n" +
  3867. " ,decode(qdgroup.OutKilnCount\n" +
  3868. " ,0\n" +
  3869. " ,to_number(null)\n" +
  3870. " ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 4)) GoodPercent\n" +
  3871. " ,qdgroup.SubstandardCount\n" +
  3872. " ,decode(qdgroup.OutKilnCount\n" +
  3873. " ,0\n" +
  3874. " ,to_number(null)\n" +
  3875. " ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent\n" +
  3876. " ,qdgroup.GoodCount + qdgroup.BadCount+qdgroup.LengBuCount Qualified\n" +
  3877. " ,decode(qdgroup.OutKilnCount\n" +
  3878. " ,0\n" +
  3879. " ,to_number(null)\n" +
  3880. " ,round((qdgroup.GoodCount + qdgroup.BadCount+qdgroup.LengBuCount) /\n" +
  3881. " qdgroup.OutKilnCount\n" +
  3882. " ,4)) QualifiedPercent\n" +
  3883. " ,qdgroup.BadCount\n" +
  3884. " ,decode(qdgroup.OutKilnCount\n" +
  3885. " ,0\n" +
  3886. " ,to_number(null)\n" +
  3887. " ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent\n" +
  3888. " ,qdgroup.ReFireCount\n" +
  3889. " ,decode(qdgroup.OutKilnCount\n" +
  3890. " ,0\n" +
  3891. " ,to_number(null)\n" +
  3892. " ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent\n" +
  3893. " ,qdgroup.LengBuCount\n" +
  3894. " ,decode(qdgroup.OutKilnCount\n" +
  3895. " ,0\n" +
  3896. " ,to_number(null)\n" +
  3897. " ,round(qdgroup.LENGBUCOUNT / qdgroup.OutKilnCount, 4)) LengBuPercent\n" +
  3898. " from (select grouping_id(pcpl.productionlinename\n" +
  3899. " ,mstkiln.kilncode\n" +
  3900. " ,mstgoodstype2.goodstypecode\n" +
  3901. " ,mstgoods.goodscode) gid\n" +
  3902. " ,pcpl.productionlinename\n" +
  3903. " ,mstkiln.kilncode\n" +
  3904. " ,mstgoodstype2.goodstypename goodstypename2\n" +
  3905. " ,mstgoodstype.goodstypename\n" +
  3906. " ,mstgoods.goodscode\n" +
  3907. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount\n" +
  3908. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid=5 ";
  3909. StringBuilder selSql = new StringBuilder(sqlString);
  3910. //回收标识
  3911. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  3912. {
  3913. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3914. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  3915. }
  3916. sqlString =
  3917. " THEN 1 ELSE 0 END), 0) BadCount\n" +
  3918. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid=6 ";
  3919. selSql.Append(sqlString);
  3920. //回收标识
  3921. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  3922. {
  3923. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3924. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  3925. }
  3926. sqlString =
  3927. " THEN 1 ELSE 0 END), 0) ReFireCount\n" +
  3928. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid=7 ";
  3929. selSql.Append(sqlString);
  3930. //回收标识
  3931. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  3932. {
  3933. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3934. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  3935. }
  3936. sqlString =
  3937. " THEN 1 ELSE 0 END), 0) SubstandardCount\n" +
  3938. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid=16 ";
  3939. selSql.Append(sqlString);
  3940. //回收标识
  3941. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  3942. {
  3943. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3944. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  3945. }
  3946. sqlString =
  3947. " THEN 1 ELSE 0 END), 0) LengBuCount\n" +
  3948. " ,nvl(sum(CASE WHEN ppcc.goodsleveltypeid = 0 THEN 1\n" +
  3949. " WHEN ppcc.goodsleveltypeid = 5";
  3950. selSql.Append(sqlString);
  3951. //回收标识
  3952. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  3953. {
  3954. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3955. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  3956. }
  3957. sqlString =
  3958. " THEN -1\n" +
  3959. " WHEN ppcc.goodsleveltypeid = 6";
  3960. selSql.Append(sqlString);
  3961. //回收标识
  3962. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  3963. {
  3964. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3965. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  3966. }
  3967. sqlString =
  3968. " THEN -1\n" +
  3969. " WHEN ppcc.goodsleveltypeid = 7";
  3970. selSql.Append(sqlString);
  3971. //回收标识
  3972. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  3973. {
  3974. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3975. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  3976. }
  3977. sqlString =
  3978. " THEN -1\n" +
  3979. " WHEN ppcc.goodsleveltypeid = 16";
  3980. selSql.Append(sqlString);
  3981. //回收标识
  3982. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  3983. {
  3984. selSql.Append(" AND ppcc.RECYCLINGFLAG = :RECYCLINGFLAG ");
  3985. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  3986. }
  3987. sqlString =
  3988. " THEN -1 ELSE 0 END),0 ) GoodCount\n" +
  3989. " from (select 0 goodsleveltypeid -- 出窑数量\n" +
  3990. " ,pd.barcode\n" +
  3991. " ,pd.productionlineid\n" +
  3992. " ,pd.goodsid\n" +
  3993. " ,pd.kilnid\n" +
  3994. " ,pd.kilncarbatchno\n" +
  3995. " ,gdd.RECYCLINGFLAG\n" +
  3996. " ,1 cc\n" +
  3997. " from tp_pm_productiondata pd\n" +
  3998. " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid = pd.groutingdailydetailid\n";
  3999. if (!string.IsNullOrEmpty(se.GroutingLineLh))
  4000. {
  4001. sqlString += " INNER JOIN TP_MST_GOODS G\n" +
  4002. " ON G.GOODSID = PD.GOODSID\n" +
  4003. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  4004. " ON GT.GOODSTYPEID = G.GOODSTYPEID";
  4005. }
  4006. sqlString +=
  4007. // 恒洁三车间特殊处理(质量相关)
  4008. //" where pd.valueflag = '1'\n" +
  4009. //" and pd.procedureid = :in_rptSprocedureId\n" +
  4010. " where pd.accountid = :in_AccountID\n" +
  4011. " AND ((:in_rptSprocedureId = 11 AND ((pd.procedureid = 11 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '0' AND pd.checkflag = '1'))) \n" +
  4012. " OR (:in_rptSprocedureId = 58 AND ((pd.procedureid = 58 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '6' AND pd.checkflag = '1'))) \n" +
  4013. " OR (:in_rptSprocedureId not in (11,58) AND pd.valueflag = '1' AND pd.procedureid = :in_rptSprocedureId))\n";
  4014. // " AND pd.procedureid IN(11,104)\n"
  4015. //" and pd.accountid = :in_AccountID\n";
  4016. ;
  4017. // end
  4018. selSql.Append(sqlString);
  4019. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  4020. {
  4021. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  4022. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  4023. }
  4024. //回收标识
  4025. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  4026. {
  4027. selSql.Append(" AND gdd.RECYCLINGFLAG = :RECYCLINGFLAG ");
  4028. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  4029. }
  4030. if (se.RptSProcedureID == 58)
  4031. {
  4032. selSql.Append(" and pd.procedureid IN(11, 104, 58) ");
  4033. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  4034. //selSql.Append(" AND PD.KILNID IN(3,4,6) "); // 现在要用隧道窑重烧产品 2024-07-10
  4035. }
  4036. else
  4037. {
  4038. selSql.Append(" and pd.procedureid IN(11,104) ");
  4039. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  4040. selSql.Append(" AND PD.KILNID IN(1,2,5) ");
  4041. }
  4042. // 试验标识
  4043. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  4044. {
  4045. selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
  4046. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  4047. }
  4048. if (se.CreateTimeStart.HasValue)
  4049. {
  4050. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  4051. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4052. }
  4053. if (se.CreateTimeEnd.HasValue)
  4054. {
  4055. selSql.Append(" AND pd.createtime < :CreateTimeEnd\n");
  4056. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4057. }
  4058. if (!string.IsNullOrEmpty(se.GoodsIDS))
  4059. {
  4060. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  4061. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4062. }
  4063. if (se.ProductionLineID.HasValue)
  4064. {
  4065. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  4066. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4067. }
  4068. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4069. {
  4070. string sqls;
  4071. // A楼包含D楼小件
  4072. if (se.GroutingLineLh.Contains("A"))
  4073. {
  4074. sqls = " AND (pd.groutinglinecode LIKE '" + se.GroutingLineIDS + "%'" + " or pd.groutinglinecode LIKE 'D%' ) AND INSTR(GT.GOODSTYPECODE, '001002') = 1 ";
  4075. }
  4076. // B楼包含D楼大件
  4077. else if (se.GroutingLineLh.Contains("B"))
  4078. {
  4079. sqls = " AND (pd.groutinglinecode LIKE '" + se.GroutingLineIDS + "%'" + " or pd.groutinglinecode LIKE 'D%' ) AND INSTR(GT.GOODSTYPECODE, '001001') = 1 ";
  4080. }
  4081. else
  4082. {
  4083. sqls = " AND pd.groutinglinecode LIKE '" + se.GroutingLineIDS + "%' ";
  4084. }
  4085. //string sqls = "AND pd.groutinglinecode LIKE '" + se.GroutingLineIDS + "%'";
  4086. selSql.Append(sqls);
  4087. //parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4088. }
  4089. if (se.KilnID.HasValue)
  4090. {
  4091. selSql.Append(" AND pd.KilnID = :KilnID\n");
  4092. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4093. }
  4094. //实验单标识
  4095. if (se.TestFormFlag == 1)
  4096. {
  4097. selSql.Append(" AND(gdd.TESTFORMFLAG in(1)) ");
  4098. }
  4099. else if (se.TestFormFlag == 2)
  4100. {
  4101. selSql.Append(" AND(gdd.TESTFORMFLAG in(2)) ");
  4102. }
  4103. else if (se.TestFormFlag == 3)
  4104. {
  4105. selSql.Append(" AND(gdd.TESTFORMFLAG IS NULL OR gdd.TESTFORMFLAG =1) ");
  4106. }
  4107. //sqlString = @"
  4108. //UNION ALL
  4109. //SELECT T.GOODSLEVELTYPEID,
  4110. // T.BARCODE,
  4111. // T.PRODUCTIONLINEID,
  4112. // T.GOODSID,
  4113. // T.KILNID,
  4114. // T.KILNCARBATCHNO,
  4115. // 1 AS CC
  4116. // FROM (SELECT PD.GOODSLEVELTYPEID,
  4117. // PD.BARCODE,
  4118. // PD.PRODUCTIONLINEID,
  4119. // PD.GOODSID,
  4120. // PD.KILNID,
  4121. // PD.KILNCARBATCHNO,
  4122. // RANK() OVER(PARTITION BY PD.BARCODE, PD.KILNID ORDER BY PD.PRODUCTIONDATAID DESC) AS RK
  4123. // FROM TP_PM_PRODUCTIONDATA PD
  4124. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  4125. // ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  4126. // WHERE PD.VALUEFLAG = '1'
  4127. // AND PD.MODELTYPE IN (-1, -4, -5)
  4128. // AND PD.ACCOUNTID = :in_AccountID
  4129. // AND LENGTH(PD.KILNCARBATCHNO) > 0
  4130. // AND ((:in_rptSprocedureId IS NULL)
  4131. // OR (:in_rptSprocedureId = 11 AND (GDD.Twoleveltime IS NULL OR pd.createtime < GDD.Twoleveltime))
  4132. // OR (:in_rptSprocedureId = 58 AND GDD.Twoleveltime IS NOT NULL AND pd.createtime >= GDD.Twoleveltime)) ";
  4133. sqlString =
  4134. " union all\n" +
  4135. " select distinct pd.goodsleveltypeid\n" +
  4136. " ,pd.barcode\n" +
  4137. " ,pd.productionlineid\n" +
  4138. " ,pd.goodsid\n" +
  4139. " ,pd.kilnid\n" +
  4140. " ,pd.kilncarbatchno\n" +
  4141. " ,gdd.RECYCLINGFLAG\n" +
  4142. " ,1 cc\n" +
  4143. " from tp_pm_productiondata pd\n" +
  4144. " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid = pd.groutingdailydetailid\n" +
  4145. " inner JOIN TP_PM_DEFECT dfc on dfc.productiondataid=pd.productiondataid\n"; // 并未使用此表,如果无缺陷的产品就查不到了 24-07-11
  4146. if (!string.IsNullOrEmpty(se.GroutingLineLh))
  4147. {
  4148. sqlString += " INNER JOIN TP_MST_GOODS G\n" +
  4149. " ON G.GOODSID = PD.GOODSID\n" +
  4150. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  4151. " ON GT.GOODSTYPEID = G.GOODSTYPEID";
  4152. }
  4153. sqlString +=
  4154. " where pd.valueflag = '1'\n" +
  4155. " and pd.modeltype IN (-1, -4, -5)\n" +
  4156. " and pd.CHECKBATCHNO = 1\n" +
  4157. " and pd.AccountID = :in_AccountID\n" +
  4158. " and length(pd.kilncarbatchno) > 0\n";
  4159. selSql.Append(sqlString);
  4160. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  4161. {
  4162. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  4163. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  4164. }
  4165. //回收标识
  4166. if (!string.IsNullOrEmpty(se.TestRecyclingFlags))
  4167. {
  4168. selSql.Append(" AND gdd.RECYCLINGFLAG = :RECYCLINGFLAG ");
  4169. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingFlags, ParameterDirection.Input));
  4170. }
  4171. // 试验标识
  4172. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  4173. {
  4174. selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
  4175. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  4176. }
  4177. if (se.CreateTimeStart.HasValue)
  4178. {
  4179. //selSql.Append(" AND pd.checktime >= :checktimeStart\n");
  4180. selSql.Append(" AND pd.createtime >= :checktimeStart\n");
  4181. parameters.Add(new OracleParameter(":checktimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4182. }
  4183. if (se.CreateTimeEnd.HasValue)
  4184. {
  4185. //selSql.Append(" AND pd.checktime < :checktimeEnd\n");
  4186. selSql.Append(" AND pd.createtime < :checktimeEnd\n");
  4187. parameters.Add(new OracleParameter(":checktimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4188. }
  4189. if (!string.IsNullOrEmpty(se.GoodsIDS))
  4190. {
  4191. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  4192. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4193. }
  4194. if (se.ProductionLineID.HasValue)
  4195. {
  4196. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  4197. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4198. }
  4199. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4200. {
  4201. string sqls = "AND pd.groutinglinecode LIKE '" + se.GroutingLineIDS + "%'";
  4202. selSql.Append(sqls);
  4203. //parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4204. }
  4205. if (!string.IsNullOrEmpty(se.GroutingLineLh))
  4206. {
  4207. // A楼包含D楼小件
  4208. if (se.GroutingLineLh.Contains("A"))
  4209. {
  4210. string sqls = " AND (pd.groutinglinecode LIKE 'A%' or pd.groutinglinecode LIKE 'D%' ) AND INSTR(GT.GOODSTYPECODE, '001002') = 1 ";
  4211. selSql.Append(sqls);
  4212. }
  4213. // B楼包含D楼大件
  4214. else if (se.GroutingLineLh.Contains("B"))
  4215. {
  4216. string sqls = " AND (pd.groutinglinecode LIKE 'B%' or pd.groutinglinecode LIKE 'D%' ) AND INSTR(GT.GOODSTYPECODE, '001001') = 1 ";
  4217. selSql.Append(sqls);
  4218. }
  4219. else if (se.GroutingLineLh.Contains("C"))
  4220. {
  4221. string sqls = " AND pd.groutinglinecode LIKE 'C%' ";
  4222. selSql.Append(sqls);
  4223. }
  4224. else if (se.GroutingLineLh.Contains("D"))
  4225. {
  4226. string sqls = " AND pd.groutinglinecode LIKE 'D%' ";
  4227. selSql.Append(sqls);
  4228. }
  4229. }
  4230. if (se.KilnID.HasValue)
  4231. {
  4232. selSql.Append(" AND pd.KilnID = :KilnID\n");
  4233. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4234. }
  4235. //实验单标识
  4236. if (se.TestFormFlag == 1)
  4237. {
  4238. selSql.Append(" AND(gdd.TESTFORMFLAG in(1)) ");
  4239. }
  4240. else if (se.TestFormFlag == 2)
  4241. {
  4242. selSql.Append(" AND(gdd.TESTFORMFLAG in(2)) ");
  4243. }
  4244. else if (se.TestFormFlag == 3)
  4245. {
  4246. selSql.Append(" AND(gdd.TESTFORMFLAG IS NULL OR gdd.TESTFORMFLAG =1) ");
  4247. }
  4248. sqlString =
  4249. // 恒洁三车间特殊处理(质量相关)
  4250. //" and exists\n" +
  4251. //" (select 1\n" +
  4252. //" from tp_pm_productiondata outpd\n" +
  4253. //" where outpd.barcode = pd.barcode\n" +
  4254. //" and outpd.procedureid = :in_rptSprocedureId\n" +
  4255. //" and outpd.valueflag = '1'\n" +
  4256. //" and outpd.kilncarbatchno = pd.kilncarbatchno)" +
  4257. //" and ((:in_rptSprocedureId = 11 and pd.isrefire = '0') or (:in_rptSprocedureId = 58 and pd.isrefire = '6'))\n" +
  4258. " and ((:in_rptSprocedureId <> 58 and pd.isrefire = '0') or (:in_rptSprocedureId = 58 and pd.isrefire = '6')) \n" +
  4259. ") ppcc\n" +
  4260. // end
  4261. " inner join tp_pc_productionline pcpl\n" +
  4262. " on pcpl.productionlineid = ppcc.productionlineid\n" +
  4263. " inner join tp_mst_kiln mstkiln\n" +
  4264. " on mstkiln.kilnid = ppcc.kilnid\n" +
  4265. " inner join tp_mst_goods mstgoods\n" +
  4266. " on mstgoods.goodsid = ppcc.goodsid\n" +
  4267. " inner join tp_mst_goodstype mstgoodstype\n" +
  4268. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  4269. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  4270. " inner join tp_mst_goodstype mstgoodstype2\n" +
  4271. " on mstgoodstype2.goodstypecode =\n" +
  4272. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  4273. " and mstgoodstype.accountid = mstgoodstype2.accountid\n";
  4274. // 产品类别
  4275. selSql.Append(sqlString);
  4276. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  4277. {
  4278. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
  4279. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  4280. }
  4281. sqlString =
  4282. " group by grouping sets((pcpl.productionlinename, mstkiln.kilncode, mstgoodstype2.goodstypecode, mstgoodstype2.goodstypename, mstgoodstype.goodstypecode, mstgoodstype.goodstypename, mstgoods.goodscode),(pcpl.productionlinename, mstkiln.kilncode, mstgoodstype2.goodstypecode, mstgoodstype2.goodstypename),(pcpl.productionlinename, mstkiln.kilncode),(pcpl.productionlinename))\n" +
  4283. " order by pcpl.productionlinename\n" +
  4284. " ,mstkiln.kilncode\n" +
  4285. " ,mstgoodstype2.goodstypecode\n" +
  4286. " ,mstgoodstype.goodstypecode\n" +
  4287. " ,mstgoods.goodscode) qdgroup\n";
  4288. selSql.Append(sqlString);
  4289. return selSql.ToString() ;
  4290. }
  4291. /// <summary>
  4292. /// 取得RPT040105画面(质量报表)的查询数据
  4293. /// </summary>
  4294. /// <param name="user">登录用户信息</param>
  4295. /// <param name="se">查询条件</param>
  4296. /// <returns>查询结果</returns>
  4297. public static ServiceResultEntity GetRPT040105SData(SUserInfo user, RPT040105_SE se)
  4298. {
  4299. IDBConnection conn = null;
  4300. try
  4301. {
  4302. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4303. List<OracleParameter> parameters = new List<OracleParameter>();
  4304. string sqlString =
  4305. "SELECT substr(gt.goodstypecode, 1, 6) goodstypecode2, COUNT(*) barcodecount\n" +
  4306. " FROM tp_pm_groutingdailydetail gdd\n" +
  4307. " INNER JOIN tp_mst_goods g\n" +
  4308. " ON g.goodsid = gdd.goodsid\n" +
  4309. " INNER JOIN tp_mst_goodstype gt\n" +
  4310. " ON gt.goodstypeid = g.goodstypeid\n" +
  4311. " WHERE gdd.accountid = :accountid\n" +
  4312. " AND gdd.valueflag = '1'\n" +
  4313. " AND gdd.groutingdate >= :datebegin\n" +
  4314. " AND gdd.groutingdate <= :dateend\n" +
  4315. " AND gdd.groutingflag = '1'\n" +
  4316. " AND gdd.barcode IS NOT NULL\n" +
  4317. " AND (:TestMouldFlag IS NULL OR gdd.TestMouldFlag = :TestMouldFlag) \n" +
  4318. " AND (:RECYCLINGFLAG IS NULL OR gdd.RECYCLINGFLAG = :RECYCLINGFLAG) \n" +
  4319. " AND (:GoodsTypeCode IS NULL OR gt.GOODSTYPECode LIKE :GoodsTypeCode) \n" +
  4320. " GROUP BY GROUPING SETS(substr(gt.goodstypecode, 1, 6),())";
  4321. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4322. parameters.Add(new OracleParameter(":datebegin", OracleDbType.Date, se.CreateTimeStart.Value.Date, ParameterDirection.Input));
  4323. parameters.Add(new OracleParameter(":dateend", OracleDbType.Date, se.CreateTimeEnd.Value.Date, ParameterDirection.Input));
  4324. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  4325. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  4326. if (string.IsNullOrEmpty(se.GoodsTypeCode))
  4327. {
  4328. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  4329. }
  4330. else
  4331. {
  4332. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode + "%", ParameterDirection.Input));
  4333. }
  4334. DataTable dataCount = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  4335. parameters.Clear();
  4336. //string sql = ReportModuleLogic.GetRPT040105SSQL(user, se, ref parameters);
  4337. string sql = ReportModuleLogic.GetRPT040105S1SQL(user, se, ref parameters);
  4338. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  4339. ServiceResultEntity sre = new ServiceResultEntity();
  4340. if (data == null || data.Rows.Count == 0)
  4341. {
  4342. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4343. return sre;
  4344. }
  4345. data.Columns.Add("GCount", typeof(int));
  4346. //data.Columns.Add("OutGCount", typeof(string));
  4347. //data.Columns.Add("GoodGCount", typeof(string));
  4348. data.Columns.Add("OutGCount", typeof(decimal));
  4349. data.Columns.Add("GoodGCount", typeof(decimal));
  4350. foreach (DataRow item in data.Rows)
  4351. {
  4352. int gid = Convert.ToInt32(item["gid"]);
  4353. if (gid < 2)
  4354. {
  4355. continue;
  4356. }
  4357. int outKilnCount = Convert.ToInt32(item["OutKilnCount"]);
  4358. int goodCount = Convert.ToInt32(item["Qualified"]);
  4359. DataRow[] drs = null;
  4360. if (gid == 2)
  4361. {
  4362. drs = dataCount.Select("goodstypecode2 = '" + item["goodstypecode2"].ToString() + "'");
  4363. }
  4364. else if (gid == 3)
  4365. {
  4366. drs = dataCount.Select("goodstypecode2 is null");
  4367. }
  4368. if (drs != null && drs.Length > 0)
  4369. {
  4370. int barcodecount = Convert.ToInt32(drs[0]["barcodecount"]);
  4371. item["GCount"] = barcodecount;
  4372. //item["OutGCount"] = (outKilnCount * 1.0 / barcodecount).ToString("#,##0.00%");
  4373. //item["GoodGCount"] = (goodCount * 1.0 / barcodecount).ToString("#,##0.00%");
  4374. item["OutGCount"] = Math.Round(outKilnCount * 1.0 / barcodecount, 4);
  4375. item["GoodGCount"] = Math.Round(goodCount * 1.0 / barcodecount, 4);
  4376. }
  4377. else
  4378. {
  4379. item["GCount"] = 0;
  4380. //item["OutGCount"] = "#DIV/0!";
  4381. //item["GoodGCount"] = "#DIV/0!";
  4382. item["OutGCount"] = DBNull.Value;
  4383. item["GoodGCount"] = DBNull.Value;
  4384. }
  4385. }
  4386. sre.Data = new DataSet();
  4387. sre.Data.Tables.Add(data);
  4388. return sre;
  4389. }
  4390. catch (Exception ex)
  4391. {
  4392. throw ex;
  4393. }
  4394. finally
  4395. {
  4396. if (conn != null &&
  4397. conn.ConnState == ConnectionState.Open)
  4398. {
  4399. conn.Close();
  4400. }
  4401. }
  4402. }
  4403. /// <summary>
  4404. /// 获取RPT040105画面(质量报表)的查询sql
  4405. /// </summary>
  4406. /// <returns>sql</returns>
  4407. private static string GetRPT040105SSQL(SUserInfo user, RPT040105_SE se, ref List<OracleParameter> parameters)
  4408. {
  4409. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4410. parameters.Add(new OracleParameter(":OutProcedureIDS", OracleDbType.Varchar2, se.OutProcedureIDS, ParameterDirection.Input));
  4411. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  4412. // 2015-06-16 modify by chenxy
  4413. string sqlString = "\n" +
  4414. "select qdgroup.gid,\n" +
  4415. " decode(qdgroup.gid, 3, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  4416. " decode(qdgroup.gid, 1, '合计【'||qdgroup.kilncode||'】', 0, qdgroup.kilncode, '--') kilncode,\n" +
  4417. " decode(qdgroup.gid, 2, '合计【'||qdgroup.goodstypename2||'】', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  4418. " qdgroup.goodstypecode2,\n" +
  4419. " qdgroup.OutKilnCount,\n" +
  4420. " qdgroup.GoodCount,\n" +
  4421. " to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent,\n" +
  4422. " qdgroup.SubstandardCount,\n" +
  4423. " to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  4424. " '990.00') || '%' SubstandardPercent,\n" +
  4425. " qdgroup.GoodCount+qdgroup.BadCount Qualified,\n" +
  4426. " to_char(((qdgroup.GoodCount + qdgroup.BadCount) / qdgroup.OutKilnCount) * 100,\n" +
  4427. " '990.00') || '%' QualifiedPercent,\n" +
  4428. " qdgroup.BadCount,\n" +
  4429. " to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  4430. " qdgroup.ReFireCount,\n" +
  4431. " to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  4432. " '990.00') || '%' ReFirePercent\n" +
  4433. " from (select grouping_id(pcpl.productionlinename,\n" +
  4434. " mstkiln.kilncode,\n" +
  4435. " mstgoodstype2.goodstypecode) gid,\n" +
  4436. " pcpl.productionlinename,\n" +
  4437. " mstkiln.kilncode,\n" +
  4438. " mstgoodstype2.goodstypecode goodstypecode2,\n" +
  4439. " mstgoodstype2.goodstypename goodstypename2,\n" +
  4440. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  4441. " sum(qd.GoodCount) GoodCount,\n" +
  4442. " sum(qd.SubstandardCount) SubstandardCount,\n" +
  4443. " sum(qd.BadCount) BadCount,\n" +
  4444. " sum(qd.ReFireCount) ReFireCount\n" +
  4445. " from (select --pdbc.barcode,\n" +
  4446. " pdbc.productionlineid,\n" +
  4447. " pdbc.goodsid,\n" +
  4448. " pdbc.kilnid,\n" +
  4449. " 1 OutKilnCount,\n" +
  4450. " case\n" +
  4451. " when glt.goodsleveltypeid in (5, 6, 7) then\n" +
  4452. " 0\n" +
  4453. " else\n" +
  4454. " 1\n" +
  4455. " end GoodCount,\n" +
  4456. " case\n" +
  4457. " when glt.goodsleveltypeid = 7 then\n" +
  4458. " 1\n" +
  4459. " else\n" +
  4460. " 0\n" +
  4461. " end SubstandardCount,\n" +
  4462. " case\n" +
  4463. " when glt.goodsleveltypeid = 6 then\n" +
  4464. " 1\n" +
  4465. " else\n" +
  4466. " 0\n" +
  4467. " end ReFireCount,\n" +
  4468. " case\n" +
  4469. " when glt.goodsleveltypeid = 5 then\n" +
  4470. " 1\n" +
  4471. " else\n" +
  4472. " 0\n" +
  4473. " end BadCount\n" +
  4474. " from (select distinct pd.barcode,\n" +
  4475. " pd.productionlineid,\n" +
  4476. " pd.goodsid,\n" +
  4477. " pd.kilnid,\n" +
  4478. " pd.kilncarbatchno\n" +
  4479. " from tp_pm_productiondata pd\n" +
  4480. " where pd.valueflag = '1'\n" +
  4481. " and (:in_rptSprocedureId is null or pd.procedureid = :in_rptSprocedureId) \n" +
  4482. " and (:OutProcedureIDS is null or instr(','||:OutProcedureIDS||',', ','||pd.procedureid||',') > 0) \n" +
  4483. " and pd.AccountID = :AccountID\n";
  4484. StringBuilder selSql = new StringBuilder(sqlString);
  4485. if (se.CreateTimeStart.HasValue)
  4486. {
  4487. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  4488. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4489. }
  4490. if (se.CreateTimeEnd.HasValue)
  4491. {
  4492. selSql.Append(" AND pd.createtime <= :CreateTimeEnd\n");
  4493. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4494. }
  4495. if (!string.IsNullOrEmpty(se.GoodsIDS))
  4496. {
  4497. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  4498. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4499. }
  4500. if (se.ProductionLineID.HasValue)
  4501. {
  4502. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  4503. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4504. }
  4505. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  4506. {
  4507. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  4508. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  4509. }
  4510. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4511. {
  4512. selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
  4513. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4514. }
  4515. // 不控制权限
  4516. //selSql.Append(" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID= pd.ProductionLineId))");
  4517. //parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  4518. if (se.KilnID.HasValue)
  4519. {
  4520. selSql.Append(" AND pd.KilnID = :KilnID\n");
  4521. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4522. }
  4523. sqlString =
  4524. " ) pdbc\n" +
  4525. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid\n" +
  4526. " from (select pd.barcode,\n" +
  4527. " pd.kilncarbatchno,\n" +
  4528. " pd.goodsleveltypeid,\n" +
  4529. " pd.productiondataid,\n" +
  4530. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  4531. " from tp_pm_productiondata pd\n" +
  4532. " where pd.valueflag = '1'\n" +
  4533. " and pd.AccountID = :AccountID\n" +
  4534. " and length(pd.kilncarbatchno) > 0\n" +
  4535. " AND pd.createtime >= :CreateTimeStart\n" +
  4536. " and pd.modeltype = -1) kcbc\n" +
  4537. " where kcbc.dataid = 1) glt\n" +
  4538. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  4539. " and pdbc.barcode = glt.barcode) qd\n" +
  4540. " inner join tp_pc_productionline pcpl\n" +
  4541. " on pcpl.productionlineid = qd.productionlineid\n" +
  4542. " inner join tp_mst_kiln mstkiln\n" +
  4543. " on mstkiln.kilnid = qd.kilnid\n" +
  4544. " inner join tp_mst_goods mstgoods\n" +
  4545. " on mstgoods.goodsid = qd.goodsid\n" +
  4546. " inner join tp_mst_goodstype mstgoodstype\n" +
  4547. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  4548. " inner join tp_mst_goodstype mstgoodstype2\n" +
  4549. " on mstgoodstype2.goodstypecode =\n" +
  4550. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  4551. " and mstgoodstype.accountid = mstgoodstype2.accountid\n" +
  4552. " where 1=1\n";
  4553. selSql.Append(sqlString);
  4554. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  4555. {
  4556. selSql.Append(" AND instr(','||:GoodsTypeIDS||',', ','||mstgoods.GOODSTYPEId||',') > 0\n");
  4557. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  4558. }
  4559. sqlString =
  4560. " group by grouping sets((pcpl.productionlinename,\n" +
  4561. " mstkiln.kilncode,\n" +
  4562. " mstgoodstype2.goodstypecode,\n" +
  4563. " mstgoodstype2.goodstypename),\n" +
  4564. " (pcpl.productionlinename,\n" +
  4565. " mstgoodstype2.goodstypecode,\n" +
  4566. " mstgoodstype2.goodstypename),\n" +
  4567. " (pcpl.productionlinename,\n" +
  4568. " mstkiln.kilncode),\n" +
  4569. " pcpl.productionlinename)\n" +
  4570. " order by pcpl.productionlinename,\n" +
  4571. " mstkiln.kilncode,\n" +
  4572. " mstgoodstype2.goodstypename\n" +
  4573. " ) qdgroup\n";
  4574. selSql.Append(sqlString);
  4575. return selSql.ToString();
  4576. }
  4577. /// <summary>
  4578. /// 获取RPT040105画面(质量报表-按登记时间)的查询sql
  4579. /// </summary>
  4580. /// <returns>sql</returns>
  4581. private static string GetRPT040105S1SQL(SUserInfo user, RPT040105_SE se, ref List<OracleParameter> parameters)
  4582. {
  4583. parameters.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4584. //parameters.Add(new OracleParameter(":in_OutProcedureIDS", OracleDbType.Varchar2, se.OutProcedureIDS, ParameterDirection.Input));
  4585. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  4586. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.NVarchar2, se.TestRecyclingflag, ParameterDirection.Input));
  4587. string sqlString = "select qdgroup.gid\n" +
  4588. " ,decode(qdgroup.gid, 3, '总计', qdgroup.productionlinename) productionlinename\n" +
  4589. " ,decode(qdgroup.gid\n" +
  4590. " ,1\n" +
  4591. " ,'合计[' || qdgroup.kilncode || ']'\n" +
  4592. " ,0\n" +
  4593. " ,qdgroup.kilncode\n" +
  4594. " ,'--') kilncode\n" +
  4595. " ,decode(qdgroup.gid\n" +
  4596. " ,2\n" +
  4597. " ,'合计[' || qdgroup.goodstypename2 || ']'\n" +
  4598. " ,0\n" +
  4599. " ,qdgroup.goodstypename2\n" +
  4600. " ,'--') goodstypename2\n" +
  4601. " ,qdgroup.goodstypecode2\n" +
  4602. //" ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename\n" +
  4603. //" ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode\n" +
  4604. " ,qdgroup.OutKilnCount\n" +
  4605. " ,qdgroup.GoodCount\n" +
  4606. " ,decode(qdgroup.OutKilnCount\n" +
  4607. " ,0\n" +
  4608. " ,to_number(null)\n" +
  4609. " ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 4)) GoodPercent\n" +
  4610. " ,qdgroup.SubstandardCount\n" +
  4611. " ,decode(qdgroup.OutKilnCount\n" +
  4612. " ,0\n" +
  4613. " ,to_number(null)\n" +
  4614. " ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent\n" +
  4615. " ,qdgroup.GoodCount + qdgroup.BadCount + qdgroup.LengBuCount Qualified\n" +
  4616. " ,decode(qdgroup.OutKilnCount\n" +
  4617. " ,0\n" +
  4618. " ,to_number(null)\n" +
  4619. " ,round((qdgroup.GoodCount + qdgroup.BadCount+ qdgroup.LengBuCount) /\n" +
  4620. " qdgroup.OutKilnCount\n" +
  4621. " ,4)) QualifiedPercent\n" +
  4622. " ,qdgroup.BadCount\n" +
  4623. " ,decode(qdgroup.OutKilnCount\n" +
  4624. " ,0\n" +
  4625. " ,to_number(null)\n" +
  4626. " ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent\n" +
  4627. " ,qdgroup.ReFireCount\n" +
  4628. " ,decode(qdgroup.OutKilnCount\n" +
  4629. " ,0\n" +
  4630. " ,to_number(null)\n" +
  4631. " ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent\n" +
  4632. " ,qdgroup.LengBuCount\n" +
  4633. " ,decode(qdgroup.OutKilnCount\n" +
  4634. " ,0\n" +
  4635. " ,to_number(null)\n" +
  4636. " ,round(qdgroup.LENGBUCOUNT / qdgroup.OutKilnCount, 4)) LengBuPercent\n" +
  4637. " from (select grouping_id(pcpl.productionlinename\n" +
  4638. " ,mstkiln.kilncode\n" +
  4639. " ,mstgoodstype2.goodstypecode) gid\n" +
  4640. " ,pcpl.productionlinename\n" +
  4641. " ,mstkiln.kilncode\n" +
  4642. " ,mstgoodstype2.goodstypename goodstypename2\n" +
  4643. " ,mstgoodstype2.goodstypecode goodstypecode2\n" +
  4644. //" ,mstgoodstype.goodstypename\n" +
  4645. //" ,mstgoods.goodscode\n" +
  4646. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount\n" +
  4647. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 5, 1, 0)), 0) BadCount\n" +
  4648. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 6, 1, 0)), 0) ReFireCount\n" +
  4649. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount\n" +
  4650. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 16, 1, 0)), 0) LengBuCount\n" +
  4651. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1,16,-1, 0)), 0) GoodCount\n" +
  4652. " from (select 0 goodsleveltypeid -- 出窑数量\n" +
  4653. " ,pd.barcode\n" +
  4654. " ,pd.productionlineid\n" +
  4655. " ,pd.goodsid\n" +
  4656. " ,pd.kilnid\n" +
  4657. " ,pd.kilncarbatchno\n" +
  4658. " ,1 cc\n" +
  4659. " from tp_pm_productiondata pd\n" +
  4660. " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid = pd.groutingdailydetailid\n" +
  4661. //恒洁三车间特殊处理(质量相关)
  4662. //" where pd.valueflag = '1'\n" +
  4663. //" and (:in_rptSprocedureId is null or pd.procedureid = :in_rptSprocedureId)\n" +
  4664. //" and (:in_OutProcedureIDS is null or instr(','||:in_OutProcedureIDS||',', ','||pd.procedureid||',') > 0)\n" +
  4665. //" and pd.accountid = :in_AccountID\n";
  4666. " where ((pd.procedureid <> 104 and pd.valueflag = '1') or (pd.procedureid = 104 and pd.checkflag = '1')) \n" +
  4667. " and (:in_rptSprocedureId is null or ((:in_rptSprocedureId = 11 AND ((pd.procedureid = 11 ) OR (pd.procedureid =104 AND pd.isrefire = '0'))) \n" +
  4668. " OR (:in_rptSprocedureId = 58 AND ((pd.procedureid = 58) OR (pd.procedureid =104 AND pd.isrefire = '6'))) \n" +
  4669. " OR (:in_rptSprocedureId not in (11,58) AND pd.procedureid = :in_rptSprocedureId)))\n" +
  4670. " AND (:RECYCLINGFLAG IS NULL OR gdd.RECYCLINGFLAG = :RECYCLINGFLAG)\n" +
  4671. //" and pd.procedureid IN(11,104)\n" +
  4672. // end
  4673. //" and (:in_OutProcedureIDS is null or instr(','||:in_OutProcedureIDS||',', ','||pd.procedureid||',') > 0)\n" +
  4674. " and pd.accountid = :in_AccountID\n";
  4675. StringBuilder selSql = new StringBuilder(sqlString);
  4676. if (se.RptSProcedureID == 58)
  4677. {
  4678. selSql.Append(" and pd.procedureid IN(11, 104, 58) ");
  4679. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  4680. //selSql.Append(" AND PD.KILNID IN(3,4,6) "); // 现在要用隧道窑重烧产品 2024-07-10
  4681. }
  4682. else
  4683. {
  4684. selSql.Append(" and pd.procedureid IN(11,104) ");
  4685. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  4686. selSql.Append(" AND PD.KILNID IN(1,2,5) ");
  4687. }
  4688. // 试验标识
  4689. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  4690. {
  4691. selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
  4692. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  4693. }
  4694. if (se.CreateTimeStart.HasValue)
  4695. {
  4696. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  4697. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4698. }
  4699. if (se.CreateTimeEnd.HasValue)
  4700. {
  4701. selSql.Append(" AND pd.createtime < :CreateTimeEnd\n");
  4702. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4703. }
  4704. if (!string.IsNullOrEmpty(se.GoodsIDS))
  4705. {
  4706. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  4707. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4708. }
  4709. if (se.ProductionLineID.HasValue)
  4710. {
  4711. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  4712. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4713. }
  4714. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  4715. {
  4716. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  4717. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  4718. }
  4719. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4720. {
  4721. selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
  4722. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4723. }
  4724. if (se.KilnID.HasValue)
  4725. {
  4726. selSql.Append(" AND pd.KilnID = :KilnID\n");
  4727. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4728. }
  4729. //sqlString = @"
  4730. //UNION ALL
  4731. //SELECT T.GOODSLEVELTYPEID,
  4732. // T.BARCODE,
  4733. // T.PRODUCTIONLINEID,
  4734. // T.GOODSID,
  4735. // T.KILNID,
  4736. // T.KILNCARBATCHNO,
  4737. // 1 AS CC
  4738. // FROM (SELECT PD.GOODSLEVELTYPEID,
  4739. // PD.BARCODE,
  4740. // PD.PRODUCTIONLINEID,
  4741. // PD.GOODSID,
  4742. // PD.KILNID,
  4743. // PD.KILNCARBATCHNO,
  4744. // RANK() OVER(PARTITION BY PD.BARCODE, PD.KILNID ORDER BY PD.PRODUCTIONDATAID DESC) AS RK
  4745. // FROM TP_PM_PRODUCTIONDATA PD
  4746. // INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD
  4747. // ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID
  4748. // WHERE PD.VALUEFLAG = '1'
  4749. // AND PD.MODELTYPE IN (-1, -4, -5)
  4750. // AND PD.ACCOUNTID = :in_AccountID
  4751. // AND LENGTH(PD.KILNCARBATCHNO) > 0
  4752. // AND ((:in_rptSprocedureId IS NULL)
  4753. // OR (:in_rptSprocedureId = 11 AND (GDD.Twoleveltime IS NULL OR pd.createtime < GDD.Twoleveltime))
  4754. // OR (:in_rptSprocedureId = 58 AND GDD.Twoleveltime IS NOT NULL AND pd.createtime >= GDD.Twoleveltime)) ";
  4755. sqlString =
  4756. " union all\n" +
  4757. " select distinct pd.goodsleveltypeid\n" +
  4758. " ,pd.barcode\n" +
  4759. " ,pd.productionlineid\n" +
  4760. " ,pd.goodsid\n" +
  4761. " ,pd.kilnid\n" +
  4762. " ,pd.kilncarbatchno\n" +
  4763. " ,1 cc\n" +
  4764. " from tp_pm_productiondata pd\n" +
  4765. " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid = pd.groutingdailydetailid\n" +
  4766. " INNER JOIN TP_PM_DEFECT d on d.productiondataid=pd.productiondataid \n" + // 并未使用此表,如果无缺陷的产品就查不到了 24-07-11
  4767. " where pd.valueflag = '1'\n" +
  4768. " and pd.modeltype IN (-1, -4, -5)\n" +
  4769. " and pd.CHECKBATCHNO = 1\n" +
  4770. " and pd.AccountID = :in_AccountID\n" +
  4771. " AND (:RECYCLINGFLAG IS NULL OR gdd.RECYCLINGFLAG = :RECYCLINGFLAG)\n" +
  4772. " and length(pd.kilncarbatchno) > 0\n";
  4773. selSql.Append(sqlString);
  4774. if (se.RptSProcedureID == 58)
  4775. {
  4776. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  4777. //selSql.Append(" AND PD.KILNID IN(3,4,6) "); // 现在要用隧道窑重烧产品 2024-07-10
  4778. }
  4779. else
  4780. {
  4781. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  4782. selSql.Append(" AND PD.KILNID IN(1,2,5) ");
  4783. }
  4784. // 试验标识
  4785. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  4786. {
  4787. selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
  4788. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  4789. }
  4790. if (se.CreateTimeStart.HasValue)
  4791. {
  4792. //selSql.Append(" AND pd.checktime >= :checktimeStart\n");
  4793. selSql.Append(" AND pd.createtime >= :checktimeStart\n");
  4794. parameters.Add(new OracleParameter(":checktimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4795. }
  4796. if (se.CreateTimeEnd.HasValue)
  4797. {
  4798. //selSql.Append(" AND pd.checktime < :checktimeEnd\n");
  4799. selSql.Append(" AND pd.createtime < :checktimeEnd\n");
  4800. parameters.Add(new OracleParameter(":checktimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4801. }
  4802. if (!string.IsNullOrEmpty(se.GoodsIDS))
  4803. {
  4804. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  4805. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4806. }
  4807. if (se.ProductionLineID.HasValue)
  4808. {
  4809. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  4810. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4811. }
  4812. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  4813. {
  4814. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  4815. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  4816. }
  4817. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4818. {
  4819. selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
  4820. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4821. }
  4822. if (se.KilnID.HasValue)
  4823. {
  4824. selSql.Append(" AND pd.KilnID = :KilnID\n");
  4825. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4826. }
  4827. sqlString =
  4828. //恒洁三车间特殊处理(质量相关)
  4829. //" and exists\n" +
  4830. //" (select 1\n" +
  4831. //" from tp_pm_productiondata outpd\n" +
  4832. //" where outpd.barcode = pd.barcode\n" +
  4833. ////" and outpd.procedureid = :in_rptSprocedureId\n" +
  4834. //" and (:in_rptSprocedureId is null or outpd.procedureid = :in_rptSprocedureId)\n" +
  4835. //" and (:in_OutProcedureIDS is null or instr(','||:in_OutProcedureIDS||',', ','||outpd.procedureid||',') > 0)\n" +
  4836. //" and outpd.valueflag = '1'\n" +
  4837. //" and outpd.kilncarbatchno = pd.kilncarbatchno)" +
  4838. " and ((:in_rptSprocedureId IS NULL) OR (:in_rptSprocedureId <> 58 and pd.isrefire = '0') or (:in_rptSprocedureId = 58 and pd.isrefire = '6')) \n" +
  4839. //" ) T WHERE T.RK <= 1 \n" +
  4840. // end
  4841. ") ppcc\n" +
  4842. " inner join tp_pc_productionline pcpl\n" +
  4843. " on pcpl.productionlineid = ppcc.productionlineid\n" +
  4844. " inner join tp_mst_kiln mstkiln\n" +
  4845. " on mstkiln.kilnid = ppcc.kilnid\n" +
  4846. " inner join tp_mst_goods mstgoods\n" +
  4847. " on mstgoods.goodsid = ppcc.goodsid\n" +
  4848. " inner join tp_mst_goodstype mstgoodstype\n" +
  4849. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  4850. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  4851. " inner join tp_mst_goodstype mstgoodstype2\n" +
  4852. " on mstgoodstype2.goodstypecode =\n" +
  4853. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  4854. " and mstgoodstype.accountid = mstgoodstype2.accountid\n";
  4855. // 产品类别
  4856. selSql.Append(sqlString);
  4857. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  4858. {
  4859. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
  4860. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  4861. }
  4862. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  4863. {
  4864. selSql.Append(" AND mstgoodstype.GOODSTYPECode LIKE :GoodsTypeCode\n");
  4865. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode + "%", ParameterDirection.Input));
  4866. }
  4867. sqlString =
  4868. " group by grouping sets((pcpl.productionlinename, mstkiln.kilncode, mstgoodstype2.goodstypename,mstgoodstype2.goodstypecode),(pcpl.productionlinename, mstgoodstype2.goodstypename,mstgoodstype2.goodstypecode),(pcpl.productionlinename, mstkiln.kilncode),(pcpl.productionlinename))\n" +
  4869. " order by pcpl.productionlinename\n" +
  4870. " ,mstkiln.kilncode\n" +
  4871. " ,mstgoodstype2.goodstypecode\n" +
  4872. " ) qdgroup\n";
  4873. selSql.Append(sqlString);
  4874. return selSql.ToString();
  4875. }
  4876. /// <summary>
  4877. /// 取得RPT040106画面(缺陷报表)的查询数据
  4878. /// </summary>
  4879. /// <param name="user">登录用户信息</param>
  4880. /// <param name="se">查询条件</param>
  4881. /// <returns>查询结果</returns>
  4882. public static ServiceResultEntity GetRPT040106SData(SUserInfo user, RPT040106_SE se)
  4883. {
  4884. IDBConnection conn = null;
  4885. try
  4886. {
  4887. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4888. string sqlString = null;
  4889. OracleParameter[] parameters = null;
  4890. if (se.OutKilnNumByGoodsType)
  4891. {
  4892. sqlString = "SELECT Defect.productionlinename\n" +
  4893. " ,Defect.procedurename\n" +
  4894. " ,Defect.KILNCODE\n" +
  4895. " ,Defect.Defectcode\n" +
  4896. " ,Defect.Defectname\n" +
  4897. " ,Defect.goodstypename2\n" +
  4898. " ,Defect.DefectCount\n" +
  4899. " ,OUT.outNum OutKilnCount\n" +
  4900. " ,decode(OUT.outNum,\n" +
  4901. " 0,\n" +
  4902. " to_number(NULL),\n" +
  4903. " ROUND(Defect.DefectCount / OUT.outNum, 4)) DefectPercent\n" +
  4904. " FROM (SELECT tp_pc_productionline.productionlinename\n" +
  4905. " ,tp_pc_procedure.procedurename\n" +
  4906. " ,TP_MST_DefectType.Defecttypename\n" +
  4907. " ,TP_MST_Defect.Defectcode\n" +
  4908. " ,TP_MST_Defect.Defectname\n" +
  4909. " ,goodstype2.goodstypename goodstypename2\n" +
  4910. " ,goodstype2.goodstypecode goodstypecode2\n" +
  4911. " --,COUNT(DISTINCT TP_PM_Defect.Barcode) DefectCount\n" +
  4912. " ,COUNT(TP_PM_Defect.Barcode) DefectCount\n" +
  4913. " ,pd.KILNCODE\n" +
  4914. " FROM TP_PM_Defect\n" +
  4915. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE=TP_PM_Defect.Barcode" +
  4916. " LEFT JOIN tp_pc_procedure\n" +
  4917. " ON TP_PM_Defect.ProcedureID = tp_pc_procedure.ProcedureID\n" +
  4918. " LEFT JOIN tp_pc_productionline\n" +
  4919. " ON TP_PM_Defect.Productionlineid =\n" +
  4920. " tp_pc_productionline.Productionlineid\n" +
  4921. " LEFT JOIN TP_MST_Goods\n" +
  4922. " ON TP_PM_Defect.Goodsid = TP_MST_Goods.Goodsid\n" +
  4923. " LEFT JOIN TP_MST_GoodsType\n" +
  4924. " ON TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID\n" +
  4925. " LEFT JOIN TP_MST_GoodsType goodstype2\n" +
  4926. " ON goodstype2.goodstypecode =\n" +
  4927. " substr(TP_MST_GoodsType.goodstypecode, 0, 6)\n" +
  4928. " AND TP_MST_GoodsType.accountid = goodstype2.accountid\n" +
  4929. " LEFT JOIN TP_MST_Defect\n" +
  4930. " ON TP_PM_Defect.DefectID = TP_MST_Defect.DefectID\n" +
  4931. " LEFT JOIN TP_MST_DefectType\n" +
  4932. " ON TP_MST_Defect.DefectTypeID = TP_MST_DefectType.DefectTypeID\n" +
  4933. //"INNER JOIN (SELECT T.*\n" +
  4934. //" FROM (SELECT PD.*,\n" +
  4935. //" RANK() OVER(PARTITION BY PD.BARCODE, PD.KILNID ORDER BY PD.PRODUCTIONDATAID DESC) AS RK\n" +
  4936. //" FROM TP_PM_PRODUCTIONDATA PD\n" +
  4937. //" INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  4938. //" ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID\n" +
  4939. //" WHERE PD.VALUEFLAG = '1'\n" +
  4940. //" AND PD.MODELTYPE IN (-1, -4, -5)\n" +
  4941. //" AND PD.CREATETIME >= :createtimebegin\n" +
  4942. //" AND PD.CREATETIME <= :createtimeend\n" +
  4943. //" AND((:in_rptSprocedureId IS NULL)\n" +
  4944. //" OR(:in_rptSprocedureId = 11 AND(GDD.Twoleveltime IS NULL OR pd.createtime < GDD.Twoleveltime))\n" +
  4945. //" OR(:in_rptSprocedureId = 58 AND GDD.Twoleveltime IS NOT NULL AND pd.createtime >= GDD.Twoleveltime)) ) T\n" +
  4946. //" WHERE T.RK <= 1) PD\n" +
  4947. " INNER JOIN TP_PM_PRODUCTIONDATA PD\n" +
  4948. " ON TP_PM_Defect.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  4949. " AND PD.MODELTYPE IN (-1, -4, -5)\n" +
  4950. " AND PD.CHECKBATCHNO = 1\n" +
  4951. " AND PD.VALUEFLAG = '1'\n" +
  4952. " --LEFT JOIN TP_PM_ProductionData\n" +
  4953. " -- ON TP_PM_ProductionData.ProductionDataID =\n" +
  4954. " -- TP_PM_Defect.ProductionDataID\n" +
  4955. " WHERE TP_PM_Defect.valueflag = '1'\n" +
  4956. " --AND tp_pc_procedure.ModelType = -1\n" +
  4957. " AND TP_PM_Defect.AccountID = :AccountID\n" +
  4958. " AND (:createtimebegin is null or TP_PM_Defect.createtime >= :createtimebegin)\n" +
  4959. " AND (:createtimeend is null or TP_PM_Defect.createtime <= :createtimeend)\n" +
  4960. " AND (:procedureids is null or instr(','||:procedureids||',', ','||TP_PM_Defect.ProcedureID||',') > 0)\n" +
  4961. " AND (:DefectCode is null or instr(TP_MST_Defect.Defectcode, :DefectCode) > 0)\n" +
  4962. " AND (:DefectName is null or instr(TP_MST_Defect.Defectname, :DefectName) > 0)\n" +
  4963. " AND (:RECYCLINGFLAG IS NULL OR gdd.RECYCLINGFLAG = :RECYCLINGFLAG)" +
  4964. // 20250901 增加窑炉查询条件
  4965. " AND (:KilnID IS NULL OR pd.KilnID = :KilnID)\n" +
  4966. " GROUP BY tp_pc_productionline.productionlinename\n" +
  4967. " ,tp_pc_procedure.procedurename\n" +
  4968. " ,TP_MST_DefectType.Defecttypename\n" +
  4969. " ,PD.KILNCODE\n" +
  4970. " ,TP_MST_Defect.Defectcode\n" +
  4971. " ,TP_MST_Defect.Defectname\n" +
  4972. " ,goodstype2.goodstypecode\n" +
  4973. " ,goodstype2.goodstypename) Defect\n" +
  4974. " LEFT JOIN(" +
  4975. " SELECT gt2.goodstypecode goodstypecode2, COUNT(pd.barcode) outNum\n" +
  4976. " FROM tp_pm_productiondata pd\n"+
  4977. " LEFT JOIN tp_mst_goods g on g.goodsid = pd.goodsid\n" +
  4978. " LEFT JOIN tp_mst_goodstype gt on g.goodstypeid = gt.goodstypeid\n" +
  4979. " LEFT JOIN tp_mst_goodstype gt2 on gt2.AccountID = :AccountID and gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)\n" +
  4980. // 恒洁三车间特殊处理(质量相关)
  4981. //" WHERE pd.valueflag = '1'\n" +
  4982. //" AND pd.procedureid = :procedureid\n" +
  4983. " where ((pd.procedureid <> 104 and pd.valueflag = '1') or (pd.procedureid = 104 and pd.checkflag = '1')) \n" +
  4984. " and ((:in_rptSprocedureId = 11 AND ((pd.procedureid = 11 ) OR (pd.procedureid =104 AND pd.isrefire = '0'))) \n" +
  4985. " OR (:in_rptSprocedureId = 58 AND ((pd.procedureid = 58) OR (pd.procedureid =104 AND pd.isrefire = '6'))) \n" +
  4986. " OR (:in_rptSprocedureId not in (11,58) AND pd.procedureid = :in_rptSprocedureId))\n";
  4987. if (se.RptSProcedureID == 58)
  4988. {
  4989. sqlString += " and pd.procedureid IN(11, 104, 58) ";
  4990. // 20250901 增加窑炉查询条件
  4991. sqlString += " AND (:KilnID IS NULL OR pd.KilnID = :KilnID)";
  4992. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  4993. //sqlString += " AND PD.KILNID IN(3,4,6) "; // 现在要用隧道窑重烧产品 2024-07-10
  4994. }
  4995. else
  4996. {
  4997. sqlString += " and pd.procedureid IN(11,104) ";
  4998. // 20250901 增加窑炉查询条件
  4999. sqlString += " AND (:KilnID IS NULL OR pd.KilnID = :KilnID)";
  5000. // 首检标识和重烧标识都不对,这里先用窑炉ID限制一下
  5001. sqlString += " AND PD.KILNID IN(1,2,5) ";
  5002. }
  5003. // end
  5004. sqlString += " AND pd.AccountID = :AccountID\n" +
  5005. " AND ( pd.createtime >= :createtimebegin)\n" +
  5006. " AND ( pd.createtime <= :createtimeend)\n" +
  5007. " GROUP BY gt2.goodstypecode ) OUT \n" +
  5008. " ON OUT.goodstypecode2 = Defect.goodstypecode2 \n";
  5009. parameters = new OracleParameter[]
  5010. {
  5011. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  5012. new OracleParameter(":createtimebegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  5013. new OracleParameter(":createtimeend", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  5014. new OracleParameter(":procedureids", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input),
  5015. new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input),
  5016. new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input),
  5017. //new OracleParameter(":OutKilnCount", OracleDbType.Int32, outKilnCount, ParameterDirection.Input),
  5018. new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input),
  5019. new OracleParameter(":RECYCLINGFLAG", OracleDbType.NVarchar2, se.TestRecyclingflag, ParameterDirection.Input),
  5020. new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input),
  5021. };
  5022. }
  5023. else
  5024. {
  5025. sqlString = "SELECT COUNT(pd.barcode) \n" +
  5026. " FROM tp_pm_productiondata pd\n" +
  5027. // 恒洁三车间特殊处理(质量相关)
  5028. //" WHERE pd.valueflag = '1'\n" +
  5029. //" AND pd.procedureid = :procedureid\n" +
  5030. " where ((pd.procedureid <> 104 and pd.valueflag = '1') or (pd.procedureid = 104 and pd.checkflag = '1')) \n" +
  5031. " and ((:in_rptSprocedureId = 11 AND ((pd.procedureid = 11 ) OR (pd.procedureid =104 AND pd.isrefire = '0'))) \n" +
  5032. " OR (:in_rptSprocedureId = 58 AND ((pd.procedureid = 58) OR (pd.procedureid =104 AND pd.isrefire = '6'))) \n" +
  5033. " OR (:in_rptSprocedureId not in (11,58) AND pd.procedureid = :in_rptSprocedureId))\n" +
  5034. // 20250901 增加窑炉查询条件
  5035. " AND (:KilnID IS NULL OR pd.KilnID = :KilnID)\n" +
  5036. // end
  5037. " AND pd.AccountID = :AccountID\n" +
  5038. " AND (:createtimebegin is null or pd.createtime >= :createtimebegin)\n" +
  5039. " AND (:createtimeend is null or pd.createtime <= :createtimeend)";
  5040. parameters = new OracleParameter[]
  5041. {
  5042. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  5043. new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input),
  5044. new OracleParameter(":createtimebegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  5045. new OracleParameter(":createtimeend", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  5046. new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input),
  5047. };
  5048. int outKilnCount = Convert.ToInt32(conn.GetSqlResultToStr(sqlString, parameters));
  5049. sqlString = "SELECT Defect.productionlinename\n" +
  5050. " ,Defect.procedurename\n" +
  5051. " ,Defect.KILNCODE\n" +
  5052. " ,Defect.Defectcode\n" +
  5053. " ,Defect.Defectname\n" +
  5054. " ,Defect.goodstypename2\n" +
  5055. " ,Defect.DefectCount\n" +
  5056. " ,:OutKilnCount OutKilnCount\n" +
  5057. " ,decode(:OutKilnCount,\n" +
  5058. " 0,\n" +
  5059. " to_number(NULL),\n" +
  5060. " ROUND(Defect.DefectCount / :OutKilnCount, 4)) DefectPercent\n" +
  5061. " FROM (SELECT tp_pc_productionline.productionlinename\n" +
  5062. " ,tp_pc_procedure.procedurename\n" +
  5063. " ,TP_MST_DefectType.Defecttypename\n" +
  5064. " ,PD.KILNCODE\n" +
  5065. " ,TP_MST_Defect.Defectcode\n" +
  5066. " ,TP_MST_Defect.Defectname\n" +
  5067. " ,goodstype2.goodstypename goodstypename2\n" +
  5068. " ,:OutKilnCount OutKilnCount\n" +
  5069. " --,COUNT(DISTINCT TP_PM_Defect.Barcode) DefectCount\n" +
  5070. " ,COUNT(TP_PM_Defect.Barcode) DefectCount\n" +
  5071. " FROM TP_PM_Defect\n" +
  5072. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE=TP_PM_Defect.Barcode" +
  5073. " LEFT JOIN tp_pc_procedure\n" +
  5074. " ON TP_PM_Defect.ProcedureID = tp_pc_procedure.ProcedureID\n" +
  5075. " LEFT JOIN tp_pc_productionline\n" +
  5076. " ON TP_PM_Defect.Productionlineid =\n" +
  5077. " tp_pc_productionline.Productionlineid\n" +
  5078. " LEFT JOIN TP_MST_Goods\n" +
  5079. " ON TP_PM_Defect.Goodsid = TP_MST_Goods.Goodsid\n" +
  5080. " LEFT JOIN TP_MST_GoodsType\n" +
  5081. " ON TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID\n" +
  5082. " LEFT JOIN TP_MST_GoodsType goodstype2\n" +
  5083. " ON goodstype2.goodstypecode =\n" +
  5084. " substr(TP_MST_GoodsType.goodstypecode, 0, 6)\n" +
  5085. " AND TP_MST_GoodsType.accountid = goodstype2.accountid\n" +
  5086. " LEFT JOIN TP_MST_Defect\n" +
  5087. " ON TP_PM_Defect.DefectID = TP_MST_Defect.DefectID\n" +
  5088. " LEFT JOIN TP_MST_DefectType\n" +
  5089. " ON TP_MST_Defect.DefectTypeID = TP_MST_DefectType.DefectTypeID\n" +
  5090. //" --LEFT JOIN TP_PM_ProductionData\n" +
  5091. //" -- ON TP_PM_ProductionData.ProductionDataID =\n" +
  5092. //" -- TP_PM_Defect.ProductionDataID\n"+
  5093. " inner JOIN TP_PM_ProductionData pd\n" +
  5094. " ON pd.PRODUCTIONDATAID =\n" +
  5095. " TP_PM_Defect.ProductionDataID\n" +
  5096. " WHERE TP_PM_Defect.valueflag = '1'\n" +
  5097. " --AND tp_pc_procedure.ModelType = -1\n" +
  5098. " AND TP_PM_Defect.AccountID = :AccountID\n" +
  5099. " AND (:createtimebegin is null or TP_PM_Defect.createtime >= :createtimebegin)\n" +
  5100. " AND (:createtimeend is null or TP_PM_Defect.createtime <= :createtimeend)\n" +
  5101. " AND (:procedureids is null or instr(','||:procedureids||',', ','||TP_PM_Defect.ProcedureID||',') > 0)\n" +
  5102. " AND (:DefectCode is null or instr(TP_MST_Defect.Defectcode, :DefectCode) > 0)\n" +
  5103. " AND (:DefectName is null or instr(TP_MST_Defect.Defectname, :DefectName) > 0)\n" +
  5104. " AND (:RECYCLINGFLAG IS NULL OR gdd.RECYCLINGFLAG = :RECYCLINGFLAG)" +
  5105. // 20250901 增加窑炉查询条件
  5106. " AND (:KilnID IS NULL OR pd.KilnID = :KilnID)\n" +
  5107. " GROUP BY tp_pc_productionline.productionlinename\n" +
  5108. " ,tp_pc_procedure.procedurename\n" +
  5109. " ,TP_MST_DefectType.Defecttypename\n" +
  5110. " ,PD.KILNCODE\n" +
  5111. " ,TP_MST_Defect.Defectcode\n" +
  5112. " ,TP_MST_Defect.Defectname\n" +
  5113. " ,goodstype2.goodstypename) Defect";
  5114. parameters = new OracleParameter[]
  5115. {
  5116. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  5117. new OracleParameter(":createtimebegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  5118. new OracleParameter(":createtimeend", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  5119. new OracleParameter(":procedureids", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input),
  5120. new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input),
  5121. new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input),
  5122. new OracleParameter(":OutKilnCount", OracleDbType.Int32, outKilnCount, ParameterDirection.Input),
  5123. new OracleParameter(":RECYCLINGFLAG", OracleDbType.NVarchar2, se.TestRecyclingflag, ParameterDirection.Input),
  5124. new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input),
  5125. };
  5126. }
  5127. DataTable data = conn.GetSqlResultToDt(sqlString, parameters);
  5128. ServiceResultEntity sre = new ServiceResultEntity();
  5129. if (data == null || data.Rows.Count == 0)
  5130. {
  5131. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5132. return sre;
  5133. }
  5134. sre.Data = new DataSet();
  5135. sre.Data.Tables.Add(data);
  5136. return sre;
  5137. }
  5138. catch (Exception ex)
  5139. {
  5140. throw ex;
  5141. }
  5142. finally
  5143. {
  5144. if (conn != null &&
  5145. conn.ConnState == ConnectionState.Open)
  5146. {
  5147. conn.Close();
  5148. }
  5149. }
  5150. }
  5151. /// <summary>
  5152. /// 取得RPT040107画面(注浆产品工序分析表)的查询数据
  5153. /// </summary>
  5154. /// <param name="user">登录用户信息</param>
  5155. /// <param name="se">查询条件</param>
  5156. /// <returns>查询结果</returns>
  5157. public static ServiceResultEntity GetRPT040107SData(SUserInfo user, RPT040107_SE se)
  5158. {
  5159. IDBConnection conn = null;
  5160. try
  5161. {
  5162. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5163. List<OracleParameter> parameters = new List<OracleParameter>();
  5164. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  5165. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  5166. string sqlString =
  5167. "SELECT LISTAGG('''' || p.procedureid || ''' AS ' || 'P' || p.procedureid,\n" +
  5168. " ',') WITHIN GROUP(ORDER BY p.displayno, p.pid) pivotcol\n" +
  5169. " ,LISTAGG('sum(pd.P' || p.procedureid || '_BC) AS \"' ||\n" +
  5170. " p.procedurename || '\"',\n" +
  5171. " ',') WITHIN GROUP(ORDER BY p.displayno, p.pid) groupsum\n" +
  5172. " FROM (SELECT to_char(p.procedureid) procedureid\n" +
  5173. " ,to_char(p.procedurename) procedurename\n" +
  5174. " ,p.displayno\n" +
  5175. " ,p.productionlineid plid\n" +
  5176. " ,p.procedureid pid\n" +
  5177. " FROM tp_pc_procedure p\n" +
  5178. " WHERE p.valueflag = '1'\n" +
  5179. " AND p.modeltype <> -1\n" +
  5180. " AND p.accountid = :AccountID\n" +
  5181. " UNION ALL\n" +
  5182. " SELECT to_char(p.procedureid) || 'S'\n" +
  5183. " ,to_char(p.procedurename) || '(不合格)'\n" +
  5184. " ,p.displayno\n" +
  5185. " ,p.productionlineid plid\n" +
  5186. " ,p.procedureid pid\n" +
  5187. " FROM tp_pc_procedure p\n" +
  5188. " WHERE p.valueflag = '1'\n" +
  5189. " AND p.modeltype = -1\n" +
  5190. " AND p.accountid = :AccountID) p" +
  5191. " WHERE exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=p.plid)) \n" +
  5192. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=p.pid)) \n";
  5193. // 生产线
  5194. if (se.ProductionLineID.HasValue)
  5195. {
  5196. sqlString = sqlString + " AND p.plid = :ProductionLineID ";
  5197. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  5198. }
  5199. // 生产工序
  5200. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  5201. {
  5202. sqlString = sqlString + " AND instr(:procedureids, ','||p.pid||',')>0 ";
  5203. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  5204. }
  5205. DataTable cols = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  5206. ServiceResultEntity sre = new ServiceResultEntity();
  5207. if (cols == null || cols.Rows.Count == 0)
  5208. {
  5209. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5210. return sre;
  5211. }
  5212. string pivotcol = cols.Rows[0]["pivotcol"].ToString();
  5213. string groupsum = cols.Rows[0]["groupsum"].ToString();
  5214. if (string.IsNullOrEmpty(pivotcol) || string.IsNullOrEmpty(groupsum))
  5215. {
  5216. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5217. return sre;
  5218. }
  5219. parameters.Clear();
  5220. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  5221. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  5222. sqlString =
  5223. "WITH pd_data AS\n" +
  5224. " (SELECT DISTINCT pd.goodsid pdgoodsid\n" +
  5225. " ,pd.groutingdailydetailid\n" +
  5226. " ,decode(pd.MODELTYPE,\n" +
  5227. " -1,\n" +
  5228. " to_char(pd.procedureid) || 'S',\n" +
  5229. " to_char(pd.procedureid)) procedureid\n" +
  5230. " FROM tp_pm_productiondata pd\n" +
  5231. " LEFT JOIN tp_mst_goods goods\n" +
  5232. " ON goods.goodsid = pd.goodsid\n" +
  5233. " LEFT JOIN tp_mst_goodstype gt\n" +
  5234. " ON gt.goodstypeid = goods.goodstypeid\n" +
  5235. " WHERE pd.valueflag = '1'\n" +
  5236. " AND (pd.MODELTYPE <> -1 OR pd.goodsleveltypeid IN (6, 7))\n" +
  5237. " AND pd.accountid = :AccountID\n" +
  5238. (se.Specialrepairflag ? " AND ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  5239. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=pd.ProductionLineID)) \n" +
  5240. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=pd.procedureid)) \n";
  5241. // 生产线
  5242. if (se.ProductionLineID.HasValue)
  5243. {
  5244. sqlString = sqlString + " AND pd.productionlineid = :ProductionLineID ";
  5245. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  5246. }
  5247. // 生产工序
  5248. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  5249. {
  5250. sqlString = sqlString + " AND instr(:procedureids, ','||pd.procedureid||',')>0 ";
  5251. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  5252. }
  5253. // 产品型号
  5254. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  5255. {
  5256. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  5257. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  5258. }
  5259. // 产品编码
  5260. if (!string.IsNullOrEmpty(se.GoodsCode))
  5261. {
  5262. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  5263. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  5264. }
  5265. // 注浆时间
  5266. if (se.GTimeStart.HasValue)
  5267. {
  5268. sqlString = sqlString + " AND pd.GROUTINGDATE >=:GTimeStart ";
  5269. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  5270. }
  5271. if (se.GTimeEnd.HasValue)
  5272. {
  5273. sqlString = sqlString + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  5274. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  5275. }
  5276. sqlString +=
  5277. " ),\n" +
  5278. "pivot_data AS\n" +
  5279. " (SELECT *\n" +
  5280. " FROM pd_data\n" +
  5281. " PIVOT(COUNT(groutingdailydetailid) bc\n" +
  5282. " FOR procedureid IN(" + pivotcol + ")))\n" +
  5283. "SELECT decode(grouping_id(groutdetail.goodstypename2, groutdetail.goodscode),\n" +
  5284. " 3,\n" +
  5285. " '合计',\n" +
  5286. " 1,\n" +
  5287. " '小计【' || groutdetail.goodstypename2 || '】',\n" +
  5288. " groutdetail.goodstypename2) \"产量类别\"\n" +
  5289. " ,decode(grouping_id(groutdetail.goodstypename2, groutdetail.goodscode),\n" +
  5290. " 0,\n" +
  5291. " groutdetail.goodscode,\n" +
  5292. " '--') \"产品编码\"\n" +
  5293. " ,SUM(groutdetail.groutcount) \"注浆数量\"\n" +
  5294. " ,SUM(groutdetail.barcodecount) \"绑条码数量\"\n" +
  5295. " ,SUM(groutdetail.scrapcount) \"开模损坯\"\n" +
  5296. " ," + groupsum + "\n" +
  5297. " FROM (SELECT gdd.goodsid, gt2.goodstypename goodstypename2, goods.goodscode\n" +
  5298. " ,COUNT(gdd.groutingdailydetailid) AS groutcount\n" +
  5299. " ,SUM(decode(gdd.barcode, NULL, 0, 1)) AS barcodecount\n" +
  5300. " ,SUM(decode(gdd.scrapflag, '1', 1, 0)) AS scrapcount\n" +
  5301. " FROM tp_pm_groutingdailydetail gdd\n" +
  5302. " LEFT JOIN tp_mst_goods goods\n" +
  5303. " ON goods.goodsid = gdd.goodsid\n" +
  5304. " LEFT JOIN tp_mst_goodstype gt\n" +
  5305. " ON gt.goodstypeid = goods.goodstypeid\n" +
  5306. " LEFT JOIN tp_mst_goodstype gt2\n" +
  5307. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  5308. " AND gt2.accountid = gt.accountid\n" +
  5309. " WHERE gdd.valueflag = '1'\n" +
  5310. " AND gdd.accountid = :AccountID\n";
  5311. // 产品型号
  5312. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  5313. {
  5314. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  5315. }
  5316. // 产品编码
  5317. if (!string.IsNullOrEmpty(se.GoodsCode))
  5318. {
  5319. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  5320. }
  5321. // 注浆时间
  5322. if (se.GTimeStart.HasValue)
  5323. {
  5324. sqlString = sqlString + " AND gdd.GROUTINGDATE >=:GTimeStart ";
  5325. }
  5326. if (se.GTimeEnd.HasValue)
  5327. {
  5328. sqlString = sqlString + " AND gdd.GROUTINGDATE <= :GTimeEnd ";
  5329. }
  5330. sqlString +=
  5331. " AND gdd.groutingflag = '1'\n" +
  5332. " GROUP BY gdd.goodsid, gt2.goodstypename, goods.goodscode) groutdetail\n" +
  5333. " LEFT JOIN pivot_data pd\n" +
  5334. " ON pd.pdgoodsid = groutdetail.goodsid\n" +
  5335. " GROUP BY GROUPING SETS((groutdetail.goodstypename2, groutdetail.goodscode),(groutdetail.goodstypename2),())\n" +
  5336. " ORDER BY groutdetail.goodstypename2, groutdetail.goodscode";
  5337. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  5338. if (data == null || data.Rows.Count == 0)
  5339. {
  5340. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5341. return sre;
  5342. }
  5343. sre.Data = new DataSet();
  5344. sre.Data.Tables.Add(data);
  5345. return sre;
  5346. }
  5347. catch (Exception ex)
  5348. {
  5349. throw ex;
  5350. }
  5351. finally
  5352. {
  5353. if (conn != null &&
  5354. conn.ConnState == ConnectionState.Open)
  5355. {
  5356. conn.Close();
  5357. }
  5358. }
  5359. }
  5360. /// <summary>
  5361. /// 取得RPT040108画面(成型线产量分析表)的查询数据
  5362. /// </summary>
  5363. /// <param name="user">登录用户信息</param>
  5364. /// <param name="se">查询条件</param>
  5365. /// <returns>查询结果</returns>
  5366. public static ServiceResultEntity GetRPT040108SData(SUserInfo user, RPT040108_SE se)
  5367. {
  5368. IDBConnection conn = null;
  5369. try
  5370. {
  5371. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5372. //string sqlString =
  5373. // "SELECT t.groutinglinecode\n" +
  5374. // " ,t.BuildingNo\n" +
  5375. // " ,t.FloorNo\n" +
  5376. // " ,t.GroutingLineNo\n" +
  5377. // " ,t.usercode\n" +
  5378. // " ,t.goodscode\n" +
  5379. // " ,t.GOODSSPECIFICATION\n" +
  5380. // " ,t.goodstypename\n" +
  5381. // //" ,round(AVG(t.MouldQuantity), 2) MouldQuantity\n" +
  5382. // " ,AVG(t.MouldQuantity) MouldQuantity\n" +
  5383. // " ,SUM(decode(t.gday, '01', t.c, 0)) c01\n" +
  5384. // " ,SUM(decode(t.dday, '01', t.d, 0)) d01\n" +
  5385. // " ,SUM(decode(t.gday, '02', t.c, 0)) c02\n" +
  5386. // " ,SUM(decode(t.dday, '02', t.d, 0)) d02\n" +
  5387. // " ,SUM(decode(t.gday, '03', t.c, 0)) c03\n" +
  5388. // " ,SUM(decode(t.dday, '03', t.d, 0)) d03\n" +
  5389. // " ,SUM(decode(t.gday, '04', t.c, 0)) c04\n" +
  5390. // " ,SUM(decode(t.dday, '04', t.d, 0)) d04\n" +
  5391. // " ,SUM(decode(t.gday, '05', t.c, 0)) c05\n" +
  5392. // " ,SUM(decode(t.dday, '05', t.d, 0)) d05\n" +
  5393. // " ,SUM(decode(t.gday, '06', t.c, 0)) c06\n" +
  5394. // " ,SUM(decode(t.dday, '06', t.d, 0)) d06\n" +
  5395. // " ,SUM(decode(t.gday, '07', t.c, 0)) c07\n" +
  5396. // " ,SUM(decode(t.dday, '07', t.d, 0)) d07\n" +
  5397. // " ,SUM(decode(t.gday, '08', t.c, 0)) c08\n" +
  5398. // " ,SUM(decode(t.dday, '08', t.d, 0)) d08\n" +
  5399. // " ,SUM(decode(t.gday, '09', t.c, 0)) c09\n" +
  5400. // " ,SUM(decode(t.dday, '09', t.d, 0)) d09\n" +
  5401. // " ,SUM(decode(t.gday, '10', t.c, 0)) c10\n" +
  5402. // " ,SUM(decode(t.dday, '10', t.d, 0)) d10\n" +
  5403. // " ,SUM(decode(t.gday, '11', t.c, 0)) c11\n" +
  5404. // " ,SUM(decode(t.dday, '11', t.d, 0)) d11\n" +
  5405. // " ,SUM(decode(t.gday, '12', t.c, 0)) c12\n" +
  5406. // " ,SUM(decode(t.dday, '12', t.d, 0)) d12\n" +
  5407. // " ,SUM(decode(t.gday, '13', t.c, 0)) c13\n" +
  5408. // " ,SUM(decode(t.dday, '13', t.d, 0)) d13\n" +
  5409. // " ,SUM(decode(t.gday, '14', t.c, 0)) c14\n" +
  5410. // " ,SUM(decode(t.dday, '14', t.d, 0)) d14\n" +
  5411. // " ,SUM(decode(t.gday, '15', t.c, 0)) c15\n" +
  5412. // " ,SUM(decode(t.dday, '15', t.d, 0)) d15\n" +
  5413. // " ,SUM(decode(t.gday, '16', t.c, 0)) c16\n" +
  5414. // " ,SUM(decode(t.dday, '16', t.d, 0)) d16\n" +
  5415. // " ,SUM(decode(t.gday, '17', t.c, 0)) c17\n" +
  5416. // " ,SUM(decode(t.dday, '17', t.d, 0)) d17\n" +
  5417. // " ,SUM(decode(t.gday, '18', t.c, 0)) c18\n" +
  5418. // " ,SUM(decode(t.dday, '18', t.d, 0)) d18\n" +
  5419. // " ,SUM(decode(t.gday, '19', t.c, 0)) c19\n" +
  5420. // " ,SUM(decode(t.dday, '19', t.d, 0)) d19\n" +
  5421. // " ,SUM(decode(t.gday, '20', t.c, 0)) c20\n" +
  5422. // " ,SUM(decode(t.dday, '20', t.d, 0)) d20\n" +
  5423. // " ,SUM(decode(t.gday, '21', t.c, 0)) c21\n" +
  5424. // " ,SUM(decode(t.dday, '21', t.d, 0)) d21\n" +
  5425. // " ,SUM(decode(t.gday, '22', t.c, 0)) c22\n" +
  5426. // " ,SUM(decode(t.dday, '22', t.d, 0)) d22\n" +
  5427. // " ,SUM(decode(t.gday, '23', t.c, 0)) c23\n" +
  5428. // " ,SUM(decode(t.dday, '23', t.d, 0)) d23\n" +
  5429. // " ,SUM(decode(t.gday, '24', t.c, 0)) c24\n" +
  5430. // " ,SUM(decode(t.dday, '24', t.d, 0)) d24\n" +
  5431. // " ,SUM(decode(t.gday, '25', t.c, 0)) c25\n" +
  5432. // " ,SUM(decode(t.dday, '25', t.d, 0)) d25\n" +
  5433. // " ,SUM(decode(t.gday, '26', t.c, 0)) c26\n" +
  5434. // " ,SUM(decode(t.dday, '26', t.d, 0)) d26\n" +
  5435. // " ,SUM(decode(t.gday, '27', t.c, 0)) c27\n" +
  5436. // " ,SUM(decode(t.dday, '27', t.d, 0)) d27\n" +
  5437. // " ,SUM(decode(t.gday, '28', t.c, 0)) c28\n" +
  5438. // " ,SUM(decode(t.dday, '28', t.d, 0)) d28\n" +
  5439. // " ,SUM(decode(t.gday, '29', t.c, 0)) c29\n" +
  5440. // " ,SUM(decode(t.dday, '29', t.d, 0)) d29\n" +
  5441. // " ,SUM(decode(t.gday, '30', t.c, 0)) c30\n" +
  5442. // " ,SUM(decode(t.dday, '30', t.d, 0)) d30\n" +
  5443. // " ,SUM(decode(t.gday, '31', t.c, 0)) c31\n" +
  5444. // " ,SUM(decode(t.dday, '31', t.d, 0)) d31\n" +
  5445. // " FROM (SELECT gd.groutinglinecode\n" +
  5446. // " ,gl.BuildingNo\n" +
  5447. // " ,gl.FloorNo\n" +
  5448. // " ,gl.GroutingLineNo\n" +
  5449. // " ,gd.usercode\n" +
  5450. // " ,gdd.goodscode\n" +
  5451. // " ,g.GOODSSPECIFICATION\n" +
  5452. // " ,gt.goodstypename\n" +
  5453. // //" ,gd.MouldQuantity\n" +
  5454. // " ,gl.MouldQuantity\n" +
  5455. // " ,to_char(gd.groutingdate, 'dd') AS gday\n" +
  5456. // " ,to_char(gdd.delivertime, 'dd') AS dday\n" +
  5457. // " , CASE\n" +
  5458. // " WHEN gd.groutingdate >= :GDateBegin AND\n" +
  5459. // " gd.groutingdate <= :GDateEnd AND\n" +
  5460. // " gdd.GroutingFlag = '1' AND gdd.ScrapFlag = '0' THEN\n" +
  5461. // " 1\n" +
  5462. // " ELSE\n" +
  5463. // " 0\n" +
  5464. // " END c -- 成坯量\n" +
  5465. // " , CASE\n" +
  5466. // " WHEN gdd.delivertime >= :GDateBegin AND\n" +
  5467. // " gdd.delivertime <= :GDateEnd AND\n" +
  5468. // " gdd.deliverflag = '1' THEN\n" +
  5469. // " 1\n" +
  5470. // " ELSE\n" +
  5471. // " 0\n" +
  5472. // " END d -- 交坯量\n" +
  5473. // " FROM TP_PM_GroutingDaily gd\n" +
  5474. // " INNER JOIN TP_PM_GroutingDailyDetail gdd\n" +
  5475. // " ON gdd.groutingdailyid = gd.groutingdailyid\n" +
  5476. // " INNER JOIN TP_PC_GroutingLine gl \n" +
  5477. // " ON gl.groutinglineid = gd.groutinglineid\n" +
  5478. // " INNER JOIN TP_MST_Goods g\n" +
  5479. // " ON g.goodsid = gdd.goodsid\n" +
  5480. // " INNER JOIN TP_MST_GOODSTYPE gt\n" +
  5481. // " ON gt.goodstypeid = g.goodstypeid\n" +
  5482. // " WHERE gd.accountid = :AccountID\n" +
  5483. // " AND ((gd.groutingdate >= :GDateBegin AND\n" +
  5484. // " gd.groutingdate <= :GDateEnd) OR\n" +
  5485. // " (gdd.delivertime >= :GDateBegin AND\n" +
  5486. // " gdd.delivertime <= :GDateEnd))\n" +
  5487. // " AND (:groutinglinecode is null or instr(gd.groutinglinecode, :groutinglinecode) > 0)\n" +
  5488. // " AND (:groutingusercode is null or instr(gdd.usercode, :groutingusercode) > 0)\n" +
  5489. // " AND (:goodscode is null or instr(gdd.goodscode, :goodscode) > 0)\n" +
  5490. // " AND (:goodstypecode is null or instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  5491. // " ) t\n" +
  5492. // " GROUP BY t.groutinglinecode\n" +
  5493. // " ,t.BuildingNo\n" +
  5494. // " ,t.FloorNo\n" +
  5495. // " ,t.GroutingLineNo\n" +
  5496. // " ,t.usercode\n" +
  5497. // " ,t.goodscode\n" +
  5498. // " ,t.GOODSSPECIFICATION\n" +
  5499. // " ,t.goodstypename\n" +
  5500. // " ORDER BY t.groutinglinecode, t.usercode, t.goodscode";
  5501. string sqlString = "select nvl(t.groutinglinecode, '--') groutinglinecode\n" +
  5502. " ,nvl(t.BuildingNo, '--') BuildingNo\n" +
  5503. " ,nvl(t.FloorNo, '--') FloorNo\n" +
  5504. " ,nvl(t.GroutingLineNo, '--') GroutingLineNo\n" +
  5505. " ,nvl(t.usercode, '--') usercode\n" +
  5506. " ,nvl2(t.groutinglinecode\n" +
  5507. " ,t.goodscode\n" +
  5508. " ,nvl2(t.goodscode, '小计[' || t.goodscode || ']', '合计')) goodscode\n" +
  5509. " ,nvl2(t.goodscode, t.GOODSSPECIFICATION, '--') GOODSSPECIFICATION\n" +
  5510. " ,nvl2(t.goodscode, t.goodstypename, '--') goodstypename\n" +
  5511. " ,nvl2(t.groutinglinecode, avg(t.MouldQuantity), null) MouldQuantity\n" +
  5512. " ,sum(decode(t.gday, '01', t.c, 0)) c01\n" +
  5513. " ,sum(decode(t.dday, '01', t.d, 0)) d01\n" +
  5514. " ,sum(decode(t.gday, '02', t.c, 0)) c02\n" +
  5515. " ,sum(decode(t.dday, '02', t.d, 0)) d02\n" +
  5516. " ,sum(decode(t.gday, '03', t.c, 0)) c03\n" +
  5517. " ,sum(decode(t.dday, '03', t.d, 0)) d03\n" +
  5518. " ,sum(decode(t.gday, '04', t.c, 0)) c04\n" +
  5519. " ,sum(decode(t.dday, '04', t.d, 0)) d04\n" +
  5520. " ,sum(decode(t.gday, '05', t.c, 0)) c05\n" +
  5521. " ,sum(decode(t.dday, '05', t.d, 0)) d05\n" +
  5522. " ,sum(decode(t.gday, '06', t.c, 0)) c06\n" +
  5523. " ,sum(decode(t.dday, '06', t.d, 0)) d06\n" +
  5524. " ,sum(decode(t.gday, '07', t.c, 0)) c07\n" +
  5525. " ,sum(decode(t.dday, '07', t.d, 0)) d07\n" +
  5526. " ,sum(decode(t.gday, '08', t.c, 0)) c08\n" +
  5527. " ,sum(decode(t.dday, '08', t.d, 0)) d08\n" +
  5528. " ,sum(decode(t.gday, '09', t.c, 0)) c09\n" +
  5529. " ,sum(decode(t.dday, '09', t.d, 0)) d09\n" +
  5530. " ,sum(decode(t.gday, '10', t.c, 0)) c10\n" +
  5531. " ,sum(decode(t.dday, '10', t.d, 0)) d10\n" +
  5532. " ,sum(decode(t.gday, '11', t.c, 0)) c11\n" +
  5533. " ,sum(decode(t.dday, '11', t.d, 0)) d11\n" +
  5534. " ,sum(decode(t.gday, '12', t.c, 0)) c12\n" +
  5535. " ,sum(decode(t.dday, '12', t.d, 0)) d12\n" +
  5536. " ,sum(decode(t.gday, '13', t.c, 0)) c13\n" +
  5537. " ,sum(decode(t.dday, '13', t.d, 0)) d13\n" +
  5538. " ,sum(decode(t.gday, '14', t.c, 0)) c14\n" +
  5539. " ,sum(decode(t.dday, '14', t.d, 0)) d14\n" +
  5540. " ,sum(decode(t.gday, '15', t.c, 0)) c15\n" +
  5541. " ,sum(decode(t.dday, '15', t.d, 0)) d15\n" +
  5542. " ,sum(decode(t.gday, '16', t.c, 0)) c16\n" +
  5543. " ,sum(decode(t.dday, '16', t.d, 0)) d16\n" +
  5544. " ,sum(decode(t.gday, '17', t.c, 0)) c17\n" +
  5545. " ,sum(decode(t.dday, '17', t.d, 0)) d17\n" +
  5546. " ,sum(decode(t.gday, '18', t.c, 0)) c18\n" +
  5547. " ,sum(decode(t.dday, '18', t.d, 0)) d18\n" +
  5548. " ,sum(decode(t.gday, '19', t.c, 0)) c19\n" +
  5549. " ,sum(decode(t.dday, '19', t.d, 0)) d19\n" +
  5550. " ,sum(decode(t.gday, '20', t.c, 0)) c20\n" +
  5551. " ,sum(decode(t.dday, '20', t.d, 0)) d20\n" +
  5552. " ,sum(decode(t.gday, '21', t.c, 0)) c21\n" +
  5553. " ,sum(decode(t.dday, '21', t.d, 0)) d21\n" +
  5554. " ,sum(decode(t.gday, '22', t.c, 0)) c22\n" +
  5555. " ,sum(decode(t.dday, '22', t.d, 0)) d22\n" +
  5556. " ,sum(decode(t.gday, '23', t.c, 0)) c23\n" +
  5557. " ,sum(decode(t.dday, '23', t.d, 0)) d23\n" +
  5558. " ,sum(decode(t.gday, '24', t.c, 0)) c24\n" +
  5559. " ,sum(decode(t.dday, '24', t.d, 0)) d24\n" +
  5560. " ,sum(decode(t.gday, '25', t.c, 0)) c25\n" +
  5561. " ,sum(decode(t.dday, '25', t.d, 0)) d25\n" +
  5562. " ,sum(decode(t.gday, '26', t.c, 0)) c26\n" +
  5563. " ,sum(decode(t.dday, '26', t.d, 0)) d26\n" +
  5564. " ,sum(decode(t.gday, '27', t.c, 0)) c27\n" +
  5565. " ,sum(decode(t.dday, '27', t.d, 0)) d27\n" +
  5566. " ,sum(decode(t.gday, '28', t.c, 0)) c28\n" +
  5567. " ,sum(decode(t.dday, '28', t.d, 0)) d28\n" +
  5568. " ,sum(decode(t.gday, '29', t.c, 0)) c29\n" +
  5569. " ,sum(decode(t.dday, '29', t.d, 0)) d29\n" +
  5570. " ,sum(decode(t.gday, '30', t.c, 0)) c30\n" +
  5571. " ,sum(decode(t.dday, '30', t.d, 0)) d30\n" +
  5572. " ,sum(decode(t.gday, '31', t.c, 0)) c31\n" +
  5573. " ,sum(decode(t.dday, '31', t.d, 0)) d31\n" +
  5574. " from (select gd.groutinglinecode\n" +
  5575. " ,gl.BuildingNo\n" +
  5576. " ,gl.FloorNo\n" +
  5577. " ,gl.GroutingLineNo\n" +
  5578. " ,gd.usercode\n" +
  5579. " ,gdd.goodscode\n" +
  5580. " ,g.GOODSSPECIFICATION\n" +
  5581. " ,gt.goodstypename\n" +
  5582. " ,gl.MouldQuantity\n" +
  5583. " ,to_char(gd.groutingdate, 'dd') as gday\n" +
  5584. " ,to_char(gdd.delivertime, 'dd') as dday\n" +
  5585. " ,case\n" +
  5586. " when gd.groutingdate >= :GDateBegin and\n" +
  5587. " gd.groutingdate <= :GDateEnd and\n" +
  5588. " gdd.GroutingFlag = '1' and\n" +
  5589. " gdd.ScrapFlag = '0' then\n" +
  5590. " 1\n" +
  5591. " else\n" +
  5592. " 0\n" +
  5593. " end c -- 成坯量\n" +
  5594. " ,case\n" +
  5595. " when gdd.delivertime >= :GDateBegin and\n" +
  5596. " gdd.delivertime <= :GDateEnd and\n" +
  5597. " gdd.deliverflag = '1' then\n" +
  5598. " 1\n" +
  5599. " else\n" +
  5600. " 0\n" +
  5601. " end d -- 交坯量\n" +
  5602. " from TP_PM_GroutingDaily gd\n" +
  5603. " inner join TP_PM_GroutingDailyDetail gdd\n" +
  5604. " on gdd.groutingdailyid = gd.groutingdailyid\n" +
  5605. " inner join TP_PC_GroutingLine gl\n" +
  5606. " on gl.groutinglineid = gd.groutinglineid\n" +
  5607. " inner join TP_MST_Goods g\n" +
  5608. " on g.goodsid = gdd.goodsid\n" +
  5609. " inner join TP_MST_GOODSTYPE gt\n" +
  5610. " on gt.goodstypeid = g.goodstypeid\n" +
  5611. " where gd.accountid = :AccountID\n" +
  5612. " and ((gd.groutingdate >= :GDateBegin and\n" +
  5613. " gd.groutingdate <= :GDateEnd) or\n" +
  5614. " (gdd.delivertime >= :GDateBegin and\n" +
  5615. " gdd.delivertime <= :GDateEnd))\n" +
  5616. " and (:groutinglinecode is null or\n" +
  5617. " instr(gd.groutinglinecode, :groutinglinecode) > 0)\n" +
  5618. " and (:groutingusercode is null or\n" +
  5619. " instr(gdd.usercode, :groutingusercode) > 0)\n" +
  5620. " and (:goodscode is null or instr(gdd.goodscode, :goodscode) > 0)\n" +
  5621. " and (:goodstypecode is null or\n" +
  5622. " instr(gt.goodstypecode, :goodstypecode) = 1)) t\n" +
  5623. " group by grouping sets((t.groutinglinecode, t.BuildingNo, t.FloorNo, t.GroutingLineNo, t.usercode, t.goodscode, t.GOODSSPECIFICATION, t.goodstypename),(t.goodscode, t.GOODSSPECIFICATION, t.goodstypename),())\n" +
  5624. " order by t.goodscode, t.groutinglinecode, t.usercode";
  5625. List<OracleParameter> parameters = new List<OracleParameter>();
  5626. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  5627. parameters.Add(new OracleParameter(":GDateBegin", OracleDbType.Date, se.GDateBegin, ParameterDirection.Input));
  5628. parameters.Add(new OracleParameter(":GDateEnd", OracleDbType.Date, se.GDateEnd, ParameterDirection.Input));
  5629. parameters.Add(new OracleParameter(":groutinglinecode", OracleDbType.Varchar2, se.GroutingLineCode, ParameterDirection.Input));
  5630. parameters.Add(new OracleParameter(":groutingusercode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  5631. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  5632. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  5633. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  5634. ServiceResultEntity sre = new ServiceResultEntity();
  5635. if (data == null || data.Rows.Count == 0)
  5636. {
  5637. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5638. return sre;
  5639. }
  5640. sre.Data = new DataSet();
  5641. sre.Data.Tables.Add(data);
  5642. return sre;
  5643. }
  5644. catch (Exception ex)
  5645. {
  5646. throw ex;
  5647. }
  5648. finally
  5649. {
  5650. if (conn != null &&
  5651. conn.ConnState == ConnectionState.Open)
  5652. {
  5653. conn.Close();
  5654. }
  5655. }
  5656. }
  5657. /// <summary>
  5658. /// 取得RPT040109画面(整体质量分析表)的查询数据
  5659. /// </summary>
  5660. /// <param name="user">登录用户信息</param>
  5661. /// <param name="se">查询条件</param>
  5662. /// <returns>查询结果</returns>
  5663. public static ServiceResultEntity GetRPT040109SData(SUserInfo user, RPT040109_SE se)
  5664. {
  5665. IDBTransaction conn = null;
  5666. try
  5667. {
  5668. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5669. conn.Connect();
  5670. if (se.GoodsType.Length == 0)
  5671. {
  5672. se.GoodsType = "001";
  5673. }
  5674. if (se.TestMouldFlag == null)
  5675. {
  5676. se.TestMouldFlag = "66";
  5677. }
  5678. if (se.TestRecyclingflag == null)
  5679. {
  5680. se.TestRecyclingflag = "66";
  5681. }
  5682. OracleParameter[] parameters = new OracleParameter[]
  5683. {
  5684. new OracleParameter("in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  5685. new OracleParameter("in_DateBegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  5686. new OracleParameter("in_DateEnd", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  5687. new OracleParameter("in_OutKilnProcedureID", OracleDbType.Int32, se.RptSProcedureID , ParameterDirection.Input),
  5688. new OracleParameter("in_KilnID", OracleDbType.Int32, se.KilnID , ParameterDirection.Input),
  5689. new OracleParameter("in_TestMouldFlag", OracleDbType.NVarchar2, se.TestMouldFlag , ParameterDirection.Input),
  5690. new OracleParameter("in_TestRecyclingflag", OracleDbType.NVarchar2, se.TestRecyclingflag , ParameterDirection.Input),
  5691. new OracleParameter("in_GoodsType", OracleDbType.NVarchar2, se.GoodsType , ParameterDirection.Input),
  5692. new OracleParameter("out_data1", OracleDbType.RefCursor, null , ParameterDirection.Output),
  5693. new OracleParameter("out_data2", OracleDbType.RefCursor, null , ParameterDirection.Output),
  5694. new OracleParameter("out_data3", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5695. new OracleParameter("out_data4", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5696. new OracleParameter("out_data21", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5697. new OracleParameter("out_data31", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5698. new OracleParameter("out_data32", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5699. new OracleParameter("out_table1", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5700. new OracleParameter("out_table2", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5701. new OracleParameter("out_table3", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5702. new OracleParameter("out_table4", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5703. new OracleParameter("in_HasUserGroup", OracleDbType.Int32, (se.HasUserGroup?1:0), ParameterDirection.Input),
  5704. };
  5705. //out_data1 -- 质量整体情况
  5706. //out_data2 -- 各缺陷类型成品率
  5707. //out_data3 -- 各缺陷类型缺陷率
  5708. //out_data4 -- 产品质量排行榜
  5709. //out_data21 -- 各缺陷类型成品率-总成品率
  5710. //out_data31 -- 各缺陷类型缺陷率-总缺陷率
  5711. //out_data32 -- 各缺陷类型缺陷率-分缺陷率
  5712. //out_table1 -- 缺陷类别
  5713. //out_table2 -- 工号分组
  5714. //out_table3 -- 缺陷扣罚
  5715. //out_table4 -- 缺陷
  5716. //DataSet data = conn.ExecStoredProcedure("PRO_RPT_OverallQualityAnalysis", parameters);
  5717. DataSet data = conn.ExecStoredProcedure("PRO_RPT_OverallQualityA_UserB", parameters);
  5718. ServiceResultEntity sre = new ServiceResultEntity();
  5719. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  5720. {
  5721. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5722. return sre;
  5723. }
  5724. data.Tables[0].TableName = "TQ";
  5725. data.Tables[1].TableName = "FR";
  5726. data.Tables[2].TableName = "DR";
  5727. data.Tables[3].TableName = "DL";
  5728. data.Tables[4].TableName = "FR1";
  5729. data.Tables[5].TableName = "DR1";
  5730. data.Tables[6].TableName = "DR2";
  5731. data.Tables[7].TableName = "DT";
  5732. data.Tables[8].TableName = "WG";
  5733. data.Tables[9].TableName = "DF";
  5734. data.Tables[10].TableName = "D";
  5735. DataTable dtFR = data.Tables["FR"];
  5736. DataTable dtFRClone = dtFR.Clone();
  5737. for (int i = 0; i < dtFR.Columns.Count; i++)
  5738. {
  5739. dtFRClone.Columns[i].DataType = typeof(string);
  5740. }
  5741. foreach (DataRow item in dtFR.Rows)
  5742. {
  5743. item["goodstypename2"] = item["goodstypename2"] + "缺陷数";
  5744. dtFRClone.Rows.Add(item.ItemArray);
  5745. }
  5746. // 增加大小件成品率(%) modify by chenxy 2018-05-03 begin
  5747. //DataRow drFR = dtFRClone.NewRow();
  5748. //drFR["goodstypename2"] = "成品率(%)";
  5749. //foreach (DataRow row in data.Tables["FR1"].Rows)
  5750. //{
  5751. // string tid = row["tid"].ToString();
  5752. // string overRate = (row["OverRate"] == DBNull.Value ? Constant.DIV0 : Convert.ToDecimal(row["OverRate"]).ToString("#,##0.00%"));
  5753. // foreach (DataColumn col in dtFRClone.Columns)
  5754. // {
  5755. // if (col.ColumnName.StartsWith(tid))
  5756. // {
  5757. // drFR[col.ColumnName] = overRate;
  5758. // }
  5759. // }
  5760. //}
  5761. //dtFRClone.Rows.Add(drFR);
  5762. Dictionary<string, DataRow> drFRs = new Dictionary<string, DataRow>();
  5763. foreach (DataRow row in data.Tables["FR1"].Rows)
  5764. {
  5765. string tcode = row["goodstypecode2"].ToString();
  5766. DataRow drFR = null;
  5767. if (drFRs.ContainsKey(tcode))
  5768. {
  5769. drFR = drFRs[tcode];
  5770. }
  5771. else
  5772. {
  5773. drFR = dtFRClone.NewRow();
  5774. drFRs.Add(tcode, drFR);
  5775. drFR["goodstypename2"] = row["goodstypeName2"] + "成品率(%)";
  5776. }
  5777. string tid = row["tid"].ToString();
  5778. string overRate = (row["OverRate"] == DBNull.Value ? Constant.DIV0 : Convert.ToDecimal(row["OverRate"]).ToString("#,##0.00%"));
  5779. foreach (DataColumn col in dtFRClone.Columns)
  5780. {
  5781. if (col.ColumnName.StartsWith(tid))
  5782. {
  5783. drFR[col.ColumnName] = overRate;
  5784. }
  5785. }
  5786. }
  5787. foreach (DataRow item in drFRs.Values)
  5788. {
  5789. dtFRClone.Rows.Add(item);
  5790. }
  5791. // 增加大小件成品率(%) modify by chenxy 2018-05-03 end
  5792. data.Tables.Remove(dtFR);
  5793. data.Tables.Remove(data.Tables["FR1"]);
  5794. data.Tables.Add(dtFRClone);
  5795. DataTable dtDR = data.Tables["DR"];
  5796. DataTable dtDRClone = dtDR.Clone();
  5797. for (int i = 0; i < dtDR.Columns.Count; i++)
  5798. {
  5799. dtDRClone.Columns[i].DataType = typeof(string);
  5800. }
  5801. foreach (DataRow item in dtDR.Rows)
  5802. {
  5803. item["goodstypename2"] = item["goodstypename2"] + "缺陷数";
  5804. dtDRClone.Rows.Add(item.ItemArray);
  5805. }
  5806. // 增加大小件缺陷率(%) modify by chenxy 2018-05-03 begin
  5807. //DataRow drDR = dtDRClone.NewRow();
  5808. //drDR["goodstypename2"] = "缺陷率(%)";
  5809. //foreach (DataRow row in data.Tables["DR2"].Rows)
  5810. //{
  5811. // string tid = row["tdfid"].ToString();
  5812. // string defectRate = (row["DefectRate"] == DBNull.Value ? Constant.DIV0 : Convert.ToDecimal(row["DefectRate"]).ToString("#,##0.00%"));
  5813. // drDR[tid] = defectRate;
  5814. //}
  5815. //dtDRClone.Rows.Add(drDR);
  5816. Dictionary<string, DataRow> drDRs = new Dictionary<string, DataRow>();
  5817. foreach (DataRow row in data.Tables["DR2"].Rows)
  5818. {
  5819. string tcode = row["goodstypecode2"].ToString();
  5820. DataRow drDR = null;
  5821. if (drDRs.ContainsKey(tcode))
  5822. {
  5823. drDR = drDRs[tcode];
  5824. }
  5825. else
  5826. {
  5827. drDR = dtDRClone.NewRow();
  5828. drDRs.Add(tcode, drDR);
  5829. drDR["goodstypename2"] = row["goodstypeName2"] + "缺陷率(%)";
  5830. }
  5831. string tid = row["tdfid"].ToString();
  5832. string defectRate = (row["DefectRate"] == DBNull.Value ? Constant.DIV0 : Convert.ToDecimal(row["DefectRate"]).ToString("#,##0.00%"));
  5833. drDR[tid] = defectRate;
  5834. }
  5835. foreach (DataRow item in drDRs.Values)
  5836. {
  5837. dtDRClone.Rows.Add(item);
  5838. }
  5839. // 增加大小件成品率(%) modify by chenxy 2018-05-03 end
  5840. data.Tables.Remove(dtDR);
  5841. data.Tables.Remove(data.Tables["DR2"]);
  5842. data.Tables.Add(dtDRClone);
  5843. conn.Commit();
  5844. sre.Data = data;
  5845. return sre;
  5846. }
  5847. catch (Exception ex)
  5848. {
  5849. throw ex;
  5850. }
  5851. finally
  5852. {
  5853. if (conn != null &&
  5854. conn.ConnState == ConnectionState.Open)
  5855. {
  5856. conn.Disconnect();
  5857. }
  5858. }
  5859. }
  5860. /// <summary>
  5861. /// 取得RPT040110画面(产成品逐日出窑数值分析表)的查询数据
  5862. /// </summary>
  5863. /// <param name="user">登录用户信息</param>
  5864. /// <param name="se">查询条件</param>
  5865. /// <returns>查询结果</returns>
  5866. public static ServiceResultEntity GetRPT040110SData(SUserInfo user, RPT040110_SE se)
  5867. {
  5868. IDBTransaction conn = null;
  5869. try
  5870. {
  5871. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5872. conn.Connect();
  5873. OracleParameter[] parameters = new OracleParameter[]
  5874. {
  5875. new OracleParameter("in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  5876. new OracleParameter("in_DateBegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  5877. new OracleParameter("in_DateEnd", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  5878. new OracleParameter("in_OutKilnProcedureID", OracleDbType.Int32, se.RptSProcedureID , ParameterDirection.Input),
  5879. new OracleParameter("in_RECYCLINGFLAG", OracleDbType.Int32, se.RECYCLINGFLAG , ParameterDirection.Input),
  5880. new OracleParameter("in_KilnID", OracleDbType.Int32, se.KilnID , ParameterDirection.Input),
  5881. new OracleParameter("out_data1", OracleDbType.RefCursor, null , ParameterDirection.Output),
  5882. };
  5883. DataSet data = null;
  5884. if (se.IsShowG)
  5885. {
  5886. data = conn.ExecStoredProcedure("PRO_RPT_OverallQualityDetail_G", parameters);
  5887. }
  5888. else
  5889. {
  5890. data = conn.ExecStoredProcedure("PRO_RPT_OverallQualityDetail", parameters);
  5891. }
  5892. ServiceResultEntity sre = new ServiceResultEntity();
  5893. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  5894. {
  5895. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5896. return sre;
  5897. }
  5898. conn.Commit();
  5899. sre.Data = data;
  5900. return sre;
  5901. }
  5902. catch (Exception ex)
  5903. {
  5904. throw ex;
  5905. }
  5906. finally
  5907. {
  5908. if (conn != null &&
  5909. conn.ConnState == ConnectionState.Open)
  5910. {
  5911. conn.Disconnect();
  5912. }
  5913. }
  5914. }
  5915. #endregion 分析报表
  5916. #region 汇总报表
  5917. /// <summary>
  5918. /// 取得RPT030101_1画面(产品产量汇总表)的汇总信息查询数据
  5919. /// </summary>
  5920. /// <param name="user">登录用户信息</param>
  5921. /// <param name="se">查询条件</param>
  5922. /// <returns>查询结果</returns>
  5923. public static ServiceResultEntity GetRPT030101SData(SUserInfo user, RPT030101_SE se)
  5924. {
  5925. IDBConnection conn = null;
  5926. try
  5927. {
  5928. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5929. List<OracleParameter> parameters = new List<OracleParameter>();
  5930. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030101SSQL(user, se, ref parameters));
  5931. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  5932. ServiceResultEntity sre = new ServiceResultEntity();
  5933. if (data == null || data.Rows.Count == 0)
  5934. {
  5935. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5936. return sre;
  5937. }
  5938. sre.Data = new DataSet();
  5939. sre.Data.Tables.Add(data);
  5940. return sre;
  5941. }
  5942. catch (Exception ex)
  5943. {
  5944. throw ex;
  5945. }
  5946. finally
  5947. {
  5948. if (conn != null &&
  5949. conn.ConnState == ConnectionState.Open)
  5950. {
  5951. conn.Close();
  5952. }
  5953. }
  5954. }
  5955. /// <summary>
  5956. /// 获取RPT030101_1画面(产品产量汇总表)的汇总信息查询sql
  5957. /// </summary>
  5958. /// <returns>sql</returns>
  5959. private static string GetRPT030101SSQL(SUserInfo user, RPT030101_SE se, ref List<OracleParameter> parameters)
  5960. {
  5961. //string selSql = "";
  5962. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  5963. /*
  5964. selSql = selSql +
  5965. "select " +
  5966. " decode(t.ProductionLineName,'合计','合计',decode(t.GoodsCode,'小计','--',t.OrganizationName)) OrganizationName, " +
  5967. " decode(t.Procedureid,'--','--',decode(t.GoodsCode,'小计','--',t.ProductionLineName)) ProductionLineName, " +
  5968. " decode(t.GoodsCode,'小计','--',t.Procedureid) Procedureid, " +
  5969. " decode(t.GoodsCode,'小计','--',t.ProcedureName) ProcedureName, " +
  5970. " decode(t.GoodsCode,'小计','小计',t.GoodsTypeName) GoodsTypeName, " +
  5971. " decode(t.GoodsTypeName,'小计','--',t.GoodsId) GoodsId, " +
  5972. " decode(t.ProductionLineName,'合计','--',decode(t.GoodsId,null,'--',t.GoodsCode)) GoodsCode, " +
  5973. " decode(t.GoodsCode,'小计','--',t.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  5974. " decode(t.GoodsCode,'小计','--',t.Dictionaryvalue) Dictionaryvalue, " +
  5975. " decode(t.GoodsCode,'小计','--',g.goodsname) goodsname, " +
  5976. " decode(t.GoodsCode,'小计','--',g.GOODSMODEL) GOODSMODEL, " +
  5977. " t.产量 " +
  5978. "from " +
  5979. "( " +
  5980. " select " +
  5981. " decode(grouping(TP_MST_Organization.OrganizationName),1,'总计',TP_MST_Organization.OrganizationName) OrganizationName, " +
  5982. " decode(grouping(TP_MST_Organization.OrganizationName),1,'--', " +
  5983. " decode(grouping(TP_PM_ProductionData.ProductionLineName),1,'合计',TP_PM_ProductionData.ProductionLineName)) ProductionLineName, " +
  5984. " decode(grouping(TP_PM_ProductionData.Procedureid),1,'--',TP_PM_ProductionData.Procedureid) Procedureid, " +
  5985. " decode(grouping(TP_PM_ProductionData.ProcedureName),1,'--',TP_PM_ProductionData.ProcedureName) ProcedureName, " +
  5986. " decode(grouping(TP_MST_GOODSTYPE.GoodsTypeName),1,'--',TP_MST_GOODSTYPE.GoodsTypeName) GoodsTypeName, " +
  5987. " decode(grouping(TP_PM_ProductionData.ProductionLineName),1,'--', " +
  5988. " decode(grouping(TP_PM_ProductionData.GoodsCode),1,'小计',TP_PM_ProductionData.GoodsCode)) GoodsCode, " +
  5989. " decode(grouping(TP_PM_ProductionData.GoodsId),1,null,TP_PM_ProductionData.GoodsId) GoodsId, " +
  5990. " decode(grouping(TP_MST_Goods.GOODSSPECIFICATION),1,'--',TP_MST_Goods.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  5991. " decode(grouping(TP_MST_DATADICTIONARY.DICTIONARYVALUE),1,'--',TP_MST_DATADICTIONARY.Dictionaryvalue) Dictionaryvalue, " +
  5992. " count(BarCode) as 产量 " +
  5993. " from TP_PM_ProductionData " +
  5994. " left join TP_MST_Goods on TP_MST_Goods.GoodsID=TP_PM_ProductionData.GoodsID " +
  5995. " left join TP_MST_GoodsType on TP_MST_GoodsType.GoodsTypeID=TP_MST_Goods.GoodsTypeID " +
  5996. " left join TP_MST_Organization on TP_MST_Organization.OrganizationID=TP_PM_ProductionData.OrganizationID " +
  5997. " left join TP_MST_DATADICTIONARY on TP_MST_DATADICTIONARY.DICTIONARYID=TP_MST_Goods.GLAZETYPEID " +
  5998. " Where 1=1 and TP_PM_ProductionData.ValueFlag = 1 " +
  5999. // 公坯、干补不算交坯工序的质量。
  6000. (se.ProductionFlag == "1" ? " and ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and (TP_PM_ProductionData.IsPublicBody = '0' or TP_PM_ProductionData.SpecialRepairFlag = '0'))) \n" : "") +
  6001. " and TP_PM_ProductionData.AccountID=:AccountID ";
  6002. if (!string.IsNullOrEmpty(se.GoodsIDS))
  6003. {
  6004. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  6005. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  6006. }
  6007. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  6008. {
  6009. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  6010. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPEcode,:GoodsTypeIDS)=1 ";
  6011. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  6012. }
  6013. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  6014. {
  6015. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  6016. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  6017. }
  6018. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  6019. {
  6020. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||TP_PM_ProductionData.ProcedureId||',')>0 ";
  6021. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  6022. }
  6023. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  6024. {
  6025. selSql = selSql + " AND instr(','||:OrganizationIDS||',',','||TP_MST_Organization.OrganizationId||',')>0 ";
  6026. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  6027. }
  6028. if (se.AccountDateStart.HasValue)
  6029. {
  6030. selSql = selSql + " AND TP_PM_ProductionData.CREATETIME >= :AccountDateStart ";
  6031. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  6032. }
  6033. if (se.AccountDateEnd.HasValue)
  6034. {
  6035. selSql = selSql + " AND TP_PM_ProductionData.CREATETIME <= :AccountDateEnd ";
  6036. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  6037. }
  6038. selSql = selSql +
  6039. "group by " +
  6040. " rollup(TP_MST_Organization.OrganizationName, " +
  6041. " TP_PM_ProductionData.ProductionLineName, " +
  6042. " TP_PM_ProductionData.Procedureid, " +
  6043. " TP_PM_ProductionData.ProcedureName, " +
  6044. " TP_MST_GOODSTYPE.GoodsTypeName, " +
  6045. " TP_PM_ProductionData.GoodsCode, " +
  6046. " TP_PM_ProductionData.GoodsId, " +
  6047. " TP_MST_Goods.GOODSSPECIFICATION, " +
  6048. " TP_MST_DATADICTIONARY.Dictionaryvalue) " +
  6049. " order by " +
  6050. " TP_MST_Organization.OrganizationName, " +
  6051. " TP_PM_ProductionData.ProductionLineName, " +
  6052. " TP_PM_ProductionData.Procedureid, " +
  6053. " TP_PM_ProductionData.ProcedureName, " +
  6054. " TP_MST_GOODSTYPE.GoodsTypeName " +
  6055. ") t \n" +
  6056. // 增加 产品型号
  6057. "left join tp_mst_goods g on g.goodsid = t.goodsid \n" +
  6058. "where 1=1 " +
  6059. "and (t.DICTIONARYVALUE!='--' ) " +
  6060. "or (t.GoodsTypeName='--' and t.ProductionLineName='合计') " +
  6061. "or (t.GoodsTypeName='--' and t.OrganizationName='总计') " +
  6062. "or (t.GoodsCode='小计' and t.GoodsTypeName!='--')";
  6063. */
  6064. string selSql =
  6065. "select t.gid\n" +
  6066. " ,decode(t.gid, 15, '总计', t.ProductionLineName) ProductionLineName\n" +
  6067. " ,t.OrganizationID\n" +
  6068. " --,t.OrganizationCode\n" +
  6069. " ,decode(t.gid\n" +
  6070. " ,7\n" +
  6071. " ,'合计[' || t.OrganizationName || ']'\n" +
  6072. " ,15\n" +
  6073. " ,'--'\n" +
  6074. " ,t.OrganizationName) OrganizationName\n" +
  6075. " ,t.Procedureid\n" +
  6076. " ,decode(t.gid\n" +
  6077. " ,3\n" +
  6078. " ,'小计[' || t.ProcedureName || ']'\n" +
  6079. " ,0\n" +
  6080. " ,t.ProcedureName\n" +
  6081. " ,1\n" +
  6082. " ,t.ProcedureName\n" +
  6083. " ,'--') ProcedureName\n" +
  6084. " ,t.GoodsTypeID\n" +
  6085. " ,decode(t.gid\n" +
  6086. " ,1\n" +
  6087. " ,'小计[' || t.GoodsTypeName || ']'\n" +
  6088. " ,0\n" +
  6089. " ,t.GoodsTypeName\n" +
  6090. " ,'--') GoodsTypeName\n" +
  6091. " --,t.GoodsId\n" +
  6092. " ,decode(t.gid, 0, to_char(t.GoodsId), '--') GoodsId\n" +
  6093. " ,decode(t.gid, 0, t.GoodsCode, '--') GoodsCode\n" +
  6094. " ,decode(t.gid, 0, t.GOODSSPECIFICATION, '--') GOODSSPECIFICATION\n" +
  6095. " ,decode(t.gid, 0, t.Dictionaryvalue, '--') Dictionaryvalue\n" +
  6096. " ,t.pfcount as 产量\n" +
  6097. " from (select grouping_id(org.OrganizationID\n" +
  6098. " ,p.Procedureid\n" +
  6099. " ,gt.goodstypeid\n" +
  6100. " ,g.GoodsId) as gid\n" +
  6101. " ,pin.ProductionLineName\n" +
  6102. " ,org.OrganizationID\n" +
  6103. " --,org.OrganizationCode\n" +
  6104. " ,org.OrganizationName\n" +
  6105. " ,p.Procedureid\n" +
  6106. " ,p.ProcedureName\n" +
  6107. " ,gt.GoodsTypeID\n" +
  6108. " ,gt.GoodsTypeName\n" +
  6109. " ,g.GoodsId\n" +
  6110. " ,g.GoodsCode\n" +
  6111. " ,g.GOODSSPECIFICATION\n" +
  6112. " ,d.Dictionaryvalue\n" +
  6113. " ,count(BarCode) as pfcount" +
  6114. " from TP_PM_ProductionData pd\n" +
  6115. " left join TP_PC_PRODUCTIONLINE pin on pd.productionlineid = pin.productionlineid\n" +
  6116. " inner join tp_pc_Procedure p\n" +
  6117. " on p.Procedureid = pd.Procedureid\n" +
  6118. " inner join TP_MST_Goods g\n" +
  6119. " on g.GoodsID = pd.GoodsID\n" +
  6120. " inner join TP_MST_GoodsType gt\n" +
  6121. " on gt.GoodsTypeID = g.GoodsTypeID\n" +
  6122. " inner join TP_MST_Organization org\n" +
  6123. " on org.OrganizationID = pd.OrganizationID\n" +
  6124. " inner join TP_MST_DATADICTIONARY d\n" +
  6125. " on d.DICTIONARYID = g.GLAZETYPEID\n" +
  6126. " where pd.ValueFlag = '1'\n" +
  6127. " and pd.AccountID = :AccountID\n";
  6128. // 公坯、干补不算交坯工序的质量。
  6129. if (se.ProductionFlag == "1")
  6130. {
  6131. selSql += " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and (pd.IsPublicBody = '0' or pd.SpecialRepairFlag = '0'))) \n";
  6132. }
  6133. if (!string.IsNullOrEmpty(se.GoodsIDS))
  6134. {
  6135. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||g.GoodsId||',')>0 ";
  6136. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  6137. }
  6138. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  6139. {
  6140. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  6141. selSql = selSql + " AND instr(gt.GOODSTYPEcode,:GoodsTypeIDS)=1 ";
  6142. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  6143. }
  6144. if ((',' + se.ProcedureIDS + ',').Contains(",11,"))
  6145. {
  6146. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  6147. selSql = selSql + " AND pd.ISREFIRE = '0' and pd.ISLENGBU = '0' ";
  6148. }
  6149. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  6150. {
  6151. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pd.ProductionLineId||',')>0 ";
  6152. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  6153. }
  6154. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  6155. {
  6156. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||p.ProcedureId||',')>0 ";
  6157. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  6158. }
  6159. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  6160. {
  6161. selSql = selSql + " AND instr(','||:OrganizationIDS||',',','||org.OrganizationId||',')>0 ";
  6162. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  6163. }
  6164. if (se.AccountDateStart.HasValue)
  6165. {
  6166. selSql = selSql + " AND pd.CREATETIME >= :AccountDateStart ";
  6167. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  6168. }
  6169. if (se.AccountDateEnd.HasValue)
  6170. {
  6171. selSql = selSql + " AND pd.CREATETIME <= :AccountDateEnd ";
  6172. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  6173. }
  6174. selSql +=
  6175. " group by grouping sets((pin.ProductionLineName, org.OrganizationID, org.organizationcode, org.OrganizationName, p.Procedureid, p.ProcedureName, p.displayno, gt.GoodsTypeID, gt.goodstypecode, gt.GoodsTypeName, g.GoodsId, g.GoodsCode, g.GOODSSPECIFICATION, d.Dictionaryvalue),(pin.ProductionLineName, org.OrganizationID, org.organizationcode, org.OrganizationName, p.Procedureid, p.ProcedureName, p.displayno, gt.GoodsTypeID, gt.goodstypecode, gt.GoodsTypeName),(pin.ProductionLineName, org.OrganizationID, org.organizationcode, org.OrganizationName, p.Procedureid, p.ProcedureName, p.displayno),(pin.ProductionLineName, org.OrganizationID, org.organizationcode, org.OrganizationName),())\n" +
  6176. " order by org.organizationcode\n" +
  6177. " ,p.displayno\n" +
  6178. " ,gt.goodstypecode\n" +
  6179. " ,g.goodscode) t";
  6180. return selSql;
  6181. }
  6182. /// <summary>
  6183. /// 取得RPT030101_1画面(产品产量汇总表)的明细信息查询数据
  6184. /// </summary>
  6185. /// <param name="user">登录用户信息</param>
  6186. /// <param name="se">查询条件</param>
  6187. /// <returns>查询结果</returns>
  6188. public static ServiceResultEntity GetRPT030101IData(SUserInfo user, RPT030101_SE se)
  6189. {
  6190. IDBConnection conn = null;
  6191. try
  6192. {
  6193. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6194. List<OracleParameter> parameters = new List<OracleParameter>();
  6195. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030101ISQL(user, se, ref parameters));
  6196. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  6197. ServiceResultEntity sre = new ServiceResultEntity();
  6198. if (data == null || data.Rows.Count == 0)
  6199. {
  6200. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6201. return sre;
  6202. }
  6203. sre.Data = new DataSet();
  6204. sre.Data.Tables.Add(data);
  6205. return sre;
  6206. }
  6207. catch (Exception ex)
  6208. {
  6209. throw ex;
  6210. }
  6211. finally
  6212. {
  6213. if (conn != null &&
  6214. conn.ConnState == ConnectionState.Open)
  6215. {
  6216. conn.Close();
  6217. }
  6218. }
  6219. }
  6220. /// <summary>
  6221. /// 获取RPT030101_1画面(产品产量汇总表)的明细信息查询sql
  6222. /// </summary>
  6223. /// <returns>sql</returns>
  6224. private static string GetRPT030101ISQL(SUserInfo user, RPT030101_SE se, ref List<OracleParameter> parameters)
  6225. {
  6226. //string selSql = "";
  6227. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  6228. /*
  6229. selSql = selSql +
  6230. "select " +
  6231. "decode(ProductionLineName,'合计','合计',decode(temp.BarCode,'小计','--',OrganizationName)) OrganizationName, " +
  6232. "decode(ProcedureName,'--','--',decode(temp.barcode,'小计','--',temp.ProductionLineName)) ProductionLineName, " +
  6233. "decode(temp.BarCode,'小计','--',temp.ProcedureName) ProcedureName, " +
  6234. "decode(temp.BarCode,'小计','--',temp.GoodsTypeName) GoodsTypeName, " +
  6235. "decode(temp.BarCode,'小计','小计',temp.GoodsCode) GoodsCode, " +
  6236. "decode(ProductionLineName,'合计','--',decode(temp.usercode,'--','--',temp.Barcode)) BarCode, " +
  6237. "decode(temp.UserCode,'小计','--',temp.UserCode) UserCode, " +
  6238. "decode(GOODSSPECIFICATION,'小计','--',GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  6239. "decode(DICTIONARYVALUE,'小计','--',Dictionaryvalue) Dictionaryvalue, " +
  6240. "产量, " +
  6241. "replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName " +
  6242. "from " +
  6243. "( " +
  6244. " select " +
  6245. " decode(grouping(TP_MST_Organization.OrganizationName),1,'总计',TP_MST_Organization.OrganizationName) OrganizationName, " +
  6246. " decode(grouping(TP_MST_Organization.OrganizationName),1,'--', " +
  6247. " decode(grouping(TP_PM_ProductionData.ProductionLineName),1,'合计',TP_PM_ProductionData.ProductionLineName)) ProductionLineName, " +
  6248. " decode(grouping(TP_PM_ProductionData.ProcedureName),1,'--',TP_PM_ProductionData.ProcedureName) ProcedureName, " +
  6249. " decode(grouping(TP_MST_GOODSTYPE.GoodsTypeName),1,'--',TP_MST_GOODSTYPE.GoodsTypeName) GoodsTypeName, " +
  6250. " decode(grouping(TP_PM_ProductionData.GoodsCode),1,'--',TP_PM_ProductionData.GoodsCode) GoodsCode, " +
  6251. " decode(grouping(TP_PM_ProductionData.ProductionLineName),1,'--', " +
  6252. " decode(grouping(TP_PM_ProductionData.BarCode),1,'小计',TP_PM_ProductionData.BarCode)) BarCode, " +
  6253. " decode(grouping(TP_PM_ProductionData.UserCode),1,'--',TP_PM_ProductionData.UserCode) UserCode, " +
  6254. " decode(grouping(TP_MST_Goods.GOODSSPECIFICATION),1,'--',TP_MST_Goods.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  6255. " decode(grouping(TP_MST_DATADICTIONARY.Dictionaryvalue),1,'--',TP_MST_DATADICTIONARY.Dictionaryvalue) Dictionaryvalue, " +
  6256. " count(BarCode) as 产量 " +
  6257. " from TP_PM_ProductionData " +
  6258. " left join TP_MST_Goods on TP_MST_Goods.GoodsID=TP_PM_ProductionData.GoodsID " +
  6259. " left join TP_MST_GoodsType on TP_MST_GoodsType.GoodsTypeID=TP_MST_Goods.GoodsTypeID " +
  6260. " left join TP_MST_Organization on TP_MST_Organization.OrganizationID=TP_PM_ProductionData.OrganizationID " +
  6261. " left join TP_MST_DATADICTIONARY on TP_MST_DATADICTIONARY.DICTIONARYID=TP_MST_Goods.GLAZETYPEID " +
  6262. " Where 1=1 " +
  6263. " and TP_PM_ProductionData.ValueFlag = 1 " +
  6264. // 公坯、干补不算交坯工序的质量。
  6265. " and ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and TP_PM_ProductionData.IsPublicBody = '0' and TP_PM_ProductionData.SpecialRepairFlag = '0')) \n" +
  6266. " and TP_PM_ProductionData.AccountID=:AccountID ";
  6267. if (!string.IsNullOrEmpty(se.GoodsIDS))
  6268. {
  6269. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  6270. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  6271. }
  6272. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  6273. {
  6274. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  6275. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)>0 ";
  6276. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  6277. }
  6278. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  6279. {
  6280. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  6281. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  6282. }
  6283. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  6284. {
  6285. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||TP_PM_ProductionData.ProcedureId||',')>0 ";
  6286. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  6287. }
  6288. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  6289. {
  6290. selSql = selSql + " AND instr(','||:OrganizationIDS||',',','||TP_MST_Organization.OrganizationId||',')>0 ";
  6291. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  6292. }
  6293. if (se.AccountDateStart.HasValue)
  6294. {
  6295. selSql = selSql + " AND TP_PM_ProductionData.AccountDate >= :AccountDateStart ";
  6296. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  6297. }
  6298. if (se.AccountDateEnd.HasValue)
  6299. {
  6300. selSql = selSql + " AND TP_PM_ProductionData.AccountDate <= :AccountDateEnd ";
  6301. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  6302. }
  6303. selSql = selSql +
  6304. "group by " +
  6305. " rollup(TP_MST_Organization.OrganizationName, " +
  6306. " TP_PM_ProductionData.ProductionLineName, " +
  6307. " TP_PM_ProductionData.ProcedureName, " +
  6308. " TP_MST_GOODSTYPE.GoodsTypeName, " +
  6309. " TP_PM_ProductionData.GoodsCode, " +
  6310. " TP_PM_ProductionData.BarCode, " +
  6311. " TP_PM_ProductionData.UserCode, " +
  6312. " TP_MST_Goods.GOODSSPECIFICATION, " +
  6313. " TP_MST_DATADICTIONARY.Dictionaryvalue" +
  6314. " ) " +
  6315. " order by " +
  6316. " TP_MST_Organization.OrganizationName, " +
  6317. " TP_PM_ProductionData.ProductionLineName, " +
  6318. " TP_PM_ProductionData.ProcedureName, " +
  6319. " TP_MST_GOODSTYPE.GoodsTypeName " +
  6320. ") temp inner join TP_PM_GroutingDailyDetail on temp.barcode=TP_PM_GroutingDailyDetail.barcode " +
  6321. " inner join tp_mst_logo on TP_PM_GroutingDailyDetail.logoid=tp_mst_logo.logoid " +
  6322. "where 1=1 " +
  6323. "and (temp.DICTIONARYVALUE!='--') " +
  6324. "or (temp.GoodsTypeName='--' and temp.ProductionLineName='合计') " +
  6325. "or (temp.GoodsTypeName='--' and temp.OrganizationName='总计') " +
  6326. "or (temp.BarCode='小计' and temp.GoodsCode!='--')";
  6327. */
  6328. string selSql =
  6329. " select " +
  6330. " TP_MST_Organization.OrganizationName, " +
  6331. " pin.ProductionLineName, " +
  6332. // " TP_PM_ProductionData.ProcedureName, " +
  6333. " pd.ProcedureName," +
  6334. " TP_MST_GOODSTYPE.GoodsTypeName, " +
  6335. " TP_PM_ProductionData.GoodsCode, " +
  6336. " TP_MST_Goods.GoodsName, " +
  6337. " TP_MST_Goods.GoodsModel, " +
  6338. " TP_PM_ProductionData.BarCode, " +
  6339. " TP_PM_ProductionData.UserCode, " +
  6340. " TP_MST_Goods.GOODSSPECIFICATION, " +
  6341. " TP_MST_DATADICTIONARY.Dictionaryvalue, " +
  6342. " TP_PM_ProductionData.CREATETIME, " +
  6343. " TP_PM_ProductionData.KILNcarCODE, " +
  6344. " TP_PM_ProductionData.KILNCODE, " +
  6345. " cu.usercode createusercode, " +
  6346. " cu.username CreateUserName, " +
  6347. " gdd.glazingroom," +
  6348. " decode(tp_mst_logo.logoid,null,'',TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']') as LogoCodeName, " +
  6349. " decode(ll.logoid,null,'',ll.Logoname||'['||ll.Logocode||']') as LogoCodeNameNew, " +
  6350. " gdd.SecurityCode" +
  6351. " from TP_PM_ProductionData " +
  6352. " left join TP_PC_PRODUCTIONLINE pin on pin.productionlineid=TP_PM_ProductionData.productionlineid" +
  6353. " left join TP_PC_PROCEDURE pd on pd.procedureid = TP_PM_ProductionData.procedureid" + // 工序名称显示 xcm 2023-3-23
  6354. " left join TP_MST_Goods on TP_MST_Goods.GoodsID=TP_PM_ProductionData.GoodsID " +
  6355. " left join TP_MST_GoodsType on TP_MST_GoodsType.GoodsTypeID=TP_MST_Goods.GoodsTypeID " +
  6356. " left join TP_MST_Organization on TP_MST_Organization.OrganizationID=TP_PM_ProductionData.OrganizationID " +
  6357. " left join TP_MST_DATADICTIONARY on TP_MST_DATADICTIONARY.DICTIONARYID=TP_MST_Goods.GLAZETYPEID " +
  6358. " left join tp_mst_logo on TP_PM_ProductionData.logoid=tp_mst_logo.logoid " +
  6359. " left join tp_mst_user cu on TP_PM_ProductionData.createuserid=cu.userid " +
  6360. " LEFT JOIN TP_PM_GroutingDailyDetail gdd\n" +
  6361. " ON gdd.Groutingdailydetailid = TP_PM_ProductionData.Groutingdailydetailid\n" +
  6362. " left join tp_mst_logo ll on gdd.logoid=ll.logoid " +
  6363. " Where TP_PM_ProductionData.ValueFlag = '1' \n" +
  6364. " and TP_PM_ProductionData.AccountID=:AccountID \n";
  6365. if (se.ProductionFlag == "1")
  6366. {
  6367. // 公坯、干补不算交坯工序的质量。
  6368. selSql += " and ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and (TP_PM_ProductionData.IsPublicBody = '0' or TP_PM_ProductionData.SpecialRepairFlag = '0'))) \n";
  6369. }
  6370. //// 公坯、干补不算交坯工序的质量。
  6371. //if (se.ProductionFlag == "1")
  6372. //{
  6373. // selSql += " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and (pd.IsPublicBody = '0' or pd.SpecialRepairFlag = '0'))) \n";
  6374. //}
  6375. if (!string.IsNullOrEmpty(se.GoodsIDS))
  6376. {
  6377. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  6378. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  6379. }
  6380. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  6381. {
  6382. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  6383. //selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)>0 ";
  6384. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPEcode,:GoodsTypeIDS)=1 ";
  6385. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  6386. }
  6387. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  6388. {
  6389. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  6390. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  6391. }
  6392. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  6393. {
  6394. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||TP_PM_ProductionData.ProcedureId||',')>0 ";
  6395. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  6396. }
  6397. if ((',' + se.ProcedureIDS + ',').Contains(",11,"))
  6398. {
  6399. selSql = selSql + " AND TP_PM_ProductionData.ISREFIRE = '0' and TP_PM_ProductionData.ISLENGBU = '0' ";
  6400. }
  6401. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  6402. {
  6403. selSql = selSql + " AND instr(','||:OrganizationIDS||',',','||TP_MST_Organization.OrganizationId||',')>0 ";
  6404. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  6405. }
  6406. if (se.AccountDateStart.HasValue)
  6407. {
  6408. selSql = selSql + " AND TP_PM_ProductionData.CREATETIME >= :AccountDateStart ";
  6409. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  6410. }
  6411. if (se.AccountDateEnd.HasValue)
  6412. {
  6413. selSql = selSql + " AND TP_PM_ProductionData.CREATETIME <= :AccountDateEnd ";
  6414. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  6415. }
  6416. return selSql;
  6417. }
  6418. /// <summary>
  6419. /// 取得RPT030102_1画面(产品损坯汇总表)的汇总信息查询数据
  6420. /// </summary>
  6421. /// <param name="user">登录用户信息</param>
  6422. /// <param name="se">查询条件</param>
  6423. /// <returns>查询结果</returns>
  6424. public static ServiceResultEntity GetRPT030102SData(SUserInfo user, RPT030102_SE se)
  6425. {
  6426. IDBConnection conn = null;
  6427. try
  6428. {
  6429. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6430. List<OracleParameter> parameters = new List<OracleParameter>();
  6431. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030102SSQL(user, se, ref parameters));
  6432. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  6433. ServiceResultEntity sre = new ServiceResultEntity();
  6434. if (data == null || data.Rows.Count == 0)
  6435. {
  6436. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6437. return sre;
  6438. }
  6439. sre.Data = new DataSet();
  6440. sre.Data.Tables.Add(data);
  6441. return sre;
  6442. }
  6443. catch (Exception ex)
  6444. {
  6445. throw ex;
  6446. }
  6447. finally
  6448. {
  6449. if (conn != null &&
  6450. conn.ConnState == ConnectionState.Open)
  6451. {
  6452. conn.Close();
  6453. }
  6454. }
  6455. }
  6456. /// <summary>
  6457. /// 获取RPT030102_1画面(产品损坯汇总表)的汇总信息查询sql
  6458. /// </summary>
  6459. /// <returns>sql</returns>
  6460. private static string GetRPT030102SSQL(SUserInfo user, RPT030102_SE se, ref List<OracleParameter> parameters)
  6461. {
  6462. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  6463. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  6464. string b = se.TestMouldFlag == null ? "" : se.TestMouldFlag == "0" ? "AND( GDD.TESTMOULDFLAG = 0 AND(GDD.TESTFORMFLAG IN(0, 1) OR GDD.TESTFORMFLAG IS NULL))"
  6465. : "AND( GDD.TESTFORMFLAG = 2 OR GDD.TESTMOULDFLAG = 1) ";
  6466. string sqlString = "SELECT decode(ts.gid,\n" +
  6467. " 7,\n" +
  6468. " '总计',\n" +
  6469. " 3,\n" +
  6470. " '合计【' || ts.zrprocedurename || '】',\n" +
  6471. " 0,\n" +
  6472. " ts.zrprocedurename,\n" +
  6473. " '--') zrprocedurename\n" +
  6474. " ,decode(ts.gid,\n" +
  6475. " 1,\n" +
  6476. " '小计【' || ts.goodstypename2 || '】',\n" +
  6477. " 0,\n" +
  6478. " ts.goodstypename2,\n" +
  6479. " '--') goodstypename2\n" +
  6480. " ,decode(ts.gid, 0, ts.zrusercode, '--') zrusercode\n" +
  6481. " ,decode(ts.gid, 0, ts.goodscode, '--') goodscode\n" +
  6482. " ,decode(ts.gid, 0, ts.GOODSMODEL, '--') GOODSMODEL\n" +
  6483. " ,ts.productionlineid\n" +
  6484. " ,ts.zrprocedureid\n" +
  6485. " ,ts.goodstypecode2\n" +
  6486. " ,ts.zruserid\n" +
  6487. " ,ts.goodsid\n" +
  6488. " ,ts.barcount\n" +
  6489. " FROM (SELECT grouping_id(t.zrprocedureid, t.goodstypecode2, t.zruserid) gid\n" +
  6490. " ,t.productionlineid\n" +
  6491. " ,t.productionlinename\n" +
  6492. " ,t.displayno\n" +
  6493. " ,t.zrprocedureid\n" +
  6494. " ,t.zrprocedurename\n" +
  6495. " ,t.goodstypecode2\n" +
  6496. " ,t.goodstypename2\n" +
  6497. " ,t.zruserid\n" +
  6498. " ,t.zrusercode\n" +
  6499. " ,t.goodsid\n" +
  6500. " ,t.goodscode\n" +
  6501. " ,t.GOODSMODEL\n" +
  6502. " ,COUNT(t.barcode) barcount\n" +
  6503. " FROM (SELECT sp.productionlineid\n" +
  6504. " ,pline.productionlinename\n" +
  6505. " ,nvl(zp.displayno, -1) displayno\n" +
  6506. " ,zp.procedureid zrprocedureid\n" +
  6507. " ,zp.procedurename zrprocedurename\n" +
  6508. " ,sr.userid zruserid\n" +
  6509. " ,sr.usercode zrusercode\n" +
  6510. " ,gt2.goodstypecode goodstypecode2\n" +
  6511. " ,gt2.goodstypename goodstypename2\n" +
  6512. " ,g.goodsid\n" +
  6513. " ,g.goodscode\n" +
  6514. " ,g.GOODSMODEL\n" +
  6515. " ,sp.barcode\n" +
  6516. " FROM tp_pm_scrapproduct sp\n" +
  6517. " LEFT JOIN TP_PM_ResponProcedure rp\n" +
  6518. " ON rp.scrapproductid = sp.scrapproductid\n" +
  6519. " LEFT JOIN (SELECT DISTINCT t.ScrapProductID\n" +
  6520. " ,t.ResponProcedureID\n" +
  6521. " ,t.userid\n" +
  6522. " ,t.usercode\n" +
  6523. " FROM TP_PM_ScrapResponsible t) sr\n" +
  6524. " ON sr.scrapproductid = sp.scrapproductid\n" +
  6525. // wangx 2016-06-20
  6526. " LEFT JOIN TP_PM_GroutingDailyDetail gdd\n" +
  6527. " ON rp.barcode = gdd.barcode\n" +
  6528. // wangx 2016-06-20 end
  6529. " LEFT JOIN tp_pc_productionline pline\n" +
  6530. " ON pline.productionlineid = sp.productionlineid\n" +
  6531. " LEFT JOIN tp_pc_procedure zp\n" +
  6532. " ON zp.procedureid = rp.procedureid\n" +
  6533. " LEFT JOIN tp_mst_user cu\n" +
  6534. " ON cu.userid = sp.createuserid\n" +
  6535. " LEFT JOIN tp_mst_user au\n" +
  6536. " ON au.userid = sp.auditor\n" +
  6537. " LEFT JOIN tp_mst_goods g\n" +
  6538. " ON g.goodsid = sp.goodsid\n" +
  6539. " LEFT JOIN tp_mst_goodstype gt\n" +
  6540. " ON gt.goodstypeid = g.goodstypeid\n" +
  6541. " LEFT JOIN tp_mst_goodstype gt2\n" +
  6542. " ON gt2.accountid = gt.accountid\n" +
  6543. " AND gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  6544. " WHERE sp.valueflag = '1'\n" +
  6545. " AND sp.AuditStatus = '1'\n" +
  6546. // 生产线
  6547. //" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=sp.ProductionLineId))" +
  6548. // 完成工序
  6549. //" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=sp.procedureid))" +
  6550. // 责任工序
  6551. //" AND (rp.procedureid is null or exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=rp.procedureid)))" +
  6552. " AND sp.accountid = :AccountID\n" +
  6553. (se.SpecialRepairFlag ? " AND sp.GoodsLevelTypeID in (8,9) -- 8损坯、9干补\n" : " AND sp.GoodsLevelTypeID = 8 -- 8损坯、9干补\n") +
  6554. (se.ReFireFlag ? " " : " AND sp.IsReFire <> '6'\n") +
  6555. " AND sp.ScrapType = '0'\n" +
  6556. " AND (:ProductionLineID IS NULL OR\n" +
  6557. " sp.ProductionLineID = :ProductionLineID)\n" +
  6558. " AND (:GoodsTypeCode IS NULL OR\n" +
  6559. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)\n" +
  6560. " AND (:GoodsCode IS NULL OR\n" +
  6561. " instr(g.GoodsCode, :GoodsCode) > 0)\n" +
  6562. " AND (:ProcedureIDS IS NULL OR\n" +
  6563. " instr(:ProcedureIDS, ',' || sp.ProcedureID || ',') > 0)\n" +
  6564. " AND (:ResponProcedureIDS IS NULL OR\n" +
  6565. " instr(:ResponProcedureIDS,\n" +
  6566. " ',' || rp.ProcedureID || ',') > 0)\n" +
  6567. " AND (:ResponUserIDS IS NULL OR\n" +
  6568. " instr(:ResponUserIDS, ',' || sr.userid || ',') > 0)\n" +
  6569. // 损坯时间
  6570. " AND (:ScrapDateStart IS NULL OR\n" +
  6571. " sp.CreateTime >= :ScrapDateStart)\n" +
  6572. " AND (:ScrapDateEnd IS NULL OR\n" +
  6573. " sp.CreateTime <= :ScrapDateEnd)\n" +
  6574. // 审核时间
  6575. " AND (:AuditDateStart IS NULL OR\n" +
  6576. " sp.AuditDate >= :AuditDateStart)\n" +
  6577. " AND (:AuditDateEnd IS NULL OR\n" +
  6578. " sp.AuditDate <= :AuditDateEnd)\n" +
  6579. // 完成时间
  6580. " AND (:CTimeStart IS NULL OR\n" +
  6581. " sp.CreateTime >= :CTimeStart)\n" +
  6582. " AND (:CTimeEnd IS NULL OR\n" +
  6583. " sp.CreateTime <= :CTimeEnd)\n" +
  6584. // 交坯时间
  6585. " AND (:DTimeStart IS NULL OR\n" +
  6586. " gdd.DeliverTime >= :DTimeStart)\n" +
  6587. " AND (:DTimeEnd IS NULL OR\n" +
  6588. " gdd.DeliverTime <= :DTimeEnd)\n" +
  6589. // 注浆时间
  6590. " AND (:GTimeStart IS NULL OR\n" +
  6591. " gdd.GroutingDate >= :GTimeStart)\n" +
  6592. " AND (:GTimeEnd IS NULL OR\n" +
  6593. " gdd.GroutingDate <= :GTimeEnd)\n" +
  6594. b +
  6595. " AND (:CreatUser IS NULL OR\n" +
  6596. " instr(cu.UserCode, :CreatUser) > 0)\n" +
  6597. " AND (:AuditUser IS NULL OR\n" +
  6598. " instr(au.UserCode, :AuditUser) > 0)) t\n" +
  6599. " GROUP BY GROUPING SETS((t.productionlineid, t.productionlinename, t.displayno, t.zrprocedureid, t.zrprocedurename, t.goodstypecode2, t.goodstypename2, t.zruserid, t.zrusercode, t.goodsid, t.goodscode,t.GOODSMODEL),(t.productionlineid, t.productionlinename, t.displayno, t.zrprocedureid, t.zrprocedurename, t.goodstypecode2, t.goodstypename2),(t.productionlineid, t.productionlinename, t.displayno, t.zrprocedureid, t.zrprocedurename),())\n" +
  6600. " ORDER BY t.displayno, t.goodstypecode2, t.zrusercode, t.goodscode) ts";
  6601. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  6602. if (string.IsNullOrEmpty(se.ProcedureIDS))
  6603. {
  6604. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6605. }
  6606. else
  6607. {
  6608. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  6609. }
  6610. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  6611. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  6612. if (string.IsNullOrEmpty(se.ResponProcedureIDS))
  6613. {
  6614. parameters.Add(new OracleParameter(":ResponProcedureIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6615. }
  6616. else
  6617. {
  6618. parameters.Add(new OracleParameter(":ResponProcedureIDS", OracleDbType.Varchar2, "," + se.ResponProcedureIDS + ",", ParameterDirection.Input));
  6619. }
  6620. if (string.IsNullOrEmpty(se.ResponUserIDS))
  6621. {
  6622. parameters.Add(new OracleParameter(":ResponUserIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6623. }
  6624. else
  6625. {
  6626. parameters.Add(new OracleParameter(":ResponUserIDS", OracleDbType.Varchar2, "," + se.ResponUserIDS + ",", ParameterDirection.Input));
  6627. }
  6628. parameters.Add(new OracleParameter(":CreatUser", OracleDbType.Varchar2, se.CreatUser, ParameterDirection.Input));
  6629. parameters.Add(new OracleParameter(":AuditUser", OracleDbType.Varchar2, se.AuditUser, ParameterDirection.Input));
  6630. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDateStart, ParameterDirection.Input));
  6631. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDateEnd, ParameterDirection.Input));
  6632. parameters.Add(new OracleParameter(":CTimeStart", OracleDbType.Date, se.CTimeStart, ParameterDirection.Input));
  6633. parameters.Add(new OracleParameter(":CTimeEnd", OracleDbType.Date, se.CTimeEnd, ParameterDirection.Input));
  6634. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart, ParameterDirection.Input));
  6635. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd, ParameterDirection.Input));
  6636. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart, ParameterDirection.Input));
  6637. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd, ParameterDirection.Input));
  6638. parameters.Add(new OracleParameter(":AuditDateStart", OracleDbType.Date, se.AuditTimeStart, ParameterDirection.Input));
  6639. parameters.Add(new OracleParameter(":AuditDateEnd", OracleDbType.Date, se.AuditTimeEnd, ParameterDirection.Input));
  6640. return sqlString;
  6641. }
  6642. /// <summary>
  6643. /// 取得RPT030102_1画面(产品损坯汇总表)的明细信息查询数据
  6644. /// </summary>
  6645. /// <param name="user">登录用户信息</param>
  6646. /// <param name="se">查询条件</param>
  6647. /// <returns>查询结果</returns>
  6648. public static ServiceResultEntity GetRPT030102IData(SUserInfo user, RPT030102_SE se)
  6649. {
  6650. IDBConnection conn = null;
  6651. try
  6652. {
  6653. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6654. List<OracleParameter> parameters = new List<OracleParameter>();
  6655. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030102ISQL(user, se, ref parameters));
  6656. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  6657. ServiceResultEntity sre = new ServiceResultEntity();
  6658. if (data == null || data.Rows.Count == 0)
  6659. {
  6660. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6661. return sre;
  6662. }
  6663. sre.Data = new DataSet();
  6664. sre.Data.Tables.Add(data);
  6665. return sre;
  6666. }
  6667. catch (Exception ex)
  6668. {
  6669. throw ex;
  6670. }
  6671. finally
  6672. {
  6673. if (conn != null &&
  6674. conn.ConnState == ConnectionState.Open)
  6675. {
  6676. conn.Close();
  6677. }
  6678. }
  6679. }
  6680. /// <summary>
  6681. /// 获取RPT030102_1画面(产品损坯汇总表)的明细信息查询sql
  6682. /// </summary>
  6683. /// <returns>sql</returns>
  6684. private static string GetRPT030102ISQL(SUserInfo user, RPT030102_SE se, ref List<OracleParameter> parameters)
  6685. {
  6686. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  6687. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  6688. string b = se.TestMouldFlag == null ? "" : se.TestMouldFlag == "0" ? "AND( GDD.TESTMOULDFLAG = 0 AND(GDD.TESTFORMFLAG IN(0, 1) OR GDD.TESTFORMFLAG IS NULL))"
  6689. : "AND( GDD.TESTFORMFLAG = 2 OR GDD.TESTMOULDFLAG = 1) ";
  6690. string sqlString =
  6691. "SELECT pline.productionlinename\n" +
  6692. " ,p.procedurename\n" +
  6693. " ,zp.procedurename zrprocedurename\n" +
  6694. " ,sr.usercode zrusercode\n" +
  6695. " ,sr.StaffNames zrStaffNames\n" +
  6696. " ,gt2.goodstypecode goodstypecode2\n" +
  6697. " ,gt2.goodstypename goodstypename2\n" +
  6698. " ,gt.goodstypename\n" +
  6699. " ,g.goodscode\n" +
  6700. " ,g.GOODSMODEL\n" +
  6701. " ,sp.barcode\n" +
  6702. " ,sp.createtime Scrapdate\n" +
  6703. " ,sp.Rreason\n" +
  6704. " ,sp.GroutingUserCode\n" +
  6705. " ,sp.GroutingLineCode\n" +
  6706. " ,sp.GroutingMouldCode\n" +
  6707. " ,sp.GroutingDate\n" +
  6708. " ,sp.GroutingNum\n" +
  6709. " ,cu.usercode CreateUserCode\n" +
  6710. " ,au.usercode AuditorCode\n" +
  6711. " ,sp.auditdate\n" +
  6712. " ,gdd.DeliverTime\n" +
  6713. " ,gdd.ISPUBLICBODY\n" +
  6714. " ,gdd.SPECIALREPAIRFLAG\n" +
  6715. " ,gdd.TESTMOULDFLAG\n" +
  6716. " ,lg.logoname\n" +
  6717. " ,sp.CreateTime\n" +
  6718. " ,sp.Remarks\n" +
  6719. " FROM tp_pm_scrapproduct sp\n" +
  6720. " LEFT JOIN TP_PM_ResponProcedure rp\n" +
  6721. " ON rp.scrapproductid = sp.scrapproductid\n" +
  6722. " LEFT JOIN (SELECT DISTINCT t.ScrapProductID\n" +
  6723. " ,t.ResponProcedureID\n" +
  6724. " ,t.userid\n" +
  6725. " ,t.usercode\n" +
  6726. " ,LISTAGG(to_char(s.StaffName), ',') WITHIN GROUP(ORDER BY s.staffcode) over(partition by t.ScrapProductID) AS StaffNames\n" +
  6727. " FROM TP_PM_ScrapResponsible t\n" +
  6728. " LEFT JOIN TP_HR_Staff s \n" +
  6729. " ON s.StaffID = t.StaffID \n" +
  6730. " ) sr\n" +
  6731. " ON sr.scrapproductid = sp.scrapproductid\n" +
  6732. // wangx 2016-06-20
  6733. " LEFT JOIN TP_PM_GroutingDailyDetail gdd\n" +
  6734. " ON sp.barcode = gdd.barcode\n" +
  6735. // wangx 2016-06-20 end
  6736. " LEFT JOIN TP_mst_logo lg\n" +
  6737. " ON lg.logoid = gdd.logoid\n" +
  6738. " LEFT JOIN tp_pc_productionline pline\n" +
  6739. " ON pline.productionlineid = sp.productionlineid\n" +
  6740. " LEFT JOIN tp_pc_procedure p\n" +
  6741. " ON p.procedureid = sp.procedureid\n" +
  6742. " LEFT JOIN tp_pc_procedure zp\n" +
  6743. " ON zp.procedureid = rp.procedureid\n" +
  6744. " LEFT JOIN tp_mst_user cu\n" +
  6745. " ON cu.userid = sp.createuserid\n" +
  6746. " LEFT JOIN tp_mst_user au\n" +
  6747. " ON au.userid = sp.auditor\n" +
  6748. " LEFT JOIN tp_mst_goods g\n" +
  6749. " ON g.goodsid = sp.goodsid\n" +
  6750. " LEFT JOIN tp_mst_goodstype gt\n" +
  6751. " ON gt.goodstypeid = g.goodstypeid\n" +
  6752. " LEFT JOIN tp_mst_goodstype gt2\n" +
  6753. " ON gt2.accountid = gt.accountid\n" +
  6754. " AND gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  6755. " WHERE sp.valueflag = '1'\n" +
  6756. " AND sp.AuditStatus = '1'\n" +
  6757. " AND sp.accountid = :accountid\n" +
  6758. // 生产线
  6759. //" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=sp.ProductionLineId))" +
  6760. // 完成工序
  6761. //" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=sp.procedureid))" +
  6762. // 责任工序
  6763. //" AND (rp.procedureid is null or exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=rp.procedureid)))" +
  6764. //" AND sp.GoodsLevelTypeID = 8 -- 8损坯、9干补\n" +
  6765. (se.SpecialRepairFlag ? " AND sp.GoodsLevelTypeID in (8,9) -- 8损坯、9干补\n" : " AND sp.GoodsLevelTypeID = 8 -- 8损坯、9干补\n") +
  6766. (se.ReFireFlag ? " " : " AND sp.IsReFire <> '6'\n") +
  6767. " AND sp.ScrapType = '0'\n" +
  6768. " AND (:ProductionLineID IS NULL OR\n" +
  6769. " sp.ProductionLineID = :ProductionLineID)\n" +
  6770. " AND (:GoodsTypeCode IS NULL OR\n" +
  6771. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)\n" +
  6772. " AND (:GoodsCode IS NULL OR instr(g.GoodsCode, :GoodsCode) > 0)\n" +
  6773. " AND (:ProcedureIDS IS NULL OR\n" +
  6774. " instr(:ProcedureIDS, ',' || sp.ProcedureID || ',') > 0)\n" +
  6775. " AND (:ResponProcedureIDS IS NULL OR\n" +
  6776. " instr(:ResponProcedureIDS, ',' || rp.ProcedureID || ',') > 0)\n" +
  6777. " AND (:ResponUserIDS IS NULL OR\n" +
  6778. " instr(:ResponUserIDS, ',' || sr.userid || ',') > 0)\n" +
  6779. // 损坯时间
  6780. " AND (:ScrapDateStart IS NULL OR sp.CreateTime >= :ScrapDateStart)\n" +
  6781. " AND (:ScrapDateEnd IS NULL OR sp.CreateTime <= :ScrapDateEnd)\n" +
  6782. // 审核时间
  6783. " AND (:AuditDateStart IS NULL OR sp.AuditDate >= :AuditDateStart)\n" +
  6784. " AND (:AuditDateEnd IS NULL OR sp.AuditDate <= :AuditDateEnd)\n" +
  6785. // 完成时间
  6786. " AND (:CTimeStart IS NULL OR\n" +
  6787. " sp.CreateTime >= :CTimeStart)\n" +
  6788. " AND (:CTimeEnd IS NULL OR\n" +
  6789. " sp.CreateTime <= :CTimeEnd)\n" +
  6790. // 交坯时间
  6791. " AND (:DTimeStart IS NULL OR\n" +
  6792. " gdd.DeliverTime >= :DTimeStart)\n" +
  6793. " AND (:DTimeEnd IS NULL OR\n" +
  6794. " gdd.DeliverTime <= :DTimeEnd)\n" +
  6795. // 注浆时间
  6796. " AND (:GTimeStart IS NULL OR\n" +
  6797. " gdd.GroutingDate >= :GTimeStart)\n" +
  6798. " AND (:GTimeEnd IS NULL OR\n" +
  6799. " gdd.GroutingDate <= :GTimeEnd)\n" +
  6800. b +
  6801. // " AND (:TestMouldFlag IS NULL OR gdd.TestMouldFlag = :TestMouldFlag)\n" +
  6802. " AND (:CreatUser IS NULL OR instr(cu.UserCode, :CreatUser) > 0)\n" +
  6803. " AND (:AuditUser IS NULL OR instr(au.UserCode, :AuditUser) > 0)\n" +
  6804. " AND (:GoodsID IS NULL OR sp.goodsid = :GoodsID)\n" +
  6805. " AND (:ResponProcedureID IS NULL OR rp.procedureid = :ResponProcedureID)\n" +
  6806. " AND (:ResponUserID IS NULL OR sr.userid = :ResponUserID)\n" +
  6807. " AND (:RPF = 1 OR rp.procedureid is null)\n" +
  6808. " AND (:RUF = 1 OR sr.userid is null)\n" +
  6809. " ORDER BY pline.productionlinename, nvl(zp.displayno, -1), sp.barcode";
  6810. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  6811. if (string.IsNullOrEmpty(se.ProcedureIDS))
  6812. {
  6813. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6814. }
  6815. else
  6816. {
  6817. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  6818. }
  6819. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  6820. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  6821. if (string.IsNullOrEmpty(se.ResponProcedureIDS))
  6822. {
  6823. parameters.Add(new OracleParameter(":ResponProcedureIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6824. }
  6825. else
  6826. {
  6827. parameters.Add(new OracleParameter(":ResponProcedureIDS", OracleDbType.Varchar2, "," + se.ResponProcedureIDS + ",", ParameterDirection.Input));
  6828. }
  6829. if (string.IsNullOrEmpty(se.ResponUserIDS))
  6830. {
  6831. parameters.Add(new OracleParameter(":ResponUserIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6832. }
  6833. else
  6834. {
  6835. parameters.Add(new OracleParameter(":ResponUserIDS", OracleDbType.Varchar2, "," + se.ResponUserIDS + ",", ParameterDirection.Input));
  6836. }
  6837. parameters.Add(new OracleParameter(":CreatUser", OracleDbType.Varchar2, se.CreatUser, ParameterDirection.Input));
  6838. parameters.Add(new OracleParameter(":AuditUser", OracleDbType.Varchar2, se.AuditUser, ParameterDirection.Input));
  6839. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDateStart, ParameterDirection.Input));
  6840. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDateEnd, ParameterDirection.Input));
  6841. parameters.Add(new OracleParameter(":AuditDateStart", OracleDbType.Date, se.AuditTimeStart, ParameterDirection.Input));
  6842. parameters.Add(new OracleParameter(":AuditDateEnd", OracleDbType.Date, se.AuditTimeEnd, ParameterDirection.Input));
  6843. parameters.Add(new OracleParameter(":CTimeStart", OracleDbType.Date, se.CTimeStart, ParameterDirection.Input));
  6844. parameters.Add(new OracleParameter(":CTimeEnd", OracleDbType.Date, se.CTimeEnd, ParameterDirection.Input));
  6845. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart, ParameterDirection.Input));
  6846. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd, ParameterDirection.Input));
  6847. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart, ParameterDirection.Input));
  6848. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd, ParameterDirection.Input));
  6849. parameters.Add(new OracleParameter(":GoodsID", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  6850. //parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  6851. if (se.ResponProcedureID == "")
  6852. {
  6853. parameters.Add(new OracleParameter(":RPF", OracleDbType.Int32, 0, ParameterDirection.Input));
  6854. parameters.Add(new OracleParameter(":ResponProcedureID", OracleDbType.Int32, null, ParameterDirection.Input));
  6855. }
  6856. else
  6857. {
  6858. parameters.Add(new OracleParameter(":RPF", OracleDbType.Int32, 1, ParameterDirection.Input));
  6859. parameters.Add(new OracleParameter(":ResponProcedureID", OracleDbType.Int32, se.ResponProcedureID, ParameterDirection.Input));
  6860. }
  6861. if (se.ResponUserID == "")
  6862. {
  6863. parameters.Add(new OracleParameter(":RUF", OracleDbType.Int32, 0, ParameterDirection.Input));
  6864. parameters.Add(new OracleParameter(":ResponUserID", OracleDbType.Int32, null, ParameterDirection.Input));
  6865. }
  6866. else
  6867. {
  6868. parameters.Add(new OracleParameter(":RUF", OracleDbType.Int32, 1, ParameterDirection.Input));
  6869. parameters.Add(new OracleParameter(":ResponUserID", OracleDbType.Int32, se.ResponUserID, ParameterDirection.Input));
  6870. }
  6871. return sqlString;
  6872. }
  6873. /// <summary>
  6874. /// 取得RPT030103_1画面(出窑数量汇总表)的汇总信息查询数据
  6875. /// </summary>
  6876. /// <param name="user">登录用户信息</param>
  6877. /// <param name="se">查询条件</param>
  6878. /// <returns>查询结果</returns>
  6879. public static ServiceResultEntity GetRPT030103SData(SUserInfo user, RPT030103_SE se)
  6880. {
  6881. IDBConnection conn = null;
  6882. try
  6883. {
  6884. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6885. List<OracleParameter> parameters = new List<OracleParameter>();
  6886. string sql = ReportModuleLogic.GetRPT030103SSQL(user, se, ref parameters);
  6887. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  6888. ServiceResultEntity sre = new ServiceResultEntity();
  6889. if (data == null || data.Rows.Count == 0)
  6890. {
  6891. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6892. return sre;
  6893. }
  6894. sre.Data = new DataSet();
  6895. sre.Data.Tables.Add(data);
  6896. return sre;
  6897. }
  6898. catch (Exception ex)
  6899. {
  6900. throw ex;
  6901. }
  6902. finally
  6903. {
  6904. if (conn != null &&
  6905. conn.ConnState == ConnectionState.Open)
  6906. {
  6907. conn.Close();
  6908. }
  6909. }
  6910. }
  6911. /// <summary>
  6912. /// 获取RPT030103_1画面(出窑数量汇总表)的汇总信息查询sql
  6913. /// </summary>
  6914. /// <returns>sql</returns>
  6915. private static string GetRPT030103SSQL(SUserInfo user, RPT030103_SE se, ref List<OracleParameter> parameters)
  6916. {
  6917. string selSql = "";
  6918. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  6919. parameters.Add(new OracleParameter(":rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  6920. selSql = selSql +
  6921. "SELECT pdata.Procedureid Procedureid " +
  6922. " ,decode(gid, 3, '合计', 1, '小计【'||pdata.Procedurename||'】', pdata.Procedurename) Procedurename " +
  6923. " ,decode(gid, 0, to_char(pdata.Userid), '--') Userid " +
  6924. " ,decode(gid, 0, pdata.Usercode, '--') Usercode " +
  6925. " ,decode(gid, 0, to_char(pdata.KilnID), '--') Kilnid " +
  6926. " ,decode(gid, 0, pdata.Kilncode, '--') Kilncode " +
  6927. " ,decode(gid, 0, pdata.goodstypename, '--') goodstypename " +
  6928. " ,decode(gid, 0, to_char(pdata.Goodsid), '--') Goodsid " +
  6929. " ,decode(gid, 0, pdata.Goodscode, '--') Goodscode " +
  6930. " ,OutKilnCount " +
  6931. " FROM (SELECT grouping_id(pdata.Procedureid, " +
  6932. " pdata.Userid ) gid " +
  6933. " ,pdata.Procedureid " +
  6934. " ,pdata.Procedurename " +
  6935. " ,pdata.Userid " +
  6936. " ,pdata.Usercode " +
  6937. " ,pdata.Kilnid " +
  6938. " ,pdata.Kilncode " +
  6939. " ,pdata.goodstypename " +
  6940. " ,pdata.Goodsid " +
  6941. " ,pdata.Goodscode " +
  6942. " ,COUNT(pdata.Barcode) AS OutKilnCount " +
  6943. " FROM (SELECT DISTINCT \n" +
  6944. //" decode(grouping(TP_PM_ProductionData.Procedureid),1,'--',TP_PM_ProductionData.Procedureid) Procedureid, " +
  6945. //" decode(grouping(TP_PM_ProductionData.Procedurename),1,'合计', TP_PM_ProductionData.Procedurename) Procedurename, " +
  6946. //" decode(grouping(TP_PM_ProductionData.Userid),1,'--', TP_PM_ProductionData.Userid) Userid, " +
  6947. //" decode(grouping(TP_PM_ProductionData.Usercode),1,'--', TP_PM_ProductionData.Usercode) Usercode, " +
  6948. //" decode(grouping(temp.Kilncode),1,'--', temp.KilnID) Kilnid, " +
  6949. //" decode(grouping(temp.Kilncode),1,'--', temp.Kilncode) Kilncode, " +
  6950. //" decode(grouping(tp_mst_goodstype.goodstypename),1,'--', tp_mst_goodstype.goodstypename) goodstypename, " +
  6951. //" decode(grouping(TP_PM_ProductionData.Goodsid),1,'--', TP_PM_ProductionData.Goodsid) Goodsid, " +
  6952. //" decode(grouping(TP_PM_ProductionData.Goodscode),1,'--', TP_PM_ProductionData.Goodscode) Goodscode, " +
  6953. "TP_PM_ProductionData.Procedureid,pcp.Procedurename, " +
  6954. //"TP_PM_ProductionData.Userid,TP_PM_ProductionData.Usercode, " +
  6955. (se.DisPUserCode ? " TP_PM_ProductionData.userid, TP_PM_ProductionData.usercode, \n" : " null userid, null usercode, \n") +
  6956. "temp.Kilnid,temp.Kilncode,tp_mst_goodstype.goodstypename, " +
  6957. "TP_PM_ProductionData.Goodsid,TP_PM_ProductionData.Goodscode, TP_PM_ProductionData.barcode " +
  6958. " from TP_PM_ProductionData " +
  6959. " inner join tp_mst_goods on tp_mst_goods.goodsid=TP_PM_ProductionData.Goodsid " +
  6960. " inner join tp_mst_goodstype on tp_mst_goodstype.goodstypeid=tp_mst_goods.goodstypeid " +
  6961. " inner join TP_MST_RptTProcedure on TP_MST_RptTProcedure.Procedureid=TP_PM_ProductionData.Procedureid " +
  6962. //" inner join TP_MST_RptProcedure on TP_MST_RptProcedure.Rptprocedureid=TP_MST_RptTProcedure.Rptprocedureid " +
  6963. " inner join tp_pc_procedure pcp on pcp.procedureid=TP_PM_ProductionData.Procedureid " +
  6964. " inner join " +
  6965. " ( " +
  6966. " SELECT pd.CreateTime, pd.ProductionDataID, pd.Barcode, pd.Kilncode,pd.KilnID, pd.KilnCarID,pd.Kilncarbatchno " +
  6967. " from TP_PM_ProductionData pd ";
  6968. //" inner join TP_MST_RptSProcedure on TP_MST_RptSProcedure.Procedureid=pd.Procedureid ";
  6969. if (!string.IsNullOrEmpty(se.TestMouldFlag) || se.DTimeStart.HasValue || se.DTimeEnd.HasValue|| se.TestFormFlag!=0)
  6970. {
  6971. selSql += " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid=pd.groutingdailydetailid ";
  6972. }
  6973. selSql +=
  6974. " where pd.Accountid=:AccountID " +
  6975. // 恒洁三车间特殊处理(质量相关)
  6976. // " and TP_PM_ProductionData.Valueflag='1' " +
  6977. //// 数据重复 modify by chenxy begin
  6978. //// " and TP_MST_RptSProcedure.Rptprocedureid=:rptProcedureId " +
  6979. //// 数据重复 modify by chenxy end
  6980. //" and TP_MST_RptSProcedure.Procedureid=:rptSprocedureId ";
  6981. " AND ((:rptSprocedureId = 11 AND pd.isrefire = '0' AND ((pd.procedureid = 11 AND pd.valueflag = '1' AND (pd.checkflag = '1' or pd.checkflag is null)) OR (pd.procedureid =104 AND pd.checkflag = '1'))) \n" +
  6982. " OR (:rptSprocedureId = 58 AND ((pd.procedureid = 58 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '6' AND pd.checkflag = '1'))) \n" +
  6983. " OR (:rptSprocedureId not in (11,58) AND pd.valueflag = '1' AND pd.procedureid = :rptSprocedureId))\n";
  6984. // end
  6985. //if (se.CreateTimeStart.HasValue)
  6986. //{
  6987. // selSql = selSql + " AND TP_PM_ProductionData.CreateTime >= :CreateTimeStart ";
  6988. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  6989. //}
  6990. //if (se.CreateTimeEnd.HasValue)
  6991. //{
  6992. // selSql = selSql + " AND TP_PM_ProductionData.CreateTime <= :CreateTimeEnd ";
  6993. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  6994. //}
  6995. if (se.RptSProcedureID == 58)
  6996. {
  6997. selSql += " AND PD.KILNID IN(3,4,6) ";
  6998. }
  6999. else
  7000. {
  7001. selSql += " AND PD.KILNID IN(1,2,5) ";
  7002. }
  7003. if (se.OutTimeStart.HasValue)
  7004. {
  7005. selSql = selSql + " AND pd.CreateTime >=:OutTimeStart ";
  7006. parameters.Add(new OracleParameter(":OutTimeStart", OracleDbType.Date, se.OutTimeStart.Value, ParameterDirection.Input));
  7007. }
  7008. if (se.OutTimeEnd.HasValue)
  7009. {
  7010. selSql = selSql + " AND pd.CreateTime <= :OutTimeEnd ";
  7011. parameters.Add(new OracleParameter(":OutTimeEnd", OracleDbType.Date, se.OutTimeEnd.Value, ParameterDirection.Input));
  7012. }
  7013. if (se.GTimeStart.HasValue)
  7014. {
  7015. selSql = selSql + " AND pd.GROUTINGDATE >=:GTimeStart ";
  7016. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  7017. }
  7018. if (se.GTimeEnd.HasValue)
  7019. {
  7020. selSql = selSql + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  7021. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  7022. }
  7023. if (se.DTimeStart.HasValue)
  7024. {
  7025. selSql = selSql + " AND gdd.DELIVERTIME >=:DTimeStart ";
  7026. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart.Value, ParameterDirection.Input));
  7027. }
  7028. if (se.DTimeEnd.HasValue)
  7029. {
  7030. selSql = selSql + " AND gdd.DELIVERTIME <= :DTimeEnd ";
  7031. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd.Value, ParameterDirection.Input));
  7032. }
  7033. // 试验标识
  7034. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  7035. {
  7036. selSql += " AND gdd.TestMouldFlag = :TestMouldFlag ";
  7037. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  7038. }
  7039. //实验单标识
  7040. if (se.TestFormFlag == 1)
  7041. {
  7042. selSql+=" AND(gdd.TESTFORMFLAG in(1)) ";
  7043. }
  7044. else if (se.TestFormFlag == 2)
  7045. {
  7046. selSql+=" AND(gdd.TESTFORMFLAG in(2)) ";
  7047. }
  7048. else if (se.TestFormFlag == 3)
  7049. {
  7050. selSql+=" AND(gdd.TESTFORMFLAG IS NULL OR gdd.TESTFORMFLAG =1) ";
  7051. }
  7052. if (se.Specialrepairflag)
  7053. {
  7054. selSql = selSql +
  7055. " ) temp " +
  7056. " on TP_PM_ProductionData.Barcode=temp.barcode " +
  7057. " " +
  7058. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 begin
  7059. " and TP_PM_ProductionData.createtime <= temp.createtime\n" +
  7060. " and (TP_PM_ProductionData.MODELTYPE = 8 or (not exists (SELECT 1\n" +
  7061. " FROM TP_PM_ProductionData pp\n" +
  7062. " WHERE pp.barcode = temp.barcode and pp.createtime > TP_PM_ProductionData.createtime\n" +
  7063. " AND pp.createtime < temp.createtime\n" +
  7064. " AND pp.procedureid = TP_PM_ProductionData.Procedureid)))\n" +
  7065. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 end
  7066. " where " +
  7067. // 公坯、干补不算交坯工序的质量。
  7068. // " and ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and TP_PM_ProductionData.IsPublicBody = '0' and TP_PM_ProductionData.SpecialRepairFlag = '0')) \n" +
  7069. // modify wangx 2015-12-3
  7070. " ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and TP_PM_ProductionData.SpecialRepairFlag = '0')) \n" +
  7071. " and TP_PM_ProductionData.Valueflag='1' " +
  7072. //" and TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId ";
  7073. " and TP_MST_RptTProcedure.Rptprocedureid=:rptProcedureId ";
  7074. parameters.Add(new OracleParameter(":rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  7075. }
  7076. else
  7077. {
  7078. selSql = selSql +
  7079. " ) temp " +
  7080. " on TP_PM_ProductionData.Barcode=temp.barcode " +
  7081. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 begin
  7082. " and TP_PM_ProductionData.createtime <= temp.createtime\n" +
  7083. " and (TP_PM_ProductionData.MODELTYPE = 8 or (not exists (SELECT 1\n" +
  7084. " FROM TP_PM_ProductionData pp\n" +
  7085. " WHERE pp.barcode = temp.barcode and pp.createtime > TP_PM_ProductionData.createtime\n" +
  7086. " AND pp.createtime < temp.createtime\n" +
  7087. " AND pp.procedureid = TP_PM_ProductionData.Procedureid)))\n" +
  7088. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 end
  7089. " where TP_PM_ProductionData.Valueflag='1' " +
  7090. //" and TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId ";
  7091. " and TP_MST_RptTProcedure.Rptprocedureid=:rptProcedureId ";
  7092. parameters.Add(new OracleParameter(":rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  7093. }
  7094. if (se.CreateTimeStart.HasValue)
  7095. {
  7096. selSql = selSql + " AND TP_PM_ProductionData.CreateTime >=:CreateTimeStart ";
  7097. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7098. }
  7099. if (se.CreateTimeEnd.HasValue)
  7100. {
  7101. selSql = selSql + " AND TP_PM_ProductionData.CreateTime <= :CreateTimeEnd ";
  7102. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7103. }
  7104. if (!string.IsNullOrEmpty(se.GoodsIDS))
  7105. {
  7106. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  7107. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  7108. }
  7109. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  7110. {
  7111. // selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1 ";
  7112. //selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1 ";
  7113. selSql = selSql + " AND tp_mst_goodstype.goodstypecode LIKE '" + se.GoodsTypeIDS + "%'";
  7114. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  7115. }
  7116. if (se.ProductionLineID.HasValue)
  7117. {
  7118. selSql = selSql + " AND instr(','||:productionLineId||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  7119. parameters.Add(new OracleParameter(":productionLineId", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  7120. }
  7121. //else
  7122. //{
  7123. // selSql = selSql + " AND TP_PM_ProductionData.ProductionLineId in(Select PurviewID from TP_MST_UserPurview where PurviewType= 7 and UserID = :UserID) ";
  7124. //}
  7125. //selSql = selSql + " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=TP_PM_ProductionData.ProductionLineId))";
  7126. //selSql = selSql + " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=TP_PM_ProductionData.procedureid))";
  7127. parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  7128. if (!string.IsNullOrEmpty(se.RptTProcedureIDS))
  7129. {
  7130. selSql = selSql + " AND instr(','||:rptTprocedureId||',',','||TP_MST_RptTProcedure.ProcedureId||',')>0 ";
  7131. parameters.Add(new OracleParameter(":rptTprocedureId", OracleDbType.NVarchar2, se.RptTProcedureIDS, ParameterDirection.Input));
  7132. }
  7133. if (!string.IsNullOrEmpty(se.UserIDS))
  7134. {
  7135. selSql = selSql + " AND instr(','||:userIDS||',',','||TP_PM_ProductionData.Userid||',')>0 ";
  7136. parameters.Add(new OracleParameter(":userIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7137. }
  7138. if (se.KilnID.HasValue)
  7139. {
  7140. selSql = selSql + " AND temp.KilnID=:KilnID ";
  7141. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7142. }
  7143. if (!string.IsNullOrWhiteSpace(se.GroutingUserCode))
  7144. {
  7145. selSql = selSql + " AND instr(TP_PM_ProductionData.GroutingUserCode, :GroutingUserCode) > 0";
  7146. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  7147. }
  7148. selSql = selSql + " order by pcp.displayno, TP_PM_ProductionData.Usercode, temp.Kilncode,tp_mst_goodstype.goodstypename,TP_PM_ProductionData.Goodscode ) pdata" +
  7149. " GROUP BY GROUPING SETS((pdata.Procedureid, pdata.Procedurename, pdata.Userid, pdata.Usercode, pdata.Kilnid, pdata.Kilncode, pdata.goodstypename, pdata.Goodsid, pdata.Goodscode),(pdata.Procedureid, pdata.Procedurename),()) " +
  7150. ") pdata"
  7151. ;
  7152. return selSql;
  7153. }
  7154. /// <summary>
  7155. /// 取得RPT030103_1画面(出窑数量汇总表)的明细信息查询数据
  7156. /// </summary>
  7157. /// <param name="user">登录用户信息</param>
  7158. /// <param name="se">查询条件</param>
  7159. /// <returns>查询结果</returns>
  7160. public static ServiceResultEntity GetRPT030103IData(SUserInfo user, RPT030103_SE se)
  7161. {
  7162. IDBConnection conn = null;
  7163. try
  7164. {
  7165. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7166. List<OracleParameter> parameters = new List<OracleParameter>();
  7167. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030103ISQL(user, se, ref parameters));
  7168. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  7169. ServiceResultEntity sre = new ServiceResultEntity();
  7170. if (data == null || data.Rows.Count == 0)
  7171. {
  7172. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7173. return sre;
  7174. }
  7175. sre.Data = new DataSet();
  7176. sre.Data.Tables.Add(data);
  7177. return sre;
  7178. }
  7179. catch (Exception ex)
  7180. {
  7181. throw ex;
  7182. }
  7183. finally
  7184. {
  7185. if (conn != null &&
  7186. conn.ConnState == ConnectionState.Open)
  7187. {
  7188. conn.Close();
  7189. }
  7190. }
  7191. }
  7192. /// <summary>
  7193. /// 获取RPT030103_1画面(出窑数量汇总表)的明细信息查询sql
  7194. /// </summary>
  7195. /// <returns>sql</returns>
  7196. private static string GetRPT030103ISQL(SUserInfo user, RPT030103_SE se, ref List<OracleParameter> parameters)
  7197. {
  7198. string selSql = "";
  7199. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7200. parameters.Add(new OracleParameter(":rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  7201. selSql = selSql +
  7202. "select distinct " +
  7203. "TP_PM_ProductionData.Barcode, " +
  7204. //"TP_PM_ProductionData.UserCode, " +
  7205. (se.DisPUserCode ? " TP_PM_ProductionData.userid, TP_PM_ProductionData.usercode, cu.usercode Cusercode, \n" : " null userid, null usercode, null Cusercode, \n") +
  7206. "pcp.ProcedureName, " +
  7207. "tp_mst_goodstype.goodstypename, " +
  7208. "TP_PM_ProductionData.Goodscode, " +
  7209. "TP_PM_ProductionData.GroutingUserCode, " +
  7210. "TP_PM_ProductionData.GroutingLineCode, " +
  7211. "TP_PM_ProductionData.GroutingMouldCode, " +
  7212. // 多次干补 重复条码
  7213. //"TP_PM_ProductionData.Createtime OverDate, " +
  7214. "temp.Kilnid, " +
  7215. "temp.Kilncode, " +
  7216. "temp.Kilncarcode, " +
  7217. "temp.Createtime, " +
  7218. "temp.DELIVERTIME DDate, " +
  7219. "temp.GROUTINGDATE GDate, " +
  7220. "temp.TestMouldFlag, " +
  7221. "replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName, " +
  7222. "SUBSTR( TP_PM_ProductionData.KILNCARBATCHNO, INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 2 ) -1 ) AS Kcode, " +
  7223. "SUBSTR( TP_PM_ProductionData.KILNCARBATCHNO, INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 1 ) -1 ) AS Fyear " +
  7224. "from TP_PM_ProductionData " +
  7225. "inner join tp_mst_goods on tp_mst_goods.goodsid=TP_PM_ProductionData.Goodsid " +
  7226. "inner join tp_mst_goodstype on tp_mst_goodstype.goodstypeid=tp_mst_goods.goodstypeid " +
  7227. "inner join TP_MST_RptTProcedure on TP_MST_RptTProcedure.Procedureid=TP_PM_ProductionData.Procedureid " +
  7228. //"inner join TP_MST_RptProcedure on TP_MST_RptProcedure.Rptprocedureid=TP_MST_RptTProcedure.Rptprocedureid " +
  7229. " inner join tp_pc_procedure pcp on pcp.procedureid=TP_PM_ProductionData.Procedureid " +
  7230. "left join TP_MST_logo on TP_PM_ProductionData.logoid=TP_MST_logo.logoid " +
  7231. "left join TP_MST_User cu on TP_PM_ProductionData.createuserid=cu.userid " +
  7232. "inner join " +
  7233. "( " +
  7234. " select " +
  7235. " pd.Barcode, " +
  7236. " pd.Kilncode, " +
  7237. " pd.Kilncarcode, " +
  7238. " pd.Createtime, " +
  7239. " pd.KilnID " +
  7240. " ,gdd.DELIVERTIME " +
  7241. " ,pd.GROUTINGDATE " +
  7242. " ,pd.KilnCarID " +
  7243. " ,pd.KILNCARBATCHNO" +
  7244. " ,gdd.TestMouldFlag" +
  7245. " from TP_PM_ProductionData pd" +
  7246. //" inner join TP_MST_RptSProcedure on TP_MST_RptSProcedure.Procedureid=TP_PM_ProductionData.Procedureid " +
  7247. //if (se.DTimeStart.HasValue || se.DTimeEnd.HasValue)
  7248. //{
  7249. // selSql += " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid=TP_PM_ProductionData.groutingdailydetailid ";
  7250. //}
  7251. " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid=pd.groutingdailydetailid " +
  7252. // selSql +=
  7253. " where pd.Accountid=:AccountID " +
  7254. // 恒洁三车间特殊处理(质量相关)
  7255. // " and pd.Valueflag='1' " +
  7256. //// 数据重复 modify by chenxy begin
  7257. //" and TP_MST_RptSProcedure.Rptprocedureid=:rptProcedureId " +
  7258. //// 数据重复 modify by chenxy end
  7259. //" and TP_MST_RptSProcedure.Procedureid=:rptSprocedureId ";
  7260. " AND ((:rptSprocedureId = 11 AND pd.isrefire = '0' AND pd.islengbu = '0' AND ((pd.procedureid = 11 AND pd.valueflag = '1' AND (pd.checkflag = '1' or pd.checkflag is null)) OR (pd.procedureid =104 AND pd.checkflag = '1'))) \n" +
  7261. " OR (:rptSprocedureId = 58 AND ((pd.procedureid = 58 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '6' AND pd.checkflag = '1'))) \n" +
  7262. " OR (:rptSprocedureId not in (11,58) AND pd.valueflag = '1' AND pd.procedureid = :rptSprocedureId))\n";
  7263. if (se.RptSProcedureID == 58)
  7264. {
  7265. selSql += " AND PD.KILNID IN(3,4,6) ";
  7266. }
  7267. else
  7268. {
  7269. selSql += " AND PD.KILNID IN(1,2,5) ";
  7270. }
  7271. if (se.OutTimeStart.HasValue)
  7272. {
  7273. selSql = selSql + " AND pd.CreateTime >=:OutTimeStart ";
  7274. parameters.Add(new OracleParameter(":OutTimeStart", OracleDbType.Date, se.OutTimeStart.Value, ParameterDirection.Input));
  7275. }
  7276. if (se.OutTimeEnd.HasValue)
  7277. {
  7278. selSql = selSql + " AND pd.CreateTime <= :OutTimeEnd ";
  7279. parameters.Add(new OracleParameter(":OutTimeEnd", OracleDbType.Date, se.OutTimeEnd.Value, ParameterDirection.Input));
  7280. }
  7281. if (se.GTimeStart.HasValue)
  7282. {
  7283. selSql = selSql + " AND pd.GROUTINGDATE >=:GTimeStart ";
  7284. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  7285. }
  7286. if (se.GTimeEnd.HasValue)
  7287. {
  7288. selSql = selSql + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  7289. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  7290. }
  7291. if (se.DTimeStart.HasValue)
  7292. {
  7293. selSql = selSql + " AND gdd.DELIVERTIME >=:DTimeStart ";
  7294. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart.Value, ParameterDirection.Input));
  7295. }
  7296. if (se.DTimeEnd.HasValue)
  7297. {
  7298. selSql = selSql + " AND gdd.DELIVERTIME <= :DTimeEnd ";
  7299. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd.Value, ParameterDirection.Input));
  7300. }
  7301. // 试验标识
  7302. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  7303. {
  7304. selSql += " AND gdd.TestMouldFlag = :TestMouldFlag ";
  7305. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  7306. }
  7307. //实验单标识
  7308. if (se.TestFormFlag==1)
  7309. {
  7310. selSql += " AND(gdd.TESTFORMFLAG in(1)) ";
  7311. }else if (se.TestFormFlag == 2)
  7312. {
  7313. selSql += " AND(gdd.TESTFORMFLAG in(2)) ";
  7314. }
  7315. else if (se.TestFormFlag == 3)
  7316. {
  7317. selSql += " AND(gdd.TESTFORMFLAG IS NULL OR gdd.TESTFORMFLAG =1) ";
  7318. }
  7319. if (se.Specialrepairflag)
  7320. {
  7321. selSql = selSql +
  7322. ") temp " +
  7323. "on TP_PM_ProductionData.Barcode=temp.barcode " +
  7324. " " +
  7325. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 begin
  7326. " and TP_PM_ProductionData.createtime <= temp.createtime\n" +
  7327. " and (TP_PM_ProductionData.MODELTYPE = 8 or (not exists (SELECT 1\n" +
  7328. " FROM TP_PM_ProductionData pp\n" +
  7329. " WHERE pp.barcode = temp.barcode and pp.createtime > TP_PM_ProductionData.createtime\n" +
  7330. " AND pp.createtime < temp.createtime\n" +
  7331. " AND pp.procedureid = TP_PM_ProductionData.Procedureid)))\n" +
  7332. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 end
  7333. "where " + // 公坯、干补不算交坯工序的质量。
  7334. //" and ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and TP_PM_ProductionData.IsPublicBody = '0' and TP_PM_ProductionData.SpecialRepairFlag = '0')) \n" +
  7335. // modify wangx 2015-12-3
  7336. " ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and TP_PM_ProductionData.SpecialRepairFlag = '0')) \n" +
  7337. " and TP_PM_ProductionData.Valueflag='1' " +
  7338. //" and TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId ";
  7339. " and TP_MST_RptTProcedure.Rptprocedureid=:rptProcedureId ";
  7340. parameters.Add(new OracleParameter(":rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  7341. }
  7342. else
  7343. {
  7344. selSql = selSql +
  7345. ") temp " +
  7346. "on TP_PM_ProductionData.Barcode=temp.barcode " +
  7347. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 begin
  7348. " and TP_PM_ProductionData.createtime <= temp.createtime\n" +
  7349. " and (TP_PM_ProductionData.MODELTYPE = 8 or (not exists (SELECT 1\n" +
  7350. " FROM TP_PM_ProductionData pp\n" +
  7351. " WHERE pp.barcode = temp.barcode and pp.createtime > TP_PM_ProductionData.createtime\n" +
  7352. " AND pp.createtime < temp.createtime\n" +
  7353. " AND pp.procedureid = TP_PM_ProductionData.Procedureid)))\n" +
  7354. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 end
  7355. //" where TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId " +
  7356. //" and TP_PM_ProductionData.Valueflag='1' ";
  7357. " where TP_PM_ProductionData.Valueflag='1' " +
  7358. //" and TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId ";
  7359. " and TP_MST_RptTProcedure.Rptprocedureid=:rptProcedureId ";
  7360. parameters.Add(new OracleParameter(":rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  7361. }
  7362. if (se.CreateTimeStart.HasValue)
  7363. {
  7364. selSql = selSql + " AND TP_PM_ProductionData.CreateTime >=:CreateTimeStart ";
  7365. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7366. }
  7367. if (se.CreateTimeEnd.HasValue)
  7368. {
  7369. selSql = selSql + " AND TP_PM_ProductionData.CreateTime <= :CreateTimeEnd ";
  7370. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7371. }
  7372. if (!string.IsNullOrEmpty(se.GoodsIDS))
  7373. {
  7374. selSql = selSql + " AND instr(',' || :GoodsIDS ||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  7375. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  7376. }
  7377. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  7378. {
  7379. //selSql = selSql + " AND instr(',' || :GoodsTypeIDS ||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1 ";
  7380. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1 ";
  7381. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  7382. }
  7383. if (se.ProductionLineID.HasValue)
  7384. {
  7385. selSql = selSql + " AND instr(',' || :productionLineId ||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  7386. parameters.Add(new OracleParameter(":productionLineId", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  7387. }
  7388. if (!string.IsNullOrEmpty(se.RptTProcedureIDS))
  7389. {
  7390. selSql = selSql + " AND instr(',' || :rptTprocedureIDS ||',',','||TP_MST_RptTProcedure.ProcedureId||',')>0 ";
  7391. parameters.Add(new OracleParameter(":rptTprocedureIDS", OracleDbType.NVarchar2, se.RptTProcedureIDS, ParameterDirection.Input));
  7392. }
  7393. if (!string.IsNullOrEmpty(se.UserIDS))
  7394. {
  7395. selSql = selSql + " AND instr(',' || :UserIDS ||',',','||TP_PM_ProductionData.Userid||',')>0 ";
  7396. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7397. }
  7398. if (se.KilnID.HasValue)
  7399. {
  7400. selSql = selSql + " AND temp.KilnID=:KilnID ";
  7401. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7402. }
  7403. if (!string.IsNullOrWhiteSpace(se.GroutingUserCode))
  7404. {
  7405. selSql = selSql + " AND instr(TP_PM_ProductionData.GroutingUserCode, :GroutingUserCode) > 0";
  7406. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  7407. }
  7408. if (!string.IsNullOrWhiteSpace(se.Kcode))
  7409. {
  7410. selSql = selSql + " AND SUBSTR( TP_PM_ProductionData.KILNCARBATCHNO, INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 2 ) -1 ) = :Kcode";
  7411. parameters.Add(new OracleParameter(":Kcode", OracleDbType.Varchar2, se.Kcode.PadLeft(3, '0'), ParameterDirection.Input));
  7412. }
  7413. if (!string.IsNullOrWhiteSpace(se.Fyear))
  7414. {
  7415. selSql = selSql + " AND SUBSTR( TP_PM_ProductionData.KILNCARBATCHNO, INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( TP_PM_ProductionData.KILNCARBATCHNO, '$', 1, 1 ) -1 ) = :Fyear";
  7416. parameters.Add(new OracleParameter(":Fyear", OracleDbType.Varchar2, se.Fyear, ParameterDirection.Input));
  7417. }
  7418. selSql = selSql + " order by pcp.Procedurename,temp.Kilncode,temp.Kilncarcode, " +
  7419. (se.DisPUserCode ? " TP_PM_ProductionData.usercode, \n" : "") +
  7420. " TP_PM_ProductionData.Goodscode,TP_PM_ProductionData.Barcode ";
  7421. return selSql;
  7422. }
  7423. /// <summary>
  7424. /// 取得RPT030104_1画面(窑车产量汇总表)的窑炉汇总信息查询数据
  7425. /// </summary>
  7426. /// <param name="user">登录用户信息</param>
  7427. /// <param name="se">查询条件</param>
  7428. /// <returns>查询结果</returns>
  7429. public static ServiceResultEntity GetRPT030104SData(SUserInfo user, RPT030104_SE se)
  7430. {
  7431. IDBConnection conn = null;
  7432. try
  7433. {
  7434. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7435. List<OracleParameter> parameters = new List<OracleParameter>();
  7436. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030104SSQL(user, se, ref parameters));
  7437. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  7438. ServiceResultEntity sre = new ServiceResultEntity();
  7439. if (data == null || data.Rows.Count == 0)
  7440. {
  7441. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7442. return sre;
  7443. }
  7444. sre.Data = new DataSet();
  7445. sre.Data.Tables.Add(data);
  7446. return sre;
  7447. }
  7448. catch (Exception ex)
  7449. {
  7450. throw ex;
  7451. }
  7452. finally
  7453. {
  7454. if (conn != null &&
  7455. conn.ConnState == ConnectionState.Open)
  7456. {
  7457. conn.Close();
  7458. }
  7459. }
  7460. }
  7461. /// <summary>
  7462. /// 获取RPT030104_1画面(窑车产量汇总表)的窑炉汇总查询sql
  7463. /// </summary>
  7464. /// <returns>sql</returns>
  7465. private static string GetRPT030104SSQL(SUserInfo user, RPT030104_SE se, ref List<OracleParameter> parameters)
  7466. {
  7467. string selSql = "";
  7468. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7469. parameters.Add(new OracleParameter(":ProcedureModelTypeID", OracleDbType.Int32, se.ProcedureModelTypeID, ParameterDirection.Input));
  7470. selSql = "select " +
  7471. "decode(Createtime,'小计',decode(Proceduremodeltypename,'总计','总计','--'),Proceduremodeltypename) Proceduremodeltypename, " +
  7472. "decode(usercode,'合计',decode(Kilncode,'--','--','合计'),decode(createtime,'小计','--',Kilncode)) Kilncode, " +
  7473. "decode(Createtime,'小计',decode(usercode,'合计','--','小计'),Usercode) Usercode, " +
  7474. "decode(Kilncarcode,'--','--',Createtime) Createtime, " +
  7475. "Kilncarcode, " +
  7476. "Remarks, " +
  7477. "KilnCarCount " +
  7478. " from " +
  7479. " ( " +
  7480. " select " +
  7481. " decode(grouping(TP_SYS_ProcedureModelType.Proceduremodeltypename),1,'总计',TP_SYS_ProcedureModelType.Proceduremodeltypename) Proceduremodeltypename, " +
  7482. " decode(grouping(TP_MST_Kiln.Kilncode),1,'--',TP_MST_Kiln.Kilncode) Kilncode, " +
  7483. " decode(grouping(TP_PM_KilnCarData.Usercode),1,'合计',TP_PM_KilnCarData.Usercode) Usercode, " +
  7484. " decode(grouping(TP_MST_KilnCar.Kilncarcode),1,'--',TP_MST_KilnCar.Kilncarcode) Kilncarcode, " +
  7485. " decode(grouping(TP_PM_KilnCarData.Remarks),1,'--',TP_PM_KilnCarData.Remarks) Remarks, " +
  7486. " decode(grouping(TP_PM_KilnCarData.Createtime),1,'小计',TP_PM_KilnCarData.Createtime) Createtime, " +
  7487. " count(TP_PM_KilnCarData.Kilncarid) as KilnCarCount " +
  7488. " from " +
  7489. " ( " +
  7490. " select " +
  7491. " to_char(TP_PM_KilnCarData.Createtime,'yyyy-mm-dd hh24:mi') Createtime, " +
  7492. " TP_PM_KilnCarData.Modeltype, " +
  7493. " TP_PM_KilnCarData.Kilncarid, " +
  7494. " TP_PM_KilnCarData.Kilnid, " +
  7495. " TP_PM_KilnCarData.Userid, " +
  7496. " TP_PM_KilnCarData.Remarks, " +
  7497. " TP_PM_KilnCarData.Accountid, " +
  7498. " TP_PM_KilnCarData.Usercode " +
  7499. " from TP_PM_KilnCarData " +
  7500. " left join TP_MST_KilnCar kc on kc.kilncarid = TP_PM_KilnCarData.Kilncarid " +
  7501. " where TP_PM_KilnCarData.Accountid=:AccountID " +
  7502. " and TP_PM_KilnCarData.Valueflag=1 " +
  7503. " and TP_PM_KilnCarData.Modeltype=:ProcedureModelTypeID ";
  7504. if (se.KilnID.HasValue)
  7505. {
  7506. selSql = selSql + " AND TP_PM_KilnCarData.KilnID=:KilnID ";
  7507. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7508. }
  7509. //if (se.KilnCarID.HasValue)
  7510. //{
  7511. // selSql = selSql + " AND TP_PM_KilnCarData.KilnCarID=:KilnCarID";
  7512. // parameters.Add(new OracleParameter(":KilnCarID", OracleDbType.Int32, se.KilnCarID, ParameterDirection.Input));
  7513. //}
  7514. if (!string.IsNullOrEmpty(se.KilnCarCode))
  7515. {
  7516. selSql = selSql + " AND instr(kc.KilnCarCode, :KilnCarCode ) > 0";
  7517. parameters.Add(new OracleParameter(":KilnCarCode", OracleDbType.NVarchar2, se.KilnCarCode, ParameterDirection.Input));
  7518. }
  7519. if (se.KilnCarNumBegin.HasValue && se.KilnCarNumEnd.HasValue && se.KilnCarNumBegin.Value > se.KilnCarNumEnd.Value)
  7520. {
  7521. selSql = selSql + " AND (kc.KilnCarNum >= :KilnCarNumBegin or kc.KilnCarNum <= :KilnCarNumEnd)";
  7522. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7523. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7524. }
  7525. else
  7526. {
  7527. if (se.KilnCarNumBegin.HasValue)
  7528. {
  7529. selSql = selSql + " AND kc.KilnCarNum >= :KilnCarNumBegin ";
  7530. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7531. }
  7532. if (se.KilnCarNumEnd.HasValue)
  7533. {
  7534. selSql = selSql + " AND kc.KilnCarNum <= :KilnCarNumEnd ";
  7535. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7536. }
  7537. }
  7538. if (se.CreateTimeStart.HasValue)
  7539. {
  7540. selSql = selSql + " AND TP_PM_KilnCarData.CreateTime>=:CreateTimeStart ";
  7541. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7542. }
  7543. if (se.CreateTimeEnd.HasValue)
  7544. {
  7545. selSql = selSql + " AND TP_PM_KilnCarData.CreateTime<= :CreateTimeEnd";
  7546. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7547. }
  7548. selSql = selSql +
  7549. " ) TP_PM_KilnCarData " +
  7550. "inner join TP_SYS_ProcedureModelType on TP_SYS_ProcedureModelType.Proceduremodeltypeid=TP_PM_KilnCarData.Modeltype " +
  7551. "inner join TP_MST_KilnCar on TP_MST_KilnCar.Kilncarid=TP_PM_KilnCarData.Kilncarid " +
  7552. "inner join TP_MST_Kiln on TP_MST_Kiln.Kilnid=TP_PM_KilnCarData.Kilnid " +
  7553. "where 1=1";
  7554. if (!string.IsNullOrEmpty(se.UserIDS))
  7555. {
  7556. selSql = selSql + " AND instr(','||:UserIDS||',',','||TP_PM_KilnCarData.UserID||',')>0";
  7557. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7558. }
  7559. selSql = selSql + "group by rollup( " +
  7560. " TP_SYS_ProcedureModelType.Proceduremodeltypename, " +
  7561. " TP_MST_Kiln.Kilncode, " +
  7562. " TP_PM_KilnCarData.Usercode, " +
  7563. " TP_PM_KilnCarData.Createtime, " +
  7564. " TP_PM_KilnCarData.Remarks, " +
  7565. " TP_MST_KilnCar.Kilncarcode " +
  7566. " ) " +
  7567. " ) temp " +
  7568. " where (Kilncarcode !='--' ) " +
  7569. " or " +
  7570. " (Remarks='--' and Usercode='合计' and kilncode!='--') " +
  7571. " or (Remarks='--' and Proceduremodeltypename='总计') " +
  7572. " or (Remarks='--' and createtime='小计' and kilncode!='--')";
  7573. return selSql;
  7574. }
  7575. /// <summary>
  7576. /// 取得RPT030104_1画面(窑车产量汇总表)的窑车产量汇总信息查询数据
  7577. /// </summary>
  7578. /// <param name="user">登录用户信息</param>
  7579. /// <param name="se">查询条件</param>
  7580. /// <returns>查询结果</returns>
  7581. public static ServiceResultEntity GetRPT030104IData(SUserInfo user, RPT030104_SE se)
  7582. {
  7583. IDBConnection conn = null;
  7584. try
  7585. {
  7586. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7587. List<OracleParameter> parameters = new List<OracleParameter>();
  7588. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030104ISQL(user, se, ref parameters));
  7589. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  7590. ServiceResultEntity sre = new ServiceResultEntity();
  7591. if (data == null || data.Rows.Count == 0)
  7592. {
  7593. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7594. return sre;
  7595. }
  7596. sre.Data = new DataSet();
  7597. sre.Data.Tables.Add(data);
  7598. return sre;
  7599. }
  7600. catch (Exception ex)
  7601. {
  7602. throw ex;
  7603. }
  7604. finally
  7605. {
  7606. if (conn != null &&
  7607. conn.ConnState == ConnectionState.Open)
  7608. {
  7609. conn.Close();
  7610. }
  7611. }
  7612. }
  7613. /// <summary>
  7614. /// 获取查询sql
  7615. /// </summary>
  7616. /// <returns>sql</returns>
  7617. private static string GetRPT030104ISQL(SUserInfo user, RPT030104_SE se, ref List<OracleParameter> parameters)
  7618. {
  7619. string selSql = "";
  7620. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7621. parameters.Add(new OracleParameter(":ProcedureModelTypeID", OracleDbType.Int32, se.ProcedureModelTypeID, ParameterDirection.Input));
  7622. selSql = selSql +
  7623. "SELECT " +
  7624. "decode(createtime,'小计',decode(proceduremodeltypename,'总计','总计','--'),proceduremodeltypename) proceduremodeltypename, " +
  7625. "decode(createtime,'小计','--',kilncode) kilncode, " +
  7626. "decode(kilncarcode,'合计',decode(usercode,'--','--','合计'),decode(createtime,'小计','--',usercode)) usercode, " +
  7627. "decode(createtime,'小计',decode(kilncarcode,'合计','--','小计'),kilncarcode) kilncarcode, " +
  7628. "decode(goodscode,'--','--',createtime) createtime, " +
  7629. "GOODSTYPENAME, " +
  7630. "Goodscode, " +
  7631. "GOODSSPECIFICATION, " +
  7632. "GoodsCount " +
  7633. "from " +
  7634. "( " +
  7635. " SELECT " +
  7636. " decode(grouping(TP_SYS_ProcedureModelType.Proceduremodeltypename),1,'总计',TP_SYS_ProcedureModelType.Proceduremodeltypename) Proceduremodeltypename, " +
  7637. " decode(grouping(TP_PM_ProductionData.Kilncode),1,'--',TP_PM_ProductionData.Kilncode) Kilncode, " +
  7638. " decode(grouping(TP_PM_ProductionData.Usercode),1,'--',TP_PM_ProductionData.Usercode) Usercode, " +
  7639. " decode(grouping(TP_MST_KilnCar.Kilncarcode),1,'合计',TP_MST_KilnCar.Kilncarcode) Kilncarcode, " +
  7640. " decode(grouping(TP_PM_ProductionData.CreateTime),1,'小计',TP_PM_ProductionData.CreateTime) CreateTime, " +
  7641. " decode(grouping(TP_MST_Goods.Goodscode),1,'--',TP_MST_Goods.Goodscode) Goodscode, " +
  7642. " decode(grouping(TP_MST_Goods.GOODSSPECIFICATION),1,'--',TP_MST_Goods.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  7643. " decode(grouping(TP_MST_GOODSTYPE.GOODSTYPENAME),1,'--',TP_MST_GOODSTYPE.GOODSTYPENAME) GOODSTYPENAME, " +
  7644. " count(TP_MST_Goods.Goodscode) as GoodsCount " +
  7645. " from " +
  7646. " ( " +
  7647. " SELECT TP_PM_ProductionData.Modeltype, " +
  7648. " TP_PM_ProductionData.Goodsid, " +
  7649. " TP_PM_ProductionData.KilnCarID, " +
  7650. " TP_PM_ProductionData.Kilncode, " +
  7651. //" TP_PM_ProductionData.Usercode, " +
  7652. " kcd.Usercode, " +
  7653. " to_char(kcd.CreateTime,'yyyy-mm-dd hh24:mi') CreateTime " +
  7654. " from TP_PM_ProductionData " +
  7655. " left join TP_PM_KilnCarData kcd on kcd.KilnCarBatchNo = TP_PM_ProductionData.KilnCarBatchNo and kcd.ProcedureID = TP_PM_ProductionData.ProcedureID " +
  7656. " where " +
  7657. " TP_PM_ProductionData.Accountid=:AccountID " +
  7658. " and TP_PM_ProductionData.Valueflag=1 " +
  7659. " and TP_PM_ProductionData.Modeltype= :ProcedureModelTypeID ";
  7660. if (se.KilnID.HasValue)
  7661. {
  7662. selSql = selSql + " AND TP_PM_ProductionData.KilnID=:KilnID ";
  7663. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7664. }
  7665. //if (se.KilnCarID.HasValue)
  7666. //{
  7667. // selSql = selSql + " AND TP_PM_ProductionData.KilnCarID=:KilnCarID";
  7668. // parameters.Add(new OracleParameter(":KilnCarID", OracleDbType.Int32, se.KilnCarID, ParameterDirection.Input));
  7669. //}
  7670. if (!string.IsNullOrEmpty(se.GoodsIDS))
  7671. {
  7672. selSql = selSql + " AND instr(','||:goodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  7673. parameters.Add(new OracleParameter(":goodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  7674. }
  7675. if (!string.IsNullOrEmpty(se.UserIDS))
  7676. {
  7677. //selSql = selSql + " AND instr(','||:UserIDS||',',','||TP_PM_ProductionData.UserID||',')>0 ";
  7678. selSql = selSql + " AND instr(','||:UserIDS||',',','||kcd.UserID||',')>0 ";
  7679. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7680. }
  7681. if (se.CreateTimeStart.HasValue)
  7682. {
  7683. //selSql = selSql + " AND TP_PM_ProductionData.CreateTime>= :CreateTimeStart ";
  7684. selSql = selSql + " AND kcd.CreateTime>= :CreateTimeStart ";
  7685. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7686. }
  7687. if (se.CreateTimeEnd.HasValue)
  7688. {
  7689. //selSql = selSql + " AND TP_PM_ProductionData.CreateTime<= :CreateTimeEnd ";
  7690. selSql = selSql + " AND kcd.CreateTime<= :CreateTimeEnd ";
  7691. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7692. }
  7693. selSql = selSql +
  7694. " ) TP_PM_ProductionData " +
  7695. " inner join TP_SYS_ProcedureModelType on TP_SYS_ProcedureModelType.Proceduremodeltypeid=TP_PM_ProductionData.Modeltype " +
  7696. " inner join TP_MST_Goods on TP_MST_Goods.Goodsid=TP_PM_ProductionData.Goodsid " +
  7697. " inner join TP_MST_GOODSTYPE on TP_MST_GOODSTYPE.GOODSTYPEID=TP_MST_Goods.Goodstypeid " +
  7698. " inner join TP_MST_KilnCar on TP_MST_KilnCar.Kilncarid=TP_PM_ProductionData.KilnCarID " +
  7699. " where 1=1 ";
  7700. if (!string.IsNullOrEmpty(se.KilnCarCode))
  7701. {
  7702. selSql = selSql + " AND instr(TP_MST_KilnCar.KilnCarCode, :KilnCarCode ) > 0";
  7703. parameters.Add(new OracleParameter(":KilnCarCode", OracleDbType.NVarchar2, se.KilnCarCode, ParameterDirection.Input));
  7704. }
  7705. if (se.KilnCarNumBegin.HasValue && se.KilnCarNumEnd.HasValue && se.KilnCarNumBegin.Value > se.KilnCarNumEnd.Value)
  7706. {
  7707. selSql = selSql + " AND (TP_MST_KilnCar.KilnCarNum >= :KilnCarNumBegin or TP_MST_KilnCar.KilnCarNum <= :KilnCarNumEnd)";
  7708. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7709. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7710. }
  7711. else
  7712. {
  7713. if (se.KilnCarNumBegin.HasValue)
  7714. {
  7715. selSql = selSql + " AND TP_MST_KilnCar.KilnCarNum >= :KilnCarNumBegin ";
  7716. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7717. }
  7718. if (se.KilnCarNumEnd.HasValue)
  7719. {
  7720. selSql = selSql + " AND TP_MST_KilnCar.KilnCarNum <= :KilnCarNumEnd ";
  7721. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7722. }
  7723. }
  7724. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  7725. {
  7726. //selSql = selSql + " AND instr(','||:goodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1";
  7727. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:goodsTypeIDS)=1";
  7728. parameters.Add(new OracleParameter(":goodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  7729. }
  7730. selSql = selSql +
  7731. " group by rollup( " +
  7732. " TP_SYS_ProcedureModelType.Proceduremodeltypename, " +
  7733. " TP_PM_ProductionData.Kilncode, " +
  7734. " TP_PM_ProductionData.Usercode, " +
  7735. " TP_MST_KilnCar.Kilncarcode, " +
  7736. " TP_PM_ProductionData.CreateTime, " +
  7737. " TP_MST_GOODSTYPE.GOODSTYPENAME, " +
  7738. " TP_MST_Goods.GOODSSPECIFICATION, " +
  7739. " TP_MST_Goods.Goodscode " +
  7740. " ) " +
  7741. ") temp " +
  7742. "where 1=1 and " +
  7743. " (Goodscode !='--' ) or " +
  7744. " (Goodscode='--' and Usercode='合计' and kilncode!='--') or " +
  7745. " (Goodscode='--' and Proceduremodeltypename='总计') or " +
  7746. " (Goodscode='--' and createtime='小计' and usercode!='--')";
  7747. return selSql;
  7748. }
  7749. /// <summary>
  7750. /// 取得RPT030104_1画面(窑车产量汇总表)的窑车产量明细信息查询数据
  7751. /// </summary>
  7752. /// <param name="user">登录用户信息</param>
  7753. /// <param name="se">查询条件</param>
  7754. /// <returns>查询结果</returns>
  7755. public static ServiceResultEntity GetRPT030104UData(SUserInfo user, RPT030104_SE se)
  7756. {
  7757. IDBConnection conn = null;
  7758. try
  7759. {
  7760. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7761. List<OracleParameter> parameters = new List<OracleParameter>();
  7762. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030104USQL(user, se, ref parameters));
  7763. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  7764. ServiceResultEntity sre = new ServiceResultEntity();
  7765. if (data == null || data.Rows.Count == 0)
  7766. {
  7767. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7768. return sre;
  7769. }
  7770. sre.Data = new DataSet();
  7771. sre.Data.Tables.Add(data);
  7772. return sre;
  7773. }
  7774. catch (Exception ex)
  7775. {
  7776. throw ex;
  7777. }
  7778. finally
  7779. {
  7780. if (conn != null &&
  7781. conn.ConnState == ConnectionState.Open)
  7782. {
  7783. conn.Close();
  7784. }
  7785. }
  7786. }
  7787. /// <summary>
  7788. /// 获取RPT030104_1画面(窑车产量汇总表)的窑车产量明细查询sql
  7789. /// </summary>
  7790. /// <returns>sql</returns>
  7791. private static string GetRPT030104USQL(SUserInfo user, RPT030104_SE se, ref List<OracleParameter> parameters)
  7792. {
  7793. string selSql = "";
  7794. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7795. parameters.Add(new OracleParameter(":ProcedureModelTypeID", OracleDbType.Int32, se.ProcedureModelTypeID, ParameterDirection.Input));
  7796. selSql = selSql +
  7797. "select " +
  7798. "decode(createtime,'小计',decode(proceduremodeltypename,'总计','总计','--'),proceduremodeltypename) proceduremodeltypename, " +
  7799. "decode(createtime,'小计','--',kilncode) kilncode, " +
  7800. "decode(kilncarcode,'合计',decode(usercode,'--','--','合计'),decode(createtime,'小计','--',usercode)) usercode, " +
  7801. "decode(createtime,'小计',decode(kilncarcode,'合计','--','小计'),kilncarcode) kilncarcode, " +
  7802. "decode(goodscode,'--','--',createtime) createtime, " +
  7803. "GOODSTYPENAME, " +
  7804. "Goodscode, " +
  7805. "GOODSSPECIFICATION, " +
  7806. "Barcode, " +
  7807. "BarcodeCount, " +
  7808. "LogoCodeName " +
  7809. "from " +
  7810. " ( " +
  7811. " select " +
  7812. " decode(grouping(TP_SYS_ProcedureModelType.Proceduremodeltypename),1,'总计',TP_SYS_ProcedureModelType.Proceduremodeltypename) Proceduremodeltypename, " +
  7813. " decode(grouping(TP_PM_ProductionData.Kilncode),1,'--',TP_PM_ProductionData.Kilncode) Kilncode, " +
  7814. " decode(grouping(TP_PM_ProductionData.Usercode),1,'--',TP_PM_ProductionData.Usercode) Usercode, " +
  7815. " decode(grouping(TP_MST_KilnCar.Kilncarcode),1,'合计',TP_MST_KilnCar.Kilncarcode) Kilncarcode, " +
  7816. " decode(grouping(TP_PM_ProductionData.CreateTime),1,'小计',TP_PM_ProductionData.CreateTime) CreateTime, " +
  7817. " decode(grouping(TP_MST_GOODSTYPE.GOODSTYPENAME),1,'--',TP_MST_GOODSTYPE.GOODSTYPENAME) GOODSTYPENAME, " +
  7818. " decode(grouping(TP_MST_Goods.Goodscode),1,'--',TP_MST_Goods.Goodscode) Goodscode, " +
  7819. " decode(grouping(TP_MST_Goods.GOODSSPECIFICATION),1,'--',TP_MST_Goods.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  7820. " decode(grouping(TP_PM_ProductionData.Barcode),1,'--',TP_PM_ProductionData.Barcode) Barcode, " +
  7821. " decode(grouping(TP_PM_ProductionData.LogoCodeName),1,'--',TP_PM_ProductionData.LogoCodeName) LogoCodeName, " +
  7822. " count(TP_PM_ProductionData.Barcode) as BarcodeCount " +
  7823. " from " +
  7824. " ( " +
  7825. " select TP_PM_ProductionData.logoid," +
  7826. " TP_PM_ProductionData.Modeltype, " +
  7827. " TP_PM_ProductionData.Goodsid, " +
  7828. " TP_PM_ProductionData.KilnCarID, " +
  7829. " TP_PM_ProductionData.Kilncode, " +
  7830. " TP_PM_ProductionData.Barcode, " +
  7831. " TP_PM_ProductionData.Usercode, " +
  7832. " replace((Logoname||'['||Logocode||']'),'[]','') as LogoCodeName, " +
  7833. " to_char(TP_PM_ProductionData.CreateTime,'yyyy-mm-dd hh24:mi') CreateTime " +
  7834. " from TP_PM_ProductionData inner join TP_MST_Logo on TP_PM_ProductionData.logoid=TP_MST_Logo.logoid" +
  7835. " left join TP_PM_KilnCarData kcd on kcd.KilnCarBatchNo = TP_PM_ProductionData.KilnCarBatchNo and kcd.ProcedureID = TP_PM_ProductionData.ProcedureID " +
  7836. " where " +
  7837. " TP_PM_ProductionData.Accountid=:AccountID " +
  7838. " and TP_PM_ProductionData.Valueflag=1 " +
  7839. " and TP_PM_ProductionData.Modeltype=:ProcedureModelTypeID ";
  7840. if (se.KilnID.HasValue)
  7841. {
  7842. selSql = selSql + " AND TP_PM_ProductionData.KilnID=:KilnID ";
  7843. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7844. }
  7845. //if (se.KilnCarID.HasValue)
  7846. //{
  7847. // selSql = selSql + " AND TP_PM_ProductionData.KilnCarID=:KilnCarID ";
  7848. // parameters.Add(new OracleParameter(":KilnCarID", OracleDbType.Int32, se.KilnCarID, ParameterDirection.Input));
  7849. //}
  7850. if (!string.IsNullOrEmpty(se.GoodsIDS))
  7851. {
  7852. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  7853. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  7854. }
  7855. if (!string.IsNullOrEmpty(se.UserIDS))
  7856. {
  7857. selSql = selSql + " AND instr(','||:UserIDS||',',','||kcd.UserID||',')>0 ";
  7858. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7859. }
  7860. if (se.CreateTimeStart.HasValue)
  7861. {
  7862. selSql = selSql + " AND kcd.CreateTime>= :CreateTimeStart ";
  7863. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7864. }
  7865. if (se.CreateTimeEnd.HasValue)
  7866. {
  7867. selSql = selSql + " AND kcd.CreateTime<= :CreateTimeEnd ";
  7868. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7869. }
  7870. selSql = selSql +
  7871. " ) TP_PM_ProductionData " +
  7872. " inner join TP_SYS_ProcedureModelType on TP_SYS_ProcedureModelType.Proceduremodeltypeid=TP_PM_ProductionData.Modeltype " +
  7873. " inner join TP_MST_Goods on TP_MST_Goods.Goodsid=TP_PM_ProductionData.Goodsid " +
  7874. " inner join TP_MST_GOODSTYPE on TP_MST_GOODSTYPE.GOODSTYPEID=TP_MST_Goods.Goodstypeid " +
  7875. " inner join TP_MST_KilnCar on TP_MST_KilnCar.Kilncarid=TP_PM_ProductionData.KilnCarID " +
  7876. " where 1=1";
  7877. if (!string.IsNullOrEmpty(se.KilnCarCode))
  7878. {
  7879. selSql = selSql + " AND instr(TP_MST_KilnCar.KilnCarCode, :KilnCarCode ) > 0";
  7880. parameters.Add(new OracleParameter(":KilnCarCode", OracleDbType.NVarchar2, se.KilnCarCode, ParameterDirection.Input));
  7881. }
  7882. if (se.KilnCarNumBegin.HasValue && se.KilnCarNumEnd.HasValue && se.KilnCarNumBegin.Value > se.KilnCarNumEnd.Value)
  7883. {
  7884. selSql = selSql + " AND (TP_MST_KilnCar.KilnCarNum >= :KilnCarNumBegin or TP_MST_KilnCar.KilnCarNum <= :KilnCarNumEnd)";
  7885. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7886. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7887. }
  7888. else
  7889. {
  7890. if (se.KilnCarNumBegin.HasValue)
  7891. {
  7892. selSql = selSql + " AND TP_MST_KilnCar.KilnCarNum >= :KilnCarNumBegin ";
  7893. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7894. }
  7895. if (se.KilnCarNumEnd.HasValue)
  7896. {
  7897. selSql = selSql + " AND TP_MST_KilnCar.KilnCarNum <= :KilnCarNumEnd ";
  7898. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7899. }
  7900. }
  7901. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  7902. {
  7903. //selSql = selSql + " AND instr(','||:goodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1 ";
  7904. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:goodsTypeIDS)=1 ";
  7905. parameters.Add(new OracleParameter(":goodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  7906. }
  7907. selSql = selSql +
  7908. " group by rollup( " +
  7909. " TP_SYS_ProcedureModelType.Proceduremodeltypename, " +
  7910. " TP_PM_ProductionData.Kilncode, " +
  7911. " TP_PM_ProductionData.Usercode, " +
  7912. " TP_MST_KilnCar.Kilncarcode, " +
  7913. " TP_PM_ProductionData.CreateTime, " +
  7914. " TP_MST_GOODSTYPE.GOODSTYPENAME, " +
  7915. " TP_MST_Goods.Goodscode, " +
  7916. " TP_MST_Goods.GOODSSPECIFICATION, " +
  7917. " TP_PM_ProductionData.Barcode, " +
  7918. " TP_PM_ProductionData.LogoCodeName " +
  7919. " ) " +
  7920. " ) temp " +
  7921. "where 1=1 and " +
  7922. "(Barcode !='--' and LogoCodeName!='--') or " +
  7923. "(Barcode='--' and Usercode='合计' and kilncode!='--') or " +
  7924. "(Barcode='--' and Proceduremodeltypename='总计' ) or " +
  7925. "(Barcode='--' and createtime='小计' and temp.usercode!='--')";
  7926. return selSql;
  7927. }
  7928. #region 工序交接数量汇总表
  7929. /// <summary>
  7930. /// 取得RPT030107画面(工序交接数量汇总表)的汇总信息查询数据
  7931. /// </summary>
  7932. /// <param name="user">登录用户信息</param>
  7933. /// <param name="se">查询条件</param>
  7934. /// <returns>查询结果</returns>
  7935. public static ServiceResultEntity GetRPT030107SData(SUserInfo user, RPT030107_SE se)
  7936. {
  7937. IDBConnection conn = null;
  7938. try
  7939. {
  7940. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7941. List<OracleParameter> parameters = new List<OracleParameter>();
  7942. string sql = ReportModuleLogic.GetRPT030107SSQL(user, se, ref parameters);
  7943. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  7944. ServiceResultEntity sre = new ServiceResultEntity();
  7945. if (data == null || data.Rows.Count == 0)
  7946. {
  7947. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7948. return sre;
  7949. }
  7950. sre.Data = new DataSet();
  7951. sre.Data.Tables.Add(data);
  7952. return sre;
  7953. }
  7954. catch (Exception ex)
  7955. {
  7956. throw ex;
  7957. }
  7958. finally
  7959. {
  7960. if (conn != null &&
  7961. conn.ConnState == ConnectionState.Open)
  7962. {
  7963. conn.Close();
  7964. }
  7965. }
  7966. }
  7967. /// <summary>
  7968. /// 获取RPT030107画面(工序交接数量汇总表)的汇总信息查询sql
  7969. /// </summary>
  7970. /// <returns>sql</returns>
  7971. private static string GetRPT030107SSQL(SUserInfo user, RPT030107_SE se, ref List<OracleParameter> parameters)
  7972. {
  7973. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7974. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  7975. string sqlString =
  7976. "SELECT p.procedureid\n" +
  7977. " ,decode(gid,\n" +
  7978. " 7,\n" +
  7979. " '总计',\n" +
  7980. " 3,\n" +
  7981. " '合计【' || p.procedurename || '】',\n" +
  7982. " 1,\n" +
  7983. " '--',\n" +
  7984. " p.procedurename) procedurename\n" +
  7985. " ,decode(gid,\n" +
  7986. " 7,\n" +
  7987. " '--',\n" +
  7988. " 3,\n" +
  7989. " '--',\n" +
  7990. " 1,\n" +
  7991. " '小计【' || p.goodstypename2 || '】',\n" +
  7992. " p.goodstypename2) goodstypename2\n" +
  7993. " ,p.goodstypecode2 \n" +
  7994. " ,decode(gid, 0, p.userid, '--') userid\n" +
  7995. " ,decode(gid, 0, p.usercode, '--') usercode\n" +
  7996. " ,decode(gid, 0, p.goodsid, '--') goodsid\n" +
  7997. " ,decode(gid, 0, p.goodscode, '--') goodscode\n" +
  7998. " ,decode(gid, 0, p.goodstypename, '--') goodstypename\n" +
  7999. " ,p.overcount\n" +
  8000. " FROM (SELECT grouping_id(pdata.Procedureid,pdata.goodstypename2, pdata.Userid) gid\n" +
  8001. " ,pdata.productionlineid\n" +
  8002. " ,pdata.procedureid\n" +
  8003. " ,to_char(pdata.procedurename) procedurename\n" +
  8004. " ,to_char(pdata.userid) userid\n" +
  8005. " ,pdata.usercode\n" +
  8006. " ,to_char(pdata.goodsid) goodsid\n" +
  8007. " ,pdata.goodscode\n" +
  8008. " ,pdata.goodstypename\n" +
  8009. " ,pdata.goodstypecode2\n" +
  8010. " ,pdata.goodstypename2\n" +
  8011. " ,COUNT(pdata.barcode) overcount\n" +
  8012. " FROM (SELECT distinct pd.barcode,pcp.displayno\n" +
  8013. " ,pd.productionlineid\n" +
  8014. " ,pd.procedureid\n" +
  8015. " ,pcp.procedurename\n" +
  8016. (se.DisPUserCode ? " ,pd.userid, pd.usercode \n" : " ,null userid, null usercode \n") +
  8017. //" ,pd.userid\n" +
  8018. //" ,pd.usercode\n" +
  8019. " ,t_over.goodsid\n" +
  8020. " ,t_over.goodscode\n" +
  8021. " ,t_over.goodstypename\n" +
  8022. " ,t_over.goodstypecode2\n" +
  8023. " ,t_over.goodstypename2\n" +
  8024. " FROM tp_pm_productiondata pd\n" +
  8025. " LEFT JOIN tp_pc_procedure pcp\n" +
  8026. " ON pcp.procedureid = pd.procedureid\n" +
  8027. " INNER JOIN (SELECT DISTINCT pd.barcode\n" +
  8028. " ,pd.productiondataid\n" +
  8029. " ,goods.goodsid\n" +
  8030. " ,goods.goodscode\n" +
  8031. " ,gt.goodstypename\n" +
  8032. " ,gt2.goodstypename goodstypename2\n" +
  8033. " ,gt2.goodstypecode goodstypecode2\n" +
  8034. " FROM tp_pm_productiondata pd\n" +
  8035. " LEFT JOIN tp_mst_goods goods\n" +
  8036. " ON goods.goodsid = pd.goodsid\n" +
  8037. " LEFT JOIN tp_mst_goodstype gt\n" +
  8038. " ON goods.goodstypeid = gt.goodstypeid\n" +
  8039. " LEFT JOIN tp_mst_goodstype gt2\n" +
  8040. " ON gt2.goodstypecode = substr(gt.goodstypecode,1,6)\n" +
  8041. " AND gt2.accountid = gt.accountid\n" +
  8042. " --LEFT JOIN tp_pc_procedure pcp\n" +
  8043. " -- ON pcp.procedureid = pd.procedureid\n" +
  8044. ((se.DTimeStart.HasValue || se.DTimeEnd.HasValue) ? " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid=pd.groutingdailydetailid \n" : "") +
  8045. " WHERE pd.valueflag = '1'\n" +
  8046. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=pd.ProductionLineId))" +
  8047. " AND pd.accountid = :AccountID\n";
  8048. // 生产线
  8049. if (se.ProductionLineID.HasValue)
  8050. {
  8051. sqlString = sqlString + " AND pd.productionlineid = :productionlineid ";
  8052. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  8053. }
  8054. // 成型工号
  8055. if (!string.IsNullOrWhiteSpace(se.GroutingUserCode))
  8056. {
  8057. sqlString = sqlString + " AND instr(pd.GroutingUserCode, :GroutingUserCode) > 0";
  8058. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  8059. }
  8060. // 产品型号
  8061. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  8062. {
  8063. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  8064. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8065. }
  8066. // 产品编码
  8067. if (!string.IsNullOrEmpty(se.GoodsCode))
  8068. {
  8069. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  8070. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8071. }
  8072. // 交接工序
  8073. if (!string.IsNullOrEmpty(se.OverProcedureIDS))
  8074. {
  8075. sqlString = sqlString + " AND instr(:overprocedureids, ','||pd.procedureid||',')>0 ";
  8076. parameters.Add(new OracleParameter(":overprocedureids", OracleDbType.Varchar2, "," + se.OverProcedureIDS + ",", ParameterDirection.Input));
  8077. }
  8078. // 交接工号
  8079. if (!string.IsNullOrEmpty(se.OverUserIDS))
  8080. {
  8081. sqlString = sqlString + " AND instr(:overuserids, ','||pd.userid||',')>0 ";
  8082. parameters.Add(new OracleParameter(":overuserids", OracleDbType.Varchar2, "," + se.OverUserIDS + ",", ParameterDirection.Input));
  8083. }
  8084. // 交接时间
  8085. if (se.OverTimeStart.HasValue)
  8086. {
  8087. sqlString = sqlString + " AND pd.CreateTime >=:OverTimeStart ";
  8088. parameters.Add(new OracleParameter(":OverTimeStart", OracleDbType.Date, se.OverTimeStart.Value, ParameterDirection.Input));
  8089. }
  8090. if (se.OverTimeEnd.HasValue)
  8091. {
  8092. sqlString = sqlString + " AND pd.CreateTime <= :OverTimeEnd ";
  8093. parameters.Add(new OracleParameter(":OverTimeEnd", OracleDbType.Date, se.OverTimeEnd.Value, ParameterDirection.Input));
  8094. }
  8095. // 注浆时间
  8096. if (se.GTimeStart.HasValue)
  8097. {
  8098. sqlString = sqlString + " AND pd.GROUTINGDATE >=:GTimeStart ";
  8099. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  8100. }
  8101. if (se.GTimeEnd.HasValue)
  8102. {
  8103. sqlString = sqlString + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  8104. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  8105. }
  8106. // 交坯时间
  8107. if (se.DTimeStart.HasValue)
  8108. {
  8109. sqlString = sqlString + " AND gdd.DELIVERTIME >=:DTimeStart ";
  8110. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart.Value, ParameterDirection.Input));
  8111. }
  8112. if (se.DTimeEnd.HasValue)
  8113. {
  8114. sqlString = sqlString + " AND gdd.DELIVERTIME <= :DTimeEnd ";
  8115. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd.Value, ParameterDirection.Input));
  8116. }
  8117. sqlString = sqlString +
  8118. " ) t_over\n" +
  8119. " ON pd.barcode = t_over.barcode\n" +
  8120. // 交接工序在生产工序后
  8121. " AND pd.productiondataid <= t_over.productiondataid\n" +
  8122. " WHERE pd.valueflag = '1'\n" +
  8123. " AND pd.accountid = :AccountID\n" +
  8124. (se.Specialrepairflag ? " AND ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  8125. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=pd.procedureid))";
  8126. // 生产工序
  8127. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  8128. {
  8129. sqlString = sqlString + " AND instr(:procedureids, ','||pd.procedureid||',')>0 ";
  8130. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  8131. }
  8132. // 生产工号
  8133. if (!string.IsNullOrEmpty(se.UserIDS))
  8134. {
  8135. sqlString = sqlString + " AND instr(:userids, ','||pd.userid||',')>0 ";
  8136. parameters.Add(new OracleParameter(":userids", OracleDbType.Varchar2, "," + se.UserIDS + ",", ParameterDirection.Input));
  8137. }
  8138. // 生产时间
  8139. if (se.PTimeStart.HasValue)
  8140. {
  8141. sqlString = sqlString + " AND pd.CreateTime >=:PTimeStart ";
  8142. parameters.Add(new OracleParameter(":PTimeStart", OracleDbType.Date, se.PTimeStart.Value, ParameterDirection.Input));
  8143. }
  8144. if (se.PTimeEnd.HasValue)
  8145. {
  8146. sqlString = sqlString + " AND pd.CreateTime <= :PTimeEnd ";
  8147. parameters.Add(new OracleParameter(":PTimeEnd", OracleDbType.Date, se.PTimeEnd.Value, ParameterDirection.Input));
  8148. }
  8149. sqlString = sqlString +
  8150. "\n ) pdata\n" +
  8151. " GROUP BY GROUPING SETS((pdata.productionlineid, pdata.procedureid, pdata.procedurename, pdata.displayno, pdata.userid, pdata.usercode, pdata.goodsid, pdata.goodscode, pdata.goodstypename,pdata.goodstypecode2, pdata.goodstypename2),(pdata.productionlineid, pdata.procedureid, pdata.procedurename, pdata.displayno,pdata.goodstypecode2, pdata.goodstypename2),(pdata.productionlineid, pdata.procedureid, pdata.procedurename, pdata.displayno),())\n" +
  8152. " ORDER BY pdata.displayno\n" +
  8153. " ,pdata.goodstypename2\n" +
  8154. " ,pdata.usercode\n" +
  8155. " ,pdata.goodstypename\n" +
  8156. " ,pdata.goodscode) p";
  8157. return sqlString;
  8158. }
  8159. /// <summary>
  8160. /// 取得RPT030107画面(工序交接数量汇总表)的明细信息查询数据
  8161. /// </summary>
  8162. /// <param name="user">登录用户信息</param>
  8163. /// <param name="se">查询条件</param>
  8164. /// <returns>查询结果</returns>
  8165. public static ServiceResultEntity GetRPT030107IData(SUserInfo user, RPT030107_SE se)
  8166. {
  8167. IDBConnection conn = null;
  8168. try
  8169. {
  8170. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8171. List<OracleParameter> parameters = new List<OracleParameter>();
  8172. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030107ISQL(user, se, ref parameters));
  8173. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  8174. ServiceResultEntity sre = new ServiceResultEntity();
  8175. if (data == null || data.Rows.Count == 0)
  8176. {
  8177. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8178. return sre;
  8179. }
  8180. sre.Data = new DataSet();
  8181. sre.Data.Tables.Add(data);
  8182. return sre;
  8183. }
  8184. catch (Exception ex)
  8185. {
  8186. throw ex;
  8187. }
  8188. finally
  8189. {
  8190. if (conn != null &&
  8191. conn.ConnState == ConnectionState.Open)
  8192. {
  8193. conn.Close();
  8194. }
  8195. }
  8196. }
  8197. /// <summary>
  8198. /// 获取RPT030107画面(工序交接数量汇总表)的明细信息查询sql
  8199. /// </summary>
  8200. /// <returns>sql</returns>
  8201. private static string GetRPT030107ISQL(SUserInfo user, RPT030107_SE se, ref List<OracleParameter> parameters)
  8202. {
  8203. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  8204. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  8205. string sqlString =
  8206. "SELECT distinct pcp.procedurename,pcp.displayno\n" +
  8207. (se.DisPUserCode ? " ,pd.userid, pd.usercode \n" : " ,null userid, null usercode \n") +
  8208. //" ,pd.usercode\n" +
  8209. " ,t_over.barcode\n" +
  8210. " ,t_over.goodscode\n" +
  8211. " ,t_over.goodstypename\n" +
  8212. " ,t_over.goodstypename2\n" +
  8213. //" ,pd.createtime ptime\n" +
  8214. //" ,t_over.overprocedurename\n" +
  8215. //" ,t_over.overusercode\n" +
  8216. //" ,t_over.overtime\n" +
  8217. " ,t_over.groutingusercode\n" +
  8218. " ,pd.groutinglinecode\n" +
  8219. " ,pd.groutingmouldcode\n" +
  8220. " ,t_over.groutingdate Gdate\n" +
  8221. " ,t_over.DELIVERTIME Ddate\n" +
  8222. " ,decode(logo.logoid, null, '', logo.Logoname||'['||logo.Logocode||']') as LogoCodeName " +
  8223. " ,t_over.SecurityCode\n" +
  8224. " FROM tp_pm_productiondata pd\n" +
  8225. " LEFT JOIN tp_pc_procedure pcp\n" +
  8226. " ON pcp.procedureid = pd.procedureid\n" +
  8227. " LEFT JOIN TP_MST_logo logo\n" +
  8228. " ON logo.logoid = pd.logoid\n" +
  8229. " INNER JOIN (SELECT DISTINCT pd.barcode\n" +
  8230. " ,pd.productiondataid\n" +
  8231. " ,goods.goodsid\n" +
  8232. " ,goods.goodscode\n" +
  8233. " ,gt.goodstypename\n" +
  8234. " ,gt2.goodstypename goodstypename2\n" +
  8235. //" ,pcp.procedurename overprocedurename\n" +
  8236. //" ,pd.usercode overusercode\n" +
  8237. //" ,pd.createtime overtime\n" +
  8238. " ,pd.groutingusercode\n" +
  8239. " ,pd.groutingdate\n" +
  8240. " ,gdd.DELIVERTIME\n" +
  8241. " ,gdd.SecurityCode\n" +
  8242. " FROM tp_pm_productiondata pd\n" +
  8243. " LEFT JOIN tp_mst_goods goods\n" +
  8244. " ON goods.goodsid = pd.goodsid\n" +
  8245. " LEFT JOIN tp_mst_goodstype gt\n" +
  8246. " ON goods.goodstypeid = gt.goodstypeid\n" +
  8247. " LEFT JOIN tp_mst_goodstype gt2\n" +
  8248. " ON gt2.goodstypecode = substr(gt.goodstypecode,1,6)\n" +
  8249. " AND gt2.accountid = gt.accountid\n" +
  8250. " LEFT JOIN tp_pc_procedure pcp\n" +
  8251. " ON pcp.procedureid = pd.procedureid\n" +
  8252. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  8253. " ON gdd.groutingdailydetailid = pd.groutingdailydetailid\n" +
  8254. " WHERE pd.valueflag = '1'\n" +
  8255. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=pd.ProductionLineId))" +
  8256. " AND pd.accountid = :AccountID\n";
  8257. // 生产线
  8258. if (se.ProductionLineID.HasValue)
  8259. {
  8260. sqlString = sqlString + " AND pd.productionlineid = :productionlineid ";
  8261. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  8262. }
  8263. // 成型工号
  8264. if (!string.IsNullOrWhiteSpace(se.GroutingUserCode))
  8265. {
  8266. sqlString = sqlString + " AND instr(pd.GroutingUserCode, :GroutingUserCode) > 0";
  8267. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  8268. }
  8269. // 产品型号
  8270. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  8271. {
  8272. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  8273. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8274. }
  8275. if (!string.IsNullOrEmpty(se.GoodsID))
  8276. {
  8277. sqlString = sqlString + " AND pd.goodsid = :GoodsID ";
  8278. parameters.Add(new OracleParameter(":GoodsID", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  8279. }
  8280. // 产品编码
  8281. if (!string.IsNullOrEmpty(se.GoodsCode))
  8282. {
  8283. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  8284. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8285. }
  8286. // 交接工序
  8287. if (!string.IsNullOrEmpty(se.OverProcedureIDS))
  8288. {
  8289. sqlString = sqlString + " AND instr(:overprocedureids, ','||pd.procedureid||',')>0 ";
  8290. parameters.Add(new OracleParameter(":overprocedureids", OracleDbType.Varchar2, "," + se.OverProcedureIDS + ",", ParameterDirection.Input));
  8291. }
  8292. // 交接工号
  8293. if (!string.IsNullOrEmpty(se.OverUserIDS))
  8294. {
  8295. sqlString = sqlString + " AND instr(:overuserids, ','||pd.userid||',')>0 ";
  8296. parameters.Add(new OracleParameter(":overuserids", OracleDbType.Varchar2, "," + se.OverUserIDS + ",", ParameterDirection.Input));
  8297. }
  8298. // 交接时间
  8299. if (se.OverTimeStart.HasValue)
  8300. {
  8301. sqlString = sqlString + " AND pd.CreateTime >=:OverTimeStart ";
  8302. parameters.Add(new OracleParameter(":OverTimeStart", OracleDbType.Date, se.OverTimeStart.Value, ParameterDirection.Input));
  8303. }
  8304. if (se.OverTimeEnd.HasValue)
  8305. {
  8306. sqlString = sqlString + " AND pd.CreateTime <= :OverTimeEnd ";
  8307. parameters.Add(new OracleParameter(":OverTimeEnd", OracleDbType.Date, se.OverTimeEnd.Value, ParameterDirection.Input));
  8308. }
  8309. // 注浆时间
  8310. if (se.GTimeStart.HasValue)
  8311. {
  8312. sqlString = sqlString + " AND pd.GROUTINGDATE >=:GTimeStart ";
  8313. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  8314. }
  8315. if (se.GTimeEnd.HasValue)
  8316. {
  8317. sqlString = sqlString + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  8318. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  8319. }
  8320. // 交坯时间
  8321. if (se.DTimeStart.HasValue)
  8322. {
  8323. sqlString = sqlString + " AND gdd.DELIVERTIME >=:DTimeStart ";
  8324. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart.Value, ParameterDirection.Input));
  8325. }
  8326. if (se.DTimeEnd.HasValue)
  8327. {
  8328. sqlString = sqlString + " AND gdd.DELIVERTIME <= :DTimeEnd ";
  8329. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd.Value, ParameterDirection.Input));
  8330. }
  8331. sqlString = sqlString +
  8332. " ) t_over\n" +
  8333. " ON pd.barcode = t_over.barcode\n" +
  8334. // 交接工序在生产工序后
  8335. " AND pd.productiondataid <= t_over.productiondataid\n" +
  8336. " WHERE pd.valueflag = '1'\n" +
  8337. " AND pd.accountid = :AccountID\n" +
  8338. (se.Specialrepairflag ? " AND ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  8339. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=pd.procedureid))";
  8340. // 生产工序
  8341. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  8342. {
  8343. sqlString = sqlString + " AND instr(:procedureids, ','||pd.procedureid||',')>0 ";
  8344. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  8345. }
  8346. // 生产工号
  8347. if (!string.IsNullOrEmpty(se.UserIDS))
  8348. {
  8349. sqlString = sqlString + " AND instr(:userids, ','||pd.userid||',')>0 ";
  8350. parameters.Add(new OracleParameter(":userids", OracleDbType.Varchar2, "," + se.UserIDS + ",", ParameterDirection.Input));
  8351. }
  8352. // 生产时间
  8353. if (se.PTimeStart.HasValue)
  8354. {
  8355. sqlString = sqlString + " AND pd.CreateTime >=:PTimeStart ";
  8356. parameters.Add(new OracleParameter(":PTimeStart", OracleDbType.Date, se.PTimeStart.Value, ParameterDirection.Input));
  8357. }
  8358. if (se.PTimeEnd.HasValue)
  8359. {
  8360. sqlString = sqlString + " AND pd.CreateTime <= :PTimeEnd ";
  8361. parameters.Add(new OracleParameter(":PTimeEnd", OracleDbType.Date, se.PTimeEnd.Value, ParameterDirection.Input));
  8362. }
  8363. sqlString = sqlString +
  8364. "\n ORDER BY pcp.displayno\n" +
  8365. " ,t_over.goodstypename2\n" +
  8366. (se.DisPUserCode ? " ,pd.usercode\n" : "") +
  8367. " ,t_over.goodstypename\n" +
  8368. " ,t_over.goodscode\n";
  8369. return sqlString;
  8370. }
  8371. #endregion
  8372. /// <summary>
  8373. /// 取得RPT030108画面(成型信息汇总表)的查询数据
  8374. /// </summary>
  8375. /// <param name="user">登录用户信息</param>
  8376. /// <param name="se">查询条件</param>
  8377. /// <returns>查询结果</returns>
  8378. public static ServiceResultEntity GetRPT030108SData(SUserInfo user, RPT030108_SE se)
  8379. {
  8380. IDBConnection conn = null;
  8381. try
  8382. {
  8383. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8384. List<OracleParameter> parameters = new List<OracleParameter>();
  8385. string sqlString = "SELECT decode(g.gid,\n" +
  8386. " 7,\n" +
  8387. " '总计',\n" +
  8388. " 3,\n" +
  8389. " '合计【' || g.goodstypename2 || '】',\n" +
  8390. " 0,\n" +
  8391. " g.goodstypename2,\n" +
  8392. " '--') goodstypename2\n" +
  8393. " ,decode(g.gid, 0, g.goodstypename, '--') goodstypename\n" +
  8394. " ,decode(g.gid,\n" +
  8395. " 1,\n" +
  8396. " '小计【' || g.goodscode || '】',\n" +
  8397. " 0,\n" +
  8398. " g.goodscode,\n" +
  8399. " '--') goodscode\n" +
  8400. " ,decode(g.gid, 0, g.usercode, '--') usercode\n" +
  8401. " ,decode(g.gid, 0, g.MONITORName, '--') MONITORName\n" +
  8402. " ,g.groutingcount\n" +
  8403. " ,g.barcodecount\n" +
  8404. " ,g.scrapcount\n" +
  8405. " ,g.barscrapcount\n" +
  8406. " ,g.delivercount\n" +
  8407. " ,g.barcodecount - g.barscrapcount - g.delivercount - g.bycount incount\n" +
  8408. " FROM (SELECT grouping_id(gdd.goodstypename2, gdd.goodscode, gdd.usercode) gid\n" +
  8409. " ,gdd.goodstypename2\n" +
  8410. " ,gdd.goodstypename\n" +
  8411. " ,gdd.goodscode\n" +
  8412. " ,gdd.usercode\n" +
  8413. " ,gdd.MONITORName\n" +
  8414. " ,SUM(groutingcount) groutingcount\n" +
  8415. " ,SUM(barcodecount) barcodecount\n" +
  8416. " ,SUM(scrapcount) scrapcount\n" +
  8417. " ,SUM(barscrapcount) barscrapcount\n" +
  8418. " ,SUM(delivercount) delivercount\n" +
  8419. " ,SUM(bycount) bycount\n" +
  8420. " FROM (SELECT gt2.goodstypename goodstypename2\n" +
  8421. " ,gdd.usercode\n" +
  8422. " ,mu.usercode as MONITORName\n" +
  8423. " ,goods.goodscode\n" +
  8424. " ,gt.goodstypename\n" +
  8425. " , CASE\n" +
  8426. " WHEN gdd.groutingdate >= :gdatabegin AND\n" +
  8427. " gdd.groutingdate <= :gdataend THEN\n" +
  8428. " 1\n" +
  8429. " ELSE\n" +
  8430. " 0\n" +
  8431. " END groutingcount\n" +
  8432. " , CASE\n" +
  8433. " WHEN gdd.groutingdate >= :gdatabegin AND\n" +
  8434. " gdd.groutingdate <= :gdataend AND\n" +
  8435. " gdd.barcode IS NOT NULL THEN\n" +
  8436. " 1\n" +
  8437. " ELSE\n" +
  8438. " 0\n" +
  8439. " END barcodecount\n" +
  8440. " , CASE\n" +
  8441. " WHEN gdd.scraptime >= :sdatabegin AND\n" +
  8442. " gdd.scraptime <= :sdataend AND\n" +
  8443. " gdd.scrapflag = '1' THEN\n" +
  8444. " 1\n" +
  8445. " ELSE\n" +
  8446. " 0\n" +
  8447. " END scrapcount\n" +
  8448. " , CASE\n" +
  8449. " WHEN gdd.scraptime >= :sdatabegin AND\n" +
  8450. " gdd.scraptime <= :sdataend AND\n" +
  8451. " gdd.barcode IS NOT NULL AND gdd.scrapflag = '1' THEN\n" +
  8452. " 1\n" +
  8453. " ELSE\n" +
  8454. " 0\n" +
  8455. " END barscrapcount\n" +
  8456. " , CASE\n" +
  8457. " WHEN gdd.delivertime >= :ddatabegin AND\n" +
  8458. " gdd.delivertime <= :ddataend AND\n" +
  8459. " gdd.deliverflag = '1' THEN\n" +
  8460. " 1\n" +
  8461. " ELSE\n" +
  8462. " 0\n" +
  8463. " END delivercount\n" +
  8464. " , CASE\n" +
  8465. " WHEN TPS.BARCODE IS NOT NULL THEN\n" +
  8466. " 1\n" +
  8467. " ELSE\n" +
  8468. " 0\n" +
  8469. " END bycount\n" +
  8470. " FROM tp_pm_groutingdailydetail gdd\n" +
  8471. " LEFT JOIN tp_mst_goods goods\n" +
  8472. " ON goods.goodsid = gdd.goodsid\n" +
  8473. // 成型线
  8474. " LEFT JOIN tp_pc_groutingline gl" +
  8475. " ON gl.groutinglineid = GDD.GroutingLineID" +
  8476. // 成型班长
  8477. " LEFT JOIN tp_mst_user mu" +
  8478. " ON mu.userid = gl.MONITORID " +
  8479. " LEFT JOIN tp_mst_goodstype gt\n" +
  8480. " ON gt.goodstypeid = goods.goodstypeid\n" +
  8481. " LEFT JOIN tp_mst_goodstype gt2\n" +
  8482. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  8483. " AND gt2.accountid = gt.accountid\n" +
  8484. " LEFT JOIN(\n" +
  8485. " SELECT DISTINCT\n" +
  8486. " TPS.BARCODE\n" +
  8487. " FROM\n" +
  8488. " TP_PM_SEMICHECK TPS\n" +
  8489. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL TPGD ON TPS.BARCODE = TPGD.BARCODE\n" +
  8490. " WHERE\n" +
  8491. " TPGD.CREATETIME >= :gdatabegin\n" +
  8492. " AND TPGD.CREATETIME <= :gdataend\n" +
  8493. " AND(TPS.SEMICHECKTYPE = 2 OR TPS.RESEMICHECKTYPE = 2)\n" +
  8494. " AND TPGD.VALUEFLAG = 1\n" +
  8495. " AND TPGD.SCRAPFLAG = 0\n" +
  8496. " AND DELIVERFLAG = 0\n" +
  8497. " AND TPS.CREATETIME >= :gdatabegin\n" +
  8498. " AND TPS.CREATETIME <= :gdataend\n" +
  8499. " ) TPS ON TPS.BARCODE = gdd.BARCODE\n" +
  8500. " WHERE gdd.valueflag = '1'\n" +
  8501. " AND gdd.groutingflag = '1'\n" +
  8502. " AND gdd.accountid = :accountid\n" +
  8503. " AND ((gdd.groutingdate >= :gdatabegin AND\n" +
  8504. " gdd.groutingdate <= :gdataend) OR\n" +
  8505. " (gdd.scraptime >= :sdatabegin AND\n" +
  8506. " gdd.scraptime <= :sdataend) OR\n" +
  8507. " (gdd.delivertime >= :ddatabegin AND\n" +
  8508. " gdd.delivertime <= :ddataend))\n" +
  8509. " AND (:usercode IS NULL OR\n" +
  8510. " instr(gdd.usercode, :usercode) > 0)\n" +
  8511. " AND (:GoodsCode IS NULL OR\n" +
  8512. " instr(goods.GoodsCode, :GoodsCode) > 0)\n" +
  8513. " AND (:goodstypecode IS NULL OR\n" +
  8514. " instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  8515. " ORDER BY gt2.goodstypename\n" +
  8516. " ,gt.goodstypename\n" +
  8517. " ,goods.goodscode\n" +
  8518. " ,gdd.usercode) gdd\n" +
  8519. " GROUP BY GROUPING SETS((gdd.goodstypename2, gdd.goodstypename, gdd.goodscode, gdd.usercode,gdd.MONITORName),(gdd.goodstypename2, gdd.goodstypename, gdd.goodscode),(gdd.goodstypename2),())\n" +
  8520. " ORDER BY gdd.goodstypename2\n" +
  8521. " ,gdd.goodstypename\n" +
  8522. " ,gdd.goodscode\n" +
  8523. " ,gdd.usercode) g";
  8524. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  8525. parameters.Add(new OracleParameter(":gdatabegin", OracleDbType.Date, se.GTimeStart, ParameterDirection.Input));
  8526. parameters.Add(new OracleParameter(":gdataend", OracleDbType.Date, se.GTimeEnd, ParameterDirection.Input));
  8527. parameters.Add(new OracleParameter(":sdatabegin", OracleDbType.Date, se.STimeStart, ParameterDirection.Input));
  8528. parameters.Add(new OracleParameter(":sdataend", OracleDbType.Date, se.STimeEnd, ParameterDirection.Input));
  8529. parameters.Add(new OracleParameter(":ddatabegin", OracleDbType.Date, se.DTimeStart, ParameterDirection.Input));
  8530. parameters.Add(new OracleParameter(":ddataend", OracleDbType.Date, se.DTimeEnd, ParameterDirection.Input));
  8531. parameters.Add(new OracleParameter(":usercode", OracleDbType.Varchar2, se.UserCode, ParameterDirection.Input));
  8532. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8533. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8534. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  8535. ServiceResultEntity sre = new ServiceResultEntity();
  8536. if (data == null || data.Rows.Count == 0)
  8537. {
  8538. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8539. return sre;
  8540. }
  8541. sre.Data = new DataSet();
  8542. sre.Data.Tables.Add(data);
  8543. return sre;
  8544. }
  8545. catch (Exception ex)
  8546. {
  8547. throw ex;
  8548. }
  8549. finally
  8550. {
  8551. if (conn != null &&
  8552. conn.ConnState == ConnectionState.Open)
  8553. {
  8554. conn.Close();
  8555. }
  8556. }
  8557. }
  8558. #region 撤销产品汇总表
  8559. /// <summary>
  8560. /// 取得RPT030109画面(撤销产品汇总表)的汇总信息查询数据
  8561. /// </summary>
  8562. /// <param name="user">登录用户信息</param>
  8563. /// <param name="se">查询条件</param>
  8564. /// <returns>查询结果</returns>
  8565. public static ServiceResultEntity GetRPT030109SData(SUserInfo user, RPT030109_SE se)
  8566. {
  8567. IDBConnection conn = null;
  8568. try
  8569. {
  8570. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8571. List<OracleParameter> parameters = new List<OracleParameter>();
  8572. string sql = ReportModuleLogic.GetRPT030109SSQL(user, se, ref parameters);
  8573. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  8574. ServiceResultEntity sre = new ServiceResultEntity();
  8575. if (data == null || data.Rows.Count == 0)
  8576. {
  8577. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8578. return sre;
  8579. }
  8580. sre.Data = new DataSet();
  8581. sre.Data.Tables.Add(data);
  8582. return sre;
  8583. }
  8584. catch (Exception ex)
  8585. {
  8586. throw ex;
  8587. }
  8588. finally
  8589. {
  8590. if (conn != null &&
  8591. conn.ConnState == ConnectionState.Open)
  8592. {
  8593. conn.Close();
  8594. }
  8595. }
  8596. }
  8597. /// <summary>
  8598. /// 获取RPT030109画面(撤销产品汇总表)的汇总信息查询sql
  8599. /// </summary>
  8600. /// <returns>sql</returns>
  8601. private static string GetRPT030109SSQL(SUserInfo user, RPT030109_SE se, ref List<OracleParameter> parameters)
  8602. {
  8603. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  8604. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  8605. string sqlString =
  8606. "SELECT decode(p.gid,\n" +
  8607. " 7,\n" +
  8608. " '总计',\n" +
  8609. " 3,\n" +
  8610. " '合计【' || p.procedurename || '】',\n" +
  8611. " 0,\n" +
  8612. " p.procedurename,\n" +
  8613. " '--') procedurename\n" +
  8614. " ,decode(p.gid,\n" +
  8615. " 1,\n" +
  8616. " '小计【' || p.goodstypename2 || '】',\n" +
  8617. " 0,\n" +
  8618. " p.goodstypename2,\n" +
  8619. " '--') goodstypename2\n" +
  8620. " ,decode(p.gid, 0, p.goodstypename, '--') goodstypename\n" +
  8621. " ,decode(p.gid, 0, p.goodscode, '--') goodscode\n" +
  8622. " ,decode(p.gid, 0, p.usercode, '--') usercode\n" +
  8623. " ,p.codecount\n" +
  8624. " ,p.productionlineid\n" +
  8625. " ,p.procedureid\n" +
  8626. " ,p.goodstypecode2\n" +
  8627. " ,p.goodsid\n" +
  8628. " ,p.userid\n" +
  8629. " FROM (SELECT grouping_id(pd.procedureid, gt2.goodstypecode, pd.userid) gid\n" +
  8630. " ,pd.productionlineid\n" +
  8631. " ,pd.procedureid\n" +
  8632. " ,p.procedurename\n" +
  8633. " ,p.displayno\n" +
  8634. " ,gt2.goodstypecode goodstypecode2\n" +
  8635. " ,gt2.goodstypename goodstypename2\n" +
  8636. " ,gt.goodstypecode\n" +
  8637. " ,gt.goodstypename\n" +
  8638. " ,goods.goodsid\n" +
  8639. " ,goods.goodscode\n" +
  8640. " ,pd.userid\n" +
  8641. " ,pd.usercode\n" +
  8642. " ,COUNT(*) codecount\n" +
  8643. " FROM tp_pm_productiondata pd\n" +
  8644. " LEFT JOIN tp_pc_procedure p\n" +
  8645. " ON p.procedureid = pd.procedureid\n" +
  8646. " LEFT JOIN tp_mst_goods goods\n" +
  8647. " ON goods.goodsid = pd.goodsid\n" +
  8648. " LEFT JOIN tp_mst_goodstype gt\n" +
  8649. " ON gt.goodstypeid = goods.goodstypeid\n" +
  8650. " LEFT JOIN tp_mst_goodstype gt2\n" +
  8651. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  8652. " AND gt2.accountid = gt.accountid\n" +
  8653. " WHERE pd.valueflag = '0'\n" +
  8654. " AND pd.accountid = :accountid\n" +
  8655. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=pd.ProductionLineId))" +
  8656. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=pd.procedureid))" +
  8657. " AND (:productionlineid IS NULL OR\n" +
  8658. " pd.productionlineid = :productionlineid)\n" +
  8659. " AND (:procedureids IS NULL OR\n" +
  8660. " instr(:procedureids, ',' || pd.procedureid || ',') > 0)\n" +
  8661. " AND (:goodstypecode IS NULL OR\n" +
  8662. " instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  8663. " AND (:goodscode IS NULL OR\n" +
  8664. " instr(goods.goodscode, :goodscode) > 0)\n" +
  8665. " AND (:PUserIDS IS NULL OR\n" +
  8666. " instr(:PUserIDS, ',' || pd.userid || ',') > 0)\n" +
  8667. " AND (:backusercode IS NULL OR\n" +
  8668. " instr(pd.BACKOUTUSERCODE, :backusercode) > 0)\n" +
  8669. " AND (:ptimebegin IS NULL OR pd.createtime >= :ptimebegin)\n" +
  8670. " AND (:ptimeend IS NULL OR pd.createtime <= :ptimeend)\n" +
  8671. " AND (:backtimebegin IS NULL OR pd.backouttime >= :backtimebegin)\n" +
  8672. " AND (:backtimeend IS NULL OR pd.backouttime <= :backtimeend)\n" +
  8673. " GROUP BY GROUPING SETS((pd.productionlineid, pd.procedureid, p.procedurename, p.displayno, gt2.goodstypecode, gt2.goodstypename, gt.goodstypecode, gt.goodstypename, goods.goodsid, goods.goodscode, pd.userid, pd.usercode),(pd.productionlineid, pd.procedureid, p.procedurename, p.displayno, gt2.goodstypecode, gt2.goodstypename),(pd.productionlineid, pd.procedureid, p.procedurename, p.displayno),())\n" +
  8674. " ORDER BY p.displayno\n" +
  8675. " ,gt2.goodstypecode\n" +
  8676. " ,gt.goodstypecode\n" +
  8677. " ,goods.goodscode\n" +
  8678. " ,pd.usercode) p";
  8679. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  8680. if (string.IsNullOrEmpty(se.ProcedureIDS))
  8681. {
  8682. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, null, ParameterDirection.Input));
  8683. }
  8684. else
  8685. {
  8686. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  8687. }
  8688. if (string.IsNullOrEmpty(se.UserIDS))
  8689. {
  8690. parameters.Add(new OracleParameter(":PUserIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  8691. }
  8692. else
  8693. {
  8694. parameters.Add(new OracleParameter(":PUserIDS", OracleDbType.Varchar2, "," + se.UserIDS + ",", ParameterDirection.Input));
  8695. }
  8696. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8697. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8698. parameters.Add(new OracleParameter(":backusercode", OracleDbType.Varchar2, se.BackUserCode, ParameterDirection.Input));
  8699. parameters.Add(new OracleParameter(":ptimebegin", OracleDbType.Date, se.PTimeStart, ParameterDirection.Input));
  8700. parameters.Add(new OracleParameter(":ptimeend", OracleDbType.Date, se.PTimeEnd, ParameterDirection.Input));
  8701. parameters.Add(new OracleParameter(":backtimebegin", OracleDbType.Date, se.BackTimeStart, ParameterDirection.Input));
  8702. parameters.Add(new OracleParameter(":backtimeend", OracleDbType.Date, se.BackTimeEnd, ParameterDirection.Input));
  8703. return sqlString;
  8704. }
  8705. /// <summary>
  8706. /// 取得RPT030109画面(撤销产品汇总表)的明细信息查询数据
  8707. /// </summary>
  8708. /// <param name="user">登录用户信息</param>
  8709. /// <param name="se">查询条件</param>
  8710. /// <returns>查询结果</returns>
  8711. public static ServiceResultEntity GetRPT030109IData(SUserInfo user, RPT030109_SE se)
  8712. {
  8713. IDBConnection conn = null;
  8714. try
  8715. {
  8716. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8717. List<OracleParameter> parameters = new List<OracleParameter>();
  8718. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030109ISQL(user, se, ref parameters));
  8719. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  8720. ServiceResultEntity sre = new ServiceResultEntity();
  8721. if (data == null || data.Rows.Count == 0)
  8722. {
  8723. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8724. return sre;
  8725. }
  8726. sre.Data = new DataSet();
  8727. sre.Data.Tables.Add(data);
  8728. return sre;
  8729. }
  8730. catch (Exception ex)
  8731. {
  8732. throw ex;
  8733. }
  8734. finally
  8735. {
  8736. if (conn != null &&
  8737. conn.ConnState == ConnectionState.Open)
  8738. {
  8739. conn.Close();
  8740. }
  8741. }
  8742. }
  8743. /// <summary>
  8744. /// 获取RPT030109画面(撤销产品汇总表)的明细信息查询sql
  8745. /// </summary>
  8746. /// <returns>sql</returns>
  8747. private static string GetRPT030109ISQL(SUserInfo user, RPT030109_SE se, ref List<OracleParameter> parameters)
  8748. {
  8749. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  8750. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  8751. string sqlString =
  8752. "SELECT p.procedurename\n" +
  8753. " ,gt2.goodstypename goodstypename2\n" +
  8754. " ,gt.goodstypename\n" +
  8755. " ,goods.goodscode\n" +
  8756. " ,pd.barcode\n" +
  8757. " ,pd.usercode\n" +
  8758. " ,pd.createtime ptime\n" +
  8759. " ,pd.backoutusercode busercode\n" +
  8760. " ,pd.backouttime btime\n" +
  8761. " ,pd.groutingusercode\n" +
  8762. " ,pd.groutinglinecode\n" +
  8763. " ,pd.groutingmouldcode\n" +
  8764. " ,pd.groutingdate GDate\n" +
  8765. " FROM tp_pm_productiondata pd\n" +
  8766. " LEFT JOIN tp_pc_procedure p\n" +
  8767. " ON p.procedureid = pd.procedureid\n" +
  8768. " LEFT JOIN tp_mst_goods goods\n" +
  8769. " ON goods.goodsid = pd.goodsid\n" +
  8770. " LEFT JOIN tp_mst_goodstype gt\n" +
  8771. " ON gt.goodstypeid = goods.goodstypeid\n" +
  8772. " LEFT JOIN tp_mst_goodstype gt2\n" +
  8773. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  8774. " AND gt2.accountid = gt.accountid\n" +
  8775. " WHERE pd.valueflag = '0'\n" +
  8776. " AND pd.accountid = :accountid\n" +
  8777. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID = -1 or up.PurviewID=pd.ProductionLineId))" +
  8778. " AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=pd.procedureid))" +
  8779. " AND (:productionlineid IS NULL OR\n" +
  8780. " pd.productionlineid = :productionlineid)\n" +
  8781. " AND (:procedureids IS NULL OR\n" +
  8782. " instr(:procedureids, ',' || pd.procedureid || ',') > 0)\n" +
  8783. " AND (:goodstypecode IS NULL OR\n" +
  8784. " instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  8785. " AND (:goodscode IS NULL OR instr(goods.goodscode, :goodscode) > 0)\n" +
  8786. " AND (:PUserIDS IS NULL OR\n" +
  8787. " instr(:PUserIDS, ',' || pd.userid || ',') > 0)\n" +
  8788. " AND (:backusercode IS NULL OR instr(pd.BACKOUTUSERCODE, :backusercode) > 0)\n" +
  8789. " AND (:ptimebegin IS NULL OR pd.createtime >= :ptimebegin)\n" +
  8790. " AND (:ptimeend IS NULL OR pd.createtime <= :ptimeend)\n" +
  8791. " AND (:backtimebegin IS NULL OR pd.backouttime >= :backtimebegin)\n" +
  8792. " AND (:backtimeend IS NULL OR pd.backouttime <= :backtimeend)\n" +
  8793. " AND (:puserid IS NULL OR pd.userid = :puserid)\n" +
  8794. " AND (:goodsid IS NULL OR pd.goodsid = :goodsid)\n" +
  8795. " AND (:procedureid IS NULL OR pd.procedureid = :procedureid)\n" +
  8796. " ORDER BY p.displayno\n" +
  8797. " ,gt2.goodstypename\n" +
  8798. " ,gt.goodstypename\n" +
  8799. " ,goods.goodscode\n" +
  8800. " ,pd.usercode\n" +
  8801. " ,pd.barcode\n" +
  8802. " ,pd.backoutusercode\n" +
  8803. " ,pd.backouttime";
  8804. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  8805. if (string.IsNullOrEmpty(se.ProcedureIDS))
  8806. {
  8807. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, null, ParameterDirection.Input));
  8808. }
  8809. else
  8810. {
  8811. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  8812. }
  8813. if (string.IsNullOrEmpty(se.UserIDS))
  8814. {
  8815. parameters.Add(new OracleParameter(":PUserIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  8816. }
  8817. else
  8818. {
  8819. parameters.Add(new OracleParameter(":PUserIDS", OracleDbType.Varchar2, "," + se.UserIDS + ",", ParameterDirection.Input));
  8820. }
  8821. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8822. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8823. parameters.Add(new OracleParameter(":backusercode", OracleDbType.Varchar2, se.BackUserCode, ParameterDirection.Input));
  8824. parameters.Add(new OracleParameter(":ptimebegin", OracleDbType.Date, se.PTimeStart, ParameterDirection.Input));
  8825. parameters.Add(new OracleParameter(":ptimeend", OracleDbType.Date, se.PTimeEnd, ParameterDirection.Input));
  8826. parameters.Add(new OracleParameter(":backtimebegin", OracleDbType.Date, se.BackTimeStart, ParameterDirection.Input));
  8827. parameters.Add(new OracleParameter(":backtimeend", OracleDbType.Date, se.BackTimeEnd, ParameterDirection.Input));
  8828. parameters.Add(new OracleParameter(":puserid", OracleDbType.Int32, se.UserID, ParameterDirection.Input));
  8829. parameters.Add(new OracleParameter(":goodsid", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  8830. parameters.Add(new OracleParameter(":procedureid", OracleDbType.Int32, se.ProcedureID, ParameterDirection.Input));
  8831. return sqlString;
  8832. }
  8833. #endregion
  8834. /// <summary>
  8835. /// 工序收发存汇总表(初始化数据)
  8836. /// </summary>
  8837. /// <param name="user"></param>
  8838. /// <returns></returns>
  8839. public static ServiceResultEntity GetRPT030111IData(SUserInfo user)
  8840. {
  8841. IDBConnection conn = null;
  8842. try
  8843. {
  8844. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8845. OracleParameter[] parameters = new OracleParameter[]
  8846. {
  8847. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  8848. };
  8849. string sqlString =
  8850. "SELECT t.ptid, t.name\n" +
  8851. " FROM tp_mst_rpt_transfer t\n" +
  8852. " WHERE t.AccountID = :AccountID\n" +
  8853. " AND t.valueflag = '1'\n" +
  8854. " ORDER BY t.displayno desc";
  8855. DataSet data = conn.GetSqlResultToDs(sqlString, parameters);
  8856. ServiceResultEntity sre = new ServiceResultEntity();
  8857. //if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  8858. //{
  8859. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8860. // return sre;
  8861. //}
  8862. sre.Data = data;
  8863. return sre;
  8864. }
  8865. catch (Exception ex)
  8866. {
  8867. throw ex;
  8868. }
  8869. finally
  8870. {
  8871. if (conn != null &&
  8872. conn.ConnState == ConnectionState.Open)
  8873. {
  8874. conn.Close();
  8875. }
  8876. }
  8877. }
  8878. /// <summary>
  8879. /// 工序收发存汇总表
  8880. /// </summary>
  8881. /// <param name="user"></param>
  8882. /// <param name="se"></param>
  8883. /// <returns></returns>
  8884. public static ServiceResultEntity GetRPT030111SData(SUserInfo user, RPT030111_SE se)
  8885. {
  8886. IDBTransaction conn = null;
  8887. try
  8888. {
  8889. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8890. conn.Connect();
  8891. OracleParameter[] parameters = new OracleParameter[]
  8892. {
  8893. new OracleParameter("in_accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  8894. new OracleParameter("in_ptid", OracleDbType.Int32, se.PTID, ParameterDirection.Input),
  8895. //new OracleParameter("in_datetimeinit", OracleDbType.Date, se.GTimeInit, ParameterDirection.Input),
  8896. new OracleParameter("in_datetimebegin", OracleDbType.Date, se.GTimeStart , ParameterDirection.Input),
  8897. new OracleParameter("in_datetimeend", OracleDbType.Date, se.GTimeEnd , ParameterDirection.Input),
  8898. new OracleParameter("in_goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode , ParameterDirection.Input),
  8899. new OracleParameter("in_goodscode", OracleDbType.Varchar2, se.GoodsCode , ParameterDirection.Input),
  8900. new OracleParameter("out_data", OracleDbType.RefCursor, null, ParameterDirection.Output),
  8901. };
  8902. DataSet data = conn.ExecStoredProcedure("pro_rpt_gettransfers_sum_c", parameters);
  8903. ServiceResultEntity sre = new ServiceResultEntity();
  8904. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  8905. {
  8906. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8907. return sre;
  8908. }
  8909. //StringBuilder intdids = new StringBuilder();
  8910. //foreach (DataRow row in data.Tables[0].Rows)
  8911. //{
  8912. // if (intdids.Length > 0)
  8913. // {
  8914. // intdids.Append(", ");
  8915. // }
  8916. // intdids.Append(row["tdid"] + " AS \"" + row["name"] + "\"\n");
  8917. //}
  8918. //string sqlString =
  8919. // "WITH ttm AS\n" +
  8920. // " (SELECT *\n" +
  8921. // " FROM TMP_RPT_TECDEP_D\n" +
  8922. // " pivot(SUM(m)\n" +
  8923. // " FOR intdid IN(" + intdids + ")))\n" +
  8924. // "SELECT t.goodscode as c_goodscode, t.tecdepname as c_tecdepname, t.a C_A, t.b C_B, t.c C_C, t.d C_D, t.e C_E, t.f C_F, m.*\n" +
  8925. // " FROM TMP_RPT_TECDEP_T t\n" +
  8926. // " LEFT JOIN ttm m\n" +
  8927. // " ON m.goodsid = t.goodsid\n" +
  8928. // " AND m.outtdid = t.tecdepid\n" +
  8929. // " ORDER BY t.goodscode, t.displayno";
  8930. //data = conn.GetSqlResultToDs(sqlString);
  8931. //if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  8932. //{
  8933. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8934. // return sre;
  8935. //}
  8936. conn.Commit();
  8937. sre.Data = data;
  8938. return sre;
  8939. }
  8940. catch (Exception ex)
  8941. {
  8942. throw ex;
  8943. }
  8944. finally
  8945. {
  8946. if (conn != null &&
  8947. conn.ConnState == ConnectionState.Open)
  8948. {
  8949. conn.Disconnect();
  8950. }
  8951. }
  8952. }
  8953. #endregion 汇总报表
  8954. #region 公共函数
  8955. /// <summary>
  8956. /// 取得报表的查询数据源统计工序数据
  8957. /// </summary>
  8958. /// <param name="user">登录用户信息</param>
  8959. /// <param name="se">查询条件</param>
  8960. /// <returns>查询结果</returns>
  8961. public static ServiceResultEntity GetRptSourceProcedureModule(SUserInfo user, int? RptProcedureID)
  8962. {
  8963. IDBConnection conn = null;
  8964. try
  8965. {
  8966. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8967. OracleParameter[] paras = new OracleParameter[]{
  8968. new OracleParameter("in_rptProcedureId",OracleDbType.Int32,RptProcedureID,ParameterDirection.Input),
  8969. new OracleParameter("out_rptSResult",OracleDbType.RefCursor, ParameterDirection.Output),
  8970. new OracleParameter("out_rptTresult",OracleDbType.RefCursor, ParameterDirection.Output),
  8971. };
  8972. DataSet data = conn.ExecStoredProcedure("PRO_MST_GetRptProcedureBYID", paras);
  8973. ServiceResultEntity sre = new ServiceResultEntity();
  8974. if (data == null || data.Tables.Count == 0)
  8975. {
  8976. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8977. return sre;
  8978. }
  8979. sre.Data = new DataSet();
  8980. sre.Data = data;
  8981. return sre;
  8982. }
  8983. catch (Exception ex)
  8984. {
  8985. throw ex;
  8986. }
  8987. finally
  8988. {
  8989. if (conn != null &&
  8990. conn.ConnState == ConnectionState.Open)
  8991. {
  8992. conn.Close();
  8993. }
  8994. }
  8995. }
  8996. /// <summary>
  8997. /// 取得报表数据源数据
  8998. /// </summary>
  8999. /// <param name="user">登录用户信息</param>
  9000. /// <returns>查询结果</returns>
  9001. public static ServiceResultEntity GetRptProcedureModule(SUserInfo user)
  9002. {
  9003. IDBConnection conn = null;
  9004. try
  9005. {
  9006. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9007. string selSql = " select "
  9008. + " TP_MST_RptProcedure.Rptprocedureid,"
  9009. + " TP_MST_RptProcedure.Rptprocedurecode,"
  9010. + " TP_MST_RptProcedure.Rptprocedurename,"
  9011. + " TP_MST_RptProcedure.Rptproceduretype,"
  9012. + " decode(TP_MST_RptProcedure.Rptproceduretype,'A0001','出窑统计','质量统计') RptproceduretypeName,"
  9013. + " (select wm_concat(s.procedureid) sprocedureid from tp_mst_rptsprocedure s where s.rptprocedureid = TP_MST_RptProcedure.Rptprocedureid) sprocedureid,"
  9014. + " (select wm_concat(t.procedureid) tprocedureid from tp_mst_rpttprocedure t where t.rptprocedureid = TP_MST_RptProcedure.Rptprocedureid) tprocedureid,"
  9015. + " TP_MST_RptProcedure.Optimestamp "
  9016. + " from TP_MST_RptProcedure "
  9017. + " where TP_MST_RptProcedure.ValueFlag=1 "
  9018. + " and TP_MST_RptProcedure.AccountID=:accountID order by TP_MST_RptProcedure.displayno";
  9019. List<OracleParameter> parameters = new List<OracleParameter>();
  9020. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9021. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9022. ServiceResultEntity sre = new ServiceResultEntity();
  9023. if (data == null || data.Rows.Count == 0)
  9024. {
  9025. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9026. return sre;
  9027. }
  9028. sre.Data = new DataSet();
  9029. sre.Data.Tables.Add(data);
  9030. return sre;
  9031. }
  9032. catch (Exception ex)
  9033. {
  9034. throw ex;
  9035. }
  9036. finally
  9037. {
  9038. if (conn != null &&
  9039. conn.ConnState == ConnectionState.Open)
  9040. {
  9041. conn.Close();
  9042. }
  9043. }
  9044. }
  9045. /// <summary>
  9046. /// 取得窑炉数据
  9047. /// </summary>
  9048. /// <param name="user">登录用户信息</param>
  9049. /// <param name="pValue">使用标识条件</param>
  9050. /// <returns>查询结果</returns>
  9051. public static ServiceResultEntity GetKilnData(SUserInfo user, byte pValue)
  9052. {
  9053. IDBConnection conn = null;
  9054. try
  9055. {
  9056. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9057. string selSql = string.Empty;
  9058. List<OracleParameter> parameters = new List<OracleParameter>();
  9059. //根据帐套查询数据
  9060. if (pValue.ToString() == Constant.INT_IS_ONE.ToString())
  9061. {
  9062. selSql = "Select KilnID,KilnCode,KilnName,KilnType,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp "
  9063. + "from TP_MST_Kiln where AccountID = :AccountID";
  9064. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9065. }
  9066. //根据帐套和标识查询数据
  9067. else if (pValue.ToString() == Constant.INT_IS_ZERO.ToString())
  9068. {
  9069. selSql = "Select KilnID,KilnCode,KilnName,KilnType,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp "
  9070. + "from TP_MST_Kiln where valueflag = :valueflag and AccountID = :AccountID";
  9071. parameters.Add(new OracleParameter(":valueflag", OracleDbType.NVarchar2, Constant.INT_IS_ONE.ToString(), ParameterDirection.Input));
  9072. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9073. }
  9074. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9075. ServiceResultEntity sre = new ServiceResultEntity();
  9076. if (data == null || data.Rows.Count == 0)
  9077. {
  9078. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9079. return sre;
  9080. }
  9081. sre.Data = new DataSet();
  9082. sre.Data.Tables.Add(data);
  9083. return sre;
  9084. }
  9085. catch (Exception ex)
  9086. {
  9087. throw ex;
  9088. }
  9089. finally
  9090. {
  9091. if (conn != null &&
  9092. conn.ConnState == ConnectionState.Open)
  9093. {
  9094. conn.Close();
  9095. }
  9096. }
  9097. }
  9098. /// <summary>
  9099. /// 取得窑车数据
  9100. /// </summary>
  9101. /// <param name="user">登录用户信息</param>
  9102. /// <returns>查询结果</returns>
  9103. public static ServiceResultEntity GetAllKilnCarInfo(SUserInfo user)
  9104. {
  9105. IDBConnection conn = null;
  9106. try
  9107. {
  9108. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9109. string selSql = String.Empty;
  9110. List<OracleParameter> parameters = new List<OracleParameter>();
  9111. //获取窑车管理的数据
  9112. selSql = "Select KilnCarID,KilnID,KilnCarCode,KilnCarName,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp "
  9113. + "from TP_MST_KilnCar where AccountID = :AccountID";
  9114. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9115. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9116. ServiceResultEntity sre = new ServiceResultEntity();
  9117. if (data == null || data.Rows.Count == 0)
  9118. {
  9119. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9120. return sre;
  9121. }
  9122. sre.Data = new DataSet();
  9123. sre.Data.Tables.Add(data);
  9124. return sre;
  9125. }
  9126. catch (Exception ex)
  9127. {
  9128. throw ex;
  9129. }
  9130. finally
  9131. {
  9132. if (conn != null &&
  9133. conn.ConnState == ConnectionState.Open)
  9134. {
  9135. conn.Close();
  9136. }
  9137. }
  9138. }
  9139. /// <summary>
  9140. /// 取得生产线所有的工序
  9141. /// </summary>
  9142. /// <param name="user">登录用户信息</param>
  9143. /// <returns>查询结果</returns>
  9144. public static ServiceResultEntity GetRptProductionLineProcedures(SUserInfo user, int? RptProductionLineID)
  9145. {
  9146. IDBConnection conn = null;
  9147. try
  9148. {
  9149. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9150. string selSql = "select "
  9151. + " tp_pc_procedure.procedureid, "
  9152. + " tp_pc_procedure.Procedurename "
  9153. + " from "
  9154. + " ( "
  9155. + " select TP_PM_ProductionData.Procedureid "
  9156. + " from TP_PM_ProductionData "
  9157. + " where TP_PM_ProductionData.accountid = :accountID "
  9158. + " and TP_PM_ProductionData.productionlineid = :ProductionLineID "
  9159. + " group by TP_PM_ProductionData.Procedureid "
  9160. + " order by TP_PM_ProductionData.Procedureid "
  9161. + " )temp left join tp_pc_procedure "
  9162. + " on tp_pc_procedure.procedureid=temp.procedureid ";
  9163. List<OracleParameter> parameters = new List<OracleParameter>();
  9164. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9165. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, RptProductionLineID, ParameterDirection.Input));
  9166. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9167. ServiceResultEntity sre = new ServiceResultEntity();
  9168. if (data == null || data.Rows.Count == 0)
  9169. {
  9170. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9171. return sre;
  9172. }
  9173. sre.Data = new DataSet();
  9174. sre.Data.Tables.Add(data);
  9175. return sre;
  9176. }
  9177. catch (Exception ex)
  9178. {
  9179. throw ex;
  9180. }
  9181. finally
  9182. {
  9183. if (conn != null &&
  9184. conn.ConnState == ConnectionState.Open)
  9185. {
  9186. conn.Close();
  9187. }
  9188. }
  9189. }
  9190. /// <summary>
  9191. /// 取得数据字典数据
  9192. /// </summary>
  9193. /// <param name="Pvalue">显示停用标识</param>
  9194. /// <param name="dictionaryType">字典类别</param>
  9195. /// <param name="user">登录用户信息</param>
  9196. /// <returns>查询结果</returns>
  9197. public static ServiceResultEntity GetRptDictionaryData(byte Pvalue, string dictionaryType, SUserInfo user)
  9198. {
  9199. IDBConnection conn = null;
  9200. try
  9201. {
  9202. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9203. string selSql = String.Empty;
  9204. List<OracleParameter> parameters = new List<OracleParameter>();
  9205. //根据帐套获得数据字典管理的数据
  9206. if (Pvalue.ToString() == Constant.INT_IS_ONE.ToString())
  9207. {
  9208. selSql = "Select DictionaryID,DictionaryType,DictionaryValue,DisplayNo,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,"
  9209. + "UpdateUserID,OPTimeStamp from TP_MST_DataDictionary where DictionaryType = :DictionaryType and AccountID = :AccountID";
  9210. parameters.Add(new OracleParameter(":DictionaryType", OracleDbType.NVarchar2, dictionaryType, ParameterDirection.Input));
  9211. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9212. }
  9213. //根据帐套,标识获得数据字典管理的数据
  9214. else if (Pvalue.ToString() == Constant.INT_IS_ZERO.ToString())
  9215. {
  9216. selSql = "Select DictionaryID,DictionaryType,DictionaryValue,DisplayNo,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,"
  9217. + "UpdateUserID,OPTimeStamp from TP_MST_DataDictionary where valueflag = :valueflag and DictionaryType = :DictionaryType and AccountID = :AccountID";
  9218. parameters.Add(new OracleParameter(":valueflag", OracleDbType.Int32, Constant.INT_IS_ONE, ParameterDirection.Input));
  9219. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9220. parameters.Add(new OracleParameter(":DictionaryType", OracleDbType.NVarchar2, dictionaryType, ParameterDirection.Input));
  9221. }
  9222. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9223. ServiceResultEntity sre = new ServiceResultEntity();
  9224. if (data == null || data.Rows.Count == 0)
  9225. {
  9226. //sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9227. return sre;
  9228. }
  9229. sre.Data = new DataSet();
  9230. sre.Data.Tables.Add(data);
  9231. return sre;
  9232. }
  9233. catch (Exception ex)
  9234. {
  9235. throw ex;
  9236. }
  9237. finally
  9238. {
  9239. if (conn != null &&
  9240. conn.ConnState == ConnectionState.Open)
  9241. {
  9242. conn.Close();
  9243. }
  9244. }
  9245. }
  9246. #endregion 公共函数
  9247. #endregion 统一使用Se模式rviceResultEntity类
  9248. /// <summary>
  9249. /// 获取注浆次数报表
  9250. /// </summary>
  9251. /// <param name="groutingLineEntity"></param>
  9252. /// <param name="user"></param>
  9253. /// <returns></returns>
  9254. public static ServiceResultEntity GetGroutingCount(GroutingLineEntity groutingLineEntity, SUserInfo user)
  9255. {
  9256. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9257. try
  9258. {
  9259. con.Open();
  9260. OracleParameter[] paras = new OracleParameter[]{
  9261. new OracleParameter("BuildingNo",OracleDbType.NVarchar2,
  9262. groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
  9263. new OracleParameter("FloorNo",OracleDbType.NVarchar2,
  9264. groutingLineEntity.FLOORNO,ParameterDirection.Input),
  9265. new OracleParameter("GroutingLineNo",OracleDbType.NVarchar2,
  9266. groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
  9267. new OracleParameter("GroutingLineCode",OracleDbType.NVarchar2,
  9268. groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
  9269. new OracleParameter("GroutingLineName",OracleDbType.NVarchar2,
  9270. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  9271. new OracleParameter("GMouldTypeID",OracleDbType.Int32,
  9272. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  9273. new OracleParameter("remarks",OracleDbType.NVarchar2,
  9274. groutingLineEntity.REMARKS,ParameterDirection.Input),
  9275. new OracleParameter("AccountID",OracleDbType.Int32,
  9276. user.AccountID,ParameterDirection.Input),
  9277. new OracleParameter("UserId",OracleDbType.Int32,
  9278. user.UserID,ParameterDirection.Input),
  9279. new OracleParameter("PurviewType",OracleDbType.Int32,
  9280. groutingLineEntity.Purview,ParameterDirection.Input),
  9281. new OracleParameter("rs_result",OracleDbType.RefCursor,
  9282. ParameterDirection.Output),
  9283. new OracleParameter("UserCode",OracleDbType.NVarchar2,
  9284. groutingLineEntity.USERCODE,ParameterDirection.Input),
  9285. };
  9286. //调用获取符合条件的成型线信息
  9287. DataSet ds = con.ExecStoredProcedure("PRO_RPT_GetGroutingCount", paras);
  9288. ServiceResultEntity sre = new ServiceResultEntity();
  9289. if (ds == null || ds.Tables[0].Rows.Count == 0)
  9290. {
  9291. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9292. return sre;
  9293. }
  9294. sre.Data = new DataSet();
  9295. //DataTable dt=ds.Tables[0];
  9296. sre.Data.Tables.Add(ds.Tables[0].Copy());
  9297. return sre;
  9298. }
  9299. catch (Exception ex)
  9300. {
  9301. throw ex;
  9302. }
  9303. finally
  9304. {
  9305. if (con.ConnState == ConnectionState.Open)
  9306. {
  9307. con.Close();
  9308. }
  9309. }
  9310. }
  9311. #region 在产产品汇总表
  9312. /// <summary>
  9313. /// 取得RPT030105(在产产品汇总表)的汇总信息查询数据
  9314. /// </summary>
  9315. /// <param name="user">登录用户信息</param>
  9316. /// <param name="se">查询条件</param>
  9317. /// <returns>查询结果</returns>
  9318. public static ServiceResultEntity GetRPT030105Data(SUserInfo user, RPT030105_SE se)
  9319. {
  9320. IDBConnection conn = null;
  9321. try
  9322. {
  9323. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9324. List<OracleParameter> parameters = new List<OracleParameter>();
  9325. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030105SQL(user, se, ref parameters));
  9326. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  9327. ServiceResultEntity sre = new ServiceResultEntity();
  9328. if (data == null || data.Rows.Count == 0)
  9329. {
  9330. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9331. return sre;
  9332. }
  9333. sre.Data = new DataSet();
  9334. sre.Data.Tables.Add(data);
  9335. return sre;
  9336. }
  9337. catch (Exception ex)
  9338. {
  9339. throw ex;
  9340. }
  9341. finally
  9342. {
  9343. if (conn != null &&
  9344. conn.ConnState == ConnectionState.Open)
  9345. {
  9346. conn.Close();
  9347. }
  9348. }
  9349. }
  9350. /// <summary>
  9351. /// 获取RPT030105画面(产品产量汇总表)的汇总信息查询sql
  9352. /// </summary>
  9353. /// <returns>sql</returns>
  9354. private static string GetRPT030105SQL(SUserInfo user, RPT030105_SE se, ref List<OracleParameter> parameters)
  9355. {
  9356. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9357. //if (user.AccountCode == "dongke")
  9358. {
  9359. #region
  9360. /*
  9361. string selSql =
  9362. "select " +
  9363. " ProcedureID," +
  9364. " procedurecode, " +
  9365. " decode(productionlinename, '总计', '--', procedurename) procedurename, " +
  9366. " productionlineid, " +
  9367. " productionlinecode, " +
  9368. " productionlinename, " +
  9369. " decode(productionlinename, '--', '--', Usercode) Usercode, " +
  9370. " decode(productionlinename, '--', null, UserID) UserID, " +
  9371. " subGoodsTypecode, " +
  9372. " Goodsid," +
  9373. " Goodscode, " +
  9374. " Goodstypename, " +
  9375. " InCount from (" +
  9376. "select " +
  9377. " ProcedureID," +
  9378. " procedurecode, " +
  9379. " decode(usercode,'合计','合计', decode(usercode,'小计','--',decode(usercode,'--','--',procedurename))) procedurename, " +
  9380. " productionlineid, " +
  9381. " productionlinecode, " +
  9382. " decode(ProcedureID,'总计','总计',decode(usercode,'小计','--',productionlinename)) productionlinename, " +
  9383. " decode(ProcedureID,'总计','--',Usercode) Usercode, " +
  9384. " decode(ProcedureID,'总计',null,Userid) Userid, " +
  9385. " subGoodsTypecode, " +
  9386. " Goodsid," +
  9387. " Goodscode, " +
  9388. " decode(usercode,'小计','小计',Goodstypename)Goodstypename, " +
  9389. " InCount " +
  9390. "from " +
  9391. "(" +
  9392. " select " +
  9393. " ProcedureID, " +
  9394. " procedurecode, " +
  9395. " procedurename, " +
  9396. " productionlineid, " +
  9397. " productionlinecode, " +
  9398. " productionlinename, " +
  9399. " decode(procedurecode,'--','合计',Usercode) Usercode, " +
  9400. " decode(procedurecode,'--',null,Userid) Userid, " +
  9401. " subGoodsTypecode," +
  9402. " Goodsid," +
  9403. " Goodscode," +
  9404. " Goodstypename, " +
  9405. " InCount " +
  9406. " from ( select " +
  9407. " decode(grouping(tp_pc_procedure.ProcedureID),1,'总计',tp_pc_procedure.ProcedureID) ProcedureID," +
  9408. " decode(grouping(tp_pc_procedure.procedurecode),1,'--',tp_pc_procedure.procedurecode) procedurecode, " +
  9409. " decode(grouping(tp_pc_procedure.procedurename),1,'--',tp_pc_procedure.procedurename) procedurename, " +
  9410. " decode(grouping(tp_pm_inproduction.productionlineid),1,'--',tp_pm_inproduction.productionlineid) productionlineid, " +
  9411. " decode(grouping(tp_pm_inproduction.productionlinecode),1,'--',tp_pm_inproduction.productionlinecode) productionlinecode, " +
  9412. " decode(grouping(tp_pm_inproduction.productionlinename),1,'--',tp_pm_inproduction.productionlinename) productionlinename, " +
  9413. " decode(grouping(TP_MST_User.Usercode),1,'小计',TP_MST_User.Usercode) Usercode," +
  9414. " decode(grouping(TP_MST_User.Userid),1,null,TP_MST_User.Userid) Userid," +
  9415. " decode(grouping(substr(TP_MST_GoodsType.Goodstypecode,0,6)),1,'--',substr(TP_MST_GoodsType.Goodstypecode,0,6)) subGoodsTypecode," +
  9416. " decode(grouping(TP_MST_Goods.Goodscode),1,'--',TP_MST_Goods.Goodscode) Goodscode," +
  9417. " decode(grouping(TP_MST_Goods.Goodsid),1,'--',TP_MST_Goods.Goodsid) Goodsid," +
  9418. " decode(grouping(TP_MST_GoodsType.Goodstypename),1,'--',TP_MST_GoodsType.Goodstypename) Goodstypename," +
  9419. " count(barcode) as InCount " +
  9420. " from tp_pm_inproduction " +
  9421. " left join tp_pc_procedure" +
  9422. " on tp_pm_inproduction.FlowProcedureID=tp_pc_procedure.ProcedureID" +
  9423. " left join TP_MST_User on tp_pm_inproduction.userid=TP_MST_User.Userid left join TP_MST_Goods on tp_pm_inproduction.goodsid=TP_MST_Goods.Goodsid left join TP_MST_GoodsType on TP_MST_Goods.GoodsTypeID=TP_MST_GoodsType.GoodsTypeID" +
  9424. " Where 1=1 " +
  9425. " and tp_pm_inproduction.AccountID=:AccountID and tp_pm_inproduction.valueflag=1";
  9426. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  9427. {
  9428. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1";
  9429. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1";
  9430. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  9431. }
  9432. if (!string.IsNullOrEmpty(se.LineIDS))
  9433. {
  9434. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||tp_pm_inproduction.ProductionLineId||',')>0 ";
  9435. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  9436. }
  9437. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  9438. {
  9439. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||tp_pm_inproduction.FlowProcedureId||',')>0 ";
  9440. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  9441. }
  9442. if (!string.IsNullOrEmpty(se.GoodsCode))
  9443. {
  9444. selSql = selSql + " AND instr(','||:GoodsCode||',',','||tp_pm_inproduction.goodsCode||',')>0 ";
  9445. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  9446. }
  9447. selSql = selSql +
  9448. "group by " +
  9449. " rollup(tp_pc_procedure.ProcedureID, " +
  9450. " tp_pc_procedure.procedurecode, " +
  9451. " tp_pc_procedure.procedurename, " +
  9452. " tp_pm_inproduction.productionlineid, " +
  9453. " tp_pm_inproduction.productionlinecode, " +
  9454. " tp_pm_inproduction.productionlinename, " +
  9455. " substr(TP_MST_GoodsType.Goodstypecode,0,6), " +
  9456. " TP_MST_User.Usercode," +
  9457. " TP_MST_Goods.Goodscode, " +
  9458. " TP_MST_User.UserID," +
  9459. " TP_MST_Goods.GoodsID, " +
  9460. " TP_MST_GoodsType.Goodstypename)) temp ) temp2 " +
  9461. "where 1=1 " +
  9462. "and (Goodstypename!='--')" +
  9463. "or (Goodstypename='--' and UserCode='小计' and subGoodsTypecode!='--') " +
  9464. "or (Goodstypename='--' and UserCode='合计') " +
  9465. "or (Goodstypename='--' and UserCode='总计') )";
  9466. return selSql;
  9467. */
  9468. #endregion
  9469. }
  9470. string sqlString = "select t.productionlineid\n" +
  9471. " ,t.productionlinecode\n" +
  9472. " ,decode(gid\n" +
  9473. " ,15\n" +
  9474. " ,'总计'\n" +
  9475. " ,t.productionlinename) productionlinename\n" +
  9476. " ,t.ProcedureID\n" +
  9477. " ,t.procedurecode\n" +
  9478. " ,decode(gid, 3, '合计【' || t.procedurename || '】', t.procedurename) procedurename\n" +
  9479. " ,t.Goodstypeid2\n" +
  9480. " ,t.Goodstypecode2\n" +
  9481. " ,t.Goodstypename2\n" +
  9482. //" ,decode(gid, 1, '小计【' || t.Goodstypename2 || '】', t.Goodstypename2) Goodstypename2\n" +
  9483. " ,t.userid\n" +
  9484. " ,t.usercode\n" +
  9485. " ,t.Goodsid\n" +
  9486. " ,t.Goodscode\n" +
  9487. " ,t.InCount\n" +
  9488. " from (select grouping_id(inp.productionlineid\n" +
  9489. " ,inp.ProcedureID\n" +
  9490. //" ,gt2.Goodstypeid\n" +
  9491. //" ,gt.Goodstypeid\n" +
  9492. " ,inp.userid\n" +
  9493. " ,inp.Goodsid) gid\n" +
  9494. " ,inp.productionlineid\n" +
  9495. " ,pline.productionlinecode\n" +
  9496. " ,pline.productionlinename\n" +
  9497. " ,inp.ProcedureID\n" +
  9498. " ,p.procedurecode\n" +
  9499. " ,p.procedurename\n" +
  9500. //" ,gt2.GoodstypeID GoodstypeID2\n" +
  9501. //" ,gt2.Goodstypecode Goodstypecode2\n" +
  9502. //" ,gt2.Goodstypename Goodstypename2\n" +
  9503. " ,gt.GoodstypeID GoodstypeID2\n" +
  9504. " ,gt.Goodstypecode Goodstypecode2\n" +
  9505. " ,gt.Goodstypename Goodstypename2\n" +
  9506. " ,inp.Goodsid\n" +
  9507. " ,inp.userid\n" +
  9508. " ,u.usercode\n" +
  9509. " ,g.Goodscode\n" +
  9510. " ,count(barcode) as InCount\n" +
  9511. " from tp_pm_inproduction inp\n" +
  9512. " inner join tp_pc_procedure p\n" +
  9513. " on inp.ProcedureID = p.ProcedureID\n" +
  9514. " inner join tp_pc_productionline pline\n" +
  9515. " on pline.productionlineid = inp.productionlineid\n" +
  9516. " inner join TP_MST_User u\n" +
  9517. " on inp.userid = u.Userid\n" +
  9518. " inner join TP_MST_Goods g\n" +
  9519. " on inp.goodsid = g.Goodsid\n" +
  9520. " inner join TP_MST_GoodsType gt\n" +
  9521. " on g.GoodsTypeID = gt.GoodsTypeID\n" +
  9522. //" inner join TP_MST_GoodsType gt2\n" +
  9523. //" on gt.accountid = gt2.accountid\n" +
  9524. //" and substr(gt.Goodstypecode, 0, 6) = gt2.Goodstypecode\n" +
  9525. " where inp.AccountID = 1\n" +
  9526. " and inp.valueflag = '1'\n";
  9527. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  9528. {
  9529. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1";
  9530. sqlString += " AND instr(gt.GOODSTYPECode,:GoodsTypeIDS)=1";
  9531. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  9532. }
  9533. if (!string.IsNullOrEmpty(se.LineIDS))
  9534. {
  9535. sqlString += " AND instr(','||:ProductionLineIDS||',',','||inp.ProductionLineId||',')>0 ";
  9536. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  9537. }
  9538. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  9539. {
  9540. sqlString += " AND instr(','||:ProcedureIDS||',',','||inp.ProcedureId||',')>0 ";
  9541. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  9542. }
  9543. if (!string.IsNullOrEmpty(se.GoodsCode))
  9544. {
  9545. sqlString += " AND instr(','||:GoodsCode||',',','||inp.goodsCode||',')>0 ";
  9546. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  9547. }
  9548. //sqlString += " group by grouping sets((inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename, gt2.Goodstypeid, gt2.Goodstypecode, gt2.Goodstypename, inp.Goodsid, g.Goodscode),(inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename, gt2.Goodstypeid, gt2.Goodstypecode, gt2.Goodstypename),(inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename),())) t";
  9549. //sqlString += " group by grouping sets((inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename, gt.Goodstypeid, gt.Goodstypecode, gt.Goodstypename, inp.Goodsid, g.Goodscode),(inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename, gt.Goodstypeid, gt.Goodstypecode, gt.Goodstypename),(inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename),())) t";
  9550. sqlString += " group by grouping sets((inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename,inp.userid,u.usercode, gt.Goodstypeid, gt.Goodstypecode, gt.Goodstypename, inp.Goodsid, g.Goodscode),(inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename),())) t";
  9551. sqlString += " order by t.procedurename, t.usercode, t.Goodstypecode2, t.Goodscode";
  9552. return sqlString;
  9553. }
  9554. /// <summary>
  9555. /// 取得RPT030105(在产产品汇总表)的汇总信息查询数据
  9556. /// </summary>
  9557. /// <param name="user">登录用户信息</param>
  9558. /// <param name="se">查询条件</param>
  9559. /// <returns>查询结果</returns>
  9560. public static ServiceResultEntity GetRPT030105IData(SUserInfo user, RPT030105_SE se)
  9561. {
  9562. IDBConnection conn = null;
  9563. try
  9564. {
  9565. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9566. List<OracleParameter> parameters = new List<OracleParameter>();
  9567. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030105ISQL(user, se, ref parameters));
  9568. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9569. if (se != null)
  9570. {
  9571. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  9572. {
  9573. //sql.Append(" AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1");
  9574. sql.Append(" AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1");
  9575. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  9576. }
  9577. if (!string.IsNullOrEmpty(se.LineIDS))
  9578. {
  9579. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||tp_pm_inproduction.ProductionLineId||',')>0 ");
  9580. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  9581. }
  9582. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  9583. {
  9584. //sql.Append(" AND instr(','||:ProcedureIDS||',',','||tp_pm_inproduction.FlowProcedureId||',')>0 ");
  9585. sql.Append(" AND instr(','||:ProcedureIDS||',',','||tp_pm_inproduction.ProcedureId||',')>0 ");
  9586. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  9587. }
  9588. if (!string.IsNullOrEmpty(se.GoodsCode))
  9589. {
  9590. sql.Append(" AND instr(','||:GoodsCode||',',','||tp_pm_inproduction.goodsCode||',')>0 ");
  9591. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  9592. }
  9593. // 总单点击查询用
  9594. if (se.GoodsID.HasValue)
  9595. {
  9596. sql.Append(" AND tp_pm_inproduction.Goodsid = :GoodsID ");
  9597. parameters.Add(new OracleParameter(":GoodsID", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  9598. }
  9599. if (se.UserID.HasValue)
  9600. {
  9601. sql.Append(" AND A.userid = :userid ");
  9602. parameters.Add(new OracleParameter(":userid", OracleDbType.Int32, se.UserID, ParameterDirection.Input));
  9603. }
  9604. }
  9605. sql.Append(" order by TP_PM_InProduction.UpdateTime desc");
  9606. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  9607. ServiceResultEntity sre = new ServiceResultEntity();
  9608. if (data == null || data.Rows.Count == 0)
  9609. {
  9610. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9611. return sre;
  9612. }
  9613. sre.Data = new DataSet();
  9614. sre.Data.Tables.Add(data);
  9615. return sre;
  9616. }
  9617. catch (Exception ex)
  9618. {
  9619. throw ex;
  9620. }
  9621. finally
  9622. {
  9623. if (conn != null &&
  9624. conn.ConnState == ConnectionState.Open)
  9625. {
  9626. conn.Close();
  9627. }
  9628. }
  9629. }
  9630. /// <summary>
  9631. /// 获取RPT030105画面(产品产量汇总表)的汇总信息查询sql
  9632. /// </summary>
  9633. /// <returns>sql</returns>
  9634. private static string GetRPT030105ISQL(SUserInfo user, RPT030105_SE se, ref List<OracleParameter> parameters)
  9635. {
  9636. string selSql =
  9637. "SELECT " +
  9638. " TP_PM_InProduction.BarCode, " +
  9639. " TP_PM_InProduction.GoodsID,TP_PM_InProduction.GoodsCode, " +
  9640. " TP_PM_InProduction.GoodsName, " +
  9641. " TP_PM_InProduction.Userid,A.USERNAME as UserName,A.USERCode as UserCode, " +
  9642. " TP_PM_InProduction.ProductionLineID, " +
  9643. " pin.ProductionLineCode, " +
  9644. " pin.ProductionLineName, " +
  9645. " TP_PM_InProduction.ModelType, " +
  9646. " decode(TP_PM_InProduction.inscrapflag , '1', '待审核的报废品' , '正常') as inscrapflag, " +
  9647. //" decode(TP_PM_InProduction.IsPublicBody, '1', '是' , '否') as IsPublicBody, " +
  9648. //" decode(TP_PM_InProduction.IsReFire, '1', '是' , '否') as IsReFire, " +
  9649. " TP_PM_InProduction.IsPublicBody, " +
  9650. " decode(TP_PM_InProduction.IsReFire, '6', '1' , '0') as IsReFire, " +
  9651. " decode(TP_PM_InProduction.CanManyTimes, '1', '能' , '不能') as CanManyTimes, " +
  9652. " decode(TP_PM_InProduction.ProcedureModel, '1', '计件模型' , '检验模型') as ProcedureModel, " +
  9653. " TP_PM_InProduction.GroutingDailyID, " +
  9654. " TP_PM_InProduction.GroutingDailyDetailID, " +
  9655. " TP_PM_InProduction.GroutingDate, " +
  9656. " TP_PM_InProduction.GroutingLineID, " +
  9657. " TP_PM_InProduction.GroutingLineCode, " +
  9658. " TP_PM_InProduction.GroutingLineName, " +
  9659. " TP_PM_InProduction.ProcedureID CompleteProcedureID, " +
  9660. " D.ProcedureName as CompleteProcedureName, " +
  9661. " TP_PM_InProduction.GMouldTypeID, " +
  9662. " TP_MST_GMouldType.GMOULDTYPENAME as GMouldTypeName, " +
  9663. " TP_PM_InProduction.GroutingLineDetailID, " +
  9664. " TP_PM_InProduction.GroutingMouldCode, " +
  9665. " TP_PM_InProduction.SPECIALREPAIRFLAG, " +
  9666. " TP_PM_InProduction.GROUTINGUSERCODE, " +
  9667. " TP_PM_GroutingDailyDetail.GROUTINGCOUNT, " +
  9668. " TP_PM_InProduction.Remarks, " +
  9669. " TP_PM_GroutingDailyDetail.glazingroom," +
  9670. " TP_PM_InProduction.GoodsLevelID,TP_MST_GoodsLevel.GOODSLEVELNAME, " +
  9671. " TP_PM_InProduction.GoodsLevelTypeID,TP_SYS_GoodsLevelType.GOODSLEVELTYPENAME, " +
  9672. " TP_PM_InProduction.AccountID,TP_PM_InProduction.ValueFlag, " +
  9673. " TP_PM_InProduction.CreateTime,TP_PM_InProduction.CreateUserID,B.USERNAME as CreateUserName, " +
  9674. " TP_PM_InProduction.PROCEDURETIME AS UpdateTime,TP_PM_InProduction.UpdateUserID,C.USERNAME as UpdateUserName, " +
  9675. " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName, " +
  9676. " TP_PM_GroutingDailyDetail.SecurityCode " +
  9677. " ,TP_PM_GroutingDailyDetail.MATERIALCODE,TP_PM_GroutingDailyDetail.MATERIALREMARK " +
  9678. " FROM TP_PM_InProduction " +
  9679. " left join TP_PC_PRODUCTIONLINE pin on TP_PM_InProduction.productionlineid = pin.productionlineid" +
  9680. " inner join TP_MST_User A on A.UserID=TP_PM_InProduction.Userid " +
  9681. " inner join TP_MST_User B on B.UserID=TP_PM_InProduction.CreateUserID " +
  9682. " inner join TP_MST_User C on C.UserID=TP_PM_InProduction.UpdateUserID " +
  9683. " inner join TP_PC_Procedure D on D.PROCEDUREID=TP_PM_InProduction.ProcedureID " +
  9684. " inner join TP_MST_GMouldType on TP_MST_GMouldType.GMouldTypeID=TP_PM_InProduction.GMouldTypeID " +
  9685. " inner join TP_SYS_ProcedureModelType on TP_SYS_ProcedureModelType.ProcedureModelTypeID=TP_PM_InProduction.ModelType " +
  9686. " inner join TP_PM_GroutingDaily on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_InProduction.GroutingDailyID " +
  9687. " inner join TP_PM_GroutingDailyDetail on TP_PM_GroutingDailyDetail.Groutingdailydetailid=TP_PM_InProduction.GroutingDailyDetailID " +
  9688. " inner join TP_PC_GroutingLineDetail on TP_PC_GroutingLineDetail.Groutinglinedetailid=TP_PM_InProduction.GroutingLineDetailID " +
  9689. " inner join TP_MST_Account on TP_MST_Account.Accountid=TP_PM_InProduction.Accountid " +
  9690. " left join TP_MST_GoodsLevel on TP_MST_GoodsLevel.GoodsLevelID=TP_PM_InProduction.GoodsLevelID " +
  9691. " left join TP_SYS_GoodsLevelType on TP_SYS_GoodsLevelType.GoodsLevelTypeID=TP_PM_InProduction.GoodsLevelTypeID " +
  9692. " left join TP_MST_Logo on TP_PM_InProduction.logoid=TP_MST_Logo.logoid " +
  9693. " left join TP_MST_Goods on tp_pm_inproduction.goodsid=TP_MST_Goods.Goodsid " +
  9694. " left join TP_MST_GoodsType on TP_MST_Goods.GoodsTypeID=TP_MST_GoodsType.GoodsTypeID " +
  9695. " Where TP_PM_InProduction.AccountID=:AccountID ";
  9696. return selSql;
  9697. }
  9698. #endregion
  9699. /// <summary>
  9700. /// 取得RPT030106(成检缺陷汇总表)的汇总信息查询数据
  9701. /// </summary>
  9702. /// <param name="user">登录用户信息</param>
  9703. /// <param name="se">查询条件</param>
  9704. /// <returns>查询结果</returns>
  9705. public static ServiceResultEntity GetRPT030106Data(SUserInfo user, RPT030106_SE se)
  9706. {
  9707. IDBConnection conn = null;
  9708. try
  9709. {
  9710. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9711. List<OracleParameter> parameters = new List<OracleParameter>();
  9712. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030106SQL(user, se, ref parameters));
  9713. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  9714. ServiceResultEntity sre = new ServiceResultEntity();
  9715. if (data == null || data.Rows.Count == 0)
  9716. {
  9717. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9718. return sre;
  9719. }
  9720. sre.Data = new DataSet();
  9721. sre.Data.Tables.Add(data);
  9722. return sre;
  9723. }
  9724. catch (Exception ex)
  9725. {
  9726. throw ex;
  9727. }
  9728. finally
  9729. {
  9730. if (conn != null &&
  9731. conn.ConnState == ConnectionState.Open)
  9732. {
  9733. conn.Close();
  9734. }
  9735. }
  9736. }
  9737. /// <summary>
  9738. /// 获取RPT030106画面(成检缺陷汇总表)的汇总信息查询sql
  9739. /// </summary>
  9740. /// <returns>sql</returns>
  9741. private static string GetRPT030106SQL(SUserInfo user, RPT030106_SE se, ref List<OracleParameter> parameters)
  9742. {
  9743. #region
  9744. //string selSql = "";
  9745. //parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9746. //selSql = selSql +
  9747. // "select " +
  9748. // " DefectProcedureID," +
  9749. // " DefectProcedureCode, " +
  9750. // " decode(DefectProcedureID, '总计', '--', decode(DefectCode, '小计', decode(DefectProcedureName, '', '', '--'), DefectProcedureName)) DefectProcedureName," +
  9751. // " ProductionLineID, " +
  9752. // " ProductionLineCode," +
  9753. // " decode(DefectProcedureID, '总计', '总计', decode(DefectCode, '小计', '--', ProductionLineName)) ProductionLineName, " +
  9754. // " ProcedureID, " +
  9755. // " ProcedureCode," +
  9756. // " decode(DefectCode, '小计', '--', ProcedureName) ProcedureName," +
  9757. // " DefectCode, " +
  9758. // " DefectName, " +
  9759. // " DefectTypeName, " +
  9760. // " Userid," +
  9761. // " Usercode," +
  9762. // " Username," +
  9763. // " Goodstypename," +
  9764. // " Goodsid," +
  9765. // " Goodscode," +
  9766. // " Goodsname," +
  9767. // " InCount from (" +
  9768. // "select " +
  9769. // " DefectProcedureID," +
  9770. // " DefectProcedureCode, " +
  9771. // " decode(DefectProcedureCode, '--', '合计', DefectProcedureName) DefectProcedureName, " +
  9772. // " ProductionLineID, " +
  9773. // " ProductionLineCode, " +
  9774. // " ProductionLineName, " +
  9775. // " ProcedureID, " +
  9776. // " ProcedureCode, " +
  9777. // " ProcedureName, " +
  9778. // " decode(DefectName, '--', decode(DefectCode, '--', '--', '小计'), DefectCode) DefectCode, " +
  9779. // " DefectName, " +
  9780. // " DefectTypeName, " +
  9781. // " Userid, " +
  9782. // " Usercode, " +
  9783. // " Username, " +
  9784. // " Goodstypename, " +
  9785. // " Goodsid, " +
  9786. // " Goodscode, " +
  9787. // " Goodsname, " +
  9788. // " InCount " +
  9789. // "from " +
  9790. // "(" +
  9791. // " select " +
  9792. // " decode(grouping(TP_PM_Defect.DefectProcedureID),1,'总计',TP_PM_Defect.DefectProcedureID) DefectProcedureID, " +
  9793. // " decode(grouping(TP_PM_Defect.DefectProcedureCode),1,'--',TP_PM_Defect.DefectProcedureCode) DefectProcedureCode, " +
  9794. // " decode(grouping(TP_PM_Defect.DefectProcedureName),1,'--',TP_PM_Defect.DefectProcedureName) DefectProcedureName, " +
  9795. // " decode(grouping(TP_PM_Defect.ProductionLineID),1,'--',TP_PM_Defect.ProductionLineID) ProductionLineID, " +
  9796. // " decode(grouping(TP_PM_Defect.ProductionLineCode),1,'--',TP_PM_Defect.ProductionLineCode) ProductionLineCode, " +
  9797. // " decode(grouping(TP_PM_Defect.ProductionLineName),1,'--',TP_PM_Defect.ProductionLineName) ProductionLineName, " +
  9798. // " decode(grouping(TP_PM_Defect.ProcedureID),1,'--',TP_PM_Defect.ProcedureID) ProcedureID, " +
  9799. // " decode(grouping(TP_PM_Defect.ProcedureCode),1,'--',TP_PM_Defect.ProcedureCode) ProcedureCode," +
  9800. // " decode(grouping(TP_PM_Defect.ProcedureName),1,'--',TP_PM_Defect.ProcedureName) ProcedureName," +
  9801. // " decode(grouping(TP_PM_Defect.DefectCode),1,'--',TP_PM_Defect.DefectCode) DefectCode, " +
  9802. // " decode(grouping(TP_PM_Defect.DefectName),1,'--',TP_PM_Defect.DefectName) DefectName, " +
  9803. // " decode(grouping(TP_MST_DefectType.DefectTypeName),1,'--',TP_MST_DefectType.DefectTypeName) DefectTypeName, " +
  9804. // " decode(grouping(TP_PM_Defect.Userid),1,'--',TP_PM_Defect.Userid) Userid, " +
  9805. // " decode(grouping(TP_PM_Defect.Usercode),1,'--',TP_PM_Defect.Usercode) Usercode, " +
  9806. // " decode(grouping(TP_PM_Defect.Username),1,'--',TP_PM_Defect.Username) Username, " +
  9807. // " decode(grouping(TP_MST_GoodsType.Goodstypename),1,'--',TP_MST_GoodsType.Goodstypename) Goodstypename, " +
  9808. // " decode(grouping(TP_PM_Defect.Goodsid),1,'--',TP_PM_Defect.Goodsid) Goodsid, " +
  9809. // " decode(grouping(TP_PM_Defect.Goodscode),1,'--',TP_PM_Defect.Goodscode) Goodscode, " +
  9810. // " decode(grouping(TP_PM_Defect.Goodsname),1,'--',TP_PM_Defect.Goodscode) Goodsname, " +
  9811. // " count(TP_PM_Defect.barcode) as InCount " +
  9812. // " from TP_PM_Defect " +
  9813. // " left join tp_pc_procedure on TP_PM_Defect.ProcedureID=tp_pc_procedure.ProcedureID " +
  9814. // " left join TP_MST_Goods on TP_PM_Defect.Goodsid=TP_MST_Goods.Goodsid" +
  9815. // " left join TP_MST_GoodsType on TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID" +
  9816. // " left join TP_MST_Defect on TP_PM_Defect.DefectID=TP_MST_Defect.DefectID" +
  9817. // " left join TP_MST_DefectType on TP_MST_Defect.DefectTypeID=TP_MST_DefectType.DefectTypeID" +
  9818. // " left join TP_PM_ProductionData on TP_PM_ProductionData.ProductionDataID=TP_PM_Defect.ProductionDataID" +
  9819. // " Where TP_PM_Defect.valueflag=1 and tp_pc_procedure.ModelType=-1" +
  9820. // " and TP_PM_Defect.AccountID=:AccountID ";
  9821. //if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  9822. //{
  9823. // selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeCode)=1 ";
  9824. // parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  9825. //}
  9826. //if (!string.IsNullOrEmpty(se.LineIDS))
  9827. //{
  9828. // selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||TP_PM_Defect.ProductionLineId||',')>0 ";
  9829. // parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  9830. //}
  9831. //if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  9832. //{
  9833. // //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  9834. // selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 ) ";
  9835. // parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  9836. //}
  9837. //else
  9838. //{
  9839. // // modify by chenxy :没有选择时,应全查询出来。
  9840. // //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  9841. //}
  9842. //if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  9843. //{
  9844. // selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||TP_PM_Defect.ProcedureID||',')>0 ";
  9845. // parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  9846. //}
  9847. //if (!string.IsNullOrEmpty(se.KilnCode))
  9848. //{
  9849. // selSql = selSql + " AND instr(tp_pm_productiondata.KilnCode,:KilnCode) >0 ";
  9850. // parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  9851. //}
  9852. //if (!string.IsNullOrEmpty(se.GoodsIDS))
  9853. //{
  9854. // selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_Defect.Goodsid||',')>0 ";
  9855. // parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  9856. //}
  9857. //if (!string.IsNullOrEmpty(se.GoodsCode))
  9858. //{
  9859. // selSql = selSql + " AND instr(TP_PM_Defect.goodsCode,:GoodsCode) >0 ";
  9860. // parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  9861. //}
  9862. //if (!string.IsNullOrEmpty(se.DefectUserCode))
  9863. //{
  9864. // selSql = selSql + " AND instr(TP_PM_Defect.DefectUserCode,:DefectUserCode) >0 ";
  9865. // parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  9866. //}
  9867. //if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  9868. //{
  9869. // selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||TP_MST_DefectType.DefectTypeID||',')>0 ";
  9870. // parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  9871. //}
  9872. //if (!string.IsNullOrEmpty(se.DefectCode))
  9873. //{
  9874. // selSql = selSql + " AND instr(TP_PM_Defect.DefectCode,:DefectCode) >0 ";
  9875. // parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  9876. //}
  9877. //if (!string.IsNullOrEmpty(se.DefectName))
  9878. //{
  9879. // selSql = selSql + " AND instr(TP_PM_Defect.DefectName,:DefectName) >0";
  9880. // parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  9881. //}
  9882. //if (!string.IsNullOrEmpty(se.CheckUserCode))
  9883. //{
  9884. // selSql = selSql + " AND instr(TP_PM_Defect.UserCode,:UserCode) >0";
  9885. // parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  9886. //}
  9887. //if (se.CreateTimeStart.HasValue)
  9888. //{
  9889. // selSql = selSql + " AND TP_PM_Defect.CreateTime>= :CreateTimeStart ";
  9890. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  9891. //}
  9892. //if (se.CreateTimeEnd.HasValue)
  9893. //{
  9894. // selSql = selSql + " AND TP_PM_Defect.CreateTime<= :CreateTimeEnd ";
  9895. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  9896. //}
  9897. //selSql = selSql +
  9898. // "group by " +
  9899. // " rollup(TP_PM_Defect.DefectProcedureID, " +
  9900. // " TP_PM_Defect.DefectProcedureCode, " +
  9901. // " TP_PM_Defect.DefectProcedureName, " +
  9902. // " TP_PM_Defect.ProductionLineID, " +
  9903. // " TP_PM_Defect.ProductionLineCode, " +
  9904. // " TP_PM_Defect.ProductionLineName, " +
  9905. // " TP_PM_Defect.ProcedureID, " +
  9906. // " TP_PM_Defect.ProcedureCode," +
  9907. // " TP_PM_Defect.ProcedureName, " +
  9908. // " TP_PM_Defect.DefectCode, " +
  9909. // " TP_PM_Defect.DefectName, " +
  9910. // " TP_MST_DefectType.DefectTypeName, " +
  9911. // " TP_PM_Defect.Userid, " +
  9912. // " TP_PM_Defect.Usercode, " +
  9913. // " TP_PM_Defect.Username, " +
  9914. // " TP_MST_GoodsType.Goodstypename, " +
  9915. // " TP_PM_Defect.Goodsid, " +
  9916. // " TP_PM_Defect.Goodscode, " +
  9917. // " TP_PM_Defect.Goodsname " +
  9918. // " )) temp ) temp2 " +
  9919. // "where 1=1 " +
  9920. // "and ((Goodsname!='--' )" +
  9921. // "or (Goodsname='--' and defectcode='小计')" +
  9922. // "or (Goodsname='--' and DefectProcedurename='合计') " +
  9923. // "or (Goodsname='--' and DefectProcedureID='总计'))";
  9924. //////----------------------
  9925. ////if (!string.IsNullOrEmpty(se.CompleteProcedureIDS))
  9926. ////{
  9927. //// selSql = selSql + @" AND exists(select 1 from tp_pm_productiondata where (instr(','||:CompleteProcedureIDS||',',','||ProcedureID||',')>0 ";
  9928. //// parameters.Add(new OracleParameter(":CompleteProcedureIDS", OracleDbType.NVarchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  9929. //// selSql = selSql + " AND TP_PM_ProductionData.CreateTime>= :CompleteCreateTimeStart ";
  9930. //// parameters.Add(new OracleParameter(":CompleteCreateTimeStart", OracleDbType.Date, se.CompleteCreateTimeStart.Value, ParameterDirection.Input));
  9931. //// selSql = selSql + " AND TP_PM_ProductionData.CreateTime<= :CompleteCreateTimeEnd )) ";
  9932. //// parameters.Add(new OracleParameter(":CompleteCreateTimeEnd", OracleDbType.Date, se.CompleteCreateTimeEnd.Value, ParameterDirection.Input));
  9933. ////}
  9934. //////----------------------
  9935. //return selSql;
  9936. #endregion
  9937. string selSql =
  9938. "SELECT t.ProductionLineID\n" +
  9939. " ,t.ProductionLineCode\n" +
  9940. " ,decode(t.gid, 31, '总计', 0, t.ProductionLineName, '--') ProductionLineName\n" +
  9941. " ,t.ProcedureID\n" +
  9942. " ,t.ProcedureCode\n" +
  9943. " ,decode(t.gid, 0, t.ProcedureName, '--') ProcedureName\n" +
  9944. " ,t.DefectProcedureID\n" +
  9945. " ,t.DefectProcedureCode\n" +
  9946. " ,decode(t.gid,\n" +
  9947. " 7,\n" +
  9948. " '合计【' || t.DefectProcedureName || '】',\n" +
  9949. " 0,\n" +
  9950. " t.DefectProcedureName,\n" +
  9951. " '--') DefectProcedureName\n" +
  9952. " ,decode(t.gid, 0, t.DefectCode, '--') DefectCode\n" +
  9953. " ,decode(t.gid,\n" +
  9954. " 3,\n" +
  9955. " '小计【[' || t.DefectCode || ']' || t.DefectName || '】',\n" +
  9956. " 0,\n" +
  9957. " t.DefectName,\n" +
  9958. " '--') DefectName\n" +
  9959. " ,decode(t.gid, 0, t.DefectTypeName, '--') DefectTypeName\n" +
  9960. " --,decode(t.gid, 0, t.Userid, '--') Userid\n" +
  9961. " ,t.Userid\n" +
  9962. " ,decode(t.gid, 0, t.Usercode, '--') Usercode\n" +
  9963. " ,decode(t.gid, 0, t.Username, '--') Username\n" +
  9964. " ,decode(t.gid, 0, t.Goodstypename, '--') Goodstypename\n" +
  9965. " --,decode(t.gid, 0, t.Goodsid, '--') Goodsid\n" +
  9966. " ,t.Goodsid\n" +
  9967. " ,decode(t.gid, 0, t.Goodscode, '--') Goodscode\n" +
  9968. " ,decode(t.gid, 0, t.Goodsname, '--') Goodsname\n" +
  9969. " ,t.InCount\n" +
  9970. " FROM (SELECT grouping_id(pmd.ProductionLineID,\n" +
  9971. " pmd.DefectProcedureID,\n" +
  9972. " pmd.DefectCode,\n" +
  9973. " pmd.userid,\n" +
  9974. " pmd.goodsid) gid\n" +
  9975. " ,pmd.ProductionLineID\n" +
  9976. " ,pmd.ProductionLineCode\n" +
  9977. " ,pin.ProductionLineName\n" +
  9978. " ,pmd.ProcedureID\n" +
  9979. " ,pmd.ProcedureCode\n" +
  9980. // " ,pmd.ProcedureName\n" +
  9981. " ,pd.ProcedureName\n" + //工序名称显示 xcm 2023-3-23
  9982. " ,pmd.DefectProcedureID\n" +
  9983. " ,pmd.DefectProcedureCode\n" +
  9984. //" ,pmd.DefectProcedureName\n" +
  9985. " ,pdd.ProcedureName as DefectProcedureName\n" + //工序名称显示 xcm 2023-3-23
  9986. " ,pmd.DefectCode\n" +
  9987. //" ,pmd.DefectName\n" +
  9988. " ,MD.DefectName\n" + //缺陷名称显示 xcm 2023-4-11
  9989. " ,dt.DefectTypeName\n" +
  9990. " ,pmd.Userid\n" +
  9991. " ,pmd.Usercode\n" +
  9992. " ,pmd.Username\n" +
  9993. " ,gt.Goodstypename\n" +
  9994. " ,pmd.Goodsid\n" +
  9995. " ,pmd.Goodscode\n" +
  9996. " ,pmd.Goodsname\n" +
  9997. " ,COUNT(pmd.barcode) InCount\n" +
  9998. " FROM tp_pm_defect pmd\n" +
  9999. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gdd on gdd.BARCODE=pmd.BARCODE\n" +
  10000. " LEFT JOIN tp_mst_defect MD ON pmd.defectid = MD.defectid \n" + //缺陷名称显示 xcm 2023-4-11
  10001. " left join TP_PC_PRODUCTIONLINE pin on pmd.productionlineid = pin.productionlineid\n" +
  10002. //工序名称显示 xcm 2023-3-23 start
  10003. " LEFT join TP_PC_PROCEDURE pd\n" +
  10004. " on pmd.procedureid = pd.procedureid\n" +
  10005. " LEFT join TP_PC_PROCEDURE pdd\n" +
  10006. " on pmd.DefectProcedureID = pdd.procedureid\n" +
  10007. //end
  10008. " LEFT JOIN TP_MST_Goods g\n" +
  10009. " ON pmd.Goodsid = g.Goodsid\n" +
  10010. " LEFT JOIN TP_MST_GoodsType gt\n" +
  10011. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  10012. " LEFT JOIN TP_MST_Defect mstd\n" +
  10013. " ON pmd.DefectID = mstd.DefectID\n" +
  10014. " LEFT JOIN TP_MST_DefectType dt\n" +
  10015. " ON mstd.DefectTypeID = dt.DefectTypeID\n" +
  10016. //" INNER JOIN tp_pm_productiondata pd\n" +
  10017. //" ON pmd.ProductionDataID = pd.ProductionDataID\n" +
  10018. //"INNER JOIN (SELECT T.*\n" +
  10019. //" FROM (SELECT PD.*,\n" +
  10020. //" RANK() OVER(PARTITION BY PD.BARCODE, PD.KILNID ORDER BY PD.PRODUCTIONDATAID DESC) AS RK\n" +
  10021. //" FROM TP_PM_PRODUCTIONDATA PD\n" +
  10022. //" INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  10023. //" ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID\n" +
  10024. //" WHERE PD.VALUEFLAG = '1'\n" +
  10025. //" AND PD.MODELTYPE IN (-1, -4, -5)\n" +
  10026. //" AND PD.CREATETIME >= :CreateTimeStart\n" +
  10027. //" AND PD.CREATETIME <= :CreateTimeEnd\n" +
  10028. //" AND((:HandOverProcedureID IS NULL)\n" +
  10029. //" OR(:HandOverProcedureID = 1 AND(GDD.Twoleveltime IS NULL OR pd.createtime < GDD.Twoleveltime))\n" +
  10030. //" OR(:HandOverProcedureID = 5 AND GDD.Twoleveltime IS NOT NULL AND pd.createtime >= GDD.Twoleveltime)) ) T\n" +
  10031. //" WHERE T.RK <= 1) PD\n" +
  10032. //" ON PMD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  10033. " INNER JOIN TP_PM_PRODUCTIONDATA PD\n" +
  10034. " ON PMD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  10035. " AND PD.MODELTYPE IN (-1, -4, -5)\n" +
  10036. //" AND PD.CHECKBATCHNO = 1\n" +
  10037. " AND PD.VALUEFLAG = '1'\n";
  10038. if (se.TestCheckbatchon == "1")
  10039. {
  10040. selSql += " AND PD.CHECKBATCHNO = 1 \n";
  10041. }
  10042. if (se.HandOverProcedureID == 1)
  10043. {
  10044. selSql += " AND PD.ISREFIRE = '0' \n";
  10045. }
  10046. else
  10047. {
  10048. selSql += " AND PD.ISREFIRE = '6' \n";
  10049. }
  10050. selSql +=
  10051. " -- 交接工序\n" +
  10052. " INNER JOIN tp_pm_productiondata hopd\n" +
  10053. //" ON hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" +
  10054. " ON hopd.barcode = pd.barcode\n" +
  10055. " AND hopd.kilncarbatchno = pd.kilncarbatchno\n" +
  10056. // 恒洁三车间特殊处理(质量相关)
  10057. //" AND hopd.valueflag = '1'\n" +
  10058. " AND ((:HandOverProcedureID = 1 AND ((hopd.procedureid = 11 AND hopd.valueflag = '1') OR (hopd.procedureid =104 AND hopd.isrefire = '0' AND hopd.checkflag = '1'))) \n" +
  10059. " OR (:HandOverProcedureID = 5 AND ((hopd.procedureid = 58 AND hopd.valueflag = '1') OR (hopd.procedureid =104 AND hopd.isrefire = '6' AND hopd.checkflag = '1'))) \n" +
  10060. " OR (:HandOverProcedureID not in (1,5) AND hopd.valueflag = '1' AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID)))\n";
  10061. //" AND HOPD.PROCEDUREID IN (11, 104)\n";
  10062. // end
  10063. if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 1)
  10064. {
  10065. selSql = selSql + " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL TEST ON TEST.barcode = pd.barcode\n " +
  10066. " WHERE pmd.valueflag = '1' \n" +
  10067. //" AND pd.ModelType = -1\n" +
  10068. " AND TEST.TESTFORMFLAG IN (1)\n" +
  10069. " AND pmd.AccountID = :AccountID\n";
  10070. }
  10071. else if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 2)
  10072. {
  10073. selSql = selSql + " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL TEST ON TEST.barcode = pd.barcode\n " +
  10074. " WHERE pmd.valueflag = '1' \n" +
  10075. //" AND pd.ModelType = -1\n" +
  10076. " AND TEST.TESTFORMFLAG IN (2)\n" +
  10077. " AND pmd.AccountID = :AccountID\n";
  10078. }
  10079. //非研发实验单 查0和1
  10080. else if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 3)
  10081. {
  10082. selSql = selSql + " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL TEST ON TEST.barcode = pd.barcode\n " +
  10083. " WHERE pmd.valueflag = '1' \n" +
  10084. //" AND pd.ModelType = -1\n" +
  10085. " AND (TEST.TESTFORMFLAG IS NULL OR TEST.TESTFORMFLAG =1)\n" +
  10086. " AND pmd.AccountID = :AccountID\n";
  10087. }
  10088. else
  10089. {
  10090. selSql = selSql + " WHERE pmd.valueflag = '1' \n" +
  10091. //" AND pd.ModelType = -1\n" +
  10092. " AND pmd.AccountID = :AccountID\n";
  10093. }
  10094. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  10095. parameters.Add(new OracleParameter(":HandOverProcedureID", OracleDbType.Int32, se.HandOverProcedureID, ParameterDirection.Input));
  10096. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  10097. {
  10098. selSql = selSql + " AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1 ";
  10099. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  10100. }
  10101. if (!string.IsNullOrEmpty(se.LineIDS))
  10102. {
  10103. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pmd.ProductionLineId||',')>0 ";
  10104. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  10105. }
  10106. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  10107. {
  10108. //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  10109. selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||pmd.DefectProcedureID||',')>0 ) ";
  10110. parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  10111. }
  10112. else
  10113. {
  10114. // modify by chenxy :没有选择时,应全查询出来。
  10115. //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  10116. }
  10117. if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  10118. {
  10119. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||pmd.ProcedureID||',')>0 ";
  10120. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  10121. }
  10122. if (!string.IsNullOrEmpty(se.KilnCode))
  10123. {
  10124. selSql = selSql + " AND instr(pd.KilnCode,:KilnCode) >0 ";
  10125. parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  10126. }
  10127. if (!string.IsNullOrEmpty(se.GoodsIDS))
  10128. {
  10129. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||pmd.Goodsid||',')>0 ";
  10130. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  10131. }
  10132. if (!string.IsNullOrEmpty(se.GoodsCode))
  10133. {
  10134. selSql = selSql + " AND instr(pmd.goodsCode,:GoodsCode) >0 ";
  10135. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  10136. }
  10137. if (!string.IsNullOrEmpty(se.DefectUserCode))
  10138. {
  10139. selSql = selSql + " AND instr(pmd.DefectUserCode,:DefectUserCode) >0 ";
  10140. parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  10141. }
  10142. if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  10143. {
  10144. selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||dt.DefectTypeID||',')>0 ";
  10145. parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  10146. }
  10147. if (!string.IsNullOrEmpty(se.DefectCode))
  10148. {
  10149. selSql = selSql + " AND instr(pmd.DefectCode,:DefectCode) >0 ";
  10150. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  10151. }
  10152. if (!string.IsNullOrEmpty(se.DefectName))
  10153. {
  10154. selSql = selSql + " AND instr(pmd.DefectName,:DefectName) >0 ";
  10155. parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  10156. }
  10157. if (!string.IsNullOrEmpty(se.CheckUserCode))
  10158. {
  10159. selSql = selSql + " AND instr(pmd.UserCode,:UserCode) >0";
  10160. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  10161. }
  10162. if (se.CreateTimeStart.HasValue)
  10163. {
  10164. selSql = selSql + " AND pmd.CreateTime>= :CreateTimeStart ";
  10165. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  10166. }
  10167. if (se.CreateTimeEnd.HasValue)
  10168. {
  10169. selSql = selSql + " AND pmd.CreateTime<= :CreateTimeEnd ";
  10170. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  10171. }
  10172. // 交接时间
  10173. if (se.HandOverTimeStart.HasValue)
  10174. {
  10175. selSql = selSql + " AND hopd.CreateTime>= :HandOverTimeStart ";
  10176. parameters.Add(new OracleParameter(":HandOverTimeStart", OracleDbType.Date, se.HandOverTimeStart.Value, ParameterDirection.Input));
  10177. }
  10178. if (se.HandOverTimeEnd.HasValue)
  10179. {
  10180. selSql = selSql + " AND hopd.CreateTime<= :HandOverTimeEnd ";
  10181. parameters.Add(new OracleParameter(":HandOverTimeEnd", OracleDbType.Date, se.HandOverTimeEnd.Value, ParameterDirection.Input));
  10182. }
  10183. selSql += " AND (:RECYCLINGFLAG IS NULL OR gdd.RECYCLINGFLAG = :RECYCLINGFLAG)";
  10184. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.NVarchar2, se.TestRecyclingflag, ParameterDirection.Input));
  10185. selSql = selSql +
  10186. " GROUP BY GROUPING SETS((pmd.ProductionLineID, pmd.ProductionLineCode, pin.ProductionLineName, pmd.ProcedureID, pmd.ProcedureCode, pd.ProcedureName, pmd.DefectProcedureID, pmd.DefectProcedureCode, pdd.ProcedureName, pmd.DefectCode, MD.DefectName, dt.DefectTypeName, pmd.Userid, pmd.Usercode, pmd.Username, gt.Goodstypename, pmd.Goodsid, pmd.Goodscode, pmd.Goodsname),(pmd.ProductionLineID, pmd.ProductionLineCode, pin.ProductionLineName, pmd.ProcedureID, pmd.ProcedureCode, pd.ProcedureName, pmd.DefectProcedureID, pmd.DefectProcedureCode, pdd.ProcedureName, pmd.DefectCode, MD.DefectName, dt.DefectTypeName),(pmd.ProductionLineID, pmd.ProductionLineCode, pin.ProductionLineName, pmd.ProcedureID, pmd.ProcedureCode, pd.ProcedureName, pmd.DefectProcedureID, pmd.DefectProcedureCode, pdd.ProcedureName),())\n" +
  10187. " ORDER BY pmd.ProductionLineCode\n" +
  10188. " ,pmd.ProcedureCode\n" +
  10189. " ,pmd.DefectProcedureCode\n" +
  10190. " ,pmd.DefectCode\n" +
  10191. " ,pmd.Usercode\n" +
  10192. " ,pmd.Goodscode) t";
  10193. return selSql;
  10194. }
  10195. /// <summary>
  10196. /// 取得RPT030106(成检缺陷汇总表-明细)的汇总信息查询数据
  10197. /// </summary>
  10198. /// <param name="user">登录用户信息</param>
  10199. /// <param name="se">查询条件</param>
  10200. /// <returns>查询结果</returns>
  10201. public static ServiceResultEntity GetRPT030106IData(SUserInfo user, RPT030106_SE se)
  10202. {
  10203. IDBConnection conn = null;
  10204. try
  10205. {
  10206. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  10207. List<OracleParameter> parameters = new List<OracleParameter>();
  10208. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030106ISQL(user, se, ref parameters));
  10209. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  10210. ServiceResultEntity sre = new ServiceResultEntity();
  10211. if (data == null || data.Rows.Count == 0)
  10212. {
  10213. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  10214. return sre;
  10215. }
  10216. sre.Data = new DataSet();
  10217. sre.Data.Tables.Add(data);
  10218. return sre;
  10219. }
  10220. catch (Exception ex)
  10221. {
  10222. throw ex;
  10223. }
  10224. finally
  10225. {
  10226. if (conn != null &&
  10227. conn.ConnState == ConnectionState.Open)
  10228. {
  10229. conn.Close();
  10230. }
  10231. }
  10232. }
  10233. /// <summary>
  10234. /// 获取RPT030106画面(成检缺陷汇总表-明细)的汇总信息查询sql
  10235. /// </summary>
  10236. /// <returns>sql</returns>
  10237. private static string GetRPT030106ISQL(SUserInfo user, RPT030106_SE se, ref List<OracleParameter> parameters)
  10238. {
  10239. // string selSql = @"select
  10240. // tp_pm_defect.productionlinename,
  10241. // tp_pm_defect.procedurename,
  10242. // tp_pm_defect.DefectProcedureCode,
  10243. // tp_pm_defect.DefectProcedureName,
  10244. // tp_pm_defect.DefectUserCode,
  10245. // tp_pm_defect.defectusername,
  10246. // tp_mst_defectType.DefectTypeName,
  10247. // TP_MST_Defect.Remarks DefectRemarks,
  10248. // tp_pm_defect.defectcode,
  10249. // tp_pm_defect.defectname,
  10250. // tp_pm_defect.UserCode,
  10251. // tp_pm_defect.username,
  10252. // tp_mst_goodstype.Goodstypename,
  10253. // tp_pm_defect.goodscode,
  10254. // tp_pm_defect.barcode,
  10255. // tp_pm_productiondata.groutingdate,
  10256. // tp_pm_productiondata.groutingnum,
  10257. // tp_pm_productiondata.groutingMouldCode,
  10258. // tp_pm_productiondata.KilnCarCode,
  10259. // tp_pm_productiondata.Procedureid,
  10260. // decode(TP_PM_ProductionData.Goodsleveltypeid, '4', '正品' , '5','副品','6','重烧','7','次品','') as Goodsleveltype,
  10261. // tp_pm_defect.DefectPositionCode,
  10262. // tp_pm_defect.DefectPositionName,
  10263. // tp_pm_productiondata.GroutingUserCode,
  10264. // --replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName
  10265. // decode(TP_MST_Logo.Logocode, null, null,TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']')) as LogoCodeName
  10266. // ,TP_PM_Defect.CreateTime
  10267. // ,(select listagg(to_char(pd.UserCode), ',') within GROUP(ORDER BY pd.ProductionDataID) AS WorkUserCodes from tp_pm_ProductionData pd where pd.barcode = tp_pm_defect.barcode and pd.valueflag = '1' ) AS WorkUserCodes
  10268. // ,TP_MST_DefectFine.DefectFineCode
  10269. // ,TP_PM_Defect.DefectDeductionNum
  10270. // from tp_pm_defect
  10271. // left join TP_MST_Goods
  10272. // on TP_PM_Defect.Goodsid=TP_MST_Goods.Goodsid
  10273. // left join TP_MST_GoodsType
  10274. // on TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID
  10275. // left join TP_MST_Defect
  10276. // on TP_PM_Defect.DefectID=TP_MST_Defect.DefectID
  10277. // left join TP_MST_DefectType
  10278. // on TP_MST_Defect.DefectTypeID=TP_MST_DefectType.DefectTypeID
  10279. // inner join tp_pm_productiondata
  10280. // on tp_pm_defect.ProductionDataID=tp_pm_productiondata.ProductionDataID
  10281. // left join TP_MST_DefectFine
  10282. // on tp_pm_defect.DefectFine=TP_MST_DefectFine.DefectFineID
  10283. // left join tp_mst_logo
  10284. // on tp_pm_productiondata.logoid=tp_mst_logo.logoid";
  10285. // 质量登记改判时,缺陷的登记时间是当前时间,不是交接或前次登记时间。
  10286. // 追加交接时间,改判标识。
  10287. string selSql =
  10288. "SELECT pin.productionlinename\n" +
  10289. // " ,pmd.procedurename\n" +
  10290. " ,pdd.procedurename\n" + //工序名称显示 xcm 2023-33-23
  10291. " ,pmd.DefectProcedureCode\n" +
  10292. // " ,pmd.DefectProcedureName\n" +
  10293. " ,ppdd.procedurename as DefectProcedureName\n" +//工序名称显示 xcm 2023-33-23
  10294. " ,pmd.DefectUserCode\n" +
  10295. " ,pmd.defectusername\n" +
  10296. " ,dt.DefectTypeName\n" +
  10297. " ,mstd.Remarks DefectRemarks\n" +
  10298. " ,pmd.defectcode\n" +
  10299. //" ,d.alldefectcode\n" +
  10300. " ,(SELECT listagg(to_char(def.defectcode), ',') within GROUP(ORDER BY def.PRODUCTIONDEFECTID) AS alldefectcode\n" +
  10301. " FROM tp_pm_defect def\n" +
  10302. " WHERE def.barcode = pmd.barcode\n" +
  10303. " AND def.productiondataid = pmd.productiondataid\n" +
  10304. " AND def.valueflag = '1') AS alldefectcode\n" +
  10305. // " ,pmd.defectname\n" +
  10306. " ,MD.defectname\n" + //缺陷名称显示 xcm 2023-4-11
  10307. " ,pmd.UserCode\n" +
  10308. " ,pmd.username\n" +
  10309. " ,gt.Goodstypename\n" +
  10310. " ,pmd.goodscode\n" +
  10311. " ,pmd.barcode\n" +
  10312. " ,pd.groutingdate\n" +
  10313. " ,pd.groutingnum\n" +
  10314. " ,pd.groutingMouldCode\n" +
  10315. " ,pd.groutingLineCode\n" +
  10316. " ,pd.KilnCarCode\n" +
  10317. " ,pd.Procedureid\n" +
  10318. " ,gl.goodslevelname Goodsleveltype\n" +
  10319. " ,pmd.DefectPositionCode\n" +
  10320. // " ,pmd.DefectPositionName\n" +
  10321. " ,mdp.DefectPositionName\n" +//缺陷位置显示 xcm 2023-4-11
  10322. " ,pd.GroutingUserCode\n" +
  10323. " , CASE\n" +
  10324. " WHEN logo.logoid IS NULL THEN\n" +
  10325. " NULL\n" +
  10326. " ELSE\n" +
  10327. " logo.Logoname || '[' || logo.Logocode || ']'\n" +
  10328. " END AS LogoCodeName\n" +
  10329. " ,pmd.CreateTime\n" +
  10330. " ,mstdf.DefectFineCode\n" +
  10331. " ,pmd.DefectDeductionNum\n" +
  10332. //" ,to_char(pmd.DefectDeductionNum, '990.00') DefectDeductionNum\n" +
  10333. " ,hopd.createtime handovertime\n" +
  10334. " ,(SELECT listagg(to_char(pduc.UserCode), ',') within GROUP(ORDER BY pduc.ProductionDataID) AS WorkUserCodes\n" +
  10335. " FROM tp_pm_ProductionData pduc\n" +
  10336. " WHERE pduc.barcode = pmd.barcode\n" +
  10337. " AND pduc.valueflag = '1') AS WorkUserCodes\n" +
  10338. //" ,(SELECT listagg(to_char(u.UserCode), ',') within GROUP(ORDER BY pdcu.ProductionDataID) AS CreateUserCodes\n" +
  10339. //" FROM tp_pm_ProductionData pdcu\n" +
  10340. //" Left join tp_mst_user u on u.userid = pdcu.createuserid\n" +
  10341. //" WHERE pdcu.barcode = pmd.barcode\n" +
  10342. //" AND pdcu.valueflag = '1') AS CreateUserCodes\n" +
  10343. " , null AS CreateUserCodes\n" +
  10344. " , CASE\n" +
  10345. " WHEN EXISTS (SELECT 1\n" +
  10346. " FROM tp_pm_ProductionData pdud\n" +
  10347. " WHERE pdud.barcode = pmd.barcode\n" +
  10348. " AND pdud.modeltype in( -1, -4, -5)\n" +
  10349. " AND pdud.procedureid = pd.procedureid\n" +
  10350. " AND pdud.kilncarbatchno = pd.kilncarbatchno\n" +
  10351. " AND pdud.valueflag = '0') THEN\n" +
  10352. " 1\n" +
  10353. " ELSE\n" +
  10354. " 0\n" +
  10355. " END AS undoflag\n" +
  10356. //" , case when pd.checkflag = '1' then 0 else 1 end AS undoflag\n" +
  10357. " , CASE\n" +
  10358. " WHEN EXISTS (SELECT 1\n" +
  10359. " FROM tp_pm_semicheck sc\n" +
  10360. " WHERE sc.barcode = pmd.barcode\n" +
  10361. " AND sc.SEMICHECKTYPE = 1\n" +
  10362. " AND sc.valueflag = '1') THEN\n" +
  10363. " 1\n" +
  10364. " ELSE\n" +
  10365. " 0\n" +
  10366. " END reworkflag" +
  10367. " ,gdd.glazingroom" +
  10368. " ,gdd.testmouldflag" +
  10369. " ,SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) -1 ) AS Kcode\n";
  10370. if (!string.IsNullOrEmpty(se.Fyear))
  10371. {
  10372. selSql += " ,SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) -1 ) AS Fyear\n";
  10373. }
  10374. selSql +=
  10375. " ,tmdd.DICTIONARYVALUE AS KilnLocation,\n" +
  10376. " CASE "+
  10377. " WHEN gdd.TESTFORMFLAG IS NULL THEN NULL "+
  10378. " WHEN gdd.TESTFORMFLAG = 1 THEN '实验单' "+
  10379. " ELSE '研发实验单' "+
  10380. " END AS TESTFORMFLAG "+
  10381. " FROM tp_pm_defect pmd\n" +
  10382. " INNER JOIN TP_PM_PRODUCTIONDATA PD\n" +
  10383. " ON PMD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  10384. " AND PD.MODELTYPE IN (-1, -4, -5)\n" +
  10385. //" AND PD.CHECKBATCHNO = 1\n" +
  10386. " AND PD.VALUEFLAG = '1'\n";
  10387. if (se.TestCheckbatchon == "1")
  10388. {
  10389. selSql += " AND PD.CHECKBATCHNO = 1 \n";
  10390. }
  10391. if (se.HandOverProcedureID == 1)
  10392. {
  10393. selSql += " AND PD.ISREFIRE = '0' \n";
  10394. }
  10395. else
  10396. {
  10397. selSql += " AND PD.ISREFIRE = '6' \n";
  10398. }
  10399. selSql +=
  10400. " LEFT JOIN tp_mst_defect MD ON pmd.defectid = MD.defectid \n" + //缺陷名称显示 xcm 2023-4-11
  10401. " LEFT JOIN tp_mst_defectposition mdp on pmd.defectpositionid = mdp.defectpositionid \n" + //缺陷位置显示 xcm 2023-4-11
  10402. " left join TP_PC_PRODUCTIONLINE pin on pmd.productionlineid = pin.productionlineid" +
  10403. //工序名称显示 xcm 2023-3-23
  10404. " left join TP_PC_PROCEDURE pdd\n" +
  10405. " on pdd.procedureid = pmd.procedureid\n" +
  10406. " left join TP_PC_PROCEDURE ppdd\n" +
  10407. " on ppdd.procedureid = pmd.DefectProcedureID\n" +
  10408. //end
  10409. " LEFT JOIN TP_MST_Goods g\n" +
  10410. " ON pmd.Goodsid = g.Goodsid\n" +
  10411. " LEFT JOIN TP_MST_GoodsType gt\n" +
  10412. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  10413. " LEFT JOIN TP_MST_Defect mstd\n" +
  10414. " ON pmd.DefectID = mstd.DefectID\n" +
  10415. " LEFT JOIN TP_MST_DefectType dt\n" +
  10416. " ON mstd.DefectTypeID = dt.DefectTypeID\n" +
  10417. //" INNER JOIN tp_pm_productiondata pd\n" +
  10418. //" ON pmd.ProductionDataID = pd.ProductionDataID\n" +
  10419. //"INNER JOIN (SELECT T.*\n" +
  10420. //" FROM (SELECT PD.*,\n" +
  10421. //" RANK() OVER(PARTITION BY PD.BARCODE, PD.KILNID ORDER BY PD.PRODUCTIONDATAID DESC) AS RK\n" +
  10422. //" FROM TP_PM_PRODUCTIONDATA PD\n" +
  10423. //" INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  10424. //" ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID\n" +
  10425. //" WHERE PD.VALUEFLAG = '1'\n" +
  10426. //" AND PD.MODELTYPE IN (-1, -4, -5)\n" +
  10427. //" AND PD.CREATETIME >= :CreateTimeStart\n" +
  10428. //" AND PD.CREATETIME <= :CreateTimeEnd"+
  10429. //" AND((:HandOverProcedureID IS NULL)\n" +
  10430. //" OR(:HandOverProcedureID = 1 AND(GDD.Twoleveltime IS NULL OR pd.createtime < GDD.Twoleveltime))\n" +
  10431. //" OR(:HandOverProcedureID = 5 AND GDD.Twoleveltime IS NOT NULL AND pd.createtime >= GDD.Twoleveltime)) ) T\n" +
  10432. //" WHERE T.RK <= 1) PD\n" +
  10433. //" ON PMD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  10434. " LEFT JOIN TP_PM_GroutingDailyDetail gdd\n" +
  10435. " ON gdd.Groutingdailydetailid = pd.Groutingdailydetailid\n" +
  10436. " LEFT JOIN tp_mst_goodslevel gl\n" +
  10437. " ON pd.goodslevelid = gl.goodslevelid\n" +
  10438. "-- 交接工序\n" +
  10439. " INNER JOIN tp_pm_productiondata hopd\n" +
  10440. " ON hopd.kilncarbatchno = pd.kilncarbatchno\n " +
  10441. " AND hopd.barcode = pd.barcode\n" +
  10442. //" AND hopd.valueflag = '1'\n" +
  10443. //" AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" +
  10444. // 恒洁三车间特殊处理(质量相关)
  10445. //" AND hopd.valueflag = '1'\n" +
  10446. " AND ((:HandOverProcedureID = 1 AND ((hopd.procedureid = 11 AND hopd.valueflag = '1') OR (hopd.procedureid =104 AND hopd.isrefire = '0' AND hopd.checkflag = '1'))) \n" +
  10447. " OR (:HandOverProcedureID = 5 AND ((hopd.procedureid = 58 AND hopd.valueflag = '1') OR (hopd.procedureid =104 AND hopd.isrefire = '6' AND hopd.checkflag = '1'))) \n" +
  10448. " OR (:HandOverProcedureID not in (1,5) AND hopd.valueflag = '1' AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID)))\n" +
  10449. //" AND HOPD.PROCEDUREID IN (11, 104)\n" +
  10450. // end
  10451. " LEFT JOIN TP_MST_DefectFine mstdf\n" +
  10452. " ON pmd.DefectFine = mstdf.DefectFineID\n" +
  10453. " LEFT JOIN tp_mst_logo logo\n" +
  10454. " ON pd.logoid = logo.logoid\n" +
  10455. " LEFT JOIN TP_MST_DATADICTIONARY tmdd ON pd.kilncarposition = tmdd.dictionaryid \n" +
  10456. " AND tmdd.dictionarytype = 'TPC003' \n";
  10457. //" LEFT JOIN (SELECT def.barcode, wmsys.wm_concat( to_char(def.defectcode)) alldefectcode\n" +
  10458. //" FROM tp_pm_defect def\n" +
  10459. //" WHERE def.valueflag = '1'\n" +
  10460. ////def.createtime
  10461. //" group by def.barcode ) d\n" +
  10462. //" ON d.barcode = pmd.barcode\n" +
  10463. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  10464. parameters.Add(new OracleParameter(":HandOverProcedureID", OracleDbType.Int32, se.HandOverProcedureID, ParameterDirection.Input));
  10465. if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 1)
  10466. {
  10467. selSql = selSql + " WHERE pmd.valueflag = '1' \n" +
  10468. //" AND pd.ModelType = -1\n" +
  10469. " AND gdd.TESTFORMFLAG in (1)\n" +
  10470. " AND pmd.AccountID = :AccountID\n";
  10471. }
  10472. else if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 2)
  10473. {
  10474. selSql = selSql + " WHERE pmd.valueflag = '1' \n" +
  10475. //" AND pd.ModelType = -1\n" +
  10476. " AND gdd.TESTFORMFLAG in (2)\n" +
  10477. " AND pmd.AccountID = :AccountID\n";
  10478. }
  10479. //非研发实验单 查0和1
  10480. else if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 3)
  10481. {
  10482. selSql = selSql + " WHERE pmd.valueflag = '1' \n" +
  10483. //" AND pd.ModelType = -1\n" +
  10484. " AND (gdd.TESTFORMFLAG IS NULL OR gdd.TESTFORMFLAG =1)\n" +
  10485. " AND pmd.AccountID = :AccountID\n";
  10486. }
  10487. else
  10488. {
  10489. selSql = selSql + " WHERE pmd.valueflag = '1' \n" +
  10490. //" AND pd.ModelType = -1\n" +
  10491. " AND pmd.AccountID = :AccountID\n";
  10492. }
  10493. //selSql = selSql +
  10494. // " Where TP_PM_Defect.valueflag='1' and tp_pm_productiondata.ModelType=-1" +
  10495. // " and TP_PM_Defect.AccountID=:AccountID ";
  10496. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  10497. {
  10498. selSql = selSql + " AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1 ";
  10499. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  10500. }
  10501. if (!string.IsNullOrEmpty(se.LineIDS))
  10502. {
  10503. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pmd.ProductionLineId||',')>0 ";
  10504. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  10505. }
  10506. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  10507. {
  10508. //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  10509. selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||pmd.DefectProcedureID||',')>0 ) ";
  10510. parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  10511. }
  10512. else
  10513. {
  10514. // modify by chenxy :没有选择时,应全查询出来。
  10515. //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  10516. }
  10517. if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  10518. {
  10519. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||pmd.ProcedureID||',')>0 ";
  10520. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  10521. }
  10522. if (!string.IsNullOrEmpty(se.KilnCode))
  10523. {
  10524. selSql = selSql + " AND instr(pd.KilnCode,:KilnCode) >0 ";
  10525. parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  10526. }
  10527. if (!string.IsNullOrEmpty(se.GoodsIDS))
  10528. {
  10529. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||pmd.Goodsid||',')>0 ";
  10530. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  10531. }
  10532. if (!string.IsNullOrEmpty(se.GoodsCode))
  10533. {
  10534. selSql = selSql + " AND instr(pmd.goodsCode,:GoodsCode) >0 ";
  10535. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  10536. }
  10537. if (!string.IsNullOrEmpty(se.Kcode))
  10538. {
  10539. selSql = selSql + " AND SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) -1 ) = :Kcode ";
  10540. parameters.Add(new OracleParameter(":Kcode", OracleDbType.NVarchar2, se.Kcode.PadLeft(3, '0'), ParameterDirection.Input));
  10541. }
  10542. if (!string.IsNullOrEmpty(se.Fyear))
  10543. {
  10544. selSql = selSql + " AND SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) -1 ) = :Fyear ";
  10545. parameters.Add(new OracleParameter(":Fyear", OracleDbType.NVarchar2, se.Fyear, ParameterDirection.Input));
  10546. }
  10547. if (!string.IsNullOrEmpty(se.GoodsCodeS2D))
  10548. {
  10549. selSql = selSql + " AND pmd.goodsCode = :GoodsCodeS2D ";
  10550. parameters.Add(new OracleParameter(":GoodsCodeS2D", OracleDbType.NVarchar2, se.GoodsCodeS2D, ParameterDirection.Input));
  10551. }
  10552. if (!string.IsNullOrEmpty(se.DefectUserCode))
  10553. {
  10554. selSql = selSql + " AND instr(pmd.DefectUserCode,:DefectUserCode) >0 ";
  10555. parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  10556. }
  10557. if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  10558. {
  10559. selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||dt.DefectTypeID||',')>0 ";
  10560. parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  10561. }
  10562. if (!string.IsNullOrEmpty(se.DefectCode))
  10563. {
  10564. selSql = selSql + " AND instr(pmd.DefectCode,:DefectCode) >0 ";
  10565. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  10566. }
  10567. if (!string.IsNullOrEmpty(se.DefectCodeS2D))
  10568. {
  10569. selSql = selSql + " AND pmd.DefectCode = :DefectCodeS2D ";
  10570. parameters.Add(new OracleParameter(":DefectCodeS2D", OracleDbType.NVarchar2, se.DefectCodeS2D, ParameterDirection.Input));
  10571. }
  10572. if (!string.IsNullOrEmpty(se.DefectName))
  10573. {
  10574. selSql = selSql + " AND instr(pmd.DefectName,:DefectName) >0 ";
  10575. parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  10576. }
  10577. if (!string.IsNullOrEmpty(se.CheckUserCode))
  10578. {
  10579. selSql = selSql + " AND instr(pmd.UserCode,:UserCode) >0";
  10580. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  10581. }
  10582. if (!string.IsNullOrEmpty(se.CheckUserCodeS2D))
  10583. {
  10584. selSql = selSql + " AND pmd.UserCode = :CheckUserCodeS2D ";
  10585. parameters.Add(new OracleParameter(":CheckUserCodeS2D", OracleDbType.NVarchar2, se.CheckUserCodeS2D, ParameterDirection.Input));
  10586. }
  10587. // 登记时间(缺陷)
  10588. if (se.CreateTimeStart.HasValue)
  10589. {
  10590. selSql = selSql + " AND pmd.CreateTime>= :CreateTimeStart ";
  10591. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  10592. }
  10593. if (se.CreateTimeEnd.HasValue)
  10594. {
  10595. selSql = selSql + " AND pmd.CreateTime<= :CreateTimeEnd ";
  10596. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  10597. }
  10598. // 交接时间
  10599. if (se.HandOverTimeStart.HasValue)
  10600. {
  10601. selSql = selSql + " AND hopd.CreateTime>= :HandOverTimeStart ";
  10602. parameters.Add(new OracleParameter(":HandOverTimeStart", OracleDbType.Date, se.HandOverTimeStart.Value, ParameterDirection.Input));
  10603. }
  10604. if (se.HandOverTimeEnd.HasValue)
  10605. {
  10606. selSql = selSql + " AND hopd.CreateTime<= :HandOverTimeEnd ";
  10607. parameters.Add(new OracleParameter(":HandOverTimeEnd", OracleDbType.Date, se.HandOverTimeEnd.Value, ParameterDirection.Input));
  10608. }
  10609. // 试验标识
  10610. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  10611. {
  10612. selSql += " AND gdd.TestMouldFlag = :TestMouldFlag ";
  10613. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  10614. }
  10615. // 试验标识
  10616. if (!string.IsNullOrEmpty(se.TestRecyclingflag))
  10617. {
  10618. selSql += " AND gdd.RECYCLINGFLAG = :RECYCLINGFLAG ";
  10619. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Char, se.TestRecyclingflag, ParameterDirection.Input));
  10620. }
  10621. //if (!string.IsNullOrEmpty(se.PurViewUserCodeIDS))
  10622. //{
  10623. // selSql = selSql + " AND instr(','||:PurViewUserCodeIDS||',',','||TP_PM_Defect.DefectUserID||',')>0 ";
  10624. // parameters.Add(new OracleParameter(":PurViewUserCodeIDS", OracleDbType.NVarchar2, se.PurViewUserCodeIDS, ParameterDirection.Input));
  10625. //}
  10626. ////----------------------
  10627. //if (!string.IsNullOrEmpty(se.CompleteProcedureIDS))
  10628. //{
  10629. // selSql = selSql + @" AND exists(select 1 from tp_pm_productiondata where (instr(','||:CompleteProcedureIDS||',',','||ProcedureID||',')>0 ";
  10630. // parameters.Add(new OracleParameter(":CompleteProcedureIDS", OracleDbType.NVarchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  10631. // selSql = selSql + " AND TP_PM_ProductionData.CreateTime>= :CompleteCreateTimeStart ";
  10632. // parameters.Add(new OracleParameter(":CompleteCreateTimeStart", OracleDbType.Date, se.CompleteCreateTimeStart.Value, ParameterDirection.Input));
  10633. // selSql = selSql + " AND TP_PM_ProductionData.CreateTime<= :CompleteCreateTimeEnd )) ";
  10634. // parameters.Add(new OracleParameter(":CompleteCreateTimeEnd", OracleDbType.Date, se.CompleteCreateTimeEnd.Value, ParameterDirection.Input));
  10635. //}
  10636. ////----------------------
  10637. selSql = selSql + " order by pmd.productionlinename,pmd.procedurename,pmd.defectprocedurename,pmd.defectusercode ";
  10638. return selSql;
  10639. }
  10640. /// <summary>
  10641. /// 取得RPT030106(成检缺陷汇总表-缺陷登记明细)的汇总信息查询数据
  10642. /// </summary>
  10643. /// <param name="user">登录用户信息</param>
  10644. /// <param name="se">查询条件</param>
  10645. /// <returns>查询结果</returns>
  10646. public static ServiceResultEntity GetRPT030106DData(SUserInfo user, RPT030106_SE se)
  10647. {
  10648. IDBConnection conn = null;
  10649. try
  10650. {
  10651. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  10652. List<OracleParameter> parameters = new List<OracleParameter>();
  10653. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030106DSQL(user, se, ref parameters));
  10654. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  10655. ServiceResultEntity sre = new ServiceResultEntity();
  10656. if (data == null || data.Rows.Count == 0)
  10657. {
  10658. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  10659. return sre;
  10660. }
  10661. sre.Data = new DataSet();
  10662. sre.Data.Tables.Add(data);
  10663. return sre;
  10664. }
  10665. catch (Exception ex)
  10666. {
  10667. throw ex;
  10668. }
  10669. finally
  10670. {
  10671. if (conn != null &&
  10672. conn.ConnState == ConnectionState.Open)
  10673. {
  10674. conn.Close();
  10675. }
  10676. }
  10677. }
  10678. /// <summary>
  10679. /// 获取RPT030106画面(成检缺陷汇总表-缺陷登记明细)的汇总信息查询sql
  10680. /// </summary>
  10681. /// <returns>sql</returns>
  10682. private static string GetRPT030106DSQL(SUserInfo user, RPT030106_SE se, ref List<OracleParameter> parameters)
  10683. {
  10684. // 质量登记改判时,缺陷的登记时间是当前时间,不是交接或前次登记时间。
  10685. // 追加交接时间,改判标识。
  10686. string selSql = @"SELECT pin.productionlinename
  10687. ,p.procedurename
  10688. ,pmd.DefectProcedureCode
  10689. ,pdd.procedurename as DefectProcedureName
  10690. ,pmd.DefectUserCode
  10691. ,pmd.defectusername
  10692. ,jobs.jobsname defectjobsname
  10693. ,dt.DefectTypeName
  10694. ,mstd.Remarks DefectRemarks
  10695. ,pd.Remarks barcodeRemarks
  10696. ,pmd.defectcode
  10697. ,(SELECT listagg(to_char(def.defectcode), ',') within GROUP(ORDER BY def.PRODUCTIONDEFECTID) AS alldefectcode
  10698. FROM tp_pm_defect def
  10699. WHERE def.barcode = pmd.barcode
  10700. AND def.productiondataid = pmd.productiondataid
  10701. AND def.valueflag = '1') AS alldefectcode
  10702. ,MD.defectname
  10703. ,pmd.UserCode
  10704. ,pmd.username
  10705. ,gt.Goodstypename
  10706. ,pmd.goodscode
  10707. ,pmd.barcode
  10708. ,pd.groutingdate
  10709. ,pd.groutingnum
  10710. ,pd.groutingMouldCode
  10711. ,pd.GroutingLineCode
  10712. ,pd.KilnCarCode
  10713. ,pd.Procedureid
  10714. ,gl.goodslevelname Goodsleveltype
  10715. ,pmd.DefectPositionCode
  10716. ,mdp.DefectPositionName
  10717. ,pd.GroutingUserCode
  10718. , CASE
  10719. WHEN logo.logoid IS NULL THEN
  10720. NULL
  10721. ELSE
  10722. logo.Logoname || '[' || logo.Logocode || ']'
  10723. END AS LogoCodeName
  10724. ,pd.CheckTime pdchecktime
  10725. ,pmd.CheckTime
  10726. ,mstdf.DefectFineCode
  10727. ,pmd.DefectDeductionNum
  10728. ,hopd.createtime handovertime
  10729. ,(SELECT listagg(to_char(pduc.UserCode), ',') within GROUP(ORDER BY pduc.ProductionDataID) AS WorkUserCodes
  10730. FROM tp_pm_ProductionData pduc
  10731. WHERE pduc.barcode = pmd.barcode
  10732. AND pduc.valueflag = '1') AS WorkUserCodes
  10733. , null AS CreateUserCodes
  10734. ,(SELECT listagg(to_char(s.StaffName), ',') within GROUP(ORDER BY s.Staffid) AS DefectStaffNames
  10735. FROM TP_PM_DefectResponsible dr
  10736. Left join TP_HR_Staff s on s.Staffid = dr.Staffid
  10737. WHERE dr.ProductionDefectID = pmd.ProductionDefectID --dr pdcu.valueflag = '1'
  10738. ) AS DefectStaffNames
  10739. , CASE
  10740. WHEN pd.isrefire <> '0' THEN
  10741. (select listagg(to_char(d.defectname || '[' || d.defectpositionname || ']')
  10742. ,',') within group(order by d.productiondefectid) bsqx
  10743. from tp_pm_productiondata p
  10744. inner join tp_pm_defect d
  10745. on d.productiondataid = p.productiondataid
  10746. where p.valueflag = '1'
  10747. and d.valueflag = '1'
  10748. and p.barcode = pd.barcode
  10749. and p.modeltype = -1
  10750. and p.isrefire = '0')
  10751. ELSE
  10752. null
  10753. END AS bsqx
  10754. , CASE
  10755. WHEN EXISTS (SELECT 1
  10756. FROM tp_pm_ProductionData pdud
  10757. WHERE pdud.barcode = pmd.barcode
  10758. AND pdud.modeltype in( -1, -4, -5)
  10759. AND pdud.procedureid = pd.procedureid
  10760. AND pdud.kilncarbatchno = pd.kilncarbatchno
  10761. AND pdud.valueflag = '0') THEN
  10762. 1
  10763. ELSE
  10764. 0
  10765. END AS undoflag
  10766. ,SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) -1 ) AS Kcode1
  10767. ,SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) -1 ) AS Fyear1
  10768. ,tmdd.DICTIONARYVALUE AS KilnLocation
  10769. FROM tp_pm_defect pmd
  10770. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gdd ON gdd.BARCODE=pmd.BARCODE
  10771. LEFT JOIN tp_mst_defect MD ON pmd.defectid = MD.defectid
  10772. LEFT JOIN tp_mst_defectposition mdp on pmd.defectpositionid = mdp.defectpositionid
  10773. left join TP_PC_PRODUCTIONLINE pin on pmd.productionlineid = pin.productionlineid LEFT JOIN TP_PC_Procedure p
  10774. ON p.procedureid = pmd.procedureid
  10775. LEFT JOIN TP_PC_Procedure pdd
  10776. ON pdd.procedureid = pmd.defectprocedureid
  10777. LEFT JOIN TP_MST_Goods g
  10778. ON pmd.Goodsid = g.Goodsid
  10779. LEFT JOIN TP_MST_GoodsType gt
  10780. ON g.GoodsTypeID = gt.GoodsTypeID
  10781. LEFT JOIN TP_MST_Defect mstd
  10782. ON pmd.DefectID = mstd.DefectID
  10783. LEFT JOIN TP_MST_Jobs jobs
  10784. ON jobs.jobsid = pmd.Defectjobs
  10785. LEFT JOIN TP_MST_DefectType dt
  10786. ON mstd.DefectTypeID = dt.DefectTypeID
  10787. INNER JOIN TP_PM_PRODUCTIONDATA PD
  10788. ON PMD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  10789. AND PD.MODELTYPE IN (-1, -4, -5)
  10790. AND PD.VALUEFLAG = '1'";
  10791. if (se.TestCheckbatchon == "1")
  10792. {
  10793. selSql += " AND PD.CHECKBATCHNO = 1 \n";
  10794. }
  10795. if (se.HandOverProcedureID == 1)
  10796. {
  10797. selSql += " AND PD.ISREFIRE = '0' \n";
  10798. }
  10799. else
  10800. {
  10801. selSql += " AND PD.ISREFIRE = '6' \n";
  10802. }
  10803. selSql += @"LEFT JOIN tp_mst_goodslevel gl
  10804. ON pd.goodslevelid = gl.goodslevelid
  10805. INNER JOIN tp_pm_productiondata hopd
  10806. ON hopd.kilncarbatchno = pd.kilncarbatchno
  10807. AND hopd.barcode = pd.barcode
  10808. AND ((:HandOverProcedureID = 1 AND ((hopd.procedureid = 11 AND hopd.valueflag = '1') OR (hopd.procedureid =104 AND hopd.isrefire = '0' AND hopd.checkflag = '1')))
  10809. OR (:HandOverProcedureID = 5 AND ((hopd.procedureid = 58 AND hopd.valueflag = '1') OR (hopd.procedureid =104 AND hopd.isrefire = '6' AND hopd.checkflag = '1')))
  10810. OR (:HandOverProcedureID not in (1,5) AND hopd.valueflag = '1' AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID)))
  10811. LEFT JOIN TP_MST_DefectFine mstdf
  10812. ON pmd.DefectFine = mstdf.DefectFineID
  10813. LEFT JOIN tp_mst_logo logo
  10814. ON pd.logoid = logo.logoid
  10815. LEFT JOIN TP_MST_DATADICTIONARY tmdd ON pd.kilncarposition = tmdd.dictionaryid
  10816. AND tmdd.dictionarytype = 'TPC003'
  10817. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL TEST ON TEST.barcode = pd.barcode
  10818. WHERE pmd.valueflag = '1' AND pmd.AccountID = :AccountID
  10819. AND (:RECYCLINGFLAG IS NULL OR TEST.RECYCLINGFLAG=:RECYCLINGFLAG)";
  10820. if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 1)
  10821. {
  10822. selSql = selSql + "AND TEST.TESTFORMFLAG in (1)";
  10823. }
  10824. else if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 2)
  10825. {
  10826. selSql = selSql + "AND TEST.TESTFORMFLAG in (2)";
  10827. }
  10828. //非研发实验单 查0和1
  10829. else if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 3)
  10830. {
  10831. selSql = selSql + "AND (TEST.TESTFORMFLAG IS NULL OR TEST.TESTFORMFLAG=1)";
  10832. }
  10833. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  10834. parameters.Add(new OracleParameter(":HandOverProcedureID", OracleDbType.Int32, se.HandOverProcedureID, ParameterDirection.Input));
  10835. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Int32, se.TestRecyclingflag, ParameterDirection.Input));
  10836. //selSql = selSql +
  10837. // " Where TP_PM_Defect.valueflag='1' and tp_pm_productiondata.ModelType=-1" +
  10838. // " and TP_PM_Defect.AccountID=:AccountID ";
  10839. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  10840. {
  10841. selSql = selSql + " AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1 ";
  10842. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  10843. }
  10844. if (!string.IsNullOrEmpty(se.LineIDS))
  10845. {
  10846. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pmd.ProductionLineId||',')>0 ";
  10847. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  10848. }
  10849. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  10850. {
  10851. //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  10852. selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||pmd.DefectProcedureID||',')>0 ) ";
  10853. parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  10854. }
  10855. else
  10856. {
  10857. // modify by chenxy :没有选择时,应全查询出来。
  10858. //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  10859. }
  10860. if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  10861. {
  10862. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||pmd.ProcedureID||',')>0 ";
  10863. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  10864. }
  10865. if (!string.IsNullOrEmpty(se.KilnCode))
  10866. {
  10867. selSql = selSql + " AND instr(pd.KilnCode,:KilnCode) >0 ";
  10868. parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  10869. }
  10870. if (!string.IsNullOrEmpty(se.GoodsIDS))
  10871. {
  10872. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||pmd.Goodsid||',')>0 ";
  10873. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  10874. }
  10875. if (!string.IsNullOrEmpty(se.GoodsCode))
  10876. {
  10877. selSql = selSql + " AND instr(pmd.goodsCode,:GoodsCode) >0 ";
  10878. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  10879. }
  10880. if (!string.IsNullOrEmpty(se.Kcode))
  10881. {
  10882. selSql = selSql + " AND SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) -1 ) = :Kcode ";
  10883. parameters.Add(new OracleParameter(":Kcode", OracleDbType.NVarchar2, se.Kcode.PadLeft(3, '0'), ParameterDirection.Input));
  10884. }
  10885. if (!string.IsNullOrEmpty(se.Fyear))
  10886. {
  10887. selSql = selSql + " AND SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) -1 ) = :Fyear ";
  10888. parameters.Add(new OracleParameter(":Fyear", OracleDbType.NVarchar2, se.Fyear, ParameterDirection.Input));
  10889. }
  10890. if (!string.IsNullOrEmpty(se.GoodsCodeS2D))
  10891. {
  10892. selSql = selSql + " AND pmd.goodsCode = :GoodsCodeS2D ";
  10893. parameters.Add(new OracleParameter(":GoodsCodeS2D", OracleDbType.NVarchar2, se.GoodsCodeS2D, ParameterDirection.Input));
  10894. }
  10895. if (!string.IsNullOrEmpty(se.DefectUserCode))
  10896. {
  10897. selSql = selSql + " AND instr(pmd.DefectUserCode,:DefectUserCode) >0 ";
  10898. parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  10899. }
  10900. if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  10901. {
  10902. selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||dt.DefectTypeID||',')>0 ";
  10903. parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  10904. }
  10905. if (!string.IsNullOrEmpty(se.DefectCode))
  10906. {
  10907. selSql = selSql + " AND instr(pmd.DefectCode,:DefectCode) >0 ";
  10908. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  10909. }
  10910. if (!string.IsNullOrEmpty(se.DefectCodeS2D))
  10911. {
  10912. selSql = selSql + " AND pmd.DefectCode = :DefectCodeS2D ";
  10913. parameters.Add(new OracleParameter(":DefectCodeS2D", OracleDbType.NVarchar2, se.DefectCodeS2D, ParameterDirection.Input));
  10914. }
  10915. if (!string.IsNullOrEmpty(se.DefectName))
  10916. {
  10917. selSql = selSql + " AND instr(pmd.DefectName,:DefectName) >0 ";
  10918. parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  10919. }
  10920. if (!string.IsNullOrEmpty(se.CheckUserCode))
  10921. {
  10922. selSql = selSql + " AND instr(pmd.UserCode,:UserCode) >0";
  10923. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  10924. }
  10925. if (!string.IsNullOrEmpty(se.CheckUserCodeS2D))
  10926. {
  10927. selSql = selSql + " AND pmd.UserCode = :CheckUserCodeS2D ";
  10928. parameters.Add(new OracleParameter(":CheckUserCodeS2D", OracleDbType.NVarchar2, se.CheckUserCodeS2D, ParameterDirection.Input));
  10929. }
  10930. //if (se.CreateTimeStart.HasValue)
  10931. //{
  10932. // selSql = selSql + " AND pmd.CreateTime>= :CreateTimeStart ";
  10933. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  10934. //}
  10935. //if (se.CreateTimeEnd.HasValue)
  10936. //{
  10937. // selSql = selSql + " AND pmd.CreateTime<= :CreateTimeEnd ";
  10938. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  10939. //}
  10940. // 登记时间(第一次成检)
  10941. if (se.CreateTimeStart.HasValue)
  10942. {
  10943. selSql = selSql + " AND pd.checktime>= :CreateTimeStart ";
  10944. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  10945. }
  10946. if (se.CreateTimeEnd.HasValue)
  10947. {
  10948. selSql = selSql + " AND pd.checktime<= :CreateTimeEnd ";
  10949. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  10950. }
  10951. // 缺陷登记时间
  10952. if (se.CheckTimeStart.HasValue)
  10953. {
  10954. selSql = selSql + " AND pmd.checktime>= :CheckTimeStart ";
  10955. parameters.Add(new OracleParameter(":CheckTimeStart", OracleDbType.Date, se.CheckTimeStart.Value, ParameterDirection.Input));
  10956. }
  10957. if (se.CheckTimeEnd.HasValue)
  10958. {
  10959. selSql = selSql + " AND pmd.checktime<= :CheckTimeEnd ";
  10960. parameters.Add(new OracleParameter(":CheckTimeEnd", OracleDbType.Date, se.CheckTimeEnd.Value, ParameterDirection.Input));
  10961. }
  10962. // 交接时间
  10963. if (se.HandOverTimeStart.HasValue)
  10964. {
  10965. selSql = selSql + " AND hopd.CreateTime>= :HandOverTimeStart ";
  10966. parameters.Add(new OracleParameter(":HandOverTimeStart", OracleDbType.Date, se.HandOverTimeStart.Value, ParameterDirection.Input));
  10967. }
  10968. if (se.HandOverTimeEnd.HasValue)
  10969. {
  10970. selSql = selSql + " AND hopd.CreateTime<= :HandOverTimeEnd ";
  10971. parameters.Add(new OracleParameter(":HandOverTimeEnd", OracleDbType.Date, se.HandOverTimeEnd.Value, ParameterDirection.Input));
  10972. }
  10973. //selSql = selSql + " order by pmd.productionlinename,pmd.procedurename,pmd.defectprocedurename,pmd.defectusercode ";
  10974. selSql = selSql + " order by pmd.productionlinename,p.DISPLAYNO,pdd.DISPLAYNO,dt.DISPLAYNO,mstd.DISPLAYNO,pmd.defectusercode,pmd.barcode ";
  10975. return selSql;
  10976. }
  10977. /// <summary>
  10978. /// 取得RPT030106(成检缺陷汇总表-生产工序信息)的汇总信息查询数据
  10979. /// </summary>
  10980. /// <param name="user">登录用户信息</param>
  10981. /// <param name="se">查询条件</param>
  10982. /// <returns>查询结果</returns>
  10983. public static ServiceResultEntity GetRPT030106ProData(SUserInfo user, RPT030106_SE se)
  10984. {
  10985. IDBConnection conn = null;
  10986. try
  10987. {
  10988. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  10989. List<OracleParameter> parameters = new List<OracleParameter>();
  10990. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030106ProSQL(user, se, ref parameters));
  10991. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  10992. ServiceResultEntity sre = new ServiceResultEntity();
  10993. if (data == null || data.Rows.Count == 0)
  10994. {
  10995. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  10996. return sre;
  10997. }
  10998. sre.Data = new DataSet();
  10999. sre.Data.Tables.Add(data);
  11000. return sre;
  11001. }
  11002. catch (Exception ex)
  11003. {
  11004. throw ex;
  11005. }
  11006. finally
  11007. {
  11008. if (conn != null &&
  11009. conn.ConnState == ConnectionState.Open)
  11010. {
  11011. conn.Close();
  11012. }
  11013. }
  11014. }
  11015. /// <summary>
  11016. /// 获取RPT030106画面(成检缺陷汇总表-生产工序信息)的汇总信息查询sql
  11017. /// </summary>
  11018. /// <returns>sql</returns>
  11019. private static string GetRPT030106ProSQL(SUserInfo user, RPT030106_SE se, ref List<OracleParameter> parameters)
  11020. {
  11021. // 质量登记改判时,缺陷的登记时间是当前时间,不是交接或前次登记时间。
  11022. // 追加交接时间,改判标识。
  11023. string selSql =
  11024. //"SELECT pmd.productionlinename\n" +
  11025. //" ,pmd.procedurename\n" +
  11026. //" ,pmd.DefectProcedureCode\n" +
  11027. //" ,pmd.DefectProcedureName\n" +
  11028. //" ,pmd.DefectUserCode\n" +
  11029. //" ,pmd.defectusername\n" +
  11030. //" ,jobs.jobsname defectjobsname\n" +
  11031. //" ,dt.DefectTypeName\n" +
  11032. //" ,mstd.Remarks DefectRemarks\n" +
  11033. //" ,pd.Remarks barcodeRemarks\n" +
  11034. //" ,pmd.defectcode\n" +
  11035. //" ,d.alldefectcode\n" +
  11036. //" ,pmd.defectname\n" +
  11037. //" ,pmd.UserCode\n" +
  11038. //" ,pmd.username\n" +
  11039. //" ,gt.Goodstypename\n" +
  11040. //" ,pmd.goodscode\n" +
  11041. //" ,pmd.barcode\n" +
  11042. //" ,pd.groutingdate\n" +
  11043. //" ,pd.groutingnum\n" +
  11044. //" ,pd.groutingMouldCode\n" +
  11045. //" ,pd.GroutingLineCode\n" +
  11046. //" ,pd.KilnCarCode\n" +
  11047. //" ,pd.Procedureid\n" +
  11048. //" ,gl.goodslevelname Goodsleveltype\n" +
  11049. //" ,pmd.DefectPositionCode\n" +
  11050. //" ,pmd.DefectPositionName\n" +
  11051. //" ,pd.GroutingUserCode\n" +
  11052. //" , CASE\n" +
  11053. //" WHEN logo.logoid IS NULL THEN\n" +
  11054. //" NULL\n" +
  11055. //" ELSE\n" +
  11056. //" logo.Logoname || '[' || logo.Logocode || ']'\n" +
  11057. //" END AS LogoCodeName\n" +
  11058. ////" ,pmd.CreateTime\n" +
  11059. //" ,pd.CheckTime pdchecktime\n" +
  11060. //" ,pmd.CheckTime\n" +
  11061. //" ,mstdf.DefectFineCode\n" +
  11062. //" ,pmd.DefectDeductionNum\n" +
  11063. ////" ,to_char(pmd.DefectDeductionNum, '990.00') DefectDeductionNum\n" +
  11064. //" ,hopd.createtime handovertime\n" +
  11065. //" ,(SELECT listagg(to_char(pduc.UserCode), ',') within GROUP(ORDER BY pduc.ProductionDataID) AS WorkUserCodes\n" +
  11066. //" FROM tp_pm_ProductionData pduc\n" +
  11067. //" WHERE pduc.barcode = pmd.barcode\n" +
  11068. //" AND pduc.valueflag = '1') AS WorkUserCodes\n" +
  11069. //" ,(SELECT listagg(to_char(u.UserCode), ',') within GROUP(ORDER BY pdcu.ProductionDataID) AS CreateUserCodes\n" +
  11070. //" FROM tp_pm_ProductionData pdcu\n" +
  11071. //" Left join tp_mst_user u on u.userid = pdcu.createuserid\n" +
  11072. //" WHERE pdcu.barcode = pmd.barcode\n" +
  11073. //" AND pdcu.valueflag = '1') AS CreateUserCodes\n" +
  11074. //" , CASE\n" +
  11075. //" WHEN EXISTS (SELECT 1\n" +
  11076. //" FROM tp_pm_ProductionData pdud\n" +
  11077. //" WHERE pdud.barcode = pmd.barcode\n" +
  11078. //" AND pdud.modeltype = -1\n" +
  11079. //" AND pdud.procedureid = pd.procedureid\n" +
  11080. //" AND pdud.kilncarbatchno = pd.kilncarbatchno\n" +
  11081. //" AND pdud.valueflag = '0') THEN\n" +
  11082. //" 1\n" +
  11083. //" ELSE\n" +
  11084. //" 0\n" +
  11085. //" END AS undoflag\n" +
  11086. "SELECT pmd.goodscode\n" +
  11087. " ,pmd.barcode\n" +
  11088. " ,pmd.defectcode\n" +
  11089. //" ,pmd.defectname\n" +
  11090. " ,MD.defectname\n" + //缺陷名称显示 xcm 2023-4-11
  11091. " ,pmd.DefectPositionCode\n" +
  11092. //" ,pmd.DefectPositionName\n" +
  11093. " ,mdp.DefectPositionName\n" + //缺陷位置显示 xcm 2023-4-11
  11094. " ,gl.goodslevelname Goodsleveltype\n" +
  11095. " , CASE\n" +
  11096. " WHEN logo.logoid IS NULL THEN\n" +
  11097. " NULL\n" +
  11098. " ELSE\n" +
  11099. " logo.Logoname || '[' || logo.Logocode || ']'\n" +
  11100. " END AS LogoCodeName\n" +
  11101. //" ,pmd.CreateTime\n" +
  11102. " ,pd.CheckTime pdchecktime\n" +
  11103. " ,pmd.CheckTime\n" +
  11104. " ,proddata.CheckTime protime\n" +
  11105. " ,proddata.UserCode prousercode\n" +
  11106. " ,proddata.PROCEDURENAME proname\n" +
  11107. " ,pd.KILNCARCODE KILNCARCODE\n" +
  11108. " FROM tp_pm_defect pmd\n" +
  11109. " LEFT JOIN tp_mst_defect MD ON pmd.defectid = MD.defectid \n" + //缺陷名称显示 xcm 2023-4-11
  11110. " LEFT JOIN tp_mst_defectposition mdp on pmd.defectpositionid = mdp.defectpositionid \n" + //缺陷位置显示 xcm 2023-4-11
  11111. " INNER JOIN tp_pm_productiondata proddata\n" +
  11112. " ON proddata.barcode = pmd.barcode\n " +
  11113. //" AND proddata.ProcedureID in ('" + se.CompleteProcedureIDS + "')\n" +
  11114. " AND (instr(','||:ProProcedureIDS||',',','||proddata.ProcedureID||',')>0 )\n" +
  11115. " AND proddata.valueflag = '1'\n" +
  11116. //" INNER JOIN tp_pm_productiondata pd\n" +
  11117. //" ON pmd.ProductionDataID = pd.ProductionDataID\n" +
  11118. //"INNER JOIN (SELECT T.*\n" +
  11119. //" FROM (SELECT PD.*,\n" +
  11120. //" RANK() OVER(PARTITION BY PD.BARCODE, PD.KILNID ORDER BY PD.PRODUCTIONDATAID DESC) AS RK\n" +
  11121. //" FROM TP_PM_PRODUCTIONDATA PD\n" +
  11122. //" INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  11123. //" ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID\n" +
  11124. //" WHERE PD.VALUEFLAG = '1'\n" +
  11125. //" AND PD.MODELTYPE IN (-1, -4, -5)\n" +
  11126. //" AND PD.CREATETIME >= :CreateTimeStart\n" +
  11127. //" AND PD.CREATETIME <= :CreateTimeEnd\n" +
  11128. //" AND((:HandOverProcedureID IS NULL)\n" +
  11129. //" OR(:HandOverProcedureID = 1 AND(GDD.Twoleveltime IS NULL OR pd.createtime < GDD.Twoleveltime))\n" +
  11130. //" OR(:HandOverProcedureID = 5 AND GDD.Twoleveltime IS NOT NULL AND pd.createtime >= GDD.Twoleveltime)) ) T\n" +
  11131. //" WHERE T.RK <= 1) PD\n" +
  11132. //" ON PMD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  11133. " INNER JOIN TP_PM_PRODUCTIONDATA PD\n" +
  11134. " ON PMD.PRODUCTIONDATAID = PD.PRODUCTIONDATAID\n" +
  11135. " AND PD.MODELTYPE IN (-1, -4, -5)\n" +
  11136. //" AND PD.CHECKBATCHNO = 1\n" +
  11137. " AND PD.VALUEFLAG = '1'\n" +
  11138. " LEFT JOIN TP_PC_Procedure p\n" +
  11139. " ON p.procedureid = pmd.procedureid\n" +
  11140. " LEFT JOIN TP_PC_Procedure pdd\n" +
  11141. " ON pdd.procedureid = pmd.defectprocedureid\n" +
  11142. " LEFT JOIN TP_MST_Goods g\n" +
  11143. " ON pmd.Goodsid = g.Goodsid\n" +
  11144. " LEFT JOIN TP_MST_GoodsType gt\n" +
  11145. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  11146. " LEFT JOIN TP_MST_Defect mstd\n" +
  11147. " ON pmd.DefectID = mstd.DefectID\n" +
  11148. " LEFT JOIN TP_MST_Jobs jobs\n" +
  11149. " ON jobs.jobsid = pmd.Defectjobs\n" +
  11150. " LEFT JOIN TP_MST_DefectType dt\n" +
  11151. " ON mstd.DefectTypeID = dt.DefectTypeID\n" +
  11152. " LEFT JOIN tp_mst_goodslevel gl\n" +
  11153. " ON pd.goodslevelid = gl.goodslevelid\n" +
  11154. "-- 交接工序\n" +
  11155. " INNER JOIN tp_pm_productiondata hopd\n" +
  11156. " ON hopd.kilncarbatchno = pd.kilncarbatchno\n " +
  11157. " AND hopd.barcode = pd.barcode\n" +
  11158. //" AND hopd.valueflag = '1'\n" +
  11159. //" AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" +
  11160. // 恒洁三车间特殊处理(质量相关)
  11161. //" AND hopd.valueflag = '1'\n" +
  11162. " AND ((:HandOverProcedureID = 1 AND ((hopd.procedureid = 11 AND hopd.valueflag = '1') OR (hopd.procedureid =104 AND hopd.isrefire = '0' AND hopd.checkflag = '1'))) \n" +
  11163. " OR (:HandOverProcedureID = 5 AND ((hopd.procedureid = 58 AND hopd.valueflag = '1') OR (hopd.procedureid =104 AND hopd.isrefire = '6' AND hopd.checkflag = '1'))) \n" +
  11164. " OR (:HandOverProcedureID not in (1,5) AND hopd.valueflag = '1' AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID)))\n" +
  11165. //end
  11166. //" AND HOPD.PROCEDUREID IN (11, 104)\n" +
  11167. " LEFT JOIN TP_MST_DefectFine mstdf\n" +
  11168. " ON pmd.DefectFine = mstdf.DefectFineID\n" +
  11169. " LEFT JOIN tp_mst_logo logo\n" +
  11170. " ON pd.logoid = logo.logoid\n" +
  11171. "LEFT JOIN TP_PM_GROUTINGDAILYDETAIL TEST ON TEST.barcode = pd.barcode" +
  11172. " WHERE pmd.valueflag = '1' AND pmd.AccountID = :AccountID AND (:RECYCLINGFLAG IS NULL OR TEST.RECYCLINGFLAG=:RECYCLINGFLAG) ";
  11173. //" LEFT JOIN (SELECT def.barcode, wmsys.wm_concat( to_char(def.defectcode)) alldefectcode\n" +
  11174. //" FROM tp_pm_defect def\n" +
  11175. //" WHERE def.valueflag = '1'\n" +
  11176. ////def.createtime
  11177. //" group by def.barcode ) d\n" +
  11178. //" ON d.barcode = pmd.barcode\n" +
  11179. if (se.TestCheckbatchon == "1")
  11180. {
  11181. selSql += " AND PD.CHECKBATCHNO = 1 \n";
  11182. }
  11183. if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 1)
  11184. {
  11185. selSql = selSql + " AND TEST.TESTFORMFLAG in (1)\n";
  11186. }
  11187. else if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 2)
  11188. {
  11189. selSql = selSql + " AND TEST.TESTFORMFLAG in (2)\n";
  11190. }
  11191. //非研发实验单 查0和1
  11192. else if (!string.IsNullOrEmpty(se.TestFormFlag.ToString()) && se.TestFormFlag == 3)
  11193. {
  11194. selSql = selSql + " AND (TEST.TESTFORMFLAG IS NULL OR TEST.TESTFORMFLAG=1)\n";
  11195. }
  11196. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  11197. parameters.Add(new OracleParameter(":HandOverProcedureID", OracleDbType.Int32, se.HandOverProcedureID, ParameterDirection.Input));
  11198. parameters.Add(new OracleParameter(":ProProcedureIDS", OracleDbType.Varchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  11199. parameters.Add(new OracleParameter(":RECYCLINGFLAG", OracleDbType.Varchar2, se.TestRecyclingflag, ParameterDirection.Input));
  11200. //selSql = selSql +
  11201. // " Where TP_PM_Defect.valueflag='1' and tp_pm_productiondata.ModelType=-1" +
  11202. // " and TP_PM_Defect.AccountID=:AccountID ";
  11203. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  11204. {
  11205. selSql = selSql + " AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1 ";
  11206. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  11207. }
  11208. if (!string.IsNullOrEmpty(se.LineIDS))
  11209. {
  11210. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pmd.ProductionLineId||',')>0 ";
  11211. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  11212. }
  11213. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  11214. {
  11215. //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  11216. selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||pmd.DefectProcedureID||',')>0 ) ";
  11217. parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  11218. }
  11219. else
  11220. {
  11221. // modify by chenxy :没有选择时,应全查询出来。
  11222. //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  11223. }
  11224. if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  11225. {
  11226. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||pmd.ProcedureID||',')>0 ";
  11227. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  11228. }
  11229. if (!string.IsNullOrEmpty(se.KilnCode))
  11230. {
  11231. selSql = selSql + " AND instr(pd.KilnCode,:KilnCode) >0 ";
  11232. parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  11233. }
  11234. if (!string.IsNullOrEmpty(se.GoodsIDS))
  11235. {
  11236. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||pmd.Goodsid||',')>0 ";
  11237. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  11238. }
  11239. if (!string.IsNullOrEmpty(se.GoodsCode))
  11240. {
  11241. selSql = selSql + " AND instr(pmd.goodsCode,:GoodsCode) >0 ";
  11242. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  11243. }
  11244. if (!string.IsNullOrEmpty(se.GoodsCodeS2D))
  11245. {
  11246. selSql = selSql + " AND pmd.goodsCode = :GoodsCodeS2D ";
  11247. parameters.Add(new OracleParameter(":GoodsCodeS2D", OracleDbType.NVarchar2, se.GoodsCodeS2D, ParameterDirection.Input));
  11248. }
  11249. if (!string.IsNullOrEmpty(se.DefectUserCode))
  11250. {
  11251. selSql = selSql + " AND instr(pmd.DefectUserCode,:DefectUserCode) >0 ";
  11252. parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  11253. }
  11254. if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  11255. {
  11256. selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||dt.DefectTypeID||',')>0 ";
  11257. parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  11258. }
  11259. if (!string.IsNullOrEmpty(se.DefectCode))
  11260. {
  11261. selSql = selSql + " AND instr(pmd.DefectCode,:DefectCode) >0 ";
  11262. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  11263. }
  11264. if (!string.IsNullOrEmpty(se.DefectCodeS2D))
  11265. {
  11266. selSql = selSql + " AND pmd.DefectCode = :DefectCodeS2D ";
  11267. parameters.Add(new OracleParameter(":DefectCodeS2D", OracleDbType.NVarchar2, se.DefectCodeS2D, ParameterDirection.Input));
  11268. }
  11269. if (!string.IsNullOrEmpty(se.DefectName))
  11270. {
  11271. selSql = selSql + " AND instr(pmd.DefectName,:DefectName) >0 ";
  11272. parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  11273. }
  11274. if (!string.IsNullOrEmpty(se.CheckUserCode))
  11275. {
  11276. selSql = selSql + " AND instr(pmd.UserCode,:UserCode) >0";
  11277. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  11278. }
  11279. if (!string.IsNullOrEmpty(se.CheckUserCodeS2D))
  11280. {
  11281. selSql = selSql + " AND pmd.UserCode = :CheckUserCodeS2D ";
  11282. parameters.Add(new OracleParameter(":CheckUserCodeS2D", OracleDbType.NVarchar2, se.CheckUserCodeS2D, ParameterDirection.Input));
  11283. }
  11284. //if (se.CreateTimeStart.HasValue)
  11285. //{
  11286. // selSql = selSql + " AND pmd.CreateTime>= :CreateTimeStart ";
  11287. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  11288. //}
  11289. //if (se.CreateTimeEnd.HasValue)
  11290. //{
  11291. // selSql = selSql + " AND pmd.CreateTime<= :CreateTimeEnd ";
  11292. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  11293. //}
  11294. // 成检登记时间
  11295. if (se.CreateTimeStart.HasValue)
  11296. {
  11297. selSql = selSql + " AND pd.checktime>= :CreateTimeStart ";
  11298. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  11299. }
  11300. if (se.CreateTimeEnd.HasValue)
  11301. {
  11302. selSql = selSql + " AND pd.checktime<= :CreateTimeEnd ";
  11303. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  11304. }
  11305. // 缺陷登记时间
  11306. if (se.CheckTimeStart.HasValue)
  11307. {
  11308. selSql = selSql + " AND pmd.checktime>= :CheckTimeStart ";
  11309. parameters.Add(new OracleParameter(":CheckTimeStart", OracleDbType.Date, se.CheckTimeStart.Value, ParameterDirection.Input));
  11310. }
  11311. if (se.CheckTimeEnd.HasValue)
  11312. {
  11313. selSql = selSql + " AND pmd.checktime<= :CheckTimeEnd ";
  11314. parameters.Add(new OracleParameter(":CheckTimeEnd", OracleDbType.Date, se.CheckTimeEnd.Value, ParameterDirection.Input));
  11315. }
  11316. // 交接时间
  11317. if (se.HandOverTimeStart.HasValue)
  11318. {
  11319. selSql = selSql + " AND hopd.CreateTime>= :HandOverTimeStart ";
  11320. parameters.Add(new OracleParameter(":HandOverTimeStart", OracleDbType.Date, se.HandOverTimeStart.Value, ParameterDirection.Input));
  11321. }
  11322. if (se.HandOverTimeEnd.HasValue)
  11323. {
  11324. selSql = selSql + " AND hopd.CreateTime<= :HandOverTimeEnd ";
  11325. parameters.Add(new OracleParameter(":HandOverTimeEnd", OracleDbType.Date, se.HandOverTimeEnd.Value, ParameterDirection.Input));
  11326. }
  11327. //selSql = selSql + " order by pmd.productionlinename,p.DISPLAYNO,pdd.DISPLAYNO,dt.DISPLAYNO,mstd.DISPLAYNO,pmd.defectusercode,pmd.barcode ";
  11328. selSql = selSql + " order by proddata.CheckTime ";
  11329. return selSql;
  11330. }
  11331. /// <summary>
  11332. /// 窑车状态主表查询
  11333. /// </summary>
  11334. /// <param name="kilnCode">窑炉编码</param>
  11335. /// <param name="kilnCarCode">窑车编码</param>
  11336. /// <param name="sUserInfo">用户基本信息</param>
  11337. /// <returns></returns>
  11338. public static ServiceResultEntity GetKilnCarStatusByCode(string kilnCode, string kilnCarCode, SUserInfo sUserInfo)
  11339. {
  11340. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  11341. try
  11342. {
  11343. con.Open();
  11344. OracleParameter[] paras = new OracleParameter[]{
  11345. new OracleParameter("in_AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  11346. new OracleParameter("in_KilnCode",OracleDbType.Varchar2,kilnCode,ParameterDirection.Input),
  11347. new OracleParameter("in_KilnCarCode",OracleDbType.Varchar2,kilnCarCode,ParameterDirection.Input),
  11348. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  11349. };
  11350. DataSet dsSearchReport = con.ExecStoredProcedure("PRO_RPT_GetKilnCarStatus", paras);
  11351. ServiceResultEntity sre = new ServiceResultEntity();
  11352. if (dsSearchReport == null || dsSearchReport.Tables[0].Rows.Count == 0)
  11353. {
  11354. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11355. return sre;
  11356. }
  11357. sre.Data = new DataSet();
  11358. sre.Data.Tables.Add(dsSearchReport.Tables[0].Copy());
  11359. return sre;
  11360. }
  11361. catch (Exception ex)
  11362. {
  11363. throw ex;
  11364. }
  11365. finally
  11366. {
  11367. if (con != null &&
  11368. con.ConnState == ConnectionState.Open)
  11369. {
  11370. con.Close();
  11371. }
  11372. }
  11373. }
  11374. /// <summary>
  11375. /// 窑车状态明细表查询
  11376. /// </summary>
  11377. /// <param name="kilnCarCode">窑车编码</param>
  11378. /// <param name="sUserInfo">用户基本信息</param>
  11379. /// <returns></returns>
  11380. public static ServiceResultEntity GetKilnCarStatusDetailByCode(string kilnCarCode, SUserInfo sUserInfo)
  11381. {
  11382. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  11383. try
  11384. {
  11385. con.Open();
  11386. OracleParameter[] paras = new OracleParameter[]{
  11387. new OracleParameter("in_AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  11388. new OracleParameter("in_KilnCarCode",OracleDbType.Varchar2,kilnCarCode,ParameterDirection.Input),
  11389. new OracleParameter("out_KilnCarData",OracleDbType.RefCursor, ParameterDirection.Output),
  11390. new OracleParameter("out_KilnCarGoods",OracleDbType.RefCursor, ParameterDirection.Output),
  11391. };
  11392. DataSet dsSearchReport = con.ExecStoredProcedure("PRO_RPT_GetKilnCarData", paras);
  11393. ServiceResultEntity sre = new ServiceResultEntity();
  11394. if (dsSearchReport == null || dsSearchReport.Tables[0].Rows.Count == 0)
  11395. {
  11396. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11397. return sre;
  11398. }
  11399. sre.Data = new DataSet();
  11400. sre.Data.Tables.Add(dsSearchReport.Tables[0].Copy());//生产数据
  11401. sre.Data.Tables.Add(dsSearchReport.Tables[1].Copy());//窑车产品
  11402. return sre;
  11403. }
  11404. catch (Exception ex)
  11405. {
  11406. throw ex;
  11407. }
  11408. finally
  11409. {
  11410. if (con != null &&
  11411. con.ConnState == ConnectionState.Open)
  11412. {
  11413. con.Close();
  11414. }
  11415. }
  11416. }
  11417. /// <summary>
  11418. /// 取得RPT010201_1画面(工序漏扫明细表)的查询数据
  11419. /// </summary>
  11420. /// <param name="user">登录用户信息</param>
  11421. /// <param name="se">查询条件</param>
  11422. /// <returns>查询结果</returns>
  11423. public static ServiceResultEntity GetRPT080101SData(SUserInfo user, RPT010201_SE se)
  11424. {
  11425. IDBConnection conn = null;
  11426. try
  11427. {
  11428. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  11429. List<OracleParameter> parameters = new List<OracleParameter>();
  11430. parameters.Clear();
  11431. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT080101SSQL(user, se, ref parameters));
  11432. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  11433. ServiceResultEntity sre = new ServiceResultEntity();
  11434. if (data == null || data.Rows.Count == 0)
  11435. {
  11436. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11437. return sre;
  11438. }
  11439. sre.Data = new DataSet();
  11440. sre.Data.Tables.Add(data);
  11441. return sre;
  11442. }
  11443. catch (Exception ex)
  11444. {
  11445. throw ex;
  11446. }
  11447. finally
  11448. {
  11449. if (conn != null &&
  11450. conn.ConnState == ConnectionState.Open)
  11451. {
  11452. conn.Close();
  11453. }
  11454. }
  11455. }
  11456. /// <summary>
  11457. /// 获取RPT010201_1画面(工序漏扫明细表)的查询sql
  11458. /// </summary>
  11459. /// <returns>sql</returns>
  11460. private static string GetRPT080101SSQL(SUserInfo user, RPT010201_SE se, ref List<OracleParameter> parameters)
  11461. {
  11462. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  11463. #region
  11464. #endregion
  11465. string sql = @"
  11466. select gd.groutinglinecode,
  11467. gd.groutingmouldcode,
  11468. gd.mouldcode,
  11469. gd.usercode,
  11470. gs.goodscode,
  11471. gs.goodsname,
  11472. gs.goodsspecification,
  11473. gms.gmouldstatusname, -- 模具状态
  11474. --gs.goodsmodel,
  11475. gd.groutingcount, -- 注浆次数
  11476. --gd.groutingnum,
  11477. gd.scrapnum, -- 开模损坯数
  11478. gd.deliverpnum, -- 交坯数
  11479. gd.mingroutingdate, -- 开始注浆时间
  11480. gd.maxgroutingdate, -- 最后注浆时间
  11481. gld.beginuseddate, -- 开始使用时间
  11482. gld.enduseddate, -- 结束使用时间
  11483. zl.OutKilnCount, -- 质量登记数
  11484. zl.GoodCount, -- 正品数
  11485. zl.SubstandardCount, -- 副品数
  11486. zl.ReFireCount, -- 重烧数
  11487. zl.BadCount -- 次品数
  11488. from (select gdd.groutinglinecode,
  11489. gdd.groutingmouldcode,
  11490. gdd.mouldcode,
  11491. gdd.goodsid,
  11492. gdd.groutinglinedetailid,
  11493. wmsys.wm_concat(distinct to_char(gdd.usercode)) usercode,
  11494. max(gdd.groutingcount) groutingcount,
  11495. sum(decode(gdd.groutingflag, '1', 1, 0)) groutingnum,
  11496. sum(decode(gdd.scrapflag, '1', 1, 0)) scrapnum,
  11497. sum(decode(gdd.deliverflag, '1', 1, 0)) deliverpnum,
  11498. min(gdd.groutingdate) mingroutingdate,
  11499. max(gdd.groutingdate) maxgroutingdate
  11500. from tp_pm_groutingdailydetail gdd
  11501. where gdd.groutingflag = '1'
  11502. and gdd.AccountID = :AccountID
  11503. ";
  11504. // 成型线编码
  11505. if (!string.IsNullOrEmpty(se.groutinglinecode))
  11506. {
  11507. //sql = sql + " and gdd.groutinglinecode=:groutinglinecode";
  11508. sql = sql + " and instr(gdd.groutinglinecode,:groutinglinecode)>0";
  11509. parameters.Add(new OracleParameter(":groutinglinecode", OracleDbType.NVarchar2, se.groutinglinecode, ParameterDirection.Input));
  11510. }
  11511. // 模具编码
  11512. if (!string.IsNullOrEmpty(se.groutingmouldcode))
  11513. {
  11514. //sql = sql + " and gdd.groutingmouldcode=:groutingmouldcode";
  11515. sql = sql + " and instr(gdd.groutingmouldcode,:groutingmouldcode)>0";
  11516. parameters.Add(new OracleParameter(":groutingmouldcode", OracleDbType.NVarchar2, se.groutingmouldcode, ParameterDirection.Input));
  11517. }
  11518. sql = sql + @"
  11519. group by gdd.groutinglinecode,
  11520. gdd.groutingmouldcode,
  11521. gdd.mouldcode,
  11522. gdd.goodsid,
  11523. gdd.groutinglinedetailid) gd
  11524. left join (select pdbc.mouldcode,
  11525. sum(1) OutKilnCount,
  11526. sum(case
  11527. when defect.defectprocedureid is not null and
  11528. glt.goodsleveltypeid in (5, 6, 7) then
  11529. 0
  11530. else
  11531. 1
  11532. end) GoodCount,
  11533. sum(case
  11534. when defect.defectprocedureid is not null and
  11535. glt.goodsleveltypeid = 7 then
  11536. 1
  11537. else
  11538. 0
  11539. end) SubstandardCount,
  11540. sum(case
  11541. when defect.defectprocedureid is not null and
  11542. glt.goodsleveltypeid = 6 then
  11543. 1
  11544. else
  11545. 0
  11546. end) ReFireCount,
  11547. sum(case
  11548. when defect.defectprocedureid is not null and
  11549. glt.goodsleveltypeid = 5 then
  11550. 1
  11551. else
  11552. 0
  11553. end) BadCount
  11554. from (select distinct pd.barcode,
  11555. pd.mouldcode,
  11556. pd.kilncarbatchno
  11557. from tp_pm_productiondata pd
  11558. where pd.valueflag = '1'";
  11559. // 开始注浆--开始
  11560. if (se.beginCreateTime.HasValue)
  11561. {
  11562. sql = sql + " and pd.createtime>=:groutingDateStart ";
  11563. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  11564. }
  11565. //--and pd.createtime > 查询条件。开始注浆日期开始
  11566. // --and pd.procedureid = :in_rptSprocedureId
  11567. sql = sql + @"
  11568. and pd.procedureid = 11
  11569. and pd.AccountID = 1) pdbc
  11570. left join (select kcbc.barcode,
  11571. kcbc.kilncarbatchno,
  11572. kcbc.goodsleveltypeid,
  11573. kcbc.productiondataid
  11574. from (select pd.barcode,
  11575. pd.kilncarbatchno,
  11576. pd.goodsleveltypeid,
  11577. pd.productiondataid,
  11578. ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid
  11579. from tp_pm_productiondata pd
  11580. where pd.valueflag = '1'
  11581. --and pd.AccountID = :AccountID
  11582. and pd.AccountID = :AccountID";
  11583. //--and pd.createtime > 查询条件。开始注浆日期开始
  11584. // 开始注浆--开始
  11585. if (se.beginCreateTime.HasValue)
  11586. {
  11587. sql = sql + " and pd.createtime>=:groutingDateStart ";
  11588. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  11589. }
  11590. sql = sql + @" and length(pd.kilncarbatchno) > 0
  11591. and pd.modeltype = -1) kcbc
  11592. where kcbc.dataid = 1) glt
  11593. on pdbc.kilncarbatchno = glt.kilncarbatchno
  11594. and pdbc.barcode = glt.barcode
  11595. left join (select distinct productiondataid, defectprocedureid
  11596. from tp_pm_defect def
  11597. where def.valueflag = '1'";
  11598. //--and pd.createtime > 查询条件。开始注浆日期开始
  11599. // 开始注浆--开始
  11600. if (se.beginCreateTime.HasValue)
  11601. {
  11602. sql = sql + " and def.createtime>=:groutingDateStart ";
  11603. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  11604. }
  11605. sql = sql + @"
  11606. and def.AccountID = :AccountID) defect
  11607. on defect.productiondataid = glt.productiondataid
  11608. group by pdbc.mouldcode) zl
  11609. on zl.mouldcode = gd.mouldcode
  11610. left join tp_mst_goods gs
  11611. on gs.goodsid = gd.goodsid
  11612. left join tp_pc_groutinglinedetail gld
  11613. on gld.groutinglinedetailid = gd.groutinglinedetailid
  11614. and gld.mouldcode = gd.mouldcode
  11615. left join tp_sys_gmouldstatus gms
  11616. on gms.gmouldstatusid = gld.gmouldstatus
  11617. where 1=1
  11618. ";
  11619. // 产品编码
  11620. if (!string.IsNullOrEmpty(se.goodscode))
  11621. {
  11622. //sql = sql + " and gs.goodscode=:goodscode";
  11623. sql = sql + " and instr(gs.goodscode,:goodscode)>0";
  11624. parameters.Add(new OracleParameter(":goodscode", OracleDbType.NVarchar2, se.goodscode, ParameterDirection.Input));
  11625. }
  11626. // 成型工号
  11627. if (!string.IsNullOrEmpty(se.groutingUserCode))
  11628. {
  11629. //sql = sql + " and gd.usercode=:usercode";
  11630. sql = sql + " and instr(gd.usercode,:usercode)>0";
  11631. parameters.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, se.groutingUserCode, ParameterDirection.Input));
  11632. }
  11633. // 开始注浆--开始
  11634. if (se.beginCreateTime.HasValue)
  11635. {
  11636. sql = sql + " and gd.mingroutingdate>=:CreateTimeStart ";
  11637. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  11638. }
  11639. // 开始注浆--结束
  11640. if (se.endCreateTime.HasValue)
  11641. {
  11642. sql = sql + " and gd.mingroutingdate<=:CreateTimeEnd ";
  11643. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.endCreateTime.Value, ParameterDirection.Input));
  11644. }
  11645. // 结束注浆--开始
  11646. if (se.beginCreateTime2.HasValue)
  11647. {
  11648. sql = sql + " and gd.maxgroutingdate>=:CreateTimeotherStart2 ";
  11649. parameters.Add(new OracleParameter(":CreateTimeotherStart2", OracleDbType.Date, se.beginCreateTime2.Value, ParameterDirection.Input));
  11650. }
  11651. // 结束注浆--结束
  11652. if (se.endCreateTime2.HasValue)
  11653. {
  11654. sql = sql + " and gd.maxgroutingdate<=:CreateTimeotherEnd2";
  11655. parameters.Add(new OracleParameter(":CreateTimeotherEnd2", OracleDbType.Date, se.endCreateTime2.Value, ParameterDirection.Input));
  11656. }
  11657. // 模具状态
  11658. if (!string.IsNullOrEmpty(se.gmouldstatus))
  11659. {
  11660. sql = sql + " and gms.gmouldstatusid=:gmouldstatus";
  11661. parameters.Add(new OracleParameter(":gmouldstatus", OracleDbType.NVarchar2, se.gmouldstatus, ParameterDirection.Input));
  11662. }
  11663. sql = sql + " order by groutinglinecode,groutingmouldcode";
  11664. return sql;
  11665. }
  11666. #region 工资产量统计
  11667. /// <summary>
  11668. /// 取得RPT080102画面(成型工产量)的查询数据
  11669. /// </summary>
  11670. /// <param name="user">登录用户信息</param>
  11671. /// <param name="se">查询条件</param>
  11672. /// <returns>查询结果</returns>
  11673. public static ServiceResultEntity GetRPT080102SData(SUserInfo user, RPT080102_SE se)
  11674. {
  11675. IDBTransaction conn = null;
  11676. try
  11677. {
  11678. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11679. conn.Connect();
  11680. OracleParameter[] paras = new OracleParameter[]{
  11681. new OracleParameter("in_AccountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  11682. new OracleParameter("in_BeginDate",OracleDbType.Date,se.startDateTime,ParameterDirection.Input),
  11683. new OracleParameter("in_EndDate",OracleDbType.Date,se.endDateTime,ParameterDirection.Input),
  11684. new OracleParameter("in_deliverprocess",OracleDbType.Varchar2,se.DeliverProcedureIDS,ParameterDirection.Input),
  11685. new OracleParameter("in_IntoKilnProcess",OracleDbType.Varchar2,se.IntoProcedureIDS,ParameterDirection.Input),
  11686. new OracleParameter("in_OutKilnProcess",OracleDbType.Varchar2,se.OutProcedureIDS,ParameterDirection.Input),
  11687. new OracleParameter("in_QualityProcess",OracleDbType.Varchar2,se.ProcedureIDS,ParameterDirection.Input),
  11688. new OracleParameter("in_DefectFine",OracleDbType.Varchar2,se.DefectFineIDS,ParameterDirection.Input),
  11689. new OracleParameter("in_Impurity",OracleDbType.Varchar2,se.DefectIDS,ParameterDirection.Input),
  11690. new OracleParameter("in_OutKilnFlag",OracleDbType.Varchar2, se.OutKilnFlag, ParameterDirection.Input),
  11691. new OracleParameter("out_Production",OracleDbType.RefCursor, ParameterDirection.Output),
  11692. new OracleParameter("out_Deliver",OracleDbType.RefCursor,ParameterDirection.Output),
  11693. new OracleParameter("out_Repair",OracleDbType.RefCursor,ParameterDirection.Output),
  11694. };
  11695. conn.IsCommandTimeout = false;
  11696. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetDeliver_Production_new", paras);
  11697. ServiceResultEntity sre = new ServiceResultEntity();
  11698. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  11699. {
  11700. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11701. return sre;
  11702. }
  11703. sre.Data = new DataSet();
  11704. sre.Data = data;
  11705. conn.Commit();
  11706. return sre;
  11707. }
  11708. catch (Exception ex)
  11709. {
  11710. throw ex;
  11711. }
  11712. finally
  11713. {
  11714. if (conn != null &&
  11715. conn.ConnState == ConnectionState.Open)
  11716. {
  11717. conn.Disconnect();
  11718. }
  11719. }
  11720. }
  11721. /// <summary>
  11722. /// 取得RPT080103画面(烧成前工序产量明细表)的查询数据
  11723. /// </summary>
  11724. /// <param name="user">登录用户信息</param>
  11725. /// <param name="se">查询条件</param>
  11726. /// <returns>查询结果</returns>
  11727. public static ServiceResultEntity GetRPT080103SData(SUserInfo user, RPT080103_SE se)
  11728. {
  11729. IDBTransaction conn = null;
  11730. try
  11731. {
  11732. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11733. conn.Connect();
  11734. OracleParameter[] paras = new OracleParameter[]{
  11735. new OracleParameter("in_AccountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  11736. new OracleParameter("in_BeginDate",OracleDbType.Date,se.startDateTime,ParameterDirection.Input),
  11737. new OracleParameter("in_EndDate",OracleDbType.Date,se.endDateTime,ParameterDirection.Input),
  11738. new OracleParameter("in_Process",OracleDbType.Varchar2,se.ProcedureIDS,ParameterDirection.Input),
  11739. new OracleParameter("in_HandOverProcess",OracleDbType.Varchar2,se.HandOverProcedureIDS,ParameterDirection.Input),
  11740. new OracleParameter("in_OutKilnProcess",OracleDbType.Varchar2,se.OutProcedureIDS,ParameterDirection.Input),
  11741. new OracleParameter("in_QualityProcess",OracleDbType.Varchar2,se.QualityProcedureIDS,ParameterDirection.Input),
  11742. new OracleParameter("in_Defect1",OracleDbType.Varchar2,se.DefectIDS,ParameterDirection.Input),
  11743. new OracleParameter("in_Defect2",OracleDbType.Varchar2,se.DefectIDS2,ParameterDirection.Input),
  11744. new OracleParameter("out_Production",OracleDbType.RefCursor, ParameterDirection.Output),
  11745. };
  11746. conn.IsCommandTimeout = false;
  11747. //DataSet data = null;
  11748. //if (se.ProcedureIDS.Contains(","))
  11749. //{
  11750. // data = conn.ExecStoredProcedure("PRO_RPT_GetStandardProduction2", paras);
  11751. //}
  11752. //else
  11753. //{
  11754. // data = conn.ExecStoredProcedure("PRO_RPT_GetStandardProduction", paras);
  11755. //}
  11756. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetStandard_Production", paras);
  11757. ServiceResultEntity sre = new ServiceResultEntity();
  11758. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  11759. {
  11760. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11761. return sre;
  11762. }
  11763. sre.Data = new DataSet();
  11764. sre.Data = data;
  11765. conn.Commit();
  11766. return sre;
  11767. }
  11768. catch (Exception ex)
  11769. {
  11770. throw ex;
  11771. }
  11772. finally
  11773. {
  11774. if (conn != null &&
  11775. conn.ConnState == ConnectionState.Open)
  11776. {
  11777. conn.Disconnect();
  11778. }
  11779. }
  11780. }
  11781. /// <summary>
  11782. /// 取得RPT080104画面(烧成工序产量明细表)的查询数据
  11783. /// </summary>
  11784. /// <param name="user">登录用户信息</param>
  11785. /// <param name="se">查询条件</param>
  11786. /// <returns>查询结果</returns>
  11787. public static ServiceResultEntity GetRPT080104SData(SUserInfo user, RPT080103_SE se)
  11788. {
  11789. IDBTransaction conn = null;
  11790. try
  11791. {
  11792. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11793. conn.Connect();
  11794. OracleParameter[] paras = new OracleParameter[]{
  11795. new OracleParameter("in_AccountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  11796. new OracleParameter("in_BeginDate",OracleDbType.Date,se.startDateTime,ParameterDirection.Input),
  11797. new OracleParameter("in_EndDate",OracleDbType.Date,se.endDateTime,ParameterDirection.Input),
  11798. new OracleParameter("in_Process",OracleDbType.Varchar2,se.ProcedureIDS,ParameterDirection.Input),
  11799. new OracleParameter("in_OutKilnProcess",OracleDbType.Varchar2,se.OutProcedureIDS,ParameterDirection.Input),
  11800. new OracleParameter("in_QualityProcess",OracleDbType.Varchar2,se.QualityProcedureIDS,ParameterDirection.Input),
  11801. new OracleParameter("in_Defect1",OracleDbType.Varchar2,se.DefectIDS,ParameterDirection.Input),
  11802. new OracleParameter("in_Defect2",OracleDbType.Varchar2,se.DefectIDS2,ParameterDirection.Input),
  11803. new OracleParameter("out_Production",OracleDbType.RefCursor, ParameterDirection.Output),
  11804. };
  11805. conn.IsCommandTimeout = false;
  11806. DataSet data = null;
  11807. if (se.ProcedureIDS.Contains(","))
  11808. {
  11809. data = conn.ExecStoredProcedure("PRO_RPT_GetKilnProduction2", paras);
  11810. }
  11811. else
  11812. {
  11813. data = conn.ExecStoredProcedure("PRO_RPT_GetKilnProduction", paras);
  11814. }
  11815. ServiceResultEntity sre = new ServiceResultEntity();
  11816. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  11817. {
  11818. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11819. return sre;
  11820. }
  11821. sre.Data = data;
  11822. //string sqlString =
  11823. //"SELECT kk.procedurename\n" +
  11824. //" ,kk.usercode\n" +
  11825. //" ,kk.kilncode\n" +
  11826. //" ,kk.kdate\n" +
  11827. //" ,COUNT(*) kcount\n" +
  11828. //" FROM (SELECT k.usercode\n" +
  11829. //" ,kiln.kilncode\n" +
  11830. //" ,p.procedurename\n" +
  11831. //" ,trunc(k.createtime) kdate\n" +
  11832. //" FROM tp_pm_kilncardata k\n" +
  11833. //" LEFT JOIN tp_mst_kiln kiln\n" +
  11834. //" ON kiln.kilnid = k.kilnid\n" +
  11835. //" LEFT JOIN tp_pc_procedure p\n" +
  11836. //" ON p.procedureid = k.procedureid\n" +
  11837. //" WHERE k.valueflag = '1'\n" +
  11838. //" AND k.AccountID = :in_AccountID\n" +
  11839. //" AND k.createtime >= :in_BeginDate\n" +
  11840. //" AND k.createtime <= :in_EndDate\n" +
  11841. //" AND instr(','|| :procedureids ||',', ','|| k.procedureid ||',' ) > 0) kk\n" +
  11842. //" GROUP BY kk.procedurename, kk.usercode, kk.kilncode, kk.kdate\n" +
  11843. //" ORDER BY kk.procedurename, kk.usercode, kk.kilncode, kk.kdate";
  11844. string sqlString = "WITH kilnData AS\n" +
  11845. " (SELECT k.usercode\n" +
  11846. " ,kiln.kilncode\n" +
  11847. " ,p.procedurename\n" +
  11848. " ,trunc(k.createtime) kdate\n" +
  11849. " ,k.userid\n" +
  11850. " ,k.procedureid\n" +
  11851. " ,k.kilnid\n" +
  11852. " ,k.KILNCARBATCHNO\n" +
  11853. " FROM tp_pm_kilncardata k\n" +
  11854. " LEFT JOIN tp_mst_kiln kiln\n" +
  11855. " ON kiln.kilnid = k.kilnid\n" +
  11856. " LEFT JOIN tp_pc_procedure p\n" +
  11857. " ON p.procedureid = k.procedureid\n" +
  11858. " WHERE k.valueflag = '1'\n" +
  11859. " AND k.AccountID = :in_AccountID\n" +
  11860. " AND k.createtime >= :in_BeginDate\n" +
  11861. " AND k.createtime <= :in_EndDate\n" +
  11862. " AND instr(',' || :procedureids || ',', ',' || k.procedureid || ',') > 0)\n" +
  11863. "SELECT kd.procedurename\n" +
  11864. " ,kd.usercode\n" +
  11865. " ,kd.kilncode\n" +
  11866. " ,kd.kdate\n" +
  11867. " ,kd.kcount\n" +
  11868. " ,kpd.kpcount\n" +
  11869. " FROM (SELECT kk.procedurename\n" +
  11870. " ,kk.usercode\n" +
  11871. " ,kk.kilncode\n" +
  11872. " ,kk.kdate\n" +
  11873. " ,kk.procedureid\n" +
  11874. " ,kk.userid\n" +
  11875. " ,kk.kilnid\n" +
  11876. " ,COUNT(*) kcount\n" +
  11877. " FROM kilnData kk\n" +
  11878. " GROUP BY kk.procedurename\n" +
  11879. " ,kk.usercode\n" +
  11880. " ,kk.kilncode\n" +
  11881. " ,kk.kdate\n" +
  11882. " ,kk.procedureid\n" +
  11883. " ,kk.userid\n" +
  11884. " ,kk.kilnid) kd\n" +
  11885. " LEFT JOIN (SELECT kk.kdate\n" +
  11886. " ,kk.procedureid\n" +
  11887. " ,kk.userid\n" +
  11888. " ,kk.kilnid\n" +
  11889. " ,COUNT(*) kpcount\n" +
  11890. " FROM kilnData kk\n" +
  11891. " INNER JOIN tp_pm_productiondata pd\n" +
  11892. " ON pd.valueflag = '1'\n" +
  11893. " AND pd.procedureid = kk.procedureid\n" +
  11894. " AND pd.kilnid = kk.kilnid\n" +
  11895. " AND pd.KILNCARBATCHNO = kk.KILNCARBATCHNO\n" +
  11896. " GROUP BY kk.kdate, kk.procedureid, kk.userid, kk.kilnid) kpd\n" +
  11897. " ON kpd.kdate = kd.kdate\n" +
  11898. " AND kpd.procedureid = kd.procedureid\n" +
  11899. " AND kpd.userid = kd.userid\n" +
  11900. " AND kpd.kilnid = kd.kilnid\n" +
  11901. " ORDER BY kd.procedurename, kd.usercode, kd.kilncode, kd.kdate";
  11902. OracleParameter[] parascount = new OracleParameter[]{
  11903. new OracleParameter(":in_AccountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  11904. new OracleParameter(":in_BeginDate",OracleDbType.Date,se.startDateTime,ParameterDirection.Input),
  11905. new OracleParameter(":in_EndDate",OracleDbType.Date,se.endDateTime,ParameterDirection.Input),
  11906. new OracleParameter(":procedureids",OracleDbType.Varchar2,se.ProcedureIDS,ParameterDirection.Input),
  11907. };
  11908. DataTable dt = conn.GetSqlResultToDt(sqlString, parascount);
  11909. if (dt != null)
  11910. {
  11911. sre.Data.Tables.Add(dt);
  11912. }
  11913. conn.Commit();
  11914. return sre;
  11915. }
  11916. catch (Exception ex)
  11917. {
  11918. throw ex;
  11919. }
  11920. finally
  11921. {
  11922. if (conn != null &&
  11923. conn.ConnState == ConnectionState.Open)
  11924. {
  11925. conn.Disconnect();
  11926. }
  11927. }
  11928. }
  11929. #endregion
  11930. /// <summary>
  11931. /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据 若生产工序包含干补,则执行干补的查询sql,且只查询干补一个生产工序
  11932. /// </summary>
  11933. /// <param name="searchEntity">生产数据实体类</param>
  11934. /// <param name="user">用户基本信息</param>
  11935. /// <returns>DataTable</returns>
  11936. public static DataTable GetProductionData(SearchProductionDataEntity searchEntity, SUserInfo user)
  11937. {
  11938. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  11939. string sqlString = "";
  11940. IDataParameter[] paras = null;
  11941. try
  11942. {
  11943. if (!string.IsNullOrEmpty(searchEntity.ProcedureIDS + "") && (',' + searchEntity.ProcedureIDS + ',').Contains(",18,"))
  11944. {
  11945. sqlString = @"
  11946. SELECT
  11947. -- lsq 干补操作时间,关联报损表的pd.UserCode实际为干补完成工序的操作时间
  11948. -- pd.CreateTime,
  11949. -- pd.UpdateTime,
  11950. t.SPECIALREPAIRTIME AS CreateTime,
  11951. -- end
  11952. pd.ProductionDataID,
  11953. pd.ProductionLineCode,
  11954. '10-0干补' AS procedureName,
  11955. pd.BarCode,
  11956. pd.GoodsCode,
  11957. pd.GoodsName,
  11958. -- lsq 干补生产工号,关联报损表的pd.UserCode实际为干补完成工序的生产工号
  11959. -- pd.UserCode,
  11960. t.SPECIALREPAIRUSERCODE AS UserCode,
  11961. -- end
  11962. pd.IsPublicBody,
  11963. decode( pd.ProcedureModel, '1', '计数模型', '检验模型' ) AS ProcedureModel,
  11964. pmt.ProcedureModelTypeName,
  11965. decode( pd.PieceType, '1', '不计件', '同工种策略' ) AS PieceType,
  11966. pd.IsReworked,
  11967. gl.GoodsLevelName AS GoodsGrade,
  11968. o.OrganizationName,
  11969. pd.Remarks,
  11970. pd.KilnID,
  11971. pd.KilnCode,
  11972. pd.KilnName,
  11973. pd.KilnCarID,
  11974. pd.KilnCarCode,
  11975. pd.KilnCarName,
  11976. pd.KilnCarPosition,
  11977. dd.DictionaryValue KilnCarPositionName,
  11978. gt.GoodsTypeName,
  11979. u.usercode AS barusercode,
  11980. pd.GroutingUserCode,
  11981. pd.GroutingMouldCode,
  11982. pd.GroutingDate,
  11983. pd.GroutingNum,
  11984. u.username AS barusername,
  11985. gdd.glazingroom,
  11986. decode( pd.Goodsleveltypeid, '4', '正品', '5', '副品', '6', '重烧', '7', '次品', '9', '干补', '' ) AS Goodsleveltype,
  11987. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  11988. pd.SpecialRepairFlag,
  11989. pd.procedureName AS finishProcedureName,
  11990. pin.ProductionLineName,
  11991. pcp.procedurename inprocedurename,
  11992. gdd.SecurityCode,
  11993. gdd.TestMouldFlag,
  11994. FP.EBELN,
  11995. FP.EBELP,
  11996. FP.SCANTIME
  11997. FROM
  11998. tp_pm_scrapproduct t
  11999. INNER JOIN TP_PM_ProductionData pd ON t.productiondataid = pd.productiondataid
  12000. left join TP_PC_PRODUCTIONLINE pin on pd.productionlineid = pin.productionlineid
  12001. LEFT JOIN TP_MST_USER u ON pd.Createuserid = u.userid
  12002. LEFT JOIN TP_MST_Goods g ON pd.GoodsID = g.GoodsID
  12003. LEFT JOIN TP_MST_GoodsType gt ON g.GoodsTypeID = gt.GoodsTypeID
  12004. LEFT JOIN TP_SYS_ProcedureModelType pmt ON pd.ModelType = pmt.PROCEDUREMODELTYPEID
  12005. LEFT JOIN TP_MST_GoodsLevel gl ON pd.Goodslevelid = gl.Goodslevelid
  12006. LEFT JOIN TP_MST_ORGANIZATION o ON pd.OrganizationID = o.OrganizationID
  12007. LEFT JOIN TP_MST_DataDictionary dd ON pd.KilnCarPosition = dd.DictionaryID
  12008. LEFT JOIN tp_pm_inproduction inp ON inp.barcode = pd.barcode
  12009. LEFT JOIN tp_pc_procedure pcp ON pcp.procedureid = inp.procedureid
  12010. LEFT JOIN TP_MST_Logo ON pd.logoid = TP_MST_Logo.logoid
  12011. LEFT JOIN TP_PM_GroutingDailyDetail gdd ON pd.Groutingdailydetailid = gdd.Groutingdailydetailid
  12012. LEFT JOIN TP_PM_FINISHEDPRODUCT FP ON FP.Groutingdailydetailid = gdd.Groutingdailydetailid
  12013. WHERE
  12014. t.goodsleveltypeid = 9
  12015. AND pd.VALUEFLAG = 1
  12016. AND ( :ProductionLineID = '' OR :ProductionLineID IS NULL OR pd.ProductionLineID =:ProductionLineID )
  12017. AND ( :goodsCode = '' OR :goodsCode IS NULL OR instr( pd.goodsCode,:goodsCode ) > 0 )
  12018. AND ( :goodsName = '' OR :goodsName IS NULL OR instr( pd.goodsName,:goodsName ) > 0 )
  12019. AND ( :userCode = '' OR :userCode IS NULL OR instr( pd.userCode,:userCode ) > 0 )
  12020. AND ( :organizationID = 0 OR :organizationID IS NULL OR pd.organizationID =:organizationID )
  12021. AND ( t.specialrepairtime >=:begindate AND t.specialrepairtime <=:enddate )
  12022. AND ( :isReworked = '' OR :isReworked IS NULL OR ( instr( :isReworked, pd.isReworked ) > 0 ) )
  12023. AND ( :pKilnCode = '' OR :pKilnCode IS NULL OR pd.KilnCode = :pKilnCode )
  12024. AND ( :pKilnCarCode = '' OR :pKilnCarCode IS NULL OR instr( pd.KilnCarCode,:pKilnCarCode ) > 0 )
  12025. AND ( :pKilnCarPosition = '' OR :pKilnCarPosition IS NULL OR pd.KilnCarPosition = :pKilnCarPosition )
  12026. AND ( :remarks = '' OR :remarks IS NULL OR instr( pd.remarks,:remarks ) > 0 )
  12027. AND ( :goodstypecode = '' OR :goodstypecode IS NULL OR instr( gt.goodstypecode,:goodstypecode ) = 1 )
  12028. AND ( :TestMouldFlag IS NULL OR gdd.TestMouldFlag = :TestMouldFlag) ";
  12029. // 查询速度优化 begin 2022-8-19
  12030. // 采购凭证号 固定10位
  12031. if (searchEntity.EBELN.Length == 10)
  12032. {
  12033. sqlString += @" AND FP.EBELN = :EBELN ";
  12034. }
  12035. else if (searchEntity.EBELN.Length > 0)
  12036. {
  12037. sqlString += @" AND instr( FP.EBELN,:EBELN ) > 0 ";
  12038. }
  12039. // 采购凭证号 固定5位
  12040. if (searchEntity.EBELP.Length == 5)
  12041. {
  12042. sqlString += @" AND FP.EBELP = :EBELP ";
  12043. }
  12044. else if (searchEntity.EBELP.Length > 0)
  12045. {
  12046. sqlString += @" AND instr( FP.EBELP,:EBELP ) > 0 ";
  12047. }
  12048. // 产品条码 固定11位
  12049. if (searchEntity.BarCode.Length == 11)
  12050. {
  12051. sqlString += @" AND pd.BarCode = :barCode ";
  12052. }
  12053. else if (searchEntity.BarCode.Length > 0)
  12054. {
  12055. sqlString += @" AND instr( pd.BarCode,:barCode ) > 0 ";
  12056. }
  12057. // 查询速度优化 end 2022-8-19
  12058. paras = new OracleParameter[]{
  12059. new OracleParameter(":ProductionLineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12060. new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12061. new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12062. new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12063. new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12064. new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12065. new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12066. new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12067. new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12068. new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12069. new OracleParameter(":pKilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12070. new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12071. new OracleParameter(":pKilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12072. new OracleParameter(":goodstypecode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12073. new OracleParameter(":TestMouldFlag", OracleDbType.Char, searchEntity.TestMouldFlag, ParameterDirection.Input),
  12074. new OracleParameter(":EBELN", OracleDbType.Varchar2,searchEntity.EBELN, ParameterDirection.Input),
  12075. new OracleParameter(":EBELP", OracleDbType.Varchar2,searchEntity.EBELP, ParameterDirection.Input)
  12076. };
  12077. }
  12078. else
  12079. {
  12080. sqlString = @"SELECT
  12081. TP_PM_ProductionData.CreateTime,
  12082. TP_PM_ProductionData.UpdateTime,
  12083. TP_PM_ProductionData.ProductionDataID,
  12084. TP_PM_ProductionData.ProductionLineCode,
  12085. TP_PM_ProductionData.BarCode,
  12086. TP_PM_ProductionData.GoodsCode,
  12087. TP_PM_ProductionData.GoodsName,
  12088. TP_PM_ProductionData.UserCode,
  12089. /* decode(TP_PM_ProductionData.IsPublicBody, '1', '公坯' , '正常') as IsPublicBody,*/
  12090. TP_PM_ProductionData.IsPublicBody,
  12091. decode(TP_PM_ProductionData.ProcedureModel, '1', '计数模型', '检验模型') AS ProcedureModel,
  12092. TP_SYS_ProcedureModelType.ProcedureModelTypeName,
  12093. /* decode(TP_PM_ProductionData.PieceType, '1', '不计件' , '2','按产品计','按车计') as PieceType,*/
  12094. decode(TP_PM_ProductionData.PieceType, '1', '不计件', '同工种策略') AS PieceType,
  12095. /*decode(TP_PM_ProductionData.IsReworked, '1', '是' , '否') as IsReworked,*/
  12096. TP_PM_ProductionData.IsReworked,
  12097. TP_MST_GoodsLevel.GoodsLevelName AS GoodsGrade,
  12098. TP_MST_ORGANIZATION.OrganizationName,
  12099. TP_PM_ProductionData.Remarks,
  12100. TP_PM_ProductionData.KilnID,
  12101. TP_PM_ProductionData.KilnCode,
  12102. TP_PM_ProductionData.KilnName,
  12103. TP_PM_ProductionData.KilnCarID,
  12104. TP_PM_ProductionData.KilnCarCode,
  12105. TP_PM_ProductionData.KilnCarName,
  12106. TP_PM_ProductionData.KilnCarPosition,
  12107. TP_MST_DataDictionary.DictionaryValue KilnCarPositionName,
  12108. TP_MST_GoodsType.GoodsTypeName,
  12109. TP_MST_USER.usercode AS barusercode,
  12110. TP_PM_ProductionData.GroutingUserCode,
  12111. TP_PM_ProductionData.GroutingMouldCode,
  12112. TP_PM_ProductionData.GroutingDate,
  12113. TP_PM_ProductionData.GroutingNum,
  12114. TP_MST_USER.username AS barusername,
  12115. gdd.glazingroom,
  12116. gdd.SecurityCode,
  12117. gdd.TestMouldFlag,
  12118. decode(TP_PM_ProductionData.Goodsleveltypeid, '4', '正品', '5', '副品', '6', '重烧', '7', '次品', '') AS Goodsleveltype,
  12119. REPLACE ( (TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']'), '[]', '' ) AS LogoCodeName,
  12120. TP_PM_ProductionData.SpecialRepairFlag,
  12121. -- TP_PM_ProductionData.procedureName,
  12122. pdd.procedureName as procedureName, --生产工序名称显示 xcm 2023-3-22
  12123. TP_PM_ProductionData.ProductionLineName,
  12124. pcp.procedurename inprocedurename,
  12125. FP.EBELN,
  12126. FP.EBELP,
  12127. FP.SCANTIME,
  12128. PPD.PROCEDURENAME CJPROCEDURENAME
  12129. FROM
  12130. TP_PM_ProductionData
  12131. Left join tp_pc_procedure pdd ON TP_PM_ProductionData.procedureid = pdd.procedureid -- 生产工序名称显示 xcm 2023-3-22
  12132. LEFT JOIN tp_pm_inproduction inp ON inp.barcode = TP_PM_ProductionData.barcode
  12133. LEFT JOIN tp_pc_procedure pcp ON pcp.procedureid = inp.procedureid
  12134. LEFT JOIN TP_SYS_ProcedureModelType ON TP_PM_ProductionData.ModelType = TP_SYS_ProcedureModelType.PROCEDUREMODELTYPEID
  12135. LEFT JOIN TP_MST_ORGANIZATION ON TP_PM_ProductionData.OrganizationID = TP_MST_ORGANIZATION.OrganizationID
  12136. LEFT JOIN TP_MST_DataDictionary ON TP_PM_ProductionData.KilnCarPosition = TP_MST_DataDictionary.DictionaryID
  12137. LEFT JOIN TP_MST_GoodsLevel ON TP_PM_ProductionData.Goodslevelid = TP_MST_GoodsLevel.Goodslevelid
  12138. LEFT JOIN TP_MST_Goods ON TP_PM_ProductionData.GoodsID = TP_MST_Goods.GoodsID
  12139. LEFT JOIN TP_MST_GoodsType ON TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID
  12140. LEFT JOIN TP_MST_USER ON TP_PM_ProductionData.Createuserid = TP_MST_USER.userid
  12141. LEFT JOIN TP_MST_Logo ON TP_PM_ProductionData.logoid = TP_MST_Logo.logoid
  12142. LEFT JOIN TP_PM_GroutingDailyDetail gdd ON TP_PM_ProductionData.Groutingdailydetailid = gdd.Groutingdailydetailid
  12143. LEFT JOIN TP_PM_FINISHEDPRODUCT FP ON FP.Groutingdailydetailid = gdd.Groutingdailydetailid
  12144. LEFT JOIN tp_pc_procedure PPD ON PPD.PROCEDUREID = TP_PM_ProductionData.Finishedprocedureid
  12145. WHERE
  12146. TP_PM_ProductionData.VALUEFLAG = 1
  12147. AND ( :ProcedureIDS= '' or :ProcedureIDS is null or instr(',' || :ProcedureIDS || ',', ',' || TP_PM_ProductionData.procedureid || ',') > 0)
  12148. AND ( :ProductionLineID = '' OR :ProductionLineID IS NULL OR TP_PM_ProductionData.ProductionLineID =:ProductionLineID )
  12149. AND ( :goodsCode = '' OR :goodsCode IS NULL OR instr( TP_PM_ProductionData.goodsCode,:goodsCode ) > 0 )
  12150. AND ( :goodsName = '' OR :goodsName IS NULL OR instr( TP_PM_ProductionData.goodsName,:goodsName ) > 0 )
  12151. AND ( :userCode = '' OR :userCode IS NULL OR instr( TP_PM_ProductionData.userCode,:userCode ) > 0 )
  12152. AND ( :organizationID = 0 OR :organizationID IS NULL OR TP_PM_ProductionData.organizationID =:organizationID )
  12153. AND (TP_PM_ProductionData.CreateTime>=:begindate and TP_PM_ProductionData.CreateTime<=:enddate)
  12154. AND ( :isReworked = '' OR :isReworked IS NULL OR ( instr( :isReworked, TP_PM_ProductionData.isReworked ) > 0 ) )
  12155. AND ( :pKilnCode = '' OR :pKilnCode IS NULL OR TP_PM_ProductionData.KilnCode = :pKilnCode )
  12156. AND ( :pKilnCarCode = '' OR :pKilnCarCode IS NULL OR instr( TP_PM_ProductionData.KilnCarCode,:pKilnCarCode ) > 0 )
  12157. AND ( :pKilnCarPosition = '' OR :pKilnCarPosition IS NULL OR TP_PM_ProductionData.KilnCarPosition = :pKilnCarPosition )
  12158. AND ( :remarks = '' OR :remarks IS NULL OR instr( TP_PM_ProductionData.remarks,:remarks ) > 0 )
  12159. AND ( :goodstypecode = '' OR :goodstypecode IS NULL OR instr( TP_MST_GoodsType.goodstypecode,:goodstypecode ) = 1 )
  12160. AND ( :TestMouldFlag IS NULL OR gdd.TestMouldFlag = :TestMouldFlag) ";
  12161. // 查询速度优化 begin 2022-8-19
  12162. // 采购凭证号 固定10位
  12163. if (searchEntity.EBELN.Length == 10)
  12164. {
  12165. sqlString += @" AND FP.EBELN = :EBELN ";
  12166. }
  12167. else if (searchEntity.EBELN.Length > 0)
  12168. {
  12169. sqlString += @" AND instr( FP.EBELN,:EBELN ) > 0 ";
  12170. }
  12171. // 采购凭证号 固定5位
  12172. if (searchEntity.EBELP.Length == 5)
  12173. {
  12174. sqlString += @" AND FP.EBELP = :EBELP ";
  12175. }
  12176. else if (searchEntity.EBELP.Length > 0)
  12177. {
  12178. sqlString += @" AND instr( FP.EBELP,:EBELP ) > 0 ";
  12179. }
  12180. // 产品条码 固定11位
  12181. if (searchEntity.BarCode.Length == 11)
  12182. {
  12183. sqlString += @" AND TP_PM_ProductionData.BarCode = :barCode ";
  12184. }
  12185. else if (searchEntity.BarCode.Length > 0)
  12186. {
  12187. sqlString += @" AND instr( TP_PM_ProductionData.BarCode,:barCode ) > 0 ";
  12188. }
  12189. // 查询速度优化 end 2022-8-19
  12190. // 如果是11工序,只查本烧
  12191. if ((',' + searchEntity.ProcedureIDS + ',').Contains(",11,"))
  12192. {
  12193. sqlString += @" AND TP_PM_ProductionData.ISREFIRE = '0' and TP_PM_ProductionData.ISLENGBU = '0' ";
  12194. }
  12195. paras = new OracleParameter[]{
  12196. new OracleParameter(":ProcedureIDS",OracleDbType.Varchar2, searchEntity.ProcedureIDS, ParameterDirection.Input),
  12197. new OracleParameter(":ProductionLineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12198. new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12199. new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12200. new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12201. new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12202. new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12203. new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12204. new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12205. new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12206. new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12207. new OracleParameter(":pKilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12208. new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12209. new OracleParameter(":pKilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12210. new OracleParameter(":goodstypecode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12211. new OracleParameter(":TestMouldFlag", OracleDbType.Char, searchEntity.TestMouldFlag, ParameterDirection.Input),
  12212. new OracleParameter(":EBELN", OracleDbType.Varchar2,searchEntity.EBELN, ParameterDirection.Input),
  12213. new OracleParameter(":EBELP", OracleDbType.Varchar2,searchEntity.EBELP, ParameterDirection.Input)
  12214. };
  12215. }
  12216. oracleConn.Open();
  12217. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  12218. if (ds != null && ds.Tables.Count > 0)
  12219. {
  12220. return ds.Tables[0];
  12221. }
  12222. else
  12223. {
  12224. return null;
  12225. }
  12226. }
  12227. catch (Exception ex)
  12228. {
  12229. throw ex;
  12230. }
  12231. finally
  12232. {
  12233. if (oracleConn.ConnState == ConnectionState.Open)
  12234. {
  12235. oracleConn.Close();
  12236. }
  12237. }
  12238. /* if (!string.IsNullOrEmpty(searchEntity.ProcedureIDS + ""))
  12239. {
  12240. if ((','+searchEntity.ProcedureIDS+',').Contains(",18,"))
  12241. {
  12242. try
  12243. {
  12244. string sqlString = @"
  12245. SELECT
  12246. -- lsq 干补操作时间,关联报损表的pd.UserCode实际为干补完成工序的操作时间
  12247. -- pd.CreateTime,
  12248. -- pd.UpdateTime,
  12249. t.SPECIALREPAIRTIME AS CreateTime,
  12250. -- end
  12251. pd.ProductionDataID,
  12252. pd.ProductionLineCode,
  12253. '10-0干补' AS procedureName,
  12254. pd.BarCode,
  12255. pd.GoodsCode,
  12256. pd.GoodsName,
  12257. -- lsq 干补生产工号,关联报损表的pd.UserCode实际为干补完成工序的生产工号
  12258. -- pd.UserCode,
  12259. t.SPECIALREPAIRUSERCODE AS UserCode,
  12260. -- end
  12261. pd.IsPublicBody,
  12262. decode( pd.ProcedureModel, '1', '计数模型', '检验模型' ) AS ProcedureModel,
  12263. pmt.ProcedureModelTypeName,
  12264. decode( pd.PieceType, '1', '不计件', '同工种策略' ) AS PieceType,
  12265. pd.IsReworked,
  12266. gl.GoodsLevelName AS GoodsGrade,
  12267. o.OrganizationName,
  12268. pd.Remarks,
  12269. pd.KilnID,
  12270. pd.KilnCode,
  12271. pd.KilnName,
  12272. pd.KilnCarID,
  12273. pd.KilnCarCode,
  12274. pd.KilnCarName,
  12275. pd.KilnCarPosition,
  12276. dd.DictionaryValue KilnCarPositionName,
  12277. gt.GoodsTypeName,
  12278. u.usercode AS barusercode,
  12279. pd.GroutingUserCode,
  12280. pd.GroutingMouldCode,
  12281. pd.GroutingDate,
  12282. pd.GroutingNum,
  12283. u.username AS barusername,
  12284. gdd.glazingroom,
  12285. decode( pd.Goodsleveltypeid, '4', '正品', '5', '副品', '6', '重烧', '7', '次品', '9', '干补', '' ) AS Goodsleveltype,
  12286. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  12287. pd.SpecialRepairFlag,
  12288. pd.procedureName AS finishProcedureName,
  12289. pd.ProductionLineName,
  12290. pcp.procedurename inprocedurename,
  12291. gdd.SecurityCode
  12292. FROM
  12293. tp_pm_scrapproduct t
  12294. INNER JOIN TP_PM_ProductionData pd ON t.productiondataid = pd.productiondataid
  12295. LEFT JOIN TP_MST_USER u ON pd.Createuserid = u.userid
  12296. LEFT JOIN TP_MST_Goods g ON pd.GoodsID = g.GoodsID
  12297. LEFT JOIN TP_MST_GoodsType gt ON g.GoodsTypeID = gt.GoodsTypeID
  12298. LEFT JOIN TP_SYS_ProcedureModelType pmt ON pd.ModelType = pmt.PROCEDUREMODELTYPEID
  12299. LEFT JOIN TP_MST_GoodsLevel gl ON pd.Goodslevelid = gl.Goodslevelid
  12300. LEFT JOIN TP_MST_ORGANIZATION o ON pd.OrganizationID = o.OrganizationID
  12301. LEFT JOIN TP_MST_DataDictionary dd ON pd.KilnCarPosition = dd.DictionaryID
  12302. LEFT JOIN tp_pm_inproduction inp ON inp.barcode = pd.barcode
  12303. LEFT JOIN tp_pc_procedure pcp ON pcp.procedureid = inp.procedureid
  12304. LEFT JOIN TP_MST_Logo ON pd.logoid = TP_MST_Logo.logoid
  12305. LEFT JOIN TP_PM_GroutingDailyDetail gdd ON pd.Groutingdailydetailid = gdd.Groutingdailydetailid
  12306. WHERE
  12307. --t.goodsleveltypeid = 9
  12308. pd.VALUEFLAG = 1
  12309. AND ( :ProductionLineID = '' OR :ProductionLineID IS NULL OR pd.ProductionLineID =:ProductionLineID )
  12310. AND ( :barCode = '' OR :barCode IS NULL OR instr( pd.BarCode,:barCode ) > 0 )
  12311. AND ( :goodsCode = '' OR :goodsCode IS NULL OR instr( pd.goodsCode,:goodsCode ) > 0 )
  12312. AND ( :goodsName = '' OR :goodsName IS NULL OR instr( pd.goodsName,:goodsName ) > 0 )
  12313. AND ( :userCode = '' OR :userCode IS NULL OR instr( pd.userCode,:userCode ) > 0 )
  12314. AND ( :organizationID = 0 OR :organizationID IS NULL OR pd.organizationID =:organizationID )
  12315. AND ( t.specialrepairtime >=:begindate AND t.specialrepairtime <=:enddate )
  12316. AND ( :isReworked = '' OR :isReworked IS NULL OR ( instr( :isReworked, pd.isReworked ) > 0 ) )
  12317. AND ( :pKilnCode = '' OR :pKilnCode IS NULL OR pd.KilnCode = :pKilnCode )
  12318. AND ( :pKilnCarCode = '' OR :pKilnCarCode IS NULL OR instr( pd.KilnCarCode,:pKilnCarCode ) > 0 )
  12319. AND ( :pKilnCarPosition = '' OR :pKilnCarPosition IS NULL OR pd.KilnCarPosition = :pKilnCarPosition )
  12320. AND ( :remarks = '' OR :remarks IS NULL OR instr( pd.remarks,:remarks ) > 0 )
  12321. AND ( :goodstypecode = '' OR :goodstypecode IS NULL OR instr( gt.goodstypecode,:goodstypecode ) = 1 )
  12322. ";
  12323. OracleParameter[] parascount = new OracleParameter[]{
  12324. new OracleParameter(":ProductionLineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12325. new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12326. new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12327. new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12328. new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12329. new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12330. new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12331. new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12332. new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12333. new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12334. new OracleParameter(":pKilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12335. new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12336. new OracleParameter(":pKilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12337. new OracleParameter(":goodstypecode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12338. };
  12339. oracleConn.Open();
  12340. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, parascount);
  12341. if (ds != null && ds.Tables.Count > 0)
  12342. {
  12343. return ds.Tables[0];
  12344. }
  12345. else
  12346. {
  12347. return null;
  12348. }
  12349. }
  12350. catch (Exception ex)
  12351. {
  12352. throw ex;
  12353. }
  12354. finally
  12355. {
  12356. if (oracleConn.ConnState == ConnectionState.Open)
  12357. {
  12358. oracleConn.Close();
  12359. }
  12360. }
  12361. }
  12362. else {
  12363. string procsql = "PRO_RPT_GetProductionData";
  12364. try
  12365. {
  12366. IDataParameter[] paras = new OracleParameter[]
  12367. {
  12368. new OracleParameter("in_procedureList",OracleDbType.Varchar2, searchEntity.ProcedureIDS, ParameterDirection.Input),
  12369. new OracleParameter("in_LineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12370. new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12371. new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12372. new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12373. new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12374. new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12375. new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12376. new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12377. new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12378. new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12379. new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  12380. new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  12381. new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12382. new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12383. new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12384. new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  12385. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  12386. new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12387. };
  12388. oracleConn.Open();
  12389. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  12390. if (returnDs != null && returnDs.Tables.Count > 0)
  12391. {
  12392. return returnDs.Tables[0];
  12393. }
  12394. else
  12395. {
  12396. return null;
  12397. }
  12398. }
  12399. catch (Exception ex)
  12400. {
  12401. throw ex;
  12402. }
  12403. finally
  12404. {
  12405. if (oracleConn.ConnState == ConnectionState.Open)
  12406. {
  12407. oracleConn.Close();
  12408. }
  12409. }
  12410. }
  12411. }
  12412. else {
  12413. string procsql = "PRO_RPT_GetProductionData";
  12414. try
  12415. {
  12416. IDataParameter[] paras = new OracleParameter[]
  12417. {
  12418. new OracleParameter("in_procedureList",OracleDbType.Varchar2, searchEntity.ProcedureIDS, ParameterDirection.Input),
  12419. new OracleParameter("in_LineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12420. new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12421. new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12422. new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12423. new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12424. new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12425. new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12426. new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12427. new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12428. new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12429. new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  12430. new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  12431. new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12432. new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12433. new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12434. new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  12435. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  12436. new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12437. };
  12438. oracleConn.Open();
  12439. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  12440. if (returnDs != null && returnDs.Tables.Count > 0)
  12441. {
  12442. return returnDs.Tables[0];
  12443. }
  12444. else
  12445. {
  12446. return null;
  12447. }
  12448. }
  12449. catch (Exception ex)
  12450. {
  12451. throw ex;
  12452. }
  12453. finally
  12454. {
  12455. if (oracleConn.ConnState == ConnectionState.Open)
  12456. {
  12457. oracleConn.Close();
  12458. }
  12459. }
  12460. }*/
  12461. }
  12462. /// <summary>
  12463. /// 取得RPT080106(温湿计明细)的汇总信息查询数据
  12464. /// </summary>
  12465. /// <param name="user">登录用户信息</param>
  12466. /// <param name="se">查询条件</param>
  12467. /// <returns>查询结果</returns>
  12468. public static ServiceResultEntity GetRPT080106IData(SUserInfo user, CelsiusRecordEntity se)
  12469. {
  12470. IDBConnection conn = null;
  12471. try
  12472. {
  12473. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  12474. List<OracleParameter> parameters = new List<OracleParameter>();
  12475. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT080106ISQL(user, se, ref parameters));
  12476. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  12477. ServiceResultEntity sre = new ServiceResultEntity();
  12478. if (data == null || data.Rows.Count == 0)
  12479. {
  12480. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  12481. return sre;
  12482. }
  12483. sre.Data = new DataSet();
  12484. sre.Data.Tables.Add(data);
  12485. return sre;
  12486. }
  12487. catch (Exception ex)
  12488. {
  12489. throw ex;
  12490. }
  12491. finally
  12492. {
  12493. if (conn != null &&
  12494. conn.ConnState == ConnectionState.Open)
  12495. {
  12496. conn.Close();
  12497. }
  12498. }
  12499. }
  12500. /// <summary>
  12501. /// 取得RPT080106(温湿计明细)的汇总信息查询数据sql
  12502. /// </summary>
  12503. /// <returns>sql</returns>
  12504. private static string GetRPT080106ISQL(SUserInfo user, CelsiusRecordEntity se, ref List<OracleParameter> parameters)
  12505. {
  12506. string selSql = @"Select cr.*,t.*,to_char(cr.RecordDate,'mm-dd hh24:mi') as RecordDateStr from TP_PM_CelsiusRecord cr
  12507. Left join TP_MST_User u On cr.ThermometerID = u.UserId
  12508. Inner join TP_MST_Thermometer t On cr.ThermometerID = t.ThermometerID
  12509. Where cr.AccountID =:AccountID and cr.ValueFlag = '1' ";
  12510. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  12511. if (!string.IsNullOrEmpty(se.ThermometerIDS))
  12512. {
  12513. selSql = selSql + " AND instr(','||:ThermometerIDS||',',','||cr.ThermometerID||',')>0 ";
  12514. parameters.Add(new OracleParameter(":ThermometerIDS", OracleDbType.NVarchar2, se.ThermometerIDS, ParameterDirection.Input));
  12515. }
  12516. if (!string.IsNullOrEmpty(se.Remarks))
  12517. {
  12518. selSql = selSql + " AND instr(cr.Remarks,:Remarks) >0 ";
  12519. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  12520. }
  12521. if (se.RecordDate.HasValue)
  12522. {
  12523. selSql = selSql + " AND cr.CreateTime>= :CreateTimeStart ";
  12524. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.RecordDate.Value, ParameterDirection.Input));
  12525. }
  12526. if (se.RecordDateEnd.HasValue)
  12527. {
  12528. selSql = selSql + " AND cr.CreateTime<= :CreateTimeEnd ";
  12529. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.RecordDateEnd.Value, ParameterDirection.Input));
  12530. }
  12531. selSql +=
  12532. // 温湿计查看权限
  12533. " AND EXISTS (SELECT UP.PurviewID" +
  12534. " FROM TP_MST_UserPurview UP" +
  12535. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.ViewCelsius + "'" +
  12536. " AND (UP.PurviewID = -1 OR UP.PurviewID = CR.ThermometerID)" +
  12537. " AND UP.UserId = :UPUserId)";
  12538. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  12539. selSql = selSql + " order by RecordDate asc";
  12540. return selSql;
  12541. }
  12542. /// <summary>
  12543. /// 取得RPT030110画面(半检登记汇总表)的汇总信息查询数据
  12544. /// </summary>
  12545. /// <param name="user">登录用户信息</param>
  12546. /// <param name="se">查询条件</param>
  12547. /// <returns>查询结果</returns>
  12548. public static ServiceResultEntity GetRPT030110Data(SUserInfo user, SemiCheckEntity se)
  12549. {
  12550. IDBConnection conn = null;
  12551. try
  12552. {
  12553. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  12554. List<OracleParameter> parameters = new List<OracleParameter>();
  12555. string sql = ReportModuleLogic.GetRPT030110SSQL(user, se, ref parameters);
  12556. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  12557. ServiceResultEntity sre = new ServiceResultEntity();
  12558. if (data == null || data.Rows.Count == 0)
  12559. {
  12560. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  12561. return sre;
  12562. }
  12563. sre.Data = new DataSet();
  12564. sre.Data.Tables.Add(data);
  12565. return sre;
  12566. }
  12567. catch (Exception ex)
  12568. {
  12569. throw ex;
  12570. }
  12571. finally
  12572. {
  12573. if (conn != null &&
  12574. conn.ConnState == ConnectionState.Open)
  12575. {
  12576. conn.Close();
  12577. }
  12578. }
  12579. }
  12580. /// <summary>
  12581. /// 获取RPT030110画面(半检登记汇总表)的汇总信息查询sql
  12582. /// </summary>
  12583. /// <returns>sql</returns>
  12584. private static string GetRPT030110SSQL(SUserInfo user, SemiCheckEntity se, ref List<OracleParameter> parameters)
  12585. {
  12586. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  12587. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  12588. #region
  12589. // string sqlString = @"
  12590. // SELECT t.reworkprocedureid -- 返工工序id
  12591. // ,decode(gid,
  12592. // 7,
  12593. // '总计',
  12594. // 3,
  12595. // '合计【' || t.reworkprocedurename || '】',
  12596. // 0,
  12597. // t.reworkprocedurename,
  12598. // '--') reworkprocedurename -- 返工工序
  12599. // ,t.goodstypecode2 -- 产品二级类别
  12600. // ,decode(gid,
  12601. // 1,
  12602. // '小计【' || t.goodstypename2 || '】',
  12603. // 0,
  12604. // t.goodstypename2,
  12605. // '--') goodstypename2 -- 产品二级类别
  12606. // ,t.reworkuserid -- 返工工号id
  12607. // ,decode(gid, 0, t.reworkusercode, '--') reworkusercode -- 返工工号
  12608. // ,t.goodsid -- 产品id
  12609. // ,decode(gid, 0, t.goodscode, '--') goodscode -- 产品编码
  12610. // ,decode(gid, 0, t.goodstypename, '--') goodstypename -- 产品类别
  12611. // ,t.reworkcount -- 返工数
  12612. // ,t.badcount -- 不合格数
  12613. // ,t.regoodcount -- 复检合格数
  12614. // ,t.rebadcount -- 复检不合格数
  12615. // ,t.renocount -- 未复检
  12616. // --,t.renocountsum -- 待返工
  12617. // ,(SELECT COUNT(*)
  12618. // FROM tp_pm_semicheck sci
  12619. // WHERE sci.valueflag = '1'
  12620. // AND sci.backoutflag = '0'
  12621. // AND sci.semichecktype = 1
  12622. // AND sci.resemichecktype = 0
  12623. // AND (t.reworkprocedureid is null or sci.reworkprocedureid = t.reworkprocedureid)
  12624. // AND (t.goodsid is null or sci.goodsid = t.goodsid)
  12625. // AND (t.reworkuserid is null or sci.reworkuserid = t.reworkuserid)) AS renocountsum
  12626. // FROM (SELECT grouping_id(sc.reworkprocedureid, gt2.goodstypecode, g.goodsid) gid
  12627. // ,sc.reworkprocedureid
  12628. // ,rp.procedurename reworkprocedurename
  12629. // ,gt2.goodstypecode goodstypecode2
  12630. // ,gt2.goodstypename goodstypename2
  12631. // ,sc.reworkuserid
  12632. // ,sc.reworkusercode
  12633. // ,g.goodsid
  12634. // ,g.goodscode
  12635. // ,gt.goodstypename
  12636. // , SUM(CASE
  12637. // WHEN sc.semichecktype = 1 THEN
  12638. // 1
  12639. // ELSE
  12640. // 0
  12641. // END) reworkcount
  12642. // , SUM(CASE
  12643. // WHEN sc.semichecktype = 2 THEN
  12644. // 1
  12645. // ELSE
  12646. // 0
  12647. // END) badcount
  12648. // , SUM(CASE
  12649. // WHEN sc.semichecktype = 1 AND sc.resemichecktype = 0 THEN
  12650. // 1
  12651. // ELSE
  12652. // 0
  12653. // END) renocount
  12654. // , SUM(CASE
  12655. // WHEN sc.semichecktype = 1 AND sc.resemichecktype = 1 THEN
  12656. // 1
  12657. // ELSE
  12658. // 0
  12659. // END) regoodcount
  12660. // , SUM(CASE
  12661. // WHEN sc.semichecktype = 1 AND sc.resemichecktype = 2 THEN
  12662. // 1
  12663. // ELSE
  12664. // 0
  12665. // END) rebadcount
  12666. // --,(select count(*) from tp_pm_semicheck sci where sci.valueflag = '1' and sci.backoutflag = '0' and sci.semichecktype = 1
  12667. // -- and sci.resemichecktype = 0 and sci.reworkprocedureid = sc.reworkprocedureid and sci.reworkuserid = sc.reworkuserid and sci.goodsid = g.goodsid) as renocountsum
  12668. // --FROM tp_pm_semicheck sc
  12669. // FROM (SELECT semicheckid
  12670. // ,barcode
  12671. // ,productionlineid
  12672. // ,procedureid
  12673. // ,proceduretime
  12674. // ,proceduremodel
  12675. // ,modeltype
  12676. // ,organizationid
  12677. // ,goodsid
  12678. // ,goodscode
  12679. // ,userid
  12680. // ,usercode
  12681. // ,productiondataid
  12682. // ,logoid
  12683. // ,ispublicbody
  12684. // ,specialrepairflag
  12685. // ,goodslevelid
  12686. // ,goodsleveltypeid
  12687. // ,groutingdailyid
  12688. // ,groutingdailydetailid
  12689. // ,groutinglineid
  12690. // ,groutinglinecode
  12691. // ,groutinglinename
  12692. // ,gmouldtypeid
  12693. // ,canmanytimes
  12694. // ,groutinglinedetailid
  12695. // ,groutingdate
  12696. // ,groutingmouldcode
  12697. // ,mouldcode
  12698. // ,groutinguserid
  12699. // ,groutingusercode
  12700. // ,groutingnum
  12701. // ,semichecktype
  12702. // ,semicheckuserid
  12703. // ,semicheckusercode
  12704. // ,semichecktime
  12705. // ,reworkprocedureid
  12706. // ,reworkprocedurecode
  12707. // ,reworkuserid
  12708. // ,reworkusercode
  12709. // ,resemichecktype
  12710. // ,resemicheckuserid
  12711. // ,resemicheckusercode
  12712. // ,resemichecktime
  12713. // ,backoutflag
  12714. // ,backouttime
  12715. // ,backoutuserid
  12716. // ,backoutusercode
  12717. // ,remarks
  12718. // ,createtime
  12719. // ,createuserid
  12720. // ,updateuserid
  12721. // FROM tp_pm_semicheck sc
  12722. // WHERE sc.accountid = :accountid
  12723. // AND sc.valueflag = '1'
  12724. // AND sc.semichecktype = 1
  12725. // AND sc.backoutflag = '0'
  12726. // UNION ALL
  12727. // SELECT DISTINCT sc.semicheckid
  12728. // ,sc.barcode
  12729. // ,sc.productionlineid
  12730. // ,sc.procedureid
  12731. // ,sc.proceduretime
  12732. // ,sc.proceduremodel
  12733. // ,sc.modeltype
  12734. // ,sc.organizationid
  12735. // ,sc.goodsid
  12736. // ,sc.goodscode
  12737. // ,sc.userid
  12738. // ,sc.usercode
  12739. // ,sc.productiondataid
  12740. // ,sc.logoid
  12741. // ,sc.ispublicbody
  12742. // ,sc.specialrepairflag
  12743. // ,sc.goodslevelid
  12744. // ,sc.goodsleveltypeid
  12745. // ,sc.groutingdailyid
  12746. // ,sc.groutingdailydetailid
  12747. // ,sc.groutinglineid
  12748. // ,sc.groutinglinecode
  12749. // ,sc.groutinglinename
  12750. // ,sc.gmouldtypeid
  12751. // ,sc.canmanytimes
  12752. // ,sc.groutinglinedetailid
  12753. // ,sc.groutingdate
  12754. // ,sc.groutingmouldcode
  12755. // ,sc.mouldcode
  12756. // ,sc.groutinguserid
  12757. // ,sc.groutingusercode
  12758. // ,sc.groutingnum
  12759. // ,sc.semichecktype
  12760. // ,sc.semicheckuserid
  12761. // ,sc.semicheckusercode
  12762. // ,sc.semichecktime
  12763. // --,sc.reworkprocedureid
  12764. // --,sc.reworkprocedurecode
  12765. // --,sc.reworkuserid
  12766. // --,sc.reworkusercode
  12767. // ,scd.defectprocedureid
  12768. // ,scdp.procedurename
  12769. // ,scd.defectuserid
  12770. // ,scd.defectusercode
  12771. // ,sc.resemichecktype
  12772. // ,sc.resemicheckuserid
  12773. // ,sc.resemicheckusercode
  12774. // ,sc.resemichecktime
  12775. // ,sc.backoutflag
  12776. // ,sc.backouttime
  12777. // ,sc.backoutuserid
  12778. // ,sc.backoutusercode
  12779. // ,sc.remarks
  12780. // ,sc.createtime
  12781. // ,sc.createuserid
  12782. // ,sc.updateuserid
  12783. // FROM tp_pm_semicheck sc
  12784. // LEFT JOIN TP_PM_SemiCheckDefect scd
  12785. // ON sc.semicheckid = scd.semicheckid
  12786. // LEFT JOIN tp_pc_procedure scdp
  12787. // ON scdp.procedureid = scd.defectprocedureid
  12788. // WHERE sc.accountid = :accountid
  12789. // AND sc.valueflag = '1'
  12790. // AND sc.semichecktype = 2
  12791. // AND sc.backoutflag = '0'
  12792. // ) sc
  12793. // LEFT JOIN tp_pc_procedure rp
  12794. // ON rp.procedureid = sc.reworkprocedureid
  12795. // INNER JOIN tp_mst_goods g
  12796. // ON g.goodsid = sc.goodsid
  12797. // INNER JOIN tp_mst_goodstype gt
  12798. // ON gt.goodstypeid = g.goodstypeid
  12799. // INNER JOIN tp_mst_goodstype gt2
  12800. // ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)
  12801. // AND gt2.accountid = gt.accountid
  12802. // INNER join TP_PM_GroutingDailyDetail GroutingDailyDetail
  12803. // ON GroutingDailyDetail.GroutingDailyDetailID=sc.GroutingDailyDetailID
  12804. // WHERE exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=sc.procedureid))";
  12805. #endregion
  12806. string sqlString = "SELECT t.reworkprocedureid -- 返工工序id\n" +
  12807. " ,decode(gid,\n" +
  12808. " 7,\n" +
  12809. " '总计',\n" +
  12810. " 3,\n" +
  12811. " '合计【' || t.reworkprocedurename || '】',\n" +
  12812. " 0,\n" +
  12813. " t.reworkprocedurename,\n" +
  12814. " '--') reworkprocedurename -- 返工工序\n" +
  12815. " ,t.goodstypecode2 -- 产品二级类别\n" +
  12816. " ,decode(gid,\n" +
  12817. " 1,\n" +
  12818. " '小计【' || t.goodstypename2 || '】',\n" +
  12819. " 0,\n" +
  12820. " t.goodstypename2,\n" +
  12821. " '--') goodstypename2 -- 产品二级类别\n" +
  12822. " ,t.reworkuserid -- 返工工号id\n" +
  12823. " ,decode(gid, 0, t.reworkusercode, '--') reworkusercode -- 返工工号\n" +
  12824. " ,t.goodsid -- 产品id\n" +
  12825. " ,decode(gid, 0, t.goodscode, '--') goodscode -- 产品编码\n" +
  12826. " ,decode(gid, 0, t.goodstypename, '--') goodstypename -- 产品类别\n" +
  12827. " ,t.reworkcount -- 返工数\n" +
  12828. " ,t.badcount -- 不合格数\n" +
  12829. " ,t.regoodcount -- 复检合格数\n" +
  12830. " ,t.rebadcount -- 复检不合格数\n" +
  12831. " ,t.renocount -- 未复检\n" +
  12832. " ,t.renocountsum -- 待返工\n" +
  12833. " FROM (SELECT grouping_id(sct.reworkprocedureid,\n" +
  12834. " sct.goodstypecode2,\n" +
  12835. " sct.goodsid) gid\n" +
  12836. " ,sct.displayno\n" +
  12837. " ,sct.reworkprocedureid\n" +
  12838. " ,sct.reworkprocedurename\n" +
  12839. " ,sct.goodstypecode2\n" +
  12840. " ,sct.goodstypename2\n" +
  12841. " ,sct.reworkuserid\n" +
  12842. " ,sct.reworkusercode\n" +
  12843. " ,sct.goodsid\n" +
  12844. " ,sct.goodscode\n" +
  12845. " ,sct.goodstypename\n" +
  12846. " ,SUM(sct.reworkcount) reworkcount\n" +
  12847. " ,SUM(sct. badcount) badcount\n" +
  12848. " ,SUM(sct. renocount) renocount\n" +
  12849. " ,SUM(sct.regoodcount) regoodcount\n" +
  12850. " ,SUM(sct.rebadcount) rebadcount\n" +
  12851. " ,SUM(sct.renocountsum) renocountsum\n" +
  12852. " FROM (SELECT rp.displayno\n" +
  12853. " ,sc.reworkprocedureid\n" +
  12854. " ,rp.procedurename reworkprocedurename\n" +
  12855. " ,gt2.goodstypecode goodstypecode2\n" +
  12856. " ,gt2.goodstypename goodstypename2\n" +
  12857. " ,sc.reworkuserid\n" +
  12858. " ,sc.reworkusercode\n" +
  12859. " ,g.goodsid\n" +
  12860. " ,g.goodscode\n" +
  12861. " ,gt.goodstypename\n" +
  12862. " , SUM(CASE\n" +
  12863. " WHEN sc.semichecktype = 1 THEN\n" +
  12864. " 1\n" +
  12865. " ELSE\n" +
  12866. " 0\n" +
  12867. " END) reworkcount\n" +
  12868. " , SUM(CASE\n" +
  12869. " WHEN sc.semichecktype = 2 THEN\n" +
  12870. " 1\n" +
  12871. " ELSE\n" +
  12872. " 0\n" +
  12873. " END) badcount\n" +
  12874. " , SUM(CASE\n" +
  12875. " WHEN sc.semichecktype = 1 AND sc.resemichecktype = 0 THEN\n" +
  12876. " 1\n" +
  12877. " ELSE\n" +
  12878. " 0\n" +
  12879. " END) renocount\n" +
  12880. " , SUM(CASE\n" +
  12881. " WHEN sc.semichecktype = 1 AND sc.resemichecktype = 1 THEN\n" +
  12882. " 1\n" +
  12883. " ELSE\n" +
  12884. " 0\n" +
  12885. " END) regoodcount\n" +
  12886. " , SUM(CASE\n" +
  12887. " WHEN sc.semichecktype = 1 AND sc.resemichecktype = 2 THEN\n" +
  12888. " 1\n" +
  12889. " ELSE\n" +
  12890. " 0\n" +
  12891. " END) rebadcount\n" +
  12892. " ,(SELECT COUNT(*)\n" +
  12893. " FROM tp_pm_semicheck sci\n" +
  12894. " WHERE sci.valueflag = '1'\n" +
  12895. " AND sci.backoutflag = '0'\n" +
  12896. " AND sci.semichecktype = 1\n" +
  12897. " AND sci.resemichecktype = 0\n" +
  12898. " AND sci.accountid = :accountid\n" +
  12899. " AND sci.reworkprocedureid = sc.reworkprocedureid\n" +
  12900. " AND sci.reworkuserid = sc.reworkuserid\n" +
  12901. " AND sci.goodsid = g.goodsid) AS renocountsum\n" +
  12902. " FROM (SELECT semicheckid\n" +
  12903. " ,barcode\n" +
  12904. " ,productionlineid\n" +
  12905. " ,procedureid\n" +
  12906. " ,proceduretime\n" +
  12907. " ,proceduremodel\n" +
  12908. " ,modeltype\n" +
  12909. " ,organizationid\n" +
  12910. " ,goodsid\n" +
  12911. " ,goodscode\n" +
  12912. " ,userid\n" +
  12913. " ,usercode\n" +
  12914. " ,productiondataid\n" +
  12915. " ,logoid\n" +
  12916. " ,ispublicbody\n" +
  12917. " ,specialrepairflag\n" +
  12918. " ,goodslevelid\n" +
  12919. " ,goodsleveltypeid\n" +
  12920. " ,groutingdailyid\n" +
  12921. " ,groutingdailydetailid\n" +
  12922. " ,groutinglineid\n" +
  12923. " ,groutinglinecode\n" +
  12924. " ,groutinglinename\n" +
  12925. " ,gmouldtypeid\n" +
  12926. " ,canmanytimes\n" +
  12927. " ,groutinglinedetailid\n" +
  12928. " ,groutingdate\n" +
  12929. " ,groutingmouldcode\n" +
  12930. " ,mouldcode\n" +
  12931. " ,groutinguserid\n" +
  12932. " ,groutingusercode\n" +
  12933. " ,groutingnum\n" +
  12934. " ,semichecktype\n" +
  12935. " ,semicheckuserid\n" +
  12936. " ,semicheckusercode\n" +
  12937. " ,semichecktime\n" +
  12938. " ,reworkprocedureid\n" +
  12939. " ,reworkprocedurecode\n" +
  12940. " ,reworkuserid\n" +
  12941. " ,reworkusercode\n" +
  12942. " ,resemichecktype\n" +
  12943. " ,resemicheckuserid\n" +
  12944. " ,resemicheckusercode\n" +
  12945. " ,resemichecktime\n" +
  12946. " ,backoutflag\n" +
  12947. " ,backouttime\n" +
  12948. " ,backoutuserid\n" +
  12949. " ,backoutusercode\n" +
  12950. " ,remarks\n" +
  12951. " ,createtime\n" +
  12952. " ,createuserid\n" +
  12953. " ,updateuserid\n" +
  12954. " FROM tp_pm_semicheck sc\n" +
  12955. " WHERE sc.accountid = :accountid\n" +
  12956. " AND sc.valueflag = '1'\n" +
  12957. " AND sc.semichecktype = 1\n" +
  12958. " AND sc.backoutflag = '0'\n" +
  12959. " UNION ALL\n" +
  12960. " SELECT DISTINCT sc.semicheckid\n" +
  12961. " ,sc.barcode\n" +
  12962. " ,sc.productionlineid\n" +
  12963. " ,sc.procedureid\n" +
  12964. " ,sc.proceduretime\n" +
  12965. " ,sc.proceduremodel\n" +
  12966. " ,sc.modeltype\n" +
  12967. " ,sc.organizationid\n" +
  12968. " ,sc.goodsid\n" +
  12969. " ,sc.goodscode\n" +
  12970. " ,sc.userid\n" +
  12971. " ,sc.usercode\n" +
  12972. " ,sc.productiondataid\n" +
  12973. " ,sc.logoid\n" +
  12974. " ,sc.ispublicbody\n" +
  12975. " ,sc.specialrepairflag\n" +
  12976. " ,sc.goodslevelid\n" +
  12977. " ,sc.goodsleveltypeid\n" +
  12978. " ,sc.groutingdailyid\n" +
  12979. " ,sc.groutingdailydetailid\n" +
  12980. " ,sc.groutinglineid\n" +
  12981. " ,sc.groutinglinecode\n" +
  12982. " ,sc.groutinglinename\n" +
  12983. " ,sc.gmouldtypeid\n" +
  12984. " ,sc.canmanytimes\n" +
  12985. " ,sc.groutinglinedetailid\n" +
  12986. " ,sc.groutingdate\n" +
  12987. " ,sc.groutingmouldcode\n" +
  12988. " ,sc.mouldcode\n" +
  12989. " ,sc.groutinguserid\n" +
  12990. " ,sc.groutingusercode\n" +
  12991. " ,sc.groutingnum\n" +
  12992. " ,sc.semichecktype\n" +
  12993. " ,sc.semicheckuserid\n" +
  12994. " ,sc.semicheckusercode\n" +
  12995. " ,sc.semichecktime\n" +
  12996. " --,sc.reworkprocedureid\n" +
  12997. " --,sc.reworkprocedurecode\n" +
  12998. " --,sc.reworkuserid\n" +
  12999. " --,sc.reworkusercode\n" +
  13000. " ,scd.defectprocedureid\n" +
  13001. " ,scdp.procedurename\n" +
  13002. " ,scd.defectuserid\n" +
  13003. " ,scd.defectusercode\n" +
  13004. " ,sc.resemichecktype\n" +
  13005. " ,sc.resemicheckuserid\n" +
  13006. " ,sc.resemicheckusercode\n" +
  13007. " ,sc.resemichecktime\n" +
  13008. " ,sc.backoutflag\n" +
  13009. " ,sc.backouttime\n" +
  13010. " ,sc.backoutuserid\n" +
  13011. " ,sc.backoutusercode\n" +
  13012. " ,sc.remarks\n" +
  13013. " ,sc.createtime\n" +
  13014. " ,sc.createuserid\n" +
  13015. " ,sc.updateuserid\n" +
  13016. " FROM tp_pm_semicheck sc\n" +
  13017. " LEFT JOIN TP_PM_SemiCheckDefect scd\n" +
  13018. " ON sc.semicheckid = scd.semicheckid\n" +
  13019. " AND scd.valueflag='1'\n" +
  13020. " LEFT JOIN tp_pc_procedure scdp\n" +
  13021. " ON scdp.procedureid = scd.defectprocedureid\n" +
  13022. " WHERE sc.accountid = :accountid\n" +
  13023. " AND sc.valueflag = '1'\n" +
  13024. " AND sc.semichecktype = 2\n" +
  13025. " AND sc.backoutflag = '0') sc\n" +
  13026. " LEFT JOIN tp_pc_procedure rp\n" +
  13027. " ON rp.procedureid = sc.reworkprocedureid\n" +
  13028. " INNER JOIN tp_mst_goods g\n" +
  13029. " ON g.goodsid = sc.goodsid\n" +
  13030. " INNER JOIN tp_mst_goodstype gt\n" +
  13031. " ON gt.goodstypeid = g.goodstypeid\n" +
  13032. " INNER JOIN tp_mst_goodstype gt2\n" +
  13033. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  13034. " AND gt2.accountid = gt.accountid\n" +
  13035. " INNER JOIN TP_PM_GroutingDailyDetail GroutingDailyDetail\n" +
  13036. " ON GroutingDailyDetail.GroutingDailyDetailID =\n" +
  13037. " sc.GroutingDailyDetailID\n" //+
  13038. //" WHERE EXISTS (SELECT 1\n" +
  13039. //" FROM TP_MST_UserPurview up\n" +
  13040. //" WHERE up.PurviewType = 9\n" +
  13041. //" AND up.UserID = :UserID\n" +
  13042. //" AND (up.PurviewID = -1 OR\n" +
  13043. //" up.PurviewID = sc.procedureid))\n"
  13044. ;
  13045. // 完成工序集
  13046. if (!string.IsNullOrEmpty(se.CProcedureIDS))
  13047. {
  13048. sqlString += " AND instr(','||:procedureids||',', ',' || sc.procedureid || ',') > 0";
  13049. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, se.CProcedureIDS, ParameterDirection.Input));
  13050. }
  13051. // 完成时间起始
  13052. if (se.CDateTimeStart.HasValue)
  13053. {
  13054. sqlString = sqlString + " AND sc.ProcedureTime >= :CDateTimeStart ";
  13055. parameters.Add(new OracleParameter(":CDateTimeStart", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13056. }
  13057. // 完成时间结束
  13058. if (se.CDateTimeEnd.HasValue)
  13059. {
  13060. sqlString = sqlString + " AND sc.ProcedureTime <= :CDateTimeEnd ";
  13061. parameters.Add(new OracleParameter(":CDateTimeEnd", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13062. }
  13063. // 完成工号
  13064. if (!string.IsNullOrEmpty(se.CUserCode))
  13065. {
  13066. sqlString = sqlString + " AND instr(sc.UserCode,:UserCode)>0";
  13067. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CUserCode, ParameterDirection.Input));
  13068. }
  13069. // 产品类别
  13070. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  13071. {
  13072. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 ";
  13073. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  13074. }
  13075. // 产品编码
  13076. if (!string.IsNullOrEmpty(se.GoodsCode))
  13077. {
  13078. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0";
  13079. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  13080. }
  13081. // 成型工号
  13082. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  13083. {
  13084. sqlString = sqlString + " AND instr(sc.GroutingUserCode,:GroutingUserCode)>0";
  13085. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  13086. }
  13087. // 注浆时间起始
  13088. if (se.GroutingDateTimeStart.HasValue)
  13089. {
  13090. sqlString = sqlString + " AND sc.GroutingDate >= :GroutingDateTimeStart ";
  13091. parameters.Add(new OracleParameter(":GroutingDateTimeStart", OracleDbType.Date, se.GroutingDateTimeStart.Value, ParameterDirection.Input));
  13092. }
  13093. // 注浆时间结束
  13094. if (se.GroutingDateTimeEnd.HasValue)
  13095. {
  13096. sqlString = sqlString + " AND sc.GroutingDate <= :GroutingDateTimeEnd ";
  13097. parameters.Add(new OracleParameter(":GroutingDateTimeEnd", OracleDbType.Date, se.GroutingDateTimeEnd.Value, ParameterDirection.Input));
  13098. }
  13099. // 交坯时间起始
  13100. if (se.DeliveryDateTimeStart.HasValue)
  13101. {
  13102. sqlString = sqlString + " AND GroutingDailyDetail.DeliverTime >= :DeliveryDateTimeStart ";
  13103. parameters.Add(new OracleParameter(":DeliveryDateTimeStart", OracleDbType.Date, se.DeliveryDateTimeStart.Value, ParameterDirection.Input));
  13104. }
  13105. // 交坯时间结束
  13106. if (se.DeliveryDateTimeEnd.HasValue)
  13107. {
  13108. sqlString = sqlString + " AND GroutingDailyDetail.DeliverTime <= :DeliveryDateTimeEnd ";
  13109. parameters.Add(new OracleParameter(":DeliveryDateTimeEnd", OracleDbType.Date, se.DeliveryDateTimeEnd.Value, ParameterDirection.Input));
  13110. }
  13111. // 半检状态
  13112. if (!string.IsNullOrEmpty(se.SemiCheckType))
  13113. {
  13114. sqlString = sqlString + " AND instr(','||:SemiCheckType||',',','||sc.SemiCheckType||',')>0 ";
  13115. parameters.Add(new OracleParameter(":SemiCheckType", OracleDbType.NVarchar2, se.SemiCheckType, ParameterDirection.Input));
  13116. }
  13117. // 半检时间起始
  13118. if (se.SemiCheckDateTimeStart.HasValue)
  13119. {
  13120. sqlString = sqlString + " AND sc.SemiCheckTime >= :SemiCheckDateTimeStart ";
  13121. parameters.Add(new OracleParameter(":SemiCheckDateTimeStart", OracleDbType.Date, se.SemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13122. }
  13123. // 半检时间结束
  13124. if (se.SemiCheckDateTimeEnd.HasValue)
  13125. {
  13126. sqlString = sqlString + " AND sc.SemiCheckTime <= :SemiCheckDateTimeEnd ";
  13127. parameters.Add(new OracleParameter(":SemiCheckDateTimeEnd", OracleDbType.Date, se.SemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13128. }
  13129. // 半检工号
  13130. if (!string.IsNullOrEmpty(se.SemiCheckUserCode))
  13131. {
  13132. sqlString = sqlString + " AND instr(sc.SemiCheckUserCode,:SemiCheckUserCode)>0";
  13133. parameters.Add(new OracleParameter(":SemiCheckUserCode", OracleDbType.NVarchar2, se.SemiCheckUserCode, ParameterDirection.Input));
  13134. }
  13135. // 返工工序
  13136. if (!string.IsNullOrEmpty(se.RProcedureIDS))
  13137. {
  13138. sqlString = sqlString + " AND instr(','||:RProcedureIDS||',',','||sc.ReworkProcedureID||',')>0 ";
  13139. parameters.Add(new OracleParameter(":RProcedureIDS", OracleDbType.NVarchar2, se.RProcedureIDS, ParameterDirection.Input));
  13140. }
  13141. // 返工工号
  13142. if (!string.IsNullOrEmpty(se.ReworkUserCode))
  13143. {
  13144. sqlString = sqlString + " AND instr(sc.ReworkUserCode,:ReworkUserCode)>0";
  13145. parameters.Add(new OracleParameter(":ReworkUserCode", OracleDbType.NVarchar2, se.ReworkUserCode, ParameterDirection.Input));
  13146. }
  13147. // 复检状态
  13148. if (!string.IsNullOrEmpty(se.ReSemiCheckType))
  13149. {
  13150. sqlString = sqlString + " AND instr(','||:ReSemiCheckType||',',','||sc.ReSemiCheckType||',')>0 ";
  13151. parameters.Add(new OracleParameter(":ReSemiCheckType", OracleDbType.NVarchar2, se.ReSemiCheckType, ParameterDirection.Input));
  13152. }
  13153. // 复检时间起始
  13154. if (se.ReSemiCheckDateTimeStart.HasValue)
  13155. {
  13156. sqlString = sqlString + " AND sc.ReSemiCheckTime >= :ReSemiCheckDateTimeStart ";
  13157. parameters.Add(new OracleParameter(":ReSemiCheckDateTimeStart", OracleDbType.Date, se.ReSemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13158. }
  13159. // 复检时间结束
  13160. if (se.ReSemiCheckDateTimeEnd.HasValue)
  13161. {
  13162. sqlString = sqlString + " AND sc.ReSemiCheckTime <= :ReSemiCheckDateTimeEnd ";
  13163. parameters.Add(new OracleParameter(":ReSemiCheckDateTimeEnd", OracleDbType.Date, se.ReSemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13164. }
  13165. // 复检工号
  13166. if (!string.IsNullOrEmpty(se.ReSemiCheckUserCode))
  13167. {
  13168. sqlString = sqlString + " AND instr(sc.ReSemiCheckUserCode,:ReSemiCheckUserCode)>0";
  13169. parameters.Add(new OracleParameter(":ReSemiCheckUserCode", OracleDbType.NVarchar2, se.ReSemiCheckUserCode, ParameterDirection.Input));
  13170. }
  13171. // sqlString += @" GROUP BY GROUPING SETS((rp.displayno, sc.reworkprocedureid, rp.procedurename, gt2.goodstypecode, gt2.goodstypename, sc.reworkuserid, sc.reworkusercode, g.goodsid, g.goodscode, gt.goodstypename),(rp.displayno, sc.reworkprocedureid, rp.procedurename, gt2.goodstypecode, gt2.goodstypename),(rp.displayno, sc.reworkprocedureid, rp.procedurename),())
  13172. // ORDER BY rp.displayno
  13173. // ,gt2.goodstypename
  13174. // ,sc.reworkusercode
  13175. // ,g.goodscode
  13176. // ,gt.goodstypename, gid) t
  13177. // ";
  13178. sqlString = sqlString +
  13179. " GROUP BY rp.displayno\n" +
  13180. " ,sc.reworkprocedureid\n" +
  13181. " ,rp.procedurename\n" +
  13182. " ,gt2.goodstypecode\n" +
  13183. " ,gt2.goodstypename\n" +
  13184. " ,sc.reworkuserid\n" +
  13185. " ,sc.reworkusercode\n" +
  13186. " ,g.goodsid\n" +
  13187. " ,g.goodscode\n" +
  13188. " ,gt.goodstypename) sct\n" +
  13189. " GROUP BY GROUPING SETS((sct.displayno, sct.reworkprocedureid, sct.reworkprocedurename, sct.goodstypecode2, sct.goodstypename2, sct.reworkuserid, sct.reworkusercode, sct.goodsid, sct.goodscode, sct.goodstypename),(sct.displayno, sct.reworkprocedureid, sct.reworkprocedurename, sct.goodstypecode2, sct.goodstypename2),(sct.displayno, sct.reworkprocedureid, sct.reworkprocedurename),())\n" +
  13190. " ORDER BY sct.displayno\n" +
  13191. " ,sct.goodstypename\n" +
  13192. " ,sct.reworkusercode\n" +
  13193. " ,sct.goodscode\n" +
  13194. " ,sct.goodstypename\n" +
  13195. " ,gid) t";
  13196. return sqlString;
  13197. }
  13198. /// <summary>
  13199. /// 取得RPT080107(半检登记明细)的信息查询数据
  13200. /// </summary>
  13201. /// <param name="user">登录用户信息</param>
  13202. /// <param name="se">查询条件</param>
  13203. /// <returns>查询结果</returns>
  13204. public static ServiceResultEntity GetRPT080107IData(SUserInfo user, SemiCheckEntity se)
  13205. {
  13206. IDBConnection conn = null;
  13207. try
  13208. {
  13209. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13210. List<OracleParameter> parameters = new List<OracleParameter>();
  13211. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT080107ISQL(user, se, ref parameters));
  13212. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  13213. ServiceResultEntity sre = new ServiceResultEntity();
  13214. if (data == null || data.Rows.Count == 0)
  13215. {
  13216. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  13217. return sre;
  13218. }
  13219. sre.Data = new DataSet();
  13220. sre.Data.Tables.Add(data);
  13221. return sre;
  13222. }
  13223. catch (Exception ex)
  13224. {
  13225. throw ex;
  13226. }
  13227. finally
  13228. {
  13229. if (conn != null &&
  13230. conn.ConnState == ConnectionState.Open)
  13231. {
  13232. conn.Close();
  13233. }
  13234. }
  13235. }
  13236. //xuwei add 2019-10-14
  13237. /// <summary>
  13238. /// 取得RPT080108(半检返修登记明细)的信息查询数据
  13239. /// </summary>
  13240. /// <param name="user">登录用户信息</param>
  13241. /// <param name="se">查询条件</param>
  13242. /// <returns>查询结果</returns>
  13243. public static ServiceResultEntity GetRPT080108IData(SUserInfo user, SemiCheckEntity se)
  13244. {
  13245. IDBConnection conn = null;
  13246. try
  13247. {
  13248. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13249. List<OracleParameter> parameters = new List<OracleParameter>();
  13250. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT080108ISQL(user, se, ref parameters));
  13251. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  13252. ServiceResultEntity sre = new ServiceResultEntity();
  13253. if (data == null || data.Rows.Count == 0)
  13254. {
  13255. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  13256. return sre;
  13257. }
  13258. sre.Data = new DataSet();
  13259. sre.Data.Tables.Add(data);
  13260. return sre;
  13261. }
  13262. catch (Exception ex)
  13263. {
  13264. throw ex;
  13265. }
  13266. finally
  13267. {
  13268. if (conn != null &&
  13269. conn.ConnState == ConnectionState.Open)
  13270. {
  13271. conn.Close();
  13272. }
  13273. }
  13274. }
  13275. /// <summary>
  13276. /// 获取RPT080108画面(半检返修登记明细)的汇总信息查询sql
  13277. /// </summary>
  13278. /// <returns>sql</returns>
  13279. private static string GetRPT080108ISQL(SUserInfo user, SemiCheckEntity se, ref List<OracleParameter> parameters)
  13280. {
  13281. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  13282. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  13283. string sqlString = @"
  13284. SELECT
  13285. sr.SEMIREWORKID ,--AS SEMIREWORKID,
  13286. p.PROCEDURECODE ,--AS 完成工序编码,
  13287. p.PROCEDURENAME ,--AS 完成工序,
  13288. sr.PROCEDURETIME ,--AS 完成时间,
  13289. sr.USERCODE ,--完成工号,
  13290. gt2.GOODSTYPENAME AS GOODSTYPENAME2,--AS 产品二级类别,
  13291. gt.GOODSTYPENAME ,--AS 产品类别,
  13292. g.GOODSCODE ,--AS 产品编码,
  13293. g.GOODSNAME,--AS 产品名称,
  13294. sr.BARCODE ,--AS 产品条码,
  13295. sr.SEMIREWORKUSERCODE ,--AS 半检工号,
  13296. sr.SEMIREWORKTIME ,--AS 半检时间,
  13297. pr.PROCEDURECODE AS REWORKPCODE,--AS 返修工序编码,
  13298. pr.PROCEDURENAME AS REWORKPNAME,--AS 返修工序,
  13299. sr.BACKOUTFLAG ,--AS 撤销标识,
  13300. sr.BACKOUTUSERCODE ,--AS 撤销工号,
  13301. sr.BACKOUTTIME ,--AS 撤销时间,
  13302. sr.GROUTINGUSERCODE ,--AS 成型工号,
  13303. sr.GROUTINGLINECODE ,--AS 成型线编码,
  13304. sr.GROUTINGMOULDCODE ,--AS 模具编号,
  13305. sr.GROUTINGDATE ,--AS 注浆时间,
  13306. gd.DELIVERTIME ,--AS 交坯时间,
  13307. l.LOGONAME ,--AS 商标,
  13308. srd.DEFECTCODE ,--AS 缺陷编码,
  13309. --srd.DEFECTNAME ,--AS 缺陷名称,
  13310. msd.DEFECTNAME, -- 缺陷名称显示 xcm 2023-4-11
  13311. srd.DEFECTPOSITIONCODE ,--AS 位置编码,
  13312. --srd.DEFECTPOSITIONNAME ,--AS 缺陷位置,
  13313. msp.DEFECTPOSITIONNAME, --缺陷位置显示 xcm 2023-4-11
  13314. pd.PROCEDURECODE AS DEFECTPCODE,--AS 责任工序编码,
  13315. pd.PROCEDURENAME AS DEFECTPNAME,--AS 责任工序,
  13316. srd.DEFECTUSERCODE ,--AS 责任工号,
  13317. inpp.PROCEDURENAME CurrPROCEDURENAME --AS 当前工序
  13318. FROM
  13319. TP_PM_SEMIREWORK sr
  13320. LEFT JOIN TP_PM_SEMIREWORKDEFECT srd ON sr.SEMIREWORKID = srd.SEMIREWORKID
  13321. left join tp_mst_semicheckdefect msd on srd.defectid = msd.defectid --缺陷名称显示 xcm 2023-4-11
  13322. left join tp_mst_scdefectposition msp on srd.defectpositionid =msp.defectpositionid --缺陷位置显示 xcm 2023-4-11
  13323. LEFT JOIN TP_PC_PROCEDURE p ON p.PROCEDUREID = sr.PROCEDUREID
  13324. LEFT JOIN TP_PC_PROCEDURE pr ON pr.PROCEDUREID = sr.REWORKPROCEDUREID
  13325. LEFT JOIN TP_PC_PROCEDURE pd ON pd.PROCEDUREID = srd.DEFECTPROCEDUREID
  13326. LEFT JOIN TP_MST_GOODS g ON sr.GOODSID = g.GOODSID
  13327. LEFT JOIN TP_MST_GOODSTYPE gt ON g.GOODSTYPEID = gt.GOODSTYPEID
  13328. LEFT JOIN TP_MST_GOODSTYPE gt2 ON gt2.ACCOUNTID = gt.ACCOUNTID
  13329. AND gt2.GOODSTYPECODE = substr( gt.GOODSTYPECODE, 1, 6 )
  13330. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.GROUTINGDAILYDETAILID = sr.GROUTINGDAILYDETAILID
  13331. LEFT JOIN TP_MST_LOGO l ON gd.LOGOID = l.LOGOID
  13332. LEFT JOIN TP_PM_INPRODUCTION inp ON inp.BARCODE = sr.BARCODE
  13333. LEFT JOIN TP_PC_PROCEDURE inpp ON inp.PROCEDUREID = inpp.PROCEDUREID
  13334. WHERE
  13335. sr.VALUEFLAG = '1'
  13336. AND srd.VALUEFLAG = '1'
  13337. AND sr.AccountID=:AccountID
  13338. ";
  13339. //AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=sr.procedureid))
  13340. // 完成工序
  13341. if (!string.IsNullOrEmpty(se.CProcedureIDS))
  13342. {
  13343. sqlString = sqlString + " AND instr(','||:CProcedureIDS||',',','||p.PROCEDURECODE||',')>0 ";
  13344. parameters.Add(new OracleParameter(":CProcedureIDS", OracleDbType.NVarchar2, se.CProcedureIDS, ParameterDirection.Input));
  13345. }
  13346. // 完成时间起始
  13347. if (se.CDateTimeStart.HasValue)
  13348. {
  13349. sqlString = sqlString + " AND sr.ProcedureTime >= :CDateTimeStart ";
  13350. parameters.Add(new OracleParameter(":CDateTimeStart", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13351. }
  13352. // 完成时间结束
  13353. if (se.CDateTimeEnd.HasValue)
  13354. {
  13355. sqlString = sqlString + " AND sr.ProcedureTime <= :CDateTimeEnd ";
  13356. parameters.Add(new OracleParameter(":CDateTimeEnd", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13357. }
  13358. // 完成工号
  13359. if (!string.IsNullOrEmpty(se.CUserCode))
  13360. {
  13361. sqlString = sqlString + " AND instr(','||:UserCode||',' , ','||sr.UserCode||',')>0";
  13362. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CUserCode, ParameterDirection.Input));
  13363. }
  13364. // 产品类别
  13365. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  13366. {
  13367. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 ";
  13368. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  13369. }
  13370. // 产品编码
  13371. if (!string.IsNullOrEmpty(se.GoodsCode))
  13372. {
  13373. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0";
  13374. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  13375. }
  13376. // 成型工号
  13377. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  13378. {
  13379. sqlString = sqlString + " AND instr(','||:GroutingUserCode||',' , ','||sr.GroutingUserCode||',')>0";
  13380. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  13381. }
  13382. // 注浆时间起始
  13383. if (se.GroutingDateTimeStart.HasValue)
  13384. {
  13385. sqlString = sqlString + " AND sr.GroutingDate >= :GroutingDateTimeStart ";
  13386. parameters.Add(new OracleParameter(":GroutingDateTimeStart", OracleDbType.Date, se.GroutingDateTimeStart.Value, ParameterDirection.Input));
  13387. }
  13388. // 注浆时间结束
  13389. if (se.GroutingDateTimeEnd.HasValue)
  13390. {
  13391. sqlString = sqlString + " AND sr.GroutingDate <= :GroutingDateTimeEnd ";
  13392. parameters.Add(new OracleParameter(":GroutingDateTimeEnd", OracleDbType.Date, se.GroutingDateTimeEnd.Value, ParameterDirection.Input));
  13393. }
  13394. // 交坯时间起始
  13395. if (se.DeliveryDateTimeStart.HasValue)
  13396. {
  13397. sqlString = sqlString + " AND gd.DeliverTime >= :DeliveryDateTimeStart ";
  13398. parameters.Add(new OracleParameter(":DeliveryDateTimeStart", OracleDbType.Date, se.DeliveryDateTimeStart.Value, ParameterDirection.Input));
  13399. }
  13400. // 交坯时间结束
  13401. if (se.DeliveryDateTimeEnd.HasValue)
  13402. {
  13403. sqlString = sqlString + " AND gd.DeliverTime <= :DeliveryDateTimeEnd ";
  13404. parameters.Add(new OracleParameter(":DeliveryDateTimeEnd", OracleDbType.Date, se.DeliveryDateTimeEnd.Value, ParameterDirection.Input));
  13405. }
  13406. // 半检时间起始
  13407. if (se.SemiCheckDateTimeStart.HasValue)
  13408. {
  13409. sqlString = sqlString + " AND sr.SEMIREWORKTIME >= :SemiCheckDateTimeStart ";
  13410. parameters.Add(new OracleParameter(":SemiCheckDateTimeStart", OracleDbType.Date, se.SemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13411. }
  13412. // 半检时间结束
  13413. if (se.SemiCheckDateTimeEnd.HasValue)
  13414. {
  13415. sqlString = sqlString + " AND sr.SEMIREWORKTIME <= :SemiCheckDateTimeEnd ";
  13416. parameters.Add(new OracleParameter(":SemiCheckDateTimeEnd", OracleDbType.Date, se.SemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13417. }
  13418. // 半检工号
  13419. if (!string.IsNullOrEmpty(se.SemiCheckUserCode))
  13420. {
  13421. sqlString = sqlString + " AND instr(','||:SemiCheckUserCode||',' , ','||sr.SEMIREWORKUSERCODE||',')>0";
  13422. parameters.Add(new OracleParameter(":SemiCheckUserCode", OracleDbType.NVarchar2, se.SemiCheckUserCode, ParameterDirection.Input));
  13423. }
  13424. // 返修工序
  13425. if (!string.IsNullOrEmpty(se.RProcedureIDS))
  13426. {
  13427. sqlString = sqlString + " AND instr(','||:RProcedureIDS||',',','||pr.PROCEDUREID||',')>0 ";
  13428. parameters.Add(new OracleParameter(":RProcedureIDS", OracleDbType.NVarchar2, se.RProcedureIDS, ParameterDirection.Input));
  13429. }
  13430. // 返修工号
  13431. if (!string.IsNullOrEmpty(se.ReworkUserCode))
  13432. {
  13433. sqlString = sqlString + " AND instr(sr.ReworkUserCode,:ReworkUserCode)>0";
  13434. parameters.Add(new OracleParameter(":ReworkUserCode", OracleDbType.NVarchar2, se.ReworkUserCode, ParameterDirection.Input));
  13435. }
  13436. // 撤销标识
  13437. if (!string.IsNullOrEmpty(se.BackOutFlag))
  13438. {
  13439. sqlString = sqlString + " AND instr(','||:BackOutFlag||',',','||sr.BackOutFlag||',')>0 ";
  13440. parameters.Add(new OracleParameter(":BackOutFlag", OracleDbType.NVarchar2, se.BackOutFlag, ParameterDirection.Input));
  13441. }
  13442. // 撤销时间起始
  13443. if (se.BackOutTimeStart.HasValue)
  13444. {
  13445. sqlString = sqlString + " AND sr.BackOutTime >= :BackOutTimeStart ";
  13446. parameters.Add(new OracleParameter(":BackOutTimeStart", OracleDbType.Date, se.BackOutTimeStart.Value, ParameterDirection.Input));
  13447. }
  13448. // 撤销时间结束
  13449. if (se.BackOutTimeEnd.HasValue)
  13450. {
  13451. sqlString = sqlString + " AND sr.BackOutTime <= :BackOutTimeEnd ";
  13452. parameters.Add(new OracleParameter(":BackOutTimeEnd", OracleDbType.Date, se.BackOutTimeEnd.Value, ParameterDirection.Input));
  13453. }
  13454. // 撤销工号
  13455. if (!string.IsNullOrEmpty(se.BackOutUserCode))
  13456. {
  13457. sqlString = sqlString + " AND instr(','||:BackOutUserCode||',' , ','||sr.BackOutUserCode||',')>0";
  13458. parameters.Add(new OracleParameter(":BackOutUserCode", OracleDbType.NVarchar2, se.BackOutUserCode, ParameterDirection.Input));
  13459. }
  13460. // 产品条码
  13461. if (!string.IsNullOrEmpty(se.BarCode))
  13462. {
  13463. sqlString = sqlString + " AND instr(sr.BarCode,:BarCode)>0";
  13464. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  13465. }
  13466. // 缺陷编码
  13467. if (!string.IsNullOrEmpty(se.DefectCode))
  13468. {
  13469. sqlString = sqlString + " AND instr(srd.DefectCode,:DefectCode)>0";
  13470. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  13471. }
  13472. // 缺陷位置集
  13473. if (!string.IsNullOrEmpty(se.DefectPositionIDS))
  13474. {
  13475. sqlString = sqlString + " AND instr(','||:DefectPositionIDS||',',','||srd.DefectPositionID||',')>0 ";
  13476. parameters.Add(new OracleParameter(":DefectPositionIDS", OracleDbType.NVarchar2, se.DefectPositionIDS, ParameterDirection.Input));
  13477. }
  13478. // 责任工序集
  13479. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  13480. {
  13481. sqlString = sqlString + " AND instr(','||:DefectPositionIDS||',',','||pd.PROCEDUREID||',')>0 ";
  13482. parameters.Add(new OracleParameter(":DefectPositionIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  13483. }
  13484. // 责任工号
  13485. if (!string.IsNullOrEmpty(se.DefectUser))
  13486. {
  13487. sqlString = sqlString + " AND instr(srd.DEFECTUSERCODE,:DefectUser)>0";
  13488. parameters.Add(new OracleParameter(":DefectUser", OracleDbType.NVarchar2, se.DefectUser, ParameterDirection.Input));
  13489. }
  13490. // 只显示最后一条半检记录
  13491. if (se.SemiCheckType == "1")
  13492. {
  13493. // 撤销的记录全显示,未撤销的记录只显示最后一条
  13494. sqlString += " and (sr.backoutflag = '1' or not exists (select sw.semireworkid\n" +
  13495. " from TP_PM_SEMIREWORK sw\n" +
  13496. " where sw.barcode = sr.barcode\n" +
  13497. " and sw.valueflag = '1'\n" +
  13498. " and (sw.backoutflag = '0')\n" +
  13499. " and sw.semireworkid > sr.semireworkid) )";
  13500. }
  13501. return sqlString;
  13502. }
  13503. //xuwei end
  13504. //xuwei add 2019-10-21
  13505. /// <summary>
  13506. /// 统计当前工号,当日,按产品编码分组统计半检返修数据数量
  13507. /// </summary>
  13508. /// <param name="user">用户</param>
  13509. /// <param name="dataStr">统计日期</param>
  13510. /// <returns></returns>
  13511. public static ServiceResultEntity GetSemiReworkDayCount(SUserInfo user, string dateStr)
  13512. {
  13513. IDBConnection conn = null;
  13514. try
  13515. {
  13516. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13517. string sqlStr = $@"
  13518. SELECT
  13519. nvl(sr.SEMIREWORKUSERCODE,'--') SEMIREWORKUSERCODE,--AS 半检工号,
  13520. nvl( g.GOODSCODE, '合计' ) GOODSCODE,--AS 产品编码,
  13521. nvl(g.GOODSNAME,'--') GOODSNAME,--AS 产口名称,
  13522. to_char(count( sr.SEMIREWORKID )) GOODSCOUNT --AS 返修数量
  13523. FROM
  13524. TP_PM_SEMIREWORK sr
  13525. LEFT JOIN TP_PM_SEMIREWORKDEFECT srd ON sr.SEMIREWORKID = srd.SEMIREWORKID
  13526. LEFT JOIN TP_MST_GOODS g ON sr.GOODSID = g.GOODSID
  13527. WHERE
  13528. sr.VALUEFLAG = '1'
  13529. AND sr.ACCOUNTID = '{user.AccountID}'
  13530. AND sr.SEMIREWORKUSERCODE = '{user.UserCode}'
  13531. AND to_date(to_char(sr.CREATETIME,'yyyy-mm-dd'),'yyyy-mm-dd') = to_date('{dateStr}','yyyy-mm-dd')
  13532. GROUP BY
  13533. grouping sets ( ( sr.SEMIREWORKUSERCODE, g.GOODSCODE, g.GOODSNAME ), ( ) )
  13534. ";
  13535. DataTable data = conn.GetSqlResultToDt(sqlStr);
  13536. ServiceResultEntity sre = new ServiceResultEntity();
  13537. //if (data == null || data.Rows.Count == 0)
  13538. //{
  13539. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  13540. // return sre;
  13541. //}
  13542. sre.Data = new DataSet();
  13543. sre.Data.Tables.Add(data);
  13544. return sre;
  13545. }
  13546. catch (Exception ex)
  13547. {
  13548. throw ex;
  13549. }
  13550. finally
  13551. {
  13552. if (conn != null &&
  13553. conn.ConnState == ConnectionState.Open)
  13554. {
  13555. conn.Close();
  13556. }
  13557. }
  13558. }
  13559. //xuwei end
  13560. /// <summary>
  13561. /// 获取RPT030110画面(半检登记汇总表)的汇总信息查询sql
  13562. /// </summary>
  13563. /// <returns>sql</returns>
  13564. private static string GetRPT080107ISQL(SUserInfo user, SemiCheckEntity se, ref List<OracleParameter> parameters)
  13565. {
  13566. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  13567. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  13568. string sqlString = @"
  13569. select
  13570. SemiCheck.SemiCheckID,
  13571. CProcedure.ProcedureName as CProcedureName,
  13572. SemiCheck.ProcedureTime,
  13573. SemiCheck.UserCode,
  13574. GoodsType2.GoodsTypeName as LevelGoodsTypeName,
  13575. GoodsType.GoodsTypeName,
  13576. Goods.GoodsCode,
  13577. SemiCheck.BarCode,
  13578. -- 复检后不显示半检状态
  13579. SemiCheckType.SemiCheckTypeName,
  13580. --decode(SemiCheck.ReSemiCheckType, 0, SemiCheckType.SemiCheckTypeName, '已复检') SemiCheckTypeName,
  13581. SemiCheck.SemiCheckUserCode,
  13582. SemiCheck.SemiCheckTime,
  13583. ReSemiCheckType.ReSemiCheckTypeName,
  13584. SemiCheck.ReSemiCheckUserCode,
  13585. SemiCheck.ReSemiCheckTime,
  13586. decode(SemiCheck.BackOutFlag,'0','正常','撤销') as BackOutFlag,
  13587. SemiCheck.BackOutUserCode,
  13588. SemiCheck.BackOutTime,
  13589. SemiCheck.GroutingUserCode,
  13590. SemiCheck.GroutingLineCode,
  13591. SemiCheck.GroutingMouldCode,
  13592. SemiCheck.GroutingDate,
  13593. GroutingDailyDetail.DeliverTime,
  13594. logo.logoName,
  13595. RProcedure.ProcedureName as RProcedureName,
  13596. SemiCheck.ReworkUserCode,
  13597. SemiCheckDefect.DefectCode,
  13598. -- SemiCheckDefect.DefectName as DefectName1,
  13599. msd.DefectName as DefectName1, --缺陷名称显示 xcm 2023-4-23
  13600. --concat(SemiCheckDefect.DefectCode||'->',SemiCheckDefect.DefectName) as DefectName,
  13601. concat(SemiCheckDefect.DefectCode||'->',msd.DefectName) as DefectName,
  13602. --SemiCheckDefect.DefectPositionName,
  13603. msp.DefectPositionName, --缺陷位置显示 xcm 2023-4-23
  13604. SemiCheckDefect.DefectPositionCode,
  13605. -- concat(SemiCheckDefect.DefectPositionCode||'->',SemiCheckDefect.DefectPositionName) as DefectPositionName,
  13606. concat(SemiCheckDefect.DefectPositionCode||'->',msp.DefectPositionName) as DefectPositionName, --缺陷位置显示 xcm 2023-4-23
  13607. Procedure.ProcedureName,
  13608. inpp.ProcedureName CurrProcedureName,
  13609. DefectUser.username as DefectUser,
  13610. GroutingDailyDetail.testmouldflag
  13611. from TP_PM_SemiCheck SemiCheck
  13612. left join TP_PC_Procedure CProcedure
  13613. on SemiCheck.ProcedureID=CProcedure.ProcedureID
  13614. left join TP_MST_Goods Goods
  13615. on SemiCheck.GoodsID=Goods.GoodsID
  13616. left join TP_MST_GoodsType GoodsType
  13617. on Goods.GoodsTypeID=GoodsType.GoodsTypeID
  13618. left join TP_MST_GoodsType GoodsType2
  13619. on GoodsType2.accountid=GoodsType.accountid
  13620. and GoodsType2.GoodsTypecode=substr(GoodsType.GoodsTypecode,1,6)
  13621. left join TP_SYS_SemiCheckType SemiCheckType
  13622. on SemiCheck.SemiCheckType=SemiCheckType.SemiCheckTypeID
  13623. left join TP_SYS_ReSemiCheckType ReSemiCheckType
  13624. on SemiCheck.ReSemiCheckType=ReSemiCheckType.ReSemiCheckTypeID
  13625. left join TP_PM_GroutingDailyDetail GroutingDailyDetail
  13626. on GroutingDailyDetail.GroutingDailyDetailID=SemiCheck.GroutingDailyDetailID
  13627. left join TP_MST_Logo logo
  13628. on GroutingDailyDetail.LogoID=logo.LogoID
  13629. left join TP_PC_Procedure RProcedure
  13630. on SemiCheck.ReworkProcedureID=RProcedure.ProcedureID
  13631. left join TP_PM_SemiCheckDefect SemiCheckDefect
  13632. on SemiCheck.SemiCheckID=SemiCheckDefect.SemiCheckID
  13633. and SemiCheckDefect.ValueFlag='1'
  13634. left join tp_mst_semicheckdefect msd on SemiCheckDefect.defectid = msd.defectid --缺陷名称显示 xcm 2023-4-23
  13635. left join tp_mst_scdefectposition msp on SemiCheckDefect.defectpositionid = msp.defectpositionid --缺陷位置显示 xcm 2023-4-23
  13636. left join TP_PC_Procedure Procedure
  13637. on SemiCheckDefect.DefectProcedureID=Procedure.ProcedureID
  13638. left join TP_MST_User DefectUser
  13639. on DefectUser.userid=SemiCheckDefect.DefectUserID
  13640. left join tp_pm_inproduction inp on inp.barcode = SemiCheck.barcode
  13641. left join TP_PC_Procedure inpp on inp.ProcedureID = inpp.ProcedureID
  13642. where SemiCheck.AccountID=:AccountID
  13643. ";
  13644. //AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 9 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID=SemiCheck.procedureid))
  13645. // 完成工序
  13646. if (!string.IsNullOrEmpty(se.CProcedureIDS))
  13647. {
  13648. sqlString = sqlString + " AND instr(','||:CProcedureIDS||',',','||SemiCheck.ProcedureID||',')>0 ";
  13649. parameters.Add(new OracleParameter(":CProcedureIDS", OracleDbType.NVarchar2, se.CProcedureIDS, ParameterDirection.Input));
  13650. }
  13651. // 完成时间起始
  13652. if (se.CDateTimeStart.HasValue)
  13653. {
  13654. sqlString = sqlString + " AND SemiCheck.ProcedureTime >= :CDateTimeStart ";
  13655. parameters.Add(new OracleParameter(":CDateTimeStart", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13656. }
  13657. // 完成时间结束
  13658. if (se.CDateTimeEnd.HasValue)
  13659. {
  13660. sqlString = sqlString + " AND SemiCheck.ProcedureTime <= :CDateTimeEnd ";
  13661. parameters.Add(new OracleParameter(":CDateTimeEnd", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13662. }
  13663. // 完成工号
  13664. if (!string.IsNullOrEmpty(se.CUserCode))
  13665. {
  13666. sqlString = sqlString + " AND instr(SemiCheck.UserCode,:UserCode)>0";
  13667. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CUserCode, ParameterDirection.Input));
  13668. }
  13669. // 产品类别
  13670. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  13671. {
  13672. sqlString = sqlString + " AND instr(GoodsType.GoodsTypeCode,:GoodsTypeCode)=1 ";
  13673. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  13674. }
  13675. // 产品编码
  13676. if (!string.IsNullOrEmpty(se.GoodsCode))
  13677. {
  13678. sqlString = sqlString + " AND instr(Goods.GoodsCode,:GoodsCode)>0";
  13679. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  13680. }
  13681. // 成型工号
  13682. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  13683. {
  13684. sqlString = sqlString + " AND instr(SemiCheck.GroutingUserCode,:GroutingUserCode)>0";
  13685. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  13686. }
  13687. // 注浆时间起始
  13688. if (se.GroutingDateTimeStart.HasValue)
  13689. {
  13690. sqlString = sqlString + " AND SemiCheck.GroutingDate >= :GroutingDateTimeStart ";
  13691. parameters.Add(new OracleParameter(":GroutingDateTimeStart", OracleDbType.Date, se.GroutingDateTimeStart.Value, ParameterDirection.Input));
  13692. }
  13693. // 注浆时间结束
  13694. if (se.GroutingDateTimeEnd.HasValue)
  13695. {
  13696. sqlString = sqlString + " AND SemiCheck.GroutingDate <= :GroutingDateTimeEnd ";
  13697. parameters.Add(new OracleParameter(":GroutingDateTimeEnd", OracleDbType.Date, se.GroutingDateTimeEnd.Value, ParameterDirection.Input));
  13698. }
  13699. // 交坯时间起始
  13700. if (se.DeliveryDateTimeStart.HasValue)
  13701. {
  13702. sqlString = sqlString + " AND GroutingDailyDetail.DeliverTime >= :DeliveryDateTimeStart ";
  13703. parameters.Add(new OracleParameter(":DeliveryDateTimeStart", OracleDbType.Date, se.DeliveryDateTimeStart.Value, ParameterDirection.Input));
  13704. }
  13705. // 交坯时间结束
  13706. if (se.DeliveryDateTimeEnd.HasValue)
  13707. {
  13708. sqlString = sqlString + " AND GroutingDailyDetail.DeliverTime <= :DeliveryDateTimeEnd ";
  13709. parameters.Add(new OracleParameter(":DeliveryDateTimeEnd", OracleDbType.Date, se.DeliveryDateTimeEnd.Value, ParameterDirection.Input));
  13710. }
  13711. // 半检状态
  13712. if (!string.IsNullOrEmpty(se.SemiCheckType))
  13713. {
  13714. sqlString = sqlString + " AND instr(','||:SemiCheckType||',',','||SemiCheck.SemiCheckType||',')>0 ";
  13715. parameters.Add(new OracleParameter(":SemiCheckType", OracleDbType.NVarchar2, se.SemiCheckType, ParameterDirection.Input));
  13716. }
  13717. // 半检时间起始
  13718. if (se.SemiCheckDateTimeStart.HasValue)
  13719. {
  13720. sqlString = sqlString + " AND SemiCheck.SemiCheckTime >= :SemiCheckDateTimeStart ";
  13721. parameters.Add(new OracleParameter(":SemiCheckDateTimeStart", OracleDbType.Date, se.SemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13722. }
  13723. // 半检时间结束
  13724. if (se.SemiCheckDateTimeEnd.HasValue)
  13725. {
  13726. sqlString = sqlString + " AND SemiCheck.SemiCheckTime <= :SemiCheckDateTimeEnd ";
  13727. parameters.Add(new OracleParameter(":SemiCheckDateTimeEnd", OracleDbType.Date, se.SemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13728. }
  13729. // 半检工号
  13730. if (!string.IsNullOrEmpty(se.SemiCheckUserCode))
  13731. {
  13732. sqlString = sqlString + " AND instr(SemiCheck.SemiCheckUserCode,:SemiCheckUserCode)>0";
  13733. parameters.Add(new OracleParameter(":SemiCheckUserCode", OracleDbType.NVarchar2, se.SemiCheckUserCode, ParameterDirection.Input));
  13734. }
  13735. // 返工工序
  13736. if (!string.IsNullOrEmpty(se.RProcedureIDS))
  13737. {
  13738. sqlString = sqlString + " AND instr(','||:RProcedureIDS||',',','||SemiCheck.ReworkProcedureID||',')>0 ";
  13739. parameters.Add(new OracleParameter(":RProcedureIDS", OracleDbType.NVarchar2, se.RProcedureIDS, ParameterDirection.Input));
  13740. }
  13741. // 返工工号
  13742. if (!string.IsNullOrEmpty(se.ReworkUserCode))
  13743. {
  13744. sqlString = sqlString + " AND instr(SemiCheck.ReworkUserCode,:ReworkUserCode)>0";
  13745. parameters.Add(new OracleParameter(":ReworkUserCode", OracleDbType.NVarchar2, se.ReworkUserCode, ParameterDirection.Input));
  13746. }
  13747. // 复检状态
  13748. if (!string.IsNullOrEmpty(se.ReSemiCheckType))
  13749. {
  13750. sqlString = sqlString + " AND instr(','||:ReSemiCheckType||',',','||SemiCheck.ReSemiCheckType||',')>0 ";
  13751. parameters.Add(new OracleParameter(":ReSemiCheckType", OracleDbType.NVarchar2, se.ReSemiCheckType, ParameterDirection.Input));
  13752. }
  13753. // 复检时间起始
  13754. if (se.ReSemiCheckDateTimeStart.HasValue)
  13755. {
  13756. sqlString = sqlString + " AND SemiCheck.ReSemiCheckTime >= :ReSemiCheckDateTimeStart ";
  13757. parameters.Add(new OracleParameter(":ReSemiCheckDateTimeStart", OracleDbType.Date, se.ReSemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13758. }
  13759. // 复检时间结束
  13760. if (se.ReSemiCheckDateTimeEnd.HasValue)
  13761. {
  13762. sqlString = sqlString + " AND SemiCheck.ReSemiCheckTime <= :ReSemiCheckDateTimeEnd ";
  13763. parameters.Add(new OracleParameter(":ReSemiCheckDateTimeEnd", OracleDbType.Date, se.ReSemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13764. }
  13765. // 复检工号
  13766. if (!string.IsNullOrEmpty(se.ReSemiCheckUserCode))
  13767. {
  13768. sqlString = sqlString + " AND instr(SemiCheck.ReSemiCheckUserCode,:ReSemiCheckUserCode)>0";
  13769. parameters.Add(new OracleParameter(":ReSemiCheckUserCode", OracleDbType.NVarchar2, se.ReSemiCheckUserCode, ParameterDirection.Input));
  13770. }
  13771. // 撤销标识
  13772. if (!string.IsNullOrEmpty(se.BackOutFlag))
  13773. {
  13774. sqlString = sqlString + " AND instr(','||:BackOutFlag||',',','||SemiCheck.BackOutFlag||',')>0 ";
  13775. parameters.Add(new OracleParameter(":BackOutFlag", OracleDbType.NVarchar2, se.BackOutFlag, ParameterDirection.Input));
  13776. }
  13777. // 撤销时间起始
  13778. if (se.BackOutTimeStart.HasValue)
  13779. {
  13780. sqlString = sqlString + " AND SemiCheck.BackOutTime >= :BackOutTimeStart ";
  13781. parameters.Add(new OracleParameter(":BackOutTimeStart", OracleDbType.Date, se.BackOutTimeStart.Value, ParameterDirection.Input));
  13782. }
  13783. // 撤销时间结束
  13784. if (se.BackOutTimeEnd.HasValue)
  13785. {
  13786. sqlString = sqlString + " AND SemiCheck.BackOutTime <= :BackOutTimeEnd ";
  13787. parameters.Add(new OracleParameter(":BackOutTimeEnd", OracleDbType.Date, se.BackOutTimeEnd.Value, ParameterDirection.Input));
  13788. }
  13789. // 撤销工号
  13790. if (!string.IsNullOrEmpty(se.BackOutUserCode))
  13791. {
  13792. sqlString = sqlString + " AND instr(SemiCheck.BackOutUserCode,:BackOutUserCode)>0";
  13793. parameters.Add(new OracleParameter(":BackOutUserCode", OracleDbType.NVarchar2, se.BackOutUserCode, ParameterDirection.Input));
  13794. }
  13795. // 产品条码
  13796. if (!string.IsNullOrEmpty(se.BarCode))
  13797. {
  13798. sqlString = sqlString + " AND instr(SemiCheck.BarCode,:BarCode)>0";
  13799. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  13800. }
  13801. // 缺陷编码
  13802. if (!string.IsNullOrEmpty(se.DefectCode))
  13803. {
  13804. sqlString = sqlString + " AND instr(SemiCheckDefect.DefectCode,:DefectCode)>0";
  13805. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  13806. }
  13807. // 缺陷位置集
  13808. if (!string.IsNullOrEmpty(se.DefectPositionIDS))
  13809. {
  13810. sqlString = sqlString + " AND instr(','||:DefectPositionIDS||',',','||SemiCheckDefect.DefectPositionID||',')>0 ";
  13811. parameters.Add(new OracleParameter(":DefectPositionIDS", OracleDbType.NVarchar2, se.DefectPositionIDS, ParameterDirection.Input));
  13812. }
  13813. // 责任工序集
  13814. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  13815. {
  13816. sqlString = sqlString + " AND instr(','||:DefectPositionIDS||',',','||SemiCheckDefect.DefectPositionID||',')>0 ";
  13817. parameters.Add(new OracleParameter(":DefectPositionIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  13818. }
  13819. // 责任工号
  13820. if (!string.IsNullOrEmpty(se.DefectUser))
  13821. {
  13822. sqlString = sqlString + " AND instr(DefectUser.UserCode,:DefectUser)>0";
  13823. parameters.Add(new OracleParameter(":DefectUser", OracleDbType.NVarchar2, se.DefectUser, ParameterDirection.Input));
  13824. }
  13825. // 试验标识
  13826. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  13827. {
  13828. sqlString = sqlString + " AND GroutingDailyDetail.TestMouldFlag = :TestMouldFlag ";
  13829. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  13830. }
  13831. return sqlString;
  13832. }
  13833. /// <summary>
  13834. /// 取得F_RPT_030112画面(产成品交接汇总表)的汇总信息查询数据
  13835. /// </summary>
  13836. /// <param name="user">登录用户信息</param>
  13837. /// <param name="se">查询条件</param>
  13838. /// <returns>查询结果</returns>
  13839. public static ServiceResultEntity GetRPT0030112SData(SUserInfo user, SearchFinishedProductEntity se)
  13840. {
  13841. IDBConnection conn = null;
  13842. try
  13843. {
  13844. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13845. List<OracleParameter> parameters = new List<OracleParameter>();
  13846. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030112SSQL(user, se, ref parameters));
  13847. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  13848. ServiceResultEntity sre = new ServiceResultEntity();
  13849. if (data == null || data.Rows.Count == 0)
  13850. {
  13851. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  13852. return sre;
  13853. }
  13854. sre.Data = new DataSet();
  13855. sre.Data.Tables.Add(data);
  13856. return sre;
  13857. }
  13858. catch (Exception ex)
  13859. {
  13860. throw ex;
  13861. }
  13862. finally
  13863. {
  13864. if (conn != null &&
  13865. conn.ConnState == ConnectionState.Open)
  13866. {
  13867. conn.Close();
  13868. }
  13869. }
  13870. }
  13871. /// <summary>
  13872. /// 获取RPT030112画面(产成品交接汇总表)的汇总信息查询sql
  13873. /// </summary>
  13874. /// <returns>sql</returns>
  13875. private static string GetRPT030112SSQL(SUserInfo user, SearchFinishedProductEntity se, ref List<OracleParameter> parameters)
  13876. {
  13877. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  13878. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  13879. string sqlString = @"SELECT ts.gid
  13880. ,logoid
  13881. ,decode(ts.gid,
  13882. '23',
  13883. '总计【' || orderno || '】',
  13884. decode(ts.gid, '1', '--', '3', '--', orderno)) AS orderno
  13885. ,decode(ts.gid,
  13886. '3',
  13887. '合计【' || logoname || '】',
  13888. decode(ts.gid, '1', '--', logoname)) AS logoname
  13889. ,decode(ts.gid, '1', '小计【' || goodscode || '】', goodscode) AS goodscode
  13890. ,decode(ts.gid, '1', '--', goodsmodel) AS goodsmodel
  13891. ,GoodsSpecification
  13892. ,fhtime
  13893. ,COUNT
  13894. FROM (SELECT grouping_id(l.logoid,
  13895. o.orderno,
  13896. l.logoname,
  13897. g.goodscode,
  13898. to_char(f.fhtime, 'yyyy-mm-dd')) AS gid
  13899. ,decode(GROUPING(l.logoid), 1, '--', l.logoid) AS logoid
  13900. ,decode(GROUPING(o.orderno), 1, '--', o.orderno) AS orderno
  13901. ,decode(GROUPING(l.logoname), 1, '--', l.logoname) AS logoname
  13902. ,decode(GROUPING(g.goodscode), 1, '--', g.goodscode) AS goodscode
  13903. ,decode(GROUPING(g.goodscode), 1, '--', g.goodsmodel) AS goodsmodel
  13904. ,decode(GROUPING(g.GoodsSpecification), 1, '--', g.GoodsSpecification) AS GoodsSpecification
  13905. ,decode(GROUPING(to_char(f.fhtime, 'yyyy-mm-dd')),
  13906. 1,
  13907. '--',
  13908. to_char(f.fhtime, 'yyyy-mm-dd')) AS fhtime
  13909. ,COUNT(f.fhtime) AS COUNT
  13910. FROM tp_pm_finishedproduct F
  13911. LEFT JOIN TP_PM_Order O ON F.Fhorderid = O.Orderid
  13912. LEFT JOIN tp_mst_logo L ON F.LOGOID = L.LOGOID
  13913. LEFT JOIN tp_mst_goods G ON g.goodsid = f.goodsid
  13914. LEFT JOIN TP_MST_GoodsType gt ON g.GoodsTypeID = gt.GoodsTypeID
  13915. where f.fhtime is not null and f.AccountID=:AccountID ";
  13916. // 交接时间起始
  13917. if (se.FHTimeStart.HasValue)
  13918. {
  13919. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart ";
  13920. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, se.FHTimeStart.Value, ParameterDirection.Input));
  13921. }
  13922. // 交接时间结束
  13923. if (se.FHTimeEnd.HasValue)
  13924. {
  13925. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd ";
  13926. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, se.FHTimeEnd.Value, ParameterDirection.Input));
  13927. }
  13928. // 订单号
  13929. if (!string.IsNullOrEmpty(se.OrderNo))
  13930. {
  13931. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0";
  13932. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, se.OrderNo, ParameterDirection.Input));
  13933. }
  13934. // 产品类别编码
  13935. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  13936. {
  13937. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1";
  13938. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  13939. }
  13940. // 产品编码
  13941. if (!string.IsNullOrEmpty(se.GoodsCode))
  13942. {
  13943. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0";
  13944. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  13945. }
  13946. // 产品型号
  13947. if (!string.IsNullOrEmpty(se.GoodsModel))
  13948. {
  13949. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0";
  13950. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, se.GoodsModel, ParameterDirection.Input));
  13951. }
  13952. // 产品商标ID集
  13953. if (!string.IsNullOrEmpty(se.LogoIDS))
  13954. {
  13955. sqlString += " AND instr(','||:LogoIDS||',', ',' || L.logoid || ',') > 0";
  13956. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, se.LogoIDS, ParameterDirection.Input));
  13957. }
  13958. // 交接工号
  13959. if (!string.IsNullOrEmpty(se.FHUserCode))
  13960. {
  13961. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0";
  13962. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, se.FHUserCode, ParameterDirection.Input));
  13963. }
  13964. sqlString = sqlString + @" GROUP BY rollup(o.orderno,l.logoid, l.logoname,g.goodscode,g.goodsmodel,g.GoodsSpecification,to_char(f.fhtime, 'yyyy-mm-dd'))
  13965. order by o.orderno,l.logoid, l.logoname,g.goodscode,to_char(f.fhtime, 'yyyy-mm-dd')
  13966. )ts
  13967. where ( logoid!='--' and orderno!='--' and logoname!='--' and goodscode!='--' and fhtime!='--')
  13968. or (goodscode!='--')
  13969. or(logoname!='')
  13970. or (orderno!='--') and ts.gid!='7'";
  13971. return sqlString;
  13972. }
  13973. /// <summary>
  13974. /// 取得F_RPT_030112画面(产成品交接汇总表)的汇总信息
  13975. /// </summary>
  13976. /// <param name="user">登录用户信息</param>
  13977. /// <param name="se">查询条件</param>
  13978. /// <returns>查询结果</returns>
  13979. public static ServiceResultEntity GetRPT0030112SumData(ClientRequestEntity cre, SUserInfo user)
  13980. {
  13981. IDBConnection conn = null;
  13982. try
  13983. {
  13984. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13985. List<OracleParameter> parameters = new List<OracleParameter>();
  13986. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  13987. //string sqlString = "SELECT trunc(f.fhtime) fhtime, g.goodscode, COUNT(*) goodscount\n" +
  13988. string sqlString = "SELECT nvl2(o.orderno,\n" +
  13989. " nvl2(l.logoname,\n" +
  13990. " o.orderno,\n" +
  13991. " to_char('合计[') || o.orderno ||\n" +
  13992. " to_char(']')),\n" +
  13993. " '总计') orderno\n" +
  13994. " ,nvl2(l.logoname,\n" +
  13995. " nvl2(g.goodscode,\n" +
  13996. " l.logoname,\n" +
  13997. " to_char('小计[' || l.logoname || ']')),\n" +
  13998. " '--') logoname\n" +
  13999. " ,nvl(g.goodscode, '--') goodscode" +
  14000. " ,nvl(g.goodsmodel, '--') goodsmodel" +
  14001. " ,nvl(gdd.materialcode, '--') mcode" +
  14002. " ,nvl(gdd.materialremark, '--') mremark" +
  14003. " ,f.logoid" +
  14004. " ,f.goodsid" +
  14005. " ,f.fhorderid" +
  14006. " ,COUNT(*) count" +
  14007. " ,nvl(f.fhusercode, '--') fhusercode_summary" +
  14008. " FROM tp_pm_finishedproduct f\n" +
  14009. " inner JOIN tp_pm_groutingdailydetail gdd\n" +
  14010. " ON gdd.barcode = f.barcode\n" +
  14011. " LEFT JOIN tp_mst_logo l\n" +
  14012. " ON f.logoid = l.logoid\n" +
  14013. " LEFT JOIN TP_PM_Order O\n" +
  14014. " ON f.Fhorderid = O.Orderid\n" +
  14015. " LEFT JOIN tp_mst_goods G\n" +
  14016. " ON g.goodsid = f.goodsid\n" +
  14017. " LEFT JOIN TP_MST_GoodsType gt\n" +
  14018. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  14019. " WHERE f.fhtime IS NOT NULL\n" +
  14020. " AND f.AccountID = :AccountID\n";
  14021. // 交接时间起始
  14022. if (cre.Properties["FHTimeStart"] != null)
  14023. {
  14024. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart \n";
  14025. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, cre.Properties["FHTimeStart"], ParameterDirection.Input));
  14026. }
  14027. // 交接时间结束
  14028. if (cre.Properties["FHTimeEnd"] != null)
  14029. {
  14030. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd \n";
  14031. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, cre.Properties["FHTimeEnd"], ParameterDirection.Input));
  14032. }
  14033. // 订单号
  14034. if (!string.IsNullOrEmpty(cre.Properties["OrderNo"] as string))
  14035. {
  14036. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0 \n";
  14037. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, cre.Properties["OrderNo"], ParameterDirection.Input));
  14038. }
  14039. // 产品类别编码
  14040. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"] as string))
  14041. {
  14042. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 \n";
  14043. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  14044. }
  14045. // 产品编码
  14046. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"] as string))
  14047. {
  14048. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  14049. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input));
  14050. }
  14051. // 产品型号
  14052. if (!string.IsNullOrEmpty(cre.Properties["GoodsModel"] as string))
  14053. {
  14054. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0 \n";
  14055. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, cre.Properties["GoodsModel"], ParameterDirection.Input));
  14056. }
  14057. // 产品商标ID集
  14058. if (!string.IsNullOrEmpty(cre.Properties["LogoIDS"] as string))
  14059. {
  14060. sqlString += " AND instr(','||:LogoIDS||',', ',' || f.logoid || ',') > 0 \n";
  14061. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, cre.Properties["LogoIDS"], ParameterDirection.Input));
  14062. }
  14063. // 交接工号
  14064. if (!string.IsNullOrEmpty(cre.Properties["FHUserCode"] as string))
  14065. {
  14066. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0 \n";
  14067. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, cre.Properties["FHUserCode"], ParameterDirection.Input));
  14068. }
  14069. // 试验标识
  14070. if (!string.IsNullOrEmpty(cre.Properties["TestMouldFlag"] as string))
  14071. {
  14072. sqlString = sqlString + " AND gdd.TestMouldFlag = :TestMouldFlag ";
  14073. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, cre.Properties["TestMouldFlag"], ParameterDirection.Input));
  14074. }
  14075. //sqlString += " group by trunc(f.fhtime), g.goodscode order by trunc(f.fhtime), g.goodscode";
  14076. sqlString += " group by grouping sets((o.orderno, l.logoname, g.goodscode, g.goodsmodel, gdd.materialcode,gdd.materialremark,f.logoid,f.goodsid,f.fhorderid,f.fhusercode),(o.orderno, l.logoname,f.logoid,f.fhorderid,f.fhusercode),(o.orderno,f.fhorderid,f.fhusercode),())";
  14077. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  14078. ServiceResultEntity sre = new ServiceResultEntity();
  14079. if (data == null || data.Rows.Count == 0)
  14080. {
  14081. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14082. return sre;
  14083. }
  14084. sre.Data = new DataSet();
  14085. sre.Data.Tables.Add(data);
  14086. return sre;
  14087. }
  14088. catch (Exception ex)
  14089. {
  14090. throw ex;
  14091. }
  14092. finally
  14093. {
  14094. if (conn != null &&
  14095. conn.ConnState == ConnectionState.Open)
  14096. {
  14097. conn.Close();
  14098. }
  14099. }
  14100. }
  14101. /// <summary>
  14102. /// 取得F_RPT_030120画面 跨车间作业量汇总表-汇总信息
  14103. /// </summary>
  14104. /// <param name="user">登录用户信息</param>
  14105. /// <param name="se">查询条件</param>
  14106. /// <returns>查询结果</returns>
  14107. public static ServiceResultEntity GetRPT0030120SumData(ClientRequestEntity cre, SUserInfo user)
  14108. {
  14109. IDBConnection conn = null;
  14110. try
  14111. {
  14112. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14113. OracleParameter[] oracleParameter = new OracleParameter[]
  14114. {
  14115. new OracleParameter(":DATACODE", OracleDbType.Varchar2,cre.Properties["DATACODE"], ParameterDirection.Input),
  14116. new OracleParameter(":WORKSHOP", OracleDbType.Varchar2,cre.Properties["WORKSHOP"], ParameterDirection.Input),
  14117. new OracleParameter(":TIMESTART", OracleDbType.Date,cre.Properties["TIMESTART"], ParameterDirection.Input),
  14118. new OracleParameter(":TIMEEND", OracleDbType.Date,cre.Properties["TIMEEND"], ParameterDirection.Input),
  14119. new OracleParameter(":TESTMOULDFLAG", OracleDbType.Int32,cre.Properties["TESTMOULDFLAG"], ParameterDirection.Input),
  14120. new OracleParameter(":GOODSCODE", OracleDbType.Varchar2,cre.Properties["GOODSCODE"], ParameterDirection.Input),
  14121. new OracleParameter(":ITEM", OracleDbType.Varchar2,cre.Properties["ITEM"], ParameterDirection.Input)
  14122. };
  14123. string sqlString = "SELECT MATERIALCODE,GOODSCODE,WORKSHOP,DATACODE,TESTMOULDFLAG,count(*) QUANLITY," +
  14124. "CASE WHEN WORKSHOP = 2 THEN '二车间' WHEN WORKSHOP = 3 THEN '三车间' else '-' end WORKSHOPNAME,\n " +
  14125. "case when ITEM = 1 then '产量' when ITEM = 2 then '产量撤销' when ITEM = 3 then '工序报损' when ITEM = 4 then '工序报损撤销' \n" +
  14126. "when ITEM = 5 then '盘点清除' when ITEM = 6 then '干补' when ITEM = 7 then '回收' else '-' end as ITEMNAME,ITEM\n" +
  14127. ",zscs\n" +
  14128. ",case when zscs = 'L' then '立浇【L】' when zscs = 'G' then '高压【G】' when zscs = 'M' then '粘接高压(三水厂)【M】' when zscs = 'Q' then '吊装线【Q】' else '-' end as zscsname\n" +
  14129. "from (\n" +
  14130. " --产量\n" +
  14131. " SELECT\n" +
  14132. " GDD.MATERIALCODE,\n" +
  14133. " gdd.goodscode,\n" +
  14134. " HGDI.WORKSHOP,\n" +
  14135. " HGDI.DATACODE,\n" +
  14136. " 1 AS ITEM,\n" +
  14137. " GDD.TESTMOULDFLAG,\n" +
  14138. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14139. " FROM\n" +
  14140. " TP_PM_PRODUCTIONDATA PD\n" +
  14141. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID \n" +
  14142. " INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID \n" +
  14143. " INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID \n" +
  14144. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14145. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14146. " AND HGDI.ITEMTYPE = 1\n" +
  14147. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14148. " AND HGDI.ITEMID = PD.PROCEDUREID\n" +
  14149. " AND (HGDI.ITEMID <> 104 OR\n" +
  14150. " (PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))\n" +
  14151. " WHERE\n" +
  14152. " PD.VALUEFLAG = 1\n" +
  14153. " AND PD.CREATETIME >= :TIMESTART\n" +
  14154. " AND PD.CREATETIME <= :TIMEEND\n" +
  14155. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14156. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14157. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14158. " ) \n" +
  14159. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14160. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14161. " )" +
  14162. " AND INSTR(GT.GOODSTYPECODE,'001001') = 1\n" +
  14163. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14164. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14165. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '1')\n" +
  14166. "UNION ALL\n" +
  14167. "--产量撤销\n" +
  14168. " SELECT\n" +
  14169. " GDD.MATERIALCODE,\n" +
  14170. " GDD.goodscode,\n" +
  14171. " HGDI.WORKSHOP,\n" +
  14172. " HGDI.DATACODE AS DATACODE,\n" +
  14173. " 2 AS ITEM,\n" +
  14174. " GDD.TESTMOULDFLAG,\n" +
  14175. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14176. " FROM\n" +
  14177. " TP_PM_PRODUCTIONDATA PD\n" +
  14178. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID \n" +
  14179. " INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID \n" +
  14180. " INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID \n" +
  14181. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14182. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14183. " AND HGDI.ITEMTYPE = 1\n" +
  14184. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14185. " AND HGDI.ITEMID = PD.PROCEDUREID\n" +
  14186. " AND (HGDI.ITEMID <> 104 OR\n" +
  14187. " (PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))\n" +
  14188. " WHERE\n" +
  14189. " PD.VALUEFLAG = 0\n" +
  14190. " AND PD.BACKOUTTIME >= :TIMESTART\n" +
  14191. " AND PD.BACKOUTTIME <= :TIMEEND\n" +
  14192. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14193. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14194. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14195. " ) \n" +
  14196. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14197. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14198. " )" +
  14199. " AND INSTR(GT.GOODSTYPECODE,'001001') = 1\n" +
  14200. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14201. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14202. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '2')\n" +
  14203. "-- 工序报损\n" +
  14204. "UNION ALL\n" +
  14205. " SELECT \n" +
  14206. " GDD.MATERIALCODE,\n" +
  14207. " GDD.goodscode,\n" +
  14208. " HGDI.WORKSHOP,\n" +
  14209. " HGDI.DATACODE AS DATACODE,\n" +
  14210. " 3 AS ITEM,\n" +
  14211. " GDD.TESTMOULDFLAG,\n" +
  14212. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14213. " FROM TP_PM_SCRAPPRODUCT SP\n" +
  14214. " INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid\n" +
  14215. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID \n" +
  14216. " INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID \n" +
  14217. " INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID \n" +
  14218. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14219. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14220. " AND HGDI.ITEMTYPE = 2\n" +
  14221. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14222. " AND HGDI.ITEMID = PD.PROCEDUREID\n" +
  14223. " AND (HGDI.ITEMID <> 104 OR (PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))\n" +
  14224. " WHERE\n" +
  14225. " SP.AUDITSTATUS = 1\n" +
  14226. " AND SP.AUDITDATE >= :TIMESTART\n" +
  14227. " AND SP.AUDITDATE <= :TIMEEND\n" +
  14228. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14229. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14230. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14231. " ) \n" +
  14232. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14233. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14234. " )" +
  14235. " AND INSTR(GT.GOODSTYPECODE,'001001') = 1\n" +
  14236. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14237. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14238. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '3')\n" +
  14239. " -- 工序报损撤销\n" +
  14240. "UNION ALL\n" +
  14241. " SELECT \n" +
  14242. " GDD.MATERIALCODE,\n" +
  14243. " GDD.goodscode,\n" +
  14244. " HGDI.WORKSHOP,\n" +
  14245. " HGDI.DATACODE AS DATACODE,\n" +
  14246. " 4 AS ITEM,\n" +
  14247. " GDD.TESTMOULDFLAG,\n" +
  14248. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14249. " FROM TP_PM_SCRAPPRODUCT SP\n" +
  14250. " INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid\n" +
  14251. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID \n" +
  14252. " INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID \n" +
  14253. " INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID \n" +
  14254. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14255. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14256. " AND HGDI.ITEMTYPE = 2\n" +
  14257. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14258. " AND HGDI.ITEMID = PD.PROCEDUREID\n" +
  14259. " AND (HGDI.ITEMID <> 104 OR (PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))\n" +
  14260. " WHERE\n" +
  14261. " SP.AUDITSTATUS = 1\n" +
  14262. " AND SP.VALUEFLAG = '0'\n" +
  14263. " AND SP.BACKOUTTIME >= :TIMESTART\n" +
  14264. " AND SP.BACKOUTTIME <= :TIMEEND\n" +
  14265. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14266. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14267. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14268. " ) \n" +
  14269. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14270. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14271. " )" +
  14272. " AND INSTR(GT.GOODSTYPECODE,'001001') = 1\n" +
  14273. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14274. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14275. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '4')\n" +
  14276. " -- 盘点清除\n" +
  14277. " UNION ALL\n" +
  14278. " SELECT \n" +
  14279. " GDD.MATERIALCODE,\n" +
  14280. " GDD.GOODSCODE,\n" +
  14281. " HGDI.WORKSHOP,\n" +
  14282. " HGDI.DATACODE,\n" +
  14283. " 5 AS ITEM,\n" +
  14284. " GDD.TESTMOULDFLAG,\n" +
  14285. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14286. " FROM TP_PM_GOODSCHANGEHISTORY GH\n" +
  14287. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID\n" +
  14288. " INNER JOIN TP_MST_GOODS G ON GH.GOODSID = G.GOODSID \n" +
  14289. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14290. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14291. " AND HGDI.ITEMTYPE = 2\n" +
  14292. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14293. " AND HGDI.ITEMID = GH.OTHERID\n" +
  14294. " WHERE GH.CREATETIME >= :TIMESTART\n" +
  14295. " AND GH.CREATETIME <= :TIMEEND\n" +
  14296. " AND GH.DATATYPE IN (11, 12)\n" +
  14297. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14298. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14299. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '5')\n" +
  14300. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14301. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14302. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14303. " ) \n" +
  14304. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14305. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14306. " )" +
  14307. "-- 干补\n" +
  14308. " UNION ALL\n" +
  14309. " SELECT \n" +
  14310. " GDD.MATERIALCODE,\n" +
  14311. " GDD.GOODSCODE,\n" +
  14312. " HGDI.WORKSHOP,\n" +
  14313. " HGDI.DATACODE,\n" +
  14314. " 6 AS ITEM,\n" +
  14315. " GDD.TESTMOULDFLAG,\n" +
  14316. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14317. " FROM TP_PM_SCRAPPRODUCT SP\n" +
  14318. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID\n" +
  14319. " INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID \n" +
  14320. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14321. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14322. " AND HGDI.ITEMTYPE = 2\n" +
  14323. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14324. " AND HGDI.ITEMID = SP.PROCEDUREID\n" +
  14325. " WHERE SP.AUDITSTATUS = 1\n" +
  14326. " AND SP.VALUEFLAG = '1'\n" +
  14327. " AND SP.GOODSLEVELTYPEID = 9\n" +
  14328. " AND SP.SPECIALREPAIRTIME >= :TIMESTART\n" +
  14329. " AND SP.SPECIALREPAIRTIME <= :TIMEEND\n" +
  14330. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14331. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14332. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '6')\n" +
  14333. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14334. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14335. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14336. " ) \n" +
  14337. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14338. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14339. " )" +
  14340. " -- 回收\n" +
  14341. " UNION ALL\n" +
  14342. " SELECT \n" +
  14343. " GDD.MATERIALCODE,\n" +
  14344. " GDD.GOODSCODE,\n" +
  14345. " HGDI.WORKSHOP,\n" +
  14346. " HGDI.DATACODE,\n" +
  14347. " 7 AS ITEM,\n" +
  14348. " GDD.TESTMOULDFLAG,\n" +
  14349. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14350. " FROM TP_PM_SCRAPPRODUCT SP\n" +
  14351. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID\n" +
  14352. " INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID \n" +
  14353. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14354. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14355. " AND HGDI.ITEMTYPE = 2\n" +
  14356. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14357. " AND HGDI.ITEMID = SP.PROCEDUREID\n" +
  14358. " WHERE SP.AUDITSTATUS = 1\n" +
  14359. " AND SP.VALUEFLAG = '1'\n" +
  14360. " AND SP.RECYCLINGFLAG = '1'\n" +
  14361. " AND SP.RECYCLINGTIME >= :TIMESTART\n" +
  14362. " AND SP.RECYCLINGTIME <= :TIMEEND\n" +
  14363. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14364. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14365. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '7')\n" +
  14366. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14367. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14368. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14369. " ) \n" +
  14370. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14371. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14372. " )" +
  14373. ") \n" +
  14374. "group by MATERIALCODE,GOODSCODE,WORKSHOP,DATACODE,ITEM,TESTMOULDFLAG,ZSCS \n" +
  14375. "order by DATACODE,ITEM,WORKSHOP ";
  14376. DataTable data = conn.GetSqlResultToDt(sqlString, oracleParameter);
  14377. ServiceResultEntity sre = new ServiceResultEntity();
  14378. if (data == null || data.Rows.Count == 0)
  14379. {
  14380. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14381. return sre;
  14382. }
  14383. sre.Data = new DataSet();
  14384. sre.Data.Tables.Add(data);
  14385. return sre;
  14386. }
  14387. catch (Exception ex)
  14388. {
  14389. throw ex;
  14390. }
  14391. finally
  14392. {
  14393. if (conn != null &&
  14394. conn.ConnState == ConnectionState.Open)
  14395. {
  14396. conn.Close();
  14397. }
  14398. }
  14399. }
  14400. /// <summary>
  14401. /// 取得F_RPT_030120画面 跨车间作业量汇总表-明细信息
  14402. /// </summary>
  14403. /// <param name="user">登录用户信息</param>
  14404. /// <param name="se">查询条件</param>
  14405. /// <returns>查询结果</returns>
  14406. public static ServiceResultEntity GetRPT0030120DetailData(ClientRequestEntity cre, SUserInfo user)
  14407. {
  14408. IDBConnection conn = null;
  14409. try
  14410. {
  14411. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14412. OracleParameter[] oracleParameter = new OracleParameter[]
  14413. {
  14414. new OracleParameter(":DATACODE", OracleDbType.Varchar2,cre.Properties["DATACODE"], ParameterDirection.Input),
  14415. new OracleParameter(":WORKSHOP", OracleDbType.Varchar2,cre.Properties["WORKSHOP"], ParameterDirection.Input),
  14416. new OracleParameter(":TIMESTART", OracleDbType.Date,cre.Properties["TIMESTART"], ParameterDirection.Input),
  14417. new OracleParameter(":TIMEEND", OracleDbType.Date,cre.Properties["TIMEEND"], ParameterDirection.Input),
  14418. new OracleParameter(":TESTMOULDFLAG", OracleDbType.Int32,cre.Properties["TESTMOULDFLAG"], ParameterDirection.Input),
  14419. new OracleParameter(":GOODSCODE", OracleDbType.Varchar2,cre.Properties["GOODSCODE"], ParameterDirection.Input),
  14420. new OracleParameter(":ITEM", OracleDbType.Varchar2,cre.Properties["ITEM"], ParameterDirection.Input)
  14421. };
  14422. string sqlString = "SELECT BARCODE,MATERIALCODE,MATERIALREMARK,GROUTINGLINECODE,GOODSCODE,GOODSMODEL,WORKSHOP,DATACODE,TESTMOULDFLAG,\n " +
  14423. "CASE WHEN WORKSHOP = 2 THEN '二车间' WHEN WORKSHOP = 3 THEN '三车间' else '-' end WORKSHOPNAME,\n " +
  14424. "case when ITEM = 1 then '产量' when ITEM = 2 then '产量撤销' when ITEM = 3 then '工序报损' when ITEM = 4 then '工序报损撤销' \n" +
  14425. "when ITEM = 5 then '盘点清除' when ITEM = 6 then '干补' when ITEM = 7 then '回收' else '-' end as ITEM,CREATETIME,LOGONAME,PROCEDURENAME\n" +
  14426. ",zscs\n" +
  14427. ",case when zscs = 'L' then '立浇【L】' when zscs = 'G' then '高压【G】' when zscs = 'M' then '粘接高压(三水厂)【M】' when zscs = 'Q' then '吊装线【Q】' else '-' end as zscsname\n" +
  14428. "from (\n" +
  14429. " --产量\n" +
  14430. " SELECT\n" +
  14431. " GDD.barcode,\n" +
  14432. " GDD.MATERIALCODE,\n" +
  14433. " GDD.MATERIALREMARK,\n" +
  14434. " GDD.GROUTINGLINECODE,\n" +
  14435. " gdd.goodscode,\n" +
  14436. " g.GOODSMODEL,\n" +
  14437. " HGDI.WORKSHOP,\n" +
  14438. " HGDI.DATACODE,\n" +
  14439. " L.LOGONAME,\n" +
  14440. " P.PROCEDURENAME,\n" +
  14441. " 1 AS ITEM,\n" +
  14442. " PD.CREATETIME,\n" +
  14443. " GDD.TESTMOULDFLAG,\n" +
  14444. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14445. " FROM\n" +
  14446. " TP_PM_PRODUCTIONDATA PD\n" +
  14447. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID \n" +
  14448. " INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID \n" +
  14449. " INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID \n" +
  14450. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14451. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14452. " AND HGDI.ITEMTYPE = 1\n" +
  14453. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14454. " AND HGDI.ITEMID = PD.PROCEDUREID\n" +
  14455. " AND (HGDI.ITEMID <> 104 OR\n" +
  14456. " (PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))\n" +
  14457. " LEFT JOIN TP_MST_LOGO L ON L.LOGOID = GDD.LOGOID\n" +
  14458. " LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = HGDI.ITEMID\n" +
  14459. " WHERE\n" +
  14460. " PD.VALUEFLAG = 1\n" +
  14461. " AND PD.CREATETIME >= :TIMESTART\n" +
  14462. " AND PD.CREATETIME <= :TIMEEND\n" +
  14463. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14464. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14465. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14466. " ) \n" +
  14467. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14468. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14469. " )" +
  14470. " AND INSTR(GT.GOODSTYPECODE,'001001') = 1\n" +
  14471. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14472. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14473. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '1')\n" +
  14474. "UNION ALL\n" +
  14475. "--产量撤销\n" +
  14476. " SELECT\n" +
  14477. " GDD.barcode,\n" +
  14478. " GDD.MATERIALCODE,\n" +
  14479. " GDD.MATERIALREMARK,\n" +
  14480. " GDD.GROUTINGLINECODE,\n" +
  14481. " GDD.goodscode,\n" +
  14482. " g.GOODSMODEL,\n" +
  14483. " HGDI.WORKSHOP,\n" +
  14484. " HGDI.DATACODE,\n" +
  14485. " L.LOGONAME,\n" +
  14486. " P.PROCEDURENAME,\n" +
  14487. " 2 AS ITEM,\n" +
  14488. " PD.BACKOUTTIME CREATETIME,\n" +
  14489. " GDD.TESTMOULDFLAG,\n" +
  14490. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14491. " FROM\n" +
  14492. " TP_PM_PRODUCTIONDATA PD\n" +
  14493. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID \n" +
  14494. " INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID \n" +
  14495. " INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID \n" +
  14496. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14497. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14498. " AND HGDI.ITEMTYPE = 1\n" +
  14499. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14500. " AND HGDI.ITEMID = PD.PROCEDUREID\n" +
  14501. " AND (HGDI.ITEMID <> 104 OR\n" +
  14502. " (PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))\n" +
  14503. " LEFT JOIN TP_MST_LOGO L ON L.LOGOID = GDD.LOGOID\n" +
  14504. " LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = HGDI.ITEMID\n" +
  14505. " WHERE\n" +
  14506. " PD.VALUEFLAG = 0\n" +
  14507. " AND PD.BACKOUTTIME >= :TIMESTART\n" +
  14508. " AND PD.BACKOUTTIME <= :TIMEEND\n" +
  14509. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14510. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14511. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14512. " ) \n" +
  14513. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14514. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14515. " )" +
  14516. " AND INSTR(GT.GOODSTYPECODE,'001001') = 1\n" +
  14517. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14518. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14519. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '2')\n" +
  14520. "-- 工序报损\n" +
  14521. "UNION ALL\n" +
  14522. " SELECT \n" +
  14523. " GDD.barcode,\n" +
  14524. " GDD.MATERIALCODE,\n" +
  14525. " GDD.MATERIALREMARK,\n" +
  14526. " GDD.GROUTINGLINECODE,\n" +
  14527. " GDD.goodscode,\n" +
  14528. " g.GOODSMODEL,\n" +
  14529. " HGDI.WORKSHOP,\n" +
  14530. " HGDI.DATACODE ,\n" +
  14531. " L.LOGONAME,\n" +
  14532. " P.PROCEDURENAME,\n" +
  14533. " 3 AS ITEM,\n" +
  14534. " SP.AUDITDATE CREATETIME,\n" +
  14535. " GDD.TESTMOULDFLAG,\n" +
  14536. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14537. " FROM TP_PM_SCRAPPRODUCT SP\n" +
  14538. " INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid\n" +
  14539. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID \n" +
  14540. " INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID \n" +
  14541. " INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID \n" +
  14542. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14543. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14544. " AND HGDI.ITEMTYPE = 2\n" +
  14545. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14546. " AND HGDI.ITEMID = PD.PROCEDUREID\n" +
  14547. " AND (HGDI.ITEMID <> 104 OR (PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))\n" +
  14548. " LEFT JOIN TP_MST_LOGO L ON L.LOGOID = GDD.LOGOID\n" +
  14549. " LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = HGDI.ITEMID\n" +
  14550. " WHERE\n" +
  14551. " SP.AUDITSTATUS = 1\n" +
  14552. " AND SP.AUDITDATE >= :TIMESTART\n" +
  14553. " AND SP.AUDITDATE <= :TIMEEND\n" +
  14554. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14555. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14556. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14557. " ) \n" +
  14558. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14559. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14560. " )" +
  14561. " AND INSTR(GT.GOODSTYPECODE,'001001') = 1\n" +
  14562. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14563. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14564. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '3')\n" +
  14565. " -- 工序报损撤销\n" +
  14566. "UNION ALL\n" +
  14567. " SELECT \n" +
  14568. " GDD.barcode,\n" +
  14569. " GDD.MATERIALCODE,\n" +
  14570. " GDD.MATERIALREMARK,\n" +
  14571. " GDD.GROUTINGLINECODE,\n" +
  14572. " GDD.goodscode,\n" +
  14573. " g.GOODSMODEL,\n" +
  14574. " HGDI.WORKSHOP,\n" +
  14575. " HGDI.DATACODE,\n" +
  14576. " L.LOGONAME,\n" +
  14577. " P.PROCEDURENAME,\n" +
  14578. " 4 AS ITEM,\n" +
  14579. " SP.BACKOUTTIME CREATETIME,\n" +
  14580. " GDD.TESTMOULDFLAG,\n" +
  14581. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14582. " FROM TP_PM_SCRAPPRODUCT SP\n" +
  14583. " INNER JOIN tp_pm_productiondata pd ON pd.productiondataid = sp.productiondataid\n" +
  14584. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = PD.GROUTINGDAILYDETAILID \n" +
  14585. " INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID \n" +
  14586. " INNER JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = G.GOODSTYPEID \n" +
  14587. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14588. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14589. " AND HGDI.ITEMTYPE = 2\n" +
  14590. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14591. " AND HGDI.ITEMID = PD.PROCEDUREID\n" +
  14592. " AND (HGDI.ITEMID <> 104 OR (PD.ISREFIRE = '0' AND PD.CHECKFLAG = '1'))\n" +
  14593. " LEFT JOIN TP_MST_LOGO L ON L.LOGOID = GDD.LOGOID\n" +
  14594. " LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = HGDI.ITEMID\n" +
  14595. " WHERE\n" +
  14596. " SP.AUDITSTATUS = 1\n" +
  14597. " AND SP.VALUEFLAG = '0'\n" +
  14598. " AND SP.BACKOUTTIME >= :TIMESTART\n" +
  14599. " AND SP.BACKOUTTIME <= :TIMEEND\n" +
  14600. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14601. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14602. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14603. " ) \n" +
  14604. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14605. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14606. " )" +
  14607. " AND INSTR(GT.GOODSTYPECODE,'001001') = 1\n" +
  14608. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14609. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14610. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '4')\n" +
  14611. " -- 盘点清除\n" +
  14612. " UNION ALL\n" +
  14613. " SELECT \n" +
  14614. " GDD.barcode,\n" +
  14615. " GDD.MATERIALCODE,\n" +
  14616. " GDD.MATERIALREMARK,\n" +
  14617. " GDD.GROUTINGLINECODE,\n" +
  14618. " GDD.GOODSCODE,\n" +
  14619. " g.GOODSMODEL,\n" +
  14620. " HGDI.WORKSHOP,\n" +
  14621. " HGDI.DATACODE,\n" +
  14622. " L.LOGONAME,\n" +
  14623. " P.PROCEDURENAME,\n" +
  14624. " 5 AS ITEM,\n" +
  14625. " GH.CREATETIME CREATETIME,\n" +
  14626. " GDD.TESTMOULDFLAG,\n" +
  14627. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14628. " FROM TP_PM_GOODSCHANGEHISTORY GH\n" +
  14629. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID\n" +
  14630. " INNER JOIN TP_MST_GOODS G ON GH.GOODSID = G.GOODSID \n" +
  14631. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14632. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14633. " AND HGDI.ITEMTYPE = 2\n" +
  14634. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14635. " AND HGDI.ITEMID = GH.OTHERID\n" +
  14636. " LEFT JOIN TP_MST_LOGO L ON L.LOGOID = GDD.LOGOID\n" +
  14637. " LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = HGDI.ITEMID\n" +
  14638. " WHERE GH.CREATETIME >= :TIMESTART\n" +
  14639. " AND GH.CREATETIME <= :TIMEEND\n" +
  14640. " AND GH.DATATYPE IN (11, 12)\n" +
  14641. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14642. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14643. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '5')\n" +
  14644. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14645. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14646. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14647. " ) \n" +
  14648. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14649. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14650. " )" +
  14651. "-- 干补\n" +
  14652. " UNION ALL\n" +
  14653. " SELECT \n" +
  14654. " GDD.barcode,\n" +
  14655. " GDD.MATERIALCODE,\n" +
  14656. " GDD.MATERIALREMARK,\n" +
  14657. " GDD.GROUTINGLINECODE,\n" +
  14658. " GDD.GOODSCODE,\n" +
  14659. " g.GOODSMODEL,\n" +
  14660. " HGDI.WORKSHOP,\n" +
  14661. " HGDI.DATACODE,\n" +
  14662. " L.LOGONAME,\n" +
  14663. " P.PROCEDURENAME,\n" +
  14664. " 6 AS ITEM,\n" +
  14665. " SP.SPECIALREPAIRTIME CREATETIME,\n" +
  14666. " GDD.TESTMOULDFLAG,\n" +
  14667. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14668. " FROM TP_PM_SCRAPPRODUCT SP\n" +
  14669. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID\n" +
  14670. " INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID \n" +
  14671. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14672. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14673. " AND HGDI.ITEMTYPE = 2\n" +
  14674. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14675. " AND HGDI.ITEMID = SP.PROCEDUREID\n" +
  14676. " LEFT JOIN TP_MST_LOGO L ON L.LOGOID = GDD.LOGOID\n" +
  14677. " LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = HGDI.ITEMID\n" +
  14678. " WHERE SP.AUDITSTATUS = 1\n" +
  14679. " AND SP.VALUEFLAG = '1'\n" +
  14680. " AND SP.GOODSLEVELTYPEID = 9\n" +
  14681. " AND SP.SPECIALREPAIRTIME >= :TIMESTART\n" +
  14682. " AND SP.SPECIALREPAIRTIME <= :TIMEEND\n" +
  14683. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14684. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14685. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '6')\n" +
  14686. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14687. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14688. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14689. " ) \n" +
  14690. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14691. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14692. " )" +
  14693. " -- 回收\n" +
  14694. " UNION ALL\n" +
  14695. " SELECT \n" +
  14696. " GDD.barcode,\n" +
  14697. " GDD.MATERIALCODE,\n" +
  14698. " GDD.MATERIALREMARK,\n" +
  14699. " GDD.GROUTINGLINECODE,\n" +
  14700. " GDD.GOODSCODE,\n" +
  14701. " g.GOODSMODEL,\n" +
  14702. " HGDI.WORKSHOP,\n" +
  14703. " HGDI.DATACODE,\n" +
  14704. " L.LOGONAME,\n" +
  14705. " P.PROCEDURENAME,\n" +
  14706. " 7 AS ITEM,\n" +
  14707. " SP.RECYCLINGTIME CREATETIME,\n" +
  14708. " GDD.TESTMOULDFLAG,\n" +
  14709. " G.GOODS_LINE_CODE AS ZSCS\n" +
  14710. " FROM TP_PM_SCRAPPRODUCT SP\n" +
  14711. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID\n" +
  14712. " INNER JOIN TP_MST_GOODS G ON SP.GOODSID = G.GOODSID \n" +
  14713. " INNER JOIN TSAP_HEGII_DATAITEM HGDI\n" +
  14714. " ON (:DATACODE = '' OR :DATACODE IS NULL OR :DATACODE = HGDI.DATACODE) \n" +
  14715. " AND HGDI.ITEMTYPE = 2\n" +
  14716. " AND (:WORKSHOP = '' OR :WORKSHOP IS NULL OR :WORKSHOP = HGDI.WORKSHOP) \n" +
  14717. " AND HGDI.ITEMID = SP.PROCEDUREID\n" +
  14718. " LEFT JOIN TP_MST_LOGO L ON L.LOGOID = GDD.LOGOID\n" +
  14719. " LEFT JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = HGDI.ITEMID\n" +
  14720. " WHERE SP.AUDITSTATUS = 1\n" +
  14721. " AND SP.VALUEFLAG = '1'\n" +
  14722. " AND SP.RECYCLINGFLAG = '1'\n" +
  14723. " AND SP.RECYCLINGTIME >= :TIMESTART\n" +
  14724. " AND SP.RECYCLINGTIME <= :TIMEEND\n" +
  14725. " AND (:TESTMOULDFLAG = '' OR :TESTMOULDFLAG IS NULL OR :TESTMOULDFLAG = GDD.TESTMOULDFLAG) \n" +
  14726. " AND (:GOODSCODE = '' OR :GOODSCODE IS NULL OR INSTR(G.GOODSCODE,:GOODSCODE) > 0)\n" +
  14727. " AND (:ITEM = '' OR :ITEM IS NULL OR :ITEM = '7')\n" +
  14728. " AND (((:WORKSHOP = '' OR :WORKSHOP IS NULL) AND \n" +
  14729. " ((HGDI.WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1) \n" +
  14730. " OR (HGDI.WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1) ))\n" +
  14731. " ) \n" +
  14732. " OR (:WORKSHOP = 2 AND INSTR( GDD.GROUTINGLINECODE, 'C') = 1)\n" +
  14733. " OR (:WORKSHOP = 3 AND (INSTR( GDD.GROUTINGLINECODE, 'B') = 1 OR INSTR( GDD.GROUTINGLINECODE, 'D' ) = 1))\n" +
  14734. " )" +
  14735. ") \n" +
  14736. "order by DATACODE,ITEM,WORKSHOP ";
  14737. DataTable data = conn.GetSqlResultToDt(sqlString, oracleParameter);
  14738. ServiceResultEntity sre = new ServiceResultEntity();
  14739. if (data == null || data.Rows.Count == 0)
  14740. {
  14741. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14742. return sre;
  14743. }
  14744. sre.Data = new DataSet();
  14745. sre.Data.Tables.Add(data);
  14746. return sre;
  14747. }
  14748. catch (Exception ex)
  14749. {
  14750. throw ex;
  14751. }
  14752. finally
  14753. {
  14754. if (conn != null &&
  14755. conn.ConnState == ConnectionState.Open)
  14756. {
  14757. conn.Close();
  14758. }
  14759. }
  14760. }
  14761. /// <summary>
  14762. /// 取得F_RPT_030112画面(产成品交接汇总表)的明细信息查询数据
  14763. /// </summary>
  14764. /// <param name="user">登录用户信息</param>
  14765. /// <param name="se">查询条件</param>
  14766. /// <returns>查询结果</returns>
  14767. public static ServiceResultEntity GetRPT0030112DetailSData(SUserInfo user, SearchFinishedProductEntity se)
  14768. {
  14769. IDBConnection conn = null;
  14770. try
  14771. {
  14772. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14773. List<OracleParameter> parameters = new List<OracleParameter>();
  14774. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT0030112DetailSData(user, se, ref parameters));
  14775. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  14776. ServiceResultEntity sre = new ServiceResultEntity();
  14777. if (data == null || data.Rows.Count == 0)
  14778. {
  14779. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14780. return sre;
  14781. }
  14782. sre.Data = new DataSet();
  14783. sre.Data.Tables.Add(data);
  14784. return sre;
  14785. }
  14786. catch (Exception ex)
  14787. {
  14788. throw ex;
  14789. }
  14790. finally
  14791. {
  14792. if (conn != null &&
  14793. conn.ConnState == ConnectionState.Open)
  14794. {
  14795. conn.Close();
  14796. }
  14797. }
  14798. }
  14799. private static string GetRPT0030112DetailSData(SUserInfo user, SearchFinishedProductEntity se, ref List<OracleParameter> parameters)
  14800. {
  14801. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  14802. string sqlString = "SELECT O.ORDERNO,\n" +
  14803. " F.FHTIME,\n" +
  14804. " F.FHUSERCODE,\n" +
  14805. " F.BARCODE,\n" +
  14806. " F.GOODSCODE,\n" +
  14807. " L.LOGONAME,\n" +
  14808. " F.GROUTINGUSERCODE,\n" +
  14809. " F.GROUTINGLINECODE,\n" +
  14810. " F.GROUTINGMOULDCODE,\n" +
  14811. " F.GROUTINGDATE,\n" +
  14812. " G.DELIVERTIME,\n" +
  14813. " GOODS.goodsmodel,\n" +
  14814. //" (GOODS.MATERIALCODE || L.TAGCODE || G.ONLYCODE) AS FINISHEDBARCODE,\n" +
  14815. //" nvl(g.outlabelcode, GOODS.MATERIALCODE || (select a.workcode from tp_mst_account a where a.accountid = g.accountid) || L.TAGCODE || G.ONLYCODE) AS FINISHEDBARCODE,\n" +
  14816. " G.outlabelcode AS FINISHEDBARCODE,\n" +
  14817. " G.MATERIALCODE AS mcode,\n" +
  14818. " G.materialremark AS mremark,\n" +
  14819. " F.CREATETIME AS PRODUCTFINISHEDTIME,\n" +
  14820. " G.SecurityCode,\n" +
  14821. " G.TestMouldFlag\n" +
  14822. " FROM TP_PM_FINISHEDPRODUCT F\n" +
  14823. " LEFT JOIN TP_PM_ORDER O\n" +
  14824. " ON F.FHORDERID = O.ORDERID\n" +
  14825. " LEFT JOIN TP_MST_LOGO L\n" +
  14826. " ON F.LOGOID = L.LOGOID\n" +
  14827. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL G\n" +
  14828. " ON F.GROUTINGDAILYDETAILID = G.GROUTINGDAILYDETAILID\n" +
  14829. " LEFT JOIN TP_MST_GOODS GOODS\n" +
  14830. " ON F.GOODSID = GOODS.GOODSID\n" +
  14831. " LEFT JOIN TP_MST_GOODSTYPE GOODSTYPE\n" +
  14832. " ON GOODS.GOODSTYPEID = GOODSTYPE.GOODSTYPEID\n" +
  14833. " WHERE F.ACCOUNTID = :ACCOUNTID\n" +
  14834. " AND F.FHTIME IS NOT NULL";
  14835. // 交接时间起始
  14836. if (se.FHTimeStart.HasValue)
  14837. {
  14838. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart ";
  14839. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, se.FHTimeStart.Value, ParameterDirection.Input));
  14840. }
  14841. // 交接时间结束
  14842. if (se.FHTimeEnd.HasValue)
  14843. {
  14844. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd ";
  14845. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, se.FHTimeEnd.Value, ParameterDirection.Input));
  14846. }
  14847. // 订单号
  14848. if (!string.IsNullOrEmpty(se.OrderNo))
  14849. {
  14850. //sqlString = sqlString + " AND O.OrderNo=:OrderNo";
  14851. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0";
  14852. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, se.OrderNo, ParameterDirection.Input));
  14853. }
  14854. // 产品类别编码
  14855. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  14856. {
  14857. sqlString = sqlString + " AND instr(GoodsType.GoodsTypeCode,:GoodsTypeCode)=1";
  14858. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  14859. }
  14860. // 产品编码
  14861. if (!string.IsNullOrEmpty(se.GoodsCode))
  14862. {
  14863. sqlString = sqlString + " AND instr(Goods.GoodsCode,:GoodsCode)>0";
  14864. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  14865. }
  14866. // 产品型号
  14867. if (!string.IsNullOrEmpty(se.GoodsModel))
  14868. {
  14869. sqlString = sqlString + " AND instr(Goods.GoodsModel,:GoodsModel)>0";
  14870. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, se.GoodsModel, ParameterDirection.Input));
  14871. }
  14872. // 产品商标ID集
  14873. if (!string.IsNullOrEmpty(se.LogoIDS))
  14874. {
  14875. sqlString += " AND instr(','||:LogoIDS||',', ',' || L.logoid || ',') > 0";
  14876. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, se.LogoIDS, ParameterDirection.Input));
  14877. }
  14878. // 交接工号
  14879. if (!string.IsNullOrEmpty(se.FHUserCode))
  14880. {
  14881. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0";
  14882. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, se.FHUserCode, ParameterDirection.Input));
  14883. }
  14884. if (se.OrderID != null)
  14885. {
  14886. sqlString = sqlString + " AND F.fhorderid = :fhorderid";
  14887. parameters.Add(new OracleParameter(":fhorderid", OracleDbType.Int32, se.OrderID, ParameterDirection.Input));
  14888. }
  14889. if (se.GoodsID != null)
  14890. {
  14891. sqlString = sqlString + " AND F.GoodsID = :GoodsID";
  14892. parameters.Add(new OracleParameter(":GoodsID", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  14893. }
  14894. if (se.LogoID != null)
  14895. {
  14896. sqlString = sqlString + " AND F.LogoID = :LogoID";
  14897. parameters.Add(new OracleParameter(":LogoID", OracleDbType.Int32, se.LogoID, ParameterDirection.Input));
  14898. }
  14899. // 试验标识
  14900. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  14901. {
  14902. sqlString += " AND g.TestMouldFlag = :TestMouldFlag ";
  14903. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  14904. }
  14905. // 产品条码
  14906. if (!string.IsNullOrEmpty(se.BarCode))
  14907. {
  14908. sqlString = sqlString + " AND F.BarCode = :BarCode ";
  14909. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  14910. }
  14911. return sqlString;
  14912. }
  14913. /// <summary>
  14914. /// 取得F_RPT_030112画面(产成品交接汇总表)的交接数量
  14915. /// </summary>
  14916. /// <param name="user">登录用户信息</param>
  14917. /// <param name="se">查询条件</param>
  14918. /// <returns>查询结果</returns>
  14919. public static ServiceResultEntity GetRPT0030112NData(ClientRequestEntity cre, SUserInfo user)
  14920. {
  14921. IDBConnection conn = null;
  14922. try
  14923. {
  14924. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14925. List<OracleParameter> parameters = new List<OracleParameter>();
  14926. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  14927. //string sqlString = "SELECT trunc(f.fhtime) fhtime, g.goodscode, COUNT(*) goodscount\n" +
  14928. string sqlString = "SELECT nvl2(trunc(f.fhtime),\n" +
  14929. " nvl2(l.logoname,\n" +
  14930. " to_char(trunc(f.fhtime), 'yyyy-mm-dd'),\n" +
  14931. " to_char('合计[') || to_char(trunc(f.fhtime), 'yyyy-mm-dd') ||\n" +
  14932. " to_char(']')),\n" +
  14933. " '总计') fhtime\n" +
  14934. " ,nvl2(l.logoname,\n" +
  14935. " nvl2(g.goodscode,\n" +
  14936. " l.logoname,\n" +
  14937. " to_char('小计[' || l.logoname || ']')),\n" +
  14938. " '--') logoname\n" +
  14939. " ,nvl(g.goodscode, '--') goodscode" +
  14940. " ,nvl(g.goodsmodel, '--') goodsmodel" +
  14941. " ,nvl(gdd.materialcode, '--') mcode" +
  14942. " ,nvl(gdd.materialremark, '--') mremark" +
  14943. " ,COUNT(*) goodscount" +
  14944. " ,nvl(f.fhusercode, '--') fhusercode_number" +
  14945. " FROM tp_pm_finishedproduct f\n" +
  14946. " inner JOIN tp_pm_groutingdailydetail gdd\n" +
  14947. " ON gdd.barcode = f.barcode\n" +
  14948. " LEFT JOIN tp_mst_logo l\n" +
  14949. " ON f.logoid = l.logoid\n" +
  14950. " LEFT JOIN TP_PM_Order O\n" +
  14951. " ON f.Fhorderid = O.Orderid\n" +
  14952. " LEFT JOIN tp_mst_goods G\n" +
  14953. " ON g.goodsid = f.goodsid\n" +
  14954. " LEFT JOIN TP_MST_GoodsType gt\n" +
  14955. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  14956. " WHERE f.fhtime IS NOT NULL\n" +
  14957. " AND f.AccountID = :AccountID\n";
  14958. // 交接时间起始
  14959. if (cre.Properties["FHTimeStart"] != null)
  14960. {
  14961. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart \n";
  14962. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, cre.Properties["FHTimeStart"], ParameterDirection.Input));
  14963. }
  14964. // 交接时间结束
  14965. if (cre.Properties["FHTimeEnd"] != null)
  14966. {
  14967. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd \n";
  14968. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, cre.Properties["FHTimeEnd"], ParameterDirection.Input));
  14969. }
  14970. // 订单号
  14971. if (!string.IsNullOrEmpty(cre.Properties["OrderNo"] as string))
  14972. {
  14973. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0 \n";
  14974. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, cre.Properties["OrderNo"], ParameterDirection.Input));
  14975. }
  14976. // 产品类别编码
  14977. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"] as string))
  14978. {
  14979. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 \n";
  14980. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  14981. }
  14982. // 产品编码
  14983. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"] as string))
  14984. {
  14985. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  14986. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input));
  14987. }
  14988. // 产品型号
  14989. if (!string.IsNullOrEmpty(cre.Properties["GoodsModel"] as string))
  14990. {
  14991. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0 \n";
  14992. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, cre.Properties["GoodsModel"], ParameterDirection.Input));
  14993. }
  14994. // 产品商标ID集
  14995. if (!string.IsNullOrEmpty(cre.Properties["LogoIDS"] as string))
  14996. {
  14997. sqlString += " AND instr(','||:LogoIDS||',', ',' || f.logoid || ',') > 0 \n";
  14998. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, cre.Properties["LogoIDS"], ParameterDirection.Input));
  14999. }
  15000. // 交接工号
  15001. if (!string.IsNullOrEmpty(cre.Properties["FHUserCode"] as string))
  15002. {
  15003. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0 \n";
  15004. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, cre.Properties["FHUserCode"], ParameterDirection.Input));
  15005. }
  15006. // 试验标识
  15007. if (!string.IsNullOrEmpty(cre.Properties["TestMouldFlag"] as string))
  15008. {
  15009. sqlString = sqlString + " AND gdd.TestMouldFlag = :TestMouldFlag ";
  15010. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, cre.Properties["TestMouldFlag"], ParameterDirection.Input));
  15011. }
  15012. //sqlString += " group by trunc(f.fhtime), g.goodscode order by trunc(f.fhtime), g.goodscode";
  15013. sqlString += " GROUP BY GROUPING SETS((trunc(f.fhtime), l.logoname, g.goodscode,g.goodsmodel,gdd.materialcode,gdd.materialremark,f.fhusercode),(trunc(f.fhtime), l.logoname,f.fhusercode),(trunc(f.fhtime),f.fhusercode),())";
  15014. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  15015. ServiceResultEntity sre = new ServiceResultEntity();
  15016. if (data == null || data.Rows.Count == 0)
  15017. {
  15018. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15019. return sre;
  15020. }
  15021. sre.Data = new DataSet();
  15022. sre.Data.Tables.Add(data);
  15023. return sre;
  15024. }
  15025. catch (Exception ex)
  15026. {
  15027. throw ex;
  15028. }
  15029. finally
  15030. {
  15031. if (conn != null &&
  15032. conn.ConnState == ConnectionState.Open)
  15033. {
  15034. conn.Close();
  15035. }
  15036. }
  15037. }
  15038. /// <summary>
  15039. /// 取得F_RPT_030112画面(产成品交接汇总表)的型号数量
  15040. /// </summary>
  15041. /// <param name="user">登录用户信息</param>
  15042. /// <param name="se">查询条件</param>
  15043. /// <returns>查询结果</returns>
  15044. public static ServiceResultEntity GetRPT0030112GNData(ClientRequestEntity cre, SUserInfo user)
  15045. {
  15046. IDBConnection conn = null;
  15047. try
  15048. {
  15049. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15050. List<OracleParameter> parameters = new List<OracleParameter>();
  15051. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  15052. //string sqlString = "SELECT trunc(f.fhtime) fhtime, g.goodscode, COUNT(*) goodscount\n" +
  15053. string sqlString = "SELECT --nvl2(trunc(f.fhtime),\n" +
  15054. //" nvl2(l.logoname,\n" +
  15055. //" to_char(trunc(f.fhtime), 'yyyy-mm-dd'),\n" +
  15056. //" to_char('合计[') || to_char(trunc(f.fhtime), 'yyyy-mm-dd') ||\n" +
  15057. //" to_char(']')),\n" +
  15058. //" '总计') fhtime\n" +
  15059. //" ,nvl2(l.logoname,\n" +
  15060. //" nvl2(g.goodscode,\n" +
  15061. //" l.logoname,\n" +
  15062. //" to_char('小计[' || l.logoname || ']')),\n" +
  15063. //" '--') logoname\n" +
  15064. " nvl(g.goodscode, '合计') goodscode" +
  15065. " ,nvl(g.goodsmodel, '--') goodsmodel" +
  15066. " ,nvl(gdd.materialcode, '--') mcode" +
  15067. " ,nvl(gdd.materialremark, '--') mremark" +
  15068. " ,COUNT(*) goodscount" +
  15069. " FROM tp_pm_finishedproduct f\n" +
  15070. " inner JOIN tp_pm_groutingdailydetail gdd\n" +
  15071. " ON gdd.barcode = f.barcode\n" +
  15072. " LEFT JOIN tp_mst_logo l\n" +
  15073. " ON f.logoid = l.logoid\n" +
  15074. " LEFT JOIN TP_PM_Order O\n" +
  15075. " ON f.Fhorderid = O.Orderid\n" +
  15076. " LEFT JOIN tp_mst_goods G\n" +
  15077. " ON g.goodsid = f.goodsid\n" +
  15078. " LEFT JOIN TP_MST_GoodsType gt\n" +
  15079. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  15080. " WHERE f.fhtime IS NOT NULL\n" +
  15081. " AND f.AccountID = :AccountID\n";
  15082. // 交接时间起始
  15083. if (cre.Properties["FHTimeStart"] != null)
  15084. {
  15085. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart \n";
  15086. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, cre.Properties["FHTimeStart"], ParameterDirection.Input));
  15087. }
  15088. // 交接时间结束
  15089. if (cre.Properties["FHTimeEnd"] != null)
  15090. {
  15091. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd \n";
  15092. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, cre.Properties["FHTimeEnd"], ParameterDirection.Input));
  15093. }
  15094. // 订单号
  15095. if (!string.IsNullOrEmpty(cre.Properties["OrderNo"] as string))
  15096. {
  15097. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0 \n";
  15098. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, cre.Properties["OrderNo"], ParameterDirection.Input));
  15099. }
  15100. // 产品类别编码
  15101. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"] as string))
  15102. {
  15103. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 \n";
  15104. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  15105. }
  15106. // 产品编码
  15107. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"] as string))
  15108. {
  15109. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  15110. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input));
  15111. }
  15112. // 产品型号
  15113. if (!string.IsNullOrEmpty(cre.Properties["GoodsModel"] as string))
  15114. {
  15115. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0 \n";
  15116. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, cre.Properties["GoodsModel"], ParameterDirection.Input));
  15117. }
  15118. // 产品商标ID集
  15119. if (!string.IsNullOrEmpty(cre.Properties["LogoIDS"] as string))
  15120. {
  15121. sqlString += " AND instr(','||:LogoIDS||',', ',' || f.logoid || ',') > 0 \n";
  15122. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, cre.Properties["LogoIDS"], ParameterDirection.Input));
  15123. }
  15124. // 交接工号
  15125. if (!string.IsNullOrEmpty(cre.Properties["FHUserCode"] as string))
  15126. {
  15127. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0 \n";
  15128. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, cre.Properties["FHUserCode"], ParameterDirection.Input));
  15129. }
  15130. // 试验标识
  15131. if (!string.IsNullOrEmpty(cre.Properties["TestMouldFlag"] as string))
  15132. {
  15133. sqlString = sqlString + " AND gdd.TestMouldFlag = :TestMouldFlag ";
  15134. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, cre.Properties["TestMouldFlag"], ParameterDirection.Input));
  15135. }
  15136. //sqlString += " group by trunc(f.fhtime), g.goodscode order by trunc(f.fhtime), g.goodscode";
  15137. sqlString += " GROUP BY GROUPING SETS((g.goodscode,g.goodsmodel,gdd.materialcode,gdd.materialremark),())";
  15138. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  15139. ServiceResultEntity sre = new ServiceResultEntity();
  15140. if (data == null || data.Rows.Count == 0)
  15141. {
  15142. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15143. return sre;
  15144. }
  15145. sre.Data = new DataSet();
  15146. sre.Data.Tables.Add(data);
  15147. return sre;
  15148. }
  15149. catch (Exception ex)
  15150. {
  15151. throw ex;
  15152. }
  15153. finally
  15154. {
  15155. if (conn != null &&
  15156. conn.ConnState == ConnectionState.Open)
  15157. {
  15158. conn.Close();
  15159. }
  15160. }
  15161. }
  15162. /// <summary>
  15163. /// 取得PDA(产成品交接汇总表)的交接数量
  15164. /// </summary>
  15165. /// <param name="user">登录用户信息</param>
  15166. /// <param name="se">查询条件</param>
  15167. /// <returns>查询结果</returns>
  15168. public static ServiceResultEntity GetRPT0030112NPDAData(DateTime date, string goodscode, SUserInfo user)
  15169. {
  15170. IDBConnection conn = null;
  15171. try
  15172. {
  15173. DateTime dateStart = date;
  15174. DateTime dateEnd = dateStart.AddDays(1);
  15175. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15176. List<OracleParameter> parameters = new List<OracleParameter>();
  15177. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  15178. string sqlString = "SELECT o.orderno, g.goodscode, COUNT(*) goodscount\n" +
  15179. " FROM tp_pm_finishedproduct f\n" +
  15180. " LEFT JOIN TP_PM_Order O\n" +
  15181. " ON f.Fhorderid = O.Orderid\n" +
  15182. " LEFT JOIN tp_mst_goods G\n" +
  15183. " ON g.goodsid = f.goodsid\n" +
  15184. " LEFT JOIN TP_MST_GoodsType gt\n" +
  15185. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  15186. " WHERE f.fhtime IS NOT NULL\n" +
  15187. " AND f.AccountID = :AccountID\n";
  15188. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart \n";
  15189. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, dateStart, ParameterDirection.Input));
  15190. sqlString = sqlString + " AND F.FHTime < :FHTimeEnd \n";
  15191. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, dateEnd, ParameterDirection.Input));
  15192. // 产品型号
  15193. if (!string.IsNullOrEmpty(goodscode))
  15194. {
  15195. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  15196. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, goodscode, ParameterDirection.Input));
  15197. }
  15198. sqlString += " group by orderno, g.goodscode order by orderno, g.goodscode";
  15199. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  15200. ServiceResultEntity sre = new ServiceResultEntity();
  15201. if (data == null || data.Rows.Count == 0)
  15202. {
  15203. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15204. return sre;
  15205. }
  15206. sre.Data = new DataSet();
  15207. sre.Data.Tables.Add(data);
  15208. return sre;
  15209. }
  15210. catch (Exception ex)
  15211. {
  15212. throw ex;
  15213. }
  15214. finally
  15215. {
  15216. if (conn != null &&
  15217. conn.ConnState == ConnectionState.Open)
  15218. {
  15219. conn.Close();
  15220. }
  15221. }
  15222. }
  15223. /// <summary>
  15224. /// 获取在产品备份表
  15225. /// </summary>
  15226. /// <param name="cre"></param>
  15227. /// <param name="sUserInfo"></param>
  15228. /// <returns></returns>
  15229. public static ServiceResultEntity GetRPT010404Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15230. {
  15231. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15232. try
  15233. {
  15234. ServiceResultEntity sre = new ServiceResultEntity();
  15235. string sqlString = "SELECT inpb.BackupMonth\n" +
  15236. " ,gdd.BarCode\n" +
  15237. //" ,inpb.GoodsID\n" +
  15238. " ,inpb.GoodsCode\n" +
  15239. " ,inpb.GoodsName\n" +
  15240. //" ,inpb.Userid\n" +
  15241. " ,worker.USERNAME AS UserName\n" +
  15242. " ,worker.USERCode AS UserCode\n" +
  15243. //" ,inpb.ProductionLineID\n" +
  15244. " ,inpb.ProductionLineCode\n" +
  15245. " ,inpb.ProductionLineName\n" +
  15246. //" ,inpb.ModelType\n" +
  15247. " ,decode(inpb.inscrapflag, '1', '待审核的报废品', '正常') AS inscrapflag\n" +
  15248. " ,inpb.IsPublicBody\n" +
  15249. " ,decode(inpb.IsReFire,'6','1','0') IsReFire\n" +
  15250. " ,inpb.IsReworkFlag\n" +
  15251. " ,decode(inpb.CanManyTimes, '1', '能', '不能') AS CanManyTimes\n" +
  15252. " ,decode(inpb.ProcedureModel, '1', '计件模型', '检验模型') AS ProcedureModel\n" +
  15253. //" ,inpb.GroutingDailyID\n" +
  15254. //" ,inpb.GroutingDailyDetailID\n" +
  15255. " ,inpb.GroutingDate\n" +
  15256. //" ,inpb.GroutingLineID\n" +
  15257. " ,inpb.GroutingLineCode\n" +
  15258. " ,inpb.GroutingLineName\n" +
  15259. //" ,inpb.ProcedureID CompleteProcedureID\n" +
  15260. " ,pro.ProcedureName AS CompleteProcedureName\n" +
  15261. //" ,inpb.GMouldTypeID\n" +
  15262. " ,gmt.GMOULDTYPENAME AS GMouldTypeName\n" +
  15263. //" ,inpb.GroutingLineDetailID\n" +
  15264. " ,inpb.GroutingMouldCode\n" +
  15265. " ,inpb.SPECIALREPAIRFLAG\n" +
  15266. " ,inpb.GROUTINGUSERCODE\n" +
  15267. " ,gdd.GROUTINGCOUNT\n" +
  15268. " ,gdd.delivertime\n" +
  15269. " ,inpb.proceduretime\n" +
  15270. " ,inpb.Remarks\n" +
  15271. //" ,inpb.GoodsLevelID\n" +
  15272. " ,mgl.GOODSLEVELNAME\n" +
  15273. //" ,inpb.GoodsLevelTypeID\n" +
  15274. " ,mglt.GOODSLEVELTYPENAME\n" +
  15275. " ,inpb.BackupTime\n" +
  15276. " ,REPLACE((logo.Logoname || '[' || logo.Logocode || ']'), '[]', '') AS LogoCodeName\n" +
  15277. //" ,(Goods.MaterialCode || logo.tagcode || gdd.onlycode) AS FinishedBarCode\n" +
  15278. " ,nvl(gdd.outlabelcode, Goods.MaterialCode || (select a.workcode from tp_mst_account a where a.accountid = gdd.accountid) || logo.tagcode || gdd.onlycode) AS FinishedBarCode\n" +
  15279. " FROM TP_PM_InProduction_BakByMonth inpb\n" +
  15280. " INNER JOIN TP_MST_User worker\n" +
  15281. " ON worker.UserID = inpb.Userid\n" +
  15282. " INNER JOIN TP_PC_Procedure pro\n" +
  15283. " ON pro.PROCEDUREID = inpb.ProcedureID\n" +
  15284. " INNER JOIN TP_MST_GMouldType gmt\n" +
  15285. " ON gmt.GMouldTypeID = inpb.GMouldTypeID\n" +
  15286. " INNER JOIN TP_SYS_ProcedureModelType pmt\n" +
  15287. " ON pmt.ProcedureModelTypeID = inpb.ModelType\n" +
  15288. //" INNER JOIN TP_PM_GroutingDaily gd\n" +
  15289. //" ON gd.GroutingDailyID = inpb.GroutingDailyID\n" +
  15290. " INNER JOIN TP_PM_GroutingDailyDetail gdd\n" +
  15291. " ON gdd.Groutingdailydetailid = inpb.GroutingDailyDetailID\n" +
  15292. //" INNER JOIN TP_PC_GroutingLineDetail gld\n" +
  15293. //" ON gld.Groutinglinedetailid = inpb.GroutingLineDetailID\n" +
  15294. " LEFT JOIN TP_MST_GoodsLevel mgl\n" +
  15295. " ON mgl.GoodsLevelID = inpb.GoodsLevelID\n" +
  15296. " LEFT JOIN TP_SYS_GoodsLevelType mglt\n" +
  15297. " ON mglt.GoodsLevelTypeID = inpb.GoodsLevelTypeID\n" +
  15298. " LEFT JOIN TP_MST_Logo logo\n" +
  15299. " ON inpb.logoid = logo.logoid\n" +
  15300. " LEFT JOIN TP_MST_Goods Goods\n" +
  15301. " ON inpb.GoodsID = Goods.GoodsID\n" +
  15302. " WHERE inpb.AccountID = :AccountID" +
  15303. " AND inpb.BackupMonth = :BackupMonth" +
  15304. " ORDER BY pro.displayno,inpb.proceduretime";
  15305. OracleParameter[] oracleParameter = new OracleParameter[]
  15306. {
  15307. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID",sUserInfo.AccountID),
  15308. new Oracle.ManagedDataAccess.Client.OracleParameter(":BackupMonth",cre.Properties["BackupMonth"]),
  15309. };
  15310. oracleConn.Open();
  15311. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15312. oracleConn.Close();
  15313. sre.Data = result;
  15314. return sre;
  15315. }
  15316. catch (Exception ex)
  15317. {
  15318. if (oracleConn.ConnState == ConnectionState.Open)
  15319. {
  15320. oracleConn.Close();
  15321. }
  15322. throw ex;
  15323. }
  15324. }
  15325. /// <summary>
  15326. /// 产成品单值明细表
  15327. /// </summary>
  15328. /// <param name="cre"></param>
  15329. /// <param name="sUserInfo"></param>
  15330. /// <returns></returns>
  15331. public static ServiceResultEntity GetRPT010405Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15332. {
  15333. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15334. try
  15335. {
  15336. string sql =
  15337. "SELECT up.id, up.NAME\n" +
  15338. " FROM tp_mst_unitprice up\n" +
  15339. " WHERE up.accountid = :AccountID\n" +
  15340. " AND up.valueflag = '1'\n" +
  15341. " AND (:upname IS NULL OR instr(up.name, :upname) > 0)\n" +
  15342. " ORDER BY up.displayno";
  15343. OracleParameter[] opara = new OracleParameter[]
  15344. {
  15345. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15346. new Oracle.ManagedDataAccess.Client.OracleParameter(":upname", OracleDbType.NVarchar2,cre.Properties["UPName"], ParameterDirection.Input),
  15347. };
  15348. DataTable upTable = oracleConn.GetSqlResultToDt(sql, opara);
  15349. StringBuilder upNames = new StringBuilder();
  15350. StringBuilder upTotals = new StringBuilder();
  15351. StringBuilder upSUMs = new StringBuilder();
  15352. foreach (DataRow item in upTable.Rows)
  15353. {
  15354. upNames.AppendFormat(", u{0} AS \"{1}\"\n", item["ID"], item["Name"]);
  15355. upTotals.AppendFormat(",(u{0} * nvl(fpcount, 0)) AS \"总【{1}】\"\n", item["ID"], item["Name"]);
  15356. upSUMs.AppendFormat(",SUM(decode(up.upid, {0}, up.unitprice, 0)) u{0}\n", item["ID"]);
  15357. }
  15358. ServiceResultEntity sre = new ServiceResultEntity();
  15359. string sqlString = "SELECT gt2.goodstypename GoodsTypeName2\n" +
  15360. " ,g.goodscode\n" +
  15361. " ,g.materialcode\n" +
  15362. " ,lg.logoname\n" +
  15363. " ,nvl(fpcount, 0) fpcount\n" +
  15364. // " ,u1 AS \"单值1\"\n" +
  15365. //" ,u2 AS \"单值2\"\n" +
  15366. upNames +
  15367. //" ,(u1 * nvl(fpcount, 0)) AS \"总【1】\"\n" +
  15368. //" ,(u2 * nvl(fpcount, 0)) AS \"总【2】\"\n" +
  15369. upTotals +
  15370. " FROM (SELECT up.goodsid\n" +
  15371. " ,up.logoid\n" +
  15372. //" ,SUM(decode(up.upid, 1, up.unitprice, 0)) u1\n" +
  15373. //" ,SUM(decode(up.upid, 2, up.unitprice, 0)) u2\n" +
  15374. upSUMs +
  15375. " FROM TP_MST_UnitPriceGoods up\n" +
  15376. " WHERE up.accountid = :AccountID\n" +
  15377. " GROUP BY up.goodsid, up.logoid) upg\n" +
  15378. " LEFT JOIN (SELECT fp.goodsid, fp.logoid, COUNT(*) fpcount\n" +
  15379. " FROM tp_pm_finishedproduct fp\n" +
  15380. " WHERE fp.accountid = :AccountID\n" +
  15381. " AND fp.fhtime BETWEEN :DateBegin AND :DateEnd\n" +
  15382. " AND (:GoodsCode IS NULL OR\n" +
  15383. " instr(fp.goodscode, :GoodsCode) > 0)\n" +
  15384. " GROUP BY fp.goodsid, fp.logoid) fpp\n" +
  15385. " ON fpp.goodsid = upg.goodsid\n" +
  15386. " AND fpp.logoid = upg.logoid\n" +
  15387. " INNER JOIN tp_mst_logo lg\n" +
  15388. " ON lg.logoid = upg.logoid\n" +
  15389. " INNER JOIN tp_mst_goods g\n" +
  15390. " ON g.goodsid = upg.goodsid\n" +
  15391. " INNER JOIN tp_mst_goodstype gt\n" +
  15392. " ON gt.goodstypeid = g.goodstypeid\n" +
  15393. " INNER JOIN tp_mst_goodstype gt2\n" +
  15394. " ON gt2.accountid = :AccountID\n" +
  15395. " AND length(gt2.goodstypecode) = 6\n" +
  15396. " AND instr(gt.goodstypecode, gt2.goodstypecode) = 1\n" +
  15397. " WHERE (:GoodsTypeCode IS NULL OR\n" +
  15398. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)\n" +
  15399. " AND (:GoodsCode IS NULL OR instr(g.goodscode, :GoodsCode) > 0)\n" +
  15400. " AND (:logoname IS NULL OR instr(lg.logoname, :logoname) > 0)\n" +
  15401. " ORDER BY g.goodscode, lg.displayno";
  15402. OracleParameter[] oracleParameter = new OracleParameter[]
  15403. {
  15404. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15405. new Oracle.ManagedDataAccess.Client.OracleParameter(":DateBegin", OracleDbType.Date,cre.Properties["DateBegin"], ParameterDirection.Input),
  15406. new Oracle.ManagedDataAccess.Client.OracleParameter(":DateEnd", OracleDbType.Date,cre.Properties["DateEnd"], ParameterDirection.Input),
  15407. new Oracle.ManagedDataAccess.Client.OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2,cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15408. new Oracle.ManagedDataAccess.Client.OracleParameter(":GoodsCode", OracleDbType.NVarchar2,cre.Properties["GoodsCode"], ParameterDirection.Input),
  15409. new Oracle.ManagedDataAccess.Client.OracleParameter(":logoname", OracleDbType.NVarchar2,cre.Properties["LogoName"], ParameterDirection.Input),
  15410. };
  15411. oracleConn.Open();
  15412. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15413. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15414. {
  15415. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15416. }
  15417. sre.Data = result;
  15418. oracleConn.Close();
  15419. return sre;
  15420. }
  15421. catch (Exception ex)
  15422. {
  15423. if (oracleConn.ConnState == ConnectionState.Open)
  15424. {
  15425. oracleConn.Close();
  15426. }
  15427. throw ex;
  15428. }
  15429. }
  15430. /// <summary>
  15431. /// 产成品单值明细表-单值名管理
  15432. /// </summary>
  15433. /// <param name="cre"></param>
  15434. /// <param name="sUserInfo"></param>
  15435. /// <returns></returns>
  15436. public static ServiceResultEntity GetRPT01040501Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15437. {
  15438. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15439. try
  15440. {
  15441. ServiceResultEntity sre = new ServiceResultEntity();
  15442. string sqlString = "SELECT t.id, t.name, t.displayno, t.valueflag\n" +
  15443. " FROM TP_MST_UnitPrice t\n" +
  15444. " WHERE t.accountid = :accountid\n" +
  15445. " ORDER BY t.id";
  15446. OracleParameter[] oracleParameter = new OracleParameter[]
  15447. {
  15448. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15449. };
  15450. oracleConn.Open();
  15451. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15452. oracleConn.Close();
  15453. return sre;
  15454. }
  15455. catch (Exception ex)
  15456. {
  15457. if (oracleConn.ConnState == ConnectionState.Open)
  15458. {
  15459. oracleConn.Close();
  15460. }
  15461. throw ex;
  15462. }
  15463. }
  15464. /// <summary>
  15465. /// 产成品单值明细表-单值名管理
  15466. /// </summary>
  15467. /// <param name="cre"></param>
  15468. /// <param name="sUserInfo"></param>
  15469. /// <returns></returns>
  15470. public static ServiceResultEntity SetRPT01040501Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15471. {
  15472. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15473. try
  15474. {
  15475. ServiceResultEntity sre = new ServiceResultEntity();
  15476. // 检验参数的有效性
  15477. if (cre.Data == null && cre.Data.Tables.Count == 0 ||
  15478. cre.Data.Tables[0].Rows.Count < Constant.INT_IS_ZERO)
  15479. {
  15480. return sre;
  15481. }
  15482. oracleTrConn.Connect();
  15483. foreach (DataRow dataRow in cre.Data.Tables[0].Rows)
  15484. {
  15485. // 新建
  15486. if (dataRow.RowState == DataRowState.Added)
  15487. {
  15488. #region 新增
  15489. string sqlString = "INSERT INTO TP_MST_UNITPRICE\n" +
  15490. " (NAME, displayno, accountid, valueflag, createuserid, updateuserid)\n" +
  15491. "VALUES\n" +
  15492. " (:NAME, nvl(:DisplayNo,0), :AccountID, :ValueFlag, :UserID, :UserID)";
  15493. OracleParameter[] oracleParameter = new OracleParameter[]
  15494. {
  15495. new OracleParameter(":NAME", OracleDbType.NVarchar2, dataRow["Name"],ParameterDirection.Input),
  15496. new OracleParameter(":DisplayNo",OracleDbType.Int32, dataRow["DisplayNo"], ParameterDirection.Input),
  15497. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID, ParameterDirection.Input),
  15498. new OracleParameter(":ValueFlag",OracleDbType.NVarchar2, dataRow["ValueFlag"],ParameterDirection.Input),
  15499. new OracleParameter(":UserID",OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  15500. };
  15501. oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  15502. #endregion
  15503. }
  15504. else if (dataRow.RowState == DataRowState.Modified)
  15505. {
  15506. #region 更新
  15507. string sqlUpdateString = "UPDATE TP_MST_UNITPRICE SET "
  15508. + " Name = :Name,"
  15509. + " DisplayNo = :DisplayNo,"
  15510. + " ValueFlag = :ValueFlag,"
  15511. + " UpdateUserID = :UserID"
  15512. + " WHERE ID = :ID";
  15513. OracleParameter[] oracleParameter = new OracleParameter[]
  15514. {
  15515. new OracleParameter(":ID",OracleDbType.Int32,dataRow["ID"], ParameterDirection.Input),
  15516. new OracleParameter(":Name", OracleDbType.NVarchar2, dataRow["Name"],ParameterDirection.Input),
  15517. new OracleParameter(":DisplayNo",OracleDbType.Int32, dataRow["DisplayNo"], ParameterDirection.Input),
  15518. new OracleParameter(":ValueFlag",OracleDbType.NVarchar2, dataRow["ValueFlag"],ParameterDirection.Input),
  15519. new OracleParameter(":UserID",OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  15520. };
  15521. oracleTrConn.ExecuteNonQuery(sqlUpdateString, oracleParameter);
  15522. #endregion
  15523. }
  15524. else if (dataRow.RowState == DataRowState.Deleted)
  15525. {
  15526. #region 删除
  15527. string sqlDeleteString = "DELETE TP_MST_UNITPRICE WHERE ID = :ID";
  15528. OracleParameter[] oracleParameter = new OracleParameter[]
  15529. {
  15530. new OracleParameter(":ID",OracleDbType.Int32,dataRow["ID"], ParameterDirection.Input),
  15531. };
  15532. oracleTrConn.ExecuteNonQuery(sqlDeleteString, oracleParameter);
  15533. #endregion
  15534. }
  15535. }
  15536. oracleTrConn.Commit();
  15537. oracleTrConn.Disconnect();
  15538. return sre;
  15539. }
  15540. catch (Exception ex)
  15541. {
  15542. if (oracleTrConn.ConnState == ConnectionState.Open)
  15543. {
  15544. oracleTrConn.Rollback();
  15545. oracleTrConn.Disconnect();
  15546. }
  15547. throw ex;
  15548. }
  15549. finally
  15550. {
  15551. if (oracleTrConn.ConnState == ConnectionState.Open)
  15552. {
  15553. oracleTrConn.Disconnect();
  15554. }
  15555. }
  15556. }
  15557. /// <summary>
  15558. /// 获取模具跟踪表
  15559. /// </summary>
  15560. /// <param name="cre"></param>
  15561. /// <param name="sUserInfo"></param>
  15562. /// <returns></returns>
  15563. public static ServiceResultEntity GetRPT020105Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15564. {
  15565. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15566. try
  15567. {
  15568. ServiceResultEntity sre = new ServiceResultEntity();
  15569. OracleParameter[] oracleParameter = new OracleParameter[]
  15570. {
  15571. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15572. new OracleParameter("in_MouldBarcode",OracleDbType.Varchar2, cre.Properties["MouldBarcode"], ParameterDirection.Input),
  15573. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15574. new OracleParameter("out_Tracking",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15575. };
  15576. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_GetMouldTracking", oracleParameter);
  15577. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15578. {
  15579. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15580. }
  15581. sre.Data = result;
  15582. return sre;
  15583. }
  15584. catch (Exception ex)
  15585. {
  15586. if (oracleConn.ConnState == ConnectionState.Open)
  15587. {
  15588. oracleConn.Close();
  15589. }
  15590. throw ex;
  15591. }
  15592. }
  15593. /// <summary>
  15594. /// 获取模具收发存汇总表
  15595. /// </summary>
  15596. /// <param name="cre"></param>
  15597. /// <param name="sUserInfo"></param>
  15598. /// <returns></returns>
  15599. public static ServiceResultEntity GetRPT030113Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15600. {
  15601. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15602. try
  15603. {
  15604. ServiceResultEntity sre = new ServiceResultEntity();
  15605. OracleParameter[] oracleParameter = new OracleParameter[]
  15606. {
  15607. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15608. new OracleParameter("in_YYYYMM",OracleDbType.Varchar2, cre.Properties["YYYYMM"], ParameterDirection.Input),
  15609. new OracleParameter("in_DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15610. new OracleParameter("in_DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15611. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15612. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15613. new OracleParameter("in_GoodsIDs",OracleDbType.Varchar2, cre.Properties["GoodsIDs"], ParameterDirection.Input),
  15614. new OracleParameter("in_GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
  15615. new OracleParameter("in_Type",OracleDbType.Int32, cre.Properties["Type"], ParameterDirection.Input),
  15616. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15617. };
  15618. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_GetMould_SUM", oracleParameter);
  15619. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15620. {
  15621. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15622. }
  15623. sre.Data = result;
  15624. oracleConn.Commit();
  15625. return sre;
  15626. }
  15627. catch (Exception ex)
  15628. {
  15629. if (oracleConn.ConnState == ConnectionState.Open)
  15630. {
  15631. oracleConn.Disconnect();
  15632. }
  15633. throw ex;
  15634. }
  15635. }
  15636. /// <summary>
  15637. /// 获取废弃产品汇总表
  15638. /// </summary>
  15639. /// <param name="cre"></param>
  15640. /// <param name="sUserInfo"></param>
  15641. /// <returns></returns>
  15642. public static ServiceResultEntity GetRPT030114Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15643. {
  15644. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15645. try
  15646. {
  15647. ServiceResultEntity sre = new ServiceResultEntity();
  15648. OracleParameter[] oracleParameter = new OracleParameter[]
  15649. {
  15650. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15651. new OracleParameter("in_DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15652. new OracleParameter("in_DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15653. new OracleParameter("in_scrapTypes",OracleDbType.Varchar2, cre.Properties["ScrapTypes"], ParameterDirection.Input),
  15654. new OracleParameter("in_ProcedureIDs",OracleDbType.Varchar2, cre.Properties["ProcedureIDs"], ParameterDirection.Input),
  15655. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15656. //new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15657. new OracleParameter("in_GoodsIDs",OracleDbType.Varchar2, cre.Properties["GoodsIDs"], ParameterDirection.Input),
  15658. new OracleParameter("in_GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
  15659. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15660. };
  15661. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_scrap_sum", oracleParameter);
  15662. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15663. {
  15664. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15665. }
  15666. sre.Data = result;
  15667. oracleConn.Commit();
  15668. return sre;
  15669. }
  15670. catch (Exception ex)
  15671. {
  15672. if (oracleConn.ConnState == ConnectionState.Open)
  15673. {
  15674. oracleConn.Disconnect();
  15675. }
  15676. throw ex;
  15677. }
  15678. }
  15679. /// <summary>
  15680. /// 回收产品汇总表
  15681. /// </summary>
  15682. /// <param name="cre"></param>
  15683. /// <param name="sUserInfo"></param>
  15684. /// <returns></returns>
  15685. public static ServiceResultEntity GetRPT030121Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15686. {
  15687. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15688. try
  15689. {
  15690. ServiceResultEntity sre = new ServiceResultEntity();
  15691. string sqlString = @"SELECT
  15692. TT2.产品分级,
  15693. TT2.部门,
  15694. TT2.用户,
  15695. TT2.count 产量,
  15696. TO_CHAR( ( TT2.count / TT2.sumcount ) * 100, '9,990.00' ) || '%' AS 合格率
  15697. FROM
  15698. (
  15699. SELECT
  15700. T1.id,
  15701. T1.产品分级,
  15702. T1.部门,
  15703. T1.用户,
  15704. T1.count count,
  15705. TT.count sumcount
  15706. FROM
  15707. (
  15708. SELECT ROWNUM
  15709. id,
  15710. T.产品分级,
  15711. T.部门,
  15712. T.用户,
  15713. T.count
  15714. FROM
  15715. (
  15716. SELECT
  15717. CASE
  15718. WHEN
  15719. TPGD.GOODSLEVELTYPEID = 4 THEN
  15720. '正品'
  15721. WHEN TPGD.GOODSLEVELTYPEID = 5 THEN
  15722. '副品'
  15723. WHEN TPGD.GOODSLEVELTYPEID = 6 THEN
  15724. '重烧'
  15725. WHEN TPGD.GOODSLEVELTYPEID = 7 THEN
  15726. '次品'
  15727. WHEN TPGD.GOODSLEVELTYPEID = 16 THEN
  15728. '冷补' ELSE '损坯'
  15729. END 产品分级,
  15730. CASE
  15731. WHEN SUBSTR( TPGD.GROUTINGLINENAME, 1, 1 ) = 'C' THEN
  15732. '三部'
  15733. WHEN SUBSTR( TPGD.GROUTINGLINENAME, 1, 1 ) = 'B' THEN
  15734. '二部' ELSE '一部'
  15735. END 部门,
  15736. tppd.CREATEUSERID AS 用户 ,
  15737. COUNT( DISTINCT TPGD.BARCODE ) count
  15738. FROM
  15739. TP_PM_GROUTINGDAILYDETAIL TPGD
  15740. LEFT JOIN ( SELECT BARCODE, CREATETIME, CREATEUSERID FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 80 AND VALUEFLAG = 1 ) TPPD ON TPGD.BARCODE = TPPD.BARCODE
  15741. WHERE
  15742. TPGD.RECYCLINGFLAG = 1
  15743. AND TPPD.CREATETIME >= :DateBegin
  15744. AND TPPD.CREATETIME <= :DateEnd
  15745. GROUP BY
  15746. TPGD.GOODSLEVELTYPEID,
  15747. tppd.CREATEUSERID,
  15748. SUBSTR( TPGD.GROUTINGLINENAME, 1, 1 )
  15749. ) T
  15750. ) T1
  15751. FULL JOIN (
  15752. SELECT ROWNUM
  15753. id,
  15754. T2.count
  15755. FROM
  15756. (
  15757. SELECT
  15758. COUNT( DISTINCT BARCODE ) count
  15759. FROM
  15760. TP_PM_PRODUCTIONDATA TPPD
  15761. WHERE
  15762. TPPD.PROCEDUREID IN ( 80 )
  15763. AND TPPD.VALUEFLAG = 1
  15764. AND TPPD.CREATETIME >= :DateBegin
  15765. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15766. SELECT
  15767. COUNT( DISTINCT BARCODE ) count
  15768. FROM
  15769. TP_PM_PRODUCTIONDATA TPPD
  15770. WHERE
  15771. TPPD.PROCEDUREID IN ( 80 )
  15772. AND TPPD.VALUEFLAG = 1
  15773. AND TPPD.CREATETIME >= :DateBegin
  15774. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15775. SELECT
  15776. COUNT( DISTINCT BARCODE ) count
  15777. FROM
  15778. TP_PM_PRODUCTIONDATA TPPD
  15779. WHERE
  15780. TPPD.PROCEDUREID IN ( 80 )
  15781. AND TPPD.VALUEFLAG = 1
  15782. AND TPPD.CREATETIME >= :DateBegin
  15783. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15784. SELECT
  15785. COUNT( DISTINCT BARCODE ) count
  15786. FROM
  15787. TP_PM_PRODUCTIONDATA TPPD
  15788. WHERE
  15789. TPPD.PROCEDUREID IN ( 80 )
  15790. AND TPPD.VALUEFLAG = 1
  15791. AND TPPD.CREATETIME >= :DateBegin
  15792. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15793. SELECT
  15794. COUNT( DISTINCT BARCODE ) count
  15795. FROM
  15796. TP_PM_PRODUCTIONDATA TPPD
  15797. WHERE
  15798. TPPD.PROCEDUREID IN ( 80 )
  15799. AND TPPD.VALUEFLAG = 1
  15800. AND TPPD.CREATETIME >= :DateBegin
  15801. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15802. SELECT
  15803. COUNT( DISTINCT BARCODE ) count
  15804. FROM
  15805. TP_PM_PRODUCTIONDATA TPPD
  15806. WHERE
  15807. TPPD.PROCEDUREID IN ( 80 )
  15808. AND TPPD.VALUEFLAG = 1
  15809. AND TPPD.CREATETIME >= :DateBegin
  15810. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15811. SELECT
  15812. COUNT( DISTINCT BARCODE ) count
  15813. FROM
  15814. TP_PM_PRODUCTIONDATA TPPD
  15815. WHERE
  15816. TPPD.PROCEDUREID IN ( 80 )
  15817. AND TPPD.VALUEFLAG = 1
  15818. AND TPPD.CREATETIME >= :DateBegin
  15819. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15820. SELECT
  15821. COUNT( DISTINCT BARCODE ) count
  15822. FROM
  15823. TP_PM_PRODUCTIONDATA TPPD
  15824. WHERE
  15825. TPPD.PROCEDUREID IN ( 80 )
  15826. AND TPPD.VALUEFLAG = 1
  15827. AND TPPD.CREATETIME >= :DateBegin
  15828. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15829. SELECT
  15830. COUNT( DISTINCT BARCODE ) count
  15831. FROM
  15832. TP_PM_PRODUCTIONDATA TPPD
  15833. WHERE
  15834. TPPD.PROCEDUREID IN ( 80 )
  15835. AND TPPD.VALUEFLAG = 1
  15836. AND TPPD.CREATETIME >= :DateBegin
  15837. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15838. SELECT
  15839. COUNT( DISTINCT BARCODE ) count
  15840. FROM
  15841. TP_PM_PRODUCTIONDATA TPPD
  15842. WHERE
  15843. TPPD.PROCEDUREID IN ( 80 )
  15844. AND TPPD.VALUEFLAG = 1
  15845. AND TPPD.CREATETIME >= :DateBegin
  15846. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15847. SELECT
  15848. COUNT( DISTINCT BARCODE ) count
  15849. FROM
  15850. TP_PM_PRODUCTIONDATA TPPD
  15851. WHERE
  15852. TPPD.PROCEDUREID IN ( 80 )
  15853. AND TPPD.VALUEFLAG = 1
  15854. AND TPPD.CREATETIME >= :DateBegin
  15855. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15856. SELECT
  15857. COUNT( DISTINCT BARCODE ) count
  15858. FROM
  15859. TP_PM_PRODUCTIONDATA TPPD
  15860. WHERE
  15861. TPPD.PROCEDUREID IN ( 80 )
  15862. AND TPPD.VALUEFLAG = 1
  15863. AND TPPD.CREATETIME >= :DateBegin
  15864. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15865. SELECT
  15866. COUNT( DISTINCT BARCODE ) count
  15867. FROM
  15868. TP_PM_PRODUCTIONDATA TPPD
  15869. WHERE
  15870. TPPD.PROCEDUREID IN ( 80 )
  15871. AND TPPD.VALUEFLAG = 1
  15872. AND TPPD.CREATETIME >= :DateBegin
  15873. AND TPPD.CREATETIME <= :DateEnd UNION ALL
  15874. SELECT
  15875. COUNT( DISTINCT BARCODE ) count
  15876. FROM
  15877. TP_PM_PRODUCTIONDATA TPPD
  15878. WHERE
  15879. TPPD.PROCEDUREID IN ( 80 )
  15880. AND TPPD.VALUEFLAG = 1
  15881. AND TPPD.CREATETIME >= :DateBegin
  15882. AND TPPD.CREATETIME <= :DateEnd
  15883. ) T2
  15884. WHERE
  15885. ROWNUM <= (
  15886. SELECT
  15887. COUNT( * )
  15888. FROM
  15889. (
  15890. SELECT
  15891. CASE
  15892. WHEN
  15893. TPGD.GOODSLEVELTYPEID = 4 THEN
  15894. '正品'
  15895. WHEN TPGD.GOODSLEVELTYPEID = 5 THEN
  15896. '副品'
  15897. WHEN TPGD.GOODSLEVELTYPEID = 6 THEN
  15898. '重烧'
  15899. WHEN TPGD.GOODSLEVELTYPEID = 7 THEN
  15900. '次品'
  15901. WHEN TPGD.GOODSLEVELTYPEID = 16 THEN
  15902. '冷补' ELSE '损坯'
  15903. END 产品分级,
  15904. CASE
  15905. WHEN SUBSTR( TPGD.GROUTINGLINENAME, 1, 1 ) = 'C' THEN
  15906. '三部'
  15907. WHEN SUBSTR( TPGD.GROUTINGLINENAME, 1, 1 ) = 'B' THEN
  15908. '二部' ELSE '一部'
  15909. END 部门,
  15910. tppd.CREATEUSERID AS 用户 ,
  15911. COUNT( DISTINCT TPGD.BARCODE ) count
  15912. FROM
  15913. TP_PM_GROUTINGDAILYDETAIL TPGD
  15914. LEFT JOIN ( SELECT BARCODE, CREATETIME, CREATEUSERID FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 80 AND VALUEFLAG = 1 ) TPPD ON TPGD.BARCODE = TPPD.BARCODE
  15915. WHERE
  15916. TPGD.RECYCLINGFLAG = 1
  15917. AND TPPD.CREATETIME >= :DateBegin
  15918. AND TPPD.CREATETIME <= :DateEnd
  15919. GROUP BY
  15920. TPGD.GOODSLEVELTYPEID,
  15921. SUBSTR( TPGD.GROUTINGLINENAME, 1, 1 ),
  15922. tppd.CREATEUSERID
  15923. ) A
  15924. )
  15925. ) TT ON TT.id = T1.id
  15926. ) TT2
  15927. ORDER BY
  15928. TT2.产品分级 DESC";
  15929. OracleParameter[] oracleParameter = new OracleParameter[]
  15930. {
  15931. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15932. new Oracle.ManagedDataAccess.Client.OracleParameter(":DateBegin", OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15933. new Oracle.ManagedDataAccess.Client.OracleParameter(":DateEnd", OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15934. };
  15935. oracleConn.Open();
  15936. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15937. oracleConn.Close();
  15938. return sre;
  15939. }
  15940. catch (Exception ex)
  15941. {
  15942. if (oracleConn.ConnState == ConnectionState.Open)
  15943. {
  15944. oracleConn.Close();
  15945. }
  15946. throw ex;
  15947. }
  15948. }
  15949. /// <summary>
  15950. /// 获取废品损失汇总表
  15951. /// </summary>
  15952. /// <param name="cre"></param>
  15953. /// <param name="sUserInfo"></param>
  15954. /// <returns></returns>
  15955. public static ServiceResultEntity GetRPT030115Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15956. {
  15957. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15958. try
  15959. {
  15960. ServiceResultEntity sre = new ServiceResultEntity();
  15961. OracleParameter[] oracleParameter = new OracleParameter[]
  15962. {
  15963. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15964. new OracleParameter("in_ptid",OracleDbType.Int32, cre.Properties["PTID"], ParameterDirection.Input),
  15965. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15966. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15967. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15968. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15969. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15970. };
  15971. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_TECDEP_SCRAP_SUM", oracleParameter);
  15972. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15973. {
  15974. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15975. }
  15976. sre.Data = result;
  15977. oracleConn.Commit();
  15978. return sre;
  15979. }
  15980. catch (Exception ex)
  15981. {
  15982. if (oracleConn.ConnState == ConnectionState.Open)
  15983. {
  15984. oracleConn.Disconnect();
  15985. }
  15986. throw ex;
  15987. }
  15988. }
  15989. /// <summary>
  15990. /// 获取废品损失汇总-明细表
  15991. /// </summary>
  15992. /// <param name="cre"></param>
  15993. /// <param name="sUserInfo"></param>
  15994. /// <returns></returns>
  15995. public static ServiceResultEntity GetRPT030115DData(ClientRequestEntity cre, SUserInfo sUserInfo)
  15996. {
  15997. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15998. try
  15999. {
  16000. ServiceResultEntity sre = new ServiceResultEntity();
  16001. OracleParameter[] oracleParameter = new OracleParameter[]
  16002. {
  16003. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16004. new OracleParameter("in_ptid",OracleDbType.Int32, cre.Properties["PTID"], ParameterDirection.Input),
  16005. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  16006. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  16007. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  16008. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  16009. new OracleParameter("in_GoodsID",OracleDbType.Varchar2, cre.Properties["GoodsID"], ParameterDirection.Input),
  16010. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  16011. };
  16012. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_TECDEP_SCRAP_SUMDETAIL", oracleParameter);
  16013. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16014. {
  16015. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16016. }
  16017. sre.Data = result;
  16018. oracleConn.Commit();
  16019. return sre;
  16020. }
  16021. catch (Exception ex)
  16022. {
  16023. if (oracleConn.ConnState == ConnectionState.Open)
  16024. {
  16025. oracleConn.Disconnect();
  16026. }
  16027. throw ex;
  16028. }
  16029. }
  16030. /// <summary>
  16031. /// 获取废品损失汇总表-半成品损失汇总表
  16032. /// </summary>
  16033. /// <param name="cre"></param>
  16034. /// <param name="sUserInfo"></param>
  16035. /// <returns></returns>
  16036. public static ServiceResultEntity GetRPT030115SData(ClientRequestEntity cre, SUserInfo sUserInfo)
  16037. {
  16038. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16039. try
  16040. {
  16041. ServiceResultEntity sre = new ServiceResultEntity();
  16042. OracleParameter[] oracleParameter = new OracleParameter[]
  16043. {
  16044. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16045. new OracleParameter("in_ptid",OracleDbType.Int32, cre.Properties["PTID"], ParameterDirection.Input),
  16046. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  16047. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  16048. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  16049. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  16050. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  16051. };
  16052. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_TECDEP_SCRAP_SUM_semi", oracleParameter);
  16053. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16054. {
  16055. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16056. }
  16057. StringBuilder cols = new StringBuilder();
  16058. StringBuilder sumCols = new StringBuilder();
  16059. foreach (DataRow item in result.Tables[0].Rows)
  16060. {
  16061. cols.AppendFormat(", d{0} AS \"{1}\"\n", item["id"], item["name"]);
  16062. sumCols.AppendFormat(", SUM(decode(td1.id, {0}, g.d, 0)) d{0}\n", item["id"]);
  16063. }
  16064. string sqlString = "SELECT gid\n" +
  16065. " ,decode(gid, 3, '合计', 1, '小计[' || gt2name || ']', gt2name) gt2name\n" +
  16066. " ,decode(gid, 0, td2name, '--') td2name\n" +
  16067. " ,gg.gc\n" +
  16068. " ,case when gg.gc is not null and gg.gc > 0 then round(tt.d / gg.gc,4) else null end gcc\n" +
  16069. " ,d\n" +
  16070. " ,c\n" +
  16071. " ,d-c g\n" +
  16072. cols +
  16073. " FROM (SELECT grouping_id(t.tecdepid, td2.id) gid\n" +
  16074. " ,nvl(t.tecdepid, -1) gt2id\n" +
  16075. " ,t.tecdepname gt2name\n" +
  16076. " ,td2.name td2name\n" +
  16077. " ,td2.displayno td2displayno\n" +
  16078. " ,SUM(g.d) d\n" +
  16079. " ,SUM(g.c) c\n" +
  16080. sumCols +
  16081. " FROM TMP_RPT_TECDEP_G g\n" +
  16082. " INNER JOIN TMP_RPT_TECDEP_T t\n" +
  16083. " ON g.goodsid = t.goodsid\n" +
  16084. " INNER JOIN tmp_rpt_tecdep_s s1\n" +
  16085. " ON s1.procedureid = g.pid\n" +
  16086. " INNER JOIN tp_mst_tecdep td1\n" +
  16087. " ON td1.id = s1.intecdepid\n" +
  16088. " LEFT JOIN tmp_rpt_tecdep_s s2\n" +
  16089. " ON s2.procedureid = g.f\n" +
  16090. " LEFT JOIN tp_mst_tecdep td2\n" +
  16091. " ON td2.id = s2.intecdepid\n" +
  16092. " WHERE td1.technologyflag = '1' -- 半成品工艺\n" +
  16093. " AND (td2.id IS NULL OR td2.technologyflag = '1')\n" +
  16094. " GROUP BY GROUPING SETS((t.tecdepid, t.tecdepname, td2.id, td2.name, td2.displayno),(t.tecdepid, t.tecdepname),())\n" +
  16095. " ORDER BY t.tecdepname, td2.displayno) tt\n" +
  16096. " LEFT JOIN (SELECT --grouping_id(gt2.goodstypeid) gid,\n" +
  16097. " nvl(t.tecdepid, -1) gt2id, COUNT(*) gc\n" +
  16098. " FROM tp_pm_groutingdailydetail gdd\n" +
  16099. " INNER JOIN TMP_RPT_TECDEP_T t\n" +
  16100. " ON gdd.goodsid = t.goodsid\n" +
  16101. " WHERE gdd.accountid = :in_accountid\n" +
  16102. " AND gdd.valueflag = '1'\n" +
  16103. " AND gdd.groutingflag = '1'\n" +
  16104. " AND gdd.groutingdate BETWEEN :in_datetimebegin AND\n" +
  16105. " :in_datetimeend\n" +
  16106. " GROUP BY GROUPING SETS((t.tecdepid),())) gg\n" +
  16107. " ON gg.gt2id = tt.gt2id\n" +
  16108. " ORDER BY tt.gt2name, tt.gid, tt.td2displayno";
  16109. oracleParameter = new OracleParameter[]
  16110. {
  16111. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16112. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  16113. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  16114. };
  16115. result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  16116. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16117. {
  16118. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16119. }
  16120. sre.Data = result;
  16121. oracleConn.Commit();
  16122. return sre;
  16123. }
  16124. catch (Exception ex)
  16125. {
  16126. if (oracleConn.ConnState == ConnectionState.Open)
  16127. {
  16128. oracleConn.Disconnect();
  16129. }
  16130. throw ex;
  16131. }
  16132. }
  16133. /// <summary>
  16134. /// 获取成型存坯汇总表-注浆产品存坯汇总表
  16135. /// </summary>
  16136. /// <param name="cre"></param>
  16137. /// <param name="sUserInfo"></param>
  16138. /// <returns></returns>
  16139. public static ServiceResultEntity GetRPT030116GoodsData(ClientRequestEntity cre, SUserInfo sUserInfo)
  16140. {
  16141. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16142. try
  16143. {
  16144. ServiceResultEntity sre = new ServiceResultEntity();
  16145. /*
  16146. string sqlString =
  16147. "SELECT gdrd.goodsid\n" +
  16148. " ,gdrd.goodscode\n" +
  16149. //" ,gdrd.groutinglineid\n" +
  16150. //" ,gdrd.groutinglinecode\n" +
  16151. //" ,gdrd.userid\n" +
  16152. //" ,gdrd.usercode\n" +
  16153. " ,gdrd.gddc rdcount -- 存坯数\n" +
  16154. " ,rdd.gldcount -- 模具数\n" +
  16155. " , CASE\n" +
  16156. " WHEN rdd.gldcount IS NOT NULL AND rdd.gldcount > 0 THEN\n" +
  16157. " round(gdrd.gddc / rdd.gldcount, 2)\n" +
  16158. " ELSE\n" +
  16159. " NULL\n" +
  16160. " END rddays -- 存坯天数\n" +
  16161. " ,gdrd.reserveddays -- 应存天数\n" +
  16162. " ,(gdrd.gddc - gdrd.reserveddays * rdd.gldcount) ProfitNum --盈亏坯数\n" +
  16163. " FROM (SELECT gdd.goodsid\n" +
  16164. " ,gdd.goodscode\n" +
  16165. //" ,gdd.groutinglineid\n" +
  16166. //" ,gdd.groutinglinecode\n" +
  16167. //" ,gdd.userid\n" +
  16168. //" ,gdd.usercode\n" +
  16169. " ,g.reserveddays\n" +
  16170. " ,COUNT(*) gddc\n" +
  16171. " FROM tp_pm_groutingdailydetail gdd\n" +
  16172. " INNER JOIN tp_mst_goods g\n" +
  16173. " ON g.goodsid = gdd.goodsid\n" +
  16174. " INNER JOIN tp_mst_goodstype gt\n" +
  16175. " ON g.goodstypeid = gt.goodstypeid\n" +
  16176. " WHERE gdd.accountid = :accountid\n" +
  16177. " AND gdd.valueflag = '1'\n" +
  16178. " AND gdd.groutingflag = '1'\n" +
  16179. " AND gdd.barcode IS NOT NULL\n" +
  16180. " AND gdd.scrapflag = '0'\n" +
  16181. " AND gdd.deliverflag = '0'\n" +
  16182. " AND (:LineCode IS NULL OR\n" +
  16183. " instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  16184. " AND (:UserCode IS NULL OR instr(gdd.UserCode, :UserCode) > 0)\n" +
  16185. " AND (:GoodsCode IS NULL OR instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  16186. " AND (:GoodsTypeCode IS NULL OR\n" +
  16187. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  16188. " AND (:DateBegin IS NULL OR\n" +
  16189. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)\n" +
  16190. " GROUP BY gdd.goodsid\n" +
  16191. " ,gdd.goodscode\n" +
  16192. //" ,gdd.groutinglineid\n" +
  16193. //" ,gdd.groutinglinecode\n" +
  16194. //" ,gdd.userid\n" +
  16195. //" ,gdd.usercode\n" +
  16196. " ,g.reserveddays) gdrd\n" +
  16197. " LEFT JOIN (SELECT gld.goodsid\n" +
  16198. //" ,gld.groutinglineid\n" +
  16199. " ,COUNT(*) gldcount\n" +
  16200. " FROM tp_pc_groutinglinedetail gld\n" +
  16201. " INNER JOIN tp_pc_groutingline gl\n" +
  16202. " ON gl.groutinglineid = gld.groutinglineid\n" +
  16203. " WHERE gld.valueflag = '1'\n" +
  16204. " AND gld.gmouldstatus = 1\n" +
  16205. " AND gl.accountid = :accountid\n" +
  16206. " AND gl.valueflag = '1'\n" +
  16207. " AND gl.gmouldstatus = 1\n" +
  16208. " GROUP BY gld.goodsid\n" +
  16209. //" ,gld.groutinglineid\n" +
  16210. " ) rdd\n" +
  16211. " ON rdd.goodsid = gdrd.goodsid\n" +
  16212. //" AND rdd.groutinglineid = gdrd.groutinglineid\n" +
  16213. " ORDER BY gdrd.goodscode\n" +
  16214. //" ,gdrd.groutinglinecode, gdrd.usercode"
  16215. "";
  16216. */
  16217. string sqlString =
  16218. "SELECT grouping_id(t.goodstypecode2, t.goodsid) gid\n" +
  16219. " ,t.goodstypecode2\n" +
  16220. " ,decode(grouping_id(t.goodstypecode2, t.goodsid),\n" +
  16221. " 3,\n" +
  16222. " '总计',\n" +
  16223. " 1,\n" +
  16224. " '合计[' || t.goodstypename2 || ']',\n" +
  16225. " t.goodstypename2) goodstypename2\n" +
  16226. " ,t.goodstypename\n" +
  16227. " ,t.goodsid\n" +
  16228. " ,t.goodscode\n" +
  16229. //" ,t.groutinglineid\n" +
  16230. //" ,t.groutinglinecode\n" +
  16231. //" ,t.userid\n" +
  16232. //" ,t.usercode\n" +
  16233. " ,SUM(t.rdcount) rdcount\n" +
  16234. " ,t.gldcount -- 模具数\n" +
  16235. " ,t.rddays -- 存坯天数\n" +
  16236. " ,t.reserveddays -- 应存天数\n" +
  16237. " ,SUM(t.ProfitNum) ProfitNum\n" +
  16238. " FROM (SELECT gt2.goodstypecode goodstypecode2\n" +
  16239. " ,gt2.goodstypename goodstypename2\n" +
  16240. " ,gdrd.goodsid\n" +
  16241. " ,gdrd.goodscode\n" +
  16242. " ,gdrd.goodstypename\n" +
  16243. //" ,gdrd.groutinglineid\n" +
  16244. //" ,gdrd.groutinglinecode\n" +
  16245. //" ,gdrd.userid\n" +
  16246. //" ,gdrd.usercode\n" +
  16247. " ,gdrd.gddc rdcount -- 存坯数\n" +
  16248. " ,rdd.gldcount -- 模具数\n" +
  16249. " , CASE\n" +
  16250. " WHEN rdd.gldcount IS NOT NULL AND rdd.gldcount > 0 THEN\n" +
  16251. " round(gdrd.gddc / rdd.gldcount, 2)\n" +
  16252. " ELSE\n" +
  16253. " NULL\n" +
  16254. " END rddays -- 存坯天数\n" +
  16255. " ,gdrd.reserveddays -- 应存天数\n" +
  16256. // 盈亏坯数 = 存坯数-应存天数*模具数 存坯天数 = 存坯数/模具数
  16257. " ,(gdrd.gddc - gdrd.reserveddays * rdd.gldcount) ProfitNum --盈亏坯数\n" +
  16258. " FROM (SELECT gdd.goodsid\n" +
  16259. " ,gdd.goodscode\n" +
  16260. //" ,gdd.groutinglineid\n" +
  16261. //" ,gdd.groutinglinecode\n" +
  16262. //" ,gdd.userid\n" +
  16263. //" ,gdd.usercode\n" +
  16264. " ,g.reserveddays\n" +
  16265. " ,substr(gt.goodstypecode, 1, 6) goodstypecode2\n" +
  16266. " ,gt.goodstypename\n" +
  16267. " ,COUNT(*) gddc\n" +
  16268. " FROM tp_pm_groutingdailydetail gdd\n" +
  16269. " INNER JOIN tp_mst_goods g\n" +
  16270. " ON g.goodsid = gdd.goodsid\n" +
  16271. " INNER JOIN tp_mst_goodstype gt\n" +
  16272. " ON g.goodstypeid = gt.goodstypeid\n" +
  16273. " left JOIN tp_pm_inproduction inp\n" +
  16274. " ON inp.barcode = gdd.barcode\n" +
  16275. //20210113
  16276. " left JOIN tp_pc_procedure p\n" +
  16277. " ON inp.procedureid = p.procedureid\n" +
  16278. //end
  16279. " WHERE gdd.accountid = :accountid\n" +
  16280. " AND gdd.valueflag = '1'\n" +
  16281. " AND gdd.groutingflag = '1'\n" +
  16282. " AND gdd.barcode IS NOT NULL\n" +
  16283. " AND gdd.scrapflag = '0'\n" +
  16284. " AND gdd.deliverflag = '0'\n" +
  16285. " AND (gdd.beginningflag='0' or inp.barcode is not null)\n" +
  16286. " AND (:LineCode IS NULL OR\n" +
  16287. " instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  16288. " AND (:UserCode IS NULL OR\n" +
  16289. " instr(gdd.UserCode, :UserCode) > 0)\n" +
  16290. " AND (:GoodsCode IS NULL OR\n" +
  16291. " instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  16292. " AND (:GoodsTypeCode IS NULL OR\n" +
  16293. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  16294. " AND (:DateBegin IS NULL OR\n" +
  16295. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)\n" +
  16296. //20210113
  16297. " AND (P.procedurename IN('3#阴干区(入)','3#预干区(入)','3#烘干区(入)','3#烘干区(出)') or p.procedurename IS NULL)" +
  16298. //end
  16299. " GROUP BY gt.goodstypecode,gt.goodstypename\n" +
  16300. " ,gdd.goodsid\n" +
  16301. " ,gdd.goodscode\n" +
  16302. //" ,gdd.groutinglineid\n" +
  16303. //" ,gdd.groutinglinecode\n" +
  16304. //" ,gdd.userid\n" +
  16305. //" ,gdd.usercode\n" +
  16306. " ,g.reserveddays) gdrd\n" +
  16307. " LEFT JOIN (SELECT gld.goodsid\n" +
  16308. //" ,gld.groutinglineid\n" +
  16309. " ,COUNT(*) gldcount\n" +
  16310. " FROM tp_pc_groutinglinedetail gld\n" +
  16311. " INNER JOIN tp_pc_groutingline gl\n" +
  16312. " ON gl.groutinglineid = gld.groutinglineid\n" +
  16313. " WHERE gld.valueflag = '1'\n" +
  16314. " AND gld.gmouldstatus = 1\n" +
  16315. " AND gl.accountid = :accountid\n" +
  16316. " AND gl.valueflag = '1'\n" +
  16317. " AND gl.gmouldstatus = 1\n" +
  16318. " GROUP BY gld.goodsid\n" +
  16319. //" , gld.groutinglineid" +
  16320. " ) rdd\n" +
  16321. " ON rdd.goodsid = gdrd.goodsid\n" +
  16322. //" AND rdd.groutinglineid = gdrd.groutinglineid\n" +
  16323. " INNER JOIN tp_mst_goodstype gt2\n" +
  16324. " ON gt2.accountid = :accountid\n" +
  16325. " AND gt2.goodstypecode = gdrd.goodstypecode2\n" +
  16326. " ORDER BY gt2.goodstypecode\n" +
  16327. " ,gdrd.goodscode\n" +
  16328. //" ,gdrd.groutinglinecode\n" +
  16329. //" ,gdrd.usercode" +
  16330. " ) t\n" +
  16331. " GROUP BY GROUPING SETS((t.goodstypecode2, t.goodstypename2,t.goodstypename, t.goodsid, t.goodscode, t.gldcount, t.rddays, t.reserveddays),(t.goodstypecode2, t.goodstypename2),())";
  16332. OracleParameter[] oracleParameter = new OracleParameter[]
  16333. {
  16334. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16335. new OracleParameter(":DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  16336. new OracleParameter(":DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  16337. new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  16338. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  16339. new OracleParameter(":LineCode",OracleDbType.NVarchar2, cre.Properties["LineCode"], ParameterDirection.Input),
  16340. new OracleParameter(":UserCode",OracleDbType.NVarchar2, cre.Properties["UserCode"], ParameterDirection.Input),
  16341. };
  16342. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  16343. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16344. {
  16345. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16346. }
  16347. sre.Data = result;
  16348. return sre;
  16349. }
  16350. catch (Exception ex)
  16351. {
  16352. if (oracleConn.ConnState == ConnectionState.Open)
  16353. {
  16354. oracleConn.Close();
  16355. }
  16356. throw ex;
  16357. }
  16358. }
  16359. /// <summary>
  16360. /// 获取成型存坯汇总表-成型工号存坯汇总表
  16361. /// </summary>
  16362. /// <param name="cre"></param>
  16363. /// <param name="sUserInfo"></param>
  16364. /// <returns></returns>
  16365. public static ServiceResultEntity GetRPT030116UserData(ClientRequestEntity cre, SUserInfo sUserInfo)
  16366. {
  16367. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16368. try
  16369. {
  16370. ServiceResultEntity sre = new ServiceResultEntity();
  16371. /*
  16372. string sqlString =
  16373. "SELECT gdrd.goodsid\n" +
  16374. " ,gdrd.goodscode\n" +
  16375. " ,gdrd.groutinglineid\n" +
  16376. " ,gdrd.groutinglinecode\n" +
  16377. " ,gdrd.userid\n" +
  16378. " ,gdrd.usercode\n" +
  16379. " ,gdrd.gddc rdcount -- 存坯数\n" +
  16380. " ,rdd.gldcount -- 模具数\n" +
  16381. " , CASE\n" +
  16382. " WHEN rdd.gldcount IS NOT NULL AND rdd.gldcount > 0 THEN\n" +
  16383. " round(gdrd.gddc / rdd.gldcount, 2)\n" +
  16384. " ELSE\n" +
  16385. " NULL\n" +
  16386. " END rddays -- 存坯天数\n" +
  16387. " ,gdrd.reserveddays -- 应存天数\n" +
  16388. " ,(gdrd.gddc - gdrd.reserveddays * rdd.gldcount) ProfitNum --盈亏坯数\n" +
  16389. " FROM (SELECT gdd.goodsid\n" +
  16390. " ,gdd.goodscode\n" +
  16391. " ,gdd.groutinglineid\n" +
  16392. " ,gdd.groutinglinecode\n" +
  16393. " ,gdd.userid\n" +
  16394. " ,gdd.usercode\n" +
  16395. " ,g.reserveddays\n" +
  16396. " ,COUNT(*) gddc\n" +
  16397. " FROM tp_pm_groutingdailydetail gdd\n" +
  16398. " INNER JOIN tp_mst_goods g\n" +
  16399. " ON g.goodsid = gdd.goodsid\n" +
  16400. " INNER JOIN tp_mst_goodstype gt\n" +
  16401. " ON g.goodstypeid = gt.goodstypeid\n" +
  16402. " WHERE gdd.accountid = :accountid\n" +
  16403. " AND gdd.valueflag = '1'\n" +
  16404. " AND gdd.groutingflag = '1'\n" +
  16405. " AND gdd.barcode IS NOT NULL\n" +
  16406. " AND gdd.scrapflag = '0'\n" +
  16407. " AND gdd.deliverflag = '0'\n" +
  16408. " AND (:LineCode IS NULL OR\n" +
  16409. " instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  16410. " AND (:UserCode IS NULL OR instr(gdd.UserCode, :UserCode) > 0)\n" +
  16411. " AND (:GoodsCode IS NULL OR instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  16412. " AND (:GoodsTypeCode IS NULL OR\n" +
  16413. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  16414. " AND (:DateBegin IS NULL OR\n" +
  16415. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)\n" +
  16416. " GROUP BY gdd.goodsid\n" +
  16417. " ,gdd.goodscode\n" +
  16418. " ,gdd.groutinglineid\n" +
  16419. " ,gdd.groutinglinecode\n" +
  16420. " ,gdd.userid\n" +
  16421. " ,gdd.usercode\n" +
  16422. " ,g.reserveddays) gdrd\n" +
  16423. " LEFT JOIN (SELECT gld.goodsid\n" +
  16424. " ,gld.groutinglineid\n" +
  16425. " ,COUNT(*) gldcount\n" +
  16426. " FROM tp_pc_groutinglinedetail gld\n" +
  16427. " INNER JOIN tp_pc_groutingline gl\n" +
  16428. " ON gl.groutinglineid = gld.groutinglineid\n" +
  16429. " WHERE gld.valueflag = '1'\n" +
  16430. " AND gld.gmouldstatus = 1\n" +
  16431. " AND gl.accountid = :accountid\n" +
  16432. " AND gl.valueflag = '1'\n" +
  16433. " AND gl.gmouldstatus = 1\n" +
  16434. " GROUP BY gld.goodsid\n" +
  16435. " ,gld.groutinglineid\n" +
  16436. " ) rdd\n" +
  16437. " ON rdd.goodsid = gdrd.goodsid\n" +
  16438. " AND rdd.groutinglineid = gdrd.groutinglineid\n" +
  16439. " ORDER BY gdrd.goodscode\n" +
  16440. " ,gdrd.groutinglinecode, gdrd.usercode" +
  16441. "";
  16442. */
  16443. string sqlString =
  16444. "SELECT grouping_id(t.goodstypecode2, t.goodsid) gid\n" +
  16445. " ,t.goodstypecode2\n" +
  16446. " ,decode(grouping_id(t.goodstypecode2, t.goodsid),\n" +
  16447. " 3,\n" +
  16448. " '总计',\n" +
  16449. " 1,\n" +
  16450. " '合计[' || t.goodstypename2 || ']',\n" +
  16451. " t.goodstypename2) goodstypename2\n" +
  16452. " ,t.goodsid\n" +
  16453. " ,t.goodscode\n" +
  16454. " ,t.groutinglineid\n" +
  16455. " ,t.groutinglinecode\n" +
  16456. " ,t.userid\n" +
  16457. " ,t.usercode\n" +
  16458. " ,t.MONITORName\n" +
  16459. " ,SUM(t.rdcount) rdcount\n" +
  16460. " ,t.gldcount -- 模具数\n" +
  16461. " ,t.rddays -- 存坯天数\n" +
  16462. " ,t.reserveddays -- 应存天数\n" +
  16463. " ,SUM(t.ProfitNum) ProfitNum\n" +
  16464. " FROM (SELECT gt2.goodstypecode goodstypecode2\n" +
  16465. " ,gt2.goodstypename goodstypename2\n" +
  16466. " ,gdrd.goodsid\n" +
  16467. " ,gdrd.goodscode\n" +
  16468. " ,gdrd.groutinglineid\n" +
  16469. " ,gdrd.groutinglinecode\n" +
  16470. " ,gdrd.userid\n" +
  16471. " ,gdrd.usercode\n" +
  16472. " ,mu.username MONITORName\n" +
  16473. " ,gdrd.gddc rdcount -- 存坯数\n" +
  16474. " ,rdd.gldcount -- 模具数\n" +
  16475. " , CASE\n" +
  16476. " WHEN rdd.gldcount IS NOT NULL AND rdd.gldcount > 0 THEN\n" +
  16477. " round(gdrd.gddc / rdd.gldcount, 2)\n" +
  16478. " ELSE\n" +
  16479. " NULL\n" +
  16480. " END rddays -- 存坯天数\n" +
  16481. " ,gdrd.reserveddays -- 应存天数\n" +
  16482. " ,(gdrd.gddc - gdrd.reserveddays * rdd.gldcount) ProfitNum --盈亏坯数\n" +
  16483. " FROM (SELECT gdd.goodsid\n" +
  16484. " ,gdd.goodscode\n" +
  16485. " ,gdd.groutinglineid\n" +
  16486. " ,gdd.groutinglinecode\n" +
  16487. " ,gdd.userid\n" +
  16488. " ,gdd.usercode\n" +
  16489. " ,g.reserveddays\n" +
  16490. " ,substr(gt.goodstypecode, 1, 6) goodstypecode2\n" +
  16491. " ,COUNT(*) gddc\n" +
  16492. " FROM tp_pm_groutingdailydetail gdd\n" +
  16493. " INNER JOIN tp_mst_goods g\n" +
  16494. " ON g.goodsid = gdd.goodsid\n" +
  16495. " INNER JOIN tp_mst_goodstype gt\n" +
  16496. " ON g.goodstypeid = gt.goodstypeid\n" +
  16497. " left JOIN tp_pm_inproduction inp\n" +
  16498. " ON inp.barcode = gdd.barcode\n" +
  16499. //20210113
  16500. " left JOIN tp_pc_procedure p\n" +
  16501. " ON inp.procedureid = p.procedureid\n" +
  16502. //end
  16503. " WHERE gdd.accountid = :accountid\n" +
  16504. " AND gdd.valueflag = '1'\n" +
  16505. " AND gdd.groutingflag = '1'\n" +
  16506. " AND gdd.barcode IS NOT NULL\n" +
  16507. " AND gdd.scrapflag = '0'\n" +
  16508. " AND gdd.deliverflag = '0'\n" +
  16509. " AND (gdd.beginningflag='0' or inp.barcode is not null)\n" +
  16510. " AND (:LineCode IS NULL OR\n" +
  16511. " instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  16512. " AND (:UserCode IS NULL OR\n" +
  16513. " instr(gdd.UserCode, :UserCode) > 0)\n" +
  16514. " AND (:GoodsCode IS NULL OR\n" +
  16515. " instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  16516. " AND (:GoodsTypeCode IS NULL OR\n" +
  16517. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  16518. " AND (:DateBegin IS NULL OR\n" +
  16519. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)\n" +
  16520. //20210113
  16521. " AND (P.procedurename IN('3#阴干区(入)','3#预干区(入)','3#烘干区(入)','3#烘干区(出)') or p.procedurename IS NULL)" +
  16522. //end
  16523. " GROUP BY gt.goodstypecode\n" +
  16524. " ,gdd.goodsid\n" +
  16525. " ,gdd.goodscode\n" +
  16526. " ,gdd.groutinglineid\n" +
  16527. " ,gdd.groutinglinecode\n" +
  16528. " ,gdd.userid\n" +
  16529. " ,gdd.usercode\n" +
  16530. " ,g.reserveddays) gdrd\n" +
  16531. " LEFT JOIN (SELECT gld.goodsid\n" +
  16532. " ,gld.groutinglineid\n" +
  16533. " ,gl.MONITORID\n" +
  16534. " ,COUNT(*) gldcount\n" +
  16535. " FROM tp_pc_groutinglinedetail gld\n" +
  16536. " INNER JOIN tp_pc_groutingline gl\n" +
  16537. " ON gl.groutinglineid = gld.groutinglineid\n" +
  16538. " WHERE gld.valueflag = '1'\n" +
  16539. " AND gld.gmouldstatus = 1\n" +
  16540. " AND gl.accountid = :accountid\n" +
  16541. " AND gl.valueflag = '1'\n" +
  16542. " AND gl.gmouldstatus = 1\n" +
  16543. " GROUP BY gld.goodsid, gld.groutinglineid,gl.MONITORID) rdd\n" +
  16544. " ON rdd.goodsid = gdrd.goodsid\n" +
  16545. " AND rdd.groutinglineid = gdrd.groutinglineid\n" +
  16546. // 成型班长
  16547. " LEFT JOIN tp_mst_user mu\n" +
  16548. " ON mu.userid = rdd.MONITORID\n" +
  16549. " INNER JOIN tp_mst_goodstype gt2\n" +
  16550. " ON gt2.accountid = :accountid\n" +
  16551. " AND gt2.goodstypecode = gdrd.goodstypecode2\n" +
  16552. " ORDER BY gt2.goodstypecode\n" +
  16553. " ,gdrd.goodscode\n" +
  16554. " ,gdrd.groutinglinecode\n" +
  16555. " ,gdrd.usercode) t\n" +
  16556. " GROUP BY GROUPING SETS((t.goodstypecode2, t.goodstypename2, t.goodsid, t.goodscode, t.groutinglineid, t.groutinglinecode, t.userid, t.usercode,t.MONITORName, t.gldcount, t.rddays, t.reserveddays),(t.goodstypecode2, t.goodstypename2),())";
  16557. OracleParameter[] oracleParameter = new OracleParameter[]
  16558. {
  16559. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16560. new OracleParameter(":DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  16561. new OracleParameter(":DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  16562. new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  16563. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  16564. new OracleParameter(":LineCode",OracleDbType.NVarchar2, cre.Properties["LineCode"], ParameterDirection.Input),
  16565. new OracleParameter(":UserCode",OracleDbType.NVarchar2, cre.Properties["UserCode"], ParameterDirection.Input),
  16566. };
  16567. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  16568. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16569. {
  16570. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16571. }
  16572. sre.Data = result;
  16573. return sre;
  16574. }
  16575. catch (Exception ex)
  16576. {
  16577. if (oracleConn.ConnState == ConnectionState.Open)
  16578. {
  16579. oracleConn.Close();
  16580. }
  16581. throw ex;
  16582. }
  16583. }
  16584. /// <summary>
  16585. /// 获取成型存坯汇总表-成型存坯明细表
  16586. /// </summary>
  16587. /// <param name="cre"></param>
  16588. /// <param name="sUserInfo"></param>
  16589. /// <returns></returns>
  16590. public static ServiceResultEntity GetRPT030116DData(ClientRequestEntity cre, SUserInfo sUserInfo)
  16591. {
  16592. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16593. try
  16594. {
  16595. ServiceResultEntity sre = new ServiceResultEntity();
  16596. string sqlString = "SELECT gdd.barcode\n" +
  16597. //" ,gdd.groutinglineid\n" +
  16598. " ,gdd.groutinglinecode\n" +
  16599. " ,gdd.GroutingMouldCode\n" +
  16600. //" ,gdd.goodsid\n" +
  16601. " ,gdd.goodscode\n" +
  16602. //" ,gdd.userid\n" +
  16603. " ,gdd.usercode\n" +
  16604. " ,gdd.groutingdate\n" +
  16605. " ,p.procedurename\n" +
  16606. // 成型班长
  16607. " ,mu.username as MONITORName" +
  16608. " FROM tp_pm_groutingdailydetail gdd\n" +
  16609. " INNER JOIN tp_mst_goods g\n" +
  16610. " ON g.goodsid = gdd.goodsid\n" +
  16611. // 成型线
  16612. " LEFT JOIN tp_pc_groutingline gl" +
  16613. " ON gl.groutinglineid = GDD.GroutingLineID" +
  16614. // 成型班长
  16615. " LEFT JOIN tp_mst_user mu" +
  16616. " ON mu.userid = gl.MONITORID " +
  16617. " INNER JOIN tp_mst_goodstype gt\n" +
  16618. " ON g.goodstypeid = gt.goodstypeid\n" +
  16619. " left JOIN tp_pm_inproduction inp\n" +
  16620. " ON inp.barcode = gdd.barcode\n" +
  16621. " left JOIN tp_pc_procedure p\n" +
  16622. " ON inp.procedureid = p.procedureid\n" +
  16623. " WHERE gdd.accountid = :accountid\n" +
  16624. " AND gdd.valueflag = '1'\n" +
  16625. " AND gdd.groutingflag = '1'\n" +
  16626. " AND gdd.barcode IS NOT NULL\n" +
  16627. " AND gdd.scrapflag = '0'\n" +
  16628. " AND gdd.deliverflag = '0'\n" +
  16629. " AND (gdd.beginningflag='0' or inp.barcode is not null)\n" +
  16630. " AND (:LineID IS NULL OR gdd.groutinglineid = :LineID)\n" +
  16631. " AND (:UserID IS NULL OR gdd.UserID = :UserID)\n" +
  16632. " AND (:GoodsID IS NULL OR gdd.goodsid = :GoodsID)\n" +
  16633. " AND (:LineCode IS NULL OR instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  16634. " AND (:UserCode IS NULL OR instr(gdd.UserCode, :UserCode) > 0)\n" +
  16635. " AND (:GoodsCode IS NULL OR instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  16636. " AND (:GoodsTypeCode IS NULL OR\n" +
  16637. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  16638. " AND (:DateBegin IS NULL OR\n" +
  16639. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)" +
  16640. //20210113
  16641. " AND (P.procedurename IN('3#阴干区(入)','3#预干区(入)','3#烘干区(入)','3#烘干区(出)') or p.procedurename IS NULL)" +
  16642. //end
  16643. " ORDER BY gdd.barcode\n" +
  16644. //" ,gdd.goodscode, gdrd.groutinglinecode, gdrd.usercode" +
  16645. "";
  16646. OracleParameter[] oracleParameter = new OracleParameter[]
  16647. {
  16648. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16649. new OracleParameter(":DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  16650. new OracleParameter(":DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  16651. new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  16652. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  16653. new OracleParameter(":LineCode",OracleDbType.NVarchar2, cre.Properties["LineCode"], ParameterDirection.Input),
  16654. new OracleParameter(":UserCode",OracleDbType.NVarchar2, cre.Properties["UserCode"], ParameterDirection.Input),
  16655. new OracleParameter(":GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
  16656. new OracleParameter(":LineID",OracleDbType.Int32, cre.Properties["LineID"], ParameterDirection.Input),
  16657. new OracleParameter(":UserID",OracleDbType.Int32, cre.Properties["UserID"], ParameterDirection.Input),
  16658. };
  16659. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  16660. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16661. {
  16662. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16663. }
  16664. sre.Data = result;
  16665. return sre;
  16666. }
  16667. catch (Exception ex)
  16668. {
  16669. if (oracleConn.ConnState == ConnectionState.Open)
  16670. {
  16671. oracleConn.Close();
  16672. }
  16673. throw ex;
  16674. }
  16675. }
  16676. /// <summary>
  16677. /// 年度各工序月产量统计表
  16678. /// </summary>
  16679. /// <param name="cre"></param>
  16680. /// <param name="sUserInfo"></param>
  16681. /// <returns></returns>
  16682. public static ServiceResultEntity GetRPT030118Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16683. {
  16684. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16685. try
  16686. {
  16687. ServiceResultEntity sre = new ServiceResultEntity();
  16688. string sump = INIUtility.Read("ReportParameters", "RPT_030118", AppDomain.CurrentDomain.BaseDirectory + "Config.ini");
  16689. string sqlString = "select gt2.goodstypecode\n" +
  16690. " ,nvl2(gt2.goodstypename\n" +
  16691. " ,nvl2(t.procedureid\n" +
  16692. " ,gt2.goodstypename\n" +
  16693. " ,'小计[' || gt2.goodstypename || ']')\n" +
  16694. " ,'总计') goodstypename\n" +
  16695. " ,p.displayno\n" +
  16696. " ,decode(t.procedureid, null, '--', 0, '注浆', p.procedurename) procedurename\n" +
  16697. " ,sum(decode(t.mm, '12', t.pcount, 0)) m12\n" +
  16698. " ,sum(decode(t.mm, '01', t.pcount, 0)) m01\n" +
  16699. " ,sum(decode(t.mm, '02', t.pcount, 0)) m02\n" +
  16700. " ,sum(decode(t.mm, '03', t.pcount, 0)) m03\n" +
  16701. " ,sum(decode(t.mm, '04', t.pcount, 0)) m04\n" +
  16702. " ,sum(decode(t.mm, '05', t.pcount, 0)) m05\n" +
  16703. " ,sum(decode(t.mm, '06', t.pcount, 0)) m06\n" +
  16704. " ,sum(decode(t.mm, '07', t.pcount, 0)) m07\n" +
  16705. " ,sum(decode(t.mm, '08', t.pcount, 0)) m08\n" +
  16706. " ,sum(decode(t.mm, '09', t.pcount, 0)) m09\n" +
  16707. " ,sum(decode(t.mm, '10', t.pcount, 0)) m10\n" +
  16708. " ,sum(decode(t.mm, '11', t.pcount, 0)) m11\n" +
  16709. " ,sum(t.pcount) msum\n" +
  16710. " from (select --substr(gt.goodstypecode, 1, 6) gtcode2\n" +
  16711. " gt.goodstypecode\n" +
  16712. " ,0 procedureid\n" +
  16713. " ,to_char(pd.groutingdate, 'mm') mm\n" +
  16714. " ,count(*) pcount\n" +
  16715. " from tp_pm_groutingdailydetail pd\n" +
  16716. " inner join tp_mst_goods g\n" +
  16717. " on g.goodsid = pd.goodsid\n" +
  16718. //xuwei add 2021-03-15 内胆 座圈不算里面
  16719. " and g.SCRAPSUMFLAG = '1' \n" +
  16720. " inner join tp_mst_goodstype gt\n" +
  16721. " on gt.goodstypeid = g.goodstypeid\n" +
  16722. " where pd.accountid = :accountid\n" +
  16723. " and pd.groutingflag = '1'\n" +
  16724. " and pd.groutingdate >= :begindate\n" +
  16725. " and pd.groutingdate < :enddate\n" +
  16726. " group by --substr(gt.goodstypecode, 1, 6)\n" +
  16727. " gt.goodstypecode\n" +
  16728. " ,to_char(pd.groutingdate, 'mm')\n" +
  16729. " union all\n" +
  16730. " select --substr(gt.goodstypecode, 1, 6) gtcode2\n" +
  16731. " gt.goodstypecode\n" +
  16732. " ,pd.procedureid\n" +
  16733. " ,to_char(pd.createtime, 'mm') mm\n" +
  16734. " ,count(*) pcount\n" +
  16735. " from tp_pm_productiondata pd\n" +
  16736. " inner join tp_mst_goods g\n" +
  16737. " on g.goodsid = pd.goodsid\n" +
  16738. //xuwei add 2021-03-15 内胆 座圈不算里面
  16739. " and g.SCRAPSUMFLAG = '1' \n" +
  16740. " inner join tp_mst_goodstype gt\n" +
  16741. " on gt.goodstypeid = g.goodstypeid\n" +
  16742. " where pd.accountid = :accountid\n" +
  16743. " and pd.createtime >= :begindate\n" +
  16744. " and pd.createtime < :enddate\n" +
  16745. (string.IsNullOrWhiteSpace(sump) ? "" : " and pd.procedureid in (" + sump + ")\n") +
  16746. " group by --substr(gt.goodstypecode, 1, 6)\n" +
  16747. " gt.goodstypecode\n" +
  16748. " ,pd.procedureid\n" +
  16749. " ,to_char(pd.createtime, 'mm')" +
  16750. " union all\n" +
  16751. " select --substr(gt.goodstypecode, 1, 6) gtcode2\n" +
  16752. " gt.goodstypecode\n" +
  16753. " ,pd.procedureid\n" +
  16754. " ,to_char(pd.BACKOUTTIME, 'mm') mm\n" +
  16755. " ,count(*) pcount\n" +
  16756. " from tp_pm_productiondata pd\n" +
  16757. " inner join tp_mst_goods g\n" +
  16758. " on g.goodsid = pd.goodsid\n" +
  16759. //xuwei add 2021-03-15 内胆 座圈不算里面
  16760. " and g.SCRAPSUMFLAG = '1' \n" +
  16761. " inner join tp_mst_goodstype gt\n" +
  16762. " on gt.goodstypeid = g.goodstypeid\n" +
  16763. " where pd.accountid = :accountid\n" +
  16764. " and pd.valueflag = '0'\n" +
  16765. " and pd.BACKOUTTIME >= :begindate\n" +
  16766. " and pd.BACKOUTTIME < :enddate\n" +
  16767. (string.IsNullOrWhiteSpace(sump) ? "" : " and pd.procedureid in (" + sump + ")\n") +
  16768. " group by --substr(gt.goodstypecode, 1, 6)\n" +
  16769. " gt.goodstypecode\n" +
  16770. " ,pd.procedureid\n" +
  16771. " ,to_char(pd.BACKOUTTIME, 'mm')) t\n" +
  16772. " inner join tp_mst_goodstype gt2\n" +
  16773. " on gt2.accountid = 1\n" +
  16774. " and gt2.goodstypecode = substr(t.goodstypecode, 1, 6) --t.gtcode2\n" +
  16775. " left join tp_pc_procedure p\n" +
  16776. " on p.procedureid = t.procedureid\n";
  16777. if (cre.Properties["workshop"] != null && cre.Properties["workshop"].ToString() != "")
  16778. {
  16779. if (cre.Properties["workshop"].ToString() == "3车间")
  16780. {
  16781. cre.Properties["workshop"] = "1&2#";
  16782. }
  16783. if (cre.Properties["workshop"].ToString() == "1&2车间")
  16784. {
  16785. cre.Properties["workshop"] = "3#";
  16786. }
  16787. sqlString += "WHERE PROCEDURENAME not LIKE '%'|| :workshop ||'%'";
  16788. }
  16789. sqlString += " group by grouping sets((gt2.goodstypecode, gt2.goodstypename, p.displayno, p.procedurename, t.procedureid),(gt2.goodstypecode, gt2.goodstypename),())";
  16790. OracleParameter[] oracleParameter = new OracleParameter[]
  16791. {
  16792. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16793. new OracleParameter(":begindate",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  16794. new OracleParameter(":enddate",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  16795. new OracleParameter(":workshop",OracleDbType.Varchar2, cre.Properties["workshop"].ToString(), ParameterDirection.Input),
  16796. };
  16797. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  16798. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16799. {
  16800. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16801. }
  16802. sre.Data = result;
  16803. return sre;
  16804. }
  16805. catch (Exception ex)
  16806. {
  16807. throw ex;
  16808. }
  16809. finally
  16810. {
  16811. oracleConn?.Close();
  16812. }
  16813. }
  16814. /// <summary>
  16815. /// 半检返修缺陷汇总表
  16816. /// </summary>
  16817. /// <param name="cre"></param>
  16818. /// <param name="sUserInfo"></param>
  16819. /// <returns></returns>
  16820. public static ServiceResultEntity GetRPT030119Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16821. {
  16822. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16823. try
  16824. {
  16825. ServiceResultEntity sre = new ServiceResultEntity();
  16826. string sqlString = "select dp.defectpositionid\n" +
  16827. " ,dp.defectpositioncode\n" +
  16828. " ,dp.defectpositionname\n" +
  16829. " ,'D_' || dp.defectpositionid colname\n" +
  16830. " from tp_mst_scdefectposition dp\n" +
  16831. " where dp.valueflag = '1'\n" +
  16832. " and dp.accountid = " + sUserInfo.AccountID + "\n";
  16833. if (!string.IsNullOrWhiteSpace(cre.Properties["defectpositionIDS"] + ""))
  16834. {
  16835. sqlString += " and instr(','||'" + cre.Properties["defectpositionIDS"] + "'||',', ','||dp.defectpositionid||',') > 0 \n";
  16836. }
  16837. sqlString += " order by dp.displayno";
  16838. DataTable scdTable = oracleConn.GetSqlResultToDt(sqlString);
  16839. if (scdTable == null || scdTable.Rows.Count == 0)
  16840. {
  16841. return sre;
  16842. }
  16843. List<string> pivotFor = new List<string>();
  16844. foreach (DataRow item in scdTable.Rows)
  16845. {
  16846. pivotFor.Add($"{item["defectpositionid"]} as {item["colname"]}");
  16847. }
  16848. List<OracleParameter> oracleParameters = new List<OracleParameter>();
  16849. oracleParameters.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  16850. sqlString = "select *\n" +
  16851. " from (select srd.defectid\n" +
  16852. " ,scd.defectcode\n" +
  16853. " ,scd.defectname\n" +
  16854. " ,nvl(srd.defectpositionid, 0) defectpositionid\n" +
  16855. " ,count(srd.semireworkdefectid) cc\n" +
  16856. " from TP_PM_SEMIREWORKDEFECT srd\n" +
  16857. " inner join TP_PM_SEMIREWORK sr\n" +
  16858. " on sr.SEMIREWORKID = srd.SEMIREWORKID\n" +
  16859. " left join tp_mst_semicheckdefect scd\n" +
  16860. " on scd.defectid = srd.defectid\n" +
  16861. " left join tp_mst_scdefectposition scdp\n" +
  16862. " on scdp.defectpositionid = srd.defectpositionid\n" +
  16863. " left join TP_MST_GOODS g on g.GOODSID = sr.GOODSID\n" + //xuwei add 2019-11-29
  16864. " left join TP_MST_GOODSTYPE gt on g.GOODSTYPEID = gt.GOODSTYPEID\n" + //xuwei add 2019-11-29
  16865. " where srd.valueflag = '1'\n" +
  16866. " and sr.BACKOUTFLAG = '0'\n" +
  16867. " and sr.valueflag = '1'\n" +
  16868. " and sr.accountid = :accountid\n";
  16869. // 半检日期
  16870. if (cre.Properties["SemireWorkTimeBegin"] != null)
  16871. {
  16872. sqlString += " and sr.SEMIREWORKTIME >= :SemireWorkTimeBegin\n";
  16873. oracleParameters.Add(new OracleParameter(":SemireWorkTimeBegin", cre.Properties["SemireWorkTimeBegin"]));
  16874. }
  16875. if (cre.Properties["SemireWorkTimeEnd"] != null)
  16876. {
  16877. sqlString += " and sr.SEMIREWORKTIME < :SemireWorkTimeEnd\n";
  16878. oracleParameters.Add(new OracleParameter(":SemireWorkTimeEnd", cre.Properties["SemireWorkTimeEnd"]));
  16879. }
  16880. // 产品编码 GOODSCODE
  16881. if (!string.IsNullOrWhiteSpace(cre.Properties["GOODSCODE"] + ""))
  16882. {
  16883. sqlString += " and instr(','||:GOODSCODE||',' , ','||sr.GOODSCODE||',') > 0 \n";
  16884. oracleParameters.Add(new OracleParameter(":GOODSCODE", cre.Properties["GOODSCODE"]));
  16885. }
  16886. // 成型工号 GROUTINGUSERCODE
  16887. if (!string.IsNullOrWhiteSpace(cre.Properties["GROUTINGUSERCODE"] + ""))
  16888. {
  16889. //xuwei modify 2019-11-13
  16890. //sqlString += " and instr(sr.GROUTINGUSERCODE,:GROUTINGUSERCODE) > 0 \n";
  16891. sqlString += " and instr(','||:GROUTINGUSERCODE||',' , ','||sr.GROUTINGUSERCODE||',') > 0 \n";
  16892. //xuwei end
  16893. oracleParameters.Add(new OracleParameter(":GROUTINGUSERCODE", cre.Properties["GROUTINGUSERCODE"]));
  16894. }
  16895. // 半检工号 SEMIREWORKUSERCODE
  16896. if (!string.IsNullOrWhiteSpace(cre.Properties["SEMIREWORKUSERCODE"] + ""))
  16897. {
  16898. //xuwei modify 2019-11-13
  16899. //sqlString += " and instr(sr.SEMIREWORKUSERCODE,:SEMIREWORKUSERCODE) > 0 \n";
  16900. sqlString += " and instr(','||:SEMIREWORKUSERCODE||',' , ','||sr.SEMIREWORKUSERCODE||',') > 0 \n";
  16901. //xuwei end
  16902. oracleParameters.Add(new OracleParameter(":SEMIREWORKUSERCODE", cre.Properties["SEMIREWORKUSERCODE"]));
  16903. }
  16904. // 缺陷位置 scdp.defectpositionname
  16905. if (!string.IsNullOrWhiteSpace(cre.Properties["defectpositionname"] + ""))
  16906. {
  16907. sqlString += " and instr(scdp.defectpositionname,:defectpositionname) > 0 \n";
  16908. oracleParameters.Add(new OracleParameter(":defectpositionname", cre.Properties["defectpositionname"]));
  16909. }
  16910. if (!string.IsNullOrWhiteSpace(cre.Properties["defectpositionIDS"] + ""))
  16911. {
  16912. sqlString += " and instr(','||:defectpositionIDS||',', ','||srd.defectpositionid||',') > 0 \n";
  16913. oracleParameters.Add(new OracleParameter(":defectpositionIDS", cre.Properties["defectpositionIDS"]));
  16914. }
  16915. // 缺陷名称 scd.defectname
  16916. if (!string.IsNullOrWhiteSpace(cre.Properties["defectname"] + ""))
  16917. {
  16918. sqlString += " and instr(scd.defectname,:defectname) > 0 \n";
  16919. oracleParameters.Add(new OracleParameter(":defectname", cre.Properties["defectname"]));
  16920. }
  16921. // 缺陷编码 scd.defectcode
  16922. if (!string.IsNullOrWhiteSpace(cre.Properties["defectcode"] + ""))
  16923. {
  16924. sqlString += " and scd.defectcode = :defectcode \n";
  16925. oracleParameters.Add(new OracleParameter(":defectcode", cre.Properties["defectcode"]));
  16926. }
  16927. //产品类别ID xuwei add 2019-11-29 g.GOODSTYPEID
  16928. if (!string.IsNullOrWhiteSpace(cre.Properties["GOODSTYPEID"] + ""))
  16929. {
  16930. sqlString += " and instr(','||:GOODSTYPEID||',' , ','||g.GOODSTYPEID||',') > 0 \n";
  16931. oracleParameters.Add(new OracleParameter(":GOODSTYPEID", cre.Properties["GOODSTYPEID"]));
  16932. }
  16933. //产品类别Code xuwei add 2019-11-29 g.GOODSTYPECODE
  16934. if (!string.IsNullOrWhiteSpace(cre.Properties["GOODSTYPECODE"] + ""))
  16935. {
  16936. sqlString += " and instr(gt.GOODSTYPECODE , :GOODSTYPECODE) = 1 \n";
  16937. oracleParameters.Add(new OracleParameter(":GOODSTYPECODE", cre.Properties["GOODSTYPECODE"]));
  16938. }
  16939. //返修工序 xuwei add 2019-11-29 sr.REWORKPROCEDUREID
  16940. if (!string.IsNullOrWhiteSpace(cre.Properties["REWORKPROCEDUREID"] + ""))
  16941. {
  16942. sqlString += " and instr(','||:REWORKPROCEDUREID||',' , ','||sr.REWORKPROCEDUREID||',') > 0 \n";
  16943. oracleParameters.Add(new OracleParameter(":REWORKPROCEDUREID", cre.Properties["REWORKPROCEDUREID"]));
  16944. }
  16945. sqlString +=
  16946. " group by grouping sets((srd.defectid, scd.defectcode, scd.defectname, srd.defectpositionid),(srd.defectid, scd.defectcode, scd.defectname),(srd.defectpositionid),())) t\n" +
  16947. "pivot(sum(cc)\n" +
  16948. " for defectpositionid in(" + string.Join(",", pivotFor) + ", 0 AS D_0))\n" +
  16949. " order by defectid";
  16950. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameters.ToArray());
  16951. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16952. {
  16953. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16954. return sre;
  16955. }
  16956. DataTable table = result.Tables[0];
  16957. DataRow dataRow = table.Rows[table.Rows.Count - 1];
  16958. dataRow["defectname"] = "合计";
  16959. foreach (DataRow item in scdTable.Rows)
  16960. {
  16961. string colname = item["colname"] + "";
  16962. if (table.Columns.Contains(colname))
  16963. {
  16964. if (dataRow[colname] == null || dataRow[colname] == DBNull.Value)
  16965. {
  16966. table.Columns.Remove(colname);
  16967. }
  16968. else
  16969. {
  16970. table.Columns[colname].Caption = item["defectpositionname"] + "";
  16971. }
  16972. }
  16973. }
  16974. table.Columns["D_0"].Caption = "合计";
  16975. sre.Data = result;
  16976. return sre;
  16977. }
  16978. catch (Exception ex)
  16979. {
  16980. throw ex;
  16981. }
  16982. finally
  16983. {
  16984. oracleConn?.Close();
  16985. }
  16986. }
  16987. /// <summary>
  16988. /// 模具注浆分析表
  16989. /// </summary>
  16990. /// <param name="cre"></param>
  16991. /// <param name="sUserInfo"></param>
  16992. /// <returns></returns>
  16993. public static ServiceResultEntity GetRPT040111Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16994. {
  16995. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16996. try
  16997. {
  16998. ServiceResultEntity sre = new ServiceResultEntity();
  16999. OracleParameter[] oracleParameter = new OracleParameter[]
  17000. {
  17001. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17002. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["GroutingDateBegin"], ParameterDirection.Input),
  17003. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["GroutingDateEnd"], ParameterDirection.Input),
  17004. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  17005. new OracleParameter("in_MouldBarcode",OracleDbType.Varchar2, cre.Properties["MouldBarcode"], ParameterDirection.Input),
  17006. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  17007. };
  17008. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_Mould_Groutingnum_AN", oracleParameter);
  17009. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  17010. {
  17011. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17012. }
  17013. sre.Data = result;
  17014. oracleConn.Commit();
  17015. return sre;
  17016. }
  17017. catch (Exception ex)
  17018. {
  17019. if (oracleConn.ConnState == ConnectionState.Open)
  17020. {
  17021. oracleConn.Disconnect();
  17022. }
  17023. throw ex;
  17024. }
  17025. }
  17026. /// <summary>
  17027. /// 成检产品预算分析表
  17028. /// </summary>
  17029. /// <param name="cre"></param>
  17030. /// <param name="sUserInfo"></param>
  17031. /// <returns></returns>
  17032. public static ServiceResultEntity GetRPT040112Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17033. {
  17034. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17035. try
  17036. {
  17037. ServiceResultEntity sre = new ServiceResultEntity();
  17038. OracleParameter[] oracleParameter = new OracleParameter[]
  17039. {
  17040. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17041. new OracleParameter("in_InTimeBegin",OracleDbType.Date, cre.Properties["InTimeBegin"], ParameterDirection.Input),
  17042. new OracleParameter("in_InTimeEnd",OracleDbType.Date, cre.Properties["InTimeEnd"], ParameterDirection.Input),
  17043. new OracleParameter("in_OutTimeBegin",OracleDbType.Date, cre.Properties["OutTimeBegin"], ParameterDirection.Input),
  17044. new OracleParameter("in_OutTimeEnd",OracleDbType.Date, cre.Properties["OutTimeEnd"], ParameterDirection.Input),
  17045. new OracleParameter("in_KilnID",OracleDbType.Int32, cre.Properties["KilnID"], ParameterDirection.Input),
  17046. new OracleParameter("in_KilnCarNumBegin",OracleDbType.Int32, cre.Properties["KilnCarNumBegin"], ParameterDirection.Input),
  17047. new OracleParameter("in_KilnCarNumEnd",OracleDbType.Int32, cre.Properties["KilnCarNumEnd"], ParameterDirection.Input),
  17048. new OracleParameter("out_KilnInfo",OracleDbType.RefCursor, null, ParameterDirection.Output),
  17049. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  17050. };
  17051. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_ExpectFinishedProduct", oracleParameter);
  17052. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  17053. {
  17054. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17055. }
  17056. sre.Data = result;
  17057. oracleConn.Commit();
  17058. return sre;
  17059. }
  17060. catch (Exception ex)
  17061. {
  17062. if (oracleConn.ConnState == ConnectionState.Open)
  17063. {
  17064. oracleConn.Disconnect();
  17065. }
  17066. throw ex;
  17067. }
  17068. }
  17069. /// <summary>
  17070. /// 成检产品预算分析表-设置
  17071. /// </summary>
  17072. /// <param name="cre"></param>
  17073. /// <param name="sUserInfo"></param>
  17074. /// <returns></returns>
  17075. public static ServiceResultEntity GetRPT04011201Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17076. {
  17077. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17078. try
  17079. {
  17080. ServiceResultEntity sre = new ServiceResultEntity();
  17081. string sqlString = "SELECT s.settingkey, s.procedureid, p.procedurecode, p.procedurename\n" +
  17082. " FROM tp_qco_prosetting s\n" +
  17083. " LEFT JOIN tp_pc_procedure p\n" +
  17084. " ON s.procedureid = p.procedureid\n" +
  17085. " WHERE s.accountid = :accountid";
  17086. OracleParameter[] oracleParameter = new OracleParameter[]
  17087. {
  17088. new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17089. };
  17090. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  17091. sqlString = "SELECT k.kilnid, k.kilncode, k.kilnname, k.turnoverinterval\n" +
  17092. " FROM tp_mst_kiln k\n" +
  17093. " WHERE k.accountid = :accountid\n" +
  17094. " AND k.valueflag = '1'";
  17095. DataTable dt = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  17096. result.Tables.Add(dt);
  17097. sre.Data = result;
  17098. return sre;
  17099. }
  17100. catch (Exception ex)
  17101. {
  17102. if (oracleConn.ConnState == ConnectionState.Open)
  17103. {
  17104. oracleConn.Close();
  17105. }
  17106. throw ex;
  17107. }
  17108. }
  17109. /// <summary>
  17110. /// 成检产品预算分析表-设置
  17111. /// </summary>
  17112. /// <param name="cre"></param>
  17113. /// <param name="sUserInfo"></param>
  17114. /// <returns></returns>
  17115. public static ServiceResultEntity SetRPT04011201Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17116. {
  17117. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17118. try
  17119. {
  17120. ServiceResultEntity sre = new ServiceResultEntity();
  17121. OracleParameter[] oracleParameter = null;
  17122. string sql = "update tp_qco_prosetting s set s.procedureid=:procedureid, s.procedurecode=:procedurecode\n" +
  17123. "where s.accountid=:accountid and s.settingkey=:settingkey";
  17124. foreach (DataRow item in cre.Data.Tables[0].Rows)
  17125. {
  17126. oracleParameter = new OracleParameter[]
  17127. {
  17128. new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17129. new OracleParameter("procedureid",OracleDbType.Int32, item["procedureid"], ParameterDirection.Input),
  17130. new OracleParameter("procedurecode",OracleDbType.NVarchar2, item["procedurecode"], ParameterDirection.Input),
  17131. new OracleParameter("settingkey",OracleDbType.NVarchar2, item["settingkey"], ParameterDirection.Input),
  17132. };
  17133. oracleConn.ExecuteNonQuery(sql, oracleParameter);
  17134. }
  17135. sql = "update tp_mst_kiln k set k.turnoverinterval=:turnoverinterval\n" +
  17136. "where k.accountid=:accountid and k.kilnid=:kilnid";
  17137. foreach (DataRow item in cre.Data.Tables[1].Rows)
  17138. {
  17139. oracleParameter = new OracleParameter[]
  17140. {
  17141. new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17142. new OracleParameter("turnoverinterval",OracleDbType.Int32, item["turnoverinterval"], ParameterDirection.Input),
  17143. new OracleParameter("kilnid",OracleDbType.Int32, item["kilnid"], ParameterDirection.Input),
  17144. };
  17145. oracleConn.ExecuteNonQuery(sql, oracleParameter);
  17146. }
  17147. oracleConn.Commit();
  17148. return sre;
  17149. }
  17150. catch (Exception ex)
  17151. {
  17152. if (oracleConn.ConnState == ConnectionState.Open)
  17153. {
  17154. oracleConn.Disconnect();
  17155. }
  17156. throw ex;
  17157. }
  17158. }
  17159. /// <summary>
  17160. /// 成品工艺质量表-恒洁三水
  17161. /// </summary>
  17162. /// <param name="cre"></param>
  17163. /// <param name="sUserInfo"></param>
  17164. /// <returns></returns>
  17165. public static ServiceResultEntity GetRPT040113Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17166. {
  17167. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17168. try
  17169. {
  17170. //int p1ID = 11; // 成检交接工序
  17171. //int p2ID = 12; // 成检登记工序
  17172. string gtcode2 = cre.Properties["gtcode2"] + "";
  17173. if (gtcode2 != "001001" && gtcode2 != "001002")
  17174. {
  17175. gtcode2 = "[ALL]";
  17176. }
  17177. string GoodsIDS = cre.Properties["GoodsIDS"] + "";
  17178. string KilnID = cre.Properties["KilnID"] + "";
  17179. string TestMouldFlag = cre.Properties["TestMouldFlag"] + "";
  17180. if (string.IsNullOrWhiteSpace(GoodsIDS))
  17181. {
  17182. GoodsIDS = "0";
  17183. }
  17184. int kid = 0;
  17185. if (!string.IsNullOrWhiteSpace(KilnID))
  17186. {
  17187. kid = Convert.ToInt32(KilnID);
  17188. }
  17189. // DEFECTDEDUCTIONNUM 缺陷扣除数 1,2,5
  17190. // goodsleveltypeid 次品 7
  17191. string sqlString = "select t.*\n" +
  17192. " ,gt.goodstypename\n" +
  17193. " ,nvl(outk.outkcount, 0) outkcount\n" +
  17194. " ,nvl(outk.outkcount, 0) - t.defectcount cc\n" +
  17195. " ,decode(nvl(outk.outkcount, 0)\n" +
  17196. " ,0\n" +
  17197. " ,to_number(null)\n" +
  17198. " ,round((nvl(outk.outkcount, 0) - t.defectcount) /\n" +
  17199. " nvl(outk.outkcount, 0)\n" +
  17200. " ,4)) ccp\n" +
  17201. " from (select 10 pcode\n" +
  17202. " ,'成型' pname\n" +
  17203. " ,gt2.goodstypecode gtcode2\n" +
  17204. " ,count(*) defectcount\n" +
  17205. " from tp_pm_defect dd\n" +
  17206. " inner join tp_pm_productiondata pd\n" +
  17207. " on dd.productiondataid = pd.productiondataid\n" +
  17208. " LEFT JOIN TP_MST_Defect mstd\n" +
  17209. " ON dd.DefectID = mstd.DefectID\n" +
  17210. " LEFT JOIN TP_MST_DefectType DT\n" +
  17211. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  17212. " inner join tp_mst_goods g\n" +
  17213. " on dd.goodsid = g.goodsid\n" +
  17214. " inner join tp_mst_goodstype gt\n" +
  17215. " on gt.goodstypeid = g.goodstypeid\n" +
  17216. " inner join tp_mst_goodstype gt2\n" +
  17217. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17218. " where dd.valueflag = '1'\n" +
  17219. " and dd.accountid = :accountid\n" +
  17220. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17221. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17222. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17223. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17224. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17225. // 恒洁三车间特殊处理(质量相关)
  17226. //" and dd.procedureid = :p2ID\n" +
  17227. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  17228. // end
  17229. " and pd.isrefire='0'\n" +
  17230. " AND DT.DEFECTTYPENAME LIKE '成型%'\n" +
  17231. " and pd.CREATETIME >= :timebegin\n" +
  17232. " and pd.CREATETIME < :timeend\n" +
  17233. ////" -- 交坯、干补\n" +
  17234. //" and dd.defectprocedureid in (1, 17, 18)\n" +
  17235. " and (dd.DEFECTUSERCODE LIKE 'F%' OR dd.DEFECTUSERCODE LIKE 'SGY%' OR dd.DEFECTUSERCODE LIKE 'SGB%' OR dd.DEFECTUSERCODE IN('244','245'))\n";
  17236. if (!TestMouldFlag.Equals(""))
  17237. {
  17238. if (TestMouldFlag.Equals("1"))
  17239. {
  17240. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17241. }
  17242. else
  17243. {
  17244. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17245. }
  17246. }
  17247. sqlString += " group by gt2.goodstypecode\n" +
  17248. " union all\n" +
  17249. " select 20 pcode\n" +
  17250. " ,'改洗' pname\n" +
  17251. " ,gt2.goodstypecode gtcode2\n" +
  17252. " ,count(*) defectcount\n" +
  17253. " from tp_pm_defect dd\n" +
  17254. " inner join tp_pm_productiondata pd\n" +
  17255. " on dd.productiondataid = pd.productiondataid\n" +
  17256. " LEFT JOIN TP_MST_Defect mstd\n" +
  17257. " ON dd.DefectID = mstd.DefectID\n" +
  17258. " LEFT JOIN TP_MST_DefectType DT\n" +
  17259. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  17260. " inner join tp_mst_goods g\n" +
  17261. " on dd.goodsid = g.goodsid\n" +
  17262. " inner join tp_mst_goodstype gt\n" +
  17263. " on gt.goodstypeid = g.goodstypeid\n" +
  17264. " inner join tp_mst_goodstype gt2\n" +
  17265. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17266. " where dd.valueflag = '1'\n" +
  17267. " and dd.accountid = :accountid\n" +
  17268. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17269. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17270. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17271. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17272. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17273. // 恒洁三车间特殊处理(质量相关)
  17274. //" and dd.procedureid = :p2ID\n" +
  17275. " and (dd.procedureid = 12 or (dd.procedureid = 105 and pd.isrefire='0')) \n" +
  17276. // end
  17277. " and pd.isrefire='0'\n" +
  17278. " AND DT.DEFECTTYPENAME LIKE '%改洗%'\n" +
  17279. " and pd.CREATETIME >= :timebegin\n" +
  17280. " and pd.CREATETIME < :timeend\n" +
  17281. ////" -- 改洗、吹风\n" +
  17282. //" and dd.defectprocedureid in (2, 62)\n" +
  17283. ////" -- 除不平\n" +
  17284. //" and dd.defectid not in (91, 240)\n" +
  17285. " and (dd.DEFECTUSERCODE LIKE 'G%' OR dd.DEFECTUSERCODE LIKE 'I%' OR dd.DEFECTUSERCODE LIKE 'SDM%' OR dd.DEFECTUSERCODE LIKE 'SSS%'\n" +
  17286. " OR dd.DEFECTUSERCODE IN ('S1','S2','S3','S4','S5','S6','S7','S8','S9','S10','S11','S12','S13','S14','S15','S16','S17','S18','S19','S20','S21','S22','S23','S24','S25','S26'))\n";
  17287. if (!TestMouldFlag.Equals(""))
  17288. {
  17289. if (TestMouldFlag.Equals("1"))
  17290. {
  17291. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17292. }
  17293. else
  17294. {
  17295. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17296. }
  17297. }
  17298. sqlString += " group by gt2.goodstypecode\n" +
  17299. " union all\n" +
  17300. " select 30 pcode\n" +
  17301. " ,'二检' pname\n" +
  17302. " ,gt2.goodstypecode gtcode2\n" +
  17303. " ,count(*) defectcount\n" +
  17304. " from tp_pm_defect dd\n" +
  17305. " inner join tp_pm_productiondata pd\n" +
  17306. " on dd.productiondataid = pd.productiondataid\n" +
  17307. " LEFT JOIN TP_MST_Defect mstd\n" +
  17308. " ON dd.DefectID = mstd.DefectID\n" +
  17309. " LEFT JOIN TP_MST_DefectType DT\n" +
  17310. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  17311. " inner join tp_mst_goods g\n" +
  17312. " on dd.goodsid = g.goodsid\n" +
  17313. " inner join tp_mst_goodstype gt\n" +
  17314. " on gt.goodstypeid = g.goodstypeid\n" +
  17315. " inner join tp_mst_goodstype gt2\n" +
  17316. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17317. " where dd.valueflag = '1'\n" +
  17318. " and dd.accountid = :accountid\n" +
  17319. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17320. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17321. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17322. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17323. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17324. // 恒洁三车间特殊处理(质量相关)
  17325. //" and dd.procedureid = :p2ID\n" +
  17326. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  17327. // end
  17328. " and pd.isrefire='0'\n" +
  17329. " AND DT.DEFECTTYPENAME LIKE '%检验%'\n" +
  17330. " and pd.CREATETIME >= :timebegin\n" +
  17331. " and pd.CREATETIME < :timeend\n" +
  17332. ////" -- 二检\n" +
  17333. //" and dd.defectprocedureid in (61)\n" +
  17334. " and (dd.DEFECTUSERCODE LIKE 'E%' OR dd.DEFECTUSERCODE LIKE 'J%' OR dd.DEFECTUSERCODE LIKE 'SJY%')\n";
  17335. if (!TestMouldFlag.Equals(""))
  17336. {
  17337. if (TestMouldFlag.Equals("1"))
  17338. {
  17339. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17340. }
  17341. else
  17342. {
  17343. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17344. }
  17345. }
  17346. sqlString += " group by gt2.goodstypecode\n" +
  17347. " union all\n" +
  17348. " select 40 pcode\n" +
  17349. " ,'施釉' pname\n" +
  17350. " ,gt2.goodstypecode gtcode2\n" +
  17351. " ,count(*) defectcount\n" +
  17352. " from tp_pm_defect dd\n" +
  17353. " inner join tp_pm_productiondata pd\n" +
  17354. " on dd.productiondataid = pd.productiondataid\n" +
  17355. " LEFT JOIN TP_MST_Defect mstd\n" +
  17356. " ON dd.DefectID = mstd.DefectID\n" +
  17357. " LEFT JOIN TP_MST_DefectType DT\n" +
  17358. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  17359. " inner join tp_mst_goods g\n" +
  17360. " on dd.goodsid = g.goodsid\n" +
  17361. " inner join tp_mst_goodstype gt\n" +
  17362. " on gt.goodstypeid = g.goodstypeid\n" +
  17363. " inner join tp_mst_goodstype gt2\n" +
  17364. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17365. " where dd.valueflag = '1'\n" +
  17366. " and dd.accountid = :accountid\n" +
  17367. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17368. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17369. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17370. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17371. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17372. // 恒洁三车间特殊处理(质量相关)
  17373. //" and dd.procedureid = :p2ID\n" +
  17374. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  17375. // end
  17376. " and pd.isrefire='0'\n" +
  17377. " AND DT.DEFECTTYPENAME LIKE '%施釉%'\n" +
  17378. " and pd.CREATETIME >= :timebegin\n" +
  17379. " and pd.CREATETIME < :timeend\n" +
  17380. ////" -- 施釉\n" +
  17381. //" and dd.defectprocedureid in (3, 4)\n" +
  17382. ////" -- 除铁、铜脏\n" +
  17383. //" and dd.defectid not in (827, 829, 398, 399, 830, 400)\n" +
  17384. " and (dd.DEFECTUSERCODE LIKE 'P%' OR dd.DEFECTUSERCODE LIKE 'SSY%')\n";
  17385. if (!TestMouldFlag.Equals(""))
  17386. {
  17387. if (TestMouldFlag.Equals("1"))
  17388. {
  17389. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17390. }
  17391. else
  17392. {
  17393. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17394. }
  17395. }
  17396. sqlString += " group by gt2.goodstypecode\n" +
  17397. " union all\n" +
  17398. " select 50 pcode\n" +
  17399. " ,'刮登' pname\n" +
  17400. " ,gt2.goodstypecode gtcode2\n" +
  17401. " ,count(*) defectcount\n" +
  17402. " from tp_pm_defect dd\n" +
  17403. " inner join tp_pm_productiondata pd\n" +
  17404. " on dd.productiondataid = pd.productiondataid\n" +
  17405. " LEFT JOIN TP_MST_Defect mstd\n" +
  17406. " ON dd.DefectID = mstd.DefectID\n" +
  17407. " LEFT JOIN TP_MST_DefectType DT\n" +
  17408. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  17409. " inner join tp_mst_goods g\n" +
  17410. " on dd.goodsid = g.goodsid\n" +
  17411. " inner join tp_mst_goodstype gt\n" +
  17412. " on gt.goodstypeid = g.goodstypeid\n" +
  17413. " inner join tp_mst_goodstype gt2\n" +
  17414. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17415. " where dd.valueflag = '1'\n" +
  17416. " and dd.accountid = :accountid\n" +
  17417. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17418. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17419. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17420. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17421. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17422. // 恒洁三车间特殊处理(质量相关)
  17423. //" and dd.procedureid = :p2ID\n" +
  17424. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  17425. // end
  17426. " and pd.isrefire='0'\n" +
  17427. " AND DT.DEFECTTYPENAME IN ('刮边','登窑')\n" +
  17428. " and pd.CREATETIME >= :timebegin\n" +
  17429. " and pd.CREATETIME < :timeend\n" +
  17430. ////" -- 登窑、入窑、卸窑\n" +
  17431. //" and dd.defectprocedureid in (5, 9, 10)\n" +
  17432. " and (dd.DEFECTUSERCODE LIKE 'D%' OR dd.DEFECTUSERCODE LIKE 'SDY%' OR dd.DEFECTUSERCODE LIKE 'SGD%' OR dd.DEFECTUSERCODE LIKE 'X%' OR dd.DEFECTUSERCODE LIKE 'ZJ%')\n";
  17433. if (!TestMouldFlag.Equals(""))
  17434. {
  17435. if (TestMouldFlag.Equals("1"))
  17436. {
  17437. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17438. }
  17439. else
  17440. {
  17441. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17442. }
  17443. }
  17444. sqlString += " group by gt2.goodstypecode\n" +
  17445. " union all\n" +
  17446. " select 60 pcode\n" +
  17447. " ,'烧成' pname\n" +
  17448. " ,gt2.goodstypecode gtcode2\n" +
  17449. " ,count(*) defectcount\n" +
  17450. " from tp_pm_defect dd\n" +
  17451. " inner join tp_pm_productiondata pd\n" +
  17452. " on dd.productiondataid = pd.productiondataid\n" +
  17453. " LEFT JOIN TP_MST_Defect mstd\n" +
  17454. " ON dd.DefectID = mstd.DefectID\n" +
  17455. " LEFT JOIN TP_MST_DefectType DT\n" +
  17456. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  17457. " inner join tp_mst_goods g\n" +
  17458. " on dd.goodsid = g.goodsid\n" +
  17459. " inner join tp_mst_goodstype gt\n" +
  17460. " on gt.goodstypeid = g.goodstypeid\n" +
  17461. " inner join tp_mst_goodstype gt2\n" +
  17462. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17463. " where dd.valueflag = '1'\n" +
  17464. " and dd.accountid = :accountid\n" +
  17465. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17466. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17467. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17468. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17469. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17470. // 恒洁三车间特殊处理(质量相关)
  17471. //" and dd.procedureid = :p2ID\n" +
  17472. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  17473. // end
  17474. " and pd.isrefire='0'\n" +
  17475. " AND DT.DEFECTTYPENAME LIKE '%烧成%'\n" +
  17476. " and pd.CREATETIME >= :timebegin\n" +
  17477. " and pd.CREATETIME < :timeend\n" +
  17478. ////" -- 惊风、毛针孔、烧裂、窑脏、釉泡\n" +
  17479. //" and dd.defectid in (385\n" +
  17480. //" ,203\n" +
  17481. //" ,836\n" +
  17482. //" ,234\n" +
  17483. //" ,384\n" +
  17484. //" ,202\n" +
  17485. //" ,835\n" +
  17486. //" ,390\n" +
  17487. //" ,818\n" +
  17488. //" ,389\n" +
  17489. //" ,204\n" +
  17490. //" ,814\n" +
  17491. //" ,837\n" +
  17492. //" ,387)\n" +
  17493. " and (dd.DEFECTUSERCODE LIKE 'SC%')\n";
  17494. //" and ((gt2.goodstypecode='001001' and dd.defectid in (131,221,223,156,126,132,222,129,150,178,179,122,188,219,220,225,229,227))\n" +
  17495. //" or (gt2.goodstypecode='001002' and dd.defectid in (131,221,156,126,132,222,129,150,179,122,188,189,219,220,225,229))\n" +
  17496. //" )\n" +
  17497. if (!TestMouldFlag.Equals(""))
  17498. {
  17499. if (TestMouldFlag.Equals("1"))
  17500. {
  17501. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17502. }
  17503. else
  17504. {
  17505. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17506. }
  17507. }
  17508. sqlString += " group by gt2.goodstypecode\n" +
  17509. " union all\n" +
  17510. " select 70 pcode\n" +
  17511. " ,'杂锈点' pname\n" +
  17512. " ,gt2.goodstypecode gtcode2\n" +
  17513. " ,count(*) defectcount\n" +
  17514. " from tp_pm_defect dd\n" +
  17515. " inner join tp_pm_productiondata pd\n" +
  17516. " on dd.productiondataid = pd.productiondataid\n" +
  17517. " inner join tp_mst_goods g\n" +
  17518. " on dd.goodsid = g.goodsid\n" +
  17519. " inner join tp_mst_goodstype gt\n" +
  17520. " on gt.goodstypeid = g.goodstypeid\n" +
  17521. " inner join tp_mst_goodstype gt2\n" +
  17522. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17523. " where dd.valueflag = '1'\n" +
  17524. " and dd.accountid = :accountid\n" +
  17525. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17526. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17527. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17528. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17529. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17530. // 恒洁三车间特殊处理(质量相关)
  17531. //" and dd.procedureid = :p2ID\n" +
  17532. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  17533. // end
  17534. " and pd.isrefire='0'\n" +
  17535. " and pd.CREATETIME >= :timebegin\n" +
  17536. " and pd.CREATETIME < :timeend\n" +
  17537. ////" -- 铁脏、铜脏、窑脏、釉脏\n" +
  17538. //" and dd.defectid in\n" +
  17539. //" (730, 818, 827, 829, 830, 389, 398, 399, 400, 170)\n" +
  17540. " AND dd.DEFECTNAME like '%脏' \n";
  17541. //" and ((gt2.goodstypecode='001001' and dd.defectid in (131,221,223,156,126,132,222,129,150,178,179,122,188,219,220,225,229,227))\n" +
  17542. //" or (gt2.goodstypecode='001002' and dd.defectid in (131,221,156,126,132,222,129,150,179,122,188,189,219,220,225,229))\n" +
  17543. //" )\n" +
  17544. if (!TestMouldFlag.Equals(""))
  17545. {
  17546. if (TestMouldFlag.Equals("1"))
  17547. {
  17548. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17549. }
  17550. else
  17551. {
  17552. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17553. }
  17554. }
  17555. sqlString += " group by gt2.goodstypecode\n" +
  17556. " union all\n" +
  17557. " select 80 pcode\n" +
  17558. " ,'其他' pname\n" +
  17559. " ,gt2.goodstypecode gtcode2\n" +
  17560. " ,count(*) defectcount\n" +
  17561. " from tp_pm_defect dd\n" +
  17562. " inner join tp_pm_productiondata pd\n" +
  17563. " on dd.productiondataid = pd.productiondataid\n" +
  17564. " LEFT JOIN TP_MST_Defect mstd\n" +
  17565. " ON dd.DefectID = mstd.DefectID\n" +
  17566. " LEFT JOIN TP_MST_DefectType DT\n" +
  17567. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  17568. " inner join tp_mst_goods g\n" +
  17569. " on dd.goodsid = g.goodsid\n" +
  17570. " inner join tp_mst_goodstype gt\n" +
  17571. " on gt.goodstypeid = g.goodstypeid\n" +
  17572. " inner join tp_mst_goodstype gt2\n" +
  17573. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17574. " where dd.valueflag = '1'\n" +
  17575. " and dd.accountid = :accountid\n" +
  17576. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17577. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17578. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17579. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17580. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17581. // 恒洁三车间特殊处理(质量相关)
  17582. //" and dd.procedureid = :p2ID\n" +
  17583. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  17584. // end
  17585. " and pd.isrefire='0'\n" +
  17586. " AND DT.DEFECTTYPENAME IN ('烧成','其他')\n" +
  17587. " and pd.CREATETIME >= :timebegin\n" +
  17588. " and pd.CREATETIME < :timeend\n" +
  17589. ////" -- 成检撞伤、炸坯、炸裂\n" +
  17590. //" and dd.defectid in (393, 180, 394, 395)\n" +
  17591. " and (dd.DEFECTUSERCODE LIKE 'CJ%')\n";
  17592. //" )\n" +
  17593. if (!TestMouldFlag.Equals(""))
  17594. {
  17595. if (TestMouldFlag.Equals("1"))
  17596. {
  17597. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17598. }
  17599. else
  17600. {
  17601. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = DD.BARCODE ) ";
  17602. }
  17603. }
  17604. sqlString +=
  17605. " group by gt2.goodstypecode) t\n" +
  17606. " left join (select gt2.goodstypecode gtcode2\n" +
  17607. " ,count(*) outkcount\n" +
  17608. " from tp_pm_productiondata pd\n" +
  17609. " inner join tp_mst_goods g\n" +
  17610. " on pd.goodsid = g.goodsid\n" +
  17611. " inner join tp_mst_goodstype gt\n" +
  17612. " on gt.goodstypeid = g.goodstypeid\n" +
  17613. " inner join tp_mst_goodstype gt2\n" +
  17614. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  17615. // 恒洁三车间特殊处理(质量相关)
  17616. " where pd.accountid = :accountid\n" +
  17617. " AND ((pd.procedureid = 11 AND pd.valueflag = '1') OR (pd.procedureid = 104 AND pd.isrefire = '0' AND pd.checkflag = '1'))\n" +
  17618. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17619. //" and pd.procedureid = :p1ID\n" +
  17620. // end
  17621. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17622. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17623. " and pd.createtime >= :timebegin\n" +
  17624. " and pd.createtime < :timeend\n" +
  17625. " group by gt2.goodstypecode) outk\n" +
  17626. " on t.gtcode2 = outk.gtcode2\n" +
  17627. " inner join tp_mst_goodstype gt\n" +
  17628. " on gt.goodstypecode = t.gtcode2\n" +
  17629. " and gt.accountid = :accountid\n" +
  17630. " order by t.pcode, t.gtcode2";
  17631. OracleParameter[] oracleParameter = new OracleParameter[]
  17632. {
  17633. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17634. //new OracleParameter(":p1ID",OracleDbType.Int32, p1ID, ParameterDirection.Input),
  17635. //new OracleParameter(":p2ID",OracleDbType.Int32, p2ID, ParameterDirection.Input),
  17636. new OracleParameter(":timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  17637. new OracleParameter(":timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  17638. new OracleParameter(":gtcode2",OracleDbType.Varchar2, gtcode2, ParameterDirection.Input),
  17639. new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, GoodsIDS, ParameterDirection.Input),
  17640. new OracleParameter(":KilnID", OracleDbType.Int32, kid, ParameterDirection.Input),
  17641. };
  17642. ServiceResultEntity sre = new ServiceResultEntity();
  17643. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  17644. if (sre.Data != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0)
  17645. {
  17646. sre.Data.Tables[0].TableName = "S";
  17647. cre.Properties["pcode"] = sre.Data.Tables[0].Rows[0]["pcode"];
  17648. cre.Properties["pname"] = sre.Data.Tables[0].Rows[0]["pname"];
  17649. cre.Properties["gtcode2"] = sre.Data.Tables[0].Rows[0]["gtcode2"];
  17650. ServiceResultEntity sre1 = GetRPT040113DData(cre, sUserInfo);
  17651. if (sre1 != null && sre1.Data != null && sre1.Data.Tables.Count > 0)
  17652. {
  17653. sre1.Data.Tables[0].TableName = "D";
  17654. sre.Data.Merge(sre1.Data.Tables[0]);
  17655. }
  17656. }
  17657. sqlString =
  17658. "select t.gtcode2\n" +
  17659. " ,nvl(t.gtname2, '合计') gtname2\n" +
  17660. " ,sum(t.outk) outk\n" +
  17661. " ,sum(t.cipin) cipin\n" +
  17662. " ,sum(t.outk) - sum(t.cipin) hege\n" +
  17663. " ,decode(sum(t.outk), 0, to_number(null), round(1 - (sum(t.cipin) / sum(t.outk)),4)) hegep\n" +
  17664. " from (select gt2.goodstypecode gtcode2\n" +
  17665. " ,gt2.goodstypename gtname2\n" +
  17666. " ,nvl(sum(decode(pd.procedureid, 11, 1,104,1, 0)), 0) outk\n" +
  17667. " ,nvl(sum(case\n" +
  17668. " when pd.procedureid in (12,105) and\n" +
  17669. " pd.goodsleveltypeid in (6, 7) then\n" +
  17670. " 1\n" +
  17671. " else\n" +
  17672. " 0\n" +
  17673. " end)\n" +
  17674. " ,0) cipin\n" +
  17675. " from tp_pm_productiondata pd\n" +
  17676. " inner join tp_mst_goods g\n" +
  17677. " on pd.goodsid = g.goodsid\n" +
  17678. " inner join tp_mst_goodstype gt\n" +
  17679. " on g.goodstypeid = gt.goodstypeid\n" +
  17680. " inner join tp_mst_goodstype gt2\n" +
  17681. " on length(gt2.goodstypecode) = 6\n" +
  17682. " and gt2.accountid = gt.accountid\n" +
  17683. " and instr(gt.goodstypecode, gt2.goodstypecode) = 1\n" +
  17684. " where ((pd.procedureid <> 104 and pd.valueflag = '1') or (pd.procedureid = 104 and pd.checkflag = '1'))\n" +
  17685. " and pd.accountid = :accountid\n" +
  17686. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17687. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17688. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  17689. // 恒洁三车间特殊处理(质量相关)
  17690. //" and (pd.procedureid = :p1ID or pd.procedureid = :p2ID)\n" +
  17691. " AND pd.isrefire = '0'\n" +
  17692. " AND pd.procedureid in (11,12,104,105)\n" +
  17693. // end
  17694. //" and pd.checktime > date '2018-01-01'\n" +
  17695. " and pd.createtime >= :timebegin\n" +
  17696. " and pd.createtime < :timeend\n";
  17697. if (!TestMouldFlag.Equals(""))
  17698. {
  17699. if (TestMouldFlag.Equals("1"))
  17700. {
  17701. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = pd.BARCODE ) ";
  17702. }
  17703. else
  17704. {
  17705. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = pd.BARCODE ) ";
  17706. }
  17707. }
  17708. sqlString += " group by gt2.goodstypecode, gt2.goodstypename) t\n" +
  17709. " group by grouping sets((t.gtcode2, t.gtname2),())";
  17710. oracleParameter = new OracleParameter[]
  17711. {
  17712. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17713. //new OracleParameter(":p1ID",OracleDbType.Int32, p1ID, ParameterDirection.Input),
  17714. //new OracleParameter(":p2ID",OracleDbType.Int32, p2ID, ParameterDirection.Input),
  17715. new OracleParameter(":timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  17716. new OracleParameter(":timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  17717. new OracleParameter(":gtcode2",OracleDbType.Varchar2, gtcode2, ParameterDirection.Input),
  17718. new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, GoodsIDS, ParameterDirection.Input),
  17719. new OracleParameter(":KilnID", OracleDbType.Int32, kid, ParameterDirection.Input),
  17720. };
  17721. DataTable alldata = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  17722. alldata.TableName = "A";
  17723. DataTable data = sre.Data.Tables[0];
  17724. foreach (DataRow item in alldata.Rows)
  17725. {
  17726. data.Rows.Add(99, "总计", item["gtcode2"], item["cipin"], item["gtname2"], item["outk"], item["hege"], item["hegep"]);
  17727. }
  17728. return sre;
  17729. }
  17730. catch (Exception ex)
  17731. {
  17732. if (oracleConn.ConnState == ConnectionState.Open)
  17733. {
  17734. oracleConn.Close();
  17735. }
  17736. throw ex;
  17737. }
  17738. }
  17739. /// <summary>
  17740. /// 成品工艺质量表-缺陷明细-恒洁三水
  17741. /// </summary>
  17742. /// <param name="cre"></param>
  17743. /// <param name="sUserInfo"></param>
  17744. /// <returns></returns>
  17745. public static ServiceResultEntity GetRPT040113DData(ClientRequestEntity cre, SUserInfo sUserInfo)
  17746. {
  17747. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17748. try
  17749. {
  17750. //int p1ID = 11; // 成检交接工序
  17751. //int p2ID = 12; // 成检登记工序
  17752. int pcode = Convert.ToInt32(cre.Properties["pcode"]);
  17753. string GoodsIDS = cre.Properties["GoodsIDS"] + "";
  17754. string KilnID = cre.Properties["KilnID"] + "";
  17755. string TestMouldFlag = cre.Properties["TestMouldFlag"] + "";
  17756. if (string.IsNullOrWhiteSpace(GoodsIDS))
  17757. {
  17758. GoodsIDS = "0";
  17759. }
  17760. int kid = 0;
  17761. if (!string.IsNullOrWhiteSpace(KilnID))
  17762. {
  17763. kid = Convert.ToInt32(KilnID);
  17764. }
  17765. string sqlString =
  17766. "select :pcode pcode\n" +
  17767. " ,:pname pname\n" +
  17768. " ,gt2.goodstypecode gtcode2\n" +
  17769. " ,gt2.goodstypename gtname2\n" +
  17770. " ,dd.defectcode\n" +
  17771. " ,dd.defectname\n" +
  17772. " ,count(*) defectcount\n" +
  17773. " from tp_pm_defect dd\n" +
  17774. //"--inner join tp_mst_defect md on md.defectid=dd.defectid\n" +
  17775. " inner join tp_mst_goods g\n" +
  17776. " on dd.goodsid = g.goodsid\n" +
  17777. " inner join tp_pm_productiondata pd\n" +
  17778. " on dd.productiondataid = pd.productiondataid\n" +
  17779. " inner join tp_mst_goodstype gt\n" +
  17780. " on gt.goodstypeid = g.goodstypeid\n" +
  17781. " inner join tp_mst_goodstype gt2\n" +
  17782. " on gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  17783. " and gt2.accountid = :accountid\n" +
  17784. " LEFT JOIN TP_MST_Defect mstd\n" +
  17785. " ON dd.DefectID = mstd.DefectID\n" +
  17786. " LEFT JOIN TP_MST_DefectType DT\n" +
  17787. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  17788. " where dd.valueflag = '1'\n" +
  17789. " and dd.accountid = :accountid\n" +
  17790. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  17791. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  17792. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  17793. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  17794. // 恒洁三车间特殊处理(质量相关)
  17795. //" and dd.procedureid = :p2ID\n" +
  17796. " and (dd.procedureid = 12 or dd.procedureid = 105) \n" +
  17797. " and pd.isrefire='0' \n" +
  17798. // end
  17799. " and gt2.goodstypecode like CONCAT(:gtcode2,'%') \n" +
  17800. " and pd.createtime >= :timebegin\n" +
  17801. " and pd.createtime < :timeend\n";
  17802. if (!TestMouldFlag.Equals(""))
  17803. {
  17804. if (TestMouldFlag.Equals("1"))
  17805. {
  17806. sqlString += "AND EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = dd.BARCODE ) ";
  17807. }
  17808. else
  17809. {
  17810. sqlString += "AND NOT EXISTS ( select 1 from TP_PM_GROUTINGDAILYDETAIL PG WHERE PG.TESTFLAG = 1 AND PG.ACCOUNTID = 1 AND PG.VALUEFLAG = 1 AND PG.BARCODE = dd.BARCODE ) ";
  17811. }
  17812. }
  17813. switch (pcode)
  17814. {
  17815. case 10:
  17816. ////" -- 交坯、干补\n" +
  17817. //sqlString += " and dd.defectprocedureid in (1, 17, 18)\n";
  17818. sqlString +=
  17819. " AND (DT.DEFECTTYPENAME LIKE '成型%'\n" +
  17820. " and (dd.DEFECTUSERCODE LIKE 'F%' OR dd.DEFECTUSERCODE LIKE 'SGY%' OR dd.DEFECTUSERCODE LIKE 'SGB%' OR dd.DEFECTUSERCODE IN('244','245'))\n" +
  17821. " )\n";
  17822. break;
  17823. case 20:
  17824. sqlString +=
  17825. ////" -- 改洗、吹风\n" +
  17826. //" and dd.defectprocedureid in (2, 62)\n" +
  17827. ////" -- 除不平\n" +
  17828. //" and dd.defectid not in (91, 240)\n";
  17829. " and ((gt2.goodstypecode='001001' and dd.defectid in (91,94,144,113,145,114,183))\n" +
  17830. " or (gt2.goodstypecode='001002' and dd.defectid in (91,93,94,144,113,145,114))\n" +
  17831. " )\n";
  17832. break;
  17833. case 30:
  17834. sqlString +=
  17835. ////" -- 二检\n" +
  17836. //" and dd.defectprocedureid in (61)\n";
  17837. " and ((gt2.goodstypecode='001001' and dd.defectid in (89,91,92,93,94,106,115,163,159,133,166,164))\n" +
  17838. " or (gt2.goodstypecode='001002' and dd.defectid in (89,91,92,93,94,106,115,163,133,192,166,164))\n" +
  17839. " )\n";
  17840. break;
  17841. case 40:
  17842. sqlString +=
  17843. ////" -- 施釉\n" +
  17844. //" and dd.defectprocedureid in (3, 4)\n" +
  17845. ////" -- 除铁、铜脏\n" +
  17846. //" and dd.defectid not in (827, 829, 398, 399, 830, 400)\n";
  17847. " and ((gt2.goodstypecode='001001' and dd.defectid in (353,354,117,146,153,130,119,147,196,197,118,198,355,357,170,199,120,148,175,120,197,197,128,345,347,349,540,353,398,399))\n" +
  17848. " or (gt2.goodstypecode='001002' and dd.defectid in (117,146,153,130,119,147,196,197,118,198,355,357,170,199,120,148,175,154,162,121,128,345,347,349,353,398,399))\n" +
  17849. " )\n";
  17850. break;
  17851. case 50:
  17852. sqlString +=
  17853. ////" -- 登窑、入窑、卸窑\n" +
  17854. //" and dd.defectprocedureid in (5, 9, 10)\n";
  17855. " and ((gt2.goodstypecode='001001' and dd.defectid in (131,221,223,156,126,132,222,129,150,178,179,122,188,219,220,225,229,227))\n" +
  17856. " or (gt2.goodstypecode='001002' and dd.defectid in (131,221,156,126,132,222,129,150,179,122,188,189,219,220,225,229))\n" +
  17857. " )\n";
  17858. break;
  17859. case 60:
  17860. sqlString +=
  17861. ////" -- 惊风、毛针孔、烧裂、窑脏、釉泡\n" +
  17862. //" and dd.defectid in (385\n" +
  17863. //" ,203\n" +
  17864. //" ,836\n" +
  17865. //" ,234\n" +
  17866. //" ,384\n" +
  17867. //" ,202\n" +
  17868. //" ,835\n" +
  17869. //" ,390\n" +
  17870. //" ,818\n" +
  17871. //" ,389\n" +
  17872. //" ,204\n" +
  17873. //" ,814\n" +
  17874. //" ,837\n" +
  17875. //" ,387)\n";
  17876. " and dd.defectid in (234,385,386,387,388,389,390)\n";
  17877. break;
  17878. case 70:
  17879. sqlString +=
  17880. ////" -- 铁脏、铜脏、窑脏、釉脏\n" +
  17881. //" and dd.defectid in\n" +
  17882. //" (730, 818, 827, 829, 830, 389, 398, 399, 400, 170)\n";
  17883. " and dd.defectid in (170,389,398,399)\n";
  17884. break;
  17885. case 80:
  17886. sqlString +=
  17887. ////" -- 成检撞伤、炸坯、炸裂\n" +
  17888. //" and dd.defectid in (393, 180, 394, 395)\n";
  17889. " and ((gt2.goodstypecode='001001' and dd.defectid in (402,393,395,396,397))\n" +
  17890. " or (gt2.goodstypecode='001002' and dd.defectid in (402,394,393,395,396,397))\n" +
  17891. " )\n";
  17892. break;
  17893. default:
  17894. break;
  17895. }
  17896. sqlString +=
  17897. " group by gt2.goodstypecode\n" +
  17898. " ,gt2.goodstypename\n" +
  17899. " ,dd.defectcode\n" +
  17900. " ,dd.defectname\n" +
  17901. " order by dd.defectcode";
  17902. OracleParameter[] oracleParameter = new OracleParameter[]
  17903. {
  17904. new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17905. ////new OracleParameter("p1ID",OracleDbType.Int32, p1ID, ParameterDirection.Input),
  17906. //new OracleParameter("p2ID",OracleDbType.Int32, p2ID, ParameterDirection.Input),
  17907. new OracleParameter("pcode",OracleDbType.Int32, pcode, ParameterDirection.Input),
  17908. new OracleParameter("pname",OracleDbType.NVarchar2, cre.Properties["pname"], ParameterDirection.Input),
  17909. new OracleParameter("gtcode2",OracleDbType.Varchar2, cre.Properties["gtcode2"], ParameterDirection.Input),
  17910. new OracleParameter("timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  17911. new OracleParameter("timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  17912. new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, GoodsIDS, ParameterDirection.Input),
  17913. new OracleParameter(":KilnID", OracleDbType.Int32, kid, ParameterDirection.Input),
  17914. };
  17915. ServiceResultEntity sre = new ServiceResultEntity();
  17916. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  17917. return sre;
  17918. }
  17919. catch (Exception ex)
  17920. {
  17921. if (oracleConn.ConnState == ConnectionState.Open)
  17922. {
  17923. oracleConn.Close();
  17924. }
  17925. throw ex;
  17926. }
  17927. }
  17928. /// <summary>
  17929. /// 半成品工序质量表-恒洁三水
  17930. /// </summary>
  17931. /// <param name="cre"></param>
  17932. /// <param name="sUserInfo"></param>
  17933. /// <returns></returns>
  17934. public static ServiceResultEntity GetRPT040115Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17935. {
  17936. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17937. try
  17938. {
  17939. string gtcode = cre.Properties["gtcode"] + "";
  17940. string ProcedureIDS = cre.Properties["ProcedureIDS"] + "";
  17941. string GoodsIDS = cre.Properties["GoodsIDS"] + "";
  17942. string sqlString =
  17943. "SELECT NVL(PP.PROCEDUREID, -1) PROCEDUREID\n" +
  17944. " ,NVL(PP.PROCEDURENAME, '合计') PROCEDURENAME\n" +
  17945. " ,SUM(PP.PCOUNT) PCOUNT\n" +
  17946. " ,SUM(PP.PCOUNT) - SUM(PP.BUHEGE) - SUM(PP.FANGONG) HEGE\n" +
  17947. " ,SUM(PP.BUHEGE) BUHEGE\n" +
  17948. " ,SUM(PP.FANGONG) FANGONG\n" +
  17949. " ,decode(SUM(PP.PCOUNT),null,0,0,0, round((SUM(PP.PCOUNT) - SUM(PP.BUHEGE) - SUM(PP.FANGONG)) / SUM(PP.PCOUNT),4)) HEGELV\n" +
  17950. " FROM (\n" +
  17951. " -- 成型产量\n" +
  17952. " SELECT 0 PROCEDUREID\n" +
  17953. " ,'成型' PROCEDURENAME\n" +
  17954. " ,0 DISPLAYNO\n" +
  17955. " ,T.GOODSID\n" +
  17956. " ,1 PCOUNT\n" +
  17957. " ,0 BUHEGE\n" +
  17958. " ,0 FANGONG\n" +
  17959. " FROM TP_PM_GROUTINGDAILYDETAIL T\n" +
  17960. " WHERE T.VALUEFLAG = '1'\n" +
  17961. " AND T.GROUTINGFLAG = '1'\n" +
  17962. " AND T.CREATETIME >= :timebegin\n" +
  17963. " AND T.CREATETIME < :timeend\n" +
  17964. " UNION ALL\n" +
  17965. " -- 成型不合格-报损\n" +
  17966. " SELECT 0 PROCEDUREID\n" +
  17967. " ,'成型' PROCEDURENAME\n" +
  17968. " ,0 DISPLAYNO\n" +
  17969. " ,T.GOODSID\n" +
  17970. " ,0 PCOUNT\n" +
  17971. " ,1 BUHEGE\n" +
  17972. " ,0 FANGONG\n" +
  17973. " FROM TP_PM_GROUTINGDAILYDETAIL T\n" +
  17974. " WHERE T.VALUEFLAG = '1'\n" +
  17975. " AND T.GROUTINGFLAG = '1'\n" +
  17976. " AND T.SCRAPFLAG = '1'\n" +
  17977. " AND T.SCRAPTIME >= :timebegin\n" +
  17978. " AND T.SCRAPTIME < :timeend\n" +
  17979. " UNION ALL\n" +
  17980. " -- 工序产量\n" +
  17981. " SELECT T.PROCEDUREID\n" +
  17982. " ,TO_CHAR(P.PROCEDURENAME)\n" +
  17983. " ,P.DISPLAYNO\n" +
  17984. " ,T.GOODSID\n" +
  17985. " ,1 PCOUNT\n" +
  17986. " ,0 BUHEGE\n" +
  17987. " ,0 FANGONG\n" +
  17988. " FROM TP_PM_PRODUCTIONDATA T\n" +
  17989. " INNER JOIN TP_PC_PROCEDURE P\n" +
  17990. " ON T.PROCEDUREID = P.PROCEDUREID\n" +
  17991. " WHERE T.VALUEFLAG = '1'\n" +
  17992. " AND P.IS_BEFOREFIRE = '1'\n" +
  17993. " AND T.CREATETIME >= :timebegin\n" +
  17994. " AND T.CREATETIME < :timeend\n" +
  17995. " UNION ALL\n" +
  17996. " -- 工序不合格\n" +
  17997. " SELECT T.PROCEDUREID\n" +
  17998. " ,TO_CHAR(P.PROCEDURENAME)\n" +
  17999. " ,P.DISPLAYNO\n" +
  18000. " ,T.GOODSID\n" +
  18001. " ,0 PCOUNT\n" +
  18002. " ,1 BUHEGE\n" +
  18003. " ,0 FANGONG\n" +
  18004. " FROM TP_PM_SCRAPPRODUCT T\n" +
  18005. " INNER JOIN TP_PC_PROCEDURE P\n" +
  18006. " ON T.PROCEDUREID = P.PROCEDUREID\n" +
  18007. " WHERE T.VALUEFLAG = '1'\n" +
  18008. " AND P.IS_BEFOREFIRE = '1'\n" +
  18009. " AND T.AUDITSTATUS = '1'\n" +
  18010. " AND T.GOODSLEVELTYPEID IN (8, 9, 13, 14)\n" +
  18011. " AND T.AUDITDATE >= :timebegin\n" +
  18012. " AND T.AUDITDATE < :timeend\n" +
  18013. " UNION ALL\n" +
  18014. " -- 半检返工\n" +
  18015. " SELECT T.PROCEDUREID\n" +
  18016. " ,TO_CHAR(P.PROCEDURENAME)\n" +
  18017. " ,P.DISPLAYNO\n" +
  18018. " ,T.GOODSID\n" +
  18019. " ,0 PCOUNT\n" +
  18020. " ,0 BUHEGE\n" +
  18021. " ,1 FANGONG\n" +
  18022. " FROM TP_PM_SEMICHECK T\n" +
  18023. " INNER JOIN TP_PC_PROCEDURE P\n" +
  18024. " ON T.PROCEDUREID = P.PROCEDUREID\n" +
  18025. " WHERE T.VALUEFLAG = '1'\n" +
  18026. " AND P.IS_BEFOREFIRE = '1'\n" +
  18027. " AND T.SEMICHECKTYPE = 1\n" +
  18028. " AND T.CREATETIME >= :timebegin\n" +
  18029. " AND T.CREATETIME < :timeend) PP\n" +
  18030. " INNER JOIN TP_MST_GOODS G\n" +
  18031. " ON G.GOODSID = PP.GOODSID\n" +
  18032. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  18033. " ON GT.GOODSTYPEID = G.GOODSTYPEID\n" +
  18034. " WHERE \n" +
  18035. " (:gtcode is null or instr(GT.GOODSTYPECODE,:gtcode)=1)\n" +
  18036. " AND (:GoodsIDS is null or instr(','||:GoodsIDS||',',','||PP.GOODSID||',')>0)\n" +
  18037. " AND (:ProcedureIDS is null or instr(','||:ProcedureIDS||',',','||PP.PROCEDUREID||',')>0)\n" +
  18038. " GROUP BY GROUPING SETS((PP.PROCEDUREID, PP.PROCEDURENAME, PP.DISPLAYNO), ())\n" +
  18039. " ORDER BY PP.DISPLAYNO\n" +
  18040. " ,PP.PROCEDURENAME";
  18041. OracleParameter[] oracleParameter = new OracleParameter[]
  18042. {
  18043. //new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  18044. new OracleParameter(":timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  18045. new OracleParameter(":timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  18046. new OracleParameter(":gtcode",OracleDbType.Varchar2, gtcode, ParameterDirection.Input),
  18047. new OracleParameter(":GoodsIDS", OracleDbType.Varchar2, GoodsIDS, ParameterDirection.Input),
  18048. new OracleParameter(":ProcedureIDS",OracleDbType.Varchar2, ProcedureIDS, ParameterDirection.Input),
  18049. };
  18050. ServiceResultEntity sre = new ServiceResultEntity();
  18051. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  18052. if (sre.Data != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0)
  18053. {
  18054. sre.Data.Tables[0].TableName = "S";
  18055. int PROCEDUREID = Convert.ToInt32(sre.Data.Tables[0].Rows[0]["PROCEDUREID"]);
  18056. if (PROCEDUREID != 0)
  18057. {
  18058. cre.Properties["PROCEDUREID"] = sre.Data.Tables[0].Rows[0]["PROCEDUREID"];
  18059. ServiceResultEntity sre1 = GetRPT040115DData(cre, sUserInfo);
  18060. if (sre1 != null && sre1.Data != null && sre1.Data.Tables.Count > 0)
  18061. {
  18062. sre1.Data.Tables[0].TableName = "D";
  18063. sre.Data.Merge(sre1.Data.Tables[0]);
  18064. }
  18065. }
  18066. }
  18067. return sre;
  18068. }
  18069. catch (Exception ex)
  18070. {
  18071. if (oracleConn.ConnState == ConnectionState.Open)
  18072. {
  18073. oracleConn.Close();
  18074. }
  18075. throw ex;
  18076. }
  18077. }
  18078. /// <summary>
  18079. /// 半成品工序质量表-缺陷明细-恒洁三水
  18080. /// </summary>
  18081. /// <param name="cre"></param>
  18082. /// <param name="sUserInfo"></param>
  18083. /// <returns></returns>
  18084. public static ServiceResultEntity GetRPT040115DData(ClientRequestEntity cre, SUserInfo sUserInfo)
  18085. {
  18086. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  18087. try
  18088. {
  18089. string gtcode = cre.Properties["gtcode"] + "";
  18090. string ProcedureIDS = cre.Properties["ProcedureIDS"] + "";
  18091. string GoodsIDS = cre.Properties["GoodsIDS"] + "";
  18092. int PROCEDUREID = Convert.ToInt32(cre.Properties["PROCEDUREID"]);
  18093. string sqlString = "\n" +
  18094. "SELECT P.PROCEDURENAME\n" +
  18095. " ,SD.DEFECTNAME\n" +
  18096. " ,COUNT(SD.SEMICHECKDEFECTID) DCOUNT\n" +
  18097. " FROM TP_PM_SEMICHECK T\n" +
  18098. " INNER JOIN TP_PC_PROCEDURE P\n" +
  18099. " ON P.PROCEDUREID = T.PROCEDUREID\n" +
  18100. " INNER JOIN TP_PM_SEMICHECKDEFECT SD\n" +
  18101. " ON SD.SEMICHECKID = T.SEMICHECKID\n" +
  18102. " INNER JOIN TP_MST_GOODS G\n" +
  18103. " ON G.GOODSID = T.GOODSID\n" +
  18104. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  18105. " ON GT.GOODSTYPEID = G.GOODSTYPEID\n" +
  18106. " WHERE T.VALUEFLAG = '1'\n" +
  18107. //" AND T.PROCEDUREID = 65\n" +
  18108. " AND (:gtcode is null or instr(GT.GOODSTYPECODE,:gtcode)=1)\n" +
  18109. " AND (:GoodsIDS is null or instr(','||:GoodsIDS||',',','||G.GOODSID||',')>0)\n" +
  18110. " AND ((:PROCEDUREID = -1 and (:ProcedureIDS is null or instr(','||:ProcedureIDS||',',','||T.PROCEDUREID||',')>0)) or (:PROCEDUREID <> -1 and T.PROCEDUREID=:PROCEDUREID))\n" +
  18111. " AND T.CREATETIME >= :timebegin\n" +
  18112. " AND T.CREATETIME < :timeend\n" +
  18113. " AND SD.VALUEFLAG = '1'\n" +
  18114. " GROUP BY P.PROCEDURENAME\n" +
  18115. " ,SD.DEFECTNAME\n" +
  18116. "UNION ALL\n" +
  18117. "SELECT P.PROCEDURENAME\n" +
  18118. " ,SD.DEFECTNAME\n" +
  18119. " ,COUNT(SD.SEMICHECKDEFECTID) DCOUNT\n" +
  18120. " FROM TP_PM_SEMICHECK T\n" +
  18121. " INNER JOIN TP_PC_PROCEDURE P\n" +
  18122. " ON P.PROCEDUREID = T.PROCEDUREID\n" +
  18123. " INNER JOIN TP_PM_SEMICHECKDEFECT SD\n" +
  18124. " ON SD.SEMICHECKID = T.SEMICHECKID\n" +
  18125. " INNER JOIN TP_MST_GOODS G\n" +
  18126. " ON G.GOODSID = T.GOODSID\n" +
  18127. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  18128. " ON GT.GOODSTYPEID = G.GOODSTYPEID\n" +
  18129. " WHERE T.VALUEFLAG = '1'\n" +
  18130. " AND (:gtcode is null or instr(GT.GOODSTYPECODE,:gtcode)=1)\n" +
  18131. " AND (:GoodsIDS is null or instr(','||:GoodsIDS||',',','||G.GOODSID||',')>0)\n" +
  18132. " AND ((:PROCEDUREID = -1 and (:ProcedureIDS is null or instr(','||:ProcedureIDS||',',','||T.PROCEDUREID||',')>0)) or (:PROCEDUREID <> -1 and T.PROCEDUREID=:PROCEDUREID))\n" +
  18133. " AND t.SEMICHECKTYPE = 1 \n" +
  18134. " AND t.BARCODE IN ( \n" +
  18135. " SELECT DISTINCT a.BARCODE \n" +
  18136. " FROM TP_PM_SCRAPPRODUCT a \n" +
  18137. " WHERE a.GOODSLEVELTYPEID = 14 \n" +
  18138. " AND a.AUDITDATE >= :timebegin \n" +
  18139. " AND a.AUDITDATE < :timeend ) \n" +
  18140. " AND SD.VALUEFLAG = '1'\n" +
  18141. " GROUP BY P.PROCEDURENAME\n" +
  18142. " ,SD.DEFECTNAME\n" +
  18143. "UNION ALL\n" +
  18144. "SELECT P.PROCEDURENAME\n" +
  18145. " ,T.RREASON\n" +
  18146. " ,COUNT(T.SCRAPPRODUCTID) DCOUNT\n" +
  18147. " FROM TP_PM_SCRAPPRODUCT T\n" +
  18148. " INNER JOIN TP_PC_PROCEDURE P\n" +
  18149. " ON T.PROCEDUREID = P.PROCEDUREID\n" +
  18150. " INNER JOIN TP_MST_GOODS G\n" +
  18151. " ON G.GOODSID = T.GOODSID\n" +
  18152. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  18153. " ON GT.GOODSTYPEID = G.GOODSTYPEID\n" +
  18154. " WHERE T.VALUEFLAG = '1'\n" +
  18155. " AND P.IS_BEFOREFIRE = '1'\n" +
  18156. " AND T.AUDITSTATUS = '1'\n" +
  18157. //" AND T.PROCEDUREID = 65\n" +
  18158. " AND (:gtcode is null or instr(GT.GOODSTYPECODE,:gtcode)=1)\n" +
  18159. " AND (:GoodsIDS is null or instr(','||:GoodsIDS||',',','||G.GOODSID||',')>0)\n" +
  18160. " AND ((:PROCEDUREID = -1 and (:ProcedureIDS is null or instr(','||:ProcedureIDS||',',','||T.PROCEDUREID||',')>0)) or (:PROCEDUREID <> -1 and T.PROCEDUREID=:PROCEDUREID))\n" +
  18161. " AND T.GOODSLEVELTYPEID IN (8, 9)\n" +
  18162. " AND T.AUDITDATE >= :timebegin\n" +
  18163. " AND T.AUDITDATE < :timeend\n" +
  18164. " GROUP BY P.PROCEDURENAME\n" +
  18165. " ,T.RREASON";
  18166. OracleParameter[] oracleParameter = new OracleParameter[]
  18167. {
  18168. //new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  18169. new OracleParameter(":timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  18170. new OracleParameter(":timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  18171. new OracleParameter(":gtcode",OracleDbType.Varchar2, gtcode, ParameterDirection.Input),
  18172. new OracleParameter(":GoodsIDS", OracleDbType.Varchar2, GoodsIDS, ParameterDirection.Input),
  18173. new OracleParameter(":ProcedureIDS",OracleDbType.Varchar2, ProcedureIDS, ParameterDirection.Input),
  18174. new OracleParameter(":PROCEDUREID",OracleDbType.Int32, PROCEDUREID, ParameterDirection.Input),
  18175. };
  18176. ServiceResultEntity sre = new ServiceResultEntity();
  18177. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  18178. return sre;
  18179. }
  18180. catch (Exception ex)
  18181. {
  18182. if (oracleConn.ConnState == ConnectionState.Open)
  18183. {
  18184. oracleConn.Close();
  18185. }
  18186. throw ex;
  18187. }
  18188. }
  18189. /// <summary>
  18190. /// 综合合格率分析表-半成品报废率分析表
  18191. /// </summary>
  18192. /// <param name="cre"></param>
  18193. /// <param name="sUserInfo"></param>
  18194. /// <returns></returns>
  18195. public static ServiceResultEntity GetRPT040114_1Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  18196. {
  18197. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  18198. try
  18199. {
  18200. ServiceResultEntity sre = new ServiceResultEntity();
  18201. List<OracleParameter> oracleParameters = new List<OracleParameter>();
  18202. oracleParameters.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  18203. /*string sqlString = "select g.goodscode\n" +
  18204. " ,tt.d_num\n" +
  18205. " ,tt.b_num\n" +
  18206. " ,tt.f_num\n" +
  18207. " ,tt.s_num\n" +
  18208. " ,decode(tt.d_num\n" +
  18209. " ,0\n" +
  18210. " ,to_number(null)\n" +
  18211. " ,round((tt.b_num + tt.f_num + tt.s_num) / tt.d_num,4)) sp_r\n" +
  18212. " from (select t.goodsid\n" +
  18213. " ,nvl(sum(decode(t.numtype, 'A', t.id_num, 0)), 0) d_num -- 交坯\n" +
  18214. " ,nvl(sum(decode(t.numtype, '2', t.id_num, 0)), 0) b_num -- 半检不合格数\n" +
  18215. " ,nvl(sum(decode(t.numtype, '3', t.id_num, 0)), 0) f_num -- 复检不合格数\n" +
  18216. " ,nvl(sum(decode(t.numtype, '0', t.id_num, 0)), 0) s_num -- 损坯数\n" +
  18217. " from (select gdd.goodsid\n" +
  18218. " ,'A' numtype\n" +
  18219. " ,count(gdd.groutingdailydetailid) id_num\n" +
  18220. " from tp_pm_groutingdailydetail gdd\n" +
  18221. " where gdd.groutingflag = '1'\n" +
  18222. " and gdd.valueflag = '1'\n" +
  18223. " and gdd.accountid = :accountid\n" +
  18224. " and gdd.deliverflag = '1'\n" +
  18225. " and gdd.delivertime >= :datebegin\n" +
  18226. " and gdd.delivertime < :dateend\n" +
  18227. " group by gdd.goodsid\n" +
  18228. " union all\n" +
  18229. " -- 半检不合格数 复检不合格数 损坯数\n" +
  18230. " select sp.goodsid\n" +
  18231. " ,sp.SCRAPTYPE numtype\n" +
  18232. " ,count(sp.scrapproductid) id_num\n" +
  18233. " from tp_pm_scrapproduct sp\n" +
  18234. " where sp.valueflag = '1'\n" +
  18235. " and sp.accountid = :accountid\n" +
  18236. " and sp.auditstatus = 1\n" +
  18237. " and sp.KILNID is null\n" +
  18238. " and sp.SCRAPTYPE <> '1'\n" +
  18239. " and sp.AUDITDATE >= :datebegin\n" +
  18240. " and sp.AUDITDATE < :dateend\n" +
  18241. " group by sp.goodsid, sp.SCRAPTYPE) t\n" +
  18242. " group by t.goodsid) tt\n" +
  18243. " inner join tp_mst_goods g\n" +
  18244. " on tt.goodsid = g.goodsid\n" +
  18245. " order by g.goodscode";*/
  18246. //2021年11月12日08:40:51 by fy modify
  18247. //增加干补列。
  18248. //增加合格率。合格率= 1 – (半检不合格+复检不合格+损坯数–干补数) / 交坯数
  18249. //报废率改为=(半检不合格+复检不合格+损坯数–干补数) / 交坯数
  18250. //型号查询功能
  18251. ////*************************************************修改开始*******************************************************
  18252. string sqlString = "select g.goodscode\n" +
  18253. " ,tt.d_num\n" +
  18254. " ,tt.b_num\n" +
  18255. " ,tt.f_num\n" +
  18256. " ,tt.s_num\n" +
  18257. " ,tt.g_num\n" +
  18258. " ,decode(tt.d_num\n" +
  18259. " ,0\n" +
  18260. " ,to_number(null)\n" +
  18261. " ,round(1-(tt.b_num + tt.f_num + tt.s_num - tt.g_num) / tt.d_num,4)) hg_r\n" +
  18262. " ,decode(tt.d_num\n" +
  18263. " ,0\n" +
  18264. " ,to_number(null)\n" +
  18265. " ,round((tt.b_num + tt.f_num + tt.s_num - tt.g_num) / tt.d_num,4)) sp_r\n" +
  18266. " from (select t.goodsid\n" +
  18267. " ,nvl(sum(decode(t.numtype, 'A', t.id_num, 0)), 0) d_num -- 交坯\n" +
  18268. " ,nvl(sum(decode(t.numtype, '2', t.id_num, 0)), 0) b_num -- 半检不合格数\n" +
  18269. " ,nvl(sum(decode(t.numtype, '3', t.id_num, 0)), 0) f_num -- 复检不合格数\n" +
  18270. " ,nvl(sum(decode(t.numtype, '0', t.id_num, 0)), 0) s_num -- 损坯数\n" +
  18271. " ,nvl(sum(decode(t.numtype, 'B', t.id_num, 0)), 0) g_num -- 干补数\n" +
  18272. " from (select gdd.goodsid\n" +
  18273. " ,'A' numtype\n" +
  18274. " ,count(gdd.groutingdailydetailid) id_num\n" +
  18275. " from tp_pm_groutingdailydetail gdd\n" +
  18276. " where gdd.groutingflag = '1'\n" +
  18277. " and gdd.valueflag = '1'\n" +
  18278. " and gdd.accountid = :accountid\n" +
  18279. " and gdd.deliverflag = '1'\n" +
  18280. " and gdd.delivertime >= :datebegin\n" +
  18281. " and gdd.delivertime < :dateend\n" +
  18282. " group by gdd.goodsid\n" +
  18283. " union all\n" +
  18284. " -- 半检不合格数 复检不合格数 损坯数\n" +
  18285. " select sp.goodsid\n" +
  18286. " ,sp.SCRAPTYPE numtype\n" +
  18287. " ,count(sp.scrapproductid) id_num\n" +
  18288. " from tp_pm_scrapproduct sp\n" +
  18289. " where sp.valueflag = '1'\n" +
  18290. " and sp.accountid = :accountid\n" +
  18291. " and sp.auditstatus = 1\n" +
  18292. " and sp.KILNID is null\n" +
  18293. " and sp.SCRAPTYPE <> '1'\n" +
  18294. " and sp.AUDITDATE >= :datebegin\n" +
  18295. " and sp.AUDITDATE < :dateend\n" +
  18296. " group by sp.goodsid, sp.SCRAPTYPE" +
  18297. " union all\n" +
  18298. " -- 干补数\n" +
  18299. " select pd.goodsid\n" +
  18300. " ,'B' numtype\n" +
  18301. " ,count( pd.productiondataid ) id_num \n" +
  18302. " from tp_pm_productiondata pd \n" +
  18303. " where pd.valueflag = 1 \n" +
  18304. " and pd.accountid = :accountid \n" +
  18305. " and pd.procedureid = 18 \n" +
  18306. " and pd.specialrepairflag = 1\n" +
  18307. " and pd.createtime >= :datebegin \n" +
  18308. " and pd.createtime < :dateend \n" +
  18309. " group by pd.goodsid \n" +
  18310. ") t\n" +
  18311. " group by t.goodsid) tt\n" +
  18312. " inner join tp_mst_goods g\n" +
  18313. " on tt.goodsid = g.goodsid\n";
  18314. if (!string.IsNullOrWhiteSpace(cre.Properties["goodscode"] + ""))
  18315. {
  18316. sqlString += " where instr(g.goodscode, :goodscode) > 0 \n";
  18317. oracleParameters.Add(new OracleParameter(":goodscode", cre.Properties["goodscode"]));
  18318. }
  18319. sqlString += " order by g.goodscode";
  18320. //*************************************************修改结束*******************************************************
  18321. oracleParameters.Add(new OracleParameter(":datebegin", cre.Properties["datebegin"]));
  18322. oracleParameters.Add(new OracleParameter(":dateend", cre.Properties["dateend"]));
  18323. //// 产品编码 GOODSCODE
  18324. //if (!string.IsNullOrWhiteSpace(cre.Properties["GOODSCODE"] + ""))
  18325. //{
  18326. // sqlString += " and instr(sr.GOODSCODE,:GOODSCODE) > 0 \n";
  18327. // oracleParameters.Add(new OracleParameter(":GOODSCODE", cre.Properties["GOODSCODE"]));
  18328. //}
  18329. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameters.ToArray());
  18330. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  18331. {
  18332. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  18333. return sre;
  18334. }
  18335. sre.Data = result;
  18336. return sre;
  18337. }
  18338. catch (Exception ex)
  18339. {
  18340. throw ex;
  18341. }
  18342. finally
  18343. {
  18344. oracleConn?.Close();
  18345. }
  18346. }
  18347. /// <summary>
  18348. /// 综合合格率分析表-综合优等率分析表
  18349. /// </summary>
  18350. /// <param name="cre"></param>
  18351. /// <param name="sUserInfo"></param>
  18352. /// <returns></returns>
  18353. public static ServiceResultEntity GetRPT040114_2Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  18354. {
  18355. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  18356. try
  18357. {
  18358. ServiceResultEntity sre = new ServiceResultEntity();
  18359. List<OracleParameter> oracleParameters = new List<OracleParameter>();
  18360. oracleParameters.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  18361. string sqlString = "select g.goodscode\n" +
  18362. " ,ppp.b_out_num\n" +
  18363. " ,(ppp.b_out_num - ppp.b_bad_num) b_h_num\n" +
  18364. " ,(ppp.c_out_num - ppp.c_bad_num) c_h_num\n" +
  18365. " ,decode(ppp.b_out_num\n" +
  18366. " ,0\n" +
  18367. " ,to_number(null)\n" +
  18368. " ,round((ppp.b_out_num - ppp.b_bad_num + ppp.c_out_num - ppp.c_bad_num) /\n" +
  18369. " ppp.b_out_num,4)) zh_r\n" +
  18370. "from (\n" +
  18371. " SELECT pp.goodsid ,\n" +
  18372. " nvl(sum(decode(pp.OUTflag, 1, b_out_num, 0)), 0) b_out_num,\n" +
  18373. " nvl(sum(decode(pp.OUTflag, 0, b_bad_num, 0)), 0) b_bad_num,\n" +
  18374. " nvl(sum(decode(pp.OUTflag, 1, c_out_num, 0)), 0) c_out_num,\n" +
  18375. " nvl(sum(decode(pp.OUTflag, 0, c_bad_num, 0)), 0) c_bad_num\n" +
  18376. " FROM (\n" +
  18377. " select p.goodsid\n" +
  18378. " ,1 AS OUTflag\n" +
  18379. " ,nvl(sum(case when ((p.procedureid = 11 AND p.valueflag = '1') OR (p.procedureid =104 AND p.isrefire = '0' AND p.checkflag = '1')) then 1 else 0 end), 0) b_out_num -- 本烧出窑数\n" +
  18380. " ,0 b_bad_num -- 本烧不合格数\n" +
  18381. " ,nvl(sum(case when ((p.procedureid = 58 AND p.valueflag = '1') OR (p.procedureid =104 AND p.isrefire = '6' AND p.checkflag = '1')) then 1 else 0 end), 0) c_out_num -- 重烧出窑数\n" +
  18382. " ,0 c_bad_num -- 重烧不合格数\n" +
  18383. " from tp_pm_productiondata p\n" +
  18384. " where p.accountid = :accountid\n" +
  18385. " and p.procedureid in (11, 58, 104)\n" +
  18386. " and p.createtime >= :datebegin\n" +
  18387. " and p.createtime < :dateend\n";
  18388. // 产品编码条件修正 fenglinyong modify 2022-05-10
  18389. if (!string.IsNullOrWhiteSpace(cre.Properties["goodscode"] + ""))
  18390. {
  18391. sqlString += " and instr(p.goodscode,:GOODSCODE) > 0 \n";
  18392. oracleParameters.Add(new OracleParameter(":GOODSCODE", cre.Properties["goodscode"]));
  18393. }
  18394. sqlString += " group by p.goodsid\n" +
  18395. " UNION ALL\n" +
  18396. " select t.goodsid\n" +
  18397. " ,0 AS OUTflag\n" +
  18398. " ,0 b_out_num\n" +
  18399. " ,nvl(sum(case when t.goodsleveltypeid in(6,7) and t.isrefire='0' then 1 else 0 end), 0) b_bad_num -- 本烧不合格数\n" +
  18400. " ,0 c_out_num\n" +
  18401. " ,nvl(sum(case when t.goodsleveltypeid in(6,7)and t.isrefire='6' then 1 else 0 end), 0) c_bad_num -- 重烧不合格数\n" +
  18402. " from (\n" +
  18403. " select distinct p.goodsid \n" +
  18404. " ,p.goodsleveltypeid \n" +
  18405. " ,p.barcode\n" +
  18406. " ,p.isrefire \n" +
  18407. " from tp_pm_productiondata p INNER JOIN TP_PM_DEFECT dfc on dfc.productiondataid=p.productiondataid\n" +
  18408. " where p.accountid = 1\n" +
  18409. " AND P.VALUEFLAG = 1\n" +
  18410. " and p.modeltype IN (-1, -4, -5)\n" +
  18411. " and p.CHECKBATCHNO = 1\n" +
  18412. " and length(p.kilncarbatchno) > 0\n" +
  18413. " and p.createtime >= :datebegin\n" +
  18414. " and p.createtime < :dateend \n";
  18415. //sqlString += " group by p.goodsid\n" +
  18416. //" UNION ALL\n" +
  18417. //" select p.goodsid\n" +
  18418. //" ,0 AS OUTflag\n" +
  18419. //" ,0 b_out_num\n" +
  18420. //" ,nvl(sum(case when p.goodsleveltypeid in(6,7) and p.isrefire='0' then 1 else 0 end), 0) b_bad_num -- 本烧不合格数\n" +
  18421. //" ,0 c_out_num\n" +
  18422. //" ,nvl(sum(case when p.goodsleveltypeid in(6,7)and p.isrefire='6' then 1 else 0 end), 0) c_bad_num -- 重烧不合格数\n" +
  18423. //" from tp_pm_productiondata p\n" +
  18424. //" where p.accountid = :accountid\n" +
  18425. //" AND P.VALUEFLAG = 1\n" +
  18426. //" and p.modeltype IN (-1, -4, -5)\n" +
  18427. //" and p.CHECKBATCHNO = 1\n" +
  18428. //" and length(p.kilncarbatchno) > 0\n" +
  18429. //" and p.createtime >= :datebegin\n" +
  18430. //" and p.createtime < :dateend\n";
  18431. // 产品编码条件修正 fenglinyong modify 2022-05-10
  18432. if (!string.IsNullOrWhiteSpace(cre.Properties["goodscode"] + ""))
  18433. {
  18434. sqlString += " and instr(p.goodscode,:GOODSCODE) > 0 \n";
  18435. oracleParameters.Add(new OracleParameter(":GOODSCODE", cre.Properties["goodscode"]));
  18436. }
  18437. sqlString += " ) t\n" +
  18438. " group by t.goodsid ) pp group by pp.goodsid) ppp\n" +
  18439. " inner join tp_mst_goods g\n" +
  18440. " on g.goodsid = ppp.goodsid\n" +
  18441. " order by g.goodscode ";
  18442. //sqlString += " group by p.goodsid ) pp group by pp.goodsid) ppp\n" +
  18443. //" inner join tp_mst_goods g\n" +
  18444. //" on g.goodsid = ppp.goodsid\n" +
  18445. //" order by g.goodscode ";
  18446. //string sqlString = "\n" +
  18447. //"select g.goodscode\n" +
  18448. //" ,pp.b_out_num\n" +
  18449. //" ,(pp.b_out_num - pp.b_bad_num) b_h_num\n" +
  18450. //" ,(pp.c_out_num - pp.c_bad_num) c_h_num\n" +
  18451. //" ,decode(pp.b_out_num\n" +
  18452. //" ,0\n" +
  18453. //" ,to_number(null)\n" +
  18454. //" ,round((pp.b_out_num - pp.b_bad_num + pp.c_out_num - pp.c_bad_num) /\n" +
  18455. //" pp.b_out_num,4)) zh_r\n" +
  18456. //" from (select p.goodsid\n" +
  18457. //// 恒洁三车间特殊处理(质量相关)
  18458. ////" ,nvl(sum(decode(p.procedureid, 11, 1, 0)), 0) b_out_num -- 本烧出窑数\n" +
  18459. ////" ,nvl(sum(decode(p.procedureid, 12, 1, 0)), 0) b_bad_num -- 本烧不合格数\n" +
  18460. ////" ,nvl(sum(decode(p.procedureid, 58, 1, 0)), 0) c_out_num -- 重烧出窑数\n" +
  18461. ////" ,nvl(sum(decode(p.procedureid, 59, 1, 0)), 0) c_bad_num -- 重烧不合格数\n" +
  18462. //" ,nvl(sum(case when p.procedureid in (11,104) and p.isrefire='0' then 1 else 0 end), 0) b_out_num -- 本烧出窑数\n" +
  18463. //" ,nvl(sum(case when p.procedureid in (12,105) and p.isrefire='0' then 1 else 0 end), 0) b_bad_num -- 本烧不合格数\n" +
  18464. //" ,nvl(sum(case when p.procedureid in (58,104) and p.isrefire='6' then 1 else 0 end), 0) c_out_num -- 重烧出窑数\n" +
  18465. //" ,nvl(sum(case when p.procedureid in (59,105) and p.isrefire='6' then 1 else 0 end), 0) c_bad_num -- 重烧不合格数\n" +
  18466. //// end
  18467. //" from tp_pm_productiondata p\n" +
  18468. //" where p.valueflag = '1'\n" +
  18469. //" and p.accountid = :accountid\n" +
  18470. //" and (p.procedureid in (11, 58, 104) or\n" +
  18471. //" (p.procedureid in (12, 59, 105) and p.goodsleveltypeid in (6, 7)))\n" +
  18472. //" and p.createtime >= :datebegin\n" +
  18473. //" and p.createtime < :dateend\n";
  18474. //sqlString += " group by p.goodsid) pp\n" +
  18475. //" inner join tp_mst_goods g\n" +
  18476. //" on g.goodsid = pp.goodsid\n" +
  18477. //" order by g.goodscode";
  18478. oracleParameters.Add(new OracleParameter(":datebegin", cre.Properties["datebegin"]));
  18479. oracleParameters.Add(new OracleParameter(":dateend", cre.Properties["dateend"]));
  18480. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameters.ToArray());
  18481. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  18482. {
  18483. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  18484. return sre;
  18485. }
  18486. sre.Data = result;
  18487. return sre;
  18488. }
  18489. catch (Exception ex)
  18490. {
  18491. throw ex;
  18492. }
  18493. finally
  18494. {
  18495. oracleConn?.Close();
  18496. }
  18497. }
  18498. #region 产成品交接撤销汇总表
  18499. /// <summary>
  18500. /// 取得F_RPT_030117画面(产成品交接撤销汇总表)
  18501. /// </summary>
  18502. /// <param name="user">登录用户信息</param>
  18503. /// <param name="se">查询条件</param>
  18504. /// <returns>查询结果</returns>
  18505. public static ServiceResultEntity GetF_RPT_030117SearchTotalData(SearchFinishedProductEntity orderEntity, SUserInfo user)
  18506. {
  18507. IDBConnection conn = null;
  18508. try
  18509. {
  18510. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  18511. string sqlString = "SELECT TS.GID,\n" +
  18512. " DECODE(TS.GID, '3', '合计', DECODE(TS.GID, '1', '小计[' || CREATETIME || ']', CREATETIME)) AS CREATETIME,\n" +
  18513. " DECODE(TS.GID, '1', '--', GOODSMODEL) AS GOODSMODEL,\n" +
  18514. " GOODSCOUNT\n" +
  18515. " FROM (SELECT GROUPING_ID(TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE) AS GID,\n" +
  18516. " DECODE(GROUPING(TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')), 1, '--', TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')) AS CREATETIME,\n" +
  18517. " DECODE(GROUPING(G.GOODSCODE), 1, '--', G.GOODSCODE) AS GOODSMODEL,\n" +
  18518. " COUNT(G.GOODSCODE) AS GOODSCOUNT\n" +
  18519. " FROM TP_PM_FHUNDO F\n" +
  18520. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  18521. " ON F.GROUTINGDAILYDETAILID = GDD.GROUTINGDAILYDETAILID\n" +
  18522. " LEFT JOIN TP_MST_GOODS G\n" +
  18523. " ON G.GOODSID = GDD.GOODSID\n" +
  18524. " WHERE F.ACCOUNTID = :AccountID\n";
  18525. List<OracleParameter> parameters = new List<OracleParameter>();
  18526. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  18527. // 撤销时间
  18528. if (orderEntity.UndoTimeStart != null)
  18529. {
  18530. sqlString = sqlString + " AND F.CREATETIME BETWEEN :UndoTimeStart AND :UndoTimeEnd \n";
  18531. parameters.Add(new OracleParameter(":UndoTimeStart", OracleDbType.Date, orderEntity.UndoTimeStart, ParameterDirection.Input));
  18532. parameters.Add(new OracleParameter(":UndoTimeEnd", OracleDbType.Date, orderEntity.UndoTimeEnd, ParameterDirection.Input));
  18533. }
  18534. // 交接时间
  18535. if (orderEntity.FHTimeStart != null)
  18536. {
  18537. sqlString = sqlString + " AND F.FHTIME BETWEEN :FHTIMEStart AND :FHTIMEEnd \n";
  18538. parameters.Add(new OracleParameter(":FHTIMEStart", OracleDbType.Date, orderEntity.FHTimeStart, ParameterDirection.Input));
  18539. parameters.Add(new OracleParameter(":FHTIMEEnd", OracleDbType.Date, orderEntity.FHTimeEnd, ParameterDirection.Input));
  18540. }
  18541. // 产品型号
  18542. if (!string.IsNullOrEmpty(orderEntity.GoodsModel))
  18543. {
  18544. sqlString = sqlString + " AND INSTR(g.GoodsCode,:GoodsCode)>0 \n";
  18545. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, orderEntity.GoodsModel, ParameterDirection.Input));
  18546. }
  18547. //过滤撤销时间再交接产品
  18548. if (orderEntity.FhFlag.ToString() == "1")
  18549. {
  18550. sqlString = sqlString + " AND NOT EXISTS( " +
  18551. " SELECT * FROM TP_PM_FINISHEDPRODUCT FP WHERE FP.GROUTINGDAILYDETAILID = GDD.GROUTINGDAILYDETAILID AND FP.FHTIME IS NOT NULL " +
  18552. " AND FP.FHTIME BETWEEN :UndoTimeStart AND :UndoTimeEnd ) \n";
  18553. }
  18554. sqlString += " GROUP BY GROUPING SETS((TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE),\n" +
  18555. " (TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')),())\n" +
  18556. " ORDER BY TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE) TS";
  18557. ServiceResultEntity sre = new ServiceResultEntity();
  18558. DataSet result = conn.GetSqlResultToDs(sqlString, parameters.ToArray());
  18559. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  18560. {
  18561. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  18562. }
  18563. sre.Data = result;
  18564. return sre;
  18565. }
  18566. catch (Exception ex)
  18567. {
  18568. throw ex;
  18569. }
  18570. finally
  18571. {
  18572. if (conn != null &&
  18573. conn.ConnState == ConnectionState.Open)
  18574. {
  18575. conn.Close();
  18576. }
  18577. }
  18578. }
  18579. /// <summary>
  18580. /// 取得F_RPT_030112画面(产成品交接汇总表)的明细信息查询数据
  18581. /// </summary>
  18582. /// <param name="user">登录用户信息</param>
  18583. /// <param name="se">查询条件</param>
  18584. /// <returns>查询结果</returns>
  18585. public static ServiceResultEntity GetF_RPT_030117SearchDetailSData(SearchFinishedProductEntity orderEntity, SUserInfo user)
  18586. {
  18587. IDBConnection conn = null;
  18588. try
  18589. {
  18590. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  18591. string sqlString = "SELECT O.ORDERNO,\n" +
  18592. " F.FHTIME,\n" +
  18593. " F.FHUSERCODE,\n" +
  18594. " GDD.BARCODE,\n" +
  18595. " GOODS.GOODSCODE,\n" +
  18596. " L.LOGONAME,\n" +
  18597. " GDD.USERCODE AS GROUTINGUSERCODE,\n" +
  18598. " GDD.GROUTINGLINECODE,\n" +
  18599. " GDD.GROUTINGMOULDCODE,\n" +
  18600. " GDD.GROUTINGDATE,\n" +
  18601. " TO_CHAR(GDD.DELIVERTIME, 'yyyy-mm-dd') AS DELIVERTIME,\n" +
  18602. //" (GOODS.MATERIALCODE || L.TAGCODE || GDD.ONLYCODE) AS FINISHEDBARCODE,\n" +
  18603. " nvl(GDD.outlabelcode, GOODS.MATERIALCODE || (select a.workcode from tp_mst_account a where a.accountid = gdd.accountid) || L.TAGCODE || GDD.ONLYCODE) AS FINISHEDBARCODE,\n" +
  18604. " TO_CHAR(F.CREATETIME, 'yyyy-mm-dd HH24:mi:ss') AS UNDOTIME,\n" +
  18605. " UNDOUSER.USERCODE AS UNDOUSERCODE\n" +
  18606. " FROM TP_PM_FHUNDO F\n" +
  18607. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  18608. " ON F.GROUTINGDAILYDETAILID = GDD.GROUTINGDAILYDETAILID\n" +
  18609. " LEFT JOIN TP_PM_ORDER O\n" +
  18610. " ON F.FHORDERID = O.ORDERID\n" +
  18611. " LEFT JOIN TP_MST_LOGO L\n" +
  18612. " ON GDD.LOGOID = L.LOGOID\n" +
  18613. " LEFT JOIN TP_MST_GOODS GOODS\n" +
  18614. " ON GDD.GOODSID = GOODS.GOODSID\n" +
  18615. " LEFT JOIN TP_MST_USER UNDOUSER\n" +
  18616. " ON UNDOUSER.USERID = F.CREATEUSERID\n" +
  18617. " WHERE F.ACCOUNTID = :AccountID";
  18618. List<OracleParameter> parameters = new List<OracleParameter>();
  18619. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  18620. // 撤销时间
  18621. if (orderEntity.UndoTimeStart != null)
  18622. {
  18623. sqlString = sqlString + " AND F.CREATETIME BETWEEN :UndoTimeStart AND :UndoTimeEnd \n";
  18624. parameters.Add(new OracleParameter(":UndoTimeStart", OracleDbType.Date, orderEntity.UndoTimeStart, ParameterDirection.Input));
  18625. parameters.Add(new OracleParameter(":UndoTimeEnd", OracleDbType.Date, orderEntity.UndoTimeEnd, ParameterDirection.Input));
  18626. }
  18627. // 交接时间
  18628. if (orderEntity.FHTimeStart != null)
  18629. {
  18630. sqlString = sqlString + " AND F.FHTIME BETWEEN :FHTimeStart AND :FHTimeEnd \n";
  18631. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, orderEntity.FHTimeStart, ParameterDirection.Input));
  18632. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, orderEntity.FHTimeEnd, ParameterDirection.Input));
  18633. }
  18634. // 产品型号
  18635. if (!string.IsNullOrEmpty(orderEntity.GoodsModel))
  18636. {
  18637. sqlString = sqlString + " AND INSTR(GOODS.GoodsCode,:GoodsCode) > 0 \n";
  18638. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, orderEntity.GoodsModel, ParameterDirection.Input));
  18639. }
  18640. //过滤撤销时间再交接产品
  18641. if (orderEntity.FhFlag.ToString() == "1")
  18642. {
  18643. sqlString = sqlString + " AND NOT EXISTS( " +
  18644. " SELECT * FROM TP_PM_FINISHEDPRODUCT FP WHERE FP.GROUTINGDAILYDETAILID = GDD.GROUTINGDAILYDETAILID AND FP.FHTIME IS NOT NULL " +
  18645. " AND FP.FHTIME BETWEEN :UndoTimeStart AND :UndoTimeEnd ) \n";
  18646. }
  18647. ServiceResultEntity sre = new ServiceResultEntity();
  18648. DataSet result = conn.GetSqlResultToDs(sqlString, parameters.ToArray());
  18649. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  18650. {
  18651. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  18652. }
  18653. sre.Data = result;
  18654. return sre;
  18655. }
  18656. catch (Exception ex)
  18657. {
  18658. throw ex;
  18659. }
  18660. finally
  18661. {
  18662. if (conn != null &&
  18663. conn.ConnState == ConnectionState.Open)
  18664. {
  18665. conn.Close();
  18666. }
  18667. }
  18668. }
  18669. ///<summary>
  18670. /// 月度成品入库预算表
  18671. /// </summary>
  18672. /// <param name="cre"></param>
  18673. /// <param name="sUserInfo"></param>
  18674. /// <returns></returns>
  18675. public static ServiceResultEntity GetRPT040116Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  18676. {
  18677. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  18678. try
  18679. {
  18680. ServiceResultEntity sre = new ServiceResultEntity();
  18681. DateTime tb = Convert.ToDateTime(cre.Properties["TimeBegin"]);
  18682. DateTime te = Convert.ToDateTime(cre.Properties["TimeEnd"]);
  18683. DateTime q = Convert.ToDateTime(cre.Properties["TimeBeginTwo"]);
  18684. OracleParameter[] oracleParameter = new OracleParameter[]
  18685. {
  18686. new OracleParameter("IN_ACCOUNTID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  18687. new OracleParameter("IN_TIMEBEGINTWO",OracleDbType.Varchar2, cre.Properties["TimeBeginTwo"], ParameterDirection.Input),
  18688. new OracleParameter("IN_GROUTINGLINECODE",OracleDbType.Varchar2, cre.Properties["GroutingLineCode"], ParameterDirection.Input),
  18689. new OracleParameter("IN_GROUTINGUSERCODE",OracleDbType.Varchar2, cre.Properties["GroutingUserCode"], ParameterDirection.Input),
  18690. new OracleParameter("IN_GOODCODE",OracleDbType.Varchar2, cre.Properties["GoodCode"], ParameterDirection.Input),
  18691. new OracleParameter("IN_GOODSTYPE",OracleDbType.Varchar2, cre.Properties["GoodsType"], ParameterDirection.Input),
  18692. new OracleParameter("IN_SUBTOTAL",OracleDbType.Varchar2, cre.Properties["Subtotal"], ParameterDirection.Input),
  18693. new OracleParameter("IN_TIMEBEGIN",OracleDbType.Varchar2, tb , ParameterDirection.Input),
  18694. new OracleParameter("IN_MONTH",OracleDbType.Varchar2, cre.Properties["Month"], ParameterDirection.Input),
  18695. new OracleParameter("IN_TIMEEND", OracleDbType.Varchar2, te, ParameterDirection.Input),
  18696. new OracleParameter("out_result",OracleDbType.RefCursor, null, ParameterDirection.Output),
  18697. };
  18698. DataSet result = oracleConn.ExecStoredProcedure("PRO_PM_MONTHGOODS", oracleParameter);
  18699. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  18700. {
  18701. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  18702. }
  18703. sre.Data = result;
  18704. oracleConn.Commit();
  18705. return sre;
  18706. }
  18707. catch (Exception ex)
  18708. {
  18709. if (oracleConn.ConnState == ConnectionState.Open)
  18710. {
  18711. oracleConn.Disconnect();
  18712. }
  18713. throw ex;
  18714. }
  18715. }
  18716. #endregion
  18717. public static ServiceResultEntity GetRecycledProductData(ClientRequestEntity cre, SUserInfo sUserInfo)
  18718. {
  18719. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  18720. try
  18721. {
  18722. ServiceResultEntity sre = new ServiceResultEntity();
  18723. string sqlString = @"
  18724. SELECT /**iROWNUM
  18725. d,**/
  18726. T.产品分级,
  18727. T.部门,
  18728. T.用户,
  18729. T.count AS 产量
  18730. FROM
  18731. (
  18732. SELECT
  18733. CASE
  18734. WHEN
  18735. TPGD.GOODSLEVELTYPEID = 4 THEN
  18736. '正品'
  18737. WHEN TPGD.GOODSLEVELTYPEID = 5 THEN
  18738. '副品'
  18739. WHEN TPGD.GOODSLEVELTYPEID = 6 THEN
  18740. '重烧'
  18741. WHEN TPGD.GOODSLEVELTYPEID = 7 THEN
  18742. '次品'
  18743. WHEN TPGD.GOODSLEVELTYPEID = 16 THEN
  18744. '冷补' ELSE '损坯'
  18745. END 产品分级,
  18746. CASE
  18747. WHEN SUBSTR(TPGD.GROUTINGLINENAME, 1, 1) = 'C' THEN
  18748. '三部'
  18749. WHEN SUBSTR(TPGD.GROUTINGLINENAME, 1, 1) = 'B' THEN
  18750. '二部' ELSE '一部'
  18751. END 部门,
  18752. tppd.USERCODE AS 用户,
  18753. COUNT(DISTINCT TPGD.BARCODE) count
  18754. FROM
  18755. TP_PM_GROUTINGDAILYDETAIL TPGD
  18756. LEFT JOIN(SELECT BARCODE, CREATETIME, USERCODE FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 80 AND VALUEFLAG = 1) TPPD ON TPGD.BARCODE = TPPD.BARCODE
  18757. WHERE
  18758. TPGD.RECYCLINGFLAG = 1
  18759. AND TPPD.CREATETIME >= :DateBegin
  18760. AND TPPD.CREATETIME <= :DateEnd
  18761. GROUP BY
  18762. TPGD.GOODSLEVELTYPEID,
  18763. tppd.USERCODE,
  18764. SUBSTR(TPGD.GROUTINGLINENAME, 1, 1)
  18765. ) T ORDER BY 产品分级 DESC ";
  18766. string sql2 = @"SELECT
  18767. COUNT( DISTINCT BARCODE ) count
  18768. FROM
  18769. TP_PM_PRODUCTIONDATA TPPD
  18770. WHERE
  18771. TPPD.PROCEDUREID IN ( 80 )
  18772. AND TPPD.VALUEFLAG = 1
  18773. AND TPPD.CREATETIME >=:DateBegin
  18774. AND TPPD.CREATETIME <=:DateEnd ";
  18775. OracleParameter[] oracleParameter = new OracleParameter[]
  18776. {
  18777. new Oracle.ManagedDataAccess.Client.OracleParameter(":DateBegin", OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  18778. new Oracle.ManagedDataAccess.Client.OracleParameter(":DateEnd", OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  18779. };
  18780. DataSet dt = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  18781. DataSet bt = oracleConn.GetSqlResultToDs(sql2, oracleParameter);
  18782. var zhong = decimal.Parse(bt.Tables[0].Rows[0]["COUNT"].ToString());
  18783. dt.Tables[0].Columns.Add("合格率", typeof(string));
  18784. for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
  18785. {
  18786. dt.Tables[0].Rows[i]["合格率"] = (decimal.Parse(dt.Tables[0].Rows[i]["产量"].ToString()) / zhong).ToString("p2");
  18787. }
  18788. sre.Data = dt;
  18789. return sre;
  18790. }
  18791. catch (Exception ex)
  18792. {
  18793. throw ex;
  18794. }
  18795. finally
  18796. {
  18797. oracleConn?.Close();
  18798. }
  18799. }
  18800. /// <summary>
  18801. /// 取得F_RPT_030112画面(产成品交接汇总表)的裸瓷汇总信息
  18802. /// </summary>
  18803. /// <param name="user">登录用户信息</param>
  18804. /// <param name="se">查询条件</param>
  18805. /// <returns>查询结果</returns>
  18806. public static ServiceResultEntity GetRPT0030112LCSumData(ClientRequestEntity cre, SUserInfo user)
  18807. {
  18808. IDBConnection conn = null;
  18809. try
  18810. {
  18811. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  18812. List<OracleParameter> parameters = new List<OracleParameter>();
  18813. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  18814. string sqlString = "SELECT nvl2(l.logoname,\n" +
  18815. " nvl2(g.goodscode,\n" +
  18816. " l.logoname,\n" +
  18817. " to_char('小计[' || l.logoname || ']')),\n" +
  18818. " '--') logoname\n" +
  18819. " ,nvl(g.goodscode, '--') goodscode" +
  18820. " ,nvl(g.goodsmodel, '--') goodsmodel" +
  18821. " ,nvl(gdd.materialcode, '--') materCode" +
  18822. " ,nvl(gdd.materialremark, '--') materRemark" +
  18823. " ,gdd.logoid" +
  18824. " ,gdd.goodsid" +
  18825. " ,COUNT(*) lcFhCount" +
  18826. " ,nvl(f.LCfhusercode, '--') lcFhUserCode" +
  18827. " FROM TP_PM_LCFHDO f\n" +
  18828. " inner JOIN tp_pm_groutingdailydetail gdd\n" +
  18829. " ON gdd.groutingdailydetailid = f.groutingdailydetailid\n" +
  18830. " LEFT JOIN tp_mst_logo l\n" +
  18831. " ON gdd.logoid = l.logoid\n" +
  18832. " LEFT JOIN tp_mst_goods G\n" +
  18833. " ON g.goodsid = gdd.goodsid\n" +
  18834. " LEFT JOIN TP_MST_GoodsType gt\n" +
  18835. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  18836. " WHERE f.LCfhtime IS NOT NULL\n";
  18837. // 交接时间起始
  18838. if (cre.Properties["FHTimeStart"] != null)
  18839. {
  18840. sqlString = sqlString + " AND F.LCFHTime >= :FHTimeStart \n";
  18841. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, cre.Properties["FHTimeStart"], ParameterDirection.Input));
  18842. }
  18843. // 交接时间结束
  18844. if (cre.Properties["FHTimeEnd"] != null)
  18845. {
  18846. sqlString = sqlString + " AND F.LCFHTime <= :FHTimeEnd \n";
  18847. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, cre.Properties["FHTimeEnd"], ParameterDirection.Input));
  18848. }
  18849. // 产品类别编码
  18850. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"] as string))
  18851. {
  18852. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 \n";
  18853. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  18854. }
  18855. // 产品编码
  18856. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"] as string))
  18857. {
  18858. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  18859. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input));
  18860. }
  18861. // 产品型号
  18862. if (!string.IsNullOrEmpty(cre.Properties["GoodsModel"] as string))
  18863. {
  18864. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0 \n";
  18865. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, cre.Properties["GoodsModel"], ParameterDirection.Input));
  18866. }
  18867. // 产品商标ID集
  18868. if (!string.IsNullOrEmpty(cre.Properties["LogoIDS"] as string))
  18869. {
  18870. sqlString += " AND instr(','||:LogoIDS||',', ',' || gdd.logoid || ',') > 0 \n";
  18871. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, cre.Properties["LogoIDS"], ParameterDirection.Input));
  18872. }
  18873. // 交接工号
  18874. if (!string.IsNullOrEmpty(cre.Properties["FHUserCode"] as string))
  18875. {
  18876. sqlString = sqlString + " AND instr(F.LCFHUserCode,:FHUserCode)>0 \n";
  18877. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, cre.Properties["FHUserCode"], ParameterDirection.Input));
  18878. }
  18879. // 试验标识
  18880. if (!string.IsNullOrEmpty(cre.Properties["TestMouldFlag"] as string))
  18881. {
  18882. sqlString = sqlString + " AND gdd.TestMouldFlag = :TestMouldFlag ";
  18883. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, cre.Properties["TestMouldFlag"], ParameterDirection.Input));
  18884. }
  18885. sqlString += " group by grouping sets(( l.logoname, g.goodscode, g.goodsmodel, gdd.materialcode,gdd.materialremark,gdd.logoid,gdd.goodsid,f.LCfhusercode),( l.logoname,gdd.logoid,f.LCfhusercode),(f.LCfhusercode),())";
  18886. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  18887. ServiceResultEntity sre = new ServiceResultEntity();
  18888. if (data == null || data.Rows.Count == 0)
  18889. {
  18890. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  18891. return sre;
  18892. }
  18893. sre.Data = new DataSet();
  18894. sre.Data.Tables.Add(data);
  18895. return sre;
  18896. }
  18897. catch (Exception ex)
  18898. {
  18899. throw ex;
  18900. }
  18901. finally
  18902. {
  18903. if (conn != null &&
  18904. conn.ConnState == ConnectionState.Open)
  18905. {
  18906. conn.Close();
  18907. }
  18908. }
  18909. }
  18910. /// <summary>
  18911. /// 取得F_RPT_030112画面(产成品交接汇总表)的明细信息查询数据裸瓷
  18912. /// </summary>
  18913. /// <param name="user">登录用户信息</param>
  18914. /// <param name="se">查询条件</param>
  18915. /// <returns>查询结果</returns>
  18916. public static ServiceResultEntity GetRPT0030112LCSumDetail(ClientRequestEntity cre, SUserInfo user)
  18917. {
  18918. IDBConnection conn = null;
  18919. try
  18920. {
  18921. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  18922. List<OracleParameter> parameters = new List<OracleParameter>();
  18923. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT0030112DetailLC(user, cre, ref parameters));
  18924. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  18925. ServiceResultEntity sre = new ServiceResultEntity();
  18926. if (data == null || data.Rows.Count == 0)
  18927. {
  18928. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  18929. return sre;
  18930. }
  18931. sre.Data = new DataSet();
  18932. sre.Data.Tables.Add(data);
  18933. return sre;
  18934. }
  18935. catch (Exception ex)
  18936. {
  18937. throw ex;
  18938. }
  18939. finally
  18940. {
  18941. if (conn != null &&
  18942. conn.ConnState == ConnectionState.Open)
  18943. {
  18944. conn.Close();
  18945. }
  18946. }
  18947. }
  18948. private static string GetRPT0030112DetailLC(SUserInfo user, ClientRequestEntity cre, ref List<OracleParameter> parameters)
  18949. {
  18950. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  18951. string sqlString = "SELECT F.LCFHTIME,\n" +
  18952. " F.LCFHUSERCODE,\n" +
  18953. " G.BARCODE,\n" +
  18954. " G.GOODSCODE,\n" +
  18955. " L.LOGONAME,\n" +
  18956. " G.USERCODE,\n" +
  18957. " G.GROUTINGLINECODE,\n" +
  18958. " G.GROUTINGMOULDCODE,\n" +
  18959. " G.GROUTINGDATE,\n" +
  18960. " G.DELIVERTIME,\n" +
  18961. " GOODS.goodsmodel,\n" +
  18962. " G.outlabelcode ,\n" +
  18963. " G.MATERIALCODE AS MaterCode,\n" +
  18964. " G.materialremark AS MaterRemarks,\n" +
  18965. " F.CREATETIME AS FINISHEDDATE,\n" +
  18966. " G.SecurityCode,\n" +
  18967. " G.TestMouldFlag\n" +
  18968. " FROM TP_PM_LCFHDO F\n" +
  18969. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL G\n" +
  18970. " ON F.GROUTINGDAILYDETAILID = G.GROUTINGDAILYDETAILID\n" +
  18971. " LEFT JOIN TP_MST_LOGO L\n" +
  18972. " ON G.LOGOID = L.LOGOID\n" +
  18973. " LEFT JOIN TP_MST_GOODS GOODS\n" +
  18974. " ON G.GOODSID = GOODS.GOODSID\n" +
  18975. " LEFT JOIN TP_MST_GOODSTYPE GOODSTYPE\n" +
  18976. " ON GOODS.GOODSTYPEID = GOODSTYPE.GOODSTYPEID\n" +
  18977. " WHERE F.LCFHTIME IS NOT NULL";
  18978. // 交接时间起始
  18979. if (cre.Properties["FHTimeStart"] != null)
  18980. {
  18981. sqlString = sqlString + " AND F.LCFHTime >= :FHTimeStart \n";
  18982. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, cre.Properties["FHTimeStart"], ParameterDirection.Input));
  18983. }
  18984. // 交接时间结束
  18985. if (cre.Properties["FHTimeEnd"] != null)
  18986. {
  18987. sqlString = sqlString + " AND F.LCFHTime <= :FHTimeEnd \n";
  18988. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, cre.Properties["FHTimeEnd"], ParameterDirection.Input));
  18989. }
  18990. // 产品类别编码
  18991. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"] as string))
  18992. {
  18993. sqlString = sqlString + " AND instr(GoodsType.GoodsTypeCode,:GoodsTypeCode)=1 \n";
  18994. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  18995. }
  18996. // 产品编码
  18997. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"] as string))
  18998. {
  18999. sqlString = sqlString + " AND instr(Goods.GoodsCode,:GoodsCode)>0 \n";
  19000. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input));
  19001. }
  19002. // 产品型号
  19003. if (!string.IsNullOrEmpty(cre.Properties["GoodsModel"] as string))
  19004. {
  19005. sqlString = sqlString + " AND instr(Goods.GoodsModel,:GoodsModel)>0 \n";
  19006. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, cre.Properties["GoodsModel"], ParameterDirection.Input));
  19007. }
  19008. // 产品商标ID集
  19009. if (!string.IsNullOrEmpty(cre.Properties["LogoIDS"] as string))
  19010. {
  19011. sqlString += " AND instr(','||:LogoIDS||',', ',' || L.logoid || ',') > 0 \n";
  19012. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, cre.Properties["LogoIDS"], ParameterDirection.Input));
  19013. }
  19014. // 交接工号
  19015. if (!string.IsNullOrEmpty(cre.Properties["FHUserCode"] as string))
  19016. {
  19017. sqlString = sqlString + " AND instr(F.LCFHUserCode,:FHUserCode)>0 \n";
  19018. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, cre.Properties["FHUserCode"], ParameterDirection.Input));
  19019. }
  19020. // 试验标识
  19021. if (!string.IsNullOrEmpty(cre.Properties["TestMouldFlag"] as string))
  19022. {
  19023. sqlString = sqlString + " AND g.TestMouldFlag = :TestMouldFlag ";
  19024. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, cre.Properties["TestMouldFlag"], ParameterDirection.Input));
  19025. }
  19026. // 产品条码
  19027. if (!string.IsNullOrEmpty(cre.Properties["BarCode"] as string))
  19028. {
  19029. sqlString = sqlString + " AND G.BarCode = :BarCode ";
  19030. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input));
  19031. }
  19032. return sqlString;
  19033. }
  19034. /// <summary>
  19035. /// 取得F_RPT_030117画面(产成品交接撤销汇总表)
  19036. /// </summary>
  19037. /// <param name="user">登录用户信息</param>
  19038. /// <param name="se">查询条件</param>
  19039. /// <returns>查询结果</returns>
  19040. public static ServiceResultEntity GetlcSearchTotalData(SearchFinishedProductEntity orderEntity, SUserInfo user)
  19041. {
  19042. IDBConnection conn = null;
  19043. try
  19044. {
  19045. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  19046. string sqlString = "SELECT TS.GID,\n" +
  19047. " DECODE(TS.GID, '3', '合计', DECODE(TS.GID, '1', '小计[' || CREATETIME || ']', CREATETIME)) AS CREATETIME,\n" +
  19048. " DECODE(TS.GID, '1', '--', GOODSMODEL) AS GOODSCODE,\n" +
  19049. " GOODSCOUNT COUNT\n" +
  19050. " FROM (SELECT GROUPING_ID(TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE) AS GID,\n" +
  19051. " DECODE(GROUPING(TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')), 1, '--', TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')) AS CREATETIME,\n" +
  19052. " DECODE(GROUPING(G.GOODSCODE), 1, '--', G.GOODSCODE) AS GOODSMODEL,\n" +
  19053. " COUNT(G.GOODSCODE) AS GOODSCOUNT\n" +
  19054. " FROM TP_PM_LCFHUNDO F\n" +
  19055. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  19056. " ON F.GROUTINGDAILYDETAILID = GDD.GROUTINGDAILYDETAILID\n" +
  19057. " LEFT JOIN TP_MST_GOODS G\n" +
  19058. " ON G.GOODSID = GDD.GOODSID\n" +
  19059. " WHERE F.ACCOUNTID = :AccountID\n";
  19060. List<OracleParameter> parameters = new List<OracleParameter>();
  19061. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  19062. // 撤销时间
  19063. if (orderEntity.UndoTimeStart != null)
  19064. {
  19065. sqlString = sqlString + " AND F.CREATETIME BETWEEN :UndoTimeStart AND :UndoTimeEnd \n";
  19066. parameters.Add(new OracleParameter(":UndoTimeStart", OracleDbType.Date, orderEntity.UndoTimeStart, ParameterDirection.Input));
  19067. parameters.Add(new OracleParameter(":UndoTimeEnd", OracleDbType.Date, orderEntity.UndoTimeEnd, ParameterDirection.Input));
  19068. }
  19069. // 交接时间
  19070. if (orderEntity.FHTimeStart != null)
  19071. {
  19072. sqlString = sqlString + " AND F.LCFHTIME BETWEEN :FHTIMEStart AND :FHTIMEEnd \n";
  19073. parameters.Add(new OracleParameter(":FHTIMEStart", OracleDbType.Date, orderEntity.FHTimeStart, ParameterDirection.Input));
  19074. parameters.Add(new OracleParameter(":FHTIMEEnd", OracleDbType.Date, orderEntity.FHTimeEnd, ParameterDirection.Input));
  19075. }
  19076. // 产品型号
  19077. if (!string.IsNullOrEmpty(orderEntity.GoodsModel))
  19078. {
  19079. sqlString = sqlString + " AND INSTR(g.GoodsCode,:GoodsCode)>0 \n";
  19080. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, orderEntity.GoodsModel, ParameterDirection.Input));
  19081. }
  19082. sqlString += " GROUP BY GROUPING SETS((TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE),\n" +
  19083. " (TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')),())\n" +
  19084. " ORDER BY TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE) TS";
  19085. ServiceResultEntity sre = new ServiceResultEntity();
  19086. DataSet result = conn.GetSqlResultToDs(sqlString, parameters.ToArray());
  19087. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  19088. {
  19089. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  19090. }
  19091. sre.Data = result;
  19092. return sre;
  19093. }
  19094. catch (Exception ex)
  19095. {
  19096. throw ex;
  19097. }
  19098. finally
  19099. {
  19100. if (conn != null &&
  19101. conn.ConnState == ConnectionState.Open)
  19102. {
  19103. conn.Close();
  19104. }
  19105. }
  19106. }
  19107. /// <summary>
  19108. /// 取得F_RPT_030112画面(产成品交接汇总表)的明细信息查询数据
  19109. /// </summary>
  19110. /// <param name="user">登录用户信息</param>
  19111. /// <param name="se">查询条件</param>
  19112. /// <returns>查询结果</returns>
  19113. public static ServiceResultEntity GetlcSearchDetailData(SearchFinishedProductEntity orderEntity, SUserInfo user)
  19114. {
  19115. IDBConnection conn = null;
  19116. try
  19117. {
  19118. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  19119. string sqlString = "SELECT F.LCFHTIME FHTIME,\n" +
  19120. " F.LCFHUSERCODE FHUSERCODE,\n" +
  19121. " GDD.BARCODE,\n" +
  19122. " GOODS.GOODSCODE,\n" +
  19123. " L.LOGONAME,\n" +
  19124. " GDD.USERCODE AS GROUTINGUSERCODE,\n" +
  19125. " GDD.GROUTINGLINECODE,\n" +
  19126. " GDD.GROUTINGMOULDCODE,\n" +
  19127. " GDD.GROUTINGDATE,\n" +
  19128. " TO_CHAR(GDD.DELIVERTIME, 'yyyy-mm-dd') AS DELIVERTIME,\n" +
  19129. " nvl(GDD.outlabelcode, GOODS.MATERIALCODE || (select a.workcode from tp_mst_account a where a.accountid = gdd.accountid) || L.TAGCODE || GDD.ONLYCODE) AS outlabelcode,\n" +
  19130. " TO_CHAR(F.CREATETIME, 'yyyy-mm-dd HH24:mi:ss') AS fhUndoTime,\n" +
  19131. " UNDOUSER.USERCODE AS FhUndoUserCode\n" +
  19132. " FROM TP_PM_LCFHUNDO F\n" +
  19133. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  19134. " ON F.GROUTINGDAILYDETAILID = GDD.GROUTINGDAILYDETAILID\n" +
  19135. " LEFT JOIN TP_MST_LOGO L\n" +
  19136. " ON GDD.LOGOID = L.LOGOID\n" +
  19137. " LEFT JOIN TP_MST_GOODS GOODS\n" +
  19138. " ON GDD.GOODSID = GOODS.GOODSID\n" +
  19139. " LEFT JOIN TP_MST_USER UNDOUSER\n" +
  19140. " ON UNDOUSER.USERID = F.CREATEUSERID\n" +
  19141. " WHERE F.ACCOUNTID = :AccountID";
  19142. List<OracleParameter> parameters = new List<OracleParameter>();
  19143. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  19144. // 撤销时间
  19145. if (orderEntity.UndoTimeStart != null)
  19146. {
  19147. sqlString = sqlString + " AND F.CREATETIME BETWEEN :UndoTimeStart AND :UndoTimeEnd \n";
  19148. parameters.Add(new OracleParameter(":UndoTimeStart", OracleDbType.Date, orderEntity.UndoTimeStart, ParameterDirection.Input));
  19149. parameters.Add(new OracleParameter(":UndoTimeEnd", OracleDbType.Date, orderEntity.UndoTimeEnd, ParameterDirection.Input));
  19150. }
  19151. // 交接时间
  19152. if (orderEntity.FHTimeStart != null)
  19153. {
  19154. sqlString = sqlString + " AND F.LCFHTIME BETWEEN :FHTimeStart AND :FHTimeEnd \n";
  19155. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, orderEntity.FHTimeStart, ParameterDirection.Input));
  19156. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, orderEntity.FHTimeEnd, ParameterDirection.Input));
  19157. }
  19158. // 产品型号
  19159. if (!string.IsNullOrEmpty(orderEntity.GoodsModel))
  19160. {
  19161. sqlString = sqlString + " AND INSTR(GOODS.GoodsCode,:GoodsCode) > 0 \n";
  19162. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, orderEntity.GoodsModel, ParameterDirection.Input));
  19163. }
  19164. ServiceResultEntity sre = new ServiceResultEntity();
  19165. DataSet result = conn.GetSqlResultToDs(sqlString, parameters.ToArray());
  19166. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  19167. {
  19168. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  19169. }
  19170. sre.Data = result;
  19171. return sre;
  19172. }
  19173. catch (Exception ex)
  19174. {
  19175. throw ex;
  19176. }
  19177. finally
  19178. {
  19179. if (conn != null &&
  19180. conn.ConnState == ConnectionState.Open)
  19181. {
  19182. conn.Close();
  19183. }
  19184. }
  19185. }
  19186. }
  19187. }