ReportModuleLogic.cs 1.0 MB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625
  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 Dongke.IBOSS.PRD.Basics.BaseResources;
  11. using Dongke.IBOSS.PRD.Basics.DataAccess;
  12. using Dongke.IBOSS.PRD.Service.DataModels;
  13. using Dongke.IBOSS.PRD.WCF.DataModels;
  14. using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
  15. using Dongke.IBOSS.PRD.WCF.DataModels.ReportModule;
  16. using Dongke.WinForm.Utilities;
  17. using Oracle.ManagedDataAccess.Client;
  18. using System;
  19. using System.Collections;
  20. using System.Collections.Generic;
  21. using System.Data;
  22. using System.Net.NetworkInformation;
  23. using System.Text;
  24. namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
  25. {
  26. /// <summary>
  27. /// 生产线报表分析
  28. /// </summary>
  29. public class ReportModuleLogic
  30. {
  31. #region 综合报表
  32. #region 跟踪统计表
  33. #region 生产管理
  34. /// <summary>
  35. /// 产品跟踪明细查询
  36. /// </summary>
  37. /// <param name="searchGoodsFollowingEntity">产品跟踪统计实体类</param>
  38. /// <param name="sUserInfo">用户基本信息</param>
  39. /// <returns>DataSet</returns>
  40. public static DataSet GetSearchGoodsFollowingDetailModule(SearchGoodsFollowingEntity searchGoodsFollowingEntity, SUserInfo sUserInfo)
  41. {
  42. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  43. try
  44. {
  45. con.Open();
  46. OracleParameter[] paras = new OracleParameter[]{
  47. new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  48. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  49. };
  50. DataSet dsSearchReport = con.ExecStoredProcedure("PRO_RPT_GetRPTDetailData", paras);
  51. return dsSearchReport;
  52. }
  53. catch (Exception ex)
  54. {
  55. throw ex;
  56. }
  57. finally
  58. {
  59. if (con.ConnState == ConnectionState.Open)
  60. {
  61. con.Close();
  62. }
  63. }
  64. }
  65. #endregion
  66. #endregion
  67. #endregion
  68. #region 统一使用ServiceResultEntity类模式
  69. #region 跟踪报表
  70. /// <summary>
  71. /// 取得RPT020101_1画面(产品跟踪)的查询数据
  72. /// </summary>
  73. /// <param name="user">登录用户信息</param>
  74. /// <param name="se">查询条件</param>
  75. /// <returns>查询结果</returns>
  76. public static ServiceResultEntity GetRPT020101SData(SUserInfo user, RPT020101_SE se)
  77. {
  78. IDBConnection conn = null;
  79. try
  80. {
  81. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  82. OracleParameter[] paras = new OracleParameter[]{
  83. new OracleParameter("in_barCode",OracleDbType.Varchar2,se.Barcode,ParameterDirection.Input),
  84. new OracleParameter("in_accountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  85. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  86. new OracleParameter("out_result1",OracleDbType.RefCursor,ParameterDirection.Output),
  87. };
  88. //DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  89. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetGoodsFollowingData", paras);
  90. ServiceResultEntity sre = new ServiceResultEntity();
  91. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  92. {
  93. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  94. return sre;
  95. }
  96. sre.Data = new DataSet();
  97. sre.Data = data;
  98. return sre;
  99. }
  100. catch (Exception ex)
  101. {
  102. throw ex;
  103. }
  104. finally
  105. {
  106. if (conn != null &&
  107. conn.ConnState == ConnectionState.Open)
  108. {
  109. conn.Close();
  110. }
  111. }
  112. }
  113. #endregion
  114. #region 明细报表
  115. /// <summary>
  116. /// 取得RPT010101_1画面(注浆明细表)的查询数据
  117. /// </summary>
  118. /// <param name="user">登录用户信息</param>
  119. /// <param name="se">查询条件</param>
  120. /// <returns>查询结果</returns>
  121. public static ServiceResultEntity GetRPT010101SData(SUserInfo user, RPT010101_SE se)
  122. {
  123. IDBConnection conn = null;
  124. try
  125. {
  126. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  127. List<OracleParameter> parameters = new List<OracleParameter>();
  128. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010101SSQL());
  129. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  130. if (se != null)
  131. {
  132. // 成型线类型ids
  133. if (!string.IsNullOrEmpty(se.GMouldTypeIDS))
  134. {
  135. sql.Append(" AND instr(','||:GMouldTypeIDS||',',','||TP_MST_GMouldType.gMouldTypeId||',')>0 ");
  136. parameters.Add(new OracleParameter(":GMouldTypeIDS", OracleDbType.NVarchar2, se.GMouldTypeIDS, ParameterDirection.Input));
  137. }
  138. // 成型线编码
  139. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  140. {
  141. //sql.Append(" AND TP_PM_InProduction.GROUTINGLINECODE like :GROUTINGLINECODE ");
  142. sql.Append(" AND instr(gdd.GROUTINGLINECODE,:GROUTINGLINECODE)>0 ");
  143. parameters.Add(new OracleParameter(":GROUTINGLINECODE", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  144. }
  145. // 产品编码模糊查询
  146. if (!string.IsNullOrEmpty(se.GoodsCode))
  147. {
  148. sql.Append(" AND gdd.GOODSNAME LIKE " + "'%" + se.GoodsCode + "%'" + "");
  149. }
  150. // 产品类别IDS
  151. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  152. {
  153. // sql.Append("AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1 ");
  154. sql.Append(" AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1 ");
  155. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  156. }
  157. // 模具号
  158. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  159. {
  160. sql.Append(" AND instr(gdd.GroutingMouldCode,:GroutingMouldCode)>0 ");
  161. parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  162. }
  163. // 注浆时间-开始
  164. if (se.GroutingDateStart.HasValue)
  165. {
  166. sql.Append(" AND gdd.GroutingDate >= :GroutingDateStart ");
  167. parameters.Add(new OracleParameter(":GroutingDateStart", OracleDbType.Date, se.GroutingDateStart.Value, ParameterDirection.Input));
  168. }
  169. // 模具类型IDS
  170. if (se.GroutingDateEnd.HasValue)
  171. {
  172. sql.Append(" AND gdd.GroutingDate <= :GroutingDateEnd ");
  173. parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  174. }
  175. if (se.GroutingBatchNo.HasValue)
  176. {
  177. //sql.Append(" AND TP_PM_GroutingDailyDetail.GroutingBatchNo = :GroutingBatchNo");
  178. sql.Append(" AND instr(gdd.GroutingBatchNo,:GroutingBatchNo)>0");
  179. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
  180. }
  181. // 成型工号
  182. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  183. {
  184. sql.Append(" and gdd.UserCode LIKE " + "'%" + se.GroutingUserCode + "%'" + "");
  185. }
  186. // 未注浆原因
  187. if (!string.IsNullOrEmpty(se.NoGroutingRreason))
  188. {
  189. sql.Append(" AND instr(b.dictionaryvalue,:NoGroutingRreason)>0 ");
  190. parameters.Add(new OracleParameter(":NoGroutingRreason", OracleDbType.NVarchar2, se.NoGroutingRreason, ParameterDirection.Input));
  191. }
  192. // 生产工号IDS
  193. if (!string.IsNullOrEmpty(se.CreateUserIDS))
  194. {
  195. sql.Append(" and instr(',' || :CreateUserIDS || ',' ,','||gdd.CreateUserID||',' )>0 ");
  196. parameters.Add(new OracleParameter(":CreateUserIDS", OracleDbType.NVarchar2, se.CreateUserIDS, ParameterDirection.Input));
  197. }
  198. // 备注
  199. if (!string.IsNullOrEmpty(se.Remarks))
  200. {
  201. sql.Append(" AND INSTR(gdd.Remarks, :Remarks) > 0");
  202. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  203. }
  204. // 注浆标识
  205. if (!string.IsNullOrEmpty(se.GroutingFlag))
  206. {
  207. sql.Append(" AND gdd.GroutingFlag = :GroutingFlag");
  208. parameters.Add(new OracleParameter(":GroutingFlag", OracleDbType.Char, se.GroutingFlag, ParameterDirection.Input));
  209. }
  210. // 损坯标识
  211. if (!string.IsNullOrEmpty(se.ScrapFlag))
  212. {
  213. sql.Append(" AND gdd.ScrapFlag = :ScrapFlag");
  214. parameters.Add(new OracleParameter(":ScrapFlag", OracleDbType.Char, se.ScrapFlag, ParameterDirection.Input));
  215. }
  216. // 绑定条码
  217. if (!string.IsNullOrEmpty(se.BarCodeFlag))
  218. {
  219. if ("1" == se.BarCodeFlag)
  220. {
  221. sql.Append(" AND LENGTH(gdd.BarCode) > 0");
  222. }
  223. else
  224. {
  225. sql.Append(" AND (gdd.BarCode IS NULL OR LENGTH(gdd.BarCode) = 0)");
  226. }
  227. }
  228. // 交坯日期-开始
  229. if (se.DeliverTimeBegin.HasValue)
  230. {
  231. sql.Append(" AND gdd.DeliverTime >= :DeliverTimeBegin");
  232. parameters.Add(new OracleParameter(":DeliverTimeBegin", OracleDbType.Date, se.DeliverTimeBegin.Value, ParameterDirection.Input));
  233. }
  234. // 交坯日期-结束
  235. if (se.DeliverTimeEnd.HasValue)
  236. {
  237. sql.Append(" AND gdd.DeliverTime <= :DeliverTimeEnd");
  238. parameters.Add(new OracleParameter(":DeliverTimeEnd", OracleDbType.Date, se.DeliverTimeEnd.Value, ParameterDirection.Input));
  239. }
  240. // 交坯标识
  241. if (!string.IsNullOrEmpty(se.DeliverFlag))
  242. {
  243. sql.Append(" AND gdd.DeliverFlag = :DeliverFlag");
  244. parameters.Add(new OracleParameter(":DeliverFlag", OracleDbType.Char, se.DeliverFlag, ParameterDirection.Input));
  245. }
  246. // 损坯日期-开始
  247. if (se.ScrapTimeBegin.HasValue)
  248. {
  249. sql.Append(" AND gdd.ScrapTime >= :ScrapTimeBegin");
  250. parameters.Add(new OracleParameter(":ScrapTimeBegin", OracleDbType.Date, se.ScrapTimeBegin.Value, ParameterDirection.Input));
  251. }
  252. // 损坯日期-结束
  253. if (se.ScrapTimeEnd.HasValue)
  254. {
  255. sql.Append(" AND gdd.ScrapTime <= :ScrapTimeEnd");
  256. parameters.Add(new OracleParameter(":ScrapTimeEnd", OracleDbType.Date, se.ScrapTimeEnd.Value, ParameterDirection.Input));
  257. }
  258. // 注浆操作时间-开始
  259. if (se.GCTimeBegin.HasValue)
  260. {
  261. sql.Append(" AND gdd.CreateTime >= :GCTimeBegin");
  262. parameters.Add(new OracleParameter(":GCTimeBegin", OracleDbType.Date, se.GCTimeBegin.Value, ParameterDirection.Input));
  263. }
  264. // 注浆操作时间-结束
  265. if (se.GCTimeEnd.HasValue)
  266. {
  267. sql.Append(" AND gdd.CreateTime <= :GCTimeEnd");
  268. parameters.Add(new OracleParameter(":GCTimeEnd", OracleDbType.Date, se.GCTimeEnd.Value, ParameterDirection.Input));
  269. }
  270. // 试验标识
  271. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  272. {
  273. sql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag");
  274. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  275. }
  276. // 工段250306
  277. if (!string.IsNullOrEmpty(se.GroutingLineNo))
  278. {
  279. sql.Append(" AND instr(tp_pc_groutingline.GroutingLineNo, :GroutingLineNo) > 0 ");
  280. parameters.Add(new OracleParameter(":GroutingLineNo", OracleDbType.NVarchar2, se.GroutingLineNo, ParameterDirection.Input));
  281. }
  282. // 车间250306
  283. if (!string.IsNullOrEmpty(se.WorkShop))
  284. {
  285. if (se.WorkShop.ToString() == "高压")
  286. {
  287. sql.Append(" AND tp_pc_groutingline.HIGHPRESSUREFLAG=1");
  288. }
  289. else
  290. if (se.WorkShop.ToString() == "干补")
  291. {
  292. sql.Append(" AND tp_pc_groutingline.GROUTINGLINECODE='00' ");
  293. }
  294. else
  295. if (se.WorkShop.ToString() == "补码")
  296. {
  297. sql.Append(" AND tp_pc_groutingline.GROUTINGLINECODE='01' ");
  298. }
  299. else
  300. {
  301. sql.Append(" AND INSTR(tp_pc_groutingline.GROUTINGLINECODE, :WorkShop) > 0");
  302. parameters.Add(new OracleParameter(":WorkShop", OracleDbType.NVarchar2, se.WorkShop, ParameterDirection.Input));
  303. }
  304. }
  305. //sql.Append(" AND TP_PM_GroutingDailyDetail.GroutingLineID in(Select PurviewID from TP_MST_UserPurview where PurviewType= 5 and UserID = :UserID) ");
  306. 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))");
  307. parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  308. }
  309. sql.Append(@" GROUP BY gdd.GROUTINGLINECODE,
  310. gdd.GoodsCode,
  311. gdd.UserCode,
  312. gdd.GroutingDate,
  313. TP_PC_GroutingLine.MOULDQUANTITY ,
  314. TP_MST_GMouldType.Gmouldtypename,
  315. TP_MST_GOODSTYPE.GOODSTYPENAME,
  316. TP_MST_GOODS.GOODSSPECIFICATION,
  317. gdd.GroutingMouldCode,
  318. TP_MST_DataDictionary.DICTIONARYVALUE,
  319. gdd.Groutingcount,
  320. gdd.GroutingBatchNo,
  321. gdd.Barcode,
  322. PRO.PROCEDURENAME ,
  323. tp_mst_user.UserCode ,
  324. tp_mst_user.username ,
  325. gdd.SCRAPFLAG,
  326. TPSP.PROCEDURENAME,
  327. gdd.GoodsName,
  328. gdd.GROUTINGFLAG,
  329. gdd.GMOULDSTATUS,
  330. gdd.DeliverTime,
  331. gdd.DeliverFlag,
  332. gdd.SLURRY_WEIGHT,
  333. gdd.COOL1_WEIGHT,
  334. gdd.BAKEOUT1_WEIGHT,
  335. gdd.DELIVER_WEIGHT,
  336. gdd.GLAZE1_WEIGHT,
  337. gdd.GLAZE2_WEIGHT,
  338. gdd.FINISHED_WEIGHT,
  339. gdd.LUSTERWAREWEIGHT,
  340. tp_sys_gmouldstatus.gmouldstatusname,
  341. b.dictionaryvalue ,
  342. gdd.SCRAPTIME,
  343. gdd.CreateTime,
  344. mu.usercode ,
  345. mu.username ,TP_MST_Logo.Logoname, TP_MST_Logo.Logocode,gdd.SecurityCode,
  346. gdd.testflag,
  347. gdd.testmouldflag,STAFF.STAFFNAME
  348. )
  349. GROUP BY
  350. GROUPING SETS (
  351. (
  352. SUBSTR( GROUTINGLINECODE, 1, 3 ),
  353. SUBSTR( GROUTINGLINECODE, 1, 2 ),
  354. GROUTINGLINECODE,
  355. GOODSCODE,
  356. USERCODE,
  357. NM,
  358. GROUTINGDATE,
  359. GroutingBatchNo,
  360. MOULDQUANTITY,
  361. Gmouldtypename,
  362. GOODSTYPENAME,
  363. GOODSSPECIFICATION,
  364. GroutingMouldCode,
  365. DICTIONARYVALUE,
  366. Groutingcount,
  367. Barcode,
  368. PROCEDURES,
  369. CreateUserCode,
  370. createusername,
  371. SCRAPFLAG,
  372. PROCEDURENAME,
  373. GoodsName,
  374. GROUTINGFLAG,
  375. GMOULDSTATUS,
  376. DeliverTime,
  377. DeliverFlag,
  378. SLURRY_WEIGHT,
  379. COOL1_WEIGHT,
  380. BAKEOUT1_WEIGHT,
  381. DELIVER_WEIGHT,
  382. GLAZE1_WEIGHT,
  383. GLAZE2_WEIGHT,
  384. FINISHED_WEIGHT,
  385. LUSTERWAREWEIGHT,
  386. gmouldstatusname,
  387. NoGroutingRreason,
  388. SCRAPTIME,
  389. MONITORCODE,
  390. MONITORNAME,
  391. LogoCodeName,
  392. SecurityCode,
  393. testflag,
  394. testmouldflag,
  395. testflagname,
  396. STAFFNAME
  397. ),
  398. ( SUBSTR( GROUTINGLINECODE, 1, 3 ), SUBSTR( GROUTINGLINECODE, 1, 2 ), GROUTINGLINECODE, GOODSCODE, UserCode,GoodsName,GOODSSPECIFICATION,STAFFNAME,LogoCodeName ),
  399. ( SUBSTR( GROUTINGLINECODE, 1, 3 ), SUBSTR( GROUTINGLINECODE, 1, 2 ) ),
  400. ( SUBSTR( GROUTINGLINECODE, 1, 2 ) ),
  401. ( )
  402. )
  403. ");
  404. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  405. ServiceResultEntity sre = new ServiceResultEntity();
  406. if (data == null || data.Rows.Count == 0)
  407. {
  408. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  409. return sre;
  410. }
  411. sre.Data = new DataSet();
  412. sre.Data.Tables.Add(data);
  413. return sre;
  414. }
  415. catch (Exception ex)
  416. {
  417. throw ex;
  418. }
  419. finally
  420. {
  421. if (conn != null &&
  422. conn.ConnState == ConnectionState.Open)
  423. {
  424. conn.Close();
  425. }
  426. }
  427. }
  428. /// <summary>
  429. /// 获取RPT010101_1画面(注浆明细表)的查询sql
  430. /// </summary>
  431. /// <returns>sql</returns>
  432. private static string GetRPT010101SSQL()
  433. {
  434. string selSql =
  435. @"SELECT
  436. GROUPING_ID ( UserCode, SUBSTR( GROUTINGLINECODE, 1, 3 ), SUBSTR( GROUTINGLINECODE, 1, 2 ) ) GID,
  437. SUBSTR( GROUTINGLINECODE, 1, 3 ), SUBSTR( GROUTINGLINECODE, 1, 2 ),
  438. CASE WHEN GROUPING_ID ( UserCode, SUBSTR( GROUTINGLINECODE, 1, 3 ), SUBSTR( GROUTINGLINECODE, 1, 2 ) ) =0 AND NM IS NULL THEN TO_CHAR('员工小计')
  439. WHEN GROUPING_ID ( UserCode, SUBSTR( GROUTINGLINECODE, 1, 3 ), SUBSTR( GROUTINGLINECODE, 1, 2 ) ) =4 THEN TO_CHAR(SUBSTR( GROUTINGLINECODE, 1, 3 )||'小计')
  440. WHEN GROUPING_ID ( UserCode, SUBSTR( GROUTINGLINECODE, 1, 3 ), SUBSTR( GROUTINGLINECODE, 1, 2 ) ) =6 THEN TO_CHAR(SUBSTR( GROUTINGLINECODE, 1, 2 )||'合计')
  441. WHEN GROUPING_ID ( UserCode, SUBSTR( GROUTINGLINECODE, 1, 3 ), SUBSTR( GROUTINGLINECODE, 1, 2 ) ) =7 THEN TO_CHAR(SUBSTR( GROUTINGLINECODE, 1, 2 )||'总计')
  442. ELSE '' END compute,
  443. GROUTINGLINECODE,
  444. NM,
  445. COUNT(1) AS NUMS,
  446. GOODSCODE,
  447. USERCODE,
  448. GROUTINGDATE,
  449. CASE WHEN GROUTINGLINECODE IS NULL THEN SUM(case when NM=1 THEN GroutingBatchNo ELSE 0 END) ELSE GroutingBatchNo END GroutingBatchNo,
  450. CASE when GROUTINGLINECODE IS NULL THEN SUM(case when NM=1 THEN MOULDQUANTITY ELSE 0 END) ELSE MOULDQUANTITY END MOULDQUANTITY,
  451. Gmouldtypename,
  452. GOODSTYPENAME,
  453. GOODSSPECIFICATION,
  454. GroutingMouldCode,
  455. DICTIONARYVALUE,
  456. Groutingcount,
  457. Barcode,
  458. PROCEDURES AS Procedure,
  459. CreateUserCode,
  460. createusername,
  461. SCRAPFLAG,
  462. PROCEDURENAME,
  463. GoodsName,
  464. GROUTINGFLAG,
  465. GMOULDSTATUS,
  466. DeliverTime,
  467. DeliverFlag,
  468. SLURRY_WEIGHT,
  469. COOL1_WEIGHT,
  470. BAKEOUT1_WEIGHT,
  471. DELIVER_WEIGHT,
  472. GLAZE1_WEIGHT,
  473. GLAZE2_WEIGHT,
  474. FINISHED_WEIGHT,
  475. LUSTERWAREWEIGHT,
  476. gmouldstatusname,
  477. NoGroutingRreason,
  478. SCRAPTIME,
  479. MONITORCODE,
  480. MONITORNAME,
  481. LogoCodeName,
  482. SecurityCode,
  483. testflag,
  484. testmouldflag,
  485. testflagname,
  486. STAFFNAME
  487. FROM
  488. (
  489. SELECT
  490. gdd.GROUTINGLINECODE,
  491. ROW_NUMBER ( ) OVER ( PARTITION BY gdd.GROUTINGLINECODE ORDER BY gdd.GROUTINGLINECODE DESC ) AS NM,
  492. gdd.GoodsCode,
  493. gdd.UserCode,
  494. gdd.GroutingDate,
  495. MAX(gdd.GroutingBatchNo) GroutingBatchNo,
  496. TP_PC_GroutingLine.MOULDQUANTITY AS MOULDQUANTITY,
  497. TP_MST_GMouldType.Gmouldtypename,
  498. TP_MST_GOODSTYPE.GOODSTYPENAME,
  499. TP_MST_GOODS.GOODSSPECIFICATION,
  500. gdd.GroutingMouldCode,
  501. TP_MST_DataDictionary.DICTIONARYVALUE,
  502. gdd.Groutingcount,
  503. gdd.Barcode,
  504. PRO.PROCEDURENAME AS PROCEDURES,
  505. tp_mst_user.UserCode CreateUserCode,
  506. tp_mst_user.username createusername,
  507. gdd.SCRAPFLAG,
  508. TPSP.PROCEDURENAME,
  509. gdd.GoodsName,
  510. gdd.GROUTINGFLAG,
  511. gdd.GMOULDSTATUS,
  512. gdd.DeliverTime,
  513. gdd.DeliverFlag,
  514. gdd.SLURRY_WEIGHT,
  515. gdd.COOL1_WEIGHT,
  516. gdd.BAKEOUT1_WEIGHT,
  517. gdd.DELIVER_WEIGHT,
  518. gdd.GLAZE1_WEIGHT,
  519. gdd.GLAZE2_WEIGHT,
  520. gdd.FINISHED_WEIGHT,
  521. gdd.LUSTERWAREWEIGHT,
  522. tp_sys_gmouldstatus.gmouldstatusname,
  523. b.dictionaryvalue AS NoGroutingRreason,
  524. gdd.SCRAPTIME,
  525. gdd.CreateTime GCTime,
  526. mu.usercode MONITORCODE,
  527. mu.username MONITORNAME,
  528. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  529. gdd.SecurityCode,
  530. gdd.testflag,
  531. gdd.testmouldflag,
  532. CASE
  533. WHEN gdd.testflag = 1 THEN
  534. '试验线'
  535. WHEN gdd.testflag = 0 THEN
  536. '普通线'
  537. END testflagname,
  538. STAFF.STAFFNAME
  539. FROM
  540. TP_PM_GroutingDailyDetail gdd
  541. LEFT JOIN TP_PM_INPRODUCTION IP ON IP.GroutingDailyDetailID = gdd.GroutingDailyDetailID
  542. LEFT JOIN TP_PC_PROCEDURE PRO ON PRO.PROCEDUREID = IP.PROCEDUREID
  543. INNER JOIN TP_PM_GroutingDaily gd ON gd.GroutingDailyID = gdd.GroutingDailyID
  544. LEFT JOIN tp_mst_user mu ON mu.userid = gd.MONITORID
  545. INNER JOIN TP_PC_GroutingLine ON TP_PC_GroutingLine.GroutingLineID = gdd.GroutingLineID
  546. INNER JOIN TP_MST_GMouldType ON TP_MST_GMouldType.GMOULDTYPEID = TP_PC_GroutingLine.GMOULDTYPEID
  547. INNER JOIN TP_MST_Goods ON TP_MST_Goods.Goodsid = gdd.GoodsID
  548. INNER JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.Dictionaryid = TP_MST_Goods.Glazetypeid
  549. INNER JOIN TP_MST_GOODSTYPE ON TP_MST_GOODSTYPE.GOODSTYPEID = TP_MST_Goods.Goodstypeid
  550. INNER JOIN tp_sys_gmouldstatus ON gdd.gmouldstatus = tp_sys_gmouldstatus.gmouldstatusid
  551. LEFT JOIN tp_mst_user ON gdd.CreateUserID = tp_mst_user.userid
  552. LEFT JOIN TP_MST_DataDictionary b ON gdd.NoGroutingRreason = b.DictionaryID
  553. LEFT JOIN TP_MST_logo ON gdd.logoid = TP_MST_logo.logoid
  554. LEFT JOIN TP_PM_SCRAPPRODUCT TPSP ON gdd.BARCODE = TPSP.BARCODE
  555. AND TPSP.RECYCLINGFLAG = 0and TPSP.SPECIALREPAIRFLAG = 0and TPSP.AUDITSTATUS = 1and TPSP.valueflag = '1'
  556. LEFT JOIN (
  557. SELECT
  558. D.CLASSESSETTINGID,
  559. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  560. FROM
  561. ( SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D
  562. GROUP BY
  563. D.CLASSESSETTINGID
  564. ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  565. WHERE
  566. 1 = 1
  567. AND gdd.Valueflag = 1
  568. AND gdd.AccountID = 1 ";
  569. return selSql;
  570. }
  571. /// <summary>
  572. /// 取得RPT010102_1画面(半检明细表)的查询数据
  573. /// </summary>
  574. /// <param name="user">登录用户信息</param>
  575. /// <param name="se">查询条件</param>
  576. /// <returns>查询结果</returns>
  577. public static ServiceResultEntity GetRPT010102SData(SUserInfo user, RPT010102_SE se)
  578. {
  579. IDBConnection conn = null;
  580. try
  581. {
  582. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  583. OracleParameter[] paras = new OracleParameter[]{
  584. new OracleParameter("in_goodsID",OracleDbType.Varchar2,se.GoodsIDS,ParameterDirection.Input),
  585. new OracleParameter("in_testUserID",OracleDbType.Varchar2,se.TestUserIDS,ParameterDirection.Input),
  586. new OracleParameter("in_groutingUserID",OracleDbType.Varchar2,se.GroutingUserIDS,ParameterDirection.Input),
  587. new OracleParameter("in_goodsTypeID",OracleDbType.Varchar2,se.GoodsTypeIDS,ParameterDirection.Input),
  588. new OracleParameter("in_semiTestTypeID",OracleDbType.Varchar2,se.semiTestTypeID,ParameterDirection.Input),
  589. new OracleParameter("in_remarks",OracleDbType.Varchar2,se.Remarks,ParameterDirection.Input),
  590. new OracleParameter("in_semiTestDateStart",OracleDbType.Varchar2,se.SemiTestDateStart,ParameterDirection.Input),
  591. new OracleParameter("in_semiTestDateEnd",OracleDbType.Varchar2,se.SemiTestDateEnd,ParameterDirection.Input),
  592. new OracleParameter("in_accountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  593. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  594. };
  595. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetSemiTestDetail", paras);
  596. ServiceResultEntity sre = new ServiceResultEntity();
  597. if (data == null || data.Tables.Count == 0)
  598. {
  599. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  600. return sre;
  601. }
  602. sre.Data = new DataSet();
  603. sre.Data = data;
  604. return sre;
  605. }
  606. catch (Exception ex)
  607. {
  608. throw ex;
  609. }
  610. finally
  611. {
  612. if (conn != null &&
  613. conn.ConnState == ConnectionState.Open)
  614. {
  615. conn.Close();
  616. }
  617. }
  618. }
  619. /// <summary>
  620. /// 取得RPT010103画面(交坯明细表)的查询数据
  621. /// </summary>
  622. /// <param name="user">登录用户信息</param>
  623. /// <param name="se">查询条件</param>
  624. /// <returns>查询结果</returns>
  625. public static ServiceResultEntity GetRPT010103SData(SUserInfo user, RPT010103_SE se)
  626. {
  627. IDBConnection conn = null;
  628. try
  629. {
  630. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  631. List<OracleParameter> parameters = new List<OracleParameter>();
  632. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010103SSQL());
  633. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  634. // parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  635. if (se != null)
  636. {
  637. // 成型线编码
  638. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  639. {
  640. //sql.Append(" AND TP_PM_InProduction.GROUTINGLINECODE like :GROUTINGLINECODE ");
  641. sql.Append(" AND instr(pd.GROUTINGLINECODE,:GROUTINGLINECODE)>0 ");
  642. parameters.Add(new OracleParameter(":GROUTINGLINECODE", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  643. }
  644. // 成型线类别
  645. if (!string.IsNullOrEmpty(se.GMouldTypeIDS))
  646. {
  647. sql.Append(" AND instr(','||:GMouldTypeIDS||',',','||gt.GMouldTypeID||',')>0 ");
  648. parameters.Add(new OracleParameter(":GMouldTypeIDS", OracleDbType.NVarchar2, se.GMouldTypeIDS, ParameterDirection.Input));
  649. }
  650. // 交坯日期-开始
  651. if (se.CreateTimeBegin.HasValue)
  652. {
  653. sql.Append(" AND pd.CreateTime >= :CreateTimeBegin ");
  654. parameters.Add(new OracleParameter(":CreateTimeBegin", OracleDbType.Date, se.CreateTimeBegin.Value, ParameterDirection.Input));
  655. }
  656. // 交坯日期-结束
  657. if (se.CreateTimeEnd.HasValue)
  658. {
  659. sql.Append(" AND pd.CreateTime <= :CreateTimeEnd ");
  660. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  661. }
  662. // 注浆模具编号
  663. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  664. {
  665. //sql.Append(" AND INSTR(','||:GroutingMouldCode||',',','||pd.GroutingMouldCode||',') > 0 ");
  666. sql.Append(" AND INSTR(pd.GroutingMouldCode,:GroutingMouldCode) > 0 ");
  667. parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  668. }
  669. //产品IDS
  670. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  671. {
  672. // sql.Append(" and instr(','||:GoodsTypeIDS||',',','||gdt.GoodsTypeCode||',')=1");
  673. sql.Append(" AND instr(gdt.GoodsTypeCode,:GoodsTypeIDS)=1 ");
  674. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  675. }
  676. //产品类别IDS
  677. if (!string.IsNullOrEmpty(se.GoodsIDS))
  678. {
  679. sql.Append(" and instr(','||:GoodsIDS||',',','||pd.goodsid||',')>0 ");
  680. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  681. }
  682. // 备注
  683. if (!string.IsNullOrEmpty(se.Remarks))
  684. {
  685. sql.Append(" AND INSTR(pd.Remarks, :Remarks) > 0 ");
  686. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  687. }
  688. // 注浆工号
  689. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  690. {
  691. sql.Append(" AND INSTR( ','||:GroutingUserCode||',',','||pd.GroutingUserCode||',') > 0 ");
  692. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  693. }
  694. // 产品编码
  695. if (!string.IsNullOrEmpty(se.GoodsCode))
  696. {
  697. sql.Append(" AND INSTR(pd.GoodsCode, :GoodsCodeS) > 0 ");
  698. parameters.Add(new OracleParameter(":GoodsCodeS", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  699. }
  700. // 条码
  701. if (!string.IsNullOrEmpty(se.BarCode))
  702. {
  703. //sql.Append(" AND INSTR(','||:BarCode||',',','||pd.BarCode||',') > 0");
  704. sql.Append(" AND INSTR(pd.BarCode,:BarCode) > 0 ");
  705. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  706. }
  707. // 生产工号和注浆工号不同
  708. if (se.ProdUserIsGroutingUserFlag == 1)
  709. {
  710. sql.Append(" and pd.usercode<>pd.GroutingUserCode ");
  711. }
  712. // 车间
  713. if (!string.IsNullOrEmpty(se.WorkShop))
  714. {
  715. if (se.WorkShop.ToString() == "高压")
  716. {
  717. sql.Append(" AND gl.HIGHPRESSUREFLAG=1");
  718. }
  719. else
  720. if (se.WorkShop.ToString() == "干补")
  721. {
  722. sql.Append(" AND pd.GROUTINGLINECODE='00' ");
  723. }
  724. else if (se.WorkShop.ToString() == "补码")
  725. {
  726. sql.Append(" AND pd.GROUTINGLINECODE='01' ");
  727. }
  728. else
  729. {
  730. sql.Append(" AND INSTR(pd.GROUTINGLINECODE, :GroutingLineCodes) > 0 ");
  731. parameters.Add(new OracleParameter(":GroutingLineCodes", OracleDbType.NVarchar2, se.WorkShop, ParameterDirection.Input));
  732. }
  733. }
  734. }
  735. sql.Append(@" GROUP BY GROUPING SETS((
  736. pd.barcode,
  737. pd.groutingdate,
  738. pd.CreateTime,
  739. g.GoodsTypeID,
  740. gdt.GoodsTypeCode,
  741. gdt.GoodsTypeName,
  742. pd.goodsid,
  743. pd.goodscode,
  744. pd.goodsname,
  745. g.GoodsSpecification,
  746. g.GlazeTypeID,
  747. dd.dictionaryvalue,
  748. pd.GroutingMouldCode,
  749. pd.ProductionLineID,
  750. pd.ProductionLineCode,
  751. pd.ProductionLineName,
  752. pd.GroutingLineID,
  753. pd.GroutingLineCode,
  754. gt.GMouldTypeID,
  755. gt.GMouldTypeName,
  756. pd.UserID,
  757. u.usercode,
  758. pd.GroutingUserID,
  759. pd.GroutingUserCode,
  760. tp_mst_user.USERNAME,
  761. mu.username,
  762. pd.ISPUBLICBODY,
  763. gdd.GROUTINGCOUNT,
  764. TP_MST_Logo.Logocode,TP_MST_Logo.Logoname,uc.usercode),(pd.GroutingUserCode,tp_mst_user.USERNAME,pd.goodscode,
  765. pd.goodsname,g.GoodsSpecification,pd.GroutingLineCode
  766. ),(pd.GroutingUserCode),())
  767. ORDER BY DECODE(GROUPING_ID(pd.GroutingUserCode,pd.goodscode), 3, 1), pd.GroutingUserCode,GROUPING_ID(pd.GroutingUserCode,pd.goodscode,pd.GOODSNAME), pd.barcode");
  768. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  769. ServiceResultEntity sre = new ServiceResultEntity();
  770. if (data == null || data.Rows.Count == 0)
  771. {
  772. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  773. return sre;
  774. }
  775. sre.Data = new DataSet();
  776. sre.Data.Tables.Add(data);
  777. return sre;
  778. }
  779. catch (Exception ex)
  780. {
  781. throw ex;
  782. }
  783. finally
  784. {
  785. if (conn != null &&
  786. conn.ConnState == ConnectionState.Open)
  787. {
  788. conn.Close();
  789. }
  790. }
  791. }
  792. /// <summary>
  793. /// 获取RPT010103画面(交坯明细表)的查询sql
  794. /// </summary>
  795. /// <returns>sql</returns>
  796. private static string GetRPT010103SSQL()
  797. {
  798. string selSql = @"SELECT
  799. CASE when GROUPING_ID(pd.GroutingUserCode,pd.goodscode,pd.GOODSNAME) =0 AND pd.CreateTime is null THEN '小计'
  800. WHEN GROUPING_ID(pd.GroutingUserCode,pd.goodscode,pd.GOODSNAME)=7 THEN '总计'
  801. WHEN GROUPING_ID(pd.GroutingUserCode,pd.goodscode,pd.GOODSNAME)=3 THEN '合计'
  802. ELSE TO_CHAR(pd.barcode) end AS BARCODE,
  803. pd.groutingdate,
  804. pd.CreateTime,
  805. g.GoodsTypeID,
  806. gdt.GoodsTypeCode,
  807. gdt.GoodsTypeName,
  808. pd.goodsid,
  809. pd.goodscode,
  810. pd.goodsname,
  811. g.GoodsSpecification,
  812. g.GlazeTypeID,
  813. dd.dictionaryvalue AS GlazeTypeName,
  814. pd.GroutingMouldCode,
  815. pd.ProductionLineID,
  816. pd.ProductionLineCode,
  817. pd.ProductionLineName,
  818. pd.GroutingLineID,
  819. pd.GroutingLineCode,
  820. gt.GMouldTypeID,
  821. gt.GMouldTypeName,
  822. pd.UserID,
  823. u.usercode,
  824. pd.GroutingUserID,
  825. pd.GroutingUserCode,
  826. tp_mst_user.USERNAME AS GroutingUserNname,
  827. mu.username AS MONITORName,
  828. pd.ISPUBLICBODY,
  829. gdd.GROUTINGCOUNT,
  830. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  831. uc.usercode check1 , COUNT(1) AS NUMS
  832. FROM
  833. TP_PM_PRODUCTIONDATA pd
  834. LEFT JOIN (SELECT
  835. D.USERCODE,
  836. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) USERNAME
  837. FROM
  838. (SELECT users.USERCODE,HR.STAFFNAME FROM TP_MST_USERSTAFF us JOIN TP_HR_STAFF HR ON us.STAFFID = HR.STAFFID JOIN TP_MST_USER users ON us.USERID = users.USERID) D
  839. GROUP BY
  840. USERCODE) tp_mst_user ON pd.GROUTINGUSERCODE = tp_mst_user.USERCODE
  841. LEFT JOIN tp_pc_groutingline gl ON gl.groutinglineid = pd.GroutingLineID
  842. LEFT JOIN tp_mst_user mu ON mu.userid = gl.MONITORID
  843. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd ON pd.GROUTINGDAILYDETAILID = gdd.GROUTINGDAILYDETAILID
  844. INNER JOIN TP_MST_GMouldType gt ON pd.GMOULDTYPEID = gt.GMouldTypeID
  845. INNER JOIN TP_MST_Goods g ON pd.goodsid = g.goodsid
  846. LEFT JOIN TP_MST_DataDictionary dd ON dd.DictionaryType = 'TPC002'
  847. AND dd.dictionaryid = g.GlazeTypeID
  848. INNER JOIN tp_mst_user u ON pd.userid = u.userid
  849. INNER JOIN tp_mst_user uc ON pd.createuserid = uc.userid
  850. INNER JOIN TP_MST_GoodsType gdt ON g.GoodsTypeID = gdt.GoodsTypeID
  851. LEFT JOIN TP_MST_logo ON gdd.logoid = TP_MST_logo.logoid
  852. WHERE
  853. pd.PROCEDUREID = 7
  854. AND pd.AccountID =1
  855. AND pd.ValueFlag =" + (int)Constant.ValueFlag.Effective + "";
  856. //成型线查看权限
  857. //+ " and exists (select up.PurviewID "
  858. //+ " from TP_MST_UserPurview up where up.PurviewType='"
  859. //+ (int)Constant.PurviewType.ViewGroutingLine
  860. //+ "' and up.PurviewID=pd.GroutingLineID "
  861. //+ " and up.UserId=:UPUserId)";
  862. return selSql;
  863. }
  864. /// <summary>
  865. /// 取得RPT010105画面(成型线模具使用明细表)的查询数据
  866. /// </summary>
  867. /// <param name="user">登录用户信息</param>
  868. /// <param name="se">查询条件</param>
  869. /// <returns>查询结果</returns>
  870. public static ServiceResultEntity GetRPT010105SData(SUserInfo user, RPT010105_SE se)
  871. {
  872. IDBConnection conn = null;
  873. try
  874. {
  875. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  876. string sqlString =
  877. "SELECT t.groutinglinecode\n" +
  878. " ,gl.BuildingNo\n" +
  879. " ,gl.FloorNo\n" +
  880. " ,gl.GroutingLineNo\n" +
  881. " ,t.usercode\n" +
  882. " ,t.goodscode\n" +
  883. " ,t.GOODSSPECIFICATION\n" +
  884. " ,t.goodstypename\n" +
  885. " ,t.MouldQuantity\n" +
  886. " ,gld.groutingmouldcode\n" +
  887. " ,gms.gmouldstatusname\n" +
  888. " ,gld.beginuseddate\n" +
  889. " ,(SELECT MIN(ggg.groutingdate)\n" +
  890. " FROM tp_pm_groutingdailydetail ggg\n" +
  891. " WHERE ggg.groutinglinedetailid = t.groutinglinedetailid) groutingdate\n" +
  892. " ,MAX(t.GroutingCount)-SUM(t.groutingflag) mingroutingcount\n" +
  893. " ,SUM(t.groutingflag) sumgroutingcount\n" +
  894. " ,MAX(t.GroutingCount) maxGroutingCount\n" +
  895. " ,gld.groutingcount\n" +
  896. " FROM (SELECT gd.groutinglinecode\n" +
  897. " ,gd.usercode\n" +
  898. " ,gdd.goodsid\n" +
  899. " ,gd.MouldQuantity\n" +
  900. " ,gdd.groutinglinedetailid\n" +
  901. " ,decode(gdd.groutingflag, '1', 1, 0) groutingflag\n" +
  902. " ,gdd.GroutingCount\n" +
  903. " ,gt.goodstypename\n" +
  904. " ,g.goodscode\n" +
  905. " ,g.GOODSSPECIFICATION\n" +
  906. " FROM TP_PM_GroutingDaily gd\n" +
  907. " INNER JOIN TP_PM_GroutingDailyDetail gdd\n" +
  908. " ON gdd.groutingdailyid = gd.groutingdailyid\n" +
  909. " INNER JOIN TP_MST_Goods g\n" +
  910. " ON g.goodsid = gdd.goodsid\n" +
  911. " INNER JOIN TP_MST_GOODSTYPE gt\n" +
  912. " ON gt.goodstypeid = g.goodstypeid\n" +
  913. " WHERE gd.accountid = :AccountID\n" +
  914. " AND gd.groutingdate >= :GDateBegin\n" +
  915. " AND gd.groutingdate <= :GDateEnd\n" +
  916. " AND (:groutinglinecode is null or instr(gd.groutinglinecode, :groutinglinecode) > 0)\n" +
  917. " AND (:groutingusercode is null or instr(gdd.usercode, :groutingusercode) > 0)\n" +
  918. " AND (:goodscode is null or instr(gdd.goodscode, :goodscode) > 0)\n" +
  919. " AND (:goodstypecode is null or instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  920. " ) t\n" +
  921. " INNER JOIN tp_pc_groutinglinedetail gld\n" +
  922. " ON gld.groutinglinedetailid = t.groutinglinedetailid\n" +
  923. " INNER JOIN tp_pc_groutingline gl\n" +
  924. " ON gld.groutinglineid = gl.groutinglineid\n" +
  925. " INNER JOIN TP_SYS_GMouldStatus gms\n" +
  926. " ON gms.gmouldstatusid = gld.gmouldstatus\n" +
  927. " GROUP BY t.groutinglinecode\n" +
  928. " ,gl.BuildingNo\n" +
  929. " ,gl.FloorNo\n" +
  930. " ,gl.GroutingLineNo\n" +
  931. " ,t.usercode\n" +
  932. " ,t.goodscode\n" +
  933. " ,t.GOODSSPECIFICATION\n" +
  934. " ,t.goodstypename\n" +
  935. " ,t.MouldQuantity\n" +
  936. " ,gld.groutingmouldcode\n" +
  937. " ,gms.gmouldstatusname\n" +
  938. " ,gld.beginuseddate\n" +
  939. " ,gld.groutingcount\n" +
  940. " ,t.groutinglinedetailid\n" +
  941. " ORDER BY t.groutinglinecode, gld.groutingmouldcode, t.groutinglinedetailid";
  942. List<OracleParameter> parameters = new List<OracleParameter>();
  943. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  944. parameters.Add(new OracleParameter(":GDateBegin", OracleDbType.Date, se.GDateBegin, ParameterDirection.Input));
  945. parameters.Add(new OracleParameter(":GDateEnd", OracleDbType.Date, se.GDateEnd, ParameterDirection.Input));
  946. parameters.Add(new OracleParameter(":groutinglinecode", OracleDbType.Varchar2, se.GroutingLineCode, ParameterDirection.Input));
  947. parameters.Add(new OracleParameter(":groutingusercode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  948. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  949. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  950. DataTable data = conn.GetSqlResultToDt(sqlString.ToString(), parameters.ToArray());
  951. ServiceResultEntity sre = new ServiceResultEntity();
  952. if (data == null || data.Rows.Count == 0)
  953. {
  954. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  955. return sre;
  956. }
  957. sre.Data = new DataSet();
  958. sre.Data.Tables.Add(data);
  959. return sre;
  960. }
  961. catch (Exception ex)
  962. {
  963. throw ex;
  964. }
  965. finally
  966. {
  967. if (conn != null &&
  968. conn.ConnState == ConnectionState.Open)
  969. {
  970. conn.Close();
  971. }
  972. }
  973. }
  974. /// <summary>
  975. /// 取得RPT010106画面(成型线剩余注浆次数)的查询数据
  976. /// </summary>
  977. /// <param name="user">登录用户信息</param>
  978. /// <param name="se">查询条件</param>
  979. /// <returns>查询结果</returns>
  980. public static ServiceResultEntity GetRPT010106SData(SUserInfo user, RPT010106_SE se)
  981. {
  982. IDBConnection conn = null;
  983. try
  984. {
  985. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  986. string sqlString =
  987. "SELECT gl.buildingno\n" +
  988. " ,gl.floorno\n" +
  989. " ,gl.groutinglineno\n" +
  990. " ,gl.groutinglinecode\n" +
  991. " ,gl.Remarks\n" +
  992. " ,decode(UserCount,\n" +
  993. " 1,\n" +
  994. " mu.usercode,\n" +
  995. " (SELECT wmsys.wm_concat(to_char(gmu.usercode))\n" +
  996. " FROM tp_pc_groutinguser gu\n" +
  997. " INNER JOIN tp_mst_user gmu\n" +
  998. " ON gmu.userid = gu.userid\n" +
  999. " WHERE gu.groutinglineid = gl.groutinglineid)) groutingusercode\n" +
  1000. // 成型班长
  1001. " ,mnu.username as MONITORName" +
  1002. " ,g.goodscode\n" +
  1003. " ,g.goodsspecification\n" +
  1004. " ,gt.goodstypename\n" +
  1005. " --,gl.mouldquantity\n" +
  1006. " ,gldd.mouldquantity\n" +
  1007. " ,gmt.gmouldtypename\n" +
  1008. " ,gms.gmouldstatusname\n" +
  1009. " ,gldd.beginuseddate -- 上模日期\n" +
  1010. " ,gldd.groutingdate -- 首次注浆日期\n" +
  1011. " ,gldd.standardgroutingcount AS standardcount -- 标准注浆次数\n" +
  1012. " ,gldd.groutingcount -- 最大注浆次数\n" +
  1013. " ,gldd.standardgroutingcount - gldd.groutingcount AS mincount --剩余最少注浆次数\n" +
  1014. " ,gldd.sumstandardgroutingcount AS sumstandardcount -- 标准总注浆次数\n" +
  1015. " ,gldd.sumgroutingcount -- 总注浆次数\n" +
  1016. " ,gldd.sumstandardgroutingcount - gldd.sumgroutingcount AS leftcount --剩余总注浆次数\n" +
  1017. " ,round(decode(gl.mouldquantity,\n" +
  1018. " 0,\n" +
  1019. " 0,\n" +
  1020. " (gldd.sumstandardgroutingcount - gldd.sumgroutingcount) /\n" +
  1021. " gl.mouldquantity),\n" +
  1022. " 2) AS leftmaxcount -- 剩余最大注浆次数\n" +
  1023. " FROM tp_pc_groutingline gl\n" +
  1024. " INNER JOIN (SELECT gld.groutinglineid\n" +
  1025. " ,gld.goodsid\n" +
  1026. " ,COUNT(gld.groutinglinedetailid) mouldquantity\n" +
  1027. " ,MIN(gld.beginuseddate) beginuseddate\n" +
  1028. " ,MIN(gddd.groutingdate) groutingdate\n" +
  1029. " /* ,(SELECT MIN(gdd.groutingdate)\n" +
  1030. " FROM tp_pm_groutingdailydetail gdd\n" +
  1031. " WHERE gdd.groutinglinedetailid = gld.groutinglinedetailid\n" +
  1032. " AND gdd.groutingflag = '1') groutingdate*/\n" +
  1033. " ,MAX(gld.standardgroutingcount) standardgroutingcount\n" +
  1034. " ,MAX(gld.groutingcount) groutingcount\n" +
  1035. " ,SUM(gld.standardgroutingcount) sumstandardgroutingcount\n" +
  1036. " ,SUM(gld.groutingcount) sumgroutingcount\n" +
  1037. " FROM tp_pc_groutinglinedetail gld\n" +
  1038. " --LEFT JOIN tp_pm_groutingdailydetail gdd\n" +
  1039. " -- ON gdd.groutinglinedetailid = gld.groutinglinedetailid\n" +
  1040. " -- AND gdd.groutingflag = '1'\n" +
  1041. " LEFT JOIN (SELECT gdd.groutinglinedetailid\n" +
  1042. " ,gdd.mouldcode\n" +
  1043. " ,MIN(gdd.groutingdate) groutingdate\n" +
  1044. " FROM tp_pm_groutingdailydetail gdd\n" +
  1045. " WHERE gdd.accountid = :AccountID\n" +
  1046. " AND gdd.groutingflag = '1'\n" +
  1047. " GROUP BY gdd.groutinglinedetailid, gdd.mouldcode) gddd\n" +
  1048. " ON gddd.groutinglinedetailid = gld.groutinglinedetailid\n" +
  1049. " AND gddd.mouldcode = gld.mouldcode\n" +
  1050. " WHERE gld.valueflag = '1'\n" +
  1051. " GROUP BY gld.groutinglineid, gld.goodsid) gldd\n" +
  1052. " ON gldd.groutinglineid = gl.groutinglineid\n" +
  1053. " INNER JOIN tp_mst_goods g\n" +
  1054. " ON g.goodsid = gldd.goodsid\n" +
  1055. " INNER JOIN tp_mst_goodstype gt\n" +
  1056. " ON gt.goodstypeid = g.goodstypeid\n" +
  1057. " INNER JOIN tp_mst_gmouldtype gmt\n" +
  1058. " ON gmt.gmouldtypeid = gl.gmouldtypeid\n" +
  1059. " INNER JOIN tp_sys_gmouldstatus gms\n" +
  1060. " ON gms.gmouldstatusid = gl.gmouldstatus\n" +
  1061. " LEFT JOIN tp_mst_user mu\n" +
  1062. " ON mu.userid = gl.userid\n" +
  1063. // 成型班长
  1064. " LEFT JOIN tp_mst_user mnu" +
  1065. " ON mnu.userid = gl.MONITORID" +
  1066. " WHERE gl.accountid = :AccountID\n" +
  1067. " AND gl.valueflag = '1'\n" +
  1068. " AND (:Remarks is null or instr(gl.Remarks, :Remarks) > 0)\n" +
  1069. " AND (:groutinglinecode is null or instr(gl.groutinglinecode, :groutinglinecode) > 0)\n" +
  1070. " AND (:goodscode is null or instr(g.goodscode, :goodscode) > 0)\n" +
  1071. " AND (:goodstypecode is null or instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  1072. " ORDER BY gl.groutinglinecode, g.goodscode";
  1073. List<OracleParameter> parameters = new List<OracleParameter>();
  1074. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  1075. parameters.Add(new OracleParameter(":Remarks", OracleDbType.Varchar2, se.Remarks, ParameterDirection.Input));
  1076. parameters.Add(new OracleParameter(":groutinglinecode", OracleDbType.Varchar2, se.GroutingLineCode, ParameterDirection.Input));
  1077. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  1078. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  1079. DataTable data = conn.GetSqlResultToDt(sqlString.ToString(), parameters.ToArray());
  1080. ServiceResultEntity sre = new ServiceResultEntity();
  1081. if (data == null || data.Rows.Count == 0)
  1082. {
  1083. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  1084. return sre;
  1085. }
  1086. sre.Data = new DataSet();
  1087. sre.Data.Tables.Add(data);
  1088. return sre;
  1089. }
  1090. catch (Exception ex)
  1091. {
  1092. throw ex;
  1093. }
  1094. finally
  1095. {
  1096. if (conn != null &&
  1097. conn.ConnState == ConnectionState.Open)
  1098. {
  1099. conn.Close();
  1100. }
  1101. }
  1102. }
  1103. /// <summary>
  1104. /// 取得RPT010201_1画面(工序漏扫明细表)的查询数据
  1105. /// </summary>
  1106. /// <param name="user">登录用户信息</param>
  1107. /// <param name="se">查询条件</param>
  1108. /// <returns>查询结果</returns>
  1109. public static ServiceResultEntity GetRPT010201SData(SUserInfo user, RPT010201_SE se)
  1110. {
  1111. IDBConnection conn = null;
  1112. try
  1113. {
  1114. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1115. List<OracleParameter> parameters = new List<OracleParameter>();
  1116. // 校验时间--开始
  1117. if (se.beginCreateTime.HasValue)
  1118. {
  1119. parameters.Add(new OracleParameter("in_stardate", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  1120. }
  1121. // 校验时间--结束
  1122. if (se.endCreateTime.HasValue)
  1123. {
  1124. parameters.Add(new OracleParameter("in_enddate", OracleDbType.Date, se.endCreateTime.Value, ParameterDirection.Input));
  1125. }
  1126. conn.ExecStoredProcedure("PRO_PM_InitBarcodeMissing", parameters.ToArray());
  1127. parameters.Clear();
  1128. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010201SSQL(user, se, ref parameters));
  1129. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  1130. ServiceResultEntity sre = new ServiceResultEntity();
  1131. if (data == null || data.Rows.Count == 0)
  1132. {
  1133. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  1134. return sre;
  1135. }
  1136. sre.Data = new DataSet();
  1137. sre.Data.Tables.Add(data);
  1138. return sre;
  1139. }
  1140. catch (Exception ex)
  1141. {
  1142. throw ex;
  1143. }
  1144. finally
  1145. {
  1146. if (conn != null &&
  1147. conn.ConnState == ConnectionState.Open)
  1148. {
  1149. conn.Close();
  1150. }
  1151. }
  1152. }
  1153. /// <summary>
  1154. /// 获取RPT010201_1画面(工序漏扫明细表)的查询sql
  1155. /// </summary>
  1156. /// <returns>sql</returns>
  1157. private static string GetRPT010201SSQL(SUserInfo user, RPT010201_SE se, ref List<OracleParameter> parameters)
  1158. {
  1159. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  1160. #region
  1161. /*
  1162. selSql = selSql +
  1163. "select * from (" +
  1164. "select " +
  1165. "MissProcedureID, " +
  1166. "MissProcedureCode, " +
  1167. "case when GoodsType=TP_MST_GoodsType.GoodsTypeCode then to_char(TP_MST_GoodsType.GoodsTypeName) else to_char(GoodsType) end GoodsType, " +
  1168. "MissProcedureName, " +
  1169. "MissID, " +
  1170. "BarCode, " +
  1171. "OrganizationID, " +
  1172. "OrganizationName, " +
  1173. "OrganizationCode, " +
  1174. "OrganizationFullName, " +
  1175. "CompleteProcedureID, " +
  1176. "CompleteProcedureCode, " +
  1177. "CompleteProcedureName, " +
  1178. "ProcedureID, " +
  1179. "ProcedureCode, " +
  1180. "ProcedureName, " +
  1181. "GoodsID, " +
  1182. "GoodsCode, " +
  1183. "GoodsName, " +
  1184. "result.GoodsTypeID, " +
  1185. "result.CreateTime, " +
  1186. "result.GoodsTypeName, " +
  1187. "UserName, " +
  1188. "MissUserCode, " +
  1189. "barcodecount, seqno " +
  1190. "from " +
  1191. " ( " +
  1192. " select " +
  1193. " MissProcedureID, " +
  1194. " MissProcedureCode, " +
  1195. " decode(MissProcedureName,'小计',decode(MissProcedureID,'--','合计','--'),GoodsType) GoodsType, " +
  1196. " decode(MissProcedureID,'--','--',decode(MissProcedureName,'小计','小计',MissProcedureName)) MissProcedureName, " +
  1197. " MissID, " +
  1198. " BarCode, " +
  1199. " OrganizationID, " +
  1200. " OrganizationName, " +
  1201. " OrganizationCode, " +
  1202. " OrganizationFullName, " +
  1203. " CompleteProcedureID, " +
  1204. " CompleteProcedureCode, " +
  1205. " CompleteProcedureName, " +
  1206. " ProcedureID, " +
  1207. " ProcedureCode, " +
  1208. " ProcedureName, " +
  1209. " GoodsID, " +
  1210. " GoodsCode, " +
  1211. " GoodsName, " +
  1212. " GoodsTypeID, " +
  1213. " CreateTime, " +
  1214. " GoodsTypeName, " +
  1215. " UserName, " +
  1216. " MissUserCode, " +
  1217. " barcodecount,rownum seqno " +
  1218. " from " +
  1219. " ( " +
  1220. " select " +
  1221. " decode(grouping( MissProcedureID),1,'--',MissProcedureID) MissProcedureID, " +
  1222. " decode(grouping( MissProcedureCode),1,'--',MissProcedureCode) MissProcedureCode, " +
  1223. " decode(grouping( MissProcedureName),1,'小计',MissProcedureName) MissProcedureName, " +
  1224. " decode(grouping(GoodsType),1,'合计',GoodsType) GoodsType, " +
  1225. " decode(grouping(MissID),1,'--',MissID) MissID, " +
  1226. " decode(grouping(BarCode),1,'--',BarCode) BarCode, " +
  1227. " decode(grouping(OrganizationID),1,'--',OrganizationID) OrganizationID, " +
  1228. " decode(grouping(OrganizationName),1,'--',OrganizationName) OrganizationName, " +
  1229. " decode(grouping(OrganizationCode),1,'--',OrganizationCode) OrganizationCode, " +
  1230. " decode(grouping(OrganizationFullName),1,'--',OrganizationFullName) OrganizationFullName, " +
  1231. " decode(grouping(CompleteProcedureID),1,'--',CompleteProcedureID) CompleteProcedureID, " +
  1232. " decode(grouping(CompleteProcedureCode),1,'--',CompleteProcedureCode) CompleteProcedureCode, " +
  1233. " decode(grouping(CompleteProcedureName),1,'--',CompleteProcedureName) CompleteProcedureName, " +
  1234. " decode(grouping(ProcedureID),1,'--',ProcedureID) ProcedureID, " +
  1235. " decode(grouping(ProcedureCode),1,'--',ProcedureCode) ProcedureCode, " +
  1236. " decode(grouping(ProcedureName),1,'--',ProcedureName) ProcedureName, " +
  1237. " decode(grouping(GoodsID),1,'--',GoodsID) GoodsID, " +
  1238. " decode(grouping(GoodsCode),1,'--',GoodsCode) GoodsCode, " +
  1239. " decode(grouping(GoodsName),1,'--',GoodsName) GoodsName, " +
  1240. " decode(grouping(GoodsTypeID),1,'--',GoodsTypeID) GoodsTypeID, " +
  1241. " decode(grouping(CreateTime),1,'--',CreateTime) CreateTime, " +
  1242. " decode(grouping(GoodsTypeName),1,'--',GoodsTypeName) GoodsTypeName, " +
  1243. " decode(grouping(UserName),1,'--',UserName) UserName, " +
  1244. " decode(grouping(MissUserCode),1,'--',MissUserCode) MissUserCode, " +
  1245. " count(barcode) barcodecount " +
  1246. " from " +
  1247. " ( " +
  1248. " select TP_PM_BarCodeMissing.MissProcedureID, " +
  1249. " TP_PM_BarCodeMissing.MissProcedureCode, " +
  1250. " TP_PM_BarCodeMissing.MissProcedureName, " +
  1251. " substr(TP_MST_GoodsType.GOODSTYPECODE,1,6) GoodsType, " +
  1252. " TP_PM_BarCodeMissing.MissID, " +
  1253. " TP_PM_BarCodeMissing.BarCode, " +
  1254. " TP_PM_BarCodeMissing.OrganizationID, " +
  1255. " TP_PM_BarCodeMissing.OrganizationName, " +
  1256. " TP_PM_BarCodeMissing.OrganizationCode, " +
  1257. " TP_PM_BarCodeMissing.OrganizationFullName, " +
  1258. " TP_PM_BarCodeMissing.CompleteProcedureID, " +
  1259. " TP_PM_BarCodeMissing.CompleteProcedureCode, " +
  1260. " TP_PM_BarCodeMissing.CompleteProcedureName, " +
  1261. " TP_PM_BarCodeMissing.ProcedureID, " +
  1262. " TP_PM_BarCodeMissing.ProcedureCode, " +
  1263. " TP_PM_BarCodeMissing.ProcedureName, " +
  1264. " TP_PM_BarCodeMissing.GoodsID, " +
  1265. " TP_PM_BarCodeMissing.GoodsCode, " +
  1266. " TP_PM_BarCodeMissing.GoodsName, " +
  1267. " TP_PM_BarCodeMissing.GoodsTypeID, " +
  1268. " TP_PM_BarCodeMissing.MissUserCode, " +
  1269. " to_char(TP_PM_BarCodeMissing.CreateTime,'yyyy-MM-dd HH24:mi:ss') CreateTime, " +
  1270. " TP_MST_GoodsType.GoodsTypeName, " +
  1271. " TP_MST_USER.UserName " +
  1272. " from TP_PM_BarCodeMissing left join TP_MST_GoodsType " +
  1273. " on TP_PM_BarCodeMissing.GoodsTypeID=TP_MST_GoodsType.GoodsTypeID " +
  1274. " left join TP_MST_USER " +
  1275. " on TP_PM_BarCodeMissing.CreateUserID=TP_MST_USER.UserID " +
  1276. " where TP_PM_BarCodeMissing.valueflag=1 " +
  1277. " and TP_PM_BarCodeMissing.accountid=:AccountID ";
  1278. // 产品条码
  1279. if (!string.IsNullOrEmpty(se.Barcode))
  1280. {
  1281. selSql = selSql + " and TP_PM_BarCodeMissing.barcode=:Barcode ";
  1282. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1283. }
  1284. // 组织结构
  1285. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  1286. {
  1287. selSql = selSql + " and instr(',' || :OrganizationIDS || ',' ,','||TP_PM_BarCodeMissing.OrganizationID||',' )>0 ";
  1288. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  1289. }
  1290. // 完成工序
  1291. if (!string.IsNullOrEmpty(se.CompleteProcedureIDS))
  1292. {
  1293. selSql = selSql + " and instr(',' || :CompleteProcedureIDS || ',',','||TP_PM_BarCodeMissing.CompleteProcedureID||',' )>0 ";
  1294. parameters.Add(new OracleParameter(":CompleteProcedureIDS", OracleDbType.NVarchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  1295. }
  1296. // 校验工序
  1297. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  1298. {
  1299. selSql = selSql + " and instr(',' || :ProcedureIDS || ',',','||TP_PM_BarCodeMissing.procedureID||',' )>0 ";
  1300. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  1301. }
  1302. // 漏扫工序
  1303. if (!string.IsNullOrEmpty(se.MissingProcedureIDS))
  1304. {
  1305. selSql = selSql + " and instr(',' || :MissingProcedureIDS || ',',','||TP_PM_BarCodeMissing.missProcedureID||',' )>0 ";
  1306. parameters.Add(new OracleParameter(":MissingProcedureIDS", OracleDbType.NVarchar2, se.MissingProcedureIDS, ParameterDirection.Input));
  1307. }
  1308. // 产品IDS
  1309. if (!string.IsNullOrEmpty(se.GoodsIDS))
  1310. {
  1311. selSql = selSql + " and instr(',' || :GoodsIDS || ',',','||TP_PM_BarCodeMissing.goodsID||',' )>0 ";
  1312. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  1313. }
  1314. // 产品IDS
  1315. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  1316. {
  1317. selSql = selSql + " and instr(',' || :GoodsTypeIDS || ',',','||TP_PM_BarCodeMissing.goodsTypeID||',' )>0 ";
  1318. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  1319. }
  1320. // 校验时间--开始
  1321. if (se.beginCreateTime.HasValue)
  1322. {
  1323. selSql = selSql + " and TP_PM_BarCodeMissing.CreateTime>= :CreateTimeStart ";
  1324. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  1325. }
  1326. // 校验时间--结束
  1327. if (se.endCreateTime.HasValue)
  1328. {
  1329. selSql = selSql + " and TP_PM_BarCodeMissing.CreateTime<= :CreateTimeEnd ";
  1330. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.endCreateTime.Value, ParameterDirection.Input));
  1331. }
  1332. selSql = selSql +
  1333. // " order by missprocedureid,username " +
  1334. " ) " +
  1335. " group by rollup( " +
  1336. " GoodsType, " +
  1337. " MissProcedureID, " +
  1338. " MissProcedureCode, " +
  1339. " MissProcedureName, " +
  1340. " MissID, " +
  1341. " BarCode, " +
  1342. " OrganizationID, " +
  1343. " OrganizationName, " +
  1344. " OrganizationCode, " +
  1345. " OrganizationFullName, " +
  1346. " CompleteProcedureID, " +
  1347. " CompleteProcedureCode, " +
  1348. " CompleteProcedureName, " +
  1349. " ProcedureID, " +
  1350. " ProcedureCode, " +
  1351. " ProcedureName, " +
  1352. " GoodsID, " +
  1353. " GoodsCode, " +
  1354. " GoodsName, " +
  1355. " GoodsTypeID, " +
  1356. " CreateTime, " +
  1357. " GoodsTypeName,MissUserCode, " +
  1358. " UserName ) " +
  1359. " ) " +
  1360. " where UserName!='--' or " +
  1361. " (USERNAME='--' and missprocedurename='小计'and missprocedurecode='--' and missprocedureid!='--' ) " +
  1362. " or " +
  1363. " (USERNAME='--' and missprocedureid='--' and GoodsType!='合计') " +
  1364. " ) result left join TP_MST_GoodsType on result.GoodsType=TP_MST_GoodsType.GoodsTypeCode"
  1365. + " ) order by seqno";
  1366. */
  1367. #endregion
  1368. string selSql = "select decode(tt.gid, 0, tt.MissID, null) MissID, --漏扫ID\n" +
  1369. " decode(tt.gid, 7, '总计', 0, tt.BarCode, '--') BarCode, --产品条码\n" +
  1370. " --decode(tt.gid, 0, tt.OrganizationID, null) OrganizationID,\n" +
  1371. " --decode(tt.gid, 0, tt.OrganizationCode, '--') OrganizationCode,\n" +
  1372. " decode(tt.gid, 0, tt.OrganizationName, '--') OrganizationName, --漏扫部门\n" +
  1373. " --decode(tt.gid, 0, tt.OrganizationFullName, '--') OrganizationFullName,\n" +
  1374. " --decode(tt.gid, 0, tt.CompleteProcedureID, null) CompleteProcedureID,\n" +
  1375. " --decode(tt.gid, 0, tt.CompleteProcedureCode, '--') CompleteProcedureCode,\n" +
  1376. " decode(tt.gid, 0, tt.CompleteProcedureName, '--') CompleteProcedureName,\n" +
  1377. " --decode(tt.gid, 0, tt.ProcedureID, null) ProcedureID,\n" +
  1378. " --decode(tt.gid, 0, tt.ProcedureCode, '--') ProcedureCode,\n" +
  1379. " decode(tt.gid, 0, tt.ProcedureName, '--') ProcedureName,\n" +
  1380. " --decode(tt.gid, 0, tt.MissProcedureID, null) MissProcedureID,\n" +
  1381. " --decode(tt.gid, 0, tt.MissProcedureCode, '--') MissProcedureCode,\n" +
  1382. " decode(tt.gid, 1, '小计', 0, tt.MissProcedureName, '--') MissProcedureName,\n" +
  1383. " decode(tt.gid, 0, tt.GoodsID, null) GoodsID,\n" +
  1384. " decode(tt.gid, 0, tt.GoodsCode, '--') GoodsCode,\n" +
  1385. " decode(tt.gid, 0, tt.GoodsName, '--') GoodsName,\n" +
  1386. " decode(tt.gid, 0, tt.GoodsTypeID, null) GoodsTypeID,\n" +
  1387. " decode(tt.gid, 0, tt.MissUserID, null) MissUserID,\n" +
  1388. " decode(tt.gid, 0, tt.MissUserCode, '--') MissUserCode,\n" +
  1389. " decode(tt.gid, 0, tt.CreateTime, null) CreateTime,\n" +
  1390. " decode(tt.gid, 0, tt.CreateUserID, null) CreateUserID,\n" +
  1391. " decode(tt.gid, 0, tt.username, '--') username,\n" +
  1392. " decode(tt.gid, 0, tt.repaircode, '--') repaircode,\n" +
  1393. " decode(tt.gid, 0, tt.prepaircode, '--') prepaircode,\n" +
  1394. " decode(tt.gid, 3, '合计', 0, tt.goodstypename2, '--') goodstype,\n" +
  1395. " tt.barcodecount, --数量\n" +
  1396. " tt.LogoCodeName\n" +
  1397. " from (select grouping_id(t.goodstypename2, --产品大类\n" +
  1398. " --t.MissProcedureCode,\n" +
  1399. " t.MissProcedureName,\n" +
  1400. " t.MissID) gid,\n" +
  1401. " t.MissID, --漏扫ID\n" +
  1402. " t.BarCode, --产品条码\n" +
  1403. " --t.OrganizationID,\n" +
  1404. " --t.OrganizationCode,\n" +
  1405. " t.OrganizationName, --漏扫部门\n" +
  1406. " --t.OrganizationFullName,\n" +
  1407. " --t.CompleteProcedureID,\n" +
  1408. " --t.CompleteProcedureCode,\n" +
  1409. " t.CompleteProcedureName, --完成工序\n" +
  1410. " --t.ProcedureID,\n" +
  1411. " --t.ProcedureCode,\n" +
  1412. " t.ProcedureName, --校验工序\n" +
  1413. " --t.MissProcedureID,\n" +
  1414. " --t.MissProcedureCode,\n" +
  1415. " t.MissProcedureName, --漏扫工序\n" +
  1416. " t.GoodsID,\n" +
  1417. " t.GoodsCode, --产品编码\n" +
  1418. " t.GoodsName, --产品名称\n" +
  1419. " t.GoodsTypeID,\n" +
  1420. " t.MissUserID,\n" +
  1421. " t.MissUserCode, --漏扫工号\n" +
  1422. " t.CreateTime, --校验漏扫时间\n" +
  1423. " t.CreateUserID,\n" +
  1424. " t.username, --校验者\n" +
  1425. " t.repaircode, --补扫操作工号\n" +
  1426. " t.prepaircode, --补扫生产工号\n" +
  1427. " t.goodstypename2, --产品大类\n" +
  1428. " count(t.barcodecount) barcodecount, --数量\n" +
  1429. " t.LogoCodeName\n" +
  1430. " from (select bcm.MissID, --漏扫ID\n" +
  1431. " bcm.BarCode, --产品条码\n" +
  1432. " --bcm.OrganizationID,\n" +
  1433. " --bcm.OrganizationCode,\n" +
  1434. " bcm.OrganizationName, --漏扫部门\n" +
  1435. " --bcm.OrganizationFullName,\n" +
  1436. " --bcm.CompleteProcedureID,\n" +
  1437. " --bcm.CompleteProcedureCode,\n" +
  1438. " --bcm.CompleteProcedureName, --完成工序\n" +
  1439. " cedp.ProcedureName as CompleteProcedureName, --完成工序\n" +
  1440. " --bcm.ProcedureID,\n" +
  1441. " --bcm.ProcedureCode,\n" +
  1442. " --bcm.ProcedureName, --校验工序\n" +
  1443. " cp.ProcedureName, --校验工序\n" +
  1444. " --bcm.MissProcedureID,\n" +
  1445. " --bcm.MissProcedureCode,\n" +
  1446. " --bcm.MissProcedureName, --漏扫工序\n" +
  1447. " mp.ProcedureName as MissProcedureName, --漏扫工序\n" +
  1448. " bcm.GoodsID,\n" +
  1449. " bcm.GoodsCode, --产品编码\n" +
  1450. " bcm.GoodsName, --产品名称\n" +
  1451. " bcm.GoodsTypeID,\n" +
  1452. " bcm.MissUserID,\n" +
  1453. " bcm.MissUserCode, --漏扫工号\n" +
  1454. " bcm.CreateTime, --校验漏扫时间\n" +
  1455. " bcm.CreateUserID,\n" +
  1456. " u.username, --校验者\n" +
  1457. //" MU.usercode repaircode, --补扫操作工号\n" +
  1458. //" MU.pusercode prepaircode, --补扫生产工号\n" +
  1459. " bcm.ROPUserCode repaircode, --补扫操作工号\n" +
  1460. " bcm.RWorkUserCode prepaircode, --补扫生产工号\n" +
  1461. " gt2.goodstypename goodstypename2, --产品大类\n" +
  1462. " 1 barcodecount, --数量\n" +
  1463. " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName\n" +
  1464. " from TP_PM_BarCodeMissing bcm\n" +
  1465. " left join TP_MST_User u\n" +
  1466. " on bcm.CreateUserID = u.userid\n" +
  1467. " left join TP_MST_GoodsType gt\n" +
  1468. " on bcm.GoodsTypeID = gt.GoodsTypeID\n" +
  1469. " left join TP_MST_GoodsType gt2\n" +
  1470. " on substr(gt.GoodsTypeCode, 1, 6) = gt2.GoodsTypeCode\n" +
  1471. " and gt.accountid = gt2.accountid\n" +
  1472. /*
  1473. //" left join TP_PM_ProductionData PD\n" +
  1474. //" on PD.BarCode = bcm.BarCode\n" +
  1475. //" and PD.ProcedureID = bcm.MissProcedureID\n" +
  1476. //" left join TP_MST_User MU\n" +
  1477. //" on MU.UserID = PD.CreateUserID\n" +
  1478. " left join (select pd.barcode,\n" +
  1479. " pd.procedureid,\n" +
  1480. " pd.usercode pusercode,\n" +
  1481. " mu.usercode,\n" +
  1482. //" pd.usercode,\n" +
  1483. " max(bm.missid) missid\n" +
  1484. //" row_number() over(partition by pd.barcode, pd.procedureid order by pd.productiondataid) rnum\n" +
  1485. " from tp_pm_productiondata pd\n" +
  1486. " inner join tp_pm_barcodemissing bm\n" +
  1487. " on bm.barcode = pd.barcode\n" +
  1488. " and bm.missprocedureid = pd.procedureid\n" +
  1489. " and bm.createtime < pd.createtime\n" +
  1490. " and bm.valueflag ='1'\n" +
  1491. " inner join tp_mst_user mu\n" +
  1492. " on mu.userid = pd.createuserid\n" +
  1493. " where pd.valueflag = '1'\n" +
  1494. " group by pd.barcode, pd.procedureid, pd.usercode, mu.usercode\n" +
  1495. " ) MU\n" +
  1496. " on MU.barcode = bcm.barcode\n" +
  1497. " and MU.procedureid = bcm.missprocedureid\n" +
  1498. " and MU.missid = bcm.missid" +
  1499. //" and MU.rnum = 1" +
  1500. */
  1501. " left join tp_pc_procedure cedp \n" +
  1502. " on cedp.procedureid = bcm.CompleteProcedureID\n" +
  1503. " left join tp_pc_procedure cp \n" +
  1504. " on cp.procedureid = bcm.ProcedureID\n" +
  1505. " left join tp_pc_procedure mp \n" +
  1506. " on mp.procedureid = bcm.MissProcedureID\n" +
  1507. " left join TP_PM_GroutingDailyDetail \n" +
  1508. " on TP_PM_GroutingDailyDetail.barcode = bcm.BarCode\n" +
  1509. " left join tp_mst_logo \n" +
  1510. " on tp_mst_logo.logoid = TP_PM_GroutingDailyDetail.logoid\n" +
  1511. " where bcm.valueflag='1' \n" +
  1512. " and bcm.accountid=:AccountID \n";
  1513. // 产品条码
  1514. if (!string.IsNullOrEmpty(se.Barcode))
  1515. {
  1516. selSql = selSql + " and bcm.barcode=:Barcode ";
  1517. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1518. }
  1519. // 组织结构
  1520. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  1521. {
  1522. selSql = selSql + " and instr(',' || :OrganizationIDS || ',' ,','||bcm.OrganizationID||',' )>0 ";
  1523. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  1524. }
  1525. // 完成工序
  1526. if (!string.IsNullOrEmpty(se.CompleteProcedureIDS))
  1527. {
  1528. selSql = selSql + " and instr(',' || :CompleteProcedureIDS || ',',','||bcm.CompleteProcedureID||',' )>0 ";
  1529. parameters.Add(new OracleParameter(":CompleteProcedureIDS", OracleDbType.NVarchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  1530. }
  1531. // 校验工序
  1532. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  1533. {
  1534. selSql = selSql + " and instr(',' || :ProcedureIDS || ',',','||bcm.procedureID||',' )>0 ";
  1535. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  1536. }
  1537. // 漏扫工序
  1538. if (!string.IsNullOrEmpty(se.MissingProcedureIDS))
  1539. {
  1540. selSql = selSql + " and instr(',' || :MissingProcedureIDS || ',',','||bcm.missProcedureID||',' )>0 ";
  1541. parameters.Add(new OracleParameter(":MissingProcedureIDS", OracleDbType.NVarchar2, se.MissingProcedureIDS, ParameterDirection.Input));
  1542. }
  1543. // 产品IDS
  1544. if (!string.IsNullOrEmpty(se.GoodsIDS))
  1545. {
  1546. selSql = selSql + " and instr(',' || :GoodsIDS || ',',','||bcm.goodsID||',' )>0 ";
  1547. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  1548. }
  1549. // 产品IDS
  1550. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  1551. {
  1552. //selSql = selSql + " and instr(',' || :GoodsTypeIDS || ',',','||gt.goodsTypeCode||',' )=1 ";
  1553. selSql = selSql + " and instr(gt.goodsTypeCode,:GoodsTypeIDS )=1 ";
  1554. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  1555. }
  1556. // 校验时间--开始
  1557. if (se.beginCreateTime.HasValue)
  1558. {
  1559. selSql = selSql + " and bcm.CreateTime>= :CreateTimeStart ";
  1560. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  1561. }
  1562. // 校验时间--结束
  1563. if (se.endCreateTime.HasValue)
  1564. {
  1565. selSql = selSql + " and bcm.CreateTime<= :CreateTimeEnd ";
  1566. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.endCreateTime.Value, ParameterDirection.Input));
  1567. }
  1568. selSql += "\n" +
  1569. //" order by gt2.GoodsTypeCode,bcm.MissProcedureCode,\n" +
  1570. //" --bcm.GoodsCode,\n" +
  1571. //" bcm.BarCode,\n" +
  1572. //" bcm.ProcedureCode,\n" +
  1573. //" bcm.CompleteProcedureCode\n" +
  1574. //" ) t\n" +
  1575. " order by gt2.GoodsTypeCode,mp.ProcedureName,\n" +
  1576. " --bcm.GoodsCode,\n" +
  1577. " bcm.BarCode,\n" +
  1578. " cp.ProcedureName,\n" +
  1579. " cedp.ProcedureName\n" +
  1580. " ) t\n" +
  1581. " group by grouping sets((t.MissID, --漏扫ID\n" +
  1582. " t.BarCode, --产品条码\n" +
  1583. " t.goodstypename2, --产品大类\n" +
  1584. " /*t.OrganizationID, t.OrganizationCode,*/ t.OrganizationName, --漏扫部门\n" +
  1585. " /*t.OrganizationFullName, t.CompleteProcedureID, t.CompleteProcedureCode, t.CompleteProcedureName,*/ t.CompleteProcedureName, --完成工序\n" +
  1586. " /*t.ProcedureID, t.ProcedureCode, t.ProcedureName,*/ t.ProcedureName, --校验工序\n" +
  1587. " /*t.MissProcedureID, t.MissProcedureCode, t.MissProcedureName,*/ t.MissProcedureName, --漏扫工序\n" +
  1588. " t.GoodsID, t.GoodsCode, --产品编码\n" +
  1589. " t.GoodsName, --产品名称\n" +
  1590. " t.GoodsTypeID, t.MissUserID, t.MissUserCode, --漏扫工号\n" +
  1591. " t.CreateTime, --校验漏扫时间\n" +
  1592. " t.CreateUserID, t.username, --校验者\n" +
  1593. " t.repaircode, --补扫工号\n" +
  1594. " t.prepaircode, --补扫工号\n" +
  1595. " t.LogoCodeName --商标\n" +
  1596. " ),(t.goodstypename2, --产品大类\n" +
  1597. " /*t.MissProcedureCode,*/ t.MissProcedureName --漏扫工序\n" +
  1598. " ),(t.goodstypename2 --产品大类\n" +
  1599. " ),())) tt";
  1600. return selSql;
  1601. }
  1602. /// <summary>
  1603. /// 取得RPT010301_1画面(条码变更明细表)的查询数据
  1604. /// </summary>
  1605. /// <param name="user">登录用户信息</param>
  1606. /// <param name="se">查询条件</param>
  1607. /// <returns>查询结果</returns>
  1608. public static ServiceResultEntity GetRPT010301SData(SUserInfo user, RPT010301_SE se)
  1609. {
  1610. IDBConnection conn = null;
  1611. try
  1612. {
  1613. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1614. List<OracleParameter> parameters = new List<OracleParameter>();
  1615. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010301SSQL());
  1616. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  1617. if (se != null)
  1618. {
  1619. // 更换条码时间-开始
  1620. if (se.createTimeBegin.HasValue)
  1621. {
  1622. sql.Append(" and TP_PM_BarCodeRecord.CreateTime>= :CreateTimeBegin ");
  1623. parameters.Add(new OracleParameter(":CreateTimeBegin", OracleDbType.Date, se.createTimeBegin.Value, ParameterDirection.Input));
  1624. }
  1625. // 更换条码时间-结束
  1626. if (se.createTimeEnd.HasValue)
  1627. {
  1628. sql.Append(" and TP_PM_BarCodeRecord.CreateTime<= :CreateTimeEnd ");
  1629. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.createTimeEnd.Value, ParameterDirection.Input));
  1630. }
  1631. //成型线IDS
  1632. if (!string.IsNullOrEmpty(se.Barcode))
  1633. {
  1634. // 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 )");
  1635. 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 )");
  1636. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1637. }
  1638. }
  1639. sql.Append(" ORDER BY TP_PM_BarCodeRecord.CREATETIME ");
  1640. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  1641. ServiceResultEntity sre = new ServiceResultEntity();
  1642. if (data == null || data.Rows.Count == 0)
  1643. {
  1644. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  1645. return sre;
  1646. }
  1647. sre.Data = new DataSet();
  1648. sre.Data.Tables.Add(data);
  1649. return sre;
  1650. }
  1651. catch (Exception ex)
  1652. {
  1653. throw ex;
  1654. }
  1655. finally
  1656. {
  1657. if (conn != null &&
  1658. conn.ConnState == ConnectionState.Open)
  1659. {
  1660. conn.Close();
  1661. }
  1662. }
  1663. }
  1664. /// <summary>
  1665. /// 获取RPT010301_1画面(条码变更明细表)的查询sql
  1666. /// </summary>
  1667. /// <returns>sql</returns>
  1668. private static string GetRPT010301SSQL()
  1669. {
  1670. string selSql =
  1671. " SELECT "
  1672. + " TP_PM_BarCodeRecord.BarCode, "
  1673. + " TP_PM_BarCodeRecord.NewBarCode, "
  1674. + " TP_PM_BarCodeRecord.FirstBarCode, "
  1675. + " TP_PM_BarCodeRecord.FinalBarCode, "
  1676. + " TP_PM_BarCodeRecord.Createtime, "
  1677. + " TP_PM_GROUTINGDAILYDETAIL.GroutingLineCode, "
  1678. + " TP_PM_GROUTINGDAILYDETAIL.GroutingLineName, "
  1679. + " TP_MST_GMouldType.Gmouldtypename, "
  1680. + " TP_PM_GROUTINGDAILYDETAIL.GroutingDate, "
  1681. + " TP_PM_GROUTINGDAILYDETAIL.GroutingMouldCode, "
  1682. + " TP_PM_GROUTINGDAILYDETAIL.MouldCode, "
  1683. + " TP_PM_GROUTINGDAILYDETAIL.UserCode GroutingUserCode, "
  1684. + " TP_PM_GROUTINGDAILYDETAIL.GroutingCount , "
  1685. + " TP_PM_GROUTINGDAILYDETAIL.GoodsCode, "
  1686. + " TP_PM_GROUTINGDAILYDETAIL.GoodsName, "
  1687. + " TP_PC_PROCEDURE.PROCEDURECODE, "
  1688. + " TP_PC_PROCEDURE.PROCEDURENAME, "
  1689. // 成型班长
  1690. + " mu.username as MONITORName,"
  1691. + " TP_MST_USER.USERNAME, "
  1692. + " replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName "
  1693. + " from TP_PM_BarCodeRecord "
  1694. + " left join TP_PM_GROUTINGDAILYDETAIL on TP_PM_BarCodeRecord.FinalBarCode=TP_PM_GROUTINGDAILYDETAIL.Barcode "
  1695. + " inner join TP_PC_GroutingLine on TP_PC_GroutingLine.GroutingLineID=TP_PM_GroutingDailyDetail.GroutingLineID "
  1696. // 成型班长
  1697. + " LEFT JOIN tp_mst_user mu" +
  1698. " ON mu.userid = TP_PC_GroutingLine.MONITORID"
  1699. + " inner join TP_MST_GMouldType on TP_MST_GMouldType.GMOULDTYPEID=TP_PC_GroutingLine.GMOULDTYPEID "
  1700. + " left join TP_PC_PROCEDURE on TP_PM_BarCodeRecord.Procedureid=TP_PC_PROCEDURE.PROCEDUREID "
  1701. + " left join TP_MST_USER ON TP_PM_BarCodeRecord.CreateUserID=TP_MST_USER.USERID "
  1702. + " left join TP_MST_logo ON TP_MST_logo.logoid=TP_PM_GROUTINGDAILYDETAIL.logoid "
  1703. + " where TP_PM_GROUTINGDAILYDETAIL.ACCOUNTID=:AccountID ";
  1704. return selSql;
  1705. }
  1706. /// <summary>
  1707. /// 取得RPT010401画面(在产品明细表)的查询数据
  1708. /// </summary>
  1709. /// <param name="user">登录用户信息</param>
  1710. /// <param name="se">查询条件</param>
  1711. /// <returns>查询结果</returns>
  1712. public static ServiceResultEntity GetRPT010401SData(SUserInfo user, RPT010401_SE se)
  1713. {
  1714. IDBConnection conn = null;
  1715. try
  1716. {
  1717. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1718. List<OracleParameter> parameters = new List<OracleParameter>();
  1719. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010401SSQL());
  1720. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  1721. if (se != null)
  1722. {
  1723. // 条码
  1724. if (!string.IsNullOrEmpty(se.Barcode))
  1725. {
  1726. //sql.Append(" AND TP_PM_InProduction.BarCode=:Barcode ");
  1727. sql.Append(" AND instr(TP_PM_InProduction.BarCode,:Barcode)>0 ");
  1728. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  1729. }
  1730. // 产品IDS
  1731. if (!string.IsNullOrEmpty(se.GoodsIDS))
  1732. {
  1733. sql.Append(" AND instr(','||:GoodsIDS||',',','||TP_PM_InProduction.GoodsId||',')>0 ");
  1734. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  1735. }
  1736. //生产线IDS
  1737. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  1738. {
  1739. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction.ProductionLineID||',')>0 ");
  1740. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  1741. }
  1742. //完成工序IDS
  1743. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  1744. {
  1745. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ");
  1746. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  1747. }
  1748. //生产工号IDS
  1749. if (!string.IsNullOrEmpty(se.UserIDS))
  1750. {
  1751. sql.Append(" AND instr(','||:UserIDS||',',','||TP_PM_InProduction.UserID||',')>0 ");
  1752. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  1753. }
  1754. // 成型线编码
  1755. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  1756. {
  1757. //sql.Append(" AND TP_PM_InProduction.GROUTINGLINECODE like :GROUTINGLINECODE ");
  1758. sql.Append(" AND instr(TP_PM_InProduction.GROUTINGLINECODE,:GROUTINGLINECODE)>0 ");
  1759. parameters.Add(new OracleParameter(":GROUTINGLINECODE", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  1760. }
  1761. // 成型线类型IDS
  1762. if (!string.IsNullOrEmpty(se.GMouldTypeIDS))
  1763. {
  1764. sql.Append(" AND instr(','||:GMouldTypeIDS||',',','||TP_PM_InProduction.GMouldTypeID||',')>0 ");
  1765. parameters.Add(new OracleParameter(":GMouldTypeIDS", OracleDbType.NVarchar2, se.GMouldTypeIDS, ParameterDirection.Input));
  1766. }
  1767. // 交坯时间--开始
  1768. if (se.CreateTimeStart.HasValue)
  1769. {
  1770. sql.Append(" AND TP_PM_GroutingDailyDetail.delivertime >= :CreateTimeStart ");
  1771. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  1772. }
  1773. // 交坯时间--结束
  1774. if (se.CreateTimeEnd.HasValue)
  1775. {
  1776. sql.Append(" AND TP_PM_GroutingDailyDetail.delivertime <= :CreateTimeEnd ");
  1777. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  1778. }
  1779. // 完成时间--开始
  1780. if (se.UpdateTimeStart.HasValue)
  1781. {
  1782. sql.Append(" AND TP_PM_InProduction.Proceduretime >= :UpdateTimeStart ");
  1783. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  1784. }
  1785. // 完成时间--结束
  1786. if (se.UpdateTimeEnd.HasValue)
  1787. {
  1788. sql.Append(" AND TP_PM_InProduction.Proceduretime <= :UpdateTimeEnd ");
  1789. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  1790. }
  1791. if (se.inscrapflag != 2)
  1792. {
  1793. sql.Append(" AND TP_PM_InProduction.inscrapflag=:inscrapflag ");
  1794. parameters.Add(new OracleParameter(":inscrapflag", OracleDbType.NVarchar2, se.inscrapflag, ParameterDirection.Input));
  1795. }
  1796. if (!string.IsNullOrWhiteSpace(se.GoodsTypeCode))
  1797. {
  1798. sql.Append(" AND instr(gt.goodstypecode, :GoodsTypeCode) = 1 ");
  1799. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  1800. }
  1801. // 试验标识
  1802. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  1803. {
  1804. sql.Append(" AND TP_PM_GroutingDailyDetail.TestMouldFlag = :TestMouldFlag ");
  1805. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  1806. }
  1807. //添加员工姓名查询条件 fenglinyong add 2022-08-27
  1808. if (!string.IsNullOrEmpty(se.StaffName))
  1809. {
  1810. sql.Append(" AND instr(STAFF.STAFFNAME,:STAFFNAME)>0 ");
  1811. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  1812. }
  1813. //产品编码
  1814. if (!string.IsNullOrEmpty(se.GoodsCode))
  1815. {
  1816. sql.Append(" AND instr(TP_PM_InProduction.GoodsCode,:GoodsCode)>0 ");
  1817. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  1818. }
  1819. //成型工号
  1820. if (!string.IsNullOrEmpty(se.GroutingUserCodes))
  1821. {
  1822. sql.Append(" AND instr(TP_PM_InProduction.GROUTINGUSERCODE,:GroutingUserCodes)>0 ");
  1823. parameters.Add(new OracleParameter(":GroutingUserCodes", OracleDbType.NVarchar2, se.GroutingUserCodes, ParameterDirection.Input));
  1824. }
  1825. }
  1826. sql.Append(@"GROUP BY grouping sets((
  1827. TP_PM_InProduction.BarCode,
  1828. TP_PM_InProduction.GoodsID,
  1829. TP_PM_InProduction.GoodsCode,
  1830. TP_PM_InProduction.GoodsName,Goods.GOODSSPECIFICATION,
  1831. gt.goodstypename,
  1832. TP_PM_InProduction.Userid,
  1833. A.USERNAME,
  1834. A.USERCode ,
  1835. TP_PM_InProduction.ProductionLineID,
  1836. TP_PM_InProduction.ProductionLineCode,
  1837. TP_PM_InProduction.ProductionLineName,
  1838. TP_PM_InProduction.ModelType,
  1839. TP_PM_InProduction.inscrapflag,
  1840. TP_PM_InProduction.IsPublicBody,
  1841. TP_PM_InProduction.IsReFire,
  1842. TP_PM_InProduction.IsReworkFlag,
  1843. TP_PM_InProduction.CanManyTimes,
  1844. TP_PM_InProduction.ProcedureModel,
  1845. TP_PM_InProduction.GroutingDailyID,
  1846. TP_PM_InProduction.GroutingDailyDetailID,
  1847. TP_PM_InProduction.GroutingDate,
  1848. TP_PM_InProduction.GroutingLineID,
  1849. TP_PM_InProduction.GroutingLineCode,
  1850. TP_PM_InProduction.GroutingLineName,
  1851. TP_PM_InProduction.KILNCODE,
  1852. TP_PM_InProduction.KILNCARCODE,
  1853. TP_PM_InProduction.ProcedureID,
  1854. D.ProcedureName,
  1855. TP_PM_InProduction.GMouldTypeID,
  1856. TP_MST_GMouldType.GMOULDTYPENAME,
  1857. TP_PM_InProduction.GroutingLineDetailID,
  1858. TP_PM_InProduction.GroutingMouldCode,
  1859. TP_PM_InProduction.SPECIALREPAIRFLAG,
  1860. TP_PM_InProduction.GROUTINGUSERCODE,
  1861. TP_PM_GroutingDailyDetail.GROUTINGCOUNT,
  1862. TP_PM_GroutingDailyDetail.GROUTINGBATCHNO,
  1863. TP_PM_GroutingDailyDetail.delivertime,
  1864. TP_PM_InProduction.proceduretime,
  1865. TP_PM_InProduction.Remarks,
  1866. TP_PM_InProduction.GoodsLevelID,
  1867. TP_MST_GoodsLevel.GOODSLEVELNAME,
  1868. TP_PM_InProduction.GoodsLevelTypeID,
  1869. TP_SYS_GoodsLevelType.GOODSLEVELTYPENAME,
  1870. TP_PM_InProduction.AccountID,
  1871. TP_PM_InProduction.ValueFlag,
  1872. TP_PM_GroutingDailyDetail.glazingroom,
  1873. TP_PM_GroutingDailyDetail.SecurityCode,
  1874. TP_PM_GroutingDailyDetail.TestMouldFlag,
  1875. TP_PM_InProduction.CreateTime,
  1876. TP_PM_InProduction.CreateUserID,
  1877. B.USERNAME,
  1878. TP_PM_InProduction.PROCEDURETIME,
  1879. TP_PM_InProduction.UpdateUserID,
  1880. C.USERNAME,TP_MST_Logo.Logoname ,TP_MST_Logo.Logocode,TP_PM_GroutingDailyDetail.outlabelcode,TP_PM_GroutingDailyDetail.MaterialCode,TP_PM_GroutingDailyDetail.accountid,TP_MST_Logo.tagcode,TP_PM_GroutingDailyDetail.onlycode ,STAFF.STAFFNAME),
  1881. (TP_PM_InProduction.GROUTINGUSERCODE,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,Goods.GOODSSPECIFICATION,gt.goodstypename,TP_PM_InProduction.ProcedureID,D.ProcedureName),
  1882. (TP_PM_InProduction.GoodsID,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,Goods.GOODSSPECIFICATION,gt.goodstypename,TP_PM_InProduction.ProcedureID,D.ProcedureName),
  1883. (TP_PM_InProduction.ProcedureID,D.ProcedureName))
  1884. ORDER BY TP_PM_InProduction.ProcedureID,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,TP_PM_InProduction.GROUTINGUSERCODE,grouping_id(TP_PM_InProduction.GROUTINGUSERCODE,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,TP_PM_InProduction.ProcedureID,D.ProcedureName),TP_PM_InProduction.BarCode");
  1885. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  1886. ServiceResultEntity sre = new ServiceResultEntity();
  1887. if (data == null || data.Rows.Count == 0)
  1888. {
  1889. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  1890. return sre;
  1891. }
  1892. sre.Data = new DataSet();
  1893. sre.Data.Tables.Add(data);
  1894. return sre;
  1895. }
  1896. catch (Exception ex)
  1897. {
  1898. throw ex;
  1899. }
  1900. finally
  1901. {
  1902. if (conn != null &&
  1903. conn.ConnState == ConnectionState.Open)
  1904. {
  1905. conn.Close();
  1906. }
  1907. }
  1908. }
  1909. /// <summary>
  1910. /// 获取RPT010401画面(在产品明细表)的查询sql
  1911. /// </summary>
  1912. /// <returns>sql</returns>
  1913. private static string GetRPT010401SSQL()
  1914. {
  1915. string selSql = @" SELECT grouping_id(TP_PM_InProduction.GROUTINGUSERCODE,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,TP_PM_InProduction.ProcedureID,D.ProcedureName) GID,
  1916. CASE WHEN grouping_id(TP_PM_InProduction.GROUTINGUSERCODE,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,TP_PM_InProduction.ProcedureID,D.ProcedureName)=16 THEN '合计'
  1917. WHEN grouping_id(TP_PM_InProduction.GROUTINGUSERCODE,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,TP_PM_InProduction.ProcedureID,D.ProcedureName)=28 THEN '总计'
  1918. WHEN grouping_id(TP_PM_InProduction.GROUTINGUSERCODE,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,TP_PM_InProduction.ProcedureID,D.ProcedureName)=0 AND TP_PM_InProduction.BarCode is null THEN '小计' END AS 统计方式,
  1919. TP_PM_InProduction.BarCode,
  1920. TP_PM_InProduction.GoodsID,
  1921. TP_PM_InProduction.GoodsCode,
  1922. TP_PM_InProduction.GoodsName,Goods.GOODSSPECIFICATION,
  1923. gt.goodstypename,
  1924. TP_PM_InProduction.ProcedureID CompleteProcedureID,
  1925. D.ProcedureName AS CompleteProcedureName,
  1926. TP_PM_InProduction.GROUTINGUSERCODE,
  1927. COUNT(1) counts,
  1928. TP_PM_InProduction.Userid,
  1929. A.USERNAME AS UserName,
  1930. A.USERCode AS UserCode,
  1931. TP_PM_InProduction.ProductionLineID,
  1932. TP_PM_InProduction.ProductionLineCode,
  1933. TP_PM_InProduction.ProductionLineName,
  1934. TP_PM_InProduction.ModelType,
  1935. decode( TP_PM_InProduction.inscrapflag, '1', '待审核的报废品', '正常' ) AS inscrapflag,
  1936. TP_PM_InProduction.IsPublicBody,
  1937. decode( TP_PM_InProduction.IsReFire, '6', '1', '0' ) AS IsReFire,
  1938. TP_PM_InProduction.IsReworkFlag,
  1939. decode( TP_PM_InProduction.CanManyTimes, '1', '能', '不能' ) AS CanManyTimes,
  1940. decode( TP_PM_InProduction.ProcedureModel, '1', '计件模型', '检验模型' ) AS ProcedureModel,
  1941. TP_PM_InProduction.GroutingDailyID,
  1942. TP_PM_InProduction.GroutingDailyDetailID,
  1943. TP_PM_InProduction.GroutingDate,
  1944. TP_PM_InProduction.GroutingLineID,
  1945. TP_PM_InProduction.GroutingLineCode,
  1946. TP_PM_InProduction.GroutingLineName,
  1947. TP_PM_InProduction.KILNCODE,
  1948. TP_PM_InProduction.KILNCARCODE,
  1949. TP_PM_InProduction.GMouldTypeID,
  1950. TP_MST_GMouldType.GMOULDTYPENAME AS GMouldTypeName,
  1951. TP_PM_InProduction.GroutingLineDetailID,
  1952. TP_PM_InProduction.GroutingMouldCode,
  1953. TP_PM_InProduction.SPECIALREPAIRFLAG,
  1954. TP_PM_GroutingDailyDetail.GROUTINGCOUNT,
  1955. TP_PM_GroutingDailyDetail.GROUTINGBATCHNO,
  1956. TP_PM_GroutingDailyDetail.delivertime,
  1957. TP_PM_InProduction.proceduretime,
  1958. TP_PM_InProduction.Remarks,
  1959. TP_PM_InProduction.GoodsLevelID,
  1960. TP_MST_GoodsLevel.GOODSLEVELNAME,
  1961. TP_PM_InProduction.GoodsLevelTypeID,
  1962. TP_SYS_GoodsLevelType.GOODSLEVELTYPENAME,
  1963. TP_PM_InProduction.AccountID,
  1964. TP_PM_InProduction.ValueFlag,
  1965. TP_PM_GroutingDailyDetail.glazingroom,
  1966. TP_PM_GroutingDailyDetail.SecurityCode,
  1967. TP_PM_GroutingDailyDetail.TestMouldFlag,
  1968. TP_PM_InProduction.CreateTime,
  1969. TP_PM_InProduction.CreateUserID,
  1970. B.USERNAME AS CreateUserName,
  1971. TP_PM_InProduction.PROCEDURETIME AS UpdateTime,
  1972. TP_PM_InProduction.UpdateUserID,
  1973. C.USERNAME AS UpdateUserName,
  1974. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  1975. 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
  1976. ) AS FinishedBarCode
  1977. ,STAFF.STAFFNAME
  1978. FROM
  1979. TP_PM_InProduction
  1980. LEFT JOIN TP_MST_User A ON A.UserID = TP_PM_InProduction.Userid
  1981. LEFT JOIN TP_MST_User B ON B.UserID = TP_PM_InProduction.CreateUserID
  1982. LEFT JOIN TP_MST_User C ON C.UserID = TP_PM_InProduction.UpdateUserID
  1983. INNER JOIN TP_PC_Procedure D ON D.PROCEDUREID = TP_PM_InProduction.ProcedureID
  1984. INNER JOIN TP_MST_GMouldType ON TP_MST_GMouldType.GMouldTypeID = TP_PM_InProduction.GMouldTypeID
  1985. INNER JOIN TP_SYS_ProcedureModelType ON TP_SYS_ProcedureModelType.ProcedureModelTypeID = TP_PM_InProduction.ModelType
  1986. INNER JOIN TP_PM_GroutingDaily ON TP_PM_GroutingDaily.GroutingDailyID = TP_PM_InProduction.GroutingDailyID
  1987. INNER JOIN TP_PM_GroutingDailyDetail ON TP_PM_GroutingDailyDetail.Groutingdailydetailid = TP_PM_InProduction.GroutingDailyDetailID
  1988. INNER JOIN TP_PC_GroutingLineDetail ON TP_PC_GroutingLineDetail.Groutinglinedetailid = TP_PM_InProduction.GroutingLineDetailID
  1989. INNER JOIN TP_MST_Account ON TP_MST_Account.Accountid = TP_PM_InProduction.Accountid
  1990. LEFT JOIN TP_MST_GoodsLevel ON TP_MST_GoodsLevel.GoodsLevelID = TP_PM_InProduction.GoodsLevelID
  1991. LEFT JOIN TP_SYS_GoodsLevelType ON TP_SYS_GoodsLevelType.GoodsLevelTypeID = TP_PM_InProduction.GoodsLevelTypeID
  1992. LEFT JOIN TP_MST_Logo ON TP_PM_InProduction.logoid = TP_MST_Logo.logoid
  1993. LEFT JOIN TP_MST_Goods Goods ON TP_PM_InProduction.GoodsID = Goods.GoodsID
  1994. LEFT JOIN tp_mst_goodstype gt ON gt.goodstypeid = Goods.goodstypeid
  1995. LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TP_PM_InProduction.BARCODE = PD.BARCODE
  1996. AND TP_PM_InProduction.FLOWPROCEDUREID = PD.PROCEDUREID
  1997. LEFT JOIN (
  1998. SELECT
  1999. D.CLASSESSETTINGID,
  2000. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  2001. FROM
  2002. (
  2003. SELECT
  2004. CD.CLASSESSETTINGID,
  2005. HR.STAFFNAME
  2006. FROM
  2007. TP_PC_CLASSESDETAIL CD
  2008. LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID
  2009. ) D
  2010. GROUP BY
  2011. D.CLASSESSETTINGID
  2012. ) STAFF ON PD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  2013. WHERE
  2014. TP_PM_InProduction.ValueFlag = 1
  2015. AND TP_PM_InProduction.AccountID = 1
  2016. AND PD.VALUEFLAG=1
  2017. ";
  2018. return selSql;
  2019. }
  2020. /// <summary>
  2021. /// 取得RPT010402画面(产成品明细表)的查询数据
  2022. /// </summary>
  2023. /// <param name="user">登录用户信息</param>
  2024. /// <param name="se">查询条件</param>
  2025. /// <returns>查询结果</returns>
  2026. public static ServiceResultEntity GetRPT010402SData(SUserInfo user, RPT010402_SE se)
  2027. {
  2028. IDBConnection conn = null;
  2029. try
  2030. {
  2031. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2032. List<OracleParameter> parameters = new List<OracleParameter>();
  2033. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010402SSQL());
  2034. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2035. if (se != null)
  2036. {
  2037. // 条码
  2038. if (!string.IsNullOrEmpty(se.Barcode))
  2039. {
  2040. //sql.Append(" AND TP_PM_FinishedProduct.BarCode=:BarCode ");
  2041. sql.Append(" AND instr(TP_PM_FinishedProduct.BarCode,:Barcode)>0 ");
  2042. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  2043. }
  2044. // 产品IDS
  2045. if (!string.IsNullOrEmpty(se.GoodsIDS))
  2046. {
  2047. sql.Append(" AND instr(','||:GoodsIDS||',',','||TP_PM_FinishedProduct.GoodsId||',')>0 ");
  2048. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  2049. }
  2050. // 生产线IDS
  2051. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  2052. {
  2053. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_FinishedProduct.ProductionLineID||',')>0 ");
  2054. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  2055. }
  2056. // 成型线ids
  2057. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  2058. {
  2059. sql.Append(" AND instr(','||:GroutingLineIDS||',',','||TP_PM_FinishedProduct.GroutingLineID||',')>0 ");
  2060. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  2061. }
  2062. // 成型线类型ids
  2063. if (!string.IsNullOrEmpty(se.GMouldTypeIDS))
  2064. {
  2065. sql.Append(" AND instr(','||:GMouldTypeIDS||',',','||TP_PM_FinishedProduct.GMouldTypeID||',')>0 ");
  2066. parameters.Add(new OracleParameter(":GMouldTypeIDS", OracleDbType.NVarchar2, se.GMouldTypeIDS, ParameterDirection.Input));
  2067. }
  2068. // 财务日期--开始
  2069. if (se.AccountDateStart.HasValue)
  2070. {
  2071. //sql.Append(" AND TP_PM_FinishedProduct.AccountDate >= :AccountDateStart ");
  2072. sql.Append(" AND TP_PM_FinishedProduct.CreateTime >= :AccountDateStart ");
  2073. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  2074. }
  2075. // 财务日期--结束
  2076. if (se.AccountDateEnd.HasValue)
  2077. {
  2078. //sql.Append(" AND TP_PM_FinishedProduct.AccountDate <= :AccountDateEnd ");
  2079. sql.Append(" AND TP_PM_FinishedProduct.CreateTime <= :AccountDateEnd ");
  2080. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  2081. }
  2082. // 注浆时间--开始
  2083. if (se.CreateTimeStart.HasValue)
  2084. {
  2085. sql.Append(" AND TP_PM_GroutingDaily.CreateTime >= :CreateTimeStart ");
  2086. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  2087. }
  2088. // 注浆时间--结束
  2089. if (se.CreateTimeEnd.HasValue)
  2090. {
  2091. sql.Append(" AND TP_PM_GroutingDaily.CreateTime <= :CreateTimeEnd ");
  2092. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  2093. }
  2094. //添加员工姓名查询条件 fenglinyong add 2022-08-27
  2095. if (!string.IsNullOrEmpty(se.StaffName))
  2096. {
  2097. sql.Append(" AND instr(STAFF.STAFFNAME,:STAFFNAME)>0 ");
  2098. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  2099. }
  2100. }
  2101. sql.Append(" order by TP_PM_FinishedProduct.UpdateTime desc");
  2102. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  2103. ServiceResultEntity sre = new ServiceResultEntity();
  2104. if (data == null || data.Rows.Count == 0)
  2105. {
  2106. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2107. return sre;
  2108. }
  2109. sre.Data = new DataSet();
  2110. sre.Data.Tables.Add(data);
  2111. return sre;
  2112. }
  2113. catch (Exception ex)
  2114. {
  2115. throw ex;
  2116. }
  2117. finally
  2118. {
  2119. if (conn != null &&
  2120. conn.ConnState == ConnectionState.Open)
  2121. {
  2122. conn.Close();
  2123. }
  2124. }
  2125. }
  2126. /// <summary>
  2127. /// 获取RPT010402画面(产成品明细表)的查询sql
  2128. /// </summary>
  2129. /// <returns>sql</returns>
  2130. private static string GetRPT010402SSQL()
  2131. {
  2132. string selSql =
  2133. @"
  2134. SELECT
  2135. TP_PM_FinishedProduct.BarCode,
  2136. TP_PM_FinishedProduct.GoodsID,
  2137. TP_PM_FinishedProduct.GoodsCode,
  2138. TP_PM_FinishedProduct.GoodsName,
  2139. TP_PM_FinishedProduct.ProductionLineID,
  2140. TP_PM_FinishedProduct.ProductionLineCode,
  2141. TP_PM_FinishedProduct.ProductionLineName,
  2142. TP_PM_FinishedProduct.IsPublicBody,
  2143. decode( TP_PM_FinishedProduct.IsReFire, '6', '1', '0' ) AS IsReFire,
  2144. decode( TP_PM_GroutingDaily.CanManyTimes, '1', '是', '否' ) AS CanManyTimes,
  2145. decode( TP_PM_FinishedProduct.SettlementFlag, '1', '已结算', '未结算' ) AS SettlementFlag,
  2146. TP_PM_FinishedProduct.GroutingDailyID,
  2147. TP_PM_FinishedProduct.GroutingDailyDetailID,
  2148. TP_PM_FinishedProduct.GroutingDate,
  2149. TP_PM_FinishedProduct.GroutingLineID,
  2150. TP_PM_FinishedProduct.GroutingLineCode,
  2151. TP_PM_FinishedProduct.GroutingLineName,
  2152. TP_PM_FinishedProduct.GMouldTypeID,
  2153. TP_MST_GMouldType.GMOULDTYPENAME AS GMouldTypeName,
  2154. TP_PM_FinishedProduct.GroutingLineDetailID,
  2155. TP_PM_FinishedProduct.GroutingMouldCode,
  2156. TP_PM_GroutingDailyDetail.GROUTINGCOUNT,
  2157. TP_PM_FinishedProduct.GROUTINGUSERCODE,
  2158. TP_PM_FinishedProduct.SPECIALREPAIRFLAG,
  2159. TP_PM_FinishedProduct.KILNID,
  2160. TP_PM_FinishedProduct.KILNCODE,
  2161. TP_PM_FinishedProduct.KILNNAME,
  2162. TP_PM_FinishedProduct.KILNCARID,
  2163. TP_PM_FinishedProduct.KILNCARCODE,
  2164. TP_PM_FinishedProduct.KILNCARNAME,
  2165. TP_MST_DATADICTIONARY.DICTIONARYVALUE KILNCARPOSITION,
  2166. TP_PM_FinishedProduct.MouldCode,
  2167. TP_PM_FinishedProduct.Remarks,
  2168. TP_PM_FinishedProduct.GoodsLevelID,
  2169. TP_MST_GoodsLevel.GOODSLEVELNAME,
  2170. TP_PM_FinishedProduct.GoodsLevelTypeID,
  2171. TP_SYS_GoodsLevelType.GOODSLEVELTYPENAME,
  2172. TP_PM_GroutingDailyDetail.SecurityCode,
  2173. TP_PM_FinishedProduct.FHUSERCODE,
  2174. TP_PM_FinishedProduct.FHTIME,
  2175. odr.ORDERNO,
  2176. TP_PM_GroutingDailyDetail.SLURRY_WEIGHT,
  2177. TP_PM_GroutingDailyDetail.COOL1_WEIGHT,
  2178. TP_PM_GroutingDailyDetail.BAKEOUT1_WEIGHT,
  2179. TP_PM_GroutingDailyDetail.DELIVER_WEIGHT,
  2180. TP_PM_GroutingDailyDetail.GLAZE1_WEIGHT,
  2181. TP_PM_GroutingDailyDetail.GLAZE2_WEIGHT,
  2182. TP_PM_GroutingDailyDetail.FINISHED_WEIGHT,
  2183. TP_PM_FinishedProduct.AccountID,
  2184. TP_PM_FinishedProduct.ValueFlag,
  2185. TP_PM_FinishedProduct.AccountDate,
  2186. TP_PM_FinishedProduct.CreateTime,
  2187. TP_PM_FinishedProduct.CreateUserID,
  2188. B.USERNAME AS CreateUserName,
  2189. TP_PM_FinishedProduct.UpdateTime,
  2190. TP_PM_FinishedProduct.UpdateUserID,
  2191. C.USERNAME AS UpdateUserName,
  2192. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  2193. TP_PM_GroutingDailyDetail.Materialcode,
  2194. TP_PM_GroutingDailyDetail.outlabelcode AS FinishedBarCode
  2195. ,STAFF.STAFFNAME
  2196. FROM
  2197. TP_PM_FinishedProduct
  2198. LEFT JOIN TP_PM_ORDER odr ON odr.ORDERID = TP_PM_FinishedProduct.FHORDERID
  2199. LEFT JOIN TP_MST_User B ON B.UserID = TP_PM_FinishedProduct.CreateUserID
  2200. LEFT JOIN TP_MST_User C ON C.UserID = TP_PM_FinishedProduct.UpdateUserID
  2201. LEFT JOIN TP_MST_GMouldType ON TP_MST_GMouldType.GMouldTypeID = TP_PM_FinishedProduct.GMouldTypeID
  2202. LEFT JOIN TP_MST_DATADICTIONARY ON TP_PM_FinishedProduct.KILNCARPOSITION = TP_MST_DATADICTIONARY.DICTIONARYID
  2203. LEFT JOIN TP_PM_GroutingDaily ON TP_PM_GroutingDaily.GroutingDailyID = TP_PM_FinishedProduct.GroutingDailyID
  2204. LEFT JOIN TP_PM_GroutingDailyDetail ON TP_PM_GroutingDailyDetail.Groutingdailydetailid = TP_PM_FinishedProduct.GroutingDailyDetailID
  2205. LEFT JOIN TP_PC_GroutingLineDetail ON TP_PC_GroutingLineDetail.Groutinglinedetailid = TP_PM_FinishedProduct.GroutingLineDetailID
  2206. LEFT JOIN TP_MST_Account ON TP_MST_Account.Accountid = TP_PM_FinishedProduct.Accountid
  2207. LEFT JOIN TP_MST_GoodsLevel ON TP_MST_GoodsLevel.GOODSLEVELID = TP_PM_FinishedProduct.GoodsLevelID
  2208. LEFT JOIN TP_SYS_GoodsLevelType ON TP_SYS_GoodsLevelType.GoodsLevelTypeID = TP_PM_FinishedProduct.GoodsLevelTypeID
  2209. LEFT JOIN tp_mst_logo ON TP_PM_FinishedProduct.logoid = tp_mst_logo.logoid
  2210. LEFT JOIN TP_MST_Goods Goods ON TP_PM_FinishedProduct.GoodsID = Goods.GoodsID
  2211. INNER JOIN TP_PM_PRODUCTIONDATA TPD ON TP_PM_FinishedProduct.BARCODE = TPD.BARCODE
  2212. AND TPD.NODETYPE = 3
  2213. LEFT JOIN (
  2214. SELECT
  2215. D.CLASSESSETTINGID,
  2216. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  2217. FROM
  2218. (
  2219. SELECT
  2220. CD.CLASSESSETTINGID,
  2221. HR.STAFFNAME
  2222. FROM
  2223. TP_PC_CLASSESDETAIL CD
  2224. LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID
  2225. ) D
  2226. GROUP BY
  2227. D.CLASSESSETTINGID
  2228. ) STAFF ON TPD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  2229. WHERE
  2230. 1 = 1
  2231. AND TP_PM_FinishedProduct.ValueFlag = 1
  2232. AND TP_PM_FinishedProduct.AccountID = :AccountID
  2233. AND TPD.VALUEFLAG=1 ";
  2234. return selSql;
  2235. }
  2236. /// <summary>
  2237. /// 取得RPT010403画面(生产数据明细表)的查询数据
  2238. /// </summary>
  2239. /// <param name="user">登录用户信息</param>
  2240. /// <param name="se">查询条件</param>
  2241. /// <returns>查询结果</returns>
  2242. public static ServiceResultEntity GetRPT010403SData(SUserInfo user, RPT010403_SE se)
  2243. {
  2244. IDBConnection conn = null;
  2245. try
  2246. {
  2247. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2248. List<OracleParameter> parameters = new List<OracleParameter>();
  2249. string sqlString =
  2250. @"SELECT
  2251. *
  2252. FROM
  2253. (
  2254. SELECT
  2255. pd.barcode,
  2256. gt2.goodstypename AS goodstypename2,
  2257. gt.goodstypename,
  2258. g.goodscode,
  2259. g.goodsname,
  2260. PD.ProductionLineName,
  2261. to_char( p.ProcedureName ) AS ProcedureName,
  2262. op.organizationfullname AS porgname,
  2263. pd.CreateTime,
  2264. PD.UserCode,
  2265. cu.Usercode AS CreateUsercode,
  2266. cu.Username AS CreateUserName,
  2267. co.organizationfullname corgname,
  2268. CASE WHEN PD.valueflag = '0' AND PD.ProcedureModel = '1' THEN
  2269. '撤销([' || to_char( bu.usercode ) || ']' || to_char( bu.username ) || ' ' || to_char( PD.Backouttime, 'yyyy-mm-dd hh24:mi:ss' ) || ')'
  2270. WHEN PD.valueflag = '0' AND PD.ProcedureModel = '2' THEN
  2271. to_char( GL.GOODSLEVELNAME ) || '(被修改)' ELSE to_char( GL.GOODSLEVELNAME )
  2272. END ||
  2273. CASE WHEN pd.modeltype = 1 THEN
  2274. '[' || to_char( pd.kilncarcode ) || ']' ELSE ''
  2275. END GOODSLEVELNAME,
  2276. gdd.glazingroom
  2277. ,to_char(STAFF.STAFFNAME) AS STAFFNAME
  2278. FROM
  2279. TP_PM_ProductionData PD
  2280. INNER JOIN tp_pc_procedure p ON p.procedureid = pd.procedureid
  2281. LEFT JOIN tp_mst_goods g ON g.goodsid = pd.goodsid
  2282. LEFT JOIN TP_PM_GroutingDailyDetail gdd ON gdd.Groutingdailydetailid = pd.Groutingdailydetailid
  2283. LEFT JOIN tp_mst_goodstype gt ON gt.goodstypeid = g.goodstypeid
  2284. LEFT JOIN tp_mst_goodstype gt2 ON gt2.goodstypecode = substr( gt.goodstypecode, 1, 6 )
  2285. AND gt2.AccountID = : AccountID
  2286. INNER JOIN tp_mst_organization op ON op.organizationid = p.organizationid
  2287. INNER JOIN tp_mst_user cu ON cu.userid = PD.Createuserid
  2288. INNER JOIN tp_mst_organization co ON co.organizationid = cu.organizationid
  2289. LEFT JOIN tp_mst_user bu ON bu.userid = PD.Backoutuserid
  2290. LEFT JOIN tp_mst_goodslevel GL ON GL.GOODSLEVELID = PD.GOODSLEVELID
  2291. AND gl.AccountID = : AccountID
  2292. LEFT JOIN (
  2293. SELECT
  2294. D.CLASSESSETTINGID,
  2295. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  2296. FROM
  2297. (
  2298. SELECT
  2299. CD.CLASSESSETTINGID,
  2300. HR.STAFFNAME
  2301. FROM
  2302. TP_PC_CLASSESDETAIL CD
  2303. LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID
  2304. ) D
  2305. GROUP BY
  2306. D.CLASSESSETTINGID
  2307. ) STAFF ON PD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  2308. WHERE
  2309. PD.AccountID = : AccountID
  2310. AND PD.Createtime >= : CreatetimeBegin
  2311. AND PD.Createtime <= : CreatetimeEnd
  2312. AND ( : ProductionLineID IS NULL OR pd.productionlineid = : ProductionLineID )
  2313. AND ( : GoodsTypeCode IS NULL OR instr( gt.goodstypecode, : GoodsTypeCode ) = 1 )
  2314. AND ( : GoodsCode IS NULL OR instr( g.GoodsCode, : GoodsCode ) > 0 )
  2315. AND ( : BarCode IS NULL OR instr( pd.BarCode, : BarCode ) > 0 )
  2316. AND ( : STAFFNAME IS NULL OR instr( STAFF.STAFFNAME, : STAFFNAME ) > 0 )
  2317. UNION ALL
  2318. -- 报损
  2319. SELECT
  2320. sp.barcode,
  2321. gt2.goodstypename AS goodstypename2,
  2322. gt.goodstypename,
  2323. g.goodscode,
  2324. g.goodsname,
  2325. sp.productionlinename,
  2326. '损坯-完成工序【' || to_char( p.procedurename ) || '】-责任工序【' ||
  2327. CASE WHEN rpp.procedureid IS NOT NULL THEN
  2328. to_char( rpp.procedurename ) ELSE '无'
  2329. END || '】-责任工号【[' || to_char( sruser.usercode ) || ']' || to_char( sruser.Username ) || '】-原因【' || to_char( sp.rreason ) || '】' AS procedurename,
  2330. NULL AS porgname,
  2331. sp.Createtime,
  2332. NULL AS Usercode,
  2333. u.Usercode AS CreateUsercode,
  2334. U.Username AS CreateUserName,
  2335. co.organizationfullname corgname,
  2336. to_char( A.AUDITSTATUSNAME ) ||
  2337. CASE WHEN Length( AU.usercode ) > 0 THEN
  2338. '([' || to_char( AU.usercode ) || ']' || to_char( AU.Username ) || ' ' || to_char( sp.AuditDate, 'yyyy-mm-dd hh24:mi:ss' ) || ')' ELSE ''
  2339. END ||
  2340. CASE WHEN sp.valueflag = '0' THEN
  2341. '-撤销([' || to_char( uu.usercode ) || ']' || to_char( uu.username ) || ' ' || to_char( sp.updatetime, 'yyyy-mm-dd hh24:mi:ss' ) || ')' ELSE ''
  2342. END AS GOODSLEVELNAME,
  2343. NULL glazingroom
  2344. ,'' AS STAFFNAME
  2345. FROM
  2346. tp_pm_scrapproduct sp
  2347. LEFT JOIN tp_mst_goods g ON g.goodsid = sp.goodsid
  2348. LEFT JOIN tp_mst_goodstype gt ON gt.goodstypeid = g.goodstypeid
  2349. LEFT JOIN tp_mst_goodstype gt2 ON gt2.goodstypecode = substr( gt.goodstypecode, 1, 6 )
  2350. AND gt2.AccountID = 1
  2351. AND gt2.AccountID = : AccountID
  2352. INNER JOIN tp_pc_procedure p ON p.procedureid = sp.procedureid
  2353. INNER JOIN tp_mst_user U ON U.userid = sp.CREATEUSERID
  2354. INNER JOIN tp_mst_organization co ON co.organizationid = u.organizationid
  2355. INNER JOIN tp_mst_user uu ON uu.userid = sp.Updateuserid
  2356. INNER JOIN tp_sys_AuditStatus A ON A.AuditStatusid = sp.AuditStatus
  2357. LEFT JOIN tp_mst_goodslevel gl ON gl.goodsleveltypeid = 8
  2358. AND gl.accountid = 1
  2359. LEFT JOIN tp_mst_user AU ON au.userid = sp.auditor
  2360. LEFT JOIN TP_PM_ResponProcedure rp ON rp.scrapproductid = sp.scrapproductid
  2361. LEFT JOIN tp_pc_procedure rpp ON rpp.procedureid = rp.procedureid
  2362. LEFT JOIN (
  2363. SELECT DISTINCT sr.scrapproductid, sr.userid FROM TP_PM_ScrapResponsible sr WHERE sr.AccountID = : AccountID
  2364. ) sru ON sru.scrapproductid = sp.scrapproductid
  2365. LEFT JOIN tp_mst_user sruser ON sruser.userid = sru.userid
  2366. WHERE
  2367. ( sp.goodsleveltypeid = 8 OR sp.goodsleveltypeid = 9 )
  2368. AND sp.scraptype = '0'
  2369. AND sp.AccountID = : AccountID
  2370. AND sp.Createtime >= : CreatetimeBegin
  2371. AND sp.Createtime <= : CreatetimeEnd
  2372. AND ( : ProductionLineID IS NULL OR sp.productionlineid = : ProductionLineID )
  2373. AND ( : GoodsTypeCode IS NULL OR instr( gt.goodstypecode, : GoodsTypeCode ) = 1 )
  2374. AND ( : BarCode IS NULL OR instr( sp.BarCode, : BarCode ) > 0 )
  2375. AND ( : GoodsCode IS NULL OR instr( g.GoodsCode, : GoodsCode ) > 0 )
  2376. ) t
  2377. ORDER BY
  2378. t.barcode,
  2379. t.Createtime";
  2380. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2381. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  2382. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  2383. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  2384. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  2385. parameters.Add(new OracleParameter(":CreatetimeBegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input));
  2386. parameters.Add(new OracleParameter(":CreatetimeEnd", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input));
  2387. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  2388. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2389. ServiceResultEntity sre = new ServiceResultEntity();
  2390. if (data == null || data.Rows.Count == 0)
  2391. {
  2392. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2393. return sre;
  2394. }
  2395. sre.Data = new DataSet();
  2396. sre.Data.Tables.Add(data);
  2397. return sre;
  2398. }
  2399. catch (Exception ex)
  2400. {
  2401. throw ex;
  2402. }
  2403. finally
  2404. {
  2405. if (conn != null &&
  2406. conn.ConnState == ConnectionState.Open)
  2407. {
  2408. conn.Close();
  2409. }
  2410. }
  2411. }
  2412. /// <summary>
  2413. /// 取得RPT010302画面(商标变更明细表)的查询数据
  2414. /// </summary>
  2415. /// <param name="user">登录用户信息</param>
  2416. /// <param name="se">查询条件</param>
  2417. /// <returns>查询结果</returns>
  2418. public static ServiceResultEntity GetRPT010302SData(SUserInfo user, RPT010302_SE se)
  2419. {
  2420. IDBConnection conn = null;
  2421. try
  2422. {
  2423. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2424. List<OracleParameter> parameters = new List<OracleParameter>();
  2425. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT010302SSQL());
  2426. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2427. if (se != null)
  2428. {
  2429. // 更换条码时间-开始
  2430. if (se.createTimeBegin.HasValue)
  2431. {
  2432. sql.Append(" and lcr.CreateTime>= :CreateTimeBegin ");
  2433. parameters.Add(new OracleParameter(":CreateTimeBegin", OracleDbType.Date, se.createTimeBegin.Value, ParameterDirection.Input));
  2434. }
  2435. // 更换条码时间-结束
  2436. if (se.createTimeEnd.HasValue)
  2437. {
  2438. sql.Append(" and lcr.CreateTime<= :CreateTimeEnd ");
  2439. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.createTimeEnd.Value, ParameterDirection.Input));
  2440. }
  2441. //成型线IDS
  2442. if (!string.IsNullOrEmpty(se.Barcode))
  2443. {
  2444. // 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 )");
  2445. sql.Append(" and (instr(lcr.BARCODE,:Barcode)>0 )");
  2446. parameters.Add(new OracleParameter(":Barcode", OracleDbType.NVarchar2, se.Barcode, ParameterDirection.Input));
  2447. }
  2448. }
  2449. sql.Append(" ORDER BY lcr.CREATETIME ");
  2450. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  2451. ServiceResultEntity sre = new ServiceResultEntity();
  2452. if (data == null || data.Rows.Count == 0)
  2453. {
  2454. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2455. return sre;
  2456. }
  2457. sre.Data = new DataSet();
  2458. sre.Data.Tables.Add(data);
  2459. return sre;
  2460. }
  2461. catch (Exception ex)
  2462. {
  2463. throw ex;
  2464. }
  2465. finally
  2466. {
  2467. if (conn != null &&
  2468. conn.ConnState == ConnectionState.Open)
  2469. {
  2470. conn.Close();
  2471. }
  2472. }
  2473. }
  2474. /// <summary>
  2475. /// 获取RPT010302画面(商标变更明细表)的查询sql
  2476. /// </summary>
  2477. /// <returns>sql</returns>
  2478. private static string GetRPT010302SSQL()
  2479. {
  2480. string selSql =
  2481. "SELECT lcr.BarCode\n" +
  2482. " ,REPLACE((oldlogo.Logoname || '[' || oldlogo.Logocode || ']'),\n" +
  2483. " '[]',\n" +
  2484. " '') AS oldLogoCodeName\n" +
  2485. " ,REPLACE((newlogo.Logoname || '[' || newlogo.Logocode || ']'),\n" +
  2486. " '[]',\n" +
  2487. " '') AS newLogoCodeName\n" +
  2488. " ,lcr.Createtime\n" +
  2489. " ,gdd.GroutingLineCode\n" +
  2490. " ,gdd.GroutingLineName\n" +
  2491. " ,gdd.GroutingDate\n" +
  2492. " ,gdd.GroutingMouldCode\n" +
  2493. " ,gdd.MouldCode\n" +
  2494. " ,gdd.UserCode GroutingUserCode\n" +
  2495. " ,gdd.GroutingCount\n" +
  2496. " ,gdd.GoodsCode\n" +
  2497. " ,gdd.GoodsName\n" +
  2498. " ,p.PROCEDURECODE\n" +
  2499. " ,p.PROCEDURENAME\n" +
  2500. " ,u.USERCode\n" +
  2501. " ,u.USERNAME\n" +
  2502. " FROM TP_PM_LogoChangedRecord lcr\n" +
  2503. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gdd\n" +
  2504. " ON lcr.barcode = gdd.Barcode\n" +
  2505. " LEFT JOIN TP_PC_PROCEDURE p\n" +
  2506. " ON lcr.Procedureid = p.PROCEDUREID\n" +
  2507. " LEFT JOIN TP_MST_USER u\n" +
  2508. " ON lcr.CreateUserID = u.USERID\n" +
  2509. " LEFT JOIN TP_MST_logo oldlogo\n" +
  2510. " ON lcr.oldlogoid = oldlogo.logoid\n" +
  2511. " LEFT JOIN TP_MST_logo newlogo\n" +
  2512. " ON lcr.newlogoid = newlogo.logoid\n" +
  2513. " WHERE lcr.ACCOUNTID = :AccountID";
  2514. return selSql;
  2515. }
  2516. #endregion 明细报表
  2517. #region 分析报表
  2518. /// <summary>
  2519. /// 取得RPT040101_1画面(注浆交坯比率分析表)的查询数据
  2520. /// </summary>
  2521. /// <param name="user">登录用户信息</param>
  2522. /// <param name="se">查询条件</param>
  2523. /// <returns>查询结果</returns>
  2524. public static ServiceResultEntity GetRPT040101SData(SUserInfo user, RPT040101_SE se)
  2525. {
  2526. IDBConnection conn = null;
  2527. try
  2528. {
  2529. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2530. #region
  2531. /*
  2532. List<OracleParameter> parameters = new List<OracleParameter>();
  2533. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT040101SSQL());
  2534. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2535. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.GroutingDateStart.Value, ParameterDirection.Input));
  2536. parameters.Add(new OracleParameter(":groutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  2537. parameters.Add(new OracleParameter(":dateDifference", OracleDbType.Int32, se.DateDifference, ParameterDirection.Input));
  2538. if (se != null)
  2539. {
  2540. // 成型线IDS
  2541. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  2542. {
  2543. sql.Append(" AND instr(',' || :GroutingLineIDS ||',',','||TP_PM_GroutingDailyDetail.GroutingLineId||',')>0 ");
  2544. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  2545. }
  2546. // 成型工IDS
  2547. if (!string.IsNullOrEmpty(se.UserIDS))
  2548. {
  2549. sql.Append(" AND instr(',' || :UserIDS ||',',','||TP_PM_GroutingDailyDetail.UserId||',')>0 ");
  2550. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  2551. }
  2552. //产品类型IDS
  2553. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  2554. {
  2555. sql.Append(" AND instr(',' || :GoodsTypeIDS ||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ");
  2556. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  2557. }
  2558. //产品IDS
  2559. if (!string.IsNullOrEmpty(se.GoodsIDS))
  2560. {
  2561. sql.Append(" AND instr(',' || :GoodsIDS ||',',','||TP_PM_GroutingDailyDetail.GoodsId||',')>0 ");
  2562. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  2563. }
  2564. }
  2565. sql.Append(" group by ");
  2566. sql.Append(" TP_PM_GroutingDailyDetail.UserCode, ");
  2567. sql.Append(" TP_PM_GroutingDailyDetail.Groutinglineid, ");
  2568. sql.Append(" line.GroutinglineCode, ");
  2569. sql.Append(" TP_MST_GOODSTYPE.GoodsTypeName, ");
  2570. sql.Append(" TP_PM_GroutingDailyDetail.GoodsCode, ");
  2571. sql.Append(" TP_MST_Goods.Goodsspecification, ");
  2572. sql.Append(" TP_MST_DataDictionary.DICTIONARYVALUE, ");
  2573. sql.Append(" MouldQuantity ");
  2574. sql.Append(" ) temp ");
  2575. sql.Append(" ) a ");
  2576. sql.Append(" group by rollup( ");
  2577. sql.Append(" UserCode, ");
  2578. sql.Append(" Groutinglinecode, ");
  2579. sql.Append(" GoodsTypeName, ");
  2580. sql.Append(" GoodsCode, ");
  2581. sql.Append(" Goodsspecification, ");
  2582. sql.Append(" DICTIONARYVALUE, ");
  2583. sql.Append(" MouldQuantity, ");
  2584. sql.Append(" 注浆量, ");
  2585. sql.Append(" 交坯量 ");
  2586. sql.Append(" ) ");
  2587. sql.Append(") Temp where 交坯量 is not null");
  2588. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  2589. */
  2590. #endregion
  2591. List<OracleParameter> parameters = new List<OracleParameter>();
  2592. //StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT040101SSQL());
  2593. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2594. //parameters.Add(new OracleParameter(":dateDifference", OracleDbType.Int32, se.DateDifference, ParameterDirection.Input));
  2595. string sqlGroutingdate = null;
  2596. StringBuilder sql = new StringBuilder();
  2597. if (se != null)
  2598. {
  2599. // 成型线IDS
  2600. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  2601. {
  2602. sql.Append(" AND instr(',' || :GroutingLineIDS ||',',','||gdd.GroutingLineId||',')>0 ");
  2603. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  2604. }
  2605. // 成型工IDS
  2606. if (!string.IsNullOrEmpty(se.UserIDS))
  2607. {
  2608. sql.Append(" AND instr(',' || :UserIDS ||',',','||gdd.UserId||',')>0 ");
  2609. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  2610. }
  2611. //产品类型IDS
  2612. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  2613. {
  2614. //sql.Append(" AND instr(',' || :GoodsTypeIDS ||',',','||gt.GOODSTYPECode||',')=1");
  2615. sql.Append(" AND instr(gt.GOODSTYPECode,:GoodsTypeIDS)=1");
  2616. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  2617. }
  2618. //产品IDS
  2619. if (!string.IsNullOrEmpty(se.GoodsIDS))
  2620. {
  2621. sql.Append(" AND instr(',' || :GoodsIDS ||',',','||gdd.GoodsId||',')>0 ");
  2622. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  2623. }
  2624. if (se.GroutingDateStart.HasValue)
  2625. {
  2626. //sql.Append(" and gdd.groutingdate >= :groutingDateStart \n");
  2627. //sql.Append(" and gdd.groutingdate <= :groutingDateEnd \n");
  2628. sqlGroutingdate = " and gdd.groutingdate >= :groutingDateStart \n"
  2629. + " and gdd.groutingdate <= :groutingDateEnd \n";
  2630. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.GroutingDateStart.Value, ParameterDirection.Input));
  2631. parameters.Add(new OracleParameter(":groutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  2632. parameters.Add(new OracleParameter(":DeliverTimeStart", OracleDbType.Date, se.GroutingDateStart.Value.AddDays(se.DateDifference), ParameterDirection.Input));
  2633. parameters.Add(new OracleParameter(":DeliverTimeEnd", OracleDbType.Date, se.GroutingDateEnd.Value.AddDays(se.DateDifference), ParameterDirection.Input));
  2634. }
  2635. else if (se.GCTimeBegin.HasValue)
  2636. {
  2637. //sql.Append(" and gdd.createtime >= :groutingDateStart \n");
  2638. //sql.Append(" and gdd.createtime <= :groutingDateEnd \n");
  2639. sqlGroutingdate = " and gdd.createtime >= :groutingDateStart \n"
  2640. + " and gdd.createtime <= :groutingDateEnd \n";
  2641. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.GCTimeBegin.Value, ParameterDirection.Input));
  2642. parameters.Add(new OracleParameter(":groutingDateEnd", OracleDbType.Date, se.GCTimeEnd.Value, ParameterDirection.Input));
  2643. parameters.Add(new OracleParameter(":DeliverTimeStart", OracleDbType.Date, se.GCTimeBegin.Value.Date.AddDays(se.DateDifference), ParameterDirection.Input));
  2644. parameters.Add(new OracleParameter(":DeliverTimeEnd", OracleDbType.Date, se.GCTimeEnd.Value.Date.AddDays(se.DateDifference), ParameterDirection.Input));
  2645. }
  2646. }
  2647. string sqlString =
  2648. "select decode(gid, 7, '总计', 3, '合计['|| gddata.usercode ||']', gddata.usercode) usercode,\n" +
  2649. " decode(gid, 1, '小计['|| gddata.goodscode ||']', 0, gddata.goodscode, '--') goodscode,\n" +
  2650. " decode(gid, 1, '小计['|| gddata.goodsname ||']', 0, gddata.goodsname, '--') goodsname,\n" +
  2651. " decode(gid, 0, gddata.goodstypename, '--') goodstypename,\n" +
  2652. " decode(gid, 0, gddata.goodsspecification, '--') goodsspecification,\n" +
  2653. " decode(gid, 0, gddata.GlazeType, '--') GlazeType,\n" +
  2654. " decode(gid, 0, gddata.groutinglinecode, '--') groutinglinecode,\n" +
  2655. " decode(gid, 0, to_char(gddata.MouldQuantity), '--') MouldQuantity,\n" +
  2656. //" select gddata.usercode,\n" +
  2657. //" gddata.goodscode,\n" +
  2658. //" gddata.goodstypename,\n" +
  2659. //" gddata.goodsspecification,\n" +
  2660. //" gddata.GlazeType,\n" +
  2661. //" gddata.groutinglinecode,\n" +
  2662. //" gddata.MouldQuantity,\n" +
  2663. " gddata.GroutingNum,\n" +
  2664. " gddata.StrippingNum,\n" +
  2665. " gddata.DeliverNum,\n" +
  2666. " decode(gddata.GroutingNum,\n" +
  2667. " 0,\n" +
  2668. " '0.00%',\n" +
  2669. " to_char((gddata.StrippingNum / gddata.GroutingNum) * 100,\n" +
  2670. " '9,990.00') || '%') GSPercent, -- 注成比,\n" +
  2671. " decode(gddata.GroutingNum,\n" +
  2672. " 0,\n" +
  2673. " '0.00%',\n" +
  2674. " to_char((gddata.DeliverNum / gddata.GroutingNum) * 100,\n" +
  2675. " '9,990.00') || '%') GDPercent, -- 注交比,\n" +
  2676. " decode(gddata.StrippingNum,\n" +
  2677. " 0,\n" +
  2678. " '0.00%',\n" +
  2679. " to_char((gddata.DeliverNum / gddata.StrippingNum) * 100,\n" +
  2680. " '9,990.00') || '%') SDPercent -- 成交比,\n" +
  2681. " from (select grouping_id(gdd.flag,gdd.usercode, gdd.goodscode, gdd.groutinglinecode) gid,\n" +
  2682. //" select grouping_id(gdd.flag,gdd.usercode, gdd.goodscode, gdd.groutinglinecode) gid,\n" +
  2683. " gdd.usercode,\n" +
  2684. " gdd.goodscode,\n" +
  2685. " gdd.goodsname,\n" +
  2686. " gdd.goodstypename,\n" +
  2687. " gdd.goodsspecification,\n" +
  2688. " gdd.GlazeType,\n" +
  2689. " gdd.groutinglinecode,\n" +
  2690. " gdd.MouldQuantity,\n" +
  2691. " sum(gdd.GroutingNum) GroutingNum,\n" +
  2692. " sum(gdd.StrippingNum) StrippingNum,\n" +
  2693. " sum(gdd.DeliverNum) DeliverNum\n" +
  2694. " from (select 1 flag,\n" +
  2695. //" select 1 flag,\n" +
  2696. " gddgroup.usercode,\n" +
  2697. " gddgroup.goodscode,\n" +
  2698. " gddgroup.goodsname,\n" +
  2699. " gddgroup.goodstypename,\n" +
  2700. " gddgroup.goodsspecification,\n" +
  2701. " gddgroup.GlazeType,\n" +
  2702. " gddgroup.groutinglinecode,\n" +
  2703. " gddgroup.MouldQuantity,\n" +
  2704. " sum(gddgroup.GroutingNum) GroutingNum,\n" +
  2705. " sum(gddgroup.StrippingNum) StrippingNum,\n" +
  2706. " sum(gddgroup.DeliverNum) DeliverNum\n" +
  2707. " from (select --gdd.groutingdailydetailid,\n" +
  2708. " gd.groutinglinecode,\n" +
  2709. " gt.goodstypename,\n" +
  2710. " g.goodscode,\n" +
  2711. " g.goodsname,\n" +
  2712. " g.goodsspecification,\n" +
  2713. " dd.dictionaryvalue GlazeType,\n" +
  2714. //" gdd.usercode,\n" +
  2715. (se.IsMonitor ? " mu.username usercode,\n" : " gdd.usercode,\n") +
  2716. " gd.MouldQuantity,\n" +
  2717. " decode(gdd.GroutingFlag, '1', 1, 0) GroutingNum,\n" +
  2718. " case\n" +
  2719. " when gdd.GroutingFlag = '1' and gdd.ScrapFlag = '0' then\n" +
  2720. " 1\n" +
  2721. " else\n" +
  2722. " 0\n" +
  2723. " end StrippingNum,\n" +
  2724. " 0 DeliverNum\n" +
  2725. " from tp_pm_groutingdaily gd\n" +
  2726. " inner join tp_pm_groutingdailydetail gdd\n" +
  2727. " on gd.groutingdailyid = gdd.groutingdailyid\n" +
  2728. " left join tp_mst_user mu\n" +
  2729. " on mu.userid = gd.MonitorID\n" +
  2730. " inner join tp_mst_goods g\n" +
  2731. " on gdd.goodsid = g.goodsid\n" +
  2732. " inner join tp_mst_goodstype gt\n" +
  2733. " on g.goodstypeid = gt.goodstypeid\n" +
  2734. " inner join tp_mst_datadictionary dd\n" +
  2735. " on dd.dictionaryid = g.GlazeTypeID\n" +
  2736. " where gd.valueflag = '1'\n" +
  2737. " and gd.accountid = :AccountID\n"
  2738. + sqlGroutingdate +
  2739. //" and gdd.groutingdate >= :groutingDateStart \n" +
  2740. //" and gdd.groutingdate <= :groutingDateEnd \n" +
  2741. sql +
  2742. " union all\n" +
  2743. " select --gdd.groutingdailydetailid,\n" +
  2744. " gd.groutinglinecode,\n" +
  2745. " gt.goodstypename,\n" +
  2746. " g.goodscode,\n" +
  2747. " g.goodsname,\n" +
  2748. " g.goodsspecification,\n" +
  2749. " dd.dictionaryvalue GlazeType,\n" +
  2750. //" gdd.usercode,\n" +
  2751. (se.IsMonitor ? " mu.username usercode,\n" : " gdd.usercode,\n") +
  2752. " gd.MouldQuantity,\n" +
  2753. " 0 GroutingNum,\n" +
  2754. " 0 StrippingNum,\n" +
  2755. " decode(gdd.deliverflag, '1', 1, 0) DeliverNum\n" +
  2756. " from tp_pm_groutingdaily gd\n" +
  2757. " inner join tp_pm_groutingdailydetail gdd\n" +
  2758. " on gd.groutingdailyid = gdd.groutingdailyid\n" +
  2759. " left join (SELECT BARCODE FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 7) tpp ON gdd.barcode = tpp.barcode\n" +
  2760. " left join tp_mst_user mu\n" +
  2761. " on mu.userid = gd.MonitorID\n" +
  2762. " inner join tp_mst_goods g\n" +
  2763. " on gdd.goodsid = g.goodsid\n" +
  2764. " inner join tp_mst_goodstype gt\n" +
  2765. " on g.goodstypeid = gt.goodstypeid\n" +
  2766. " inner join tp_mst_datadictionary dd\n" +
  2767. " on dd.dictionaryid = g.GlazeTypeID\n" +
  2768. " where gd.valueflag = '1'\n" +
  2769. " and gd.accountid = :AccountID\n" +
  2770. " and gdd.DeliverTime >= :DeliverTimeStart \n" +
  2771. " and gdd.DeliverTime <= :DeliverTimeEnd \n" + sql +
  2772. " ) gddgroup\n" +
  2773. " group by gddgroup.usercode, gddgroup.goodscode, gddgroup.goodstypename, gddgroup.goodsspecification, gddgroup.GlazeType, gddgroup.groutinglinecode, gddgroup.MouldQuantity,gddgroup.goodsname\n" +
  2774. " order by gddgroup.usercode, gddgroup.goodscode, gddgroup.groutinglinecode\n" +
  2775. " ) gdd\n" +
  2776. " group by grouping sets((gdd.flag,gdd.usercode, gdd.goodscode,gdd.goodsname,gdd.goodstypename, gdd.goodsspecification, gdd.GlazeType, gdd.groutinglinecode, gdd.MouldQuantity),(gdd.flag,gdd.usercode, gdd.goodscode),(gdd.flag,gdd.usercode),gdd.flag)\n" +
  2777. //" order by gdd.usercode, gdd.goodscode, gdd.groutinglinecode " +
  2778. ") gddata";
  2779. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2780. ServiceResultEntity sre = new ServiceResultEntity();
  2781. if (data == null || data.Rows.Count == 0)
  2782. {
  2783. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2784. return sre;
  2785. }
  2786. sre.Data = new DataSet();
  2787. sre.Data.Tables.Add(data);
  2788. return sre;
  2789. }
  2790. catch (Exception ex)
  2791. {
  2792. throw ex;
  2793. }
  2794. finally
  2795. {
  2796. if (conn != null &&
  2797. conn.ConnState == ConnectionState.Open)
  2798. {
  2799. conn.Close();
  2800. }
  2801. }
  2802. }
  2803. /// <summary>
  2804. /// 获取RPT040101_1画面(注浆交坯比率分析表)的查询sql
  2805. /// </summary>
  2806. /// <returns>sql</returns>
  2807. private static string GetRPT040101SSQL()
  2808. {
  2809. string selSql =
  2810. "select " +
  2811. "UserCode, " +
  2812. "Groutinglinename, " +
  2813. "GoodsTypeName, " +
  2814. "GoodsCode, " +
  2815. "Goodsspecification, " +
  2816. "DICTIONARYVALUE, " +
  2817. "MouldQuantity, " +
  2818. "注浆量, " +
  2819. "交坯量, " +
  2820. "交坯率 " +
  2821. "from " +
  2822. "( " +
  2823. " select " +
  2824. " decode(grouping(UserCode),1,'合计', UserCode) UserCode, " +
  2825. " decode(grouping(UserCode),1,'--', Groutinglinecode) Groutinglinename, " +
  2826. " decode(grouping(UserCode),1,'--', GoodsTypeName) GoodsTypeName, " +
  2827. " decode(grouping(UserCode),1,'--', GoodsCode) GoodsCode, " +
  2828. " decode(grouping(UserCode),1,'--', Goodsspecification) Goodsspecification, " +
  2829. " decode(grouping(UserCode),1,'--', DICTIONARYVALUE) DICTIONARYVALUE, " +
  2830. " decode(grouping(UserCode),1,sum(MouldQuantity), MouldQuantity) MouldQuantity, " +
  2831. " decode(grouping(UserCode),1,sum(注浆量), 注浆量) 注浆量, " +
  2832. " decode(grouping(UserCode),1,sum(交坯量), 交坯量) 交坯量, " +
  2833. " decode(grouping(UserCode),1,TO_CHAR((sum(交坯量)/sum(注浆量))*100,'9,999.99')||'%', TO_CHAR((交坯量/注浆量)*100,'9,999.99')||'%' ) 交坯率 " +
  2834. " from " +
  2835. " ( " +
  2836. " select " +
  2837. " UserCode, " +
  2838. " Groutinglinecode, " +
  2839. " GoodsTypeName, " +
  2840. " GoodsCode, " +
  2841. " Goodsspecification, " +
  2842. " DICTIONARYVALUE, " +
  2843. " MouldQuantity, " +
  2844. " 注浆量, " +
  2845. " ( " +
  2846. " select count(TP_PM_ProductionData.Productiondataid) " +
  2847. " from TP_PM_ProductionData " +
  2848. " where " +
  2849. " TP_PM_ProductionData.Accountid=:AccountID and TP_PM_ProductionData.ModelType=5 " +
  2850. " and TP_PM_ProductionData.Usercode=temp.UserCode " +
  2851. " and TP_PM_ProductionData.GROUTINGLINEID=temp.Groutinglineid " +
  2852. //--交坯比率应该是统计的某一时间段注浆的产品,其所交坯的数量,
  2853. //所以交坯的的产品应属于这段期间注浆的产品---袁新成2015-4-16改 --
  2854. //" and TP_PM_ProductionData.Barcode in (select barcode from TP_PM_GroutingDailyDetail where " +
  2855. //" TP_PM_GroutingDailyDetail.Valueflag=1 " +
  2856. //" and TP_PM_GroutingDailyDetail.GroutingFlag=1 " +
  2857. //" AND TP_PM_GroutingDailyDetail.AccountID=:AccountID " +
  2858. //" AND TP_PM_GroutingDailyDetail.GroutingDate >= :groutingDateStart " +
  2859. //" AND TP_PM_GroutingDailyDetail.GroutingDate <= :groutingDateEnd )" +
  2860. //交坯的其实日期应该还是与注浆的开始日期相同,只是结束日期推后 dateDifferentce天 ---袁新成2015-4-16改--
  2861. //" and TP_PM_ProductionData.AccountDate >= :groutingDateStart " +
  2862. " and TP_PM_ProductionData.AccountDate >= :groutingDateStart+:dateDifference " +
  2863. " and TP_PM_ProductionData.AccountDate >= :groutingDateStart " +
  2864. " and TP_PM_ProductionData.AccountDate <= :groutingDateEnd +:dateDifference " +
  2865. " ) as 交坯量 " +
  2866. " from " +
  2867. " ( " +
  2868. " select " +
  2869. " TP_PM_GroutingDailyDetail.UserCode as UserCode, " +
  2870. " TP_PM_GroutingDailyDetail.Groutinglineid, " +
  2871. " line.GroutinglineCode, " +
  2872. " TP_MST_GOODSTYPE.GoodsTypeName, " +
  2873. " TP_PM_GroutingDailyDetail.GoodsCode, " +
  2874. " TP_MST_Goods.Goodsspecification, " +
  2875. " TP_MST_DataDictionary.DICTIONARYVALUE, " +
  2876. " line.MouldQuantity, " +
  2877. " count(TP_PM_GroutingDailyDetail.GroutingCount) as 注浆量 " +
  2878. " from " +
  2879. " TP_PM_GroutingDailyDetail " +
  2880. " inner join TP_MST_Goods on TP_MST_Goods.Goodsid= TP_PM_GroutingDailyDetail.Goodsid " +
  2881. " inner join TP_MST_GOODSTYPE on TP_MST_GOODSTYPE.GOODSTYPEID = TP_MST_Goods.Goodstypeid " +
  2882. " inner join TP_MST_DataDictionary on TP_MST_DataDictionary.Dictionaryid=TP_MST_Goods.GLAZETYPEID " +
  2883. " inner join TP_PM_GroutingDaily on TP_PM_GroutingDailyDetail.Groutingdailyid=TP_PM_GroutingDaily.Groutingdailyid " +
  2884. " inner join TP_PC_GroutingLine line on line.Groutinglineid = TP_PM_GroutingDailyDetail.Groutinglineid " +
  2885. " where " +
  2886. " TP_PM_GroutingDailyDetail.Valueflag=1 " +
  2887. " and TP_PM_GroutingDailyDetail.GroutingFlag=1 " +
  2888. " AND TP_PM_GroutingDailyDetail.AccountID=:AccountID " +
  2889. " AND TP_PM_GroutingDailyDetail.GroutingDate >= :groutingDateStart " +
  2890. " AND TP_PM_GroutingDailyDetail.GroutingDate <= :groutingDateEnd ";
  2891. return selSql;
  2892. }
  2893. /// <summary>
  2894. /// 取得RPT040102_1画面(工序产量分析表)的查询数据
  2895. /// </summary>
  2896. /// <param name="user">登录用户信息</param>
  2897. /// <param name="se">查询条件</param>
  2898. /// <returns>查询结果</returns>
  2899. public static ServiceResultEntity GetRPT040102SData(SUserInfo user, RPT040102_SE se)
  2900. {
  2901. IDBConnection conn = null;
  2902. try
  2903. {
  2904. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2905. //OracleParameter[] paras = new OracleParameter[]{
  2906. // new OracleParameter("in_goodsTypeIds",OracleDbType.Varchar2,se.GoodsTypeIDS,ParameterDirection.Input),
  2907. // new OracleParameter("in_goodsIds",OracleDbType.Varchar2,se.GoodsIDS,ParameterDirection.Input),
  2908. // new OracleParameter("in_productionLineId",OracleDbType.Int32,se.ProductionLineID,ParameterDirection.Input),
  2909. // new OracleParameter("in_accountDateStart",OracleDbType.Varchar2,se.AccountDateStart,ParameterDirection.Input),
  2910. // new OracleParameter("in_accountDateEnd",OracleDbType.Varchar2,se.AccountDateEnd,ParameterDirection.Input),
  2911. // new OracleParameter("in_accountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  2912. // new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  2913. //};
  2914. /*
  2915. OracleParameter[] paras = new OracleParameter[]{
  2916. new OracleParameter("in_productionLineId",OracleDbType.Int32,se.ProductionLineID,ParameterDirection.Input),
  2917. new OracleParameter("in_procedureids",OracleDbType.Varchar2,se.ProcedureIDs,ParameterDirection.Input),
  2918. new OracleParameter("in_goodsTypeIds",OracleDbType.Varchar2,se.GoodsTypeIDS,ParameterDirection.Input),
  2919. new OracleParameter("in_goodsIds",OracleDbType.Varchar2,se.GoodsIDS,ParameterDirection.Input),
  2920. new OracleParameter("in_accountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  2921. new OracleParameter("in_accountDateStart",OracleDbType.Date,se.AccountDateStart,ParameterDirection.Input),
  2922. new OracleParameter("in_accountDateEnd",OracleDbType.Date,se.AccountDateEnd,ParameterDirection.Input),
  2923. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  2924. };
  2925. //DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetLineProcessTotal", paras);
  2926. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetLineProcessTotalNew", paras);
  2927. ServiceResultEntity sre = new ServiceResultEntity();
  2928. if (data == null || data.Tables.Count == 0)
  2929. {
  2930. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2931. return sre;
  2932. }
  2933. sre.Data = new DataSet();
  2934. sre.Data = data;
  2935. return sre;
  2936. */
  2937. ServiceResultEntity sre = new ServiceResultEntity();
  2938. List<OracleParameter> parameters = new List<OracleParameter>();
  2939. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2940. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  2941. string sqlString =
  2942. "select p.procedureid, p.procedurecode, p.procedurename\n" +
  2943. " from tp_pc_procedure p\n" +
  2944. " where p.valueflag = '1'\n" +
  2945. " and p.AccountID = :AccountID" +
  2946. " and p.productionlineid = :productionlineid\n";
  2947. if (!string.IsNullOrWhiteSpace(se.ProcedureIDs))
  2948. {
  2949. sqlString += " and instr(',' || :procedureids || ',', ',' || p.procedureid || ',') > 0\n";
  2950. parameters.Add(new OracleParameter(":procedureids", OracleDbType.NVarchar2, se.ProcedureIDs, ParameterDirection.Input));
  2951. }
  2952. sqlString += "order by p.Displayno";
  2953. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2954. if (data == null || data.Rows.Count == 0)
  2955. {
  2956. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2957. return sre;
  2958. }
  2959. parameters.Clear();
  2960. StringBuilder sql1 = new StringBuilder();
  2961. StringBuilder sql2 = new StringBuilder();
  2962. StringBuilder sql3 = new StringBuilder();
  2963. foreach (DataRow item in data.Rows)
  2964. {
  2965. //sql1.Append(", decode(pd.procedureid, " + item["procedureid"] + ", 1, 0) as A" + item["procedurecode"] + "\n");
  2966. //sql2.Append(", sum(pdata.A" + item["procedurecode"] + ") as A" + item["procedurecode"] + "\n");
  2967. //sql3.Append(", pdg.A" + item["procedurecode"] + " as \"" + item["procedurename"] + "\" \n");
  2968. sql1.Append(", sum(decode(pd.procedureid, " + item["procedureid"] + ", 1, 0)) as A" + item["procedurecode"] + "\n");
  2969. sql2.Append(", sum(pdata.A" + item["procedurecode"] + ") as A" + item["procedurecode"] + "\n");
  2970. sql3.Append(", pdg.A" + item["procedurecode"] + " as \"" + item["procedurename"] + "\" \n");
  2971. }
  2972. sqlString =
  2973. "select --pdg.gid,\n" +
  2974. " decode(pdg.gid, 1, '小计', 3, '合计', 0, pdg.goodstypename2, '--') \"产品二级类别\",\n" +
  2975. " decode(pdg.gid, 0, pdg.goodstypename, '--') \"产品类别\",\n" +
  2976. " decode(pdg.gid, 0, pdg.goodscode, '--') \"产品编码\",\n" +
  2977. " decode(pdg.gid, 0, pdg.GOODSNAME, '--') \"产品名称\",\n" +
  2978. " decode(pdg.gid, 0, pdg.goodsspecification, '--') \"产品规格\",\n" +
  2979. " --decode(pdg.gid, 0, pdg.GOODSMODEL, '--') \"产品型号\",\n" +
  2980. " decode(pdg.gid, 0, pdg.GLAZETYPE, '--') \"釉料类别\"\n" +
  2981. sql3 +
  2982. " from ( select " +
  2983. " grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid," +
  2984. " pdata.productionlineid,\n" +
  2985. " pdata.goodstypename2,\n" +
  2986. " pdata.goodstypename,\n" +
  2987. " pdata.goodscode, pdata.goodsname,\n" +
  2988. " pdata.goodsspecification,\n" +
  2989. " pdata.GOODSMODEL,\n" +
  2990. " pdata.GLAZETYPE\n" +
  2991. sql2 +
  2992. " from (" +
  2993. " select\n" +
  2994. " pd.productionlineid,\n" +
  2995. " gt2.goodstypename goodstypename2,\n" +
  2996. " gt.goodstypename,\n" +
  2997. " g.goodscode, g.goodsname,\n" +
  2998. " g.goodsspecification,\n" +
  2999. " g.GOODSMODEL,\n" +
  3000. " dd.dictionaryvalue GLAZETYPE\n" +
  3001. sql1 +
  3002. " from tp_pm_productiondata pd\n" +
  3003. " inner join tp_mst_goods g\n" +
  3004. " on g.goodsid = pd.goodsid\n" +
  3005. " inner join tp_mst_goodstype gt\n" +
  3006. " on gt.goodstypeid = g.goodstypeid\n" +
  3007. " inner join tp_mst_goodstype gt2\n" +
  3008. " on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)\n" +
  3009. " and gt2.accountid = gt.accountid\n" +
  3010. " inner join tp_mst_datadictionary dd\n" +
  3011. " on dd.dictionaryid = g.GLAZETYPEID\n" +
  3012. " where pd.valueflag = '1'\n" +
  3013. // 公坯、干补不算交坯工序的产量。
  3014. //" and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
  3015. // modify wangx 2015-12-3
  3016. (se.ProductionFlag == "1" ? " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  3017. " and pd.accountid = :accountid\n" +
  3018. " and pd.productionlineid = :productionlineid\n" +
  3019. " and pd.createtime >= :createtimeStart\n" +
  3020. " and pd.createtime <= :createtimeEnd\n";
  3021. StringBuilder sql = new StringBuilder(sqlString);
  3022. if (!string.IsNullOrWhiteSpace(se.GoodsIDS))
  3023. {
  3024. sql.Append(" and instr(',' || :goodsIds || ',', ',' || pd.goodsid || ',') > 0\n");
  3025. parameters.Add(new OracleParameter(":goodsIds", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3026. }
  3027. if (!string.IsNullOrWhiteSpace(se.GoodsTypeIDS))
  3028. {
  3029. //sql.Append(" and instr(',' || :goodsTypeIds || ',', ',' || gt.goodstypecode || ',') =1\n");
  3030. sql.Append(" and instr(gt.goodstypecode,:goodsTypeIds) =1\n");
  3031. parameters.Add(new OracleParameter(":goodsTypeIds", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  3032. }
  3033. if (!string.IsNullOrWhiteSpace(se.ProcedureIDs))
  3034. {
  3035. sql.Append(" and instr(',' || :procedureids || ',', ',' || pd.procedureid || ',') > 0\n");
  3036. parameters.Add(new OracleParameter(":procedureids", OracleDbType.NVarchar2, se.ProcedureIDs, ParameterDirection.Input));
  3037. }
  3038. 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))");
  3039. parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  3040. sqlString =
  3041. " group by \n" +
  3042. " pd.productionlineid,\n" +
  3043. " gt2.goodstypename,\n" +
  3044. " gt.goodstypename,\n" +
  3045. " g.goodscode, g.goodsname,\n" +
  3046. " g.goodsspecification,\n" +
  3047. " g.GOODSMODEL,\n" +
  3048. " dd.dictionaryvalue\n" +
  3049. " order by gt2.goodstypename, g.goodscode" +
  3050. " ) pdata\n" +
  3051. " group by grouping sets((pdata.productionlineid,\n" +
  3052. " pdata.goodstypename2,\n" +
  3053. " pdata.goodstypename,\n" +
  3054. " pdata.goodsspecification,\n" +
  3055. " pdata.GOODSMODEL,\n" +
  3056. " pdata.GLAZETYPE,\n" +
  3057. " pdata.goodscode,pdata.goodsname),\n" +
  3058. " (pdata.productionlineid,pdata.goodstypename2),\n" +
  3059. " pdata.productionlineid)\n" +
  3060. " ) pdg";
  3061. sql.Append(sqlString);
  3062. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3063. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  3064. parameters.Add(new OracleParameter(":createtimeStart", OracleDbType.Date, se.AccountDateStart, ParameterDirection.Input));
  3065. parameters.Add(new OracleParameter(":createtimeEnd", OracleDbType.Date, se.AccountDateEnd, ParameterDirection.Input));
  3066. DataTable data1 = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  3067. if (data1 == null || data1.Rows.Count == 0)
  3068. {
  3069. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3070. return sre;
  3071. }
  3072. sre.Data = new DataSet();
  3073. sre.Data.Tables.Add(data1);
  3074. return sre;
  3075. }
  3076. catch (Exception ex)
  3077. {
  3078. throw ex;
  3079. }
  3080. finally
  3081. {
  3082. if (conn != null &&
  3083. conn.ConnState == ConnectionState.Open)
  3084. {
  3085. conn.Close();
  3086. }
  3087. }
  3088. }
  3089. /// <summary>
  3090. /// 取得RPT040103画面(工序质量分析表)的查询数据
  3091. /// </summary>
  3092. /// <param name="user">登录用户信息</param>
  3093. /// <param name="se">查询条件</param>
  3094. /// <returns>查询结果</returns>
  3095. public static ServiceResultEntity GetRPT040103SData(SUserInfo user, RPT040103_SE se)
  3096. {
  3097. IDBConnection conn = null;
  3098. try
  3099. {
  3100. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3101. List<OracleParameter> parameters = new List<OracleParameter>();
  3102. //string sql = ReportModuleLogic.GetRPT040103SSQL(user, se, ref parameters);
  3103. string sql = ReportModuleLogic.GetRPT040103S1SQL(user, se, ref parameters);
  3104. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  3105. ServiceResultEntity sre = new ServiceResultEntity();
  3106. if (data == null || data.Rows.Count == 0)
  3107. {
  3108. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3109. return sre;
  3110. }
  3111. sre.Data = new DataSet();
  3112. sre.Data.Tables.Add(data);
  3113. return sre;
  3114. }
  3115. catch (Exception ex)
  3116. {
  3117. throw ex;
  3118. }
  3119. finally
  3120. {
  3121. if (conn != null &&
  3122. conn.ConnState == ConnectionState.Open)
  3123. {
  3124. conn.Close();
  3125. }
  3126. }
  3127. }
  3128. /// <summary>
  3129. /// 获取RPT040103画面(工序质量分析表)的查询sql
  3130. /// </summary>
  3131. /// <returns>sql</returns>
  3132. private static string GetRPT040103SSQL(SUserInfo user, RPT040103_SE se, ref List<OracleParameter> parameters)
  3133. {
  3134. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3135. parameters.Add(new OracleParameter(":in_rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  3136. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  3137. // 2015-06-16 modify by chenxy
  3138. string sqlString = "\n" +
  3139. "select qdgroup.gid,\n" +
  3140. " decode(qdgroup.gid, 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  3141. " decode(qdgroup.gid, 15, '总计', 0, qdgroup.procedurename, '--') procedurename,\n" +
  3142. " decode(qdgroup.gid, 7, '合计', 0, qdgroup.kilncode, '--') kilncode,\n" +
  3143. " decode(qdgroup.gid, 3, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  3144. " decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\n" +
  3145. " decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
  3146. " decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode,\n" +
  3147. " qdgroup.OutKilnCount,\n" +
  3148. " qdgroup.GoodCount,\n" +
  3149. " to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent,\n" +
  3150. " qdgroup.SubstandardCount,\n" +
  3151. " to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  3152. " '990.00') || '%' SubstandardPercent,\n" +
  3153. " qdgroup.GoodCount+qdgroup.BadCount Qualified,\n" +
  3154. " to_char(((qdgroup.GoodCount+qdgroup.BadCount) / qdgroup.OutKilnCount) * 100,\n" +
  3155. " '990.00') || '%' QualifiedPercent,\n" +
  3156. " qdgroup.BadCount,\n" +
  3157. " to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  3158. " qdgroup.ReFireCount,\n" +
  3159. " to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  3160. " '990.00') || '%' ReFirePercent\n" +
  3161. " from (select grouping_id(pcpl.productionlinename,\n" +
  3162. " pcp.procedurename,\n" +
  3163. " mstkiln.kilncode,\n" +
  3164. " mstgoodstype2.goodstypename,\n" +
  3165. " qd.usercode,\n" +
  3166. " --mstgoodstype.goodstypename,\n" +
  3167. " mstgoods.goodscode) gid,\n" +
  3168. " pcpl.productionlinename,\n" +
  3169. " pcp.procedurename,\n" +
  3170. " --qd.kilnid,\n" +
  3171. " mstkiln.kilncode,\n" +
  3172. " mstgoodstype2.goodstypename goodstypename2,\n" +
  3173. " qd.usercode,\n" +
  3174. " mstgoodstype.goodstypename,\n" +
  3175. " mstgoods.goodscode,\n" +
  3176. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  3177. " sum(qd.GoodCount) GoodCount,\n" +
  3178. " sum(qd.SubstandardCount) SubstandardCount,\n" +
  3179. " sum(qd.BadCount) BadCount,\n" +
  3180. " sum(qd.ReFireCount) ReFireCount\n" +
  3181. " from (select --pdbc.barcode,\n" +
  3182. " pdbc.productionlineid,\n" +
  3183. " pdata.procedureid,\n" +
  3184. " pdata.usercode,\n" +
  3185. " pdbc.goodsid,\n" +
  3186. " pdbc.kilnid,\n" +
  3187. " --pdbc.kilncarid,\n" +
  3188. " --pdbc.kilncarbatchno,\n" +
  3189. " 1 OutKilnCount,\n" +
  3190. " case\n" +
  3191. " when defect.defectprocedureid is not null and glt.goodsleveltypeid in (5, 6, 7) then\n" +
  3192. " 0\n" +
  3193. " else\n" +
  3194. " 1\n" +
  3195. " end GoodCount,\n" +
  3196. " case\n" +
  3197. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 7 then\n" +
  3198. " 1\n" +
  3199. " else\n" +
  3200. " 0\n" +
  3201. " end SubstandardCount,\n" +
  3202. " case\n" +
  3203. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 6 then\n" +
  3204. " 1\n" +
  3205. " else\n" +
  3206. " 0\n" +
  3207. " end ReFireCount,\n" +
  3208. " case\n" +
  3209. " when defect.defectprocedureid is not null and glt.goodsleveltypeid = 5 then\n" +
  3210. " 1\n" +
  3211. " else\n" +
  3212. " 0\n" +
  3213. " end BadCount\n" +
  3214. " from (select distinct pd.barcode,\n" +
  3215. " pd.productionlineid,\n" +
  3216. " pd.goodsid,\n" +
  3217. " pd.kilnid,\n" +
  3218. " --pd.kilncarid,\n" +
  3219. " pd.kilncarbatchno\n" +
  3220. " from tp_pm_productiondata pd\n" +
  3221. // 恒洁三车间特殊处理(质量相关)
  3222. //" where pd.valueflag = '1'\n" +
  3223. //" and pd.procedureid = :in_rptSprocedureId \n" +
  3224. //" and pd.AccountID = :AccountID\n ";
  3225. " where pd.accountid = :AccountID\n" +
  3226. " 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" +
  3227. " 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" +
  3228. " OR (:in_rptSprocedureId not in (11,58) AND pd.valueflag = '1' AND pd.procedureid = :in_rptSprocedureId))\n";
  3229. // end
  3230. StringBuilder selSql = new StringBuilder(sqlString);
  3231. if (se.CreateTimeStart.HasValue)
  3232. {
  3233. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  3234. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3235. }
  3236. if (se.CreateTimeEnd.HasValue)
  3237. {
  3238. selSql.Append(" AND pd.createtime <= :CreateTimeEnd\n");
  3239. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3240. }
  3241. if (!string.IsNullOrEmpty(se.GoodsIDS))
  3242. {
  3243. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  3244. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3245. }
  3246. if (se.ProductionLineID.HasValue)
  3247. {
  3248. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  3249. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  3250. }
  3251. //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))");
  3252. //parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  3253. if (se.KilnID.HasValue)
  3254. {
  3255. selSql.Append(" AND pd.KilnID = :KilnID\n");
  3256. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3257. }
  3258. sqlString =
  3259. " ) pdbc\n" + // 成检交接工序
  3260. " inner join (select distinct pd.barcode,\n" +
  3261. " pd.userid,\n" +
  3262. " pd.usercode,\n" +
  3263. " pd.procedureid\n" +
  3264. " from tp_pm_productiondata pd\n" +
  3265. " where pd.valueflag = '1'\n" +
  3266. " and pd.AccountID = :AccountID\n" +
  3267. // 公坯、干补不算交坯工序的质量。
  3268. //" and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
  3269. // 干补不算交坯工序的质量。
  3270. " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" +
  3271. " and exists\n" +
  3272. " (select 1\n" +
  3273. " from tp_mst_rpttprocedure rptt\n" +
  3274. " where rptt.RPTPROCEDUREID = :in_rptProcedureId\n";
  3275. selSql.Append(sqlString);
  3276. if (!string.IsNullOrEmpty(se.RptTProcedureIDS))
  3277. {
  3278. selSql.Append(" AND instr(','||:rptTprocedureIDS||',', ','||rptt.procedureid||',') > 0\n");
  3279. parameters.Add(new OracleParameter(":rptTprocedureIDS", OracleDbType.NVarchar2, se.RptTProcedureIDS, ParameterDirection.Input));
  3280. }
  3281. //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))");
  3282. selSql.Append(" and rptt.procedureid = pd.procedureid)\n");
  3283. if (!string.IsNullOrEmpty(se.UserIDS))
  3284. {
  3285. selSql.Append(" and instr(','||:userIDS||',', ','||pd.Userid||',') > 0\n");
  3286. parameters.Add(new OracleParameter(":userIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  3287. }
  3288. sqlString =
  3289. " ) pdata\n" + // 生产工序
  3290. " on pdata.barcode = pdbc.barcode\n" +
  3291. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid, kcbc.productiondataid\n" +
  3292. " from (select pd.barcode,\n" +
  3293. " pd.kilncarbatchno,\n" +
  3294. " pd.goodsleveltypeid,\n" +
  3295. " pd.productiondataid,\n" +
  3296. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  3297. " from tp_pm_productiondata pd\n" +
  3298. " where pd.valueflag = '1'\n" +
  3299. " and pd.AccountID = :AccountID\n" +
  3300. " and length(pd.kilncarbatchno) > 0\n" +
  3301. " AND pd.createtime >= :CreateTimeStart\n" +
  3302. " and pd.modeltype = -1) kcbc\n" +
  3303. " where kcbc.dataid = 1) glt\n" +
  3304. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  3305. " and pdbc.barcode = glt.barcode\n" +
  3306. " left join (select distinct productiondataid, defectprocedureid" +
  3307. " from tp_pm_defect def " +
  3308. " where def.valueflag='1'" +
  3309. " and def.AccountID = :AccountID\n" +
  3310. " AND def.createtime >= :CreateTimeStart) defect\n" +
  3311. " on defect.productiondataid = glt.productiondataid\n" +
  3312. " and pdata.procedureid = defect.defectprocedureid\n" +
  3313. " ) qd\n" +
  3314. " inner join tp_pc_productionline pcpl\n" +
  3315. " on pcpl.productionlineid = qd.productionlineid\n" +
  3316. " inner join tp_pc_procedure pcp\n" +
  3317. " on pcp.procedureid = qd.procedureid\n" +
  3318. " inner join tp_mst_kiln mstkiln\n" +
  3319. " on mstkiln.kilnid = qd.kilnid\n" +
  3320. " inner join tp_mst_goods mstgoods\n" +
  3321. " on mstgoods.goodsid = qd.goodsid\n" +
  3322. " inner join tp_mst_goodstype mstgoodstype\n" +
  3323. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3324. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  3325. " inner join tp_mst_goodstype mstgoodstype2\n" +
  3326. " on mstgoodstype2.goodstypecode =\n" +
  3327. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3328. " and mstgoodstype.accountid = mstgoodstype2.accountid\n" +
  3329. " where 1=1\n";
  3330. selSql.Append(sqlString);
  3331. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  3332. {
  3333. //selSql.Append(" AND instr(','||:GoodsTypeIDS||',', ','||mstgoodstype.GOODSTYPECode||',')=1\n");
  3334. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
  3335. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  3336. }
  3337. sqlString =
  3338. " group by grouping sets((pcpl.productionlinename,\n" +
  3339. " pcp.procedurename,\n" +
  3340. " mstkiln.kilncode,\n" +
  3341. " mstgoodstype2.goodstypename,\n" +
  3342. " qd.usercode,\n" +
  3343. " mstgoodstype.goodstypename,\n" +
  3344. " mstgoods.goodscode),\n" +
  3345. " (pcpl.productionlinename,\n" +
  3346. " pcp.procedurename,\n" +
  3347. " mstkiln.kilncode,\n" +
  3348. " mstgoodstype2.goodstypename),\n" +
  3349. " (pcpl.productionlinename,\n" +
  3350. " pcp.procedurename,\n" +
  3351. " mstkiln.kilncode),\n" +
  3352. " (pcpl.productionlinename, pcp.procedurename))\n" +
  3353. " order by pcpl.productionlinename,\n" +
  3354. " pcp.procedurename,\n" +
  3355. " mstkiln.kilncode,\n" +
  3356. " mstgoodstype2.goodstypename,\n" +
  3357. " qd.usercode,\n" +
  3358. " mstgoodstype.goodstypename,\n" +
  3359. " mstgoods.goodscode\n" +
  3360. " ) qdgroup\n";
  3361. selSql.Append(sqlString);
  3362. return selSql.ToString();
  3363. }
  3364. /// <summary>
  3365. /// 获取RPT040103画面(工序质量分析表-按登记时间)的查询sql
  3366. /// </summary>
  3367. /// <returns>sql</returns>
  3368. private static string GetRPT040103S1SQL(SUserInfo user, RPT040103_SE se, ref List<OracleParameter> parameters)
  3369. {
  3370. parameters.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3371. parameters.Add(new OracleParameter(":in_rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  3372. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  3373. string sqlString = "select qdgroup.gid\n" +
  3374. " ,qdgroup.productionlinename\n" +
  3375. " ,decode(qdgroup.gid\n" +
  3376. " ,15\n" +
  3377. " ,'总计[' || qdgroup.procedurename || ']'\n" +
  3378. " ,qdgroup.procedurename) procedurename\n" +
  3379. " ,decode(qdgroup.gid\n" +
  3380. " ,7\n" +
  3381. " ,'合计[' || qdgroup.kilncode || ']'\n" +
  3382. " ,15\n" +
  3383. " ,'--'\n" +
  3384. " ,qdgroup.kilncode) kilncode\n" +
  3385. " ,decode(qdgroup.gid\n" +
  3386. " ,3\n" +
  3387. " ,'小计[' || qdgroup.goodstypename2 || ']'\n" +
  3388. " ,15\n" +
  3389. " ,'--'\n" +
  3390. " ,7\n" +
  3391. " ,'--'\n" +
  3392. " ,qdgroup.goodstypename2) goodstypename2\n" +
  3393. " ,decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode\n" +
  3394. " ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename\n" +
  3395. " ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode\n" +
  3396. " ,qdgroup.OutKilnCount\n" +
  3397. " ,qdgroup.GoodCount\n" +
  3398. " ,decode(qdgroup.OutKilnCount\n" +
  3399. " ,0\n" +
  3400. " ,to_number(null)\n" +
  3401. " ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 4)) GoodPercent\n" +
  3402. " ,qdgroup.SubstandardCount\n" +
  3403. " ,decode(qdgroup.OutKilnCount\n" +
  3404. " ,0\n" +
  3405. " ,to_number(null)\n" +
  3406. " ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent\n" +
  3407. " ,qdgroup.GoodCount + qdgroup.BadCount Qualified\n" +
  3408. " ,decode(qdgroup.OutKilnCount\n" +
  3409. " ,0\n" +
  3410. " ,to_number(null)\n" +
  3411. " ,round((qdgroup.GoodCount + qdgroup.BadCount) /\n" +
  3412. " qdgroup.OutKilnCount\n" +
  3413. " ,4)) QualifiedPercent\n" +
  3414. " ,qdgroup.BadCount\n" +
  3415. " ,decode(qdgroup.OutKilnCount\n" +
  3416. " ,0\n" +
  3417. " ,to_number(null)\n" +
  3418. " ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent\n" +
  3419. " ,qdgroup.ReFireCount\n" +
  3420. " ,decode(qdgroup.OutKilnCount\n" +
  3421. " ,0\n" +
  3422. " ,to_number(null)\n" +
  3423. " ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent\n" +
  3424. " ,qdgroup.STAFFNAME\n" +
  3425. " from (select grouping_id(pcpl.productionlinename\n" +
  3426. " ,pcp.procedurename\n" +
  3427. " ,mstkiln.kilncode\n" +
  3428. " ,mstgoodstype2.goodstypecode\n" +
  3429. " ,pdata.usercode\n" +
  3430. " ,mstgoods.goodscode) gid\n" +
  3431. " ,pcpl.productionlinename\n" +
  3432. " ,pcp.procedurename\n" +
  3433. " ,mstkiln.kilncode\n" +
  3434. " ,mstgoodstype2.goodstypename goodstypename2\n" +
  3435. " ,mstgoodstype2.goodstypecode goodstypecode2\n" +
  3436. " ,pdata.usercode\n" +
  3437. " ,mstgoodstype.goodstypename\n" +
  3438. " ,mstgoods.goodscode\n" +
  3439. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount\n" +
  3440. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 5, 1,16, 1,0)), 0) BadCount\n" +
  3441. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 6, 1, 0)), 0) ReFireCount\n" +
  3442. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount\n" +
  3443. " ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1,16, -1, 0)), 0) GoodCount\n" +
  3444. " ,STAFF.STAFFNAME\n" +
  3445. " from (select 0 goodsleveltypeid -- 出窑数量\n" +
  3446. " ,pd.barcode\n" +
  3447. " ,pd.productionlineid\n" +
  3448. " ,pd.goodsid\n" +
  3449. " ,pd.kilnid\n" +
  3450. " ,pd.kilncarbatchno\n" +
  3451. " ,0 procedureid\n" +
  3452. " ,1 cc\n" +
  3453. " from tp_pm_productiondata pd\n" +
  3454. " where pd.valueflag = '1'\n" +
  3455. " and pd.procedureid = :in_rptSprocedureId\n" +
  3456. " and pd.accountid = :in_AccountID\n";
  3457. StringBuilder selSql = new StringBuilder(sqlString);
  3458. if (se.CreateTimeStart.HasValue)
  3459. {
  3460. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  3461. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3462. }
  3463. if (se.CreateTimeEnd.HasValue)
  3464. {
  3465. selSql.Append(" AND pd.createtime < :CreateTimeEnd\n");
  3466. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3467. }
  3468. if (!string.IsNullOrEmpty(se.GoodsIDS))
  3469. {
  3470. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  3471. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3472. }
  3473. if (se.ProductionLineID.HasValue)
  3474. {
  3475. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  3476. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  3477. }
  3478. if (se.KilnID.HasValue)
  3479. {
  3480. selSql.Append(" AND pd.KilnID = :KilnID\n");
  3481. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3482. }
  3483. sqlString =
  3484. " union all\n" +
  3485. " select distinct ppd.goodsleveltypeid\n" +
  3486. " ,dd.barcode\n" +
  3487. " ,dd.productionlineid\n" +
  3488. " ,dd.goodsid\n" +
  3489. " ,ppd.kilnid\n" +
  3490. " ,ppd.kilncarbatchno\n" +
  3491. " ,dd.defectprocedureid procedureid\n" +
  3492. " ,1 cc\n" +
  3493. " from (select pd.productiondataid\n" +
  3494. " ,pd.goodsleveltypeid\n" +
  3495. " ,pd.kilnid\n" +
  3496. " ,pd.kilncarbatchno\n" +
  3497. " from tp_pm_productiondata pd\n" +
  3498. " where pd.valueflag = '1'\n" +
  3499. " and pd.AccountID = :in_AccountID\n" +
  3500. " and length(pd.kilncarbatchno) > 0\n" +
  3501. " and pd.modeltype = -1\n";
  3502. selSql.Append(sqlString);
  3503. if (se.CreateTimeStart.HasValue)
  3504. {
  3505. //selSql.Append(" AND pd.checktime >= :checktimeStart\n");
  3506. selSql.Append(" AND pd.createtime >= :checktimeStart\n");
  3507. parameters.Add(new OracleParameter(":checktimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3508. }
  3509. if (se.CreateTimeEnd.HasValue)
  3510. {
  3511. //selSql.Append(" AND pd.checktime < :checktimeEnd\n");
  3512. selSql.Append(" AND pd.createtime < :checktimeEnd\n");
  3513. parameters.Add(new OracleParameter(":checktimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3514. }
  3515. if (!string.IsNullOrEmpty(se.GoodsIDS))
  3516. {
  3517. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  3518. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3519. }
  3520. if (se.ProductionLineID.HasValue)
  3521. {
  3522. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  3523. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  3524. }
  3525. if (se.KilnID.HasValue)
  3526. {
  3527. selSql.Append(" AND pd.KilnID = :KilnID\n");
  3528. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3529. }
  3530. sqlString =
  3531. " and exists\n" +
  3532. " (select 1\n" +
  3533. " from tp_pm_productiondata outpd\n" +
  3534. " where outpd.barcode = pd.barcode\n" +
  3535. " and outpd.procedureid = :in_rptSprocedureId\n" +
  3536. " and outpd.valueflag = '1'\n" +
  3537. " and outpd.kilncarbatchno = pd.kilncarbatchno)) ppd\n" +
  3538. " inner join tp_pm_defect dd\n" +
  3539. " on dd.productiondataid = ppd.productiondataid\n" +
  3540. //" --and dd.checktime >= in_DateBegin\n" +
  3541. //" --and dd.checktime <= in_DateEnd\n" +
  3542. " ) ppcc\n" +
  3543. " inner join tp_pm_productiondata pdata\n" +
  3544. " on pdata.barcode = ppcc.barcode\n" +
  3545. // 干补不算交坯工序的质量。
  3546. " and ((pdata.modeltype <> 5) or (pdata.modeltype = 5 and pdata.SpecialRepairFlag = '0')) \n" +
  3547. " and exists\n" +
  3548. " (select 1\n" +
  3549. " from tp_mst_rpttprocedure rptt\n" +
  3550. " where rptt.RPTPROCEDUREID = :in_rptProcedureId \n";
  3551. selSql.Append(sqlString);
  3552. if (!string.IsNullOrEmpty(se.RptTProcedureIDS))
  3553. {
  3554. selSql.Append(" AND instr(','||:rptTprocedureIDS||',', ','||rptt.procedureid||',') > 0\n");
  3555. parameters.Add(new OracleParameter(":rptTprocedureIDS", OracleDbType.NVarchar2, se.RptTProcedureIDS, ParameterDirection.Input));
  3556. }
  3557. sqlString =
  3558. " and rptt.procedureid = pdata.procedureid)\n" +
  3559. " and (ppcc.procedureid = 0 or ppcc.procedureid = pdata.procedureid)\n";
  3560. selSql.Append(sqlString);
  3561. if (!string.IsNullOrEmpty(se.UserIDS))
  3562. {
  3563. selSql.Append(" and instr(','||:userIDS||',', ','||pdata.Userid||',') > 0\n");
  3564. parameters.Add(new OracleParameter(":userIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  3565. }
  3566. sqlString =
  3567. " inner join tp_pc_productionline pcpl\n" +
  3568. " on pcpl.productionlineid = pdata.productionlineid\n" +
  3569. " inner join tp_pc_procedure pcp\n" +
  3570. " on pcp.procedureid = pdata.procedureid\n" +
  3571. " inner join tp_mst_kiln mstkiln\n" +
  3572. " on mstkiln.kilnid = ppcc.kilnid\n" +
  3573. " inner join tp_mst_goods mstgoods\n" +
  3574. " on mstgoods.goodsid = pdata.goodsid\n" +
  3575. " inner join tp_mst_goodstype mstgoodstype\n" +
  3576. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3577. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  3578. " inner join tp_mst_goodstype mstgoodstype2\n" +
  3579. " on mstgoodstype2.goodstypecode =\n" +
  3580. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3581. " and mstgoodstype.accountid = mstgoodstype2.accountid\n";
  3582. // 产品类别
  3583. selSql.Append(sqlString);
  3584. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  3585. {
  3586. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
  3587. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  3588. }
  3589. sqlString = " INNER JOIN (\n" +
  3590. " SELECT\n" +
  3591. " D.CLASSESSETTINGID,\n" +
  3592. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME \n" +
  3593. " FROM\n" +
  3594. " (\n" +
  3595. " SELECT\n" +
  3596. " CD.CLASSESSETTINGID,\n" +
  3597. " HR.STAFFNAME \n" +
  3598. " FROM\n" +
  3599. " TP_PC_CLASSESDETAIL CD\n" +
  3600. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID \n" +
  3601. " ) D \n" +
  3602. " GROUP BY\n" +
  3603. " D.CLASSESSETTINGID\n" +
  3604. " ) STAFF ON pdata.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n";
  3605. // //添加员工姓名查询条件 fenglinyong add 2022-08-27
  3606. selSql.Append(sqlString);
  3607. if (!string.IsNullOrEmpty(se.StaffName))
  3608. {
  3609. selSql.Append(" AND instr( STAFF.STAFFNAME,: STAFFNAME ) = 1 \n");
  3610. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  3611. }
  3612. sqlString =
  3613. " group by grouping sets((pcpl.productionlinename, pcp.displayno, pcp.procedurename, mstkiln.kilncode, mstgoodstype2.goodstypecode, mstgoodstype2.goodstypename, pdata.usercode, mstgoodstype.goodstypecode, mstgoodstype.goodstypename, mstgoods.goodscode,STAFF.STAFFNAME),(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" +
  3614. " order by pcpl.productionlinename\n" +
  3615. " ,pcp.displayno\n" +
  3616. " ,pcp.procedurename\n" +
  3617. " ,mstkiln.kilncode\n" +
  3618. " ,mstgoodstype2.goodstypecode\n" +
  3619. " ,pdata.usercode\n" +
  3620. " ,mstgoodstype.goodstypecode\n" +
  3621. " ,mstgoods.goodscode) qdgroup";
  3622. selSql.Append(sqlString);
  3623. return selSql.ToString();
  3624. }
  3625. /// <summary>
  3626. /// 取得RPT040104画面(产成品质量分析表)的查询数据
  3627. /// </summary>
  3628. /// <param name="user">登录用户信息</param>
  3629. /// <param name="se">查询条件</param>
  3630. /// <returns>查询结果</returns>
  3631. public static ServiceResultEntity GetRPT040104SData(SUserInfo user, RPT040104_SE se)
  3632. {
  3633. IDBConnection conn = null;
  3634. try
  3635. {
  3636. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  3637. List<OracleParameter> parameters = new List<OracleParameter>();
  3638. //string sql = ReportModuleLogic.GetRPT040104SSQL(user, se, ref parameters);
  3639. string sql = ReportModuleLogic.GetRPT040104S1SQL(user, se, ref parameters);
  3640. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  3641. ServiceResultEntity sre = new ServiceResultEntity();
  3642. if (data == null || data.Rows.Count == 0)
  3643. {
  3644. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3645. return sre;
  3646. }
  3647. sre.Data = new DataSet();
  3648. sre.Data.Tables.Add(data);
  3649. return sre;
  3650. }
  3651. catch (Exception ex)
  3652. {
  3653. throw ex;
  3654. }
  3655. finally
  3656. {
  3657. if (conn != null &&
  3658. conn.ConnState == ConnectionState.Open)
  3659. {
  3660. conn.Close();
  3661. }
  3662. }
  3663. }
  3664. /// <summary>
  3665. /// 获取RPT040104画面(产成品质量分析表)的查询sql
  3666. /// </summary>
  3667. /// <returns>sql</returns>
  3668. private static string GetRPT040104SSQL(SUserInfo user, RPT040104_SE se, ref List<OracleParameter> parameters)
  3669. {
  3670. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3671. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  3672. // 2015-06-16 modify by chenxy
  3673. string sqlString = "\n" +
  3674. "select qdgroup.gid,\n" +
  3675. " decode(qdgroup.gid, 7, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  3676. " decode(qdgroup.gid, 3, '合计', 0, qdgroup.kilncode, '--') kilncode,\n" +
  3677. " decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  3678. " decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
  3679. " decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode,\n" +
  3680. " qdgroup.OutKilnCount,\n" +
  3681. " qdgroup.GoodCount,\n" +
  3682. " to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent,\n" +
  3683. " qdgroup.SubstandardCount,\n" +
  3684. " to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  3685. " '990.00') || '%' SubstandardPercent,\n" +
  3686. " qdgroup.GoodCount+qdgroup.BadCount Qualified,\n" +
  3687. " to_char(((qdgroup.GoodCount + qdgroup.BadCount) / qdgroup.OutKilnCount) * 100,\n" +
  3688. " '990.00') || '%' QualifiedPercent,\n" +
  3689. " qdgroup.BadCount,\n" +
  3690. " to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  3691. " qdgroup.ReFireCount,\n" +
  3692. " to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  3693. " '990.00') || '%' ReFirePercent\n" +
  3694. " from (select grouping_id(pcpl.productionlinename,\n" +
  3695. " mstkiln.kilncode,\n" +
  3696. " mstgoodstype2.goodstypename,\n" +
  3697. " --mstgoodstype.goodstypename,\n" +
  3698. " mstgoods.goodscode) gid,\n" +
  3699. " pcpl.productionlinename,\n" +
  3700. " --qd.kilnid,\n" +
  3701. " mstkiln.kilncode,\n" +
  3702. " mstgoodstype2.goodstypename goodstypename2,\n" +
  3703. " mstgoodstype.goodstypename,\n" +
  3704. " mstgoods.goodscode,\n" +
  3705. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  3706. " sum(qd.GoodCount) GoodCount,\n" +
  3707. " sum(qd.SubstandardCount) SubstandardCount,\n" +
  3708. " sum(qd.BadCount) BadCount,\n" +
  3709. " sum(qd.ReFireCount) ReFireCount\n" +
  3710. " from (select --pdbc.barcode,\n" +
  3711. " pdbc.productionlineid,\n" +
  3712. " pdbc.goodsid,\n" +
  3713. " pdbc.kilnid,\n" +
  3714. " --pdbc.kilncarid,\n" +
  3715. " --pdbc.kilncarbatchno,\n" +
  3716. " 1 OutKilnCount,\n" +
  3717. " case\n" +
  3718. " when glt.goodsleveltypeid in (5, 6, 7) then\n" +
  3719. " 0\n" +
  3720. " else\n" +
  3721. " 1\n" +
  3722. " end GoodCount,\n" +
  3723. " case\n" +
  3724. " when glt.goodsleveltypeid = 7 then\n" +
  3725. " 1\n" +
  3726. " else\n" +
  3727. " 0\n" +
  3728. " end SubstandardCount,\n" +
  3729. " case\n" +
  3730. " when glt.goodsleveltypeid = 6 then\n" +
  3731. " 1\n" +
  3732. " else\n" +
  3733. " 0\n" +
  3734. " end ReFireCount,\n" +
  3735. " case\n" +
  3736. " when glt.goodsleveltypeid = 5 then\n" +
  3737. " 1\n" +
  3738. " else\n" +
  3739. " 0\n" +
  3740. " end BadCount\n" +
  3741. " from (select distinct pd.barcode,\n" +
  3742. " pd.productionlineid,\n" +
  3743. " pd.goodsid,\n" +
  3744. " pd.kilnid,\n" +
  3745. " --pd.kilncarid,\n" +
  3746. " pd.kilncarbatchno\n" +
  3747. " from tp_pm_productiondata pd\n" +
  3748. " where pd.valueflag = '1'\n" +
  3749. " and pd.procedureid = :in_rptSprocedureId \n" +
  3750. " and pd.AccountID = :AccountID\n";
  3751. StringBuilder selSql = new StringBuilder(sqlString);
  3752. if (se.CreateTimeStart.HasValue)
  3753. {
  3754. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  3755. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3756. }
  3757. if (se.CreateTimeEnd.HasValue)
  3758. {
  3759. selSql.Append(" AND pd.createtime <= :CreateTimeEnd\n");
  3760. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3761. }
  3762. if (!string.IsNullOrEmpty(se.GoodsIDS))
  3763. {
  3764. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  3765. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3766. }
  3767. if (se.ProductionLineID.HasValue)
  3768. {
  3769. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  3770. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  3771. }
  3772. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  3773. {
  3774. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  3775. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  3776. }
  3777. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  3778. {
  3779. selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
  3780. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  3781. }
  3782. //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))");
  3783. //parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  3784. if (se.KilnID.HasValue)
  3785. {
  3786. selSql.Append(" AND pd.KilnID = :KilnID\n");
  3787. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3788. }
  3789. sqlString =
  3790. " ) pdbc\n" +
  3791. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid\n" +
  3792. " from (select pd.barcode,\n" +
  3793. " pd.kilncarbatchno,\n" +
  3794. " pd.goodsleveltypeid,\n" +
  3795. " pd.productiondataid,\n" +
  3796. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  3797. " from tp_pm_productiondata pd\n" +
  3798. " where pd.valueflag = '1'\n" +
  3799. " and pd.AccountID = :AccountID\n" +
  3800. " and length(pd.kilncarbatchno) > 0\n" +
  3801. " AND pd.createtime >= :CreateTimeStart\n" +
  3802. " and pd.modeltype = -1) kcbc\n" +
  3803. " where kcbc.dataid = 1) glt\n" +
  3804. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  3805. " and pdbc.barcode = glt.barcode) qd\n" +
  3806. " inner join tp_pc_productionline pcpl\n" +
  3807. " on pcpl.productionlineid = qd.productionlineid\n" +
  3808. " inner join tp_mst_kiln mstkiln\n" +
  3809. " on mstkiln.kilnid = qd.kilnid\n" +
  3810. " inner join tp_mst_goods mstgoods\n" +
  3811. " on mstgoods.goodsid = qd.goodsid\n" +
  3812. " inner join tp_mst_goodstype mstgoodstype\n" +
  3813. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  3814. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  3815. " inner join tp_mst_goodstype mstgoodstype2\n" +
  3816. " on mstgoodstype2.goodstypecode =\n" +
  3817. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  3818. " and mstgoodstype.accountid = mstgoodstype2.accountid\n" +
  3819. " where 1=1\n";
  3820. selSql.Append(sqlString);
  3821. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  3822. {
  3823. //selSql.Append(" AND instr(','||:GoodsTypeIDS||',', ','||mstgoodstype.GOODSTYPECode||',') =1\n");
  3824. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS) =1\n");
  3825. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  3826. }
  3827. sqlString =
  3828. " group by grouping sets((pcpl.productionlinename,\n" +
  3829. " mstkiln.kilncode,\n" +
  3830. " mstgoodstype2.goodstypename,\n" +
  3831. " mstgoodstype.goodstypename,\n" +
  3832. " mstgoods.goodscode),\n" +
  3833. " (pcpl.productionlinename,\n" +
  3834. " mstkiln.kilncode,\n" +
  3835. " mstgoodstype2.goodstypename),\n" +
  3836. " (pcpl.productionlinename,\n" +
  3837. " mstkiln.kilncode),\n" +
  3838. " pcpl.productionlinename)\n" +
  3839. " order by pcpl.productionlinename,\n" +
  3840. " mstkiln.kilncode,\n" +
  3841. " mstgoodstype2.goodstypename,\n" +
  3842. " mstgoodstype.goodstypename,\n" +
  3843. " mstgoods.goodscode\n" +
  3844. " ) qdgroup\n";
  3845. selSql.Append(sqlString);
  3846. return selSql.ToString();
  3847. }
  3848. /// <summary>
  3849. /// 获取RPT040104画面(产成品质量分析表-按登记时间)的查询sql
  3850. /// </summary>
  3851. /// <returns>sql</returns>
  3852. private static string GetRPT040104S1SQL(SUserInfo user, RPT040104_SE se, ref List<OracleParameter> parameters)
  3853. {
  3854. parameters.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3855. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  3856. string sqlString = @"select qdgroup.gid
  3857. ,decode(qdgroup.gid, 7, '总计', qdgroup.productionlinename) productionlinename
  3858. ,decode(qdgroup.gid
  3859. ,3
  3860. ,'合计[' || qdgroup.kilncode || ']'
  3861. ,7
  3862. ,'--'
  3863. ,qdgroup.kilncode) kilncode
  3864. ,decode(qdgroup.gid
  3865. ,1
  3866. ,'小计[' || qdgroup.goodstypename2 || ']'
  3867. ,0
  3868. ,qdgroup.goodstypename2
  3869. ,'--') goodstypename2
  3870. ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename
  3871. ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode
  3872. ,decode(qdgroup.gid, 0, qdgroup.goodsname, '--') goodsname
  3873. ,decode(qdgroup.gid, 0, qdgroup.goodsspecification, '--') goodsspecification
  3874. ,qdgroup.OutKilnCount
  3875. ,qdgroup.GoodCount
  3876. ,decode(qdgroup.OutKilnCount
  3877. ,0
  3878. ,to_number(null)
  3879. ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 4)) GoodPercent
  3880. ,qdgroup.SubstandardCount
  3881. ,decode(qdgroup.OutKilnCount
  3882. ,0
  3883. ,to_number(null)
  3884. ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent
  3885. ,qdgroup.GoodCount + qdgroup.BadCount Qualified
  3886. ,decode(qdgroup.OutKilnCount
  3887. ,0
  3888. ,to_number(null)
  3889. ,round((qdgroup.GoodCount + qdgroup.BadCount) /
  3890. qdgroup.OutKilnCount
  3891. ,4)) QualifiedPercent
  3892. ,qdgroup.BadCount
  3893. ,decode(qdgroup.OutKilnCount
  3894. ,0
  3895. ,to_number(null)
  3896. ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent
  3897. ,qdgroup.ReFireCount
  3898. ,decode(qdgroup.OutKilnCount
  3899. ,0
  3900. ,to_number(null)
  3901. ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent
  3902. from (select grouping_id(pcpl.productionlinename
  3903. ,mstkiln.kilncode
  3904. ,mstgoodstype2.goodstypecode
  3905. ,mstgoods.goodscode) gid
  3906. ,pcpl.productionlinename
  3907. ,mstkiln.kilncode
  3908. ,mstgoodstype2.goodstypename goodstypename2
  3909. ,mstgoodstype.goodstypename
  3910. ,mstgoods.goodscode
  3911. ,mstgoods.goodsname
  3912. ,mstgoods.goodsspecification
  3913. ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount
  3914. ,nvl(sum(decode(ppcc.goodsleveltypeid, 5, 1,16,1, 0)), 0) BadCount
  3915. ,nvl(sum(decode(ppcc.goodsleveltypeid, 6, 1, 0)), 0) ReFireCount
  3916. ,nvl(sum(decode(ppcc.goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount
  3917. ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1,16, -1, 0)), 0) GoodCount
  3918. from (select 0 goodsleveltypeid -- 出窑数量
  3919. ,pd.barcode
  3920. ,pd.productionlineid
  3921. ,pd.goodsid
  3922. ,pd.kilnid
  3923. ,pd.kilncarbatchno
  3924. ,1 cc
  3925. from tp_pm_productiondata pd
  3926. inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid = pd.groutingdailydetailid
  3927. where pd.valueflag = '1'
  3928. and pd.procedureid = :in_rptSprocedureId
  3929. AND pd.accountid = :in_AccountID
  3930. AND ((:in_rptSprocedureId = 11 AND ((pd.procedureid = 11 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '0' AND pd.checkflag = '1')))
  3931. OR (:in_rptSprocedureId = 58 AND ((pd.procedureid = 58 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '6' AND pd.checkflag = '1')))
  3932. OR (:in_rptSprocedureId not in (11,58) AND pd.valueflag = '1' AND pd.procedureid = :in_rptSprocedureId))";
  3933. StringBuilder selSql = new StringBuilder(sqlString);
  3934. // 试验标识
  3935. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  3936. {
  3937. selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
  3938. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  3939. }
  3940. if (se.CreateTimeStart.HasValue)
  3941. {
  3942. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  3943. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  3944. }
  3945. if (se.CreateTimeEnd.HasValue)
  3946. {
  3947. selSql.Append(" AND pd.createtime < :CreateTimeEnd\n");
  3948. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  3949. }
  3950. if (!string.IsNullOrEmpty(se.GoodsIDS))
  3951. {
  3952. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  3953. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  3954. }
  3955. if (se.ProductionLineID.HasValue)
  3956. {
  3957. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  3958. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  3959. }
  3960. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  3961. {
  3962. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  3963. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  3964. }
  3965. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  3966. {
  3967. selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
  3968. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  3969. }
  3970. if (se.KilnID.HasValue)
  3971. {
  3972. selSql.Append(" AND pd.KilnID = :KilnID\n");
  3973. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  3974. }
  3975. sqlString =
  3976. " union all\n" +
  3977. " select distinct pd.goodsleveltypeid\n" +
  3978. " ,pd.barcode\n" +
  3979. " ,pd.productionlineid\n" +
  3980. " ,pd.goodsid\n" +
  3981. " ,pd.kilnid\n" +
  3982. " ,pd.kilncarbatchno\n" +
  3983. " ,1 cc\n" +
  3984. " from tp_pm_productiondata pd\n" +
  3985. " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid = pd.groutingdailydetailid\n" +
  3986. " where pd.valueflag = '1'\n" +
  3987. " and pd.modeltype = -1\n" +
  3988. " and pd.AccountID = :in_AccountID\n" +
  3989. " and length(pd.kilncarbatchno) > 0\n";
  3990. selSql.Append(sqlString);
  3991. // 试验标识
  3992. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  3993. {
  3994. selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
  3995. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  3996. }
  3997. if (se.CreateTimeStart.HasValue)
  3998. {
  3999. //selSql.Append(" AND pd.checktime >= :checktimeStart\n");
  4000. selSql.Append(" AND pd.createtime >= :checktimeStart\n");
  4001. parameters.Add(new OracleParameter(":checktimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4002. }
  4003. if (se.CreateTimeEnd.HasValue)
  4004. {
  4005. //selSql.Append(" AND pd.checktime < :checktimeEnd\n");
  4006. selSql.Append(" AND pd.createtime < :checktimeEnd\n");
  4007. parameters.Add(new OracleParameter(":checktimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4008. }
  4009. if (!string.IsNullOrEmpty(se.GoodsIDS))
  4010. {
  4011. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  4012. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4013. }
  4014. if (se.ProductionLineID.HasValue)
  4015. {
  4016. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  4017. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4018. }
  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. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4025. {
  4026. selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
  4027. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4028. }
  4029. if (se.KilnID.HasValue)
  4030. {
  4031. selSql.Append(" AND pd.KilnID = :KilnID\n");
  4032. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4033. }
  4034. sqlString =
  4035. // 恒洁三车间特殊处理(质量相关)
  4036. //" and exists\n" +
  4037. //" (select 1\n" +
  4038. //" from tp_pm_productiondata outpd\n" +
  4039. //" where outpd.barcode = pd.barcode\n" +
  4040. //" and outpd.procedureid = :in_rptSprocedureId\n" +
  4041. //" and outpd.valueflag = '1'\n" +
  4042. //" and outpd.kilncarbatchno = pd.kilncarbatchno)" +
  4043. //" and ((:in_rptSprocedureId = 11 and pd.isrefire = '0') or (:in_rptSprocedureId = 58 and pd.isrefire = '6'))\n" +
  4044. " and ((:in_rptSprocedureId <> 58 and pd.isrefire = '0') or (:in_rptSprocedureId = 58 and pd.isrefire = '6'))\n" +
  4045. ") ppcc\n" +
  4046. // end
  4047. " inner join tp_pc_productionline pcpl\n" +
  4048. " on pcpl.productionlineid = ppcc.productionlineid\n" +
  4049. " inner join tp_mst_kiln mstkiln\n" +
  4050. " on mstkiln.kilnid = ppcc.kilnid\n" +
  4051. " inner join tp_mst_goods mstgoods\n" +
  4052. " on mstgoods.goodsid = ppcc.goodsid\n" +
  4053. " inner join tp_mst_goodstype mstgoodstype\n" +
  4054. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  4055. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  4056. " inner join tp_mst_goodstype mstgoodstype2\n" +
  4057. " on mstgoodstype2.goodstypecode =\n" +
  4058. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  4059. " and mstgoodstype.accountid = mstgoodstype2.accountid\n";
  4060. // 产品类别
  4061. selSql.Append(sqlString);
  4062. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  4063. {
  4064. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
  4065. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  4066. }
  4067. sqlString =
  4068. " group by grouping sets((pcpl.productionlinename, mstkiln.kilncode, mstgoodstype2.goodstypecode, mstgoodstype2.goodstypename, mstgoodstype.goodstypecode, mstgoodstype.goodstypename, mstgoods.goodscode,mstgoods.goodsname,mstgoods.goodsspecification),(pcpl.productionlinename, mstkiln.kilncode, mstgoodstype2.goodstypecode, mstgoodstype2.goodstypename),(pcpl.productionlinename, mstkiln.kilncode),(pcpl.productionlinename))\n" +
  4069. " order by pcpl.productionlinename\n" +
  4070. " ,mstkiln.kilncode\n" +
  4071. " ,mstgoodstype2.goodstypecode\n" +
  4072. " ,mstgoodstype.goodstypecode\n" +
  4073. " ,mstgoods.goodscode) qdgroup\n";
  4074. selSql.Append(sqlString);
  4075. return selSql.ToString();
  4076. }
  4077. /// <summary>
  4078. /// 取得RPT040105画面(质量报表)的查询数据
  4079. /// </summary>
  4080. /// <param name="user">登录用户信息</param>
  4081. /// <param name="se">查询条件</param>
  4082. /// <returns>查询结果</returns>
  4083. public static ServiceResultEntity GetRPT040105SData(SUserInfo user, RPT040105_SE se)
  4084. {
  4085. IDBConnection conn = null;
  4086. try
  4087. {
  4088. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4089. List<OracleParameter> parameters = new List<OracleParameter>();
  4090. string sqlString =
  4091. "SELECT substr(gt.goodstypecode, 1, 6) goodstypecode2, COUNT(*) barcodecount\n" +
  4092. " FROM tp_pm_groutingdailydetail gdd\n" +
  4093. " INNER JOIN tp_mst_goods g\n" +
  4094. " ON g.goodsid = gdd.goodsid\n" +
  4095. " INNER JOIN tp_mst_goodstype gt\n" +
  4096. " ON gt.goodstypeid = g.goodstypeid\n" +
  4097. " WHERE gdd.accountid = :accountid\n" +
  4098. " AND gdd.valueflag = '1'\n" +
  4099. " AND gdd.groutingdate >= :datebegin\n" +
  4100. " AND gdd.groutingdate <= :dateend\n" +
  4101. " AND gdd.groutingflag = '1'\n" +
  4102. " --AND gdd.barcode IS NOT NULL\n" +
  4103. " AND (:TestMouldFlag IS NULL OR gdd.TestMouldFlag = :TestMouldFlag) \n" +
  4104. " AND (:GoodsTypeCode IS NULL OR gt.GOODSTYPECode LIKE :GoodsTypeCode) \n" +
  4105. " GROUP BY GROUPING SETS(substr(gt.goodstypecode, 1, 6),())";
  4106. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4107. parameters.Add(new OracleParameter(":datebegin", OracleDbType.Date, se.CreateTimeStart.Value.Date, ParameterDirection.Input));
  4108. parameters.Add(new OracleParameter(":dateend", OracleDbType.Date, se.CreateTimeEnd.Value.Date, ParameterDirection.Input));
  4109. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  4110. if (string.IsNullOrEmpty(se.GoodsTypeCode))
  4111. {
  4112. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  4113. }
  4114. else
  4115. {
  4116. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode + "%", ParameterDirection.Input));
  4117. }
  4118. DataTable dataCount = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  4119. parameters.Clear();
  4120. //string sql = ReportModuleLogic.GetRPT040105SSQL(user, se, ref parameters);
  4121. string sql = ReportModuleLogic.GetRPT040105S1SQL(user, se, ref parameters);
  4122. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  4123. ServiceResultEntity sre = new ServiceResultEntity();
  4124. if (data == null || data.Rows.Count == 0)
  4125. {
  4126. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4127. return sre;
  4128. }
  4129. data.Columns.Add("GCount", typeof(int));
  4130. //data.Columns.Add("OutGCount", typeof(string));
  4131. //data.Columns.Add("GoodGCount", typeof(string));
  4132. data.Columns.Add("OutGCount", typeof(decimal));
  4133. data.Columns.Add("GoodGCount", typeof(decimal));
  4134. foreach (DataRow item in data.Rows)
  4135. {
  4136. int gid = Convert.ToInt32(item["gid"]);
  4137. if (gid < 2)
  4138. {
  4139. continue;
  4140. }
  4141. int outKilnCount = Convert.ToInt32(item["OutKilnCount"]);
  4142. int goodCount = Convert.ToInt32(item["Qualified"]);
  4143. DataRow[] drs = null;
  4144. if (gid == 2)
  4145. {
  4146. drs = dataCount.Select("goodstypecode2 = '" + item["goodstypecode2"].ToString() + "'");
  4147. }
  4148. else if (gid == 3)
  4149. {
  4150. drs = dataCount.Select("goodstypecode2 is null");
  4151. }
  4152. if (drs != null && drs.Length > 0)
  4153. {
  4154. int barcodecount = Convert.ToInt32(drs[0]["barcodecount"]);
  4155. item["GCount"] = barcodecount;
  4156. //item["OutGCount"] = (outKilnCount * 1.0 / barcodecount).ToString("#,##0.00%");
  4157. //item["GoodGCount"] = (goodCount * 1.0 / barcodecount).ToString("#,##0.00%");
  4158. item["OutGCount"] = Math.Round(outKilnCount * 1.0 / barcodecount, 4);
  4159. item["GoodGCount"] = Math.Round(goodCount * 1.0 / barcodecount, 4);
  4160. }
  4161. else
  4162. {
  4163. item["GCount"] = 0;
  4164. //item["OutGCount"] = "#DIV/0!";
  4165. //item["GoodGCount"] = "#DIV/0!";
  4166. item["OutGCount"] = DBNull.Value;
  4167. item["GoodGCount"] = DBNull.Value;
  4168. }
  4169. }
  4170. sre.Data = new DataSet();
  4171. sre.Data.Tables.Add(data);
  4172. return sre;
  4173. }
  4174. catch (Exception ex)
  4175. {
  4176. throw ex;
  4177. }
  4178. finally
  4179. {
  4180. if (conn != null &&
  4181. conn.ConnState == ConnectionState.Open)
  4182. {
  4183. conn.Close();
  4184. }
  4185. }
  4186. }
  4187. /// <summary>
  4188. /// 获取RPT040105画面(质量报表)的查询sql
  4189. /// </summary>
  4190. /// <returns>sql</returns>
  4191. private static string GetRPT040105SSQL(SUserInfo user, RPT040105_SE se, ref List<OracleParameter> parameters)
  4192. {
  4193. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4194. parameters.Add(new OracleParameter(":OutProcedureIDS", OracleDbType.Varchar2, se.OutProcedureIDS, ParameterDirection.Input));
  4195. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  4196. // 2015-06-16 modify by chenxy
  4197. string sqlString = "\n" +
  4198. "select qdgroup.gid,\n" +
  4199. " decode(qdgroup.gid, 3, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
  4200. " decode(qdgroup.gid, 1, '合计【'||qdgroup.kilncode||'】', 0, qdgroup.kilncode, '--') kilncode,\n" +
  4201. " decode(qdgroup.gid, 2, '合计【'||qdgroup.goodstypename2||'】', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
  4202. " qdgroup.goodstypecode2,\n" +
  4203. " qdgroup.OutKilnCount,\n" +
  4204. " qdgroup.GoodCount,\n" +
  4205. " to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent,\n" +
  4206. " qdgroup.SubstandardCount,\n" +
  4207. " to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
  4208. " '990.00') || '%' SubstandardPercent,\n" +
  4209. " qdgroup.GoodCount+qdgroup.BadCount Qualified,\n" +
  4210. " to_char(((qdgroup.GoodCount + qdgroup.BadCount) / qdgroup.OutKilnCount) * 100,\n" +
  4211. " '990.00') || '%' QualifiedPercent,\n" +
  4212. " qdgroup.BadCount,\n" +
  4213. " to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
  4214. " qdgroup.ReFireCount,\n" +
  4215. " to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
  4216. " '990.00') || '%' ReFirePercent\n" +
  4217. " from (select grouping_id(pcpl.productionlinename,\n" +
  4218. " mstkiln.kilncode,\n" +
  4219. " mstgoodstype2.goodstypecode) gid,\n" +
  4220. " pcpl.productionlinename,\n" +
  4221. " mstkiln.kilncode,\n" +
  4222. " mstgoodstype2.goodstypecode goodstypecode2,\n" +
  4223. " mstgoodstype2.goodstypename goodstypename2,\n" +
  4224. " sum(qd.OutKilnCount) OutKilnCount,\n" +
  4225. " sum(qd.GoodCount) GoodCount,\n" +
  4226. " sum(qd.SubstandardCount) SubstandardCount,\n" +
  4227. " sum(qd.BadCount) BadCount,\n" +
  4228. " sum(qd.ReFireCount) ReFireCount\n" +
  4229. " from (select --pdbc.barcode,\n" +
  4230. " pdbc.productionlineid,\n" +
  4231. " pdbc.goodsid,\n" +
  4232. " pdbc.kilnid,\n" +
  4233. " 1 OutKilnCount,\n" +
  4234. " case\n" +
  4235. " when glt.goodsleveltypeid in (5, 6, 7) then\n" +
  4236. " 0\n" +
  4237. " else\n" +
  4238. " 1\n" +
  4239. " end GoodCount,\n" +
  4240. " case\n" +
  4241. " when glt.goodsleveltypeid = 7 then\n" +
  4242. " 1\n" +
  4243. " else\n" +
  4244. " 0\n" +
  4245. " end SubstandardCount,\n" +
  4246. " case\n" +
  4247. " when glt.goodsleveltypeid = 6 then\n" +
  4248. " 1\n" +
  4249. " else\n" +
  4250. " 0\n" +
  4251. " end ReFireCount,\n" +
  4252. " case\n" +
  4253. " when glt.goodsleveltypeid = 5 then\n" +
  4254. " 1\n" +
  4255. " else\n" +
  4256. " 0\n" +
  4257. " end BadCount\n" +
  4258. " from (select distinct pd.barcode,\n" +
  4259. " pd.productionlineid,\n" +
  4260. " pd.goodsid,\n" +
  4261. " pd.kilnid,\n" +
  4262. " pd.kilncarbatchno\n" +
  4263. " from tp_pm_productiondata pd\n" +
  4264. " where pd.valueflag = '1'\n" +
  4265. " and (:in_rptSprocedureId is null or pd.procedureid = :in_rptSprocedureId) \n" +
  4266. " and (:OutProcedureIDS is null or instr(','||:OutProcedureIDS||',', ','||pd.procedureid||',') > 0) \n" +
  4267. " and pd.AccountID = :AccountID\n";
  4268. StringBuilder selSql = new StringBuilder(sqlString);
  4269. if (se.CreateTimeStart.HasValue)
  4270. {
  4271. selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
  4272. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4273. }
  4274. if (se.CreateTimeEnd.HasValue)
  4275. {
  4276. selSql.Append(" AND pd.createtime <= :CreateTimeEnd\n");
  4277. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4278. }
  4279. if (!string.IsNullOrEmpty(se.GoodsIDS))
  4280. {
  4281. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  4282. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4283. }
  4284. if (se.ProductionLineID.HasValue)
  4285. {
  4286. selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  4287. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4288. }
  4289. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  4290. {
  4291. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  4292. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  4293. }
  4294. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4295. {
  4296. selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
  4297. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4298. }
  4299. // 不控制权限
  4300. //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))");
  4301. //parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  4302. if (se.KilnID.HasValue)
  4303. {
  4304. selSql.Append(" AND pd.KilnID = :KilnID\n");
  4305. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4306. }
  4307. sqlString =
  4308. " ) pdbc\n" +
  4309. " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid\n" +
  4310. " from (select pd.barcode,\n" +
  4311. " pd.kilncarbatchno,\n" +
  4312. " pd.goodsleveltypeid,\n" +
  4313. " pd.productiondataid,\n" +
  4314. " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
  4315. " from tp_pm_productiondata pd\n" +
  4316. " where pd.valueflag = '1'\n" +
  4317. " and pd.AccountID = :AccountID\n" +
  4318. " and length(pd.kilncarbatchno) > 0\n" +
  4319. " AND pd.createtime >= :CreateTimeStart\n" +
  4320. " and pd.modeltype = -1) kcbc\n" +
  4321. " where kcbc.dataid = 1) glt\n" +
  4322. " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
  4323. " and pdbc.barcode = glt.barcode) qd\n" +
  4324. " inner join tp_pc_productionline pcpl\n" +
  4325. " on pcpl.productionlineid = qd.productionlineid\n" +
  4326. " inner join tp_mst_kiln mstkiln\n" +
  4327. " on mstkiln.kilnid = qd.kilnid\n" +
  4328. " inner join tp_mst_goods mstgoods\n" +
  4329. " on mstgoods.goodsid = qd.goodsid\n" +
  4330. " inner join tp_mst_goodstype mstgoodstype\n" +
  4331. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  4332. " inner join tp_mst_goodstype mstgoodstype2\n" +
  4333. " on mstgoodstype2.goodstypecode =\n" +
  4334. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  4335. " and mstgoodstype.accountid = mstgoodstype2.accountid\n" +
  4336. " where 1=1\n";
  4337. selSql.Append(sqlString);
  4338. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  4339. {
  4340. selSql.Append(" AND instr(','||:GoodsTypeIDS||',', ','||mstgoods.GOODSTYPEId||',') > 0\n");
  4341. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  4342. }
  4343. sqlString =
  4344. " group by grouping sets((pcpl.productionlinename,\n" +
  4345. " mstkiln.kilncode,\n" +
  4346. " mstgoodstype2.goodstypecode,\n" +
  4347. " mstgoodstype2.goodstypename),\n" +
  4348. " (pcpl.productionlinename,\n" +
  4349. " mstgoodstype2.goodstypecode,\n" +
  4350. " mstgoodstype2.goodstypename),\n" +
  4351. " (pcpl.productionlinename,\n" +
  4352. " mstkiln.kilncode),\n" +
  4353. " pcpl.productionlinename)\n" +
  4354. " order by pcpl.productionlinename,\n" +
  4355. " mstkiln.kilncode,\n" +
  4356. " mstgoodstype2.goodstypename\n" +
  4357. " ) qdgroup\n";
  4358. selSql.Append(sqlString);
  4359. return selSql.ToString();
  4360. }
  4361. /// <summary>
  4362. /// 获取RPT040105画面(质量报表-按登记时间)的查询sql
  4363. /// </summary>
  4364. /// <returns>sql</returns>
  4365. private static string GetRPT040105S1SQL(SUserInfo user, RPT040105_SE se, ref List<OracleParameter> parameters)
  4366. {
  4367. parameters.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4368. parameters.Add(new OracleParameter(":in_OutProcedureIDS", OracleDbType.Varchar2, se.OutProcedureIDS, ParameterDirection.Input));
  4369. parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  4370. // 202603604
  4371. string procedureid = "";
  4372. string kilproc = " ";//出窑工序
  4373. string functionalTesting = " ";//功能检测
  4374. if (string.IsNullOrEmpty(se.OutProcedureIDS))
  4375. {
  4376. // 本烧
  4377. if (se.RptSProcedureID == 16)
  4378. {
  4379. procedureid = " 55, 13 ";
  4380. functionalTesting = " 60 ";
  4381. kilproc = " 16 ";
  4382. }
  4383. // 重烧
  4384. else if (se.RptSProcedureID == 28)
  4385. {
  4386. procedureid = " 24 ";
  4387. functionalTesting = " 61 ";
  4388. kilproc = " 28 ";
  4389. }
  4390. // 冷修
  4391. else
  4392. {
  4393. procedureid = " 42 ";
  4394. functionalTesting = " 61 ";
  4395. kilproc = " 28 ";
  4396. }
  4397. }
  4398. else
  4399. {
  4400. procedureid = " 55, 13, 24, 42 ";
  4401. functionalTesting = " 61,60 ";
  4402. kilproc = " 16,28 ";
  4403. }
  4404. string sqlString = "select qdgroup.gid\n" +
  4405. " ,decode(qdgroup.gid, 3, '总计', qdgroup.productionlinename) productionlinename\n" +
  4406. " ,qdgroup.dtsource " +
  4407. " ,decode(qdgroup.gid\n" +
  4408. " ,1\n" +
  4409. " ,'合计[' || qdgroup.kilncode || ']'\n" +
  4410. " ,0\n" +
  4411. " ,qdgroup.kilncode\n" +
  4412. " ,'--') kilncode\n" +
  4413. " ,decode(qdgroup.gid\n" +
  4414. " ,2\n" +
  4415. " ,'合计[' || qdgroup.goodstypename2 || ']'\n" +
  4416. " ,0\n" +
  4417. " ,qdgroup.goodstypename2\n" +
  4418. " ,'--') goodstypename2\n" +
  4419. " ,qdgroup.goodstypecode2\n" +
  4420. " ,qdgroup.OutKilnCount\n" +
  4421. " ,qdgroup.GoodCount\n" +
  4422. " ,decode(qdgroup.OutKilnCount\n" +
  4423. " ,0\n" +
  4424. " ,to_number(null)\n" +
  4425. " ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 4)) GoodPercent\n" +
  4426. " ,qdgroup.SubstandardCount\n" +
  4427. " ,decode(qdgroup.OutKilnCount\n" +
  4428. " ,0\n" +
  4429. " ,to_number(null)\n" +
  4430. " ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent\n" +
  4431. " ,qdgroup.GoodCount + qdgroup.BadCount Qualified\n" +
  4432. " ,decode(qdgroup.OutKilnCount\n" +
  4433. " ,0\n" +
  4434. " ,to_number(null)\n" +
  4435. " ,round((qdgroup.GoodCount + qdgroup.BadCount) /\n" +
  4436. " qdgroup.OutKilnCount\n" +
  4437. " ,4)) QualifiedPercent\n" +
  4438. " ,qdgroup.BadCount\n" +
  4439. " ,decode(qdgroup.OutKilnCount\n" +
  4440. " ,0\n" +
  4441. " ,to_number(null)\n" +
  4442. " ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent\n" +
  4443. " ,qdgroup.ReFireCount\n" +
  4444. " ,decode(qdgroup.OutKilnCount\n" +
  4445. " ,0\n" +
  4446. " ,to_number(null)\n" +
  4447. " ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent\n" +
  4448. " from (select grouping_id(pcpl.productionlinename\n" +
  4449. " ,mstkiln.kilncode\n" +
  4450. " ,mstgoodstype2.goodstypecode) gid\n" +
  4451. " ,pcpl.productionlinename\n" +
  4452. " ,mstkiln.kilncode\n" +
  4453. " ,mstgoodstype2.goodstypename goodstypename2\n" +
  4454. " ,mstgoodstype2.goodstypecode goodstypecode2\n" +
  4455. " ,ppcc.dtsource "
  4456. //" ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount\n" +
  4457. //" ,nvl(sum(decode(ppcc.goodsleveltypeid, 5, 1,16,1, 0)), 0) BadCount\n" +
  4458. //" ,nvl(sum(decode(ppcc.goodsleveltypeid, 6, 1, 0)), 0) ReFireCount\n" +
  4459. //" ,nvl(sum(decode(ppcc.goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount\n" +
  4460. //" ,nvl(sum(decode(ppcc.goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1,16,-1, 0)), 0) GoodCount\n" +
  4461. //" from (select DISTINCT 0 goodsleveltypeid \n" +
  4462. //" ,pd.barcode\n" +
  4463. //" ,pd.productionlineid\n" +
  4464. //" ,pd.goodsid\n" +
  4465. //" ,pd.kilnid\n" +
  4466. //" ,pd.kilncarbatchno\n" +
  4467. //" ,1 cc\n" +
  4468. //" from tp_pm_productiondata pd\n" +
  4469. //" inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid = pd.groutingdailydetailid\n" +
  4470. //" where pd.valueflag = '1'\n" +
  4471. //" and (:in_rptSprocedureId is null or pd.procedureid = :in_rptSprocedureId)\n" +
  4472. //" and (:in_OutProcedureIDS is null or instr(','||:in_OutProcedureIDS||',', ','||pd.procedureid||',') > 0)\n" +
  4473. //" and pd.accountid = :in_AccountID\n"
  4474. ;
  4475. StringBuilder selSql = new StringBuilder(sqlString);
  4476. // 试验标识
  4477. //if (!string.IsNullOrEmpty(se.TestMouldFlag))
  4478. //{
  4479. // selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
  4480. // parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  4481. //}
  4482. //if (se.CreateTimeStart.HasValue)
  4483. //{
  4484. // selSql.Append(" AND pd.checktime >= :CreateTimeStart\n");
  4485. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4486. //}
  4487. //if (se.CreateTimeEnd.HasValue)
  4488. //{
  4489. // selSql.Append(" AND pd.checktime < :CreateTimeEnd\n");
  4490. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4491. //}
  4492. //if (!string.IsNullOrEmpty(se.GoodsIDS))
  4493. //{
  4494. // selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
  4495. // parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4496. //}
  4497. //if (se.ProductionLineID.HasValue)
  4498. //{
  4499. // selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
  4500. // parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4501. //}
  4502. //if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  4503. //{
  4504. // selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
  4505. // parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  4506. //}
  4507. //if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4508. //{
  4509. // selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
  4510. // parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4511. //}
  4512. //if (se.KilnID.HasValue)
  4513. //{
  4514. // selSql.Append(" AND pd.KilnID = :KilnID\n");
  4515. // parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4516. //}
  4517. sqlString =
  4518. @" ,COUNT(DISTINCT ppcc.barcode) outkilncount
  4519. ,COUNT(DISTINCT CASE
  4520. WHEN ppcc.goodsleveltypeid IN (5) THEN
  4521. barcode
  4522. ELSE
  4523. NULL
  4524. END) AS badcount
  4525. ,COUNT(DISTINCT CASE
  4526. WHEN ppcc.goodsleveltypeid IN (6) THEN
  4527. barcode
  4528. ELSE
  4529. NULL
  4530. END) AS refirecount
  4531. ,COUNT(DISTINCT CASE
  4532. WHEN ppcc.goodsleveltypeid IN (7) THEN
  4533. barcode
  4534. ELSE
  4535. NULL
  4536. END) AS substandardcount
  4537. ,COUNT(DISTINCT CASE
  4538. WHEN ppcc.goodsleveltypeid IN (4) THEN
  4539. barcode
  4540. ELSE
  4541. NULL
  4542. END) AS goodcount FROM ( SELECT DISTINCT nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
  4543. ,pd.barcode
  4544. ,pd.productionlineid
  4545. ,pd.goodsid
  4546. ,pd.kilnid
  4547. ,pd.kilncarbatchno
  4548. ,1 cc
  4549. ,CASE
  4550. WHEN pd.procedureid IN (55, 13) THEN
  4551. '本烧'
  4552. WHEN pd.procedureid IN (24) THEN
  4553. '重烧'
  4554. ELSE
  4555. '冷修'
  4556. END dtsource
  4557. FROM(SELECT *
  4558. FROM(SELECT pd28.productionlineid
  4559. , pd28.goodsid
  4560. , pd28.goodscode
  4561. , pd28.goodsleveltypeid
  4562. , pd28.groutingdailydetailid
  4563. , pd28.kilnid
  4564. , pd24.procedureid
  4565. , pd28.kilncarbatchno
  4566. , pd28.barcode
  4567. , pd28.productiondataid
  4568. , row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
  4569. FROM tp_pm_productiondata pd28-- 重烧质量登记
  4570. INNER JOIN tp_pm_productiondata pd24-- 重烧修补24 / 冷补42
  4571. ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
  4572. INNER JOIN tp_pm_groutingdailydetail gdd
  4573. ON gdd.groutingdailydetailid = pd28.groutingdailydetailid
  4574. WHERE pd28.procedureid in ( " + kilproc+ @" )
  4575. AND pd28.valueflag = 1
  4576. AND pd24.valueflag = 1 ";
  4577. selSql.Append(sqlString);
  4578. //// 统计工序
  4579. //if (!string.IsNullOrEmpty(se.Procedureid))
  4580. //{
  4581. // selSql.Append(" AND pd.PROCEDUREID= :PROCEDUREID ");
  4582. // parameters.Add(new OracleParameter(":PROCEDUREID", OracleDbType.Char, se.Procedureid, ParameterDirection.Input));
  4583. //}
  4584. // 试验标识
  4585. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  4586. {
  4587. selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
  4588. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  4589. }
  4590. if (se.CreateTimeStart.HasValue)
  4591. {
  4592. //selSql.Append(" AND pd.checktime >= :checktimeStart\n");
  4593. selSql.Append(" AND pd28.checktime >= :CreateTimeStart\n");
  4594. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  4595. }
  4596. if (se.CreateTimeEnd.HasValue)
  4597. {
  4598. //selSql.Append(" AND pd.checktime < :checktimeEnd\n");
  4599. selSql.Append(" AND pd28.checktime < :CreateTimeEnd\n");
  4600. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  4601. }
  4602. if (!string.IsNullOrEmpty(se.GoodsIDS))
  4603. {
  4604. selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd28.GoodsId||',') > 0\n");
  4605. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  4606. }
  4607. if (se.ProductionLineID.HasValue)
  4608. {
  4609. selSql.Append(" AND pd28.ProductionLineId = :ProductionLineID\n");
  4610. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  4611. }
  4612. if (!string.IsNullOrEmpty(se.GroutingUserIDS))
  4613. {
  4614. selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd28.groutinguserid||',') > 0\n");
  4615. parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
  4616. }
  4617. if (!string.IsNullOrEmpty(se.GroutingLineIDS))
  4618. {
  4619. selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd28.groutinglineid||',') > 0\n");
  4620. parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
  4621. }
  4622. if (se.KilnID.HasValue)
  4623. {
  4624. selSql.Append(" AND pd28.KilnID = :KilnID\n");
  4625. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  4626. }
  4627. sqlString = @" AND pd24.procedureid IN ( " + (se.RptSProcedureID == 42?"24":procedureid) + @" ,42 ) -- 重烧质量登记里包含 重烧修补24 / 冷补42
  4628. AND pd24.productiondataid < pd28.productiondataid) t
  4629. WHERE rownums = 1
  4630. AND t.procedureid IN ( " + procedureid + @" )) pd
  4631. LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
  4632. ON pd61.procedureid in ( " + functionalTesting + @" )
  4633. AND pd61.valueflag = 1
  4634. AND pd61.groutingdailydetailid = pd.groutingdailydetailid
  4635. AND pd61.kilncarbatchno = pd.kilncarbatchno
  4636. AND pd61.productiondataid > pd.productiondataid
  4637. -- 取最近的数据
  4638. AND NOT EXISTS (SELECT 1
  4639. FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
  4640. WHERE pd28c.procedureid in ( " + kilproc + @" )
  4641. AND pd28c.valueflag = 1
  4642. AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
  4643. AND pd28c.kilncarbatchno = pd.kilncarbatchno
  4644. AND pd28c.productiondataid > pd.productiondataid
  4645. AND pd28c.productiondataid < pd61.productiondataid) ";
  4646. selSql.Append(sqlString);
  4647. sqlString =
  4648. " ) ppcc\n" +
  4649. " inner join tp_pc_productionline pcpl\n" +
  4650. " on pcpl.productionlineid = ppcc.productionlineid\n" +
  4651. " inner join tp_mst_kiln mstkiln\n" +
  4652. " on mstkiln.kilnid = ppcc.kilnid\n" +
  4653. " inner join tp_mst_goods mstgoods\n" +
  4654. " on mstgoods.goodsid = ppcc.goodsid\n" +
  4655. " inner join tp_mst_goodstype mstgoodstype\n" +
  4656. " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
  4657. " and mstgoodstype.accountid = mstgoods.accountid\n" +
  4658. " inner join tp_mst_goodstype mstgoodstype2\n" +
  4659. " on mstgoodstype2.goodstypecode =\n" +
  4660. " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
  4661. " and :in_AccountID = mstgoodstype2.accountid\n";
  4662. // 产品类别
  4663. selSql.Append(sqlString);
  4664. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  4665. {
  4666. selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
  4667. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  4668. }
  4669. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  4670. {
  4671. selSql.Append(" AND mstgoodstype.GOODSTYPECode LIKE :GoodsTypeCode\n");
  4672. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode + "%", ParameterDirection.Input));
  4673. }
  4674. else
  4675. {
  4676. selSql.Append(" AND mstgoodstype.GOODSTYPECode LIKE '%' \n");
  4677. }
  4678. sqlString =
  4679. " group by grouping sets((pcpl.productionlinename, mstkiln.kilncode, mstgoodstype2.goodstypename,mstgoodstype2.goodstypecode, ppcc.dtsource),(pcpl.productionlinename, mstgoodstype2.goodstypename,mstgoodstype2.goodstypecode),(pcpl.productionlinename, mstkiln.kilncode),(pcpl.productionlinename))\n" +
  4680. " order by pcpl.productionlinename\n" +
  4681. " ,mstkiln.kilncode\n" +
  4682. " ,mstgoodstype2.goodstypecode\n" +
  4683. " ) qdgroup\n";
  4684. selSql.Append(sqlString);
  4685. return selSql.ToString();
  4686. }
  4687. /// <summary>
  4688. /// 取得RPT040106画面(缺陷报表)的查询数据
  4689. /// </summary>
  4690. /// <param name="user">登录用户信息</param>
  4691. /// <param name="se">查询条件</param>
  4692. /// <returns>查询结果</returns>
  4693. public static ServiceResultEntity GetRPT040106SData(SUserInfo user, RPT040106_SE se)
  4694. {
  4695. IDBConnection conn = null;
  4696. try
  4697. {
  4698. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4699. string sqlString = null;
  4700. OracleParameter[] parameters = null;
  4701. if (se.OutKilnNumByGoodsType)
  4702. {
  4703. string procedure = se.RptSProcedureID == 16?" (16,60)":"(28,61)";
  4704. sqlString = "SELECT Defect.productionlinename\n" +
  4705. " ,Defect.procedurename\n" +
  4706. " ,Defect.Defectcode\n" +
  4707. " ,Defect.Defectname\n" +
  4708. " ,Defect.goodstypename2\n" +
  4709. " ,Defect.DefectCount\n" +
  4710. " ,OUT.outNum OutKilnCount\n" +
  4711. " ,decode(OUT.outNum,\n" +
  4712. " 0,\n" +
  4713. " to_number(NULL),\n" +
  4714. " ROUND(Defect.DefectCount / OUT.outNum, 4)) DefectPercent\n" +
  4715. " FROM (SELECT tp_pc_productionline.productionlinename\n" +
  4716. " ,tp_pc_procedure.procedurename\n" +
  4717. " ,TP_MST_DefectType.Defecttypename\n" +
  4718. " ,TP_MST_Defect.Defectcode\n" +
  4719. " ,TP_MST_Defect.Defectname\n" +
  4720. " ,goodstype2.goodstypename goodstypename2\n" +
  4721. " ,goodstype2.goodstypecode goodstypecode2\n" +
  4722. " --,COUNT(DISTINCT TP_PM_Defect.Barcode) DefectCount\n" +
  4723. " ,COUNT(TP_PM_Defect.Barcode) DefectCount\n" +
  4724. " FROM TP_PM_Defect\n" +
  4725. " LEFT JOIN tp_pc_procedure\n" +
  4726. " ON TP_PM_Defect.ProcedureID = tp_pc_procedure.ProcedureID\n" +
  4727. " LEFT JOIN tp_pc_productionline\n" +
  4728. " ON TP_PM_Defect.Productionlineid =\n" +
  4729. " tp_pc_productionline.Productionlineid\n" +
  4730. " LEFT JOIN TP_MST_Goods\n" +
  4731. " ON TP_PM_Defect.Goodsid = TP_MST_Goods.Goodsid\n" +
  4732. " LEFT JOIN TP_MST_GoodsType\n" +
  4733. " ON TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID\n" +
  4734. " LEFT JOIN TP_MST_GoodsType goodstype2\n" +
  4735. " ON goodstype2.goodstypecode =\n" +
  4736. " substr(TP_MST_GoodsType.goodstypecode, 0, 6)\n" +
  4737. " AND TP_MST_GoodsType.accountid = goodstype2.accountid\n" +
  4738. " LEFT JOIN TP_MST_Defect\n" +
  4739. " ON TP_PM_Defect.DefectID = TP_MST_Defect.DefectID\n" +
  4740. " LEFT JOIN TP_MST_DefectType\n" +
  4741. " ON TP_MST_Defect.DefectTypeID = TP_MST_DefectType.DefectTypeID\n" +
  4742. " --LEFT JOIN TP_PM_ProductionData\n" +
  4743. " -- ON TP_PM_ProductionData.ProductionDataID =\n" +
  4744. " -- TP_PM_Defect.ProductionDataID\n" +
  4745. " WHERE TP_PM_Defect.valueflag = '1'\n" +
  4746. " --AND tp_pc_procedure.ModelType = -1\n" +
  4747. " AND TP_PM_Defect.AccountID = :AccountID\n" +
  4748. " AND (:createtimebegin is null or TP_PM_Defect.createtime >= :createtimebegin)\n" +
  4749. " AND (:createtimeend is null or TP_PM_Defect.createtime <= :createtimeend)\n" +
  4750. " AND (:procedureids is null or instr(','||:procedureids||',', ','||TP_PM_Defect.ProcedureID||',') > 0)\n" +
  4751. " AND (:DefectCode is null or instr(TP_MST_Defect.Defectcode, :DefectCode) > 0)\n" +
  4752. " AND (:DefectName is null or instr(TP_MST_Defect.Defectname, :DefectName) > 0)\n" +
  4753. "and TP_PM_Defect.ProcedureID in " + procedure +
  4754. " GROUP BY tp_pc_productionline.productionlinename\n" +
  4755. " ,tp_pc_procedure.procedurename\n" +
  4756. " ,TP_MST_DefectType.Defecttypename\n" +
  4757. " ,TP_MST_Defect.Defectcode\n" +
  4758. " ,TP_MST_Defect.Defectname\n" +
  4759. " ,goodstype2.goodstypecode\n" +
  4760. " ,goodstype2.goodstypename) Defect\n" +
  4761. " LEFT JOIN ( SELECT gt2.goodstypecode goodstypecode2, COUNT(pd.barcode) outNum\n" +
  4762. " FROM tp_pm_productiondata pd\n" +
  4763. " LEFT JOIN tp_mst_goods g on g.goodsid = pd.goodsid\n" +
  4764. " LEFT JOIN tp_mst_goodstype gt on g.goodstypeid = gt.goodstypeid\n" +
  4765. " LEFT JOIN tp_mst_goodstype gt2 on gt2.AccountID = :AccountID and gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)\n" +
  4766. // 恒洁三车间特殊处理(质量相关)
  4767. //" WHERE pd.valueflag = '1'\n" +
  4768. //" AND pd.procedureid = :procedureid\n" +
  4769. " where ((pd.procedureid <> 104 and pd.valueflag = '1') or (pd.procedureid = 104 and pd.checkflag = '1')) \n" +
  4770. " and ((:in_rptSprocedureId = 11 AND ((pd.procedureid = 11 ) OR (pd.procedureid =104 AND pd.isrefire = '0'))) \n" +
  4771. " OR (:in_rptSprocedureId = 58 AND ((pd.procedureid = 58) OR (pd.procedureid =104 AND pd.isrefire = '6'))) \n" +
  4772. " OR (:in_rptSprocedureId not in (11,58) AND pd.procedureid = :in_rptSprocedureId))\n" +
  4773. // end
  4774. " AND pd.AccountID = :AccountID\n" +
  4775. " AND (:createtimebegin is null or pd.createtime >= :createtimebegin)\n" +
  4776. " AND (:createtimeend is null or pd.createtime <= :createtimeend)\n" +
  4777. " GROUP BY gt2.goodstypecode) OUT \n" +
  4778. " ON OUT.goodstypecode2 = Defect.goodstypecode2 \n";
  4779. parameters = new OracleParameter[]
  4780. {
  4781. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  4782. new OracleParameter(":createtimebegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  4783. new OracleParameter(":createtimeend", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  4784. new OracleParameter(":procedureids", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input),
  4785. new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input),
  4786. new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input),
  4787. //new OracleParameter(":OutKilnCount", OracleDbType.Int32, outKilnCount, ParameterDirection.Input),
  4788. new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input),
  4789. };
  4790. }
  4791. else
  4792. {
  4793. sqlString = "SELECT COUNT(pd.barcode) \n" +
  4794. " FROM tp_pm_productiondata pd\n" +
  4795. // 恒洁三车间特殊处理(质量相关)
  4796. //" WHERE pd.valueflag = '1'\n" +
  4797. //" AND pd.procedureid = :procedureid\n" +
  4798. " where ((pd.procedureid <> 104 and pd.valueflag = '1') or (pd.procedureid = 104 and pd.checkflag = '1')) \n" +
  4799. " and ((:in_rptSprocedureId = 11 AND ((pd.procedureid = 11 ) OR (pd.procedureid =104 AND pd.isrefire = '0'))) \n" +
  4800. " OR (:in_rptSprocedureId = 58 AND ((pd.procedureid = 58) OR (pd.procedureid =104 AND pd.isrefire = '6'))) \n" +
  4801. " OR (:in_rptSprocedureId not in (11,58) AND pd.procedureid = :in_rptSprocedureId))\n" +
  4802. // end
  4803. " AND pd.AccountID = :AccountID\n" +
  4804. " AND (:createtimebegin is null or pd.createtime >= :createtimebegin)\n" +
  4805. " AND (:createtimeend is null or pd.createtime <= :createtimeend)";
  4806. parameters = new OracleParameter[]
  4807. {
  4808. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  4809. new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input),
  4810. new OracleParameter(":createtimebegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  4811. new OracleParameter(":createtimeend", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  4812. };
  4813. int outKilnCount = Convert.ToInt32(conn.GetSqlResultToStr(sqlString, parameters));
  4814. sqlString = "SELECT Defect.productionlinename\n" +
  4815. " ,Defect.procedurename\n" +
  4816. " ,Defect.Defectcode\n" +
  4817. " ,Defect.Defectname\n" +
  4818. " ,Defect.goodstypename2\n" +
  4819. " ,Defect.DefectCount\n" +
  4820. " ,:OutKilnCount OutKilnCount\n" +
  4821. " ,decode(:OutKilnCount,\n" +
  4822. " 0,\n" +
  4823. " to_number(NULL),\n" +
  4824. " ROUND(Defect.DefectCount / :OutKilnCount, 4)) DefectPercent\n" +
  4825. " FROM (SELECT tp_pc_productionline.productionlinename\n" +
  4826. " ,tp_pc_procedure.procedurename\n" +
  4827. " ,TP_MST_DefectType.Defecttypename\n" +
  4828. " ,TP_MST_Defect.Defectcode\n" +
  4829. " ,TP_MST_Defect.Defectname\n" +
  4830. " ,goodstype2.goodstypename goodstypename2\n" +
  4831. " ,:OutKilnCount OutKilnCount\n" +
  4832. " --,COUNT(DISTINCT TP_PM_Defect.Barcode) DefectCount\n" +
  4833. " ,COUNT(TP_PM_Defect.Barcode) DefectCount\n" +
  4834. " FROM TP_PM_Defect\n" +
  4835. " LEFT JOIN tp_pc_procedure\n" +
  4836. " ON TP_PM_Defect.ProcedureID = tp_pc_procedure.ProcedureID\n" +
  4837. " LEFT JOIN tp_pc_productionline\n" +
  4838. " ON TP_PM_Defect.Productionlineid =\n" +
  4839. " tp_pc_productionline.Productionlineid\n" +
  4840. " LEFT JOIN TP_MST_Goods\n" +
  4841. " ON TP_PM_Defect.Goodsid = TP_MST_Goods.Goodsid\n" +
  4842. " LEFT JOIN TP_MST_GoodsType\n" +
  4843. " ON TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID\n" +
  4844. " LEFT JOIN TP_MST_GoodsType goodstype2\n" +
  4845. " ON goodstype2.goodstypecode =\n" +
  4846. " substr(TP_MST_GoodsType.goodstypecode, 0, 6)\n" +
  4847. " AND TP_MST_GoodsType.accountid = goodstype2.accountid\n" +
  4848. " LEFT JOIN TP_MST_Defect\n" +
  4849. " ON TP_PM_Defect.DefectID = TP_MST_Defect.DefectID\n" +
  4850. " LEFT JOIN TP_MST_DefectType\n" +
  4851. " ON TP_MST_Defect.DefectTypeID = TP_MST_DefectType.DefectTypeID\n" +
  4852. " --LEFT JOIN TP_PM_ProductionData\n" +
  4853. " -- ON TP_PM_ProductionData.ProductionDataID =\n" +
  4854. " -- TP_PM_Defect.ProductionDataID\n" +
  4855. " WHERE TP_PM_Defect.valueflag = '1'\n" +
  4856. " --AND tp_pc_procedure.ModelType = -1\n" +
  4857. " AND TP_PM_Defect.AccountID = :AccountID\n" +
  4858. " AND (:createtimebegin is null or TP_PM_Defect.createtime >= :createtimebegin)\n" +
  4859. " AND (:createtimeend is null or TP_PM_Defect.createtime <= :createtimeend)\n" +
  4860. " AND (:procedureids is null or instr(','||:procedureids||',', ','||TP_PM_Defect.ProcedureID||',') > 0)\n" +
  4861. " AND (:DefectCode is null or instr(TP_MST_Defect.Defectcode, :DefectCode) > 0)\n" +
  4862. " AND (:DefectName is null or instr(TP_MST_Defect.Defectname, :DefectName) > 0)\n" +
  4863. " GROUP BY tp_pc_productionline.productionlinename\n" +
  4864. " ,tp_pc_procedure.procedurename\n" +
  4865. " ,TP_MST_DefectType.Defecttypename\n" +
  4866. " ,TP_MST_Defect.Defectcode\n" +
  4867. " ,TP_MST_Defect.Defectname\n" +
  4868. " ,goodstype2.goodstypename) Defect";
  4869. parameters = new OracleParameter[]
  4870. {
  4871. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  4872. new OracleParameter(":createtimebegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  4873. new OracleParameter(":createtimeend", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  4874. new OracleParameter(":procedureids", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input),
  4875. new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input),
  4876. new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input),
  4877. new OracleParameter(":OutKilnCount", OracleDbType.Int32, outKilnCount, ParameterDirection.Input),
  4878. };
  4879. }
  4880. DataTable data = conn.GetSqlResultToDt(sqlString, parameters);
  4881. ServiceResultEntity sre = new ServiceResultEntity();
  4882. if (data == null || data.Rows.Count == 0)
  4883. {
  4884. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4885. return sre;
  4886. }
  4887. sre.Data = new DataSet();
  4888. sre.Data.Tables.Add(data);
  4889. return sre;
  4890. }
  4891. catch (Exception ex)
  4892. {
  4893. throw ex;
  4894. }
  4895. finally
  4896. {
  4897. if (conn != null &&
  4898. conn.ConnState == ConnectionState.Open)
  4899. {
  4900. conn.Close();
  4901. }
  4902. }
  4903. }
  4904. /// <summary>
  4905. /// 取得RPT040107画面(注浆产品工序分析表)的查询数据
  4906. /// </summary>
  4907. /// <param name="user">登录用户信息</param>
  4908. /// <param name="se">查询条件</param>
  4909. /// <returns>查询结果</returns>
  4910. public static ServiceResultEntity GetRPT040107SData(SUserInfo user, RPT040107_SE se)
  4911. {
  4912. IDBConnection conn = null;
  4913. try
  4914. {
  4915. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  4916. List<OracleParameter> parameters = new List<OracleParameter>();
  4917. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4918. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  4919. string sqlString =
  4920. "SELECT LISTAGG('''' || p.procedureid || ''' AS ' || 'P' || p.procedureid,\n" +
  4921. " ',') WITHIN GROUP(ORDER BY p.displayno, p.pid) pivotcol\n" +
  4922. " ,LISTAGG('sum(pd.P' || p.procedureid || '_BC) AS \"' ||\n" +
  4923. " p.procedurename || '\"',\n" +
  4924. " ',') WITHIN GROUP(ORDER BY p.displayno, p.pid) groupsum\n" +
  4925. " FROM (SELECT to_char(p.procedureid) procedureid\n" +
  4926. " ,to_char(p.procedurename) procedurename\n" +
  4927. " ,p.displayno\n" +
  4928. " ,p.productionlineid plid\n" +
  4929. " ,p.procedureid pid\n" +
  4930. " FROM tp_pc_procedure p\n" +
  4931. " WHERE p.valueflag = '1'\n" +
  4932. " AND p.modeltype <> -1\n" +
  4933. " AND p.accountid = :AccountID\n" +
  4934. " UNION ALL\n" +
  4935. " SELECT to_char(p.procedureid) || 'S'\n" +
  4936. " ,to_char(p.procedurename) || '(不合格)'\n" +
  4937. " ,p.displayno\n" +
  4938. " ,p.productionlineid plid\n" +
  4939. " ,p.procedureid pid\n" +
  4940. " FROM tp_pc_procedure p\n" +
  4941. " WHERE p.valueflag = '1'\n" +
  4942. " AND p.modeltype = -1\n" +
  4943. " AND p.accountid = :AccountID " +
  4944. " UNION ALL\n" +
  4945. " SELECT to_char(p.procedureid) || 'A'\n" +
  4946. " ,to_char(p.procedurename) || '(检测量)'\n" +
  4947. " ,p.displayno\n" +
  4948. " ,p.productionlineid plid\n" +
  4949. " ,p.procedureid pid\n" +
  4950. " FROM tp_pc_procedure p\n" +
  4951. " WHERE p.valueflag = '1'\n" +
  4952. " AND p.modeltype = -1\n" +
  4953. " AND p.accountid = :AccountID " +
  4954. " UNION ALL\n" +
  4955. " SELECT to_char(p.procedureid) || 'T'\n" +
  4956. " ,to_char(p.procedurename) || '(合格)'\n" +
  4957. " ,p.displayno\n" +
  4958. " ,p.productionlineid plid\n" +
  4959. " ,p.procedureid pid\n" +
  4960. " FROM tp_pc_procedure p\n" +
  4961. " WHERE p.valueflag = '1'\n" +
  4962. " AND p.modeltype = -1\n" +
  4963. " AND p.accountid = :AccountID) p" +
  4964. " 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" +
  4965. " 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";
  4966. // 生产线
  4967. if (se.ProductionLineID.HasValue)
  4968. {
  4969. sqlString = sqlString + " AND p.plid = :ProductionLineID ";
  4970. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  4971. }
  4972. // 生产工序
  4973. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  4974. {
  4975. sqlString = sqlString + " AND instr(:procedureids, ','||p.pid||',')>0 ";
  4976. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  4977. }
  4978. DataTable cols = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  4979. ServiceResultEntity sre = new ServiceResultEntity();
  4980. if (cols == null || cols.Rows.Count == 0)
  4981. {
  4982. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4983. return sre;
  4984. }
  4985. string pivotcol = cols.Rows[0]["pivotcol"].ToString();
  4986. string groupsum = cols.Rows[0]["groupsum"].ToString();
  4987. if (string.IsNullOrEmpty(pivotcol) || string.IsNullOrEmpty(groupsum))
  4988. {
  4989. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4990. return sre;
  4991. }
  4992. parameters.Clear();
  4993. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  4994. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  4995. sqlString =
  4996. "WITH pd_data AS\n" +
  4997. " (SELECT DISTINCT pd.goodsid pdgoodsid\n" +
  4998. " ,pd.groutingdailydetailid\n" +
  4999. //" ,decode(pd.MODELTYPE,\n" +
  5000. //" -1,\n" +
  5001. //" to_char(pd.procedureid) || 'S',\n" +
  5002. //" to_char(pd.procedureid)) procedureid\n" +
  5003. " ,CASE WHEN pd.modeltype = -1 AND pd.goodsleveltypeid IN (6, 7) THEN to_char(pd.procedureid) || 'S' " +
  5004. " WHEN pd.modeltype = -1 AND pd.goodsleveltypeid NOT IN (6, 7) THEN to_char(pd.procedureid) || 'T' " +
  5005. " ELSE to_char(pd.procedureid) END procedureid " +
  5006. " FROM tp_pm_productiondata pd\n" +
  5007. " LEFT JOIN tp_mst_goods goods\n" +
  5008. " ON goods.goodsid = pd.goodsid\n" +
  5009. " LEFT JOIN tp_mst_goodstype gt\n" +
  5010. " ON gt.goodstypeid = goods.goodstypeid\n" +
  5011. " WHERE pd.valueflag = '1'\n" +
  5012. // 现场质量登记是全扫 241225
  5013. //" AND (pd.MODELTYPE <> -1 OR pd.goodsleveltypeid IN (6, 7))\n" +
  5014. " AND pd.accountid = :AccountID\n" +
  5015. (se.Specialrepairflag ? " AND ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  5016. " 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" +
  5017. " 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";
  5018. // 生产线
  5019. if (se.ProductionLineID.HasValue)
  5020. {
  5021. sqlString = sqlString + " AND pd.productionlineid = :ProductionLineID ";
  5022. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  5023. }
  5024. // 生产工序
  5025. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  5026. {
  5027. sqlString = sqlString + " AND instr(:procedureids, ','||pd.procedureid||',')>0 ";
  5028. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  5029. }
  5030. // 产品型号
  5031. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  5032. {
  5033. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  5034. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  5035. }
  5036. // 产品编码
  5037. if (!string.IsNullOrEmpty(se.GoodsCode))
  5038. {
  5039. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  5040. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  5041. }
  5042. // 注浆时间
  5043. if (se.GTimeStart.HasValue)
  5044. {
  5045. sqlString = sqlString + " AND pd.GROUTINGDATE >=:GTimeStart ";
  5046. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  5047. }
  5048. if (se.GTimeEnd.HasValue)
  5049. {
  5050. sqlString = sqlString + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  5051. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  5052. }
  5053. sqlString += " union all SELECT DISTINCT pd.goodsid pdgoodsid\n" +
  5054. " ,pd.groutingdailydetailid\n" +
  5055. //" ,decode(pd.MODELTYPE,\n" +
  5056. //" -1,\n" +
  5057. //" to_char(pd.procedureid) || 'S',\n" +
  5058. //" to_char(pd.procedureid)) procedureid\n" +
  5059. " ,to_char(pd.procedureid) || 'A' procedureid " +
  5060. " FROM tp_pm_productiondata pd\n" +
  5061. " LEFT JOIN tp_mst_goods goods\n" +
  5062. " ON goods.goodsid = pd.goodsid\n" +
  5063. " LEFT JOIN tp_mst_goodstype gt\n" +
  5064. " ON gt.goodstypeid = goods.goodstypeid\n" +
  5065. " WHERE pd.valueflag = '1'\n" +
  5066. " AND pd.modeltype = -1 \n" +
  5067. " AND pd.accountid = :AccountID\n" +
  5068. (se.Specialrepairflag ? " AND ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  5069. " 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" +
  5070. " 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";
  5071. // 生产线
  5072. if (se.ProductionLineID.HasValue)
  5073. {
  5074. sqlString = sqlString + " AND pd.productionlineid = :ProductionLineID ";
  5075. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  5076. }
  5077. // 生产工序
  5078. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  5079. {
  5080. sqlString = sqlString + " AND instr(:procedureids, ','||pd.procedureid||',')>0 ";
  5081. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  5082. }
  5083. // 产品型号
  5084. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  5085. {
  5086. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  5087. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  5088. }
  5089. // 产品编码
  5090. if (!string.IsNullOrEmpty(se.GoodsCode))
  5091. {
  5092. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  5093. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  5094. }
  5095. // 注浆时间
  5096. if (se.GTimeStart.HasValue)
  5097. {
  5098. sqlString = sqlString + " AND pd.GROUTINGDATE >=:GTimeStart ";
  5099. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  5100. }
  5101. if (se.GTimeEnd.HasValue)
  5102. {
  5103. sqlString = sqlString + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  5104. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  5105. }
  5106. sqlString +=
  5107. " ),\n" +
  5108. "pivot_data AS\n" +
  5109. " (SELECT *\n" +
  5110. " FROM pd_data\n" +
  5111. " PIVOT(COUNT(groutingdailydetailid) bc\n" +
  5112. " FOR procedureid IN(" + pivotcol + ")))\n" +
  5113. "SELECT decode(grouping_id(groutdetail.goodstypename2, groutdetail.goodscode),\n" +
  5114. " 3,\n" +
  5115. " '合计',\n" +
  5116. " 1,\n" +
  5117. " '小计【' || groutdetail.goodstypename2 || '】',\n" +
  5118. " groutdetail.goodstypename2) \"产量类别\"\n" +
  5119. " ,decode(grouping_id(groutdetail.goodstypename2, groutdetail.goodscode),\n" +
  5120. " 0,\n" +
  5121. " groutdetail.goodscode,\n" +
  5122. " '--') \"产品编码\"\n" +
  5123. " ,SUM(groutdetail.groutcount) \"注浆数量\"\n" +
  5124. " ,SUM(groutdetail.barcodecount) \"绑条码数量\"\n" +
  5125. " ,SUM(groutdetail.scrapcount) \"开模损坯\"\n" +
  5126. " ," + groupsum + "\n" +
  5127. " FROM (SELECT gdd.goodsid, gt2.goodstypename goodstypename2, goods.goodscode\n" +
  5128. " ,COUNT(gdd.groutingdailydetailid) AS groutcount\n" +
  5129. " ,SUM(decode(gdd.barcode, NULL, 0, 1)) AS barcodecount\n" +
  5130. " ,SUM(decode(gdd.scrapflag, '1', 1, 0)) AS scrapcount\n" +
  5131. " FROM tp_pm_groutingdailydetail gdd\n" +
  5132. " LEFT JOIN tp_mst_goods goods\n" +
  5133. " ON goods.goodsid = gdd.goodsid\n" +
  5134. " LEFT JOIN tp_mst_goodstype gt\n" +
  5135. " ON gt.goodstypeid = goods.goodstypeid\n" +
  5136. " LEFT JOIN tp_mst_goodstype gt2\n" +
  5137. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  5138. " AND gt2.accountid = gt.accountid\n" +
  5139. " WHERE gdd.valueflag = '1'\n" +
  5140. " AND gdd.accountid = :AccountID\n";
  5141. // 产品型号
  5142. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  5143. {
  5144. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  5145. }
  5146. // 产品编码
  5147. if (!string.IsNullOrEmpty(se.GoodsCode))
  5148. {
  5149. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  5150. }
  5151. // 注浆时间
  5152. if (se.GTimeStart.HasValue)
  5153. {
  5154. sqlString = sqlString + " AND gdd.GROUTINGDATE >=:GTimeStart ";
  5155. }
  5156. if (se.GTimeEnd.HasValue)
  5157. {
  5158. sqlString = sqlString + " AND gdd.GROUTINGDATE <= :GTimeEnd ";
  5159. }
  5160. sqlString +=
  5161. " AND gdd.groutingflag = '1'\n" +
  5162. " GROUP BY gdd.goodsid, gt2.goodstypename, goods.goodscode) groutdetail\n" +
  5163. " LEFT JOIN pivot_data pd\n" +
  5164. " ON pd.pdgoodsid = groutdetail.goodsid\n" +
  5165. " GROUP BY GROUPING SETS((groutdetail.goodstypename2, groutdetail.goodscode),(groutdetail.goodstypename2),())\n" +
  5166. " ORDER BY groutdetail.goodstypename2, groutdetail.goodscode";
  5167. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  5168. if (data == null || data.Rows.Count == 0)
  5169. {
  5170. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5171. return sre;
  5172. }
  5173. sre.Data = new DataSet();
  5174. sre.Data.Tables.Add(data);
  5175. return sre;
  5176. }
  5177. catch (Exception ex)
  5178. {
  5179. throw ex;
  5180. }
  5181. finally
  5182. {
  5183. if (conn != null &&
  5184. conn.ConnState == ConnectionState.Open)
  5185. {
  5186. conn.Close();
  5187. }
  5188. }
  5189. }
  5190. /// <summary>
  5191. /// 取得RPT040108画面(成型线产量分析表)的查询数据
  5192. /// </summary>
  5193. /// <param name="user">登录用户信息</param>
  5194. /// <param name="se">查询条件</param>
  5195. /// <returns>查询结果</returns>
  5196. public static ServiceResultEntity GetRPT040108SData(SUserInfo user, RPT040108_SE se)
  5197. {
  5198. IDBConnection conn = null;
  5199. try
  5200. {
  5201. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5202. //string sqlString =
  5203. // "SELECT t.groutinglinecode\n" +
  5204. // " ,t.BuildingNo\n" +
  5205. // " ,t.FloorNo\n" +
  5206. // " ,t.GroutingLineNo\n" +
  5207. // " ,t.usercode\n" +
  5208. // " ,t.goodscode\n" +
  5209. // " ,t.GOODSSPECIFICATION\n" +
  5210. // " ,t.goodstypename\n" +
  5211. // //" ,round(AVG(t.MouldQuantity), 2) MouldQuantity\n" +
  5212. // " ,AVG(t.MouldQuantity) MouldQuantity\n" +
  5213. // " ,SUM(decode(t.gday, '01', t.c, 0)) c01\n" +
  5214. // " ,SUM(decode(t.dday, '01', t.d, 0)) d01\n" +
  5215. // " ,SUM(decode(t.gday, '02', t.c, 0)) c02\n" +
  5216. // " ,SUM(decode(t.dday, '02', t.d, 0)) d02\n" +
  5217. // " ,SUM(decode(t.gday, '03', t.c, 0)) c03\n" +
  5218. // " ,SUM(decode(t.dday, '03', t.d, 0)) d03\n" +
  5219. // " ,SUM(decode(t.gday, '04', t.c, 0)) c04\n" +
  5220. // " ,SUM(decode(t.dday, '04', t.d, 0)) d04\n" +
  5221. // " ,SUM(decode(t.gday, '05', t.c, 0)) c05\n" +
  5222. // " ,SUM(decode(t.dday, '05', t.d, 0)) d05\n" +
  5223. // " ,SUM(decode(t.gday, '06', t.c, 0)) c06\n" +
  5224. // " ,SUM(decode(t.dday, '06', t.d, 0)) d06\n" +
  5225. // " ,SUM(decode(t.gday, '07', t.c, 0)) c07\n" +
  5226. // " ,SUM(decode(t.dday, '07', t.d, 0)) d07\n" +
  5227. // " ,SUM(decode(t.gday, '08', t.c, 0)) c08\n" +
  5228. // " ,SUM(decode(t.dday, '08', t.d, 0)) d08\n" +
  5229. // " ,SUM(decode(t.gday, '09', t.c, 0)) c09\n" +
  5230. // " ,SUM(decode(t.dday, '09', t.d, 0)) d09\n" +
  5231. // " ,SUM(decode(t.gday, '10', t.c, 0)) c10\n" +
  5232. // " ,SUM(decode(t.dday, '10', t.d, 0)) d10\n" +
  5233. // " ,SUM(decode(t.gday, '11', t.c, 0)) c11\n" +
  5234. // " ,SUM(decode(t.dday, '11', t.d, 0)) d11\n" +
  5235. // " ,SUM(decode(t.gday, '12', t.c, 0)) c12\n" +
  5236. // " ,SUM(decode(t.dday, '12', t.d, 0)) d12\n" +
  5237. // " ,SUM(decode(t.gday, '13', t.c, 0)) c13\n" +
  5238. // " ,SUM(decode(t.dday, '13', t.d, 0)) d13\n" +
  5239. // " ,SUM(decode(t.gday, '14', t.c, 0)) c14\n" +
  5240. // " ,SUM(decode(t.dday, '14', t.d, 0)) d14\n" +
  5241. // " ,SUM(decode(t.gday, '15', t.c, 0)) c15\n" +
  5242. // " ,SUM(decode(t.dday, '15', t.d, 0)) d15\n" +
  5243. // " ,SUM(decode(t.gday, '16', t.c, 0)) c16\n" +
  5244. // " ,SUM(decode(t.dday, '16', t.d, 0)) d16\n" +
  5245. // " ,SUM(decode(t.gday, '17', t.c, 0)) c17\n" +
  5246. // " ,SUM(decode(t.dday, '17', t.d, 0)) d17\n" +
  5247. // " ,SUM(decode(t.gday, '18', t.c, 0)) c18\n" +
  5248. // " ,SUM(decode(t.dday, '18', t.d, 0)) d18\n" +
  5249. // " ,SUM(decode(t.gday, '19', t.c, 0)) c19\n" +
  5250. // " ,SUM(decode(t.dday, '19', t.d, 0)) d19\n" +
  5251. // " ,SUM(decode(t.gday, '20', t.c, 0)) c20\n" +
  5252. // " ,SUM(decode(t.dday, '20', t.d, 0)) d20\n" +
  5253. // " ,SUM(decode(t.gday, '21', t.c, 0)) c21\n" +
  5254. // " ,SUM(decode(t.dday, '21', t.d, 0)) d21\n" +
  5255. // " ,SUM(decode(t.gday, '22', t.c, 0)) c22\n" +
  5256. // " ,SUM(decode(t.dday, '22', t.d, 0)) d22\n" +
  5257. // " ,SUM(decode(t.gday, '23', t.c, 0)) c23\n" +
  5258. // " ,SUM(decode(t.dday, '23', t.d, 0)) d23\n" +
  5259. // " ,SUM(decode(t.gday, '24', t.c, 0)) c24\n" +
  5260. // " ,SUM(decode(t.dday, '24', t.d, 0)) d24\n" +
  5261. // " ,SUM(decode(t.gday, '25', t.c, 0)) c25\n" +
  5262. // " ,SUM(decode(t.dday, '25', t.d, 0)) d25\n" +
  5263. // " ,SUM(decode(t.gday, '26', t.c, 0)) c26\n" +
  5264. // " ,SUM(decode(t.dday, '26', t.d, 0)) d26\n" +
  5265. // " ,SUM(decode(t.gday, '27', t.c, 0)) c27\n" +
  5266. // " ,SUM(decode(t.dday, '27', t.d, 0)) d27\n" +
  5267. // " ,SUM(decode(t.gday, '28', t.c, 0)) c28\n" +
  5268. // " ,SUM(decode(t.dday, '28', t.d, 0)) d28\n" +
  5269. // " ,SUM(decode(t.gday, '29', t.c, 0)) c29\n" +
  5270. // " ,SUM(decode(t.dday, '29', t.d, 0)) d29\n" +
  5271. // " ,SUM(decode(t.gday, '30', t.c, 0)) c30\n" +
  5272. // " ,SUM(decode(t.dday, '30', t.d, 0)) d30\n" +
  5273. // " ,SUM(decode(t.gday, '31', t.c, 0)) c31\n" +
  5274. // " ,SUM(decode(t.dday, '31', t.d, 0)) d31\n" +
  5275. // " FROM (SELECT gd.groutinglinecode\n" +
  5276. // " ,gl.BuildingNo\n" +
  5277. // " ,gl.FloorNo\n" +
  5278. // " ,gl.GroutingLineNo\n" +
  5279. // " ,gd.usercode\n" +
  5280. // " ,gdd.goodscode\n" +
  5281. // " ,g.GOODSSPECIFICATION\n" +
  5282. // " ,gt.goodstypename\n" +
  5283. // //" ,gd.MouldQuantity\n" +
  5284. // " ,gl.MouldQuantity\n" +
  5285. // " ,to_char(gd.groutingdate, 'dd') AS gday\n" +
  5286. // " ,to_char(gdd.delivertime, 'dd') AS dday\n" +
  5287. // " , CASE\n" +
  5288. // " WHEN gd.groutingdate >= :GDateBegin AND\n" +
  5289. // " gd.groutingdate <= :GDateEnd AND\n" +
  5290. // " gdd.GroutingFlag = '1' AND gdd.ScrapFlag = '0' THEN\n" +
  5291. // " 1\n" +
  5292. // " ELSE\n" +
  5293. // " 0\n" +
  5294. // " END c -- 成坯量\n" +
  5295. // " , CASE\n" +
  5296. // " WHEN gdd.delivertime >= :GDateBegin AND\n" +
  5297. // " gdd.delivertime <= :GDateEnd AND\n" +
  5298. // " gdd.deliverflag = '1' THEN\n" +
  5299. // " 1\n" +
  5300. // " ELSE\n" +
  5301. // " 0\n" +
  5302. // " END d -- 交坯量\n" +
  5303. // " FROM TP_PM_GroutingDaily gd\n" +
  5304. // " INNER JOIN TP_PM_GroutingDailyDetail gdd\n" +
  5305. // " ON gdd.groutingdailyid = gd.groutingdailyid\n" +
  5306. // " INNER JOIN TP_PC_GroutingLine gl \n" +
  5307. // " ON gl.groutinglineid = gd.groutinglineid\n" +
  5308. // " INNER JOIN TP_MST_Goods g\n" +
  5309. // " ON g.goodsid = gdd.goodsid\n" +
  5310. // " INNER JOIN TP_MST_GOODSTYPE gt\n" +
  5311. // " ON gt.goodstypeid = g.goodstypeid\n" +
  5312. // " WHERE gd.accountid = :AccountID\n" +
  5313. // " AND ((gd.groutingdate >= :GDateBegin AND\n" +
  5314. // " gd.groutingdate <= :GDateEnd) OR\n" +
  5315. // " (gdd.delivertime >= :GDateBegin AND\n" +
  5316. // " gdd.delivertime <= :GDateEnd))\n" +
  5317. // " AND (:groutinglinecode is null or instr(gd.groutinglinecode, :groutinglinecode) > 0)\n" +
  5318. // " AND (:groutingusercode is null or instr(gdd.usercode, :groutingusercode) > 0)\n" +
  5319. // " AND (:goodscode is null or instr(gdd.goodscode, :goodscode) > 0)\n" +
  5320. // " AND (:goodstypecode is null or instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  5321. // " ) t\n" +
  5322. // " GROUP BY t.groutinglinecode\n" +
  5323. // " ,t.BuildingNo\n" +
  5324. // " ,t.FloorNo\n" +
  5325. // " ,t.GroutingLineNo\n" +
  5326. // " ,t.usercode\n" +
  5327. // " ,t.goodscode\n" +
  5328. // " ,t.GOODSSPECIFICATION\n" +
  5329. // " ,t.goodstypename\n" +
  5330. // " ORDER BY t.groutinglinecode, t.usercode, t.goodscode";
  5331. string sqlString = "select nvl(t.groutinglinecode, '--') groutinglinecode\n" +
  5332. " ,nvl(t.BuildingNo, '--') BuildingNo\n" +
  5333. " ,nvl(t.FloorNo, '--') FloorNo\n" +
  5334. " ,nvl(t.GroutingLineNo, '--') GroutingLineNo\n" +
  5335. " ,nvl(t.usercode, '--') usercode\n" +
  5336. " ,nvl2(t.groutinglinecode\n" +
  5337. " ,t.goodscode\n" +
  5338. " ,nvl2(t.goodscode, '小计[' || t.goodscode || ']', '合计')) goodscode\n" +
  5339. " ,nvl2(t.goodscode, t.GOODSNAME, '--') GOODSNAME\n" +
  5340. " ,nvl2(t.goodscode, t.GOODSSPECIFICATION, '--') GOODSSPECIFICATION\n" +
  5341. " ,nvl2(t.goodscode, t.goodstypename, '--') goodstypename\n" +
  5342. " ,nvl2(t.groutinglinecode, avg(t.MouldQuantity), null) MouldQuantity\n" +
  5343. " ,sum(decode(t.gday, '01', t.c, 0)) c01\n" +
  5344. " ,sum(decode(t.dday, '01', t.d, 0)) d01\n" +
  5345. " ,sum(decode(t.gday, '02', t.c, 0)) c02\n" +
  5346. " ,sum(decode(t.dday, '02', t.d, 0)) d02\n" +
  5347. " ,sum(decode(t.gday, '03', t.c, 0)) c03\n" +
  5348. " ,sum(decode(t.dday, '03', t.d, 0)) d03\n" +
  5349. " ,sum(decode(t.gday, '04', t.c, 0)) c04\n" +
  5350. " ,sum(decode(t.dday, '04', t.d, 0)) d04\n" +
  5351. " ,sum(decode(t.gday, '05', t.c, 0)) c05\n" +
  5352. " ,sum(decode(t.dday, '05', t.d, 0)) d05\n" +
  5353. " ,sum(decode(t.gday, '06', t.c, 0)) c06\n" +
  5354. " ,sum(decode(t.dday, '06', t.d, 0)) d06\n" +
  5355. " ,sum(decode(t.gday, '07', t.c, 0)) c07\n" +
  5356. " ,sum(decode(t.dday, '07', t.d, 0)) d07\n" +
  5357. " ,sum(decode(t.gday, '08', t.c, 0)) c08\n" +
  5358. " ,sum(decode(t.dday, '08', t.d, 0)) d08\n" +
  5359. " ,sum(decode(t.gday, '09', t.c, 0)) c09\n" +
  5360. " ,sum(decode(t.dday, '09', t.d, 0)) d09\n" +
  5361. " ,sum(decode(t.gday, '10', t.c, 0)) c10\n" +
  5362. " ,sum(decode(t.dday, '10', t.d, 0)) d10\n" +
  5363. " ,sum(decode(t.gday, '11', t.c, 0)) c11\n" +
  5364. " ,sum(decode(t.dday, '11', t.d, 0)) d11\n" +
  5365. " ,sum(decode(t.gday, '12', t.c, 0)) c12\n" +
  5366. " ,sum(decode(t.dday, '12', t.d, 0)) d12\n" +
  5367. " ,sum(decode(t.gday, '13', t.c, 0)) c13\n" +
  5368. " ,sum(decode(t.dday, '13', t.d, 0)) d13\n" +
  5369. " ,sum(decode(t.gday, '14', t.c, 0)) c14\n" +
  5370. " ,sum(decode(t.dday, '14', t.d, 0)) d14\n" +
  5371. " ,sum(decode(t.gday, '15', t.c, 0)) c15\n" +
  5372. " ,sum(decode(t.dday, '15', t.d, 0)) d15\n" +
  5373. " ,sum(decode(t.gday, '16', t.c, 0)) c16\n" +
  5374. " ,sum(decode(t.dday, '16', t.d, 0)) d16\n" +
  5375. " ,sum(decode(t.gday, '17', t.c, 0)) c17\n" +
  5376. " ,sum(decode(t.dday, '17', t.d, 0)) d17\n" +
  5377. " ,sum(decode(t.gday, '18', t.c, 0)) c18\n" +
  5378. " ,sum(decode(t.dday, '18', t.d, 0)) d18\n" +
  5379. " ,sum(decode(t.gday, '19', t.c, 0)) c19\n" +
  5380. " ,sum(decode(t.dday, '19', t.d, 0)) d19\n" +
  5381. " ,sum(decode(t.gday, '20', t.c, 0)) c20\n" +
  5382. " ,sum(decode(t.dday, '20', t.d, 0)) d20\n" +
  5383. " ,sum(decode(t.gday, '21', t.c, 0)) c21\n" +
  5384. " ,sum(decode(t.dday, '21', t.d, 0)) d21\n" +
  5385. " ,sum(decode(t.gday, '22', t.c, 0)) c22\n" +
  5386. " ,sum(decode(t.dday, '22', t.d, 0)) d22\n" +
  5387. " ,sum(decode(t.gday, '23', t.c, 0)) c23\n" +
  5388. " ,sum(decode(t.dday, '23', t.d, 0)) d23\n" +
  5389. " ,sum(decode(t.gday, '24', t.c, 0)) c24\n" +
  5390. " ,sum(decode(t.dday, '24', t.d, 0)) d24\n" +
  5391. " ,sum(decode(t.gday, '25', t.c, 0)) c25\n" +
  5392. " ,sum(decode(t.dday, '25', t.d, 0)) d25\n" +
  5393. " ,sum(decode(t.gday, '26', t.c, 0)) c26\n" +
  5394. " ,sum(decode(t.dday, '26', t.d, 0)) d26\n" +
  5395. " ,sum(decode(t.gday, '27', t.c, 0)) c27\n" +
  5396. " ,sum(decode(t.dday, '27', t.d, 0)) d27\n" +
  5397. " ,sum(decode(t.gday, '28', t.c, 0)) c28\n" +
  5398. " ,sum(decode(t.dday, '28', t.d, 0)) d28\n" +
  5399. " ,sum(decode(t.gday, '29', t.c, 0)) c29\n" +
  5400. " ,sum(decode(t.dday, '29', t.d, 0)) d29\n" +
  5401. " ,sum(decode(t.gday, '30', t.c, 0)) c30\n" +
  5402. " ,sum(decode(t.dday, '30', t.d, 0)) d30\n" +
  5403. " ,sum(decode(t.gday, '31', t.c, 0)) c31\n" +
  5404. " ,sum(decode(t.dday, '31', t.d, 0)) d31\n" +
  5405. " from (select gd.groutinglinecode\n" +
  5406. " ,gl.BuildingNo\n" +
  5407. " ,gl.FloorNo\n" +
  5408. " ,gl.GroutingLineNo\n" +
  5409. " ,gd.usercode\n" +
  5410. " ,gdd.goodscode\n" +
  5411. " ,gdd.GOODSNAME\n" +
  5412. " ,g.GOODSSPECIFICATION\n" +
  5413. " ,gt.goodstypename\n" +
  5414. " ,gl.MouldQuantity\n" +
  5415. " ,to_char(gd.groutingdate, 'dd') as gday\n" +
  5416. " ,to_char(gdd.delivertime, 'dd') as dday\n" +
  5417. " ,case\n" +
  5418. " when gd.groutingdate >= :GDateBegin and\n" +
  5419. " gd.groutingdate <= :GDateEnd and\n" +
  5420. " gdd.GroutingFlag = '1' and\n" +
  5421. " gdd.ScrapFlag = '0' \n" +
  5422. " then 1 else 0 end c \n" +
  5423. " ,( SELECT 1 FROM TP_PM_PRODUCTIONDATA WHERE CREATETIME >= :GDateBegin AND CREATETIME <= :GDateEnd AND PROCEDUREID = 7 AND VALUEFLAG = 1 and ROWNUM=1 ) d -- 交坯量\n" +
  5424. " from TP_PM_GroutingDaily gd\n" +
  5425. " inner join TP_PM_GroutingDailyDetail gdd\n" +
  5426. " on gdd.groutingdailyid = gd.groutingdailyid\n" +
  5427. " inner join TP_PC_GroutingLine gl\n" +
  5428. " on gl.groutinglineid = gd.groutinglineid\n" +
  5429. " inner join TP_MST_Goods g\n" +
  5430. " on g.goodsid = gdd.goodsid\n" +
  5431. " inner join TP_MST_GOODSTYPE gt\n" +
  5432. " on gt.goodstypeid = g.goodstypeid\n" +
  5433. " where gd.accountid = :AccountID\n" +
  5434. " and ((gd.groutingdate >= :GDateBegin and\n" +
  5435. " gd.groutingdate <= :GDateEnd) or\n" +
  5436. " (gdd.delivertime >= :GDateBegin and\n" +
  5437. " gdd.delivertime <= :GDateEnd))\n" +
  5438. " and (:groutinglinecode is null or\n" +
  5439. " instr(gd.groutinglinecode, :groutinglinecode) > 0)\n" +
  5440. " and (:groutingusercode is null or\n" +
  5441. " instr(gdd.usercode, :groutingusercode) > 0)\n" +
  5442. " and (:goodscode is null or instr(gdd.goodscode, :goodscode) > 0)\n" +
  5443. " and (:goodstypecode is null or\n" +
  5444. " instr(gt.goodstypecode, :goodstypecode) = 1)) t\n" +
  5445. " group by grouping sets((t.groutinglinecode, t.BuildingNo, t.FloorNo, t.GroutingLineNo, t.usercode, t.goodscode, t.GOODSNAME, t.GOODSSPECIFICATION, t.goodstypename),(t.goodscode, t.GOODSSPECIFICATION, t.goodstypename),())\n" +
  5446. " order by t.goodscode, t.groutinglinecode, t.usercode";
  5447. List<OracleParameter> parameters = new List<OracleParameter>();
  5448. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  5449. parameters.Add(new OracleParameter(":GDateBegin", OracleDbType.Date, se.GDateBegin, ParameterDirection.Input));
  5450. parameters.Add(new OracleParameter(":GDateEnd", OracleDbType.Date, se.GDateEnd, ParameterDirection.Input));
  5451. parameters.Add(new OracleParameter(":groutinglinecode", OracleDbType.Varchar2, se.GroutingLineCode, ParameterDirection.Input));
  5452. parameters.Add(new OracleParameter(":groutingusercode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  5453. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  5454. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  5455. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  5456. ServiceResultEntity sre = new ServiceResultEntity();
  5457. if (data == null || data.Rows.Count == 0)
  5458. {
  5459. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5460. return sre;
  5461. }
  5462. sre.Data = new DataSet();
  5463. sre.Data.Tables.Add(data);
  5464. return sre;
  5465. }
  5466. catch (Exception ex)
  5467. {
  5468. throw ex;
  5469. }
  5470. finally
  5471. {
  5472. if (conn != null &&
  5473. conn.ConnState == ConnectionState.Open)
  5474. {
  5475. conn.Close();
  5476. }
  5477. }
  5478. }
  5479. /// <summary>
  5480. /// 取得RPT040109画面(整体质量分析表)的查询数据
  5481. /// </summary>
  5482. /// <param name="user">登录用户信息</param>
  5483. /// <param name="se">查询条件</param>
  5484. /// <returns>查询结果</returns>
  5485. public static ServiceResultEntity GetRPT040109SData(SUserInfo user, RPT040109_SE se)
  5486. {
  5487. IDBTransaction conn = null;
  5488. try
  5489. {
  5490. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5491. conn.Connect();
  5492. OracleParameter[] parameters = new OracleParameter[]
  5493. {
  5494. new OracleParameter("in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  5495. new OracleParameter("in_DateBegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  5496. new OracleParameter("in_DateEnd", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  5497. new OracleParameter("in_OutKilnProcedureID", OracleDbType.Int32, se.RptSProcedureID , ParameterDirection.Input),
  5498. new OracleParameter("in_KilnID", OracleDbType.Int32, se.KilnID , ParameterDirection.Input),
  5499. new OracleParameter("out_data1", OracleDbType.RefCursor, null , ParameterDirection.Output),
  5500. new OracleParameter("out_data2", OracleDbType.RefCursor, null , ParameterDirection.Output),
  5501. new OracleParameter("out_data3", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5502. new OracleParameter("out_data4", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5503. new OracleParameter("out_data21", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5504. new OracleParameter("out_data31", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5505. new OracleParameter("out_data32", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5506. new OracleParameter("out_table1", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5507. new OracleParameter("out_table2", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5508. new OracleParameter("out_table3", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5509. new OracleParameter("out_table4", OracleDbType.RefCursor, null, ParameterDirection.Output),
  5510. new OracleParameter("in_HasUserGroup", OracleDbType.Int32, (se.HasUserGroup?1:0), ParameterDirection.Input),
  5511. };
  5512. //out_data1 -- 质量整体情况
  5513. //out_data2 -- 各缺陷类型成品率
  5514. //out_data3 -- 各缺陷类型缺陷率
  5515. //out_data4 -- 产品质量排行榜
  5516. //out_data21 -- 各缺陷类型成品率-总成品率
  5517. //out_data31 -- 各缺陷类型缺陷率-总缺陷率
  5518. //out_data32 -- 各缺陷类型缺陷率-分缺陷率
  5519. //out_table1 -- 缺陷类别
  5520. //out_table2 -- 工号分组
  5521. //out_table3 -- 缺陷扣罚
  5522. //out_table4 -- 缺陷
  5523. //DataSet data = conn.ExecStoredProcedure("PRO_RPT_OverallQualityAnalysis", parameters);
  5524. DataSet data = conn.ExecStoredProcedure("PRO_RPT_OverallQualityA_UserG", parameters);
  5525. ServiceResultEntity sre = new ServiceResultEntity();
  5526. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  5527. {
  5528. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5529. return sre;
  5530. }
  5531. data.Tables[0].TableName = "TQ";
  5532. data.Tables[1].TableName = "FR";
  5533. data.Tables[2].TableName = "DR";
  5534. data.Tables[3].TableName = "DL";
  5535. data.Tables[4].TableName = "FR1";
  5536. data.Tables[5].TableName = "DR1";
  5537. data.Tables[6].TableName = "DR2";
  5538. data.Tables[7].TableName = "DT";
  5539. data.Tables[8].TableName = "WG";
  5540. data.Tables[9].TableName = "DF";
  5541. data.Tables[10].TableName = "D";
  5542. DataTable dtFR = data.Tables["FR"];
  5543. DataTable dtFRClone = dtFR.Clone();
  5544. for (int i = 0; i < dtFR.Columns.Count; i++)
  5545. {
  5546. dtFRClone.Columns[i].DataType = typeof(string);
  5547. }
  5548. foreach (DataRow item in dtFR.Rows)
  5549. {
  5550. item["goodstypename2"] = item["goodstypename2"] + "缺陷数";
  5551. dtFRClone.Rows.Add(item.ItemArray);
  5552. }
  5553. // 增加大小件成品率(%) modify by chenxy 2018-05-03 begin
  5554. //DataRow drFR = dtFRClone.NewRow();
  5555. //drFR["goodstypename2"] = "成品率(%)";
  5556. //foreach (DataRow row in data.Tables["FR1"].Rows)
  5557. //{
  5558. // string tid = row["tid"].ToString();
  5559. // string overRate = (row["OverRate"] == DBNull.Value ? Constant.DIV0 : Convert.ToDecimal(row["OverRate"]).ToString("#,##0.00%"));
  5560. // foreach (DataColumn col in dtFRClone.Columns)
  5561. // {
  5562. // if (col.ColumnName.StartsWith(tid))
  5563. // {
  5564. // drFR[col.ColumnName] = overRate;
  5565. // }
  5566. // }
  5567. //}
  5568. //dtFRClone.Rows.Add(drFR);
  5569. Dictionary<string, DataRow> drFRs = new Dictionary<string, DataRow>();
  5570. foreach (DataRow row in data.Tables["FR1"].Rows)
  5571. {
  5572. string tcode = row["goodstypecode2"].ToString();
  5573. DataRow drFR = null;
  5574. if (drFRs.ContainsKey(tcode))
  5575. {
  5576. drFR = drFRs[tcode];
  5577. }
  5578. else
  5579. {
  5580. drFR = dtFRClone.NewRow();
  5581. drFRs.Add(tcode, drFR);
  5582. drFR["goodstypename2"] = row["goodstypeName2"] + "成品率(%)";
  5583. }
  5584. string tid = row["tid"].ToString();
  5585. string overRate = (row["OverRate"] == DBNull.Value ? Constant.DIV0 : Convert.ToDecimal(row["OverRate"]).ToString("#,##0.00%"));
  5586. foreach (DataColumn col in dtFRClone.Columns)
  5587. {
  5588. if (col.ColumnName.StartsWith(tid))
  5589. {
  5590. drFR[col.ColumnName] = overRate;
  5591. }
  5592. }
  5593. }
  5594. foreach (DataRow item in drFRs.Values)
  5595. {
  5596. dtFRClone.Rows.Add(item);
  5597. }
  5598. // 增加大小件成品率(%) modify by chenxy 2018-05-03 end
  5599. data.Tables.Remove(dtFR);
  5600. data.Tables.Remove(data.Tables["FR1"]);
  5601. data.Tables.Add(dtFRClone);
  5602. DataTable dtDR = data.Tables["DR"];
  5603. DataTable dtDRClone = dtDR.Clone();
  5604. for (int i = 0; i < dtDR.Columns.Count; i++)
  5605. {
  5606. dtDRClone.Columns[i].DataType = typeof(string);
  5607. }
  5608. foreach (DataRow item in dtDR.Rows)
  5609. {
  5610. item["goodstypename2"] = item["goodstypename2"] + "缺陷数";
  5611. dtDRClone.Rows.Add(item.ItemArray);
  5612. }
  5613. // 增加大小件缺陷率(%) modify by chenxy 2018-05-03 begin
  5614. //DataRow drDR = dtDRClone.NewRow();
  5615. //drDR["goodstypename2"] = "缺陷率(%)";
  5616. //foreach (DataRow row in data.Tables["DR2"].Rows)
  5617. //{
  5618. // string tid = row["tdfid"].ToString();
  5619. // string defectRate = (row["DefectRate"] == DBNull.Value ? Constant.DIV0 : Convert.ToDecimal(row["DefectRate"]).ToString("#,##0.00%"));
  5620. // drDR[tid] = defectRate;
  5621. //}
  5622. //dtDRClone.Rows.Add(drDR);
  5623. Dictionary<string, DataRow> drDRs = new Dictionary<string, DataRow>();
  5624. foreach (DataRow row in data.Tables["DR2"].Rows)
  5625. {
  5626. string tcode = row["goodstypecode2"].ToString();
  5627. DataRow drDR = null;
  5628. if (drDRs.ContainsKey(tcode))
  5629. {
  5630. drDR = drDRs[tcode];
  5631. }
  5632. else
  5633. {
  5634. drDR = dtDRClone.NewRow();
  5635. drDRs.Add(tcode, drDR);
  5636. drDR["goodstypename2"] = row["goodstypeName2"] + "缺陷率(%)";
  5637. }
  5638. string tid = row["tdfid"].ToString();
  5639. string defectRate = (row["DefectRate"] == DBNull.Value ? Constant.DIV0 : Convert.ToDecimal(row["DefectRate"]).ToString("#,##0.00%"));
  5640. drDR[tid] = defectRate;
  5641. }
  5642. foreach (DataRow item in drDRs.Values)
  5643. {
  5644. dtDRClone.Rows.Add(item);
  5645. }
  5646. // 增加大小件成品率(%) modify by chenxy 2018-05-03 end
  5647. data.Tables.Remove(dtDR);
  5648. data.Tables.Remove(data.Tables["DR2"]);
  5649. data.Tables.Add(dtDRClone);
  5650. conn.Commit();
  5651. sre.Data = data;
  5652. return sre;
  5653. }
  5654. catch (Exception ex)
  5655. {
  5656. throw ex;
  5657. }
  5658. finally
  5659. {
  5660. if (conn != null &&
  5661. conn.ConnState == ConnectionState.Open)
  5662. {
  5663. conn.Disconnect();
  5664. }
  5665. }
  5666. }
  5667. /// <summary>
  5668. /// 取得RPT040110画面(产成品逐日出窑数值分析表)的查询数据
  5669. /// </summary>
  5670. /// <param name="user">登录用户信息</param>
  5671. /// <param name="se">查询条件</param>
  5672. /// <returns>查询结果</returns>
  5673. public static ServiceResultEntity GetRPT040110SData(SUserInfo user, RPT040110_SE se)
  5674. {
  5675. IDBTransaction conn = null;
  5676. try
  5677. {
  5678. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5679. conn.Connect();
  5680. OracleParameter[] parameters = new OracleParameter[]
  5681. {
  5682. new OracleParameter("in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  5683. new OracleParameter("in_DateBegin", OracleDbType.Date, se.CreateTimeStart, ParameterDirection.Input),
  5684. new OracleParameter("in_DateEnd", OracleDbType.Date, se.CreateTimeEnd, ParameterDirection.Input),
  5685. new OracleParameter("in_OutKilnProcedureID", OracleDbType.Int32, se.RptSProcedureID , ParameterDirection.Input),
  5686. new OracleParameter("in_KilnID", OracleDbType.Int32, se.KilnID , ParameterDirection.Input),
  5687. new OracleParameter("out_data1", OracleDbType.RefCursor, null , ParameterDirection.Output),
  5688. };
  5689. DataSet data = null;
  5690. if (se.IsShowG)
  5691. {
  5692. data = conn.ExecStoredProcedure("PRO_RPT_OverallQualityDetail_G", parameters);
  5693. }
  5694. else
  5695. {
  5696. data = conn.ExecStoredProcedure("PRO_RPT_OverallQualityDetail", parameters);
  5697. }
  5698. ServiceResultEntity sre = new ServiceResultEntity();
  5699. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  5700. {
  5701. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5702. return sre;
  5703. }
  5704. conn.Commit();
  5705. sre.Data = data;
  5706. return sre;
  5707. }
  5708. catch (Exception ex)
  5709. {
  5710. throw ex;
  5711. }
  5712. finally
  5713. {
  5714. if (conn != null &&
  5715. conn.ConnState == ConnectionState.Open)
  5716. {
  5717. conn.Disconnect();
  5718. }
  5719. }
  5720. }
  5721. #endregion 分析报表
  5722. #region 汇总报表
  5723. /// <summary>
  5724. /// 取得RPT030101_1画面(产品产量汇总表)的汇总信息查询数据
  5725. /// </summary>
  5726. /// <param name="user">登录用户信息</param>
  5727. /// <param name="se">查询条件</param>
  5728. /// <returns>查询结果</returns>
  5729. public static ServiceResultEntity GetRPT030101SData(SUserInfo user, RPT030101_SE se)
  5730. {
  5731. IDBConnection conn = null;
  5732. try
  5733. {
  5734. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5735. List<OracleParameter> parameters = new List<OracleParameter>();
  5736. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030101SSQL(user, se, ref parameters));
  5737. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  5738. ServiceResultEntity sre = new ServiceResultEntity();
  5739. if (data == null || data.Rows.Count == 0)
  5740. {
  5741. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  5742. return sre;
  5743. }
  5744. sre.Data = new DataSet();
  5745. sre.Data.Tables.Add(data);
  5746. return sre;
  5747. }
  5748. catch (Exception ex)
  5749. {
  5750. throw ex;
  5751. }
  5752. finally
  5753. {
  5754. if (conn != null &&
  5755. conn.ConnState == ConnectionState.Open)
  5756. {
  5757. conn.Close();
  5758. }
  5759. }
  5760. }
  5761. /// <summary>
  5762. /// 获取RPT030101_1画面(产品产量汇总表)的汇总信息查询sql
  5763. /// </summary>
  5764. /// <returns>sql</returns>
  5765. private static string GetRPT030101SSQL(SUserInfo user, RPT030101_SE se, ref List<OracleParameter> parameters)
  5766. {
  5767. //string selSql = "";
  5768. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  5769. /*
  5770. selSql = selSql +
  5771. "select " +
  5772. " decode(t.ProductionLineName,'合计','合计',decode(t.GoodsCode,'小计','--',t.OrganizationName)) OrganizationName, " +
  5773. " decode(t.Procedureid,'--','--',decode(t.GoodsCode,'小计','--',t.ProductionLineName)) ProductionLineName, " +
  5774. " decode(t.GoodsCode,'小计','--',t.Procedureid) Procedureid, " +
  5775. " decode(t.GoodsCode,'小计','--',t.ProcedureName) ProcedureName, " +
  5776. " decode(t.GoodsCode,'小计','小计',t.GoodsTypeName) GoodsTypeName, " +
  5777. " decode(t.GoodsTypeName,'小计','--',t.GoodsId) GoodsId, " +
  5778. " decode(t.ProductionLineName,'合计','--',decode(t.GoodsId,null,'--',t.GoodsCode)) GoodsCode, " +
  5779. " decode(t.GoodsCode,'小计','--',t.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  5780. " decode(t.GoodsCode,'小计','--',t.Dictionaryvalue) Dictionaryvalue, " +
  5781. " decode(t.GoodsCode,'小计','--',g.goodsname) goodsname, " +
  5782. " decode(t.GoodsCode,'小计','--',g.GOODSMODEL) GOODSMODEL, " +
  5783. " t.产量 " +
  5784. "from " +
  5785. "( " +
  5786. " select " +
  5787. " decode(grouping(TP_MST_Organization.OrganizationName),1,'总计',TP_MST_Organization.OrganizationName) OrganizationName, " +
  5788. " decode(grouping(TP_MST_Organization.OrganizationName),1,'--', " +
  5789. " decode(grouping(TP_PM_ProductionData.ProductionLineName),1,'合计',TP_PM_ProductionData.ProductionLineName)) ProductionLineName, " +
  5790. " decode(grouping(TP_PM_ProductionData.Procedureid),1,'--',TP_PM_ProductionData.Procedureid) Procedureid, " +
  5791. " decode(grouping(TP_PM_ProductionData.ProcedureName),1,'--',TP_PM_ProductionData.ProcedureName) ProcedureName, " +
  5792. " decode(grouping(TP_MST_GOODSTYPE.GoodsTypeName),1,'--',TP_MST_GOODSTYPE.GoodsTypeName) GoodsTypeName, " +
  5793. " decode(grouping(TP_PM_ProductionData.ProductionLineName),1,'--', " +
  5794. " decode(grouping(TP_PM_ProductionData.GoodsCode),1,'小计',TP_PM_ProductionData.GoodsCode)) GoodsCode, " +
  5795. " decode(grouping(TP_PM_ProductionData.GoodsId),1,null,TP_PM_ProductionData.GoodsId) GoodsId, " +
  5796. " decode(grouping(TP_MST_Goods.GOODSSPECIFICATION),1,'--',TP_MST_Goods.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  5797. " decode(grouping(TP_MST_DATADICTIONARY.DICTIONARYVALUE),1,'--',TP_MST_DATADICTIONARY.Dictionaryvalue) Dictionaryvalue, " +
  5798. " count(BarCode) as 产量 " +
  5799. " from TP_PM_ProductionData " +
  5800. " left join TP_MST_Goods on TP_MST_Goods.GoodsID=TP_PM_ProductionData.GoodsID " +
  5801. " left join TP_MST_GoodsType on TP_MST_GoodsType.GoodsTypeID=TP_MST_Goods.GoodsTypeID " +
  5802. " left join TP_MST_Organization on TP_MST_Organization.OrganizationID=TP_PM_ProductionData.OrganizationID " +
  5803. " left join TP_MST_DATADICTIONARY on TP_MST_DATADICTIONARY.DICTIONARYID=TP_MST_Goods.GLAZETYPEID " +
  5804. " Where 1=1 and TP_PM_ProductionData.ValueFlag = 1 " +
  5805. // 公坯、干补不算交坯工序的质量。
  5806. (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" : "") +
  5807. " and TP_PM_ProductionData.AccountID=:AccountID ";
  5808. if (!string.IsNullOrEmpty(se.GoodsIDS))
  5809. {
  5810. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  5811. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  5812. }
  5813. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  5814. {
  5815. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  5816. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPEcode,:GoodsTypeIDS)=1 ";
  5817. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  5818. }
  5819. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  5820. {
  5821. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  5822. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  5823. }
  5824. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  5825. {
  5826. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||TP_PM_ProductionData.ProcedureId||',')>0 ";
  5827. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  5828. }
  5829. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  5830. {
  5831. selSql = selSql + " AND instr(','||:OrganizationIDS||',',','||TP_MST_Organization.OrganizationId||',')>0 ";
  5832. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  5833. }
  5834. if (se.AccountDateStart.HasValue)
  5835. {
  5836. selSql = selSql + " AND TP_PM_ProductionData.CREATETIME >= :AccountDateStart ";
  5837. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  5838. }
  5839. if (se.AccountDateEnd.HasValue)
  5840. {
  5841. selSql = selSql + " AND TP_PM_ProductionData.CREATETIME <= :AccountDateEnd ";
  5842. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  5843. }
  5844. selSql = selSql +
  5845. "group by " +
  5846. " rollup(TP_MST_Organization.OrganizationName, " +
  5847. " TP_PM_ProductionData.ProductionLineName, " +
  5848. " TP_PM_ProductionData.Procedureid, " +
  5849. " TP_PM_ProductionData.ProcedureName, " +
  5850. " TP_MST_GOODSTYPE.GoodsTypeName, " +
  5851. " TP_PM_ProductionData.GoodsCode, " +
  5852. " TP_PM_ProductionData.GoodsId, " +
  5853. " TP_MST_Goods.GOODSSPECIFICATION, " +
  5854. " TP_MST_DATADICTIONARY.Dictionaryvalue) " +
  5855. " order by " +
  5856. " TP_MST_Organization.OrganizationName, " +
  5857. " TP_PM_ProductionData.ProductionLineName, " +
  5858. " TP_PM_ProductionData.Procedureid, " +
  5859. " TP_PM_ProductionData.ProcedureName, " +
  5860. " TP_MST_GOODSTYPE.GoodsTypeName " +
  5861. ") t \n" +
  5862. // 增加 产品型号
  5863. "left join tp_mst_goods g on g.goodsid = t.goodsid \n" +
  5864. "where 1=1 " +
  5865. "and (t.DICTIONARYVALUE!='--' ) " +
  5866. "or (t.GoodsTypeName='--' and t.ProductionLineName='合计') " +
  5867. "or (t.GoodsTypeName='--' and t.OrganizationName='总计') " +
  5868. "or (t.GoodsCode='小计' and t.GoodsTypeName!='--')";
  5869. */
  5870. string selSql =
  5871. "select t.gid\n" +
  5872. " ,decode(t.gid, 15, '总计', t.ProductionLineName) ProductionLineName\n" +
  5873. " ,t.OrganizationID\n" +
  5874. " --,t.OrganizationCode\n" +
  5875. " ,decode(t.gid\n" +
  5876. " ,7\n" +
  5877. " ,'合计[' || t.OrganizationName || ']'\n" +
  5878. " ,15\n" +
  5879. " ,'--'\n" +
  5880. " ,t.OrganizationName) OrganizationName\n" +
  5881. " ,t.Procedureid\n" +
  5882. " ,decode(t.gid\n" +
  5883. " ,3\n" +
  5884. " ,'小计[' || t.ProcedureName || ']'\n" +
  5885. " ,0\n" +
  5886. " ,t.ProcedureName\n" +
  5887. " ,1\n" +
  5888. " ,t.ProcedureName\n" +
  5889. " ,'--') ProcedureName\n" +
  5890. " ,t.GoodsTypeID\n" +
  5891. " ,decode(t.gid\n" +
  5892. " ,1\n" +
  5893. " ,'小计[' || t.GoodsTypeName || ']'\n" +
  5894. " ,0\n" +
  5895. " ,t.GoodsTypeName\n" +
  5896. " ,'--') GoodsTypeName\n" +
  5897. " --,t.GoodsId\n" +
  5898. " ,decode(t.gid, 0, to_char(t.GoodsId), '--') GoodsId\n" +
  5899. " ,decode(t.gid, 0, t.GoodsCode, '--') GoodsCode ,decode(t.gid, 0, t.GOODSNAME, '--') GOODSNAME\n" +
  5900. " ,decode(t.gid, 0, t.GOODSSPECIFICATION, '--') GOODSSPECIFICATION\n" +
  5901. " ,decode(t.gid, 0, t.Dictionaryvalue, '--') Dictionaryvalue\n" +
  5902. " ,t.pfcount as 产量\n" +
  5903. " from (select grouping_id(org.OrganizationID\n" +
  5904. " ,p.Procedureid\n" +
  5905. " ,gt.goodstypeid\n" +
  5906. " ,g.GoodsId) as gid\n" +
  5907. " ,pd.ProductionLineName\n" +
  5908. " ,org.OrganizationID\n" +
  5909. " --,org.OrganizationCode\n" +
  5910. " ,org.OrganizationName\n" +
  5911. " ,p.Procedureid\n" +
  5912. " ,p.ProcedureName\n" +
  5913. " ,gt.GoodsTypeID\n" +
  5914. " ,gt.GoodsTypeName\n" +
  5915. " ,g.GoodsId\n" +
  5916. " ,g.GoodsCode ,g.GOODSNAME\n" +
  5917. " ,g.GOODSSPECIFICATION\n" +
  5918. " ,d.Dictionaryvalue\n" +
  5919. " ,count(BarCode) as pfcount" +
  5920. " from TP_PM_ProductionData pd\n" +
  5921. " inner join tp_pc_Procedure p\n" +
  5922. " on p.Procedureid = pd.Procedureid\n" +
  5923. " inner join TP_MST_Goods g\n" +
  5924. " on g.GoodsID = pd.GoodsID\n" +
  5925. " inner join TP_MST_GoodsType gt\n" +
  5926. " on gt.GoodsTypeID = g.GoodsTypeID\n" +
  5927. " inner join TP_MST_Organization org\n" +
  5928. " on org.OrganizationID = pd.OrganizationID\n" +
  5929. " inner join TP_MST_DATADICTIONARY d\n" +
  5930. " on d.DICTIONARYID = g.GLAZETYPEID\n" +
  5931. " where pd.ValueFlag = '1'\n" +
  5932. " and pd.AccountID = :AccountID\n";
  5933. // 公坯、干补不算交坯工序的质量。
  5934. if (se.ProductionFlag == "1")
  5935. {
  5936. selSql += " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and (pd.IsPublicBody = '0' or pd.SpecialRepairFlag = '0'))) \n";
  5937. }
  5938. if (!string.IsNullOrEmpty(se.GoodsIDS))
  5939. {
  5940. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||g.GoodsId||',')>0 ";
  5941. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  5942. }
  5943. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  5944. {
  5945. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  5946. selSql = selSql + " AND instr(gt.GOODSTYPEcode,:GoodsTypeIDS)=1 ";
  5947. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  5948. }
  5949. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  5950. {
  5951. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pd.ProductionLineId||',')>0 ";
  5952. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  5953. }
  5954. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  5955. {
  5956. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||p.ProcedureId||',')>0 ";
  5957. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  5958. }
  5959. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  5960. {
  5961. selSql = selSql + " AND instr(','||:OrganizationIDS||',',','||org.OrganizationId||',')>0 ";
  5962. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  5963. }
  5964. if (se.AccountDateStart.HasValue)
  5965. {
  5966. selSql = selSql + " AND pd.CREATETIME >= :AccountDateStart ";
  5967. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  5968. }
  5969. if (se.AccountDateEnd.HasValue)
  5970. {
  5971. selSql = selSql + " AND pd.CREATETIME <= :AccountDateEnd ";
  5972. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  5973. }
  5974. selSql +=
  5975. " group by grouping sets((pd.ProductionLineName, org.OrganizationID, org.organizationcode, org.OrganizationName, p.Procedureid, p.ProcedureName, p.displayno, gt.GoodsTypeID, gt.goodstypecode, gt.GoodsTypeName, g.GoodsId, g.GoodsCode,g.goodsname, g.GOODSSPECIFICATION, d.Dictionaryvalue),(pd.ProductionLineName, org.OrganizationID, org.organizationcode, org.OrganizationName, p.Procedureid, p.ProcedureName, p.displayno, gt.GoodsTypeID, gt.goodstypecode, gt.GoodsTypeName),(pd.ProductionLineName, org.OrganizationID, org.organizationcode, org.OrganizationName, p.Procedureid, p.ProcedureName, p.displayno),(pd.ProductionLineName, org.OrganizationID, org.organizationcode, org.OrganizationName),())\n" +
  5976. " order by org.organizationcode\n" +
  5977. " ,p.displayno\n" +
  5978. " ,gt.goodstypecode\n" +
  5979. " ,g.goodscode) t";
  5980. return selSql;
  5981. }
  5982. /// <summary>
  5983. /// 取得RPT030101_1画面(产品产量汇总表)的明细信息查询数据
  5984. /// </summary>
  5985. /// <param name="user">登录用户信息</param>
  5986. /// <param name="se">查询条件</param>
  5987. /// <returns>查询结果</returns>
  5988. public static ServiceResultEntity GetRPT030101IData(SUserInfo user, RPT030101_SE se)
  5989. {
  5990. IDBConnection conn = null;
  5991. try
  5992. {
  5993. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  5994. List<OracleParameter> parameters = new List<OracleParameter>();
  5995. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030101ISQL(user, se, ref parameters));
  5996. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  5997. ServiceResultEntity sre = new ServiceResultEntity();
  5998. if (data == null || data.Rows.Count == 0)
  5999. {
  6000. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6001. return sre;
  6002. }
  6003. sre.Data = new DataSet();
  6004. sre.Data.Tables.Add(data);
  6005. return sre;
  6006. }
  6007. catch (Exception ex)
  6008. {
  6009. throw ex;
  6010. }
  6011. finally
  6012. {
  6013. if (conn != null &&
  6014. conn.ConnState == ConnectionState.Open)
  6015. {
  6016. conn.Close();
  6017. }
  6018. }
  6019. }
  6020. /// <summary>
  6021. /// 获取RPT030101_1画面(产品产量汇总表)的明细信息查询sql
  6022. /// </summary>
  6023. /// <returns>sql</returns>
  6024. private static string GetRPT030101ISQL(SUserInfo user, RPT030101_SE se, ref List<OracleParameter> parameters)
  6025. {
  6026. //string selSql = "";
  6027. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  6028. /*
  6029. selSql = selSql +
  6030. "select " +
  6031. "decode(ProductionLineName,'合计','合计',decode(temp.BarCode,'小计','--',OrganizationName)) OrganizationName, " +
  6032. "decode(ProcedureName,'--','--',decode(temp.barcode,'小计','--',temp.ProductionLineName)) ProductionLineName, " +
  6033. "decode(temp.BarCode,'小计','--',temp.ProcedureName) ProcedureName, " +
  6034. "decode(temp.BarCode,'小计','--',temp.GoodsTypeName) GoodsTypeName, " +
  6035. "decode(temp.BarCode,'小计','小计',temp.GoodsCode) GoodsCode, " +
  6036. "decode(ProductionLineName,'合计','--',decode(temp.usercode,'--','--',temp.Barcode)) BarCode, " +
  6037. "decode(temp.UserCode,'小计','--',temp.UserCode) UserCode, " +
  6038. "decode(GOODSSPECIFICATION,'小计','--',GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  6039. "decode(DICTIONARYVALUE,'小计','--',Dictionaryvalue) Dictionaryvalue, " +
  6040. "产量, " +
  6041. "replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName " +
  6042. "from " +
  6043. "( " +
  6044. " select " +
  6045. " decode(grouping(TP_MST_Organization.OrganizationName),1,'总计',TP_MST_Organization.OrganizationName) OrganizationName, " +
  6046. " decode(grouping(TP_MST_Organization.OrganizationName),1,'--', " +
  6047. " decode(grouping(TP_PM_ProductionData.ProductionLineName),1,'合计',TP_PM_ProductionData.ProductionLineName)) ProductionLineName, " +
  6048. " decode(grouping(TP_PM_ProductionData.ProcedureName),1,'--',TP_PM_ProductionData.ProcedureName) ProcedureName, " +
  6049. " decode(grouping(TP_MST_GOODSTYPE.GoodsTypeName),1,'--',TP_MST_GOODSTYPE.GoodsTypeName) GoodsTypeName, " +
  6050. " decode(grouping(TP_PM_ProductionData.GoodsCode),1,'--',TP_PM_ProductionData.GoodsCode) GoodsCode, " +
  6051. " decode(grouping(TP_PM_ProductionData.ProductionLineName),1,'--', " +
  6052. " decode(grouping(TP_PM_ProductionData.BarCode),1,'小计',TP_PM_ProductionData.BarCode)) BarCode, " +
  6053. " decode(grouping(TP_PM_ProductionData.UserCode),1,'--',TP_PM_ProductionData.UserCode) UserCode, " +
  6054. " decode(grouping(TP_MST_Goods.GOODSSPECIFICATION),1,'--',TP_MST_Goods.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  6055. " decode(grouping(TP_MST_DATADICTIONARY.Dictionaryvalue),1,'--',TP_MST_DATADICTIONARY.Dictionaryvalue) Dictionaryvalue, " +
  6056. " count(BarCode) as 产量 " +
  6057. " from TP_PM_ProductionData " +
  6058. " left join TP_MST_Goods on TP_MST_Goods.GoodsID=TP_PM_ProductionData.GoodsID " +
  6059. " left join TP_MST_GoodsType on TP_MST_GoodsType.GoodsTypeID=TP_MST_Goods.GoodsTypeID " +
  6060. " left join TP_MST_Organization on TP_MST_Organization.OrganizationID=TP_PM_ProductionData.OrganizationID " +
  6061. " left join TP_MST_DATADICTIONARY on TP_MST_DATADICTIONARY.DICTIONARYID=TP_MST_Goods.GLAZETYPEID " +
  6062. " Where 1=1 " +
  6063. " and TP_PM_ProductionData.ValueFlag = 1 " +
  6064. // 公坯、干补不算交坯工序的质量。
  6065. " 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" +
  6066. " and TP_PM_ProductionData.AccountID=:AccountID ";
  6067. if (!string.IsNullOrEmpty(se.GoodsIDS))
  6068. {
  6069. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  6070. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  6071. }
  6072. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  6073. {
  6074. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  6075. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)>0 ";
  6076. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  6077. }
  6078. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  6079. {
  6080. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  6081. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  6082. }
  6083. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  6084. {
  6085. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||TP_PM_ProductionData.ProcedureId||',')>0 ";
  6086. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  6087. }
  6088. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  6089. {
  6090. selSql = selSql + " AND instr(','||:OrganizationIDS||',',','||TP_MST_Organization.OrganizationId||',')>0 ";
  6091. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  6092. }
  6093. if (se.AccountDateStart.HasValue)
  6094. {
  6095. selSql = selSql + " AND TP_PM_ProductionData.AccountDate >= :AccountDateStart ";
  6096. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  6097. }
  6098. if (se.AccountDateEnd.HasValue)
  6099. {
  6100. selSql = selSql + " AND TP_PM_ProductionData.AccountDate <= :AccountDateEnd ";
  6101. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  6102. }
  6103. selSql = selSql +
  6104. "group by " +
  6105. " rollup(TP_MST_Organization.OrganizationName, " +
  6106. " TP_PM_ProductionData.ProductionLineName, " +
  6107. " TP_PM_ProductionData.ProcedureName, " +
  6108. " TP_MST_GOODSTYPE.GoodsTypeName, " +
  6109. " TP_PM_ProductionData.GoodsCode, " +
  6110. " TP_PM_ProductionData.BarCode, " +
  6111. " TP_PM_ProductionData.UserCode, " +
  6112. " TP_MST_Goods.GOODSSPECIFICATION, " +
  6113. " TP_MST_DATADICTIONARY.Dictionaryvalue" +
  6114. " ) " +
  6115. " order by " +
  6116. " TP_MST_Organization.OrganizationName, " +
  6117. " TP_PM_ProductionData.ProductionLineName, " +
  6118. " TP_PM_ProductionData.ProcedureName, " +
  6119. " TP_MST_GOODSTYPE.GoodsTypeName " +
  6120. ") temp inner join TP_PM_GroutingDailyDetail on temp.barcode=TP_PM_GroutingDailyDetail.barcode " +
  6121. " inner join tp_mst_logo on TP_PM_GroutingDailyDetail.logoid=tp_mst_logo.logoid " +
  6122. "where 1=1 " +
  6123. "and (temp.DICTIONARYVALUE!='--') " +
  6124. "or (temp.GoodsTypeName='--' and temp.ProductionLineName='合计') " +
  6125. "or (temp.GoodsTypeName='--' and temp.OrganizationName='总计') " +
  6126. "or (temp.BarCode='小计' and temp.GoodsCode!='--')";
  6127. */
  6128. string selSql =
  6129. @"
  6130. SELECT
  6131. TP_MST_Organization.OrganizationName,
  6132. TP_PM_ProductionData.ProductionLineName,
  6133. TP_PM_ProductionData.ProcedureName,
  6134. TP_MST_GOODSTYPE.GoodsTypeName,
  6135. TP_PM_ProductionData.GoodsCode,
  6136. TP_MST_Goods.GoodsName,
  6137. TP_MST_Goods.GoodsModel,
  6138. TP_PM_ProductionData.BarCode,
  6139. TP_PM_ProductionData.UserCode,
  6140. TP_MST_Goods.GOODSSPECIFICATION,
  6141. TP_MST_DATADICTIONARY.Dictionaryvalue,
  6142. TP_PM_ProductionData.CREATETIME,
  6143. TP_PM_ProductionData.KILNcarCODE,
  6144. TP_PM_ProductionData.KILNCODE,
  6145. cu.usercode createusercode,
  6146. cu.username CreateUserName,
  6147. gdd.glazingroom,
  6148. decode( tp_mst_logo.logoid, NULL, '', TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ) AS LogoCodeName,
  6149. gdd.SecurityCode
  6150. ,STAFF.STAFFNAME
  6151. FROM
  6152. TP_PM_ProductionData
  6153. LEFT JOIN TP_MST_Goods ON TP_MST_Goods.GoodsID = TP_PM_ProductionData.GoodsID
  6154. LEFT JOIN TP_MST_GoodsType ON TP_MST_GoodsType.GoodsTypeID = TP_MST_Goods.GoodsTypeID
  6155. LEFT JOIN TP_MST_Organization ON TP_MST_Organization.OrganizationID = TP_PM_ProductionData.OrganizationID
  6156. LEFT JOIN TP_MST_DATADICTIONARY ON TP_MST_DATADICTIONARY.DICTIONARYID = TP_MST_Goods.GLAZETYPEID
  6157. LEFT JOIN tp_mst_logo ON TP_PM_ProductionData.logoid = tp_mst_logo.logoid
  6158. LEFT JOIN tp_mst_user cu ON TP_PM_ProductionData.createuserid = cu.userid
  6159. LEFT JOIN TP_PM_GroutingDailyDetail gdd ON gdd.Groutingdailydetailid = TP_PM_ProductionData.Groutingdailydetailid
  6160. LEFT JOIN (
  6161. SELECT
  6162. D.CLASSESSETTINGID,
  6163. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  6164. FROM
  6165. (
  6166. SELECT
  6167. CD.CLASSESSETTINGID,
  6168. HR.STAFFNAME
  6169. FROM
  6170. TP_PC_CLASSESDETAIL CD
  6171. LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID
  6172. ) D
  6173. GROUP BY
  6174. D.CLASSESSETTINGID
  6175. ) STAFF ON TP_PM_ProductionData.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  6176. WHERE
  6177. TP_PM_ProductionData.ValueFlag = '1'
  6178. AND TP_PM_ProductionData.AccountID =: AccountID
  6179. ";
  6180. if (se.ProductionFlag == "1")
  6181. {
  6182. // 公坯、干补不算交坯工序的质量。
  6183. 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";
  6184. }
  6185. //// 公坯、干补不算交坯工序的质量。
  6186. //if (se.ProductionFlag == "1")
  6187. //{
  6188. // selSql += " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and (pd.IsPublicBody = '0' or pd.SpecialRepairFlag = '0'))) \n";
  6189. //}
  6190. if (!string.IsNullOrEmpty(se.GoodsIDS))
  6191. {
  6192. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  6193. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  6194. }
  6195. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  6196. {
  6197. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPEId||',')>0 ";
  6198. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)>0 ";
  6199. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  6200. }
  6201. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  6202. {
  6203. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  6204. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  6205. }
  6206. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  6207. {
  6208. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||TP_PM_ProductionData.ProcedureId||',')>0 ";
  6209. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  6210. }
  6211. if (!string.IsNullOrEmpty(se.OrganizationIDS))
  6212. {
  6213. selSql = selSql + " AND instr(','||:OrganizationIDS||',',','||TP_MST_Organization.OrganizationId||',')>0 ";
  6214. parameters.Add(new OracleParameter(":OrganizationIDS", OracleDbType.NVarchar2, se.OrganizationIDS, ParameterDirection.Input));
  6215. }
  6216. if (se.AccountDateStart.HasValue)
  6217. {
  6218. selSql = selSql + " AND TP_PM_ProductionData.CREATETIME >= :AccountDateStart ";
  6219. parameters.Add(new OracleParameter(":AccountDateStart", OracleDbType.Date, se.AccountDateStart.Value, ParameterDirection.Input));
  6220. }
  6221. if (se.AccountDateEnd.HasValue)
  6222. {
  6223. selSql = selSql + " AND TP_PM_ProductionData.CREATETIME <= :AccountDateEnd ";
  6224. parameters.Add(new OracleParameter(":AccountDateEnd", OracleDbType.Date, se.AccountDateEnd.Value, ParameterDirection.Input));
  6225. }
  6226. //添加员工姓名查询条件 fenglinyong add 2022-08-27
  6227. if (!string.IsNullOrEmpty(se.StaffName))
  6228. {
  6229. selSql = selSql + " AND instr(STAFF.STAFFNAME,:STAFFNAME)>0 ";
  6230. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  6231. }
  6232. return selSql;
  6233. }
  6234. /// <summary>
  6235. /// 取得RPT030102_1画面(产品损坯汇总表)的汇总信息查询数据
  6236. /// </summary>
  6237. /// <param name="user">登录用户信息</param>
  6238. /// <param name="se">查询条件</param>
  6239. /// <returns>查询结果</returns>
  6240. public static ServiceResultEntity GetRPT030102SData(SUserInfo user, RPT030102_SE se)
  6241. {
  6242. IDBConnection conn = null;
  6243. try
  6244. {
  6245. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6246. List<OracleParameter> parameters = new List<OracleParameter>();
  6247. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030102SSQL(user, se, ref parameters));
  6248. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  6249. ServiceResultEntity sre = new ServiceResultEntity();
  6250. if (data == null || data.Rows.Count == 0)
  6251. {
  6252. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6253. return sre;
  6254. }
  6255. sre.Data = new DataSet();
  6256. sre.Data.Tables.Add(data);
  6257. return sre;
  6258. }
  6259. catch (Exception ex)
  6260. {
  6261. throw ex;
  6262. }
  6263. finally
  6264. {
  6265. if (conn != null &&
  6266. conn.ConnState == ConnectionState.Open)
  6267. {
  6268. conn.Close();
  6269. }
  6270. }
  6271. }
  6272. /// <summary>
  6273. /// 获取RPT030102_1画面(产品损坯汇总表)的汇总信息查询sql
  6274. /// </summary>
  6275. /// <returns>sql</returns>
  6276. private static string GetRPT030102SSQL(SUserInfo user, RPT030102_SE se, ref List<OracleParameter> parameters)
  6277. {
  6278. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  6279. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  6280. string sqlString = "SELECT decode(ts.gid,\n" +
  6281. " 7,\n" +
  6282. " '总计',\n" +
  6283. " 3,\n" +
  6284. " '合计【' || ts.zrprocedurename || '】',\n" +
  6285. " 0,\n" +
  6286. " ts.zrprocedurename,\n" +
  6287. " '--') zrprocedurename\n" +
  6288. " ,decode(ts.gid,\n" +
  6289. " 1,\n" +
  6290. " '小计【' || ts.goodstypename2 || '】',\n" +
  6291. " 0,\n" +
  6292. " ts.goodstypename2,\n" +
  6293. " '--') goodstypename2\n" +
  6294. " ,decode(ts.gid, 0, ts.zrusercode, '--') zrusercode\n" +
  6295. " ,decode(ts.gid, 0, ts.goodscode, '--') goodscode ,decode(ts.gid, 0, ts.GOODSNAME, '--') GOODSNAME\n" +
  6296. " ,decode(ts.gid, 0, ts.GOODSMODEL, '--') GOODSMODEL\n" +
  6297. " ,ts.productionlineid\n" +
  6298. " ,ts.zrprocedureid\n" +
  6299. " ,ts.goodstypecode2\n" +
  6300. " ,ts.zruserid\n" +
  6301. " ,ts.goodsid\n" +
  6302. " ,ts.barcount\n" +
  6303. " FROM (SELECT grouping_id(t.zrprocedureid, t.goodstypecode2, t.zruserid) gid\n" +
  6304. " ,t.productionlineid\n" +
  6305. " ,t.productionlinename\n" +
  6306. " ,t.displayno\n" +
  6307. " ,t.zrprocedureid\n" +
  6308. " ,t.zrprocedurename\n" +
  6309. " ,t.goodstypecode2\n" +
  6310. " ,t.goodstypename2\n" +
  6311. " ,t.zruserid\n" +
  6312. " ,t.zrusercode\n" +
  6313. " ,t.goodsid\n" +
  6314. " ,t.goodscode,t.GOODSNAME\n" +
  6315. " ,t.GOODSMODEL\n" +
  6316. " ,COUNT(t.barcode) barcount\n" +
  6317. " FROM (SELECT sp.productionlineid\n" +
  6318. " ,pline.productionlinename\n" +
  6319. " ,nvl(zp.displayno, -1) displayno\n" +
  6320. " ,zp.procedureid zrprocedureid\n" +
  6321. " ,zp.procedurename zrprocedurename\n" +
  6322. " ,sr.userid zruserid\n" +
  6323. " ,sr.usercode zrusercode\n" +
  6324. " ,gt2.goodstypecode goodstypecode2\n" +
  6325. " ,gt2.goodstypename goodstypename2\n" +
  6326. " ,g.goodsid\n" +
  6327. " ,g.goodscode,g.GOODSNAME\n" +
  6328. " ,g.GOODSMODEL\n" +
  6329. " ,sp.barcode\n" +
  6330. " FROM tp_pm_scrapproduct sp\n" +
  6331. " LEFT JOIN TP_PM_ResponProcedure rp\n" +
  6332. " ON rp.scrapproductid = sp.scrapproductid\n" +
  6333. " LEFT JOIN (SELECT DISTINCT t.ScrapProductID\n" +
  6334. " ,t.ResponProcedureID\n" +
  6335. " ,t.userid\n" +
  6336. " ,t.usercode\n" +
  6337. " FROM TP_PM_ScrapResponsible t) sr\n" +
  6338. " ON sr.scrapproductid = sp.scrapproductid\n" +
  6339. // wangx 2016-06-20
  6340. " LEFT JOIN TP_PM_GroutingDailyDetail gdd\n" +
  6341. " ON rp.barcode = gdd.barcode\n" +
  6342. // wangx 2016-06-20 end
  6343. " LEFT JOIN tp_pc_productionline pline\n" +
  6344. " ON pline.productionlineid = sp.productionlineid\n" +
  6345. " LEFT JOIN tp_pc_procedure zp\n" +
  6346. " ON zp.procedureid = rp.procedureid\n" +
  6347. " LEFT JOIN tp_mst_user cu\n" +
  6348. " ON cu.userid = sp.createuserid\n" +
  6349. " LEFT JOIN tp_mst_user au\n" +
  6350. " ON au.userid = sp.auditor\n" +
  6351. " LEFT JOIN tp_mst_goods g\n" +
  6352. " ON g.goodsid = sp.goodsid\n" +
  6353. " LEFT JOIN tp_mst_goodstype gt\n" +
  6354. " ON gt.goodstypeid = g.goodstypeid\n" +
  6355. " LEFT JOIN tp_mst_goodstype gt2\n" +
  6356. " ON gt2.accountid = gt.accountid\n" +
  6357. " AND gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  6358. " WHERE sp.valueflag = '1'\n" +
  6359. " AND sp.AuditStatus = '1'\n" +
  6360. // 生产线
  6361. //" 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))" +
  6362. // 完成工序
  6363. //" 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))" +
  6364. // 责任工序
  6365. //" 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)))" +
  6366. " AND sp.accountid = :AccountID\n" +
  6367. (se.SpecialRepairFlag ? " AND sp.GoodsLevelTypeID in (8,9) -- 8损坯、9干补\n" : " AND sp.GoodsLevelTypeID = 8 -- 8损坯、9干补\n") +
  6368. (se.ReFireFlag ? " " : " AND sp.IsReFire <> '6'\n") +
  6369. " AND sp.ScrapType = '0'\n" +
  6370. " AND (:ProductionLineID IS NULL OR\n" +
  6371. " sp.ProductionLineID = :ProductionLineID)\n" +
  6372. " AND (:GoodsTypeCode IS NULL OR\n" +
  6373. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)\n" +
  6374. " AND (:GoodsCode IS NULL OR\n" +
  6375. " instr(g.GoodsCode, :GoodsCode) > 0)\n" +
  6376. " AND (:ProcedureIDS IS NULL OR\n" +
  6377. " instr(:ProcedureIDS, ',' || sp.ProcedureID || ',') > 0)\n" +
  6378. " AND (:ResponProcedureIDS IS NULL OR\n" +
  6379. " instr(:ResponProcedureIDS,\n" +
  6380. " ',' || rp.ProcedureID || ',') > 0)\n" +
  6381. " AND (:ResponUserIDS IS NULL OR\n" +
  6382. " instr(:ResponUserIDS, ',' || sr.userid || ',') > 0)\n" +
  6383. // 损坯时间
  6384. " AND (:ScrapDateStart IS NULL OR\n" +
  6385. " sp.CreateTime >= :ScrapDateStart)\n" +
  6386. " AND (:ScrapDateEnd IS NULL OR\n" +
  6387. " sp.CreateTime <= :ScrapDateEnd)\n" +
  6388. // 审核时间
  6389. " AND (:AuditDateStart IS NULL OR\n" +
  6390. " sp.AuditDate >= :AuditDateStart)\n" +
  6391. " AND (:AuditDateEnd IS NULL OR\n" +
  6392. " sp.AuditDate <= :AuditDateEnd)\n" +
  6393. // 完成时间
  6394. " AND (:CTimeStart IS NULL OR\n" +
  6395. " sp.CreateTime >= :CTimeStart)\n" +
  6396. " AND (:CTimeEnd IS NULL OR\n" +
  6397. " sp.CreateTime <= :CTimeEnd)\n" +
  6398. // 交坯时间
  6399. " AND (:DTimeStart IS NULL OR\n" +
  6400. " gdd.DeliverTime >= :DTimeStart)\n" +
  6401. " AND (:DTimeEnd IS NULL OR\n" +
  6402. " gdd.DeliverTime <= :DTimeEnd)\n" +
  6403. // 注浆时间
  6404. " AND (:GTimeStart IS NULL OR\n" +
  6405. " gdd.GroutingDate >= :GTimeStart)\n" +
  6406. " AND (:GTimeEnd IS NULL OR\n" +
  6407. " gdd.GroutingDate <= :GTimeEnd)\n" +
  6408. " AND (:CreatUser IS NULL OR\n" +
  6409. " instr(cu.UserCode, :CreatUser) > 0)\n" +
  6410. " AND (:AuditUser IS NULL OR\n" +
  6411. " instr(au.UserCode, :AuditUser) > 0)) t\n" +
  6412. " 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.GOODSNAME,t.GOODSMODEL),\n" +
  6413. " (t.productionlineid, t.productionlinename, t.displayno, t.zrprocedureid, t.zrprocedurename, t.goodstypecode2, t.goodstypename2),\n" +
  6414. " (t.productionlineid, t.productionlinename, t.displayno, t.zrprocedureid, t.zrprocedurename),())\n" +
  6415. " ORDER BY t.displayno, t.goodstypecode2, t.zrusercode, t.goodscode) ts";
  6416. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  6417. if (string.IsNullOrEmpty(se.ProcedureIDS))
  6418. {
  6419. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6420. }
  6421. else
  6422. {
  6423. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  6424. }
  6425. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  6426. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  6427. if (string.IsNullOrEmpty(se.ResponProcedureIDS))
  6428. {
  6429. parameters.Add(new OracleParameter(":ResponProcedureIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6430. }
  6431. else
  6432. {
  6433. parameters.Add(new OracleParameter(":ResponProcedureIDS", OracleDbType.Varchar2, "," + se.ResponProcedureIDS + ",", ParameterDirection.Input));
  6434. }
  6435. if (string.IsNullOrEmpty(se.ResponUserIDS))
  6436. {
  6437. parameters.Add(new OracleParameter(":ResponUserIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6438. }
  6439. else
  6440. {
  6441. parameters.Add(new OracleParameter(":ResponUserIDS", OracleDbType.Varchar2, "," + se.ResponUserIDS + ",", ParameterDirection.Input));
  6442. }
  6443. parameters.Add(new OracleParameter(":CreatUser", OracleDbType.Varchar2, se.CreatUser, ParameterDirection.Input));
  6444. parameters.Add(new OracleParameter(":AuditUser", OracleDbType.Varchar2, se.AuditUser, ParameterDirection.Input));
  6445. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDateStart, ParameterDirection.Input));
  6446. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDateEnd, ParameterDirection.Input));
  6447. parameters.Add(new OracleParameter(":CTimeStart", OracleDbType.Date, se.CTimeStart, ParameterDirection.Input));
  6448. parameters.Add(new OracleParameter(":CTimeEnd", OracleDbType.Date, se.CTimeEnd, ParameterDirection.Input));
  6449. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart, ParameterDirection.Input));
  6450. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd, ParameterDirection.Input));
  6451. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart, ParameterDirection.Input));
  6452. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd, ParameterDirection.Input));
  6453. parameters.Add(new OracleParameter(":AuditDateStart", OracleDbType.Date, se.AuditTimeStart, ParameterDirection.Input));
  6454. parameters.Add(new OracleParameter(":AuditDateEnd", OracleDbType.Date, se.AuditTimeEnd, ParameterDirection.Input));
  6455. return sqlString;
  6456. }
  6457. /// <summary>
  6458. /// 取得RPT030102_1画面(产品损坯汇总表)的明细信息查询数据
  6459. /// </summary>
  6460. /// <param name="user">登录用户信息</param>
  6461. /// <param name="se">查询条件</param>
  6462. /// <returns>查询结果</returns>
  6463. public static ServiceResultEntity GetRPT030102IData(SUserInfo user, RPT030102_SE se)
  6464. {
  6465. IDBConnection conn = null;
  6466. try
  6467. {
  6468. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6469. List<OracleParameter> parameters = new List<OracleParameter>();
  6470. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030102ISQL(user, se, ref parameters));
  6471. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  6472. ServiceResultEntity sre = new ServiceResultEntity();
  6473. if (data == null || data.Rows.Count == 0)
  6474. {
  6475. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6476. return sre;
  6477. }
  6478. sre.Data = new DataSet();
  6479. sre.Data.Tables.Add(data);
  6480. return sre;
  6481. }
  6482. catch (Exception ex)
  6483. {
  6484. throw ex;
  6485. }
  6486. finally
  6487. {
  6488. if (conn != null &&
  6489. conn.ConnState == ConnectionState.Open)
  6490. {
  6491. conn.Close();
  6492. }
  6493. }
  6494. }
  6495. /// <summary>
  6496. /// 获取RPT030102_1画面(产品损坯汇总表)的明细信息查询sql
  6497. /// </summary>
  6498. /// <returns>sql</returns>
  6499. private static string GetRPT030102ISQL(SUserInfo user, RPT030102_SE se, ref List<OracleParameter> parameters)
  6500. {
  6501. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  6502. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  6503. string mainsql = "";
  6504. string tmp = "";
  6505. string sqlString =
  6506. "SELECT GROUPING_ID(sr.usercode) AS GID, " +
  6507. "case WHEN GROUPING_ID(sr.usercode) =0 and p.procedurename is null THEN '小计'" +
  6508. "WHEN GROUPING_ID(sr.usercode) = 1 THEN '合计'" +
  6509. "ELSE TO_CHAR(pline.productionlinename) end as productionlinename\n" +
  6510. " ,p.procedurename\n" +
  6511. " ,zp.procedurename zrprocedurename\n" +
  6512. " ,sr.usercode zrusercode\n" +
  6513. " ,sr.StaffNames zrStaffNames\n" +
  6514. " ,gt2.goodstypecode goodstypecode2\n" +
  6515. " ,gt2.goodstypename goodstypename2\n" +
  6516. " ,gt.goodstypename\n" +
  6517. " ,g.goodscode ,g.GOODSNAME\n" +
  6518. " ,g.GOODSMODEL\n" +
  6519. " ,sp.barcode\n" +
  6520. " ,sp.createtime Scrapdate\n" +
  6521. " ,sp.Rreason\n" +
  6522. " ,sp.GroutingUserCode\n" +
  6523. " ,sp.GroutingLineCode\n" +
  6524. " ,sp.GroutingMouldCode\n" +
  6525. " ,sp.GroutingDate\n" +
  6526. " ,sp.GroutingNum\n" +
  6527. " ,cu.usercode CreateUserCode\n" +
  6528. " ,au.usercode AuditorCode\n" +
  6529. " ,sp.auditdate\n" +
  6530. " ,gdd.DeliverTime\n" +
  6531. " ,gdd.ISPUBLICBODY\n" +
  6532. " ,gdd.SPECIALREPAIRFLAG\n" +
  6533. " ,gdd.TESTMOULDFLAG\n" +
  6534. " ,lg.logoname\n" +
  6535. " ,sp.CreateTime\n" +
  6536. " ,sp.Remarks\n" +
  6537. " , COUNT(DISTINCT sp.BARCODE ) AS counts\n" +
  6538. " ,CASE WHEN sp.DISCOVERERSTAFF IS NULL OR sp.DISCOVERERSTAFF='null' THEN ' ' ELSE TO_CHAR(sp.DISCOVERERSTAFF) END AS DISCOVERERSTAFF," +
  6539. " JOB.JOBSNAME \n,tp.WorkUserCodes \n";
  6540. tmp = " FROM tp_pm_scrapproduct sp\n" +
  6541. " LEFT JOIN TP_PM_ResponProcedure rp\n" +
  6542. " ON rp.scrapproductid = sp.scrapproductid\n" +
  6543. " LEFT JOIN (SELECT DISTINCT t.ScrapProductID\n" +
  6544. " ,t.ResponProcedureID\n" +
  6545. " ,t.STAFFID\n" +
  6546. " ,t.userid\n" +
  6547. " ,t.usercode\n" +
  6548. " ,LISTAGG(to_char(s.StaffName), ',') WITHIN GROUP(ORDER BY s.staffcode) over(partition by t.ScrapProductID) AS StaffNames\n" +
  6549. " FROM TP_PM_ScrapResponsible t\n" +
  6550. " LEFT JOIN TP_HR_Staff s \n" +
  6551. " ON s.StaffID = t.StaffID \n" +
  6552. " ) sr\n" +
  6553. " ON sr.scrapproductid = sp.scrapproductid\n" +
  6554. " LEFT JOIN (SELECT DISTINCT pduc.barcode ,listagg(to_char(pduc.usercode), ',') within GROUP(ORDER BY pduc.productiondataid) AS WorkUserCodes " +
  6555. " FROM tp_pm_productiondata pduc WHERE pduc.valueflag = '1' group by pduc.barcode) tp " +
  6556. " ON tp.barcode = sp.barcode " +
  6557. // wangx 2016-06-20
  6558. " LEFT JOIN TP_PM_GroutingDailyDetail gdd\n" +
  6559. " ON sp.barcode = gdd.barcode\n" +
  6560. // wangx 2016-06-20 end
  6561. " LEFT JOIN TP_mst_logo lg\n" +
  6562. " ON lg.logoid = gdd.logoid\n" +
  6563. " LEFT JOIN tp_pc_productionline pline\n" +
  6564. " ON pline.productionlineid = sp.productionlineid\n" +
  6565. " LEFT JOIN tp_pc_procedure p\n" +
  6566. " ON p.procedureid = sp.procedureid\n" +
  6567. " LEFT JOIN tp_pc_procedure zp\n" +
  6568. " ON zp.procedureid = rp.procedureid\n" +
  6569. " LEFT JOIN tp_mst_user cu\n" +
  6570. " ON cu.userid = sp.createuserid\n" +
  6571. " LEFT JOIN tp_mst_user au\n" +
  6572. " ON au.userid = sp.auditor\n" +
  6573. " LEFT JOIN tp_mst_goods g\n" +
  6574. " ON g.goodsid = sp.goodsid\n" +
  6575. " LEFT JOIN tp_mst_goodstype gt\n" +
  6576. " ON gt.goodstypeid = g.goodstypeid\n" +
  6577. " LEFT JOIN tp_mst_goodstype gt2\n" +
  6578. " ON gt2.accountid = gt.accountid\n" +
  6579. " AND gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  6580. " LEFT JOIN TP_HR_STAFF userjob on userjob.STAFFID=sr.STAFFID " +
  6581. " LEFT JOIN TP_MST_JOBS JOB ON JOB.JOBSID=userjob.JOBS" +
  6582. " WHERE sp.valueflag = '1'\n" +
  6583. " AND sp.AuditStatus = '1'\n" +
  6584. " AND sp.accountid = :accountid\n" +
  6585. // 生产线
  6586. //" 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))" +
  6587. // 完成工序
  6588. //" 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))" +
  6589. // 责任工序
  6590. //" 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)))" +
  6591. //" AND sp.GoodsLevelTypeID = 8 -- 8损坯、9干补\n" +
  6592. (se.SpecialRepairFlag ? " AND sp.GoodsLevelTypeID in (8,9) -- 8损坯、9干补\n" : " AND sp.GoodsLevelTypeID = 8 -- 8损坯、9干补\n") +
  6593. (se.ReFireFlag ? " " : " AND sp.IsReFire <> '6'\n") +
  6594. " AND sp.ScrapType = '0'\n" +
  6595. " AND (:ProductionLineID IS NULL OR\n" +
  6596. " sp.ProductionLineID = :ProductionLineID)\n" +
  6597. " AND (:GoodsTypeCode IS NULL OR\n" +
  6598. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)\n" +
  6599. " AND (:GoodsCode IS NULL OR instr(g.GoodsCode, :GoodsCode) > 0)\n" +
  6600. " AND (:ProcedureIDS IS NULL OR\n" +
  6601. " instr(:ProcedureIDS, ',' || sp.ProcedureID || ',') > 0)\n" +
  6602. " AND (:ResponProcedureIDS IS NULL OR\n" +
  6603. " instr(:ResponProcedureIDS, ',' || rp.ProcedureID || ',') > 0)\n" +
  6604. " AND (:ResponUserIDS IS NULL OR\n" +
  6605. " instr(:ResponUserIDS, ',' || sr.userid || ',') > 0)\n" +
  6606. // 损坯时间
  6607. " AND (:ScrapDateStart IS NULL OR sp.CreateTime >= :ScrapDateStart)\n" +
  6608. " AND (:ScrapDateEnd IS NULL OR sp.CreateTime <= :ScrapDateEnd)\n" +
  6609. // 审核时间
  6610. " AND (:AuditDateStart IS NULL OR sp.AuditDate >= :AuditDateStart)\n" +
  6611. " AND (:AuditDateEnd IS NULL OR sp.AuditDate <= :AuditDateEnd)\n" +
  6612. // 完成时间
  6613. " AND (:CTimeStart IS NULL OR\n" +
  6614. " sp.CreateTime >= :CTimeStart)\n" +
  6615. " AND (:CTimeEnd IS NULL OR\n" +
  6616. " sp.CreateTime <= :CTimeEnd)\n" +
  6617. // 交坯时间
  6618. " AND (:DTimeStart IS NULL OR\n" +
  6619. " gdd.DeliverTime >= :DTimeStart)\n" +
  6620. " AND (:DTimeEnd IS NULL OR\n" +
  6621. " gdd.DeliverTime <= :DTimeEnd)\n" +
  6622. // 注浆时间
  6623. " AND (:GTimeStart IS NULL OR\n" +
  6624. " gdd.GroutingDate >= :GTimeStart)\n" +
  6625. " AND (:GTimeEnd IS NULL OR\n" +
  6626. " gdd.GroutingDate <= :GTimeEnd)\n" +
  6627. " AND (:TestMouldFlag IS NULL OR gdd.TestMouldFlag = :TestMouldFlag)\n" +
  6628. " AND (:CreatUser IS NULL OR instr(cu.UserCode, :CreatUser) > 0)\n" +
  6629. " AND (:AuditUser IS NULL OR instr(au.UserCode, :AuditUser) > 0)\n" +
  6630. " AND (:GoodsID IS NULL OR sp.goodsid = :GoodsID)\n" +
  6631. " AND (:ResponProcedureID IS NULL OR rp.procedureid = :ResponProcedureID)\n" +
  6632. " AND (:ResponUserID IS NULL OR sr.userid = :ResponUserID)\n" +
  6633. " AND (:RPF = 1 OR rp.procedureid is null)\n" +
  6634. " AND (:RUF = 1 OR sr.userid is null)\n";
  6635. sqlString += tmp;
  6636. sqlString += @"GROUP BY Grouping sets ( (
  6637. pline.productionlinename
  6638. ,p.procedurename
  6639. ,zp.procedurename
  6640. ,sr.usercode
  6641. ,sr.StaffNames
  6642. ,gt2.goodstypecode
  6643. ,gt2.goodstypename
  6644. ,gt.goodstypename
  6645. ,g.goodscode
  6646. ,g.GOODSNAME
  6647. ,g.GOODSMODEL
  6648. ,sp.barcode
  6649. ,sp.createtime
  6650. ,sp.Rreason
  6651. ,sp.GroutingUserCode
  6652. ,sp.GroutingLineCode
  6653. ,sp.GroutingMouldCode
  6654. ,sp.GroutingDate
  6655. ,sp.GroutingNum
  6656. ,cu.usercode
  6657. ,au.usercode
  6658. ,sp.auditdate
  6659. ,gdd.DeliverTime
  6660. ,gdd.ISPUBLICBODY
  6661. ,gdd.SPECIALREPAIRFLAG
  6662. ,gdd.TESTMOULDFLAG
  6663. ,lg.logoname
  6664. ,sp.CreateTime
  6665. ,sp.Remarks
  6666. ,sp.DISCOVERERSTAFF,JOB.JOBSNAME, tp.WorkUserCodes ), (sr.usercode),()) ORDER BY sr.usercode,p.procedurename ";
  6667. mainsql = @"SELECT null AS GID, " +
  6668. "'晟昊' as productionlinename\n" +
  6669. " ,p.procedurename||'合计' procedurename\n" +
  6670. " ,null zrprocedurename\n" +
  6671. " ,null zrusercode\n" +
  6672. " ,null zrStaffNames\n" +
  6673. " ,null goodstypecode2\n" +
  6674. " ,null goodstypename2\n" +
  6675. " ,null goodstypename" +
  6676. " ,null goodscode" +
  6677. " ,null GOODSNAME" +
  6678. " ,null GOODSMODEL" +
  6679. " ,null barcode" +
  6680. " ,null Scrapdate\n" +
  6681. " ,null Rreason" +
  6682. " ,null GroutingUserCode" +
  6683. " ,null GroutingLineCode" +
  6684. " ,null GroutingMouldCode" +
  6685. " ,null GroutingDate\n" +
  6686. " ,null GroutingNum\n" +
  6687. " ,null CreateUserCode\n" +
  6688. " ,null AuditorCode\n" +
  6689. " ,null auditdate\n" +
  6690. " ,null DeliverTime" +
  6691. " ,null ISPUBLICBODY" +
  6692. " ,null SPECIALREPAIRFLAG" +
  6693. " ,null TESTMOULDFLAG\n" +
  6694. " ,null logoname\n" +
  6695. " ,null CreateTime\n" +
  6696. " ,null Remarks\n" +
  6697. " , COUNT(DISTINCT sp.BARCODE ) AS counts\n" +
  6698. " ,null AS DISCOVERERSTAFF," +
  6699. " null JOBSNAME ,NULL WorkUserCodes \n " +
  6700. tmp + " GROUP BY p.procedurename order by procedurename";
  6701. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  6702. if (string.IsNullOrEmpty(se.ProcedureIDS))
  6703. {
  6704. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6705. }
  6706. else
  6707. {
  6708. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  6709. }
  6710. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  6711. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  6712. if (string.IsNullOrEmpty(se.ResponProcedureIDS))
  6713. {
  6714. parameters.Add(new OracleParameter(":ResponProcedureIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6715. }
  6716. else
  6717. {
  6718. parameters.Add(new OracleParameter(":ResponProcedureIDS", OracleDbType.Varchar2, "," + se.ResponProcedureIDS + ",", ParameterDirection.Input));
  6719. }
  6720. if (string.IsNullOrEmpty(se.ResponUserIDS))
  6721. {
  6722. parameters.Add(new OracleParameter(":ResponUserIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  6723. }
  6724. else
  6725. {
  6726. parameters.Add(new OracleParameter(":ResponUserIDS", OracleDbType.Varchar2, "," + se.ResponUserIDS + ",", ParameterDirection.Input));
  6727. }
  6728. parameters.Add(new OracleParameter(":CreatUser", OracleDbType.Varchar2, se.CreatUser, ParameterDirection.Input));
  6729. parameters.Add(new OracleParameter(":AuditUser", OracleDbType.Varchar2, se.AuditUser, ParameterDirection.Input));
  6730. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDateStart, ParameterDirection.Input));
  6731. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDateEnd, ParameterDirection.Input));
  6732. parameters.Add(new OracleParameter(":AuditDateStart", OracleDbType.Date, se.AuditTimeStart, ParameterDirection.Input));
  6733. parameters.Add(new OracleParameter(":AuditDateEnd", OracleDbType.Date, se.AuditTimeEnd, ParameterDirection.Input));
  6734. parameters.Add(new OracleParameter(":CTimeStart", OracleDbType.Date, se.CTimeStart, ParameterDirection.Input));
  6735. parameters.Add(new OracleParameter(":CTimeEnd", OracleDbType.Date, se.CTimeEnd, ParameterDirection.Input));
  6736. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart, ParameterDirection.Input));
  6737. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd, ParameterDirection.Input));
  6738. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart, ParameterDirection.Input));
  6739. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd, ParameterDirection.Input));
  6740. parameters.Add(new OracleParameter(":GoodsID", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  6741. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  6742. if (se.ResponProcedureID == "")
  6743. {
  6744. parameters.Add(new OracleParameter(":RPF", OracleDbType.Int32, 0, ParameterDirection.Input));
  6745. parameters.Add(new OracleParameter(":ResponProcedureID", OracleDbType.Int32, null, ParameterDirection.Input));
  6746. }
  6747. else
  6748. {
  6749. parameters.Add(new OracleParameter(":RPF", OracleDbType.Int32, 1, ParameterDirection.Input));
  6750. parameters.Add(new OracleParameter(":ResponProcedureID", OracleDbType.Int32, se.ResponProcedureID, ParameterDirection.Input));
  6751. }
  6752. if (se.ResponUserID == "")
  6753. {
  6754. parameters.Add(new OracleParameter(":RUF", OracleDbType.Int32, 0, ParameterDirection.Input));
  6755. parameters.Add(new OracleParameter(":ResponUserID", OracleDbType.Int32, null, ParameterDirection.Input));
  6756. }
  6757. else
  6758. {
  6759. parameters.Add(new OracleParameter(":RUF", OracleDbType.Int32, 1, ParameterDirection.Input));
  6760. parameters.Add(new OracleParameter(":ResponUserID", OracleDbType.Int32, se.ResponUserID, ParameterDirection.Input));
  6761. }
  6762. return "select * from (" + mainsql + ") UNION ALL " + "select * from (" + sqlString + ")";
  6763. }
  6764. /// <summary>
  6765. /// 取得RPT030103_1画面(出窑数量汇总表)的汇总信息查询数据
  6766. /// </summary>
  6767. /// <param name="user">登录用户信息</param>
  6768. /// <param name="se">查询条件</param>
  6769. /// <returns>查询结果</returns>
  6770. public static ServiceResultEntity GetRPT030103SData(SUserInfo user, RPT030103_SE se)
  6771. {
  6772. IDBConnection conn = null;
  6773. try
  6774. {
  6775. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  6776. List<OracleParameter> parameters = new List<OracleParameter>();
  6777. string sql = ReportModuleLogic.GetRPT030103SSQL(user, se, ref parameters);
  6778. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  6779. ServiceResultEntity sre = new ServiceResultEntity();
  6780. if (data == null || data.Rows.Count == 0)
  6781. {
  6782. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6783. return sre;
  6784. }
  6785. sre.Data = new DataSet();
  6786. sre.Data.Tables.Add(data);
  6787. return sre;
  6788. }
  6789. catch (Exception ex)
  6790. {
  6791. throw ex;
  6792. }
  6793. finally
  6794. {
  6795. if (conn != null &&
  6796. conn.ConnState == ConnectionState.Open)
  6797. {
  6798. conn.Close();
  6799. }
  6800. }
  6801. }
  6802. /// <summary>
  6803. /// 获取RPT030103_1画面(出窑数量汇总表)的汇总信息查询sql
  6804. /// </summary>
  6805. /// <returns>sql</returns>
  6806. private static string GetRPT030103SSQL(SUserInfo user, RPT030103_SE se, ref List<OracleParameter> parameters)
  6807. {
  6808. string selSql = "";
  6809. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  6810. parameters.Add(new OracleParameter(":rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  6811. selSql = selSql +
  6812. "SELECT pdata.Procedureid Procedureid " +
  6813. " ,decode(gid, 3, '合计', 1, '小计【'||pdata.Procedurename||'】', pdata.Procedurename) Procedurename " +
  6814. " ,decode(gid, 0, to_char(pdata.Userid), '--') Userid " +
  6815. " ,decode(gid, 0, pdata.Usercode, '--') Usercode " +
  6816. " ,decode(gid, 0, to_char(pdata.KilnID), '--') Kilnid " +
  6817. " ,decode(gid, 0, pdata.Kilncode, '--') Kilncode " +
  6818. " ,decode(gid, 0, pdata.goodstypename, '--') goodstypename " +
  6819. " ,decode(gid, 0, to_char(pdata.Goodsid), '--') Goodsid " +
  6820. " ,decode(gid, 0, pdata.Goodscode, '--') Goodscode ,decode( gid, 0, pdata.GOODSNAME, '--' ) GOODSNAME " +
  6821. " ,OutKilnCount " +
  6822. " ,pdata.STAFFNAME " +
  6823. " FROM (SELECT grouping_id(pdata.Procedureid, " +
  6824. " pdata.Userid ) gid " +
  6825. " ,pdata.Procedureid " +
  6826. " ,pdata.Procedurename " +
  6827. " ,pdata.Userid " +
  6828. " ,pdata.Usercode " +
  6829. " ,pdata.Kilnid " +
  6830. " ,pdata.Kilncode " +
  6831. " ,pdata.goodstypename " +
  6832. " ,pdata.Goodsid " +
  6833. " ,pdata.Goodscode,pdata.GOODSNAME " +
  6834. " ,COUNT(pdata.Barcode) AS OutKilnCount " +
  6835. " ,pdata.STAFFNAME " +
  6836. " FROM (SELECT DISTINCT \n" +
  6837. //" decode(grouping(TP_PM_ProductionData.Procedureid),1,'--',TP_PM_ProductionData.Procedureid) Procedureid, " +
  6838. //" decode(grouping(TP_PM_ProductionData.Procedurename),1,'合计', TP_PM_ProductionData.Procedurename) Procedurename, " +
  6839. //" decode(grouping(TP_PM_ProductionData.Userid),1,'--', TP_PM_ProductionData.Userid) Userid, " +
  6840. //" decode(grouping(TP_PM_ProductionData.Usercode),1,'--', TP_PM_ProductionData.Usercode) Usercode, " +
  6841. //" decode(grouping(temp.Kilncode),1,'--', temp.KilnID) Kilnid, " +
  6842. //" decode(grouping(temp.Kilncode),1,'--', temp.Kilncode) Kilncode, " +
  6843. //" decode(grouping(tp_mst_goodstype.goodstypename),1,'--', tp_mst_goodstype.goodstypename) goodstypename, " +
  6844. //" decode(grouping(TP_PM_ProductionData.Goodsid),1,'--', TP_PM_ProductionData.Goodsid) Goodsid, " +
  6845. //" decode(grouping(TP_PM_ProductionData.Goodscode),1,'--', TP_PM_ProductionData.Goodscode) Goodscode, " +
  6846. "TP_PM_ProductionData.Procedureid,pcp.Procedurename, " +
  6847. //"TP_PM_ProductionData.Userid,TP_PM_ProductionData.Usercode, " +
  6848. (se.DisPUserCode ? " TP_PM_ProductionData.userid, TP_PM_ProductionData.usercode, \n" : " null userid, null usercode, \n") +
  6849. "temp.Kilnid,temp.Kilncode,tp_mst_goodstype.goodstypename, " +
  6850. "TP_PM_ProductionData.Goodsid,TP_PM_ProductionData.Goodscode,TP_PM_ProductionData.GOODSNAME, TP_PM_ProductionData.barcode,STAFF.STAFFNAME " +
  6851. " from TP_PM_ProductionData " +
  6852. " inner join tp_mst_goods on tp_mst_goods.goodsid=TP_PM_ProductionData.Goodsid " +
  6853. " inner join tp_mst_goodstype on tp_mst_goodstype.goodstypeid=tp_mst_goods.goodstypeid " +
  6854. " inner join TP_MST_RptTProcedure on TP_MST_RptTProcedure.Procedureid=TP_PM_ProductionData.Procedureid " +
  6855. //" inner join TP_MST_RptProcedure on TP_MST_RptProcedure.Rptprocedureid=TP_MST_RptTProcedure.Rptprocedureid " +
  6856. " inner join tp_pc_procedure pcp on pcp.procedureid=TP_PM_ProductionData.Procedureid " +
  6857. " inner join " +
  6858. " ( " +
  6859. " SELECT pd.CreateTime, pd.ProductionDataID, pd.Barcode, pd.Kilncode,pd.KilnID, pd.KilnCarID,pd.Kilncarbatchno " +
  6860. " from TP_PM_ProductionData pd ";
  6861. //" inner join TP_MST_RptSProcedure on TP_MST_RptSProcedure.Procedureid=pd.Procedureid ";
  6862. if (!string.IsNullOrEmpty(se.TestMouldFlag) || se.DTimeStart.HasValue || se.DTimeEnd.HasValue)
  6863. {
  6864. selSql += " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid=pd.groutingdailydetailid ";
  6865. }
  6866. selSql +=
  6867. " where pd.Accountid=:AccountID ";
  6868. // 恒洁三车间特殊处理(质量相关)
  6869. // " and TP_PM_ProductionData.Valueflag='1' " +
  6870. //// 数据重复 modify by chenxy begin
  6871. //// " and TP_MST_RptSProcedure.Rptprocedureid=:rptProcedureId " +
  6872. //// 数据重复 modify by chenxy end
  6873. //" and TP_MST_RptSProcedure.Procedureid=:rptSprocedureId ";
  6874. //" AND ((:rptSprocedureId = 11 AND ((pd.procedureid = 11 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '0' AND pd.checkflag = '1'))) \n" +
  6875. //" OR (:rptSprocedureId = 58 AND ((pd.procedureid = 58 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '6' AND pd.checkflag = '1'))) \n" +
  6876. //" OR (:rptSprocedureId not in (11,58) AND pd.valueflag = '1' AND pd.procedureid = :rptSprocedureId))\n";
  6877. // end
  6878. //if (se.CreateTimeStart.HasValue)
  6879. //{
  6880. // selSql = selSql + " AND TP_PM_ProductionData.CreateTime >= :CreateTimeStart ";
  6881. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  6882. //}
  6883. //if (se.CreateTimeEnd.HasValue)
  6884. //{
  6885. // selSql = selSql + " AND TP_PM_ProductionData.CreateTime <= :CreateTimeEnd ";
  6886. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  6887. //}
  6888. if (se.OutTimeStart.HasValue)
  6889. {
  6890. selSql = selSql + " AND pd.CreateTime >=:OutTimeStart ";
  6891. parameters.Add(new OracleParameter(":OutTimeStart", OracleDbType.Date, se.OutTimeStart.Value, ParameterDirection.Input));
  6892. }
  6893. if (se.OutTimeEnd.HasValue)
  6894. {
  6895. selSql = selSql + " AND pd.CreateTime <= :OutTimeEnd ";
  6896. parameters.Add(new OracleParameter(":OutTimeEnd", OracleDbType.Date, se.OutTimeEnd.Value, ParameterDirection.Input));
  6897. }
  6898. if (se.GTimeStart.HasValue)
  6899. {
  6900. selSql = selSql + " AND pd.GROUTINGDATE >=:GTimeStart ";
  6901. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  6902. }
  6903. if (se.GTimeEnd.HasValue)
  6904. {
  6905. selSql = selSql + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  6906. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  6907. }
  6908. if (se.DTimeStart.HasValue)
  6909. {
  6910. selSql = selSql + " AND gdd.DELIVERTIME >=:DTimeStart ";
  6911. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart.Value, ParameterDirection.Input));
  6912. }
  6913. if (se.DTimeEnd.HasValue)
  6914. {
  6915. selSql = selSql + " AND gdd.DELIVERTIME <= :DTimeEnd ";
  6916. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd.Value, ParameterDirection.Input));
  6917. }
  6918. // 试验标识
  6919. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  6920. {
  6921. selSql += " AND gdd.TestMouldFlag = :TestMouldFlag ";
  6922. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  6923. }
  6924. if (se.Specialrepairflag)
  6925. {
  6926. selSql = selSql +
  6927. " ) temp " +
  6928. " on TP_PM_ProductionData.Barcode=temp.barcode " +
  6929. " " +
  6930. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 begin
  6931. " and TP_PM_ProductionData.createtime <= temp.createtime\n" +
  6932. " and (TP_PM_ProductionData.MODELTYPE = 8 or (not exists (SELECT 1\n" +
  6933. " FROM TP_PM_ProductionData pp\n" +
  6934. " WHERE pp.barcode = temp.barcode and pp.createtime > TP_PM_ProductionData.createtime\n" +
  6935. " AND pp.createtime < temp.createtime\n" +
  6936. " AND pp.procedureid = TP_PM_ProductionData.Procedureid)))\n" +
  6937. //fenglinyong ADD 添加员工姓名列 2022-08-26
  6938. " LEFT JOIN ( " +
  6939. " SELECT " +
  6940. " D.CLASSESSETTINGID, " +
  6941. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME " +
  6942. " FROM " +
  6943. " (" +
  6944. " SELECT " +
  6945. " CD.CLASSESSETTINGID, " +
  6946. " HR.STAFFNAME " +
  6947. " FROM" +
  6948. " TP_PC_CLASSESDETAIL CD" +
  6949. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID " +
  6950. " ) D " +
  6951. " GROUP BY " +
  6952. " D.CLASSESSETTINGID " +
  6953. " ) STAFF ON TP_PM_ProductionData.CLASSESSETTINGID = STAFF.CLASSESSETTINGID " +
  6954. //fenglinyong ADD 添加员工姓名列 2022-08-26
  6955. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 end
  6956. " where " +
  6957. // 公坯、干补不算交坯工序的质量。
  6958. // " 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" +
  6959. // modify wangx 2015-12-3
  6960. " ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and TP_PM_ProductionData.SpecialRepairFlag = '0')) \n" +
  6961. " and TP_PM_ProductionData.Valueflag='1' " +
  6962. //" and TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId ";
  6963. " and TP_MST_RptTProcedure.Rptprocedureid=:rptProcedureId ";
  6964. parameters.Add(new OracleParameter(":rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  6965. }
  6966. else
  6967. {
  6968. selSql = selSql +
  6969. " ) temp " +
  6970. " on TP_PM_ProductionData.Barcode=temp.barcode " +
  6971. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 begin
  6972. " and TP_PM_ProductionData.createtime <= temp.createtime\n" +
  6973. " and (TP_PM_ProductionData.MODELTYPE = 8 or (not exists (SELECT 1\n" +
  6974. " FROM TP_PM_ProductionData pp\n" +
  6975. " WHERE pp.barcode = temp.barcode and pp.createtime > TP_PM_ProductionData.createtime\n" +
  6976. " AND pp.createtime < temp.createtime\n" +
  6977. " AND pp.procedureid = TP_PM_ProductionData.Procedureid)))\n" +
  6978. //fenglinyong ADD 添加员工姓名列 2022-08-26
  6979. " LEFT JOIN ( " +
  6980. " SELECT " +
  6981. " D.CLASSESSETTINGID, " +
  6982. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME " +
  6983. " FROM " +
  6984. " (" +
  6985. " SELECT " +
  6986. " CD.CLASSESSETTINGID, " +
  6987. " HR.STAFFNAME " +
  6988. " FROM" +
  6989. " TP_PC_CLASSESDETAIL CD" +
  6990. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID " +
  6991. " ) D " +
  6992. " GROUP BY " +
  6993. " D.CLASSESSETTINGID " +
  6994. " ) STAFF ON TP_PM_ProductionData.CLASSESSETTINGID = STAFF.CLASSESSETTINGID " +
  6995. //fenglinyong ADD 添加员工姓名列 2022-08-26
  6996. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 end
  6997. " where TP_PM_ProductionData.Valueflag='1' " +
  6998. //" and TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId ";
  6999. " and TP_MST_RptTProcedure.Rptprocedureid=:rptProcedureId ";
  7000. parameters.Add(new OracleParameter(":rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  7001. }
  7002. if (se.CreateTimeStart.HasValue)
  7003. {
  7004. selSql = selSql + " AND TP_PM_ProductionData.CreateTime >=:CreateTimeStart ";
  7005. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7006. }
  7007. if (se.CreateTimeEnd.HasValue)
  7008. {
  7009. selSql = selSql + " AND TP_PM_ProductionData.CreateTime <= :CreateTimeEnd ";
  7010. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7011. }
  7012. if (!string.IsNullOrEmpty(se.GoodsIDS))
  7013. {
  7014. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  7015. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  7016. }
  7017. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  7018. {
  7019. // selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1 ";
  7020. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1 ";
  7021. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  7022. }
  7023. if (se.ProductionLineID.HasValue)
  7024. {
  7025. selSql = selSql + " AND instr(','||:productionLineId||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  7026. parameters.Add(new OracleParameter(":productionLineId", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  7027. }
  7028. //else
  7029. //{
  7030. // selSql = selSql + " AND TP_PM_ProductionData.ProductionLineId in(Select PurviewID from TP_MST_UserPurview where PurviewType= 7 and UserID = :UserID) ";
  7031. //}
  7032. //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))";
  7033. //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))";
  7034. parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  7035. if (!string.IsNullOrEmpty(se.RptTProcedureIDS))
  7036. {
  7037. selSql = selSql + " AND instr(','||:rptTprocedureId||',',','||TP_MST_RptTProcedure.ProcedureId||',')>0 ";
  7038. parameters.Add(new OracleParameter(":rptTprocedureId", OracleDbType.NVarchar2, se.RptTProcedureIDS, ParameterDirection.Input));
  7039. }
  7040. if (!string.IsNullOrEmpty(se.UserIDS))
  7041. {
  7042. selSql = selSql + " AND instr(','||:userIDS||',',','||TP_PM_ProductionData.Userid||',')>0 ";
  7043. parameters.Add(new OracleParameter(":userIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7044. }
  7045. if (se.KilnID.HasValue)
  7046. {
  7047. selSql = selSql + " AND temp.KilnID=:KilnID ";
  7048. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7049. }
  7050. if (!string.IsNullOrWhiteSpace(se.GroutingUserCode))
  7051. {
  7052. selSql = selSql + " AND instr(TP_PM_ProductionData.GroutingUserCode, :GroutingUserCode) > 0";
  7053. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  7054. }
  7055. selSql = selSql + " order by pcp.displayno, TP_PM_ProductionData.Usercode, temp.Kilncode,tp_mst_goodstype.goodstypename,TP_PM_ProductionData.Goodscode ) pdata" +
  7056. " GROUP BY GROUPING SETS((pdata.Procedureid, pdata.Procedurename, pdata.Userid, pdata.Usercode, pdata.Kilnid, pdata.Kilncode, pdata.goodstypename, pdata.Goodsid, pdata.Goodscode,pdata.GOODSNAME,pdata.STAFFNAME ),(pdata.Procedureid, pdata.Procedurename),()) " +
  7057. ") pdata"
  7058. ;
  7059. return selSql;
  7060. }
  7061. /// <summary>
  7062. /// 取得RPT030103_1画面(出窑数量汇总表)的明细信息查询数据
  7063. /// </summary>
  7064. /// <param name="user">登录用户信息</param>
  7065. /// <param name="se">查询条件</param>
  7066. /// <returns>查询结果</returns>
  7067. public static ServiceResultEntity GetRPT030103IData(SUserInfo user, RPT030103_SE se)
  7068. {
  7069. IDBConnection conn = null;
  7070. try
  7071. {
  7072. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7073. List<OracleParameter> parameters = new List<OracleParameter>();
  7074. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030103ISQL(user, se, ref parameters));
  7075. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  7076. ServiceResultEntity sre = new ServiceResultEntity();
  7077. if (data == null || data.Rows.Count == 0)
  7078. {
  7079. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7080. return sre;
  7081. }
  7082. sre.Data = new DataSet();
  7083. sre.Data.Tables.Add(data);
  7084. return sre;
  7085. }
  7086. catch (Exception ex)
  7087. {
  7088. throw ex;
  7089. }
  7090. finally
  7091. {
  7092. if (conn != null &&
  7093. conn.ConnState == ConnectionState.Open)
  7094. {
  7095. conn.Close();
  7096. }
  7097. }
  7098. }
  7099. /// <summary>
  7100. /// 获取RPT030103_1画面(出窑数量汇总表)的明细信息查询sql
  7101. /// </summary>
  7102. /// <returns>sql</returns>
  7103. private static string GetRPT030103ISQL(SUserInfo user, RPT030103_SE se, ref List<OracleParameter> parameters)
  7104. {
  7105. string selSql = "";
  7106. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7107. parameters.Add(new OracleParameter(":rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
  7108. selSql = selSql +
  7109. "select distinct " +
  7110. "TP_PM_ProductionData.Barcode, " +
  7111. //"TP_PM_ProductionData.UserCode, " +
  7112. (se.DisPUserCode ? " TP_PM_ProductionData.userid, TP_PM_ProductionData.usercode, cu.usercode Cusercode, \n" : " null userid, null usercode, null Cusercode, \n") +
  7113. "pcp.ProcedureName, " +
  7114. "tp_mst_goodstype.goodstypename, " +
  7115. "TP_PM_ProductionData.Goodscode,TP_PM_ProductionData.GOODSNAME, " +
  7116. "TP_PM_ProductionData.GroutingUserCode, " +
  7117. "TP_PM_ProductionData.GroutingLineCode, " +
  7118. "TP_PM_ProductionData.GroutingMouldCode, " +
  7119. // 多次干补 重复条码
  7120. //"TP_PM_ProductionData.Createtime OverDate, " +
  7121. "temp.Kilnid, " +
  7122. "temp.Kilncode, " +
  7123. "temp.Kilncarcode, " +
  7124. "temp.Createtime, " +
  7125. "temp.DELIVERTIME DDate, " +
  7126. "temp.GROUTINGDATE GDate, " +
  7127. "temp.TestMouldFlag, " +
  7128. "replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName, " +
  7129. "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, " +
  7130. "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 " +
  7131. ",STAFF.STAFFNAME AS STAFFNAMEDETAIL " +
  7132. "from TP_PM_ProductionData " +
  7133. "inner join tp_mst_goods on tp_mst_goods.goodsid=TP_PM_ProductionData.Goodsid " +
  7134. "inner join tp_mst_goodstype on tp_mst_goodstype.goodstypeid=tp_mst_goods.goodstypeid " +
  7135. "inner join TP_MST_RptTProcedure on TP_MST_RptTProcedure.Procedureid=TP_PM_ProductionData.Procedureid " +
  7136. //"inner join TP_MST_RptProcedure on TP_MST_RptProcedure.Rptprocedureid=TP_MST_RptTProcedure.Rptprocedureid " +
  7137. " inner join tp_pc_procedure pcp on pcp.procedureid=TP_PM_ProductionData.Procedureid " +
  7138. "left join TP_MST_logo on TP_PM_ProductionData.logoid=TP_MST_logo.logoid " +
  7139. "left join TP_MST_User cu on TP_PM_ProductionData.createuserid=cu.userid " +
  7140. "inner join " +
  7141. "( " +
  7142. " select " +
  7143. " pd.Barcode, " +
  7144. " pd.Kilncode, " +
  7145. " pd.Kilncarcode, " +
  7146. " pd.Createtime, " +
  7147. " pd.KilnID " +
  7148. " ,gdd.DELIVERTIME " +
  7149. " ,pd.GROUTINGDATE " +
  7150. " ,pd.KilnCarID " +
  7151. " ,pd.KILNCARBATCHNO" +
  7152. " ,gdd.TestMouldFlag" +
  7153. " from TP_PM_ProductionData pd" +
  7154. //" inner join TP_MST_RptSProcedure on TP_MST_RptSProcedure.Procedureid=TP_PM_ProductionData.Procedureid " +
  7155. //if (se.DTimeStart.HasValue || se.DTimeEnd.HasValue)
  7156. //{
  7157. // selSql += " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid=TP_PM_ProductionData.groutingdailydetailid ";
  7158. //}
  7159. " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid=pd.groutingdailydetailid " +
  7160. // selSql +=
  7161. " where pd.Accountid=:AccountID ";
  7162. // 恒洁三车间特殊处理(质量相关)
  7163. // " and pd.Valueflag='1' " +
  7164. //// 数据重复 modify by chenxy begin
  7165. //" and TP_MST_RptSProcedure.Rptprocedureid=:rptProcedureId " +
  7166. //// 数据重复 modify by chenxy end
  7167. //" and TP_MST_RptSProcedure.Procedureid=:rptSprocedureId ";
  7168. //" AND ((:rptSprocedureId = 11 AND ((pd.procedureid = 11 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '0' AND pd.checkflag = '1'))) \n" +
  7169. //" OR (:rptSprocedureId = 58 AND ((pd.procedureid = 58 AND pd.valueflag = '1') OR (pd.procedureid =104 AND pd.isrefire = '6' AND pd.checkflag = '1'))) \n" +
  7170. //" OR (:rptSprocedureId not in (11,58) AND pd.valueflag = '1' AND pd.procedureid = :rptSprocedureId))\n";
  7171. if (se.OutTimeStart.HasValue)
  7172. {
  7173. selSql = selSql + " AND pd.CreateTime >=:OutTimeStart ";
  7174. parameters.Add(new OracleParameter(":OutTimeStart", OracleDbType.Date, se.OutTimeStart.Value, ParameterDirection.Input));
  7175. }
  7176. if (se.OutTimeEnd.HasValue)
  7177. {
  7178. selSql = selSql + " AND pd.CreateTime <= :OutTimeEnd ";
  7179. parameters.Add(new OracleParameter(":OutTimeEnd", OracleDbType.Date, se.OutTimeEnd.Value, ParameterDirection.Input));
  7180. }
  7181. if (se.GTimeStart.HasValue)
  7182. {
  7183. selSql = selSql + " AND pd.GROUTINGDATE >=:GTimeStart ";
  7184. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  7185. }
  7186. if (se.GTimeEnd.HasValue)
  7187. {
  7188. selSql = selSql + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  7189. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  7190. }
  7191. if (se.DTimeStart.HasValue)
  7192. {
  7193. selSql = selSql + " AND gdd.DELIVERTIME >=:DTimeStart ";
  7194. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart.Value, ParameterDirection.Input));
  7195. }
  7196. if (se.DTimeEnd.HasValue)
  7197. {
  7198. selSql = selSql + " AND gdd.DELIVERTIME <= :DTimeEnd ";
  7199. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd.Value, ParameterDirection.Input));
  7200. }
  7201. // 试验标识
  7202. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  7203. {
  7204. selSql += " AND gdd.TestMouldFlag = :TestMouldFlag ";
  7205. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  7206. }
  7207. if (se.Specialrepairflag)
  7208. {
  7209. selSql = selSql +
  7210. ") temp " +
  7211. "on TP_PM_ProductionData.Barcode=temp.barcode " +
  7212. " " +
  7213. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 begin
  7214. " and TP_PM_ProductionData.createtime <= temp.createtime\n" +
  7215. " and (TP_PM_ProductionData.MODELTYPE = 8 or (not exists (SELECT 1\n" +
  7216. " FROM TP_PM_ProductionData pp\n" +
  7217. " WHERE pp.barcode = temp.barcode and pp.createtime > TP_PM_ProductionData.createtime\n" +
  7218. " AND pp.createtime < temp.createtime\n" +
  7219. " AND pp.procedureid = TP_PM_ProductionData.Procedureid)))\n" +
  7220. // fenglinyong add 员工姓名 2022-08-26
  7221. " LEFT JOIN (\n" +
  7222. " SELECT\n" +
  7223. " D.CLASSESSETTINGID,\n" +
  7224. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME\n" +
  7225. " FROM\n" +
  7226. " (\n" +
  7227. " SELECT\n" +
  7228. " CD.CLASSESSETTINGID,\n" +
  7229. " HR.STAFFNAME\n" +
  7230. " FROM\n" +
  7231. " TP_PC_CLASSESDETAIL CD\n" +
  7232. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID\n" +
  7233. " ) D\n" +
  7234. " GROUP BY\n" +
  7235. " D.CLASSESSETTINGID\n" +
  7236. " ) STAFF ON TP_PM_ProductionData.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n" +
  7237. // fenglinyong add 员工姓名 2022-08-26
  7238. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 end
  7239. "where " + // 公坯、干补不算交坯工序的质量。
  7240. //" 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" +
  7241. // modify wangx 2015-12-3
  7242. " ((TP_PM_ProductionData.modeltype <> 5) or (TP_PM_ProductionData.modeltype = 5 and TP_PM_ProductionData.SpecialRepairFlag = '0')) \n" +
  7243. " and TP_PM_ProductionData.Valueflag='1' " +
  7244. //" and TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId ";
  7245. " and TP_MST_RptTProcedure.Rptprocedureid=:rptProcedureId ";
  7246. parameters.Add(new OracleParameter(":rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  7247. }
  7248. else
  7249. {
  7250. selSql = selSql +
  7251. ") temp " +
  7252. "on TP_PM_ProductionData.Barcode=temp.barcode " +
  7253. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 begin
  7254. " and TP_PM_ProductionData.createtime <= temp.createtime\n" +
  7255. " and (TP_PM_ProductionData.MODELTYPE = 8 or (not exists (SELECT 1\n" +
  7256. " FROM TP_PM_ProductionData pp\n" +
  7257. " WHERE pp.barcode = temp.barcode and pp.createtime > TP_PM_ProductionData.createtime\n" +
  7258. " AND pp.createtime < temp.createtime\n" +
  7259. " AND pp.procedureid = TP_PM_ProductionData.Procedureid)))\n" +
  7260. // fenglinyong add 员工姓名 2022-08-26
  7261. " LEFT JOIN (\n" +
  7262. " SELECT\n" +
  7263. " D.CLASSESSETTINGID,\n" +
  7264. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME\n" +
  7265. " FROM\n" +
  7266. " (\n" +
  7267. " SELECT\n" +
  7268. " CD.CLASSESSETTINGID,\n" +
  7269. " HR.STAFFNAME\n" +
  7270. " FROM\n" +
  7271. " TP_PC_CLASSESDETAIL CD\n" +
  7272. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID\n" +
  7273. " ) D\n" +
  7274. " GROUP BY\n" +
  7275. " D.CLASSESSETTINGID\n" +
  7276. " ) STAFF ON TP_PM_ProductionData.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n" +
  7277. // fenglinyong add 员工姓名 2022-08-26
  7278. // 重烧交接等工序重复统计的问题 by chenxy 2016-10-08 end
  7279. //" where TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId " +
  7280. //" and TP_PM_ProductionData.Valueflag='1' ";
  7281. " where TP_PM_ProductionData.Valueflag='1' " +
  7282. //" and TP_MST_RptProcedure.Rptprocedureid=:rptProcedureId ";
  7283. " and TP_MST_RptTProcedure.Rptprocedureid=:rptProcedureId ";
  7284. parameters.Add(new OracleParameter(":rptProcedureId", OracleDbType.Int32, se.RptProcedureID, ParameterDirection.Input));
  7285. }
  7286. if (se.CreateTimeStart.HasValue)
  7287. {
  7288. selSql = selSql + " AND TP_PM_ProductionData.CreateTime >=:CreateTimeStart ";
  7289. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7290. }
  7291. if (se.CreateTimeEnd.HasValue)
  7292. {
  7293. selSql = selSql + " AND TP_PM_ProductionData.CreateTime <= :CreateTimeEnd ";
  7294. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7295. }
  7296. if (!string.IsNullOrEmpty(se.GoodsIDS))
  7297. {
  7298. selSql = selSql + " AND instr(',' || :GoodsIDS ||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  7299. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  7300. }
  7301. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  7302. {
  7303. //selSql = selSql + " AND instr(',' || :GoodsTypeIDS ||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1 ";
  7304. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1 ";
  7305. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  7306. }
  7307. if (se.ProductionLineID.HasValue)
  7308. {
  7309. selSql = selSql + " AND instr(',' || :productionLineId ||',',','||TP_PM_ProductionData.ProductionLineId||',')>0 ";
  7310. parameters.Add(new OracleParameter(":productionLineId", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  7311. }
  7312. if (!string.IsNullOrEmpty(se.RptTProcedureIDS))
  7313. {
  7314. selSql = selSql + " AND instr(',' || :rptTprocedureIDS ||',',','||TP_MST_RptTProcedure.ProcedureId||',')>0 ";
  7315. parameters.Add(new OracleParameter(":rptTprocedureIDS", OracleDbType.NVarchar2, se.RptTProcedureIDS, ParameterDirection.Input));
  7316. }
  7317. if (!string.IsNullOrEmpty(se.UserIDS))
  7318. {
  7319. selSql = selSql + " AND instr(',' || :UserIDS ||',',','||TP_PM_ProductionData.Userid||',')>0 ";
  7320. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7321. }
  7322. if (se.KilnID.HasValue)
  7323. {
  7324. selSql = selSql + " AND temp.KilnID=:KilnID ";
  7325. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7326. }
  7327. if (!string.IsNullOrWhiteSpace(se.GroutingUserCode))
  7328. {
  7329. selSql = selSql + " AND instr(TP_PM_ProductionData.GroutingUserCode, :GroutingUserCode) > 0";
  7330. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  7331. }
  7332. if (!string.IsNullOrWhiteSpace(se.Kcode))
  7333. {
  7334. 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";
  7335. parameters.Add(new OracleParameter(":Kcode", OracleDbType.Varchar2, se.Kcode.PadLeft(3, '0'), ParameterDirection.Input));
  7336. }
  7337. if (!string.IsNullOrWhiteSpace(se.Fyear))
  7338. {
  7339. 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";
  7340. parameters.Add(new OracleParameter(":Fyear", OracleDbType.Varchar2, se.Fyear, ParameterDirection.Input));
  7341. }
  7342. // fenglinyong add 添加员工姓名 2022-08-29
  7343. if (!string.IsNullOrEmpty(se.StaffName))
  7344. {
  7345. selSql = selSql + " AND instr(STAFF.STAFFNAME, :STAFFNAME) > 0";
  7346. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  7347. }
  7348. // fenglinyong add 添加员工姓名 2022-08-29
  7349. selSql = selSql + " order by pcp.Procedurename,temp.Kilncode,temp.Kilncarcode, " +
  7350. (se.DisPUserCode ? " TP_PM_ProductionData.usercode, \n" : "") +
  7351. " TP_PM_ProductionData.Goodscode,TP_PM_ProductionData.Barcode ";
  7352. return selSql;
  7353. }
  7354. /// <summary>
  7355. /// 取得RPT030104_1画面(窑车产量汇总表)的窑炉汇总信息查询数据
  7356. /// </summary>
  7357. /// <param name="user">登录用户信息</param>
  7358. /// <param name="se">查询条件</param>
  7359. /// <returns>查询结果</returns>
  7360. public static ServiceResultEntity GetRPT030104SData(SUserInfo user, RPT030104_SE se)
  7361. {
  7362. IDBConnection conn = null;
  7363. try
  7364. {
  7365. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7366. List<OracleParameter> parameters = new List<OracleParameter>();
  7367. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030104SSQL(user, se, ref parameters));
  7368. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  7369. ServiceResultEntity sre = new ServiceResultEntity();
  7370. if (data == null || data.Rows.Count == 0)
  7371. {
  7372. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7373. return sre;
  7374. }
  7375. sre.Data = new DataSet();
  7376. sre.Data.Tables.Add(data);
  7377. return sre;
  7378. }
  7379. catch (Exception ex)
  7380. {
  7381. throw ex;
  7382. }
  7383. finally
  7384. {
  7385. if (conn != null &&
  7386. conn.ConnState == ConnectionState.Open)
  7387. {
  7388. conn.Close();
  7389. }
  7390. }
  7391. }
  7392. /// <summary>
  7393. /// 获取RPT030104_1画面(窑车产量汇总表)的窑炉汇总查询sql
  7394. /// </summary>
  7395. /// <returns>sql</returns>
  7396. private static string GetRPT030104SSQL(SUserInfo user, RPT030104_SE se, ref List<OracleParameter> parameters)
  7397. {
  7398. string selSql = "";
  7399. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7400. parameters.Add(new OracleParameter(":ProcedureModelTypeID", OracleDbType.Int32, se.ProcedureModelTypeID, ParameterDirection.Input));
  7401. selSql = "select " +
  7402. "decode(Createtime,'小计',decode(Proceduremodeltypename,'总计','总计','--'),Proceduremodeltypename) Proceduremodeltypename, " +
  7403. "decode(usercode,'合计',decode(Kilncode,'--','--','合计'),decode(createtime,'小计','--',Kilncode)) Kilncode, " +
  7404. "decode(Createtime,'小计',decode(usercode,'合计','--','小计'),Usercode) Usercode, " +
  7405. "decode(Kilncarcode,'--','--',Createtime) Createtime, " +
  7406. "Kilncarcode, " +
  7407. "Remarks, " +
  7408. "KilnCarCount " +
  7409. " from " +
  7410. " ( " +
  7411. " select " +
  7412. " decode(grouping(TP_SYS_ProcedureModelType.Proceduremodeltypename),1,'总计',TP_SYS_ProcedureModelType.Proceduremodeltypename) Proceduremodeltypename, " +
  7413. " decode(grouping(TP_MST_Kiln.Kilncode),1,'--',TP_MST_Kiln.Kilncode) Kilncode, " +
  7414. " decode(grouping(TP_PM_KilnCarData.Usercode),1,'合计',TP_PM_KilnCarData.Usercode) Usercode, " +
  7415. " decode(grouping(TP_MST_KilnCar.Kilncarcode),1,'--',TP_MST_KilnCar.Kilncarcode) Kilncarcode, " +
  7416. " decode(grouping(TP_PM_KilnCarData.Remarks),1,'--',TP_PM_KilnCarData.Remarks) Remarks, " +
  7417. " decode(grouping(TP_PM_KilnCarData.Createtime),1,'小计',TP_PM_KilnCarData.Createtime) Createtime, " +
  7418. " count(TP_PM_KilnCarData.Kilncarid) as KilnCarCount " +
  7419. " from " +
  7420. " ( " +
  7421. " select " +
  7422. " to_char(TP_PM_KilnCarData.Createtime,'yyyy-mm-dd hh24:mi') Createtime, " +
  7423. " TP_PM_KilnCarData.Modeltype, " +
  7424. " TP_PM_KilnCarData.Kilncarid, " +
  7425. " TP_PM_KilnCarData.Kilnid, " +
  7426. " TP_PM_KilnCarData.Userid, " +
  7427. " TP_PM_KilnCarData.Remarks, " +
  7428. " TP_PM_KilnCarData.Accountid, " +
  7429. " TP_PM_KilnCarData.Usercode " +
  7430. " from TP_PM_KilnCarData " +
  7431. " left join TP_MST_KilnCar kc on kc.kilncarid = TP_PM_KilnCarData.Kilncarid " +
  7432. " where TP_PM_KilnCarData.Accountid=:AccountID " +
  7433. " and TP_PM_KilnCarData.Valueflag=1 " +
  7434. " and TP_PM_KilnCarData.Modeltype=:ProcedureModelTypeID ";
  7435. if (se.KilnID.HasValue)
  7436. {
  7437. selSql = selSql + " AND TP_PM_KilnCarData.KilnID=:KilnID ";
  7438. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7439. }
  7440. //if (se.KilnCarID.HasValue)
  7441. //{
  7442. // selSql = selSql + " AND TP_PM_KilnCarData.KilnCarID=:KilnCarID";
  7443. // parameters.Add(new OracleParameter(":KilnCarID", OracleDbType.Int32, se.KilnCarID, ParameterDirection.Input));
  7444. //}
  7445. if (!string.IsNullOrEmpty(se.KilnCarCode))
  7446. {
  7447. selSql = selSql + " AND instr(kc.KilnCarCode, :KilnCarCode ) > 0";
  7448. parameters.Add(new OracleParameter(":KilnCarCode", OracleDbType.NVarchar2, se.KilnCarCode, ParameterDirection.Input));
  7449. }
  7450. if (se.KilnCarNumBegin.HasValue && se.KilnCarNumEnd.HasValue && se.KilnCarNumBegin.Value > se.KilnCarNumEnd.Value)
  7451. {
  7452. selSql = selSql + " AND (kc.KilnCarNum >= :KilnCarNumBegin or kc.KilnCarNum <= :KilnCarNumEnd)";
  7453. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7454. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7455. }
  7456. else
  7457. {
  7458. if (se.KilnCarNumBegin.HasValue)
  7459. {
  7460. selSql = selSql + " AND kc.KilnCarNum >= :KilnCarNumBegin ";
  7461. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7462. }
  7463. if (se.KilnCarNumEnd.HasValue)
  7464. {
  7465. selSql = selSql + " AND kc.KilnCarNum <= :KilnCarNumEnd ";
  7466. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7467. }
  7468. }
  7469. if (se.CreateTimeStart.HasValue)
  7470. {
  7471. selSql = selSql + " AND TP_PM_KilnCarData.CreateTime>=:CreateTimeStart ";
  7472. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7473. }
  7474. if (se.CreateTimeEnd.HasValue)
  7475. {
  7476. selSql = selSql + " AND TP_PM_KilnCarData.CreateTime<= :CreateTimeEnd";
  7477. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7478. }
  7479. selSql = selSql +
  7480. " ) TP_PM_KilnCarData " +
  7481. "inner join TP_SYS_ProcedureModelType on TP_SYS_ProcedureModelType.Proceduremodeltypeid=TP_PM_KilnCarData.Modeltype " +
  7482. "inner join TP_MST_KilnCar on TP_MST_KilnCar.Kilncarid=TP_PM_KilnCarData.Kilncarid " +
  7483. "inner join TP_MST_Kiln on TP_MST_Kiln.Kilnid=TP_PM_KilnCarData.Kilnid " +
  7484. "where 1=1";
  7485. if (!string.IsNullOrEmpty(se.UserIDS))
  7486. {
  7487. selSql = selSql + " AND instr(','||:UserIDS||',',','||TP_PM_KilnCarData.UserID||',')>0";
  7488. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7489. }
  7490. selSql = selSql + "group by rollup( " +
  7491. " TP_SYS_ProcedureModelType.Proceduremodeltypename, " +
  7492. " TP_MST_Kiln.Kilncode, " +
  7493. " TP_PM_KilnCarData.Usercode, " +
  7494. " TP_PM_KilnCarData.Createtime, " +
  7495. " TP_PM_KilnCarData.Remarks, " +
  7496. " TP_MST_KilnCar.Kilncarcode " +
  7497. " ) " +
  7498. " ) temp " +
  7499. " where (Kilncarcode !='--' ) " +
  7500. " or " +
  7501. " (Remarks='--' and Usercode='合计' and kilncode!='--') " +
  7502. " or (Remarks='--' and Proceduremodeltypename='总计') " +
  7503. " or (Remarks='--' and createtime='小计' and kilncode!='--')";
  7504. return selSql;
  7505. }
  7506. /// <summary>
  7507. /// 取得RPT030104_1画面(窑车产量汇总表)的窑车产量汇总信息查询数据
  7508. /// </summary>
  7509. /// <param name="user">登录用户信息</param>
  7510. /// <param name="se">查询条件</param>
  7511. /// <returns>查询结果</returns>
  7512. public static ServiceResultEntity GetRPT030104IData(SUserInfo user, RPT030104_SE se)
  7513. {
  7514. IDBConnection conn = null;
  7515. try
  7516. {
  7517. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7518. List<OracleParameter> parameters = new List<OracleParameter>();
  7519. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030104ISQL(user, se, ref parameters));
  7520. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  7521. ServiceResultEntity sre = new ServiceResultEntity();
  7522. if (data == null || data.Rows.Count == 0)
  7523. {
  7524. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7525. return sre;
  7526. }
  7527. sre.Data = new DataSet();
  7528. sre.Data.Tables.Add(data);
  7529. return sre;
  7530. }
  7531. catch (Exception ex)
  7532. {
  7533. throw ex;
  7534. }
  7535. finally
  7536. {
  7537. if (conn != null &&
  7538. conn.ConnState == ConnectionState.Open)
  7539. {
  7540. conn.Close();
  7541. }
  7542. }
  7543. }
  7544. /// <summary>
  7545. /// 获取查询sql
  7546. /// </summary>
  7547. /// <returns>sql</returns>
  7548. private static string GetRPT030104ISQL(SUserInfo user, RPT030104_SE se, ref List<OracleParameter> parameters)
  7549. {
  7550. string selSql = "";
  7551. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7552. parameters.Add(new OracleParameter(":ProcedureModelTypeID", OracleDbType.Int32, se.ProcedureModelTypeID, ParameterDirection.Input));
  7553. selSql = selSql +
  7554. "SELECT " +
  7555. "decode(createtime,'小计',decode(proceduremodeltypename,'总计','总计','--'),proceduremodeltypename) proceduremodeltypename, " +
  7556. "decode(createtime,'小计','--',kilncode) kilncode, " +
  7557. "decode(kilncarcode,'合计',decode(usercode,'--','--','合计'),decode(createtime,'小计','--',usercode)) usercode, " +
  7558. "decode(createtime,'小计',decode(kilncarcode,'合计','--','小计'),kilncarcode) kilncarcode, " +
  7559. "decode(goodscode,'--','--',createtime) createtime, " +
  7560. "GOODSTYPENAME, " +
  7561. "Goodscode, " +
  7562. "GOODSSPECIFICATION, " +
  7563. "GoodsCount " +
  7564. "from " +
  7565. "( " +
  7566. " SELECT " +
  7567. " decode(grouping(TP_SYS_ProcedureModelType.Proceduremodeltypename),1,'总计',TP_SYS_ProcedureModelType.Proceduremodeltypename) Proceduremodeltypename, " +
  7568. " decode(grouping(TP_PM_ProductionData.Kilncode),1,'--',TP_PM_ProductionData.Kilncode) Kilncode, " +
  7569. " decode(grouping(TP_PM_ProductionData.Usercode),1,'--',TP_PM_ProductionData.Usercode) Usercode, " +
  7570. " decode(grouping(TP_MST_KilnCar.Kilncarcode),1,'合计',TP_MST_KilnCar.Kilncarcode) Kilncarcode, " +
  7571. " decode(grouping(TP_PM_ProductionData.CreateTime),1,'小计',TP_PM_ProductionData.CreateTime) CreateTime, " +
  7572. " decode(grouping(TP_MST_Goods.Goodscode),1,'--',TP_MST_Goods.Goodscode) Goodscode, " +
  7573. " decode(grouping(TP_MST_Goods.GOODSSPECIFICATION),1,'--',TP_MST_Goods.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  7574. " decode(grouping(TP_MST_GOODSTYPE.GOODSTYPENAME),1,'--',TP_MST_GOODSTYPE.GOODSTYPENAME) GOODSTYPENAME, " +
  7575. " count(TP_MST_Goods.Goodscode) as GoodsCount " +
  7576. " from " +
  7577. " ( " +
  7578. " SELECT TP_PM_ProductionData.Modeltype, " +
  7579. " TP_PM_ProductionData.Goodsid, " +
  7580. " TP_PM_ProductionData.KilnCarID, " +
  7581. " TP_PM_ProductionData.Kilncode, " +
  7582. //" TP_PM_ProductionData.Usercode, " +
  7583. " kcd.Usercode, " +
  7584. " to_char(kcd.CreateTime,'yyyy-mm-dd hh24:mi') CreateTime " +
  7585. " from TP_PM_ProductionData " +
  7586. " left join TP_PM_KilnCarData kcd on kcd.KilnCarBatchNo = TP_PM_ProductionData.KilnCarBatchNo and kcd.ProcedureID = TP_PM_ProductionData.ProcedureID " +
  7587. " where " +
  7588. " TP_PM_ProductionData.Accountid=:AccountID " +
  7589. " and TP_PM_ProductionData.Valueflag=1 " +
  7590. " and TP_PM_ProductionData.Modeltype= :ProcedureModelTypeID ";
  7591. if (se.KilnID.HasValue)
  7592. {
  7593. selSql = selSql + " AND TP_PM_ProductionData.KilnID=:KilnID ";
  7594. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7595. }
  7596. //if (se.KilnCarID.HasValue)
  7597. //{
  7598. // selSql = selSql + " AND TP_PM_ProductionData.KilnCarID=:KilnCarID";
  7599. // parameters.Add(new OracleParameter(":KilnCarID", OracleDbType.Int32, se.KilnCarID, ParameterDirection.Input));
  7600. //}
  7601. if (!string.IsNullOrEmpty(se.GoodsIDS))
  7602. {
  7603. selSql = selSql + " AND instr(','||:goodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  7604. parameters.Add(new OracleParameter(":goodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  7605. }
  7606. if (!string.IsNullOrEmpty(se.UserIDS))
  7607. {
  7608. //selSql = selSql + " AND instr(','||:UserIDS||',',','||TP_PM_ProductionData.UserID||',')>0 ";
  7609. selSql = selSql + " AND instr(','||:UserIDS||',',','||kcd.UserID||',')>0 ";
  7610. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7611. }
  7612. if (se.CreateTimeStart.HasValue)
  7613. {
  7614. //selSql = selSql + " AND TP_PM_ProductionData.CreateTime>= :CreateTimeStart ";
  7615. selSql = selSql + " AND kcd.CreateTime>= :CreateTimeStart ";
  7616. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7617. }
  7618. if (se.CreateTimeEnd.HasValue)
  7619. {
  7620. //selSql = selSql + " AND TP_PM_ProductionData.CreateTime<= :CreateTimeEnd ";
  7621. selSql = selSql + " AND kcd.CreateTime<= :CreateTimeEnd ";
  7622. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7623. }
  7624. selSql = selSql +
  7625. " ) TP_PM_ProductionData " +
  7626. " inner join TP_SYS_ProcedureModelType on TP_SYS_ProcedureModelType.Proceduremodeltypeid=TP_PM_ProductionData.Modeltype " +
  7627. " inner join TP_MST_Goods on TP_MST_Goods.Goodsid=TP_PM_ProductionData.Goodsid " +
  7628. " inner join TP_MST_GOODSTYPE on TP_MST_GOODSTYPE.GOODSTYPEID=TP_MST_Goods.Goodstypeid " +
  7629. " inner join TP_MST_KilnCar on TP_MST_KilnCar.Kilncarid=TP_PM_ProductionData.KilnCarID " +
  7630. " where 1=1 ";
  7631. if (!string.IsNullOrEmpty(se.KilnCarCode))
  7632. {
  7633. selSql = selSql + " AND instr(TP_MST_KilnCar.KilnCarCode, :KilnCarCode ) > 0";
  7634. parameters.Add(new OracleParameter(":KilnCarCode", OracleDbType.NVarchar2, se.KilnCarCode, ParameterDirection.Input));
  7635. }
  7636. if (se.KilnCarNumBegin.HasValue && se.KilnCarNumEnd.HasValue && se.KilnCarNumBegin.Value > se.KilnCarNumEnd.Value)
  7637. {
  7638. selSql = selSql + " AND (TP_MST_KilnCar.KilnCarNum >= :KilnCarNumBegin or TP_MST_KilnCar.KilnCarNum <= :KilnCarNumEnd)";
  7639. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7640. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7641. }
  7642. else
  7643. {
  7644. if (se.KilnCarNumBegin.HasValue)
  7645. {
  7646. selSql = selSql + " AND TP_MST_KilnCar.KilnCarNum >= :KilnCarNumBegin ";
  7647. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7648. }
  7649. if (se.KilnCarNumEnd.HasValue)
  7650. {
  7651. selSql = selSql + " AND TP_MST_KilnCar.KilnCarNum <= :KilnCarNumEnd ";
  7652. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7653. }
  7654. }
  7655. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  7656. {
  7657. //selSql = selSql + " AND instr(','||:goodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1";
  7658. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:goodsTypeIDS)=1";
  7659. parameters.Add(new OracleParameter(":goodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  7660. }
  7661. selSql = selSql +
  7662. " group by rollup( " +
  7663. " TP_SYS_ProcedureModelType.Proceduremodeltypename, " +
  7664. " TP_PM_ProductionData.Kilncode, " +
  7665. " TP_PM_ProductionData.Usercode, " +
  7666. " TP_MST_KilnCar.Kilncarcode, " +
  7667. " TP_PM_ProductionData.CreateTime, " +
  7668. " TP_MST_GOODSTYPE.GOODSTYPENAME, " +
  7669. " TP_MST_Goods.GOODSSPECIFICATION, " +
  7670. " TP_MST_Goods.Goodscode " +
  7671. " ) " +
  7672. ") temp " +
  7673. "where 1=1 and " +
  7674. " (Goodscode !='--' ) or " +
  7675. " (Goodscode='--' and Usercode='合计' and kilncode!='--') or " +
  7676. " (Goodscode='--' and Proceduremodeltypename='总计') or " +
  7677. " (Goodscode='--' and createtime='小计' and usercode!='--')";
  7678. return selSql;
  7679. }
  7680. /// <summary>
  7681. /// 取得RPT030104_1画面(窑车产量汇总表)的窑车产量明细信息查询数据
  7682. /// </summary>
  7683. /// <param name="user">登录用户信息</param>
  7684. /// <param name="se">查询条件</param>
  7685. /// <returns>查询结果</returns>
  7686. public static ServiceResultEntity GetRPT030104UData(SUserInfo user, RPT030104_SE se)
  7687. {
  7688. IDBConnection conn = null;
  7689. try
  7690. {
  7691. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7692. List<OracleParameter> parameters = new List<OracleParameter>();
  7693. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030104USQL(user, se, ref parameters));
  7694. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  7695. ServiceResultEntity sre = new ServiceResultEntity();
  7696. if (data == null || data.Rows.Count == 0)
  7697. {
  7698. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7699. return sre;
  7700. }
  7701. sre.Data = new DataSet();
  7702. sre.Data.Tables.Add(data);
  7703. return sre;
  7704. }
  7705. catch (Exception ex)
  7706. {
  7707. throw ex;
  7708. }
  7709. finally
  7710. {
  7711. if (conn != null &&
  7712. conn.ConnState == ConnectionState.Open)
  7713. {
  7714. conn.Close();
  7715. }
  7716. }
  7717. }
  7718. /// <summary>
  7719. /// 获取RPT030104_1画面(窑车产量汇总表)的窑车产量明细查询sql
  7720. /// </summary>
  7721. /// <returns>sql</returns>
  7722. private static string GetRPT030104USQL(SUserInfo user, RPT030104_SE se, ref List<OracleParameter> parameters)
  7723. {
  7724. string selSql = "";
  7725. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7726. parameters.Add(new OracleParameter(":ProcedureModelTypeID", OracleDbType.Int32, se.ProcedureModelTypeID, ParameterDirection.Input));
  7727. selSql = selSql +
  7728. "select " +
  7729. "decode(createtime,'小计',decode(proceduremodeltypename,'总计','总计','--'),proceduremodeltypename) proceduremodeltypename, " +
  7730. "decode(createtime,'小计','--',kilncode) kilncode, " +
  7731. "decode(kilncarcode,'合计',decode(usercode,'--','--','合计'),decode(createtime,'小计','--',usercode)) usercode, " +
  7732. "decode(createtime,'小计',decode(kilncarcode,'合计','--','小计'),kilncarcode) kilncarcode, " +
  7733. "decode(goodscode,'--','--',createtime) createtime, " +
  7734. "GOODSTYPENAME, " +
  7735. "Goodscode, " +
  7736. "GOODSSPECIFICATION, " +
  7737. "Barcode, " +
  7738. "BarcodeCount, " +
  7739. "LogoCodeName " +
  7740. "from " +
  7741. " ( " +
  7742. " select " +
  7743. " decode(grouping(TP_SYS_ProcedureModelType.Proceduremodeltypename),1,'总计',TP_SYS_ProcedureModelType.Proceduremodeltypename) Proceduremodeltypename, " +
  7744. " decode(grouping(TP_PM_ProductionData.Kilncode),1,'--',TP_PM_ProductionData.Kilncode) Kilncode, " +
  7745. " decode(grouping(TP_PM_ProductionData.Usercode),1,'--',TP_PM_ProductionData.Usercode) Usercode, " +
  7746. " decode(grouping(TP_MST_KilnCar.Kilncarcode),1,'合计',TP_MST_KilnCar.Kilncarcode) Kilncarcode, " +
  7747. " decode(grouping(TP_PM_ProductionData.CreateTime),1,'小计',TP_PM_ProductionData.CreateTime) CreateTime, " +
  7748. " decode(grouping(TP_MST_GOODSTYPE.GOODSTYPENAME),1,'--',TP_MST_GOODSTYPE.GOODSTYPENAME) GOODSTYPENAME, " +
  7749. " decode(grouping(TP_MST_Goods.Goodscode),1,'--',TP_MST_Goods.Goodscode) Goodscode, " +
  7750. " decode(grouping(TP_MST_Goods.GOODSSPECIFICATION),1,'--',TP_MST_Goods.GOODSSPECIFICATION) GOODSSPECIFICATION, " +
  7751. " decode(grouping(TP_PM_ProductionData.Barcode),1,'--',TP_PM_ProductionData.Barcode) Barcode, " +
  7752. " decode(grouping(TP_PM_ProductionData.LogoCodeName),1,'--',TP_PM_ProductionData.LogoCodeName) LogoCodeName, " +
  7753. " count(TP_PM_ProductionData.Barcode) as BarcodeCount " +
  7754. " from " +
  7755. " ( " +
  7756. " select TP_PM_ProductionData.logoid," +
  7757. " TP_PM_ProductionData.Modeltype, " +
  7758. " TP_PM_ProductionData.Goodsid, " +
  7759. " TP_PM_ProductionData.KilnCarID, " +
  7760. " TP_PM_ProductionData.Kilncode, " +
  7761. " TP_PM_ProductionData.Barcode, " +
  7762. " TP_PM_ProductionData.Usercode, " +
  7763. " replace((Logoname||'['||Logocode||']'),'[]','') as LogoCodeName, " +
  7764. " to_char(TP_PM_ProductionData.CreateTime,'yyyy-mm-dd hh24:mi') CreateTime " +
  7765. " from TP_PM_ProductionData inner join TP_MST_Logo on TP_PM_ProductionData.logoid=TP_MST_Logo.logoid" +
  7766. " left join TP_PM_KilnCarData kcd on kcd.KilnCarBatchNo = TP_PM_ProductionData.KilnCarBatchNo and kcd.ProcedureID = TP_PM_ProductionData.ProcedureID " +
  7767. " where " +
  7768. " TP_PM_ProductionData.Accountid=:AccountID " +
  7769. " and TP_PM_ProductionData.Valueflag=1 " +
  7770. " and TP_PM_ProductionData.Modeltype=:ProcedureModelTypeID ";
  7771. if (se.KilnID.HasValue)
  7772. {
  7773. selSql = selSql + " AND TP_PM_ProductionData.KilnID=:KilnID ";
  7774. parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
  7775. }
  7776. //if (se.KilnCarID.HasValue)
  7777. //{
  7778. // selSql = selSql + " AND TP_PM_ProductionData.KilnCarID=:KilnCarID ";
  7779. // parameters.Add(new OracleParameter(":KilnCarID", OracleDbType.Int32, se.KilnCarID, ParameterDirection.Input));
  7780. //}
  7781. if (!string.IsNullOrEmpty(se.GoodsIDS))
  7782. {
  7783. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_ProductionData.GoodsId||',')>0 ";
  7784. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  7785. }
  7786. if (!string.IsNullOrEmpty(se.UserIDS))
  7787. {
  7788. selSql = selSql + " AND instr(','||:UserIDS||',',','||kcd.UserID||',')>0 ";
  7789. parameters.Add(new OracleParameter(":UserIDS", OracleDbType.NVarchar2, se.UserIDS, ParameterDirection.Input));
  7790. }
  7791. if (se.CreateTimeStart.HasValue)
  7792. {
  7793. selSql = selSql + " AND kcd.CreateTime>= :CreateTimeStart ";
  7794. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  7795. }
  7796. if (se.CreateTimeEnd.HasValue)
  7797. {
  7798. selSql = selSql + " AND kcd.CreateTime<= :CreateTimeEnd ";
  7799. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  7800. }
  7801. selSql = selSql +
  7802. " ) TP_PM_ProductionData " +
  7803. " inner join TP_SYS_ProcedureModelType on TP_SYS_ProcedureModelType.Proceduremodeltypeid=TP_PM_ProductionData.Modeltype " +
  7804. " inner join TP_MST_Goods on TP_MST_Goods.Goodsid=TP_PM_ProductionData.Goodsid " +
  7805. " inner join TP_MST_GOODSTYPE on TP_MST_GOODSTYPE.GOODSTYPEID=TP_MST_Goods.Goodstypeid " +
  7806. " inner join TP_MST_KilnCar on TP_MST_KilnCar.Kilncarid=TP_PM_ProductionData.KilnCarID " +
  7807. " where 1=1";
  7808. if (!string.IsNullOrEmpty(se.KilnCarCode))
  7809. {
  7810. selSql = selSql + " AND instr(TP_MST_KilnCar.KilnCarCode, :KilnCarCode ) > 0";
  7811. parameters.Add(new OracleParameter(":KilnCarCode", OracleDbType.NVarchar2, se.KilnCarCode, ParameterDirection.Input));
  7812. }
  7813. if (se.KilnCarNumBegin.HasValue && se.KilnCarNumEnd.HasValue && se.KilnCarNumBegin.Value > se.KilnCarNumEnd.Value)
  7814. {
  7815. selSql = selSql + " AND (TP_MST_KilnCar.KilnCarNum >= :KilnCarNumBegin or TP_MST_KilnCar.KilnCarNum <= :KilnCarNumEnd)";
  7816. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7817. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7818. }
  7819. else
  7820. {
  7821. if (se.KilnCarNumBegin.HasValue)
  7822. {
  7823. selSql = selSql + " AND TP_MST_KilnCar.KilnCarNum >= :KilnCarNumBegin ";
  7824. parameters.Add(new OracleParameter(":KilnCarNumBegin", OracleDbType.Int32, se.KilnCarNumBegin, ParameterDirection.Input));
  7825. }
  7826. if (se.KilnCarNumEnd.HasValue)
  7827. {
  7828. selSql = selSql + " AND TP_MST_KilnCar.KilnCarNum <= :KilnCarNumEnd ";
  7829. parameters.Add(new OracleParameter(":KilnCarNumEnd", OracleDbType.Int32, se.KilnCarNumEnd, ParameterDirection.Input));
  7830. }
  7831. }
  7832. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  7833. {
  7834. //selSql = selSql + " AND instr(','||:goodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1 ";
  7835. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:goodsTypeIDS)=1 ";
  7836. parameters.Add(new OracleParameter(":goodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  7837. }
  7838. selSql = selSql +
  7839. " group by rollup( " +
  7840. " TP_SYS_ProcedureModelType.Proceduremodeltypename, " +
  7841. " TP_PM_ProductionData.Kilncode, " +
  7842. " TP_PM_ProductionData.Usercode, " +
  7843. " TP_MST_KilnCar.Kilncarcode, " +
  7844. " TP_PM_ProductionData.CreateTime, " +
  7845. " TP_MST_GOODSTYPE.GOODSTYPENAME, " +
  7846. " TP_MST_Goods.Goodscode, " +
  7847. " TP_MST_Goods.GOODSSPECIFICATION, " +
  7848. " TP_PM_ProductionData.Barcode, " +
  7849. " TP_PM_ProductionData.LogoCodeName " +
  7850. " ) " +
  7851. " ) temp " +
  7852. "where 1=1 and " +
  7853. "(Barcode !='--' and LogoCodeName!='--') or " +
  7854. "(Barcode='--' and Usercode='合计' and kilncode!='--') or " +
  7855. "(Barcode='--' and Proceduremodeltypename='总计' ) or " +
  7856. "(Barcode='--' and createtime='小计' and temp.usercode!='--')";
  7857. return selSql;
  7858. }
  7859. #region 工序交接数量汇总表
  7860. /// <summary>
  7861. /// 取得RPT030107画面(工序交接数量汇总表)的汇总信息查询数据
  7862. /// </summary>
  7863. /// <param name="user">登录用户信息</param>
  7864. /// <param name="se">查询条件</param>
  7865. /// <returns>查询结果</returns>
  7866. public static ServiceResultEntity GetRPT030107SData(SUserInfo user, RPT030107_SE se)
  7867. {
  7868. IDBConnection conn = null;
  7869. try
  7870. {
  7871. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  7872. List<OracleParameter> parameters = new List<OracleParameter>();
  7873. string sql = ReportModuleLogic.GetRPT030107SSQL(user, se, ref parameters);
  7874. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  7875. ServiceResultEntity sre = new ServiceResultEntity();
  7876. if (data == null || data.Rows.Count == 0)
  7877. {
  7878. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7879. return sre;
  7880. }
  7881. sre.Data = new DataSet();
  7882. sre.Data.Tables.Add(data);
  7883. return sre;
  7884. }
  7885. catch (Exception ex)
  7886. {
  7887. throw ex;
  7888. }
  7889. finally
  7890. {
  7891. if (conn != null &&
  7892. conn.ConnState == ConnectionState.Open)
  7893. {
  7894. conn.Close();
  7895. }
  7896. }
  7897. }
  7898. /// <summary>
  7899. /// 获取RPT030107画面(工序交接数量汇总表)的汇总信息查询sql
  7900. /// </summary>
  7901. /// <returns>sql</returns>
  7902. private static string GetRPT030107SSQL(SUserInfo user, RPT030107_SE se, ref List<OracleParameter> parameters)
  7903. {
  7904. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  7905. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  7906. string sqlString =
  7907. "SELECT p.procedureid\n" +
  7908. " ,decode(gid,\n" +
  7909. " 7,\n" +
  7910. " '总计',\n" +
  7911. " 3,\n" +
  7912. " '合计【' || p.procedurename || '】',\n" +
  7913. " 1,\n" +
  7914. " '--',\n" +
  7915. " p.procedurename) procedurename\n" +
  7916. " ,decode(gid,\n" +
  7917. " 7,\n" +
  7918. " '--',\n" +
  7919. " 3,\n" +
  7920. " '--',\n" +
  7921. " 1,\n" +
  7922. " '小计【' || p.goodstypename2 || '】',\n" +
  7923. " p.goodstypename2) goodstypename2\n" +
  7924. " ,p.goodstypecode2 \n" +
  7925. " ,decode(gid, 0, p.userid, '--') userid\n" +
  7926. " ,decode(gid, 0, p.usercode, '--') usercode\n" +
  7927. " ,decode(gid, 0, p.goodsid, '--') goodsid\n" +
  7928. " ,decode(gid, 0, p.goodscode, '--') goodscode ,decode(gid, 0, p.GOODSNAME, '--') GOODSNAME\n" +
  7929. " ,decode(gid, 0, p.goodstypename, '--') goodstypename\n" +
  7930. " ,p.overcount\n" +
  7931. " ,p.STAFFNAME as STAFFNAMES\n" +
  7932. " FROM (SELECT grouping_id(pdata.Procedureid,pdata.goodstypename2, pdata.Userid) gid\n" +
  7933. " ,pdata.productionlineid\n" +
  7934. " ,pdata.procedureid\n" +
  7935. " ,to_char(pdata.procedurename) procedurename\n" +
  7936. " ,to_char(pdata.userid) userid\n" +
  7937. " ,pdata.usercode\n" +
  7938. " ,to_char(pdata.goodsid) goodsid\n" +
  7939. " ,pdata.goodscode ,pdata.GOODSNAME\n" +
  7940. " ,pdata.goodstypename\n" +
  7941. " ,pdata.goodstypecode2\n" +
  7942. " ,pdata.goodstypename2\n" +
  7943. " ,COUNT(pdata.barcode) overcount\n" +
  7944. " ,pdata.STAFFNAME\n" +
  7945. " FROM (SELECT distinct pd.barcode,pcp.displayno\n" +
  7946. " ,pd.productionlineid\n" +
  7947. " ,pd.procedureid\n" +
  7948. " ,pcp.procedurename\n" +
  7949. (se.DisPUserCode ? " ,pd.userid, pd.usercode \n" : " ,null userid, null usercode \n") +
  7950. //" ,pd.userid\n" +
  7951. //" ,pd.usercode\n" +
  7952. " ,t_over.goodsid\n" +
  7953. " ,t_over.goodscode ,t_over.goodsname\n" +
  7954. " ,t_over.goodstypename\n" +
  7955. " ,t_over.goodstypecode2\n" +
  7956. " ,t_over.goodstypename2\n" +
  7957. " ,STAFF.STAFFNAME\n" +
  7958. " FROM tp_pm_productiondata pd\n" +
  7959. " LEFT JOIN tp_pc_procedure pcp\n" +
  7960. " ON pcp.procedureid = pd.procedureid\n" +
  7961. " INNER JOIN (SELECT DISTINCT pd.barcode\n" +
  7962. " ,pd.productiondataid\n" +
  7963. " ,goods.goodsid\n" +
  7964. " ,goods.goodscode ,goods.goodsname\n" +
  7965. " ,gt.goodstypename\n" +
  7966. " ,gt2.goodstypename goodstypename2\n" +
  7967. " ,gt2.goodstypecode goodstypecode2\n" +
  7968. " FROM tp_pm_productiondata pd\n" +
  7969. " LEFT JOIN tp_mst_goods goods\n" +
  7970. " ON goods.goodsid = pd.goodsid\n" +
  7971. " LEFT JOIN tp_mst_goodstype gt\n" +
  7972. " ON goods.goodstypeid = gt.goodstypeid\n" +
  7973. " LEFT JOIN tp_mst_goodstype gt2\n" +
  7974. " ON gt2.goodstypecode = substr(gt.goodstypecode,1,6)\n" +
  7975. " AND gt2.accountid = gt.accountid\n" +
  7976. " --LEFT JOIN tp_pc_procedure pcp\n" +
  7977. " -- ON pcp.procedureid = pd.procedureid\n" +
  7978. ((se.DTimeStart.HasValue || se.DTimeEnd.HasValue) ? " inner join tp_pm_groutingdailydetail gdd on gdd.groutingdailydetailid=pd.groutingdailydetailid \n" : "") +
  7979. " WHERE pd.valueflag = '1'\n" +
  7980. " 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))" +
  7981. " AND pd.accountid = :AccountID\n";
  7982. // 生产线
  7983. if (se.ProductionLineID.HasValue)
  7984. {
  7985. sqlString = sqlString + " AND pd.productionlineid = :productionlineid ";
  7986. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  7987. }
  7988. // 成型工号
  7989. if (!string.IsNullOrWhiteSpace(se.GroutingUserCode))
  7990. {
  7991. sqlString = sqlString + " AND instr(pd.GroutingUserCode, :GroutingUserCode) > 0";
  7992. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  7993. }
  7994. // 产品型号
  7995. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  7996. {
  7997. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  7998. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  7999. }
  8000. // 产品编码
  8001. if (!string.IsNullOrEmpty(se.GoodsCode))
  8002. {
  8003. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  8004. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8005. }
  8006. // 交接工序
  8007. if (!string.IsNullOrEmpty(se.OverProcedureIDS))
  8008. {
  8009. sqlString = sqlString + " AND instr(:overprocedureids, ','||pd.procedureid||',')>0 ";
  8010. parameters.Add(new OracleParameter(":overprocedureids", OracleDbType.Varchar2, "," + se.OverProcedureIDS + ",", ParameterDirection.Input));
  8011. }
  8012. // 交接工号
  8013. if (!string.IsNullOrEmpty(se.OverUserIDS))
  8014. {
  8015. sqlString = sqlString + " AND instr(:overuserids, ','||pd.userid||',')>0 ";
  8016. parameters.Add(new OracleParameter(":overuserids", OracleDbType.Varchar2, "," + se.OverUserIDS + ",", ParameterDirection.Input));
  8017. }
  8018. // 交接时间
  8019. if (se.OverTimeStart.HasValue)
  8020. {
  8021. sqlString = sqlString + " AND pd.CreateTime >=:OverTimeStart ";
  8022. parameters.Add(new OracleParameter(":OverTimeStart", OracleDbType.Date, se.OverTimeStart.Value, ParameterDirection.Input));
  8023. }
  8024. if (se.OverTimeEnd.HasValue)
  8025. {
  8026. sqlString = sqlString + " AND pd.CreateTime <= :OverTimeEnd ";
  8027. parameters.Add(new OracleParameter(":OverTimeEnd", OracleDbType.Date, se.OverTimeEnd.Value, ParameterDirection.Input));
  8028. }
  8029. // 注浆时间
  8030. if (se.GTimeStart.HasValue)
  8031. {
  8032. sqlString = sqlString + " AND pd.GROUTINGDATE >=:GTimeStart ";
  8033. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  8034. }
  8035. if (se.GTimeEnd.HasValue)
  8036. {
  8037. sqlString = sqlString + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  8038. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  8039. }
  8040. // 交坯时间
  8041. if (se.DTimeStart.HasValue)
  8042. {
  8043. sqlString = sqlString + " AND gdd.DELIVERTIME >=:DTimeStart ";
  8044. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart.Value, ParameterDirection.Input));
  8045. }
  8046. if (se.DTimeEnd.HasValue)
  8047. {
  8048. sqlString = sqlString + " AND gdd.DELIVERTIME <= :DTimeEnd ";
  8049. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd.Value, ParameterDirection.Input));
  8050. }
  8051. sqlString = sqlString +
  8052. " ) t_over\n" +
  8053. " ON pd.barcode = t_over.barcode\n" +
  8054. // 交接工序在生产工序后
  8055. " AND pd.productiondataid <= t_over.productiondataid\n" +
  8056. " LEFT JOIN (\n" +
  8057. " SELECT\n" +
  8058. " D.CLASSESSETTINGID,\n" +
  8059. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME\n" +
  8060. " FROM\n" +
  8061. " (\n" +
  8062. " SELECT\n" +
  8063. " CD.CLASSESSETTINGID,\n" +
  8064. " HR.STAFFNAME \n" +
  8065. " FROM\n" +
  8066. " TP_PC_CLASSESDETAIL CD\n" +
  8067. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID \n" +
  8068. " ) D \n" +
  8069. " GROUP BY\n" +
  8070. " D.CLASSESSETTINGID\n" +
  8071. " ) STAFF ON pd.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n" +
  8072. " WHERE pd.valueflag = '1'\n" +
  8073. " AND pd.accountid = :AccountID\n" +
  8074. (se.Specialrepairflag ? " AND ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  8075. " 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))";
  8076. // 生产工序
  8077. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  8078. {
  8079. sqlString = sqlString + " AND instr(:procedureids, ','||pd.procedureid||',')>0 ";
  8080. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  8081. }
  8082. // 生产工号
  8083. if (!string.IsNullOrEmpty(se.UserIDS))
  8084. {
  8085. sqlString = sqlString + " AND instr(:userids, ','||pd.userid||',')>0 ";
  8086. parameters.Add(new OracleParameter(":userids", OracleDbType.Varchar2, "," + se.UserIDS + ",", ParameterDirection.Input));
  8087. }
  8088. // 生产时间
  8089. if (se.PTimeStart.HasValue)
  8090. {
  8091. sqlString = sqlString + " AND pd.CreateTime >=:PTimeStart ";
  8092. parameters.Add(new OracleParameter(":PTimeStart", OracleDbType.Date, se.PTimeStart.Value, ParameterDirection.Input));
  8093. }
  8094. if (se.PTimeEnd.HasValue)
  8095. {
  8096. sqlString = sqlString + " AND pd.CreateTime <= :PTimeEnd ";
  8097. parameters.Add(new OracleParameter(":PTimeEnd", OracleDbType.Date, se.PTimeEnd.Value, ParameterDirection.Input));
  8098. }
  8099. // fenglinyong add 添加员工姓名 2022-08-29
  8100. if (!string.IsNullOrEmpty(se.StaffName))
  8101. {
  8102. sqlString = sqlString + " AND instr(STAFF.STAFFNAME,:STAFFNAME) >0";
  8103. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  8104. }
  8105. // fenglinyong add 添加员工姓名 2022-08-29
  8106. sqlString = sqlString +
  8107. "\n ) pdata\n" +
  8108. " GROUP BY GROUPING SETS((pdata.productionlineid, pdata.procedureid, pdata.procedurename, pdata.displayno, pdata.userid, pdata.usercode, pdata.goodsid, pdata.goodscode,pdata.GOODSNAME , pdata.goodstypename,pdata.goodstypecode2, pdata.goodstypename2,pdata.STAFFNAME),(pdata.productionlineid, pdata.procedureid, pdata.procedurename, pdata.displayno,pdata.goodstypecode2, pdata.goodstypename2),(pdata.productionlineid, pdata.procedureid, pdata.procedurename, pdata.displayno),())\n" +
  8109. " ORDER BY pdata.displayno\n" +
  8110. " ,pdata.goodstypename2\n" +
  8111. " ,pdata.usercode\n" +
  8112. " ,pdata.goodstypename\n" +
  8113. " ,pdata.goodscode) p";
  8114. return sqlString;
  8115. }
  8116. /// <summary>
  8117. /// 取得RPT030107画面(工序交接数量汇总表)的明细信息查询数据
  8118. /// </summary>
  8119. /// <param name="user">登录用户信息</param>
  8120. /// <param name="se">查询条件</param>
  8121. /// <returns>查询结果</returns>
  8122. public static ServiceResultEntity GetRPT030107IData(SUserInfo user, RPT030107_SE se)
  8123. {
  8124. IDBConnection conn = null;
  8125. try
  8126. {
  8127. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8128. List<OracleParameter> parameters = new List<OracleParameter>();
  8129. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030107ISQL(user, se, ref parameters));
  8130. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  8131. ServiceResultEntity sre = new ServiceResultEntity();
  8132. if (data == null || data.Rows.Count == 0)
  8133. {
  8134. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8135. return sre;
  8136. }
  8137. sre.Data = new DataSet();
  8138. sre.Data.Tables.Add(data);
  8139. return sre;
  8140. }
  8141. catch (Exception ex)
  8142. {
  8143. throw ex;
  8144. }
  8145. finally
  8146. {
  8147. if (conn != null &&
  8148. conn.ConnState == ConnectionState.Open)
  8149. {
  8150. conn.Close();
  8151. }
  8152. }
  8153. }
  8154. /// <summary>
  8155. /// 获取RPT030107画面(工序交接数量汇总表)的明细信息查询sql
  8156. /// </summary>
  8157. /// <returns>sql</returns>
  8158. private static string GetRPT030107ISQL(SUserInfo user, RPT030107_SE se, ref List<OracleParameter> parameters)
  8159. {
  8160. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  8161. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  8162. string sqlString =
  8163. "SELECT distinct pcp.procedurename,pcp.displayno\n" +
  8164. (se.DisPUserCode ? " ,pd.userid, pd.usercode \n" : " ,null userid, null usercode \n") +
  8165. //" ,pd.usercode\n" +
  8166. " ,t_over.barcode\n" +
  8167. " ,t_over.goodscode,t_over.goodsname\n" +
  8168. " ,t_over.goodstypename\n" +
  8169. " ,t_over.goodstypename2\n" +
  8170. //" ,pd.createtime ptime\n" +
  8171. //" ,t_over.overprocedurename\n" +
  8172. //" ,t_over.overusercode\n" +
  8173. //" ,t_over.overtime\n" +
  8174. " ,t_over.groutingusercode\n" +
  8175. " ,pd.groutinglinecode\n" +
  8176. " ,pd.groutingmouldcode\n" +
  8177. " ,t_over.groutingdate Gdate\n" +
  8178. " ,t_over.DELIVERTIME Ddate\n" +
  8179. " ,decode(logo.logoid, null, '', logo.Logoname||'['||logo.Logocode||']') as LogoCodeName " +
  8180. " ,t_over.SecurityCode\n" +
  8181. " ,STAFF.STAFFNAME\n" +
  8182. " FROM tp_pm_productiondata pd\n" +
  8183. " LEFT JOIN tp_pc_procedure pcp\n" +
  8184. " ON pcp.procedureid = pd.procedureid\n" +
  8185. " LEFT JOIN TP_MST_logo logo\n" +
  8186. " ON logo.logoid = pd.logoid\n" +
  8187. " INNER JOIN (SELECT DISTINCT pd.barcode\n" +
  8188. " ,pd.productiondataid\n" +
  8189. " ,goods.goodsid\n" +
  8190. " ,goods.goodscode,goods.GOODSNAME\n" +
  8191. " ,gt.goodstypename\n" +
  8192. " ,gt2.goodstypename goodstypename2\n" +
  8193. //" ,pcp.procedurename overprocedurename\n" +
  8194. //" ,pd.usercode overusercode\n" +
  8195. //" ,pd.createtime overtime\n" +
  8196. " ,pd.groutingusercode\n" +
  8197. " ,pd.groutingdate\n" +
  8198. " ,gdd.DELIVERTIME\n" +
  8199. " ,gdd.SecurityCode\n" +
  8200. " FROM tp_pm_productiondata pd\n" +
  8201. " LEFT JOIN tp_mst_goods goods\n" +
  8202. " ON goods.goodsid = pd.goodsid\n" +
  8203. " LEFT JOIN tp_mst_goodstype gt\n" +
  8204. " ON goods.goodstypeid = gt.goodstypeid\n" +
  8205. " LEFT JOIN tp_mst_goodstype gt2\n" +
  8206. " ON gt2.goodstypecode = substr(gt.goodstypecode,1,6)\n" +
  8207. " AND gt2.accountid = gt.accountid\n" +
  8208. " LEFT JOIN tp_pc_procedure pcp\n" +
  8209. " ON pcp.procedureid = pd.procedureid\n" +
  8210. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  8211. " ON gdd.groutingdailydetailid = pd.groutingdailydetailid\n" +
  8212. " WHERE pd.valueflag = '1'\n" +
  8213. " 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))" +
  8214. " AND pd.accountid = :AccountID\n";
  8215. // 生产线
  8216. if (se.ProductionLineID.HasValue)
  8217. {
  8218. sqlString = sqlString + " AND pd.productionlineid = :productionlineid ";
  8219. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID.Value, ParameterDirection.Input));
  8220. }
  8221. // 成型工号
  8222. if (!string.IsNullOrWhiteSpace(se.GroutingUserCode))
  8223. {
  8224. sqlString = sqlString + " AND instr(pd.GroutingUserCode, :GroutingUserCode) > 0";
  8225. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  8226. }
  8227. // 产品型号
  8228. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  8229. {
  8230. sqlString = sqlString + " AND instr(gt.GOODSTYPECode, :GoodsTypeCode)=1 ";
  8231. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8232. }
  8233. if (!string.IsNullOrEmpty(se.GoodsID))
  8234. {
  8235. sqlString = sqlString + " AND pd.goodsid = :GoodsID ";
  8236. parameters.Add(new OracleParameter(":GoodsID", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  8237. }
  8238. // 产品编码
  8239. if (!string.IsNullOrEmpty(se.GoodsCode))
  8240. {
  8241. sqlString = sqlString + " AND instr(goods.GOODSCode, :GoodsCode) > 0 ";
  8242. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8243. }
  8244. // 交接工序
  8245. if (!string.IsNullOrEmpty(se.OverProcedureIDS))
  8246. {
  8247. sqlString = sqlString + " AND instr(:overprocedureids, ','||pd.procedureid||',')>0 ";
  8248. parameters.Add(new OracleParameter(":overprocedureids", OracleDbType.Varchar2, "," + se.OverProcedureIDS + ",", ParameterDirection.Input));
  8249. }
  8250. // 交接工号
  8251. if (!string.IsNullOrEmpty(se.OverUserIDS))
  8252. {
  8253. sqlString = sqlString + " AND instr(:overuserids, ','||pd.userid||',')>0 ";
  8254. parameters.Add(new OracleParameter(":overuserids", OracleDbType.Varchar2, "," + se.OverUserIDS + ",", ParameterDirection.Input));
  8255. }
  8256. // 交接时间
  8257. if (se.OverTimeStart.HasValue)
  8258. {
  8259. sqlString = sqlString + " AND pd.CreateTime >=:OverTimeStart ";
  8260. parameters.Add(new OracleParameter(":OverTimeStart", OracleDbType.Date, se.OverTimeStart.Value, ParameterDirection.Input));
  8261. }
  8262. if (se.OverTimeEnd.HasValue)
  8263. {
  8264. sqlString = sqlString + " AND pd.CreateTime <= :OverTimeEnd ";
  8265. parameters.Add(new OracleParameter(":OverTimeEnd", OracleDbType.Date, se.OverTimeEnd.Value, ParameterDirection.Input));
  8266. }
  8267. // 注浆时间
  8268. if (se.GTimeStart.HasValue)
  8269. {
  8270. sqlString = sqlString + " AND pd.GROUTINGDATE >=:GTimeStart ";
  8271. parameters.Add(new OracleParameter(":GTimeStart", OracleDbType.Date, se.GTimeStart.Value, ParameterDirection.Input));
  8272. }
  8273. if (se.GTimeEnd.HasValue)
  8274. {
  8275. sqlString = sqlString + " AND pd.GROUTINGDATE <= :GTimeEnd ";
  8276. parameters.Add(new OracleParameter(":GTimeEnd", OracleDbType.Date, se.GTimeEnd.Value, ParameterDirection.Input));
  8277. }
  8278. // 交坯时间
  8279. if (se.DTimeStart.HasValue)
  8280. {
  8281. sqlString = sqlString + " AND gdd.DELIVERTIME >=:DTimeStart ";
  8282. parameters.Add(new OracleParameter(":DTimeStart", OracleDbType.Date, se.DTimeStart.Value, ParameterDirection.Input));
  8283. }
  8284. if (se.DTimeEnd.HasValue)
  8285. {
  8286. sqlString = sqlString + " AND gdd.DELIVERTIME <= :DTimeEnd ";
  8287. parameters.Add(new OracleParameter(":DTimeEnd", OracleDbType.Date, se.DTimeEnd.Value, ParameterDirection.Input));
  8288. }
  8289. sqlString = sqlString +
  8290. " ) t_over\n" +
  8291. " ON pd.barcode = t_over.barcode\n" +
  8292. // 交接工序在生产工序后
  8293. " AND pd.productiondataid <= t_over.productiondataid\n" +
  8294. " LEFT JOIN (\n" +
  8295. " SELECT\n" +
  8296. " D.CLASSESSETTINGID,\n" +
  8297. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME\n" +
  8298. " FROM\n" +
  8299. " (\n" +
  8300. " SELECT\n" +
  8301. " CD.CLASSESSETTINGID,\n" +
  8302. " HR.STAFFNAME \n" +
  8303. " FROM\n" +
  8304. " TP_PC_CLASSESDETAIL CD\n" +
  8305. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID \n" +
  8306. " ) D \n" +
  8307. " GROUP BY\n" +
  8308. " D.CLASSESSETTINGID\n" +
  8309. " ) STAFF ON pd.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n" +
  8310. " WHERE pd.valueflag = '1'\n" +
  8311. " AND pd.accountid = :AccountID\n" +
  8312. (se.Specialrepairflag ? " AND ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" : "") +
  8313. " 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))";
  8314. // 生产工序
  8315. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  8316. {
  8317. sqlString = sqlString + " AND instr(:procedureids, ','||pd.procedureid||',')>0 ";
  8318. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  8319. }
  8320. // 生产工号
  8321. if (!string.IsNullOrEmpty(se.UserIDS))
  8322. {
  8323. sqlString = sqlString + " AND instr(:userids, ','||pd.userid||',')>0 ";
  8324. parameters.Add(new OracleParameter(":userids", OracleDbType.Varchar2, "," + se.UserIDS + ",", ParameterDirection.Input));
  8325. }
  8326. // 生产时间
  8327. if (se.PTimeStart.HasValue)
  8328. {
  8329. sqlString = sqlString + " AND pd.CreateTime >=:PTimeStart ";
  8330. parameters.Add(new OracleParameter(":PTimeStart", OracleDbType.Date, se.PTimeStart.Value, ParameterDirection.Input));
  8331. }
  8332. if (se.PTimeEnd.HasValue)
  8333. {
  8334. sqlString = sqlString + " AND pd.CreateTime <= :PTimeEnd ";
  8335. parameters.Add(new OracleParameter(":PTimeEnd", OracleDbType.Date, se.PTimeEnd.Value, ParameterDirection.Input));
  8336. }
  8337. // fenglinyong add 添加员工姓名 2022-08-29
  8338. if (!string.IsNullOrEmpty(se.StaffName))
  8339. {
  8340. sqlString = sqlString + " AND instr(STAFF.STAFFNAME,:STAFFNAME) >0";
  8341. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  8342. }
  8343. // fenglinyong add 添加员工姓名 2022-08-29
  8344. sqlString = sqlString +
  8345. "\n ORDER BY pcp.displayno\n" +
  8346. " ,t_over.goodstypename2\n" +
  8347. (se.DisPUserCode ? " ,pd.usercode\n" : "") +
  8348. " ,t_over.goodstypename\n" +
  8349. " ,t_over.goodscode\n";
  8350. return sqlString;
  8351. }
  8352. #endregion
  8353. /// <summary>
  8354. /// 取得RPT030108画面(成型信息汇总表)的查询数据
  8355. /// </summary>
  8356. /// <param name="user">登录用户信息</param>
  8357. /// <param name="se">查询条件</param>
  8358. /// <returns>查询结果</returns>
  8359. public static ServiceResultEntity GetRPT030108SData(SUserInfo user, RPT030108_SE se)
  8360. {
  8361. IDBConnection conn = null;
  8362. try
  8363. {
  8364. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8365. List<OracleParameter> parameters = new List<OracleParameter>();
  8366. string sqlString = "SELECT decode(g.gid,\n" +
  8367. " 7,\n" +
  8368. " '总计',\n" +
  8369. " 3,\n" +
  8370. " '合计【' || g.goodstypename2 || '】',\n" +
  8371. " 0,\n" +
  8372. " g.goodstypename2,\n" +
  8373. " '--') goodstypename2\n" +
  8374. " ,decode(g.gid, 0, g.goodstypename, '--') goodstypename\n" +
  8375. " ,decode(g.gid,\n" +
  8376. " 1,\n" +
  8377. " '小计【' || g.goodscode || '】',\n" +
  8378. " 0,\n" +
  8379. " g.goodscode,\n" +
  8380. " '--') goodscode ,decode(g.gid, 0, g.GOODSNAME, '--') GOODSNAME\n" +
  8381. " ,decode(g.gid, 0, g.usercode, '--') usercode\n" +
  8382. " ,decode(g.gid, 0, g.MONITORName, '--') MONITORName\n" +
  8383. " ,g.groutingcount\n" +
  8384. " ,g.barcodecount\n" +
  8385. " ,g.scrapcount\n" +
  8386. " ,g.barscrapcount\n" +
  8387. " ,g.delivercount\n" +
  8388. " ,g.barcodecount - g.barscrapcount - g.delivercount incount\n" +
  8389. " FROM (SELECT grouping_id(gdd.goodstypename2, gdd.goodscode, gdd.usercode) gid\n" +
  8390. " ,gdd.goodstypename2\n" +
  8391. " ,gdd.goodstypename\n" +
  8392. " ,gdd.goodscode,gdd.GOODSNAME\n" +
  8393. " ,gdd.usercode\n" +
  8394. " ,gdd.MONITORName\n" +
  8395. " ,SUM(groutingcount) groutingcount\n" +
  8396. " ,SUM(barcodecount) barcodecount\n" +
  8397. " ,SUM(scrapcount) scrapcount\n" +
  8398. " ,SUM(barscrapcount) barscrapcount\n" +
  8399. " ,SUM(delivercount) delivercount\n" +
  8400. " FROM (SELECT goodstypename2,usercode,MONITORName,goodscode,GOODSNAME,goodstypename,groutingcount,barcodecount,scrapcount,barscrapcount,delivercount from(\n" +
  8401. " SELECT\n" +
  8402. " gt2.goodstypename goodstypename2,\n" +
  8403. " gdd.usercode usercode,\n" +
  8404. " mu.usercode MONITORName,\n" +
  8405. " goods.goodscode goodscode,goods.GOODSNAME GOODSNAME,\n" +
  8406. " gt.goodstypename goodstypename,\n" +
  8407. " CASE WHEN gdd.groutingdate >= : gdatabegin AND gdd.groutingdate <= : gdataend THEN 1 ELSE 0 END groutingcount,\n" +
  8408. " CASE WHEN gdd.groutingdate >= : gdatabegin AND gdd.groutingdate <= : gdataend AND gdd.barcode IS NOT NULL THEN 1 ELSE 0 END barcodecount,\n" +
  8409. " CASE WHEN gdd.scraptime >= : sdatabegin AND gdd.scraptime <= : sdataend AND gdd.scrapflag = '1' THEN 1 ELSE 0 END scrapcount,\n" +
  8410. " CASE WHEN gdd.scraptime >= : sdatabegin AND gdd.scraptime <= : sdataend AND gdd.barcode IS NOT NULL AND gdd.scrapflag = '1' THEN 1 ELSE 0 END barscrapcount,\n" +
  8411. " 0 AS delivercount\n" +
  8412. " FROM\n" +
  8413. " tp_pm_groutingdailydetail gdd\n" +
  8414. " LEFT JOIN tp_mst_goods goods ON goods.goodsid = gdd.goodsid\n" +
  8415. " LEFT JOIN tp_pc_groutingline gl ON gl.groutinglineid = GDD.GroutingLineID\n" +
  8416. " LEFT JOIN tp_mst_user mu ON mu.userid = gl.MONITORID\n" +
  8417. " LEFT JOIN tp_mst_goodstype gt ON gt.goodstypeid = goods.goodstypeid\n" +
  8418. " LEFT JOIN tp_mst_goodstype gt2 ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  8419. " AND gt2.accountid = gt.accountid\n" +
  8420. " WHERE\n" +
  8421. " gdd.valueflag = '1'\n" +
  8422. " AND gdd.groutingflag = '1'\n" +
  8423. " AND gdd.accountid = : accountid\n" +
  8424. " AND(\n" +
  8425. " (gdd.groutingdate >= : gdatabegin AND gdd.groutingdate <= : gdataend)\n" +
  8426. " OR(gdd.scraptime >= : sdatabegin AND gdd.scraptime <= : sdataend)\n" +
  8427. " OR(gdd.delivertime >= : ddatabegin AND gdd.delivertime <= : ddataend)\n" +
  8428. " ) \n" +
  8429. " UNION ALL\n" +
  8430. " SELECT\n" +
  8431. " gt2.goodstypename goodstypename2,\n" +
  8432. " gdd.usercode,\n" +
  8433. " mu.usercode MONITORName,\n" +
  8434. " goods.goodscode, goods.GOODSNAME GOODSNAME,\n" +
  8435. " gt.goodstypename,\n" +
  8436. " 0 AS groutingcount,\n" +
  8437. " 0 AS barcodecount,\n" +
  8438. " 0 AS scrapcount,\n" +
  8439. " 0 AS barscrapcount,\n" +
  8440. " CASE WHEN TPPD.PROCEDUREID = 7 THEN 1 ELSE 0 END delivercount\n" +
  8441. " FROM\n" +
  8442. " tp_pm_groutingdailydetail gdd\n" +
  8443. " LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON gdd.BARCODE = TPPD.BARCODE\n" +
  8444. " LEFT JOIN tp_mst_goods goods ON goods.goodsid = gdd.goodsid\n" +
  8445. " LEFT JOIN tp_pc_groutingline gl ON gl.groutinglineid = GDD.GroutingLineID\n" +
  8446. " LEFT JOIN tp_mst_user mu ON mu.userid = gl.MONITORID\n" +
  8447. " LEFT JOIN tp_mst_goodstype gt ON gt.goodstypeid = goods.goodstypeid\n" +
  8448. " LEFT JOIN tp_mst_goodstype gt2 ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  8449. " AND gt2.accountid = gt.accountid\n" +
  8450. " WHERE\n" +
  8451. " gdd.valueflag = '1'\n" +
  8452. " AND TPPD.PROCEDUREID = 7\n" +
  8453. " AND gdd.groutingflag = '1'\n" +
  8454. " AND gdd.accountid = 1\n" +
  8455. " AND((gdd.groutingdate >= : gdatabegin AND gdd.groutingdate <= : gdataend)\n" +
  8456. " OR(gdd.scraptime >= : sdatabegin AND gdd.scraptime <= : sdataend)\n" +
  8457. " OR(gdd.delivertime >= : ddatabegin AND gdd.delivertime <= : ddataend) )\n" +
  8458. " --ORDER BY\n" +
  8459. " -- gt2.goodstypename,\n" +
  8460. " --gt.goodstypename,\n" +
  8461. " --goods.goodscode,\n" +
  8462. " --gdd.usercode\n" +
  8463. " ) T\n" +
  8464. " ORDER BY\n" +
  8465. " T.goodstypename,\n" +
  8466. " T.goodstypename,\n" +
  8467. " T.goodscode,\n" +
  8468. " T.usercode) gdd\n" +
  8469. " GROUP BY GROUPING SETS((gdd.goodstypename2, gdd.goodstypename, gdd.goodscode, gdd.GOODSNAME,gdd.usercode,gdd.MONITORName),(gdd.goodstypename2, gdd.goodstypename, gdd.goodscode),(gdd.goodstypename2),())\n" +
  8470. " ORDER BY gdd.goodstypename2\n" +
  8471. " ,gdd.goodstypename\n" +
  8472. " ,gdd.goodscode\n" +
  8473. " ,gdd.usercode) g";
  8474. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  8475. parameters.Add(new OracleParameter(":gdatabegin", OracleDbType.Date, se.GTimeStart, ParameterDirection.Input));
  8476. parameters.Add(new OracleParameter(":gdataend", OracleDbType.Date, se.GTimeEnd, ParameterDirection.Input));
  8477. parameters.Add(new OracleParameter(":sdatabegin", OracleDbType.Date, se.STimeStart, ParameterDirection.Input));
  8478. parameters.Add(new OracleParameter(":sdataend", OracleDbType.Date, se.STimeEnd, ParameterDirection.Input));
  8479. parameters.Add(new OracleParameter(":ddatabegin", OracleDbType.Date, se.DTimeStart, ParameterDirection.Input));
  8480. parameters.Add(new OracleParameter(":ddataend", OracleDbType.Date, se.DTimeEnd, ParameterDirection.Input));
  8481. parameters.Add(new OracleParameter(":usercode", OracleDbType.Varchar2, se.UserCode, ParameterDirection.Input));
  8482. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8483. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8484. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  8485. ServiceResultEntity sre = new ServiceResultEntity();
  8486. if (data == null || data.Rows.Count == 0)
  8487. {
  8488. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8489. return sre;
  8490. }
  8491. sre.Data = new DataSet();
  8492. sre.Data.Tables.Add(data);
  8493. return sre;
  8494. }
  8495. catch (Exception ex)
  8496. {
  8497. throw ex;
  8498. }
  8499. finally
  8500. {
  8501. if (conn != null &&
  8502. conn.ConnState == ConnectionState.Open)
  8503. {
  8504. conn.Close();
  8505. }
  8506. }
  8507. }
  8508. #region 撤销产品汇总表
  8509. /// <summary>
  8510. /// 取得RPT030109画面(撤销产品汇总表)的汇总信息查询数据
  8511. /// </summary>
  8512. /// <param name="user">登录用户信息</param>
  8513. /// <param name="se">查询条件</param>
  8514. /// <returns>查询结果</returns>
  8515. public static ServiceResultEntity GetRPT030109SData(SUserInfo user, RPT030109_SE se)
  8516. {
  8517. IDBConnection conn = null;
  8518. try
  8519. {
  8520. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8521. List<OracleParameter> parameters = new List<OracleParameter>();
  8522. string sql = ReportModuleLogic.GetRPT030109SSQL(user, se, ref parameters);
  8523. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  8524. ServiceResultEntity sre = new ServiceResultEntity();
  8525. if (data == null || data.Rows.Count == 0)
  8526. {
  8527. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8528. return sre;
  8529. }
  8530. sre.Data = new DataSet();
  8531. sre.Data.Tables.Add(data);
  8532. return sre;
  8533. }
  8534. catch (Exception ex)
  8535. {
  8536. throw ex;
  8537. }
  8538. finally
  8539. {
  8540. if (conn != null &&
  8541. conn.ConnState == ConnectionState.Open)
  8542. {
  8543. conn.Close();
  8544. }
  8545. }
  8546. }
  8547. /// <summary>
  8548. /// 获取RPT030109画面(撤销产品汇总表)的汇总信息查询sql
  8549. /// </summary>
  8550. /// <returns>sql</returns>
  8551. private static string GetRPT030109SSQL(SUserInfo user, RPT030109_SE se, ref List<OracleParameter> parameters)
  8552. {
  8553. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  8554. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  8555. string sqlString =
  8556. "SELECT decode(p.gid,\n" +
  8557. " 7,\n" +
  8558. " '总计',\n" +
  8559. " 3,\n" +
  8560. " '合计【' || p.procedurename || '】',\n" +
  8561. " 0,\n" +
  8562. " p.procedurename,\n" +
  8563. " '--') procedurename\n" +
  8564. " ,decode(p.gid,\n" +
  8565. " 1,\n" +
  8566. " '小计【' || p.goodstypename2 || '】',\n" +
  8567. " 0,\n" +
  8568. " p.goodstypename2,\n" +
  8569. " '--') goodstypename2\n" +
  8570. " ,decode(p.gid, 0, p.goodstypename, '--') goodstypename\n" +
  8571. " ,decode(p.gid, 0, p.goodscode, '--') goodscode,decode(p.gid, 0, p.GOODSNAME, '--') GOODSNAME\n" +
  8572. " ,decode(p.gid, 0, p.usercode, '--') usercode\n" +
  8573. " ,p.codecount\n" +
  8574. " ,p.productionlineid\n" +
  8575. " ,p.procedureid\n" +
  8576. " ,p.goodstypecode2\n" +
  8577. " ,p.goodsid\n" +
  8578. " ,p.userid\n" +
  8579. " FROM (SELECT grouping_id(pd.procedureid, gt2.goodstypecode, pd.userid) gid\n" +
  8580. " ,pd.productionlineid\n" +
  8581. " ,pd.procedureid\n" +
  8582. " ,p.procedurename\n" +
  8583. " ,p.displayno\n" +
  8584. " ,gt2.goodstypecode goodstypecode2\n" +
  8585. " ,gt2.goodstypename goodstypename2\n" +
  8586. " ,gt.goodstypecode\n" +
  8587. " ,gt.goodstypename\n" +
  8588. " ,goods.goodsid\n" +
  8589. " ,goods.goodscode,goods.GOODSNAME\n" +
  8590. " ,pd.userid\n" +
  8591. " ,pd.usercode\n" +
  8592. " ,COUNT(*) codecount\n" +
  8593. " FROM tp_pm_productiondata pd\n" +
  8594. " LEFT JOIN tp_pc_procedure p\n" +
  8595. " ON p.procedureid = pd.procedureid\n" +
  8596. " LEFT JOIN tp_mst_goods goods\n" +
  8597. " ON goods.goodsid = pd.goodsid\n" +
  8598. " LEFT JOIN tp_mst_goodstype gt\n" +
  8599. " ON gt.goodstypeid = goods.goodstypeid\n" +
  8600. " LEFT JOIN tp_mst_goodstype gt2\n" +
  8601. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  8602. " AND gt2.accountid = gt.accountid\n" +
  8603. " WHERE pd.valueflag = '0'\n" +
  8604. " AND pd.accountid = :accountid\n" +
  8605. " 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))" +
  8606. " 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))" +
  8607. " AND (:productionlineid IS NULL OR\n" +
  8608. " pd.productionlineid = :productionlineid)\n" +
  8609. " AND (:procedureids IS NULL OR\n" +
  8610. " instr(:procedureids, ',' || pd.procedureid || ',') > 0)\n" +
  8611. " AND (:goodstypecode IS NULL OR\n" +
  8612. " instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  8613. " AND (:goodscode IS NULL OR\n" +
  8614. " instr(goods.goodscode, :goodscode) > 0)\n" +
  8615. " AND (:PUserIDS IS NULL OR\n" +
  8616. " instr(:PUserIDS, ',' || pd.userid || ',') > 0)\n" +
  8617. " AND (:backusercode IS NULL OR\n" +
  8618. " instr(pd.BACKOUTUSERCODE, :backusercode) > 0)\n" +
  8619. " AND (:groutingusercode IS NULL OR\n" +
  8620. " instr(pd.groutingusercode, :groutingusercode) > 0)\n" +
  8621. " AND (:ptimebegin IS NULL OR pd.createtime >= :ptimebegin)\n" +
  8622. " AND (:ptimeend IS NULL OR pd.createtime <= :ptimeend)\n" +
  8623. " AND (:backtimebegin IS NULL OR pd.backouttime >= :backtimebegin)\n" +
  8624. " AND (:backtimeend IS NULL OR pd.backouttime <= :backtimeend)\n" +
  8625. " GROUP BY GROUPING SETS((pd.productionlineid, pd.procedureid, p.procedurename, p.displayno, gt2.goodstypecode, gt2.goodstypename, gt.goodstypecode, gt.goodstypename, goods.goodsid, goods.goodscode, goods.GOODSNAME,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" +
  8626. " ORDER BY p.displayno\n" +
  8627. " ,gt2.goodstypecode\n" +
  8628. " ,gt.goodstypecode\n" +
  8629. " ,goods.goodscode\n" +
  8630. " ,pd.usercode) p";
  8631. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  8632. if (string.IsNullOrEmpty(se.ProcedureIDS))
  8633. {
  8634. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, null, ParameterDirection.Input));
  8635. }
  8636. else
  8637. {
  8638. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  8639. }
  8640. if (string.IsNullOrEmpty(se.UserIDS))
  8641. {
  8642. parameters.Add(new OracleParameter(":PUserIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  8643. }
  8644. else
  8645. {
  8646. parameters.Add(new OracleParameter(":PUserIDS", OracleDbType.Varchar2, "," + se.UserIDS + ",", ParameterDirection.Input));
  8647. }
  8648. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8649. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8650. parameters.Add(new OracleParameter(":backusercode", OracleDbType.Varchar2, se.BackUserCode, ParameterDirection.Input));
  8651. parameters.Add(new OracleParameter(":groutingusercode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  8652. parameters.Add(new OracleParameter(":ptimebegin", OracleDbType.Date, se.PTimeStart, ParameterDirection.Input));
  8653. parameters.Add(new OracleParameter(":ptimeend", OracleDbType.Date, se.PTimeEnd, ParameterDirection.Input));
  8654. parameters.Add(new OracleParameter(":backtimebegin", OracleDbType.Date, se.BackTimeStart, ParameterDirection.Input));
  8655. parameters.Add(new OracleParameter(":backtimeend", OracleDbType.Date, se.BackTimeEnd, ParameterDirection.Input));
  8656. return sqlString;
  8657. }
  8658. /// <summary>
  8659. /// 取得RPT030109画面(撤销产品汇总表)的明细信息查询数据
  8660. /// </summary>
  8661. /// <param name="user">登录用户信息</param>
  8662. /// <param name="se">查询条件</param>
  8663. /// <returns>查询结果</returns>
  8664. public static ServiceResultEntity GetRPT030109IData(SUserInfo user, RPT030109_SE se)
  8665. {
  8666. IDBConnection conn = null;
  8667. try
  8668. {
  8669. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8670. List<OracleParameter> parameters = new List<OracleParameter>();
  8671. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030109ISQL(user, se, ref parameters));
  8672. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  8673. ServiceResultEntity sre = new ServiceResultEntity();
  8674. if (data == null || data.Rows.Count == 0)
  8675. {
  8676. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8677. return sre;
  8678. }
  8679. sre.Data = new DataSet();
  8680. sre.Data.Tables.Add(data);
  8681. return sre;
  8682. }
  8683. catch (Exception ex)
  8684. {
  8685. throw ex;
  8686. }
  8687. finally
  8688. {
  8689. if (conn != null &&
  8690. conn.ConnState == ConnectionState.Open)
  8691. {
  8692. conn.Close();
  8693. }
  8694. }
  8695. }
  8696. /// <summary>
  8697. /// 获取RPT030109画面(撤销产品汇总表)的明细信息查询sql
  8698. /// </summary>
  8699. /// <returns>sql</returns>
  8700. private static string GetRPT030109ISQL(SUserInfo user, RPT030109_SE se, ref List<OracleParameter> parameters)
  8701. {
  8702. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  8703. parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  8704. string sqlString =
  8705. "SELECT p.procedurename\n" +
  8706. " ,gt2.goodstypename goodstypename2\n" +
  8707. " ,gt.goodstypename\n" +
  8708. " ,goods.goodscode ,goods.GOODSNAME\n" +
  8709. " ,pd.barcode\n" +
  8710. " ,pd.usercode\n" +
  8711. " ,pd.createtime ptime\n" +
  8712. " ,pd.backoutusercode busercode\n" +
  8713. " ,pd.backouttime btime\n" +
  8714. " ,pd.groutingusercode\n" +
  8715. " ,pd.groutinglinecode\n" +
  8716. " ,pd.groutingmouldcode\n" +
  8717. " ,pd.groutingdate GDate\n" +
  8718. " ,STAFF.STAFFNAME\n" +
  8719. @", levelpd.GOODSLEVELTYPENAME levelpd
  8720. , levelbefor.GOODSLEVELTYPENAME levelbefor
  8721. FROM tp_pm_productiondata pd left join tp_pm_productiondata befor on befor.BARCODE = pd.BARCODE and befor.CREATETIME between pd.backouttime-1/(24*60*60) and pd.backouttime+1/(24*60*60)
  8722. left join TP_SYS_GOODSLEVELTYPE levelbefor on levelbefor.GOODSLEVELTYPEID = befor.GOODSLEVELTYPEID
  8723. left join TP_SYS_GOODSLEVELTYPE levelpd on levelpd.GOODSLEVELTYPEID = pd.GOODSLEVELTYPEID " +
  8724. " LEFT JOIN tp_pc_procedure p\n" +
  8725. " ON p.procedureid = pd.procedureid\n" +
  8726. " LEFT JOIN tp_mst_goods goods\n" +
  8727. " ON goods.goodsid = pd.goodsid\n" +
  8728. " LEFT JOIN tp_mst_goodstype gt\n" +
  8729. " ON gt.goodstypeid = goods.goodstypeid\n" +
  8730. " LEFT JOIN tp_mst_goodstype gt2\n" +
  8731. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  8732. " AND gt2.accountid = gt.accountid\n" +
  8733. " LEFT JOIN (\n" +
  8734. " SELECT\n" +
  8735. " D.CLASSESSETTINGID,\n" +
  8736. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME\n" +
  8737. " FROM\n" +
  8738. " (\n" +
  8739. " SELECT\n" +
  8740. " CD.CLASSESSETTINGID,\n" +
  8741. " HR.STAFFNAME\n" +
  8742. " FROM\n" +
  8743. " TP_PC_CLASSESDETAIL CD\n" +
  8744. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID\n" +
  8745. " ) D \n" +
  8746. " GROUP BY\n" +
  8747. " D.CLASSESSETTINGID\n" +
  8748. " ) STAFF ON pd.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n" +
  8749. " WHERE pd.valueflag = '0'\n" +
  8750. " AND pd.accountid = :accountid\n" +
  8751. " 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))" +
  8752. " 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))" +
  8753. " AND (:productionlineid IS NULL OR\n" +
  8754. " pd.productionlineid = :productionlineid)\n" +
  8755. " AND (:procedureids IS NULL OR\n" +
  8756. " instr(:procedureids, ',' || pd.procedureid || ',') > 0)\n" +
  8757. " AND (:goodstypecode IS NULL OR\n" +
  8758. " instr(gt.goodstypecode, :goodstypecode) = 1)\n" +
  8759. " AND (:goodscode IS NULL OR instr(goods.goodscode, :goodscode) > 0)\n" +
  8760. " AND (:PUserIDS IS NULL OR\n" +
  8761. " instr(:PUserIDS, ',' || pd.userid || ',') > 0)\n" +
  8762. " AND (:backusercode IS NULL OR instr(pd.BACKOUTUSERCODE, :backusercode) > 0)\n" +
  8763. " AND (:groutingusercode IS NULL OR instr(pd.groutingusercode, :groutingusercode) > 0)\n" +
  8764. " AND (:ptimebegin IS NULL OR pd.createtime >= :ptimebegin)\n" +
  8765. " AND (:ptimeend IS NULL OR pd.createtime <= :ptimeend)\n" +
  8766. " AND (:backtimebegin IS NULL OR pd.backouttime >= :backtimebegin)\n" +
  8767. " AND (:backtimeend IS NULL OR pd.backouttime <= :backtimeend)\n" +
  8768. " AND (:puserid IS NULL OR pd.userid = :puserid)\n" +
  8769. " AND (:goodsid IS NULL OR pd.goodsid = :goodsid)\n" +
  8770. " AND (:procedureid IS NULL OR pd.procedureid = :procedureid)\n" +
  8771. " AND (:STAFFNAME IS NULL OR\n" +
  8772. " instr(STAFF.STAFFNAME, :STAFFNAME) >0)\n" +
  8773. " ORDER BY p.displayno\n" +
  8774. " ,gt2.goodstypename\n" +
  8775. " ,gt.goodstypename\n" +
  8776. " ,goods.goodscode\n" +
  8777. " ,pd.usercode\n" +
  8778. " ,pd.barcode\n" +
  8779. " ,pd.backoutusercode\n" +
  8780. " ,pd.backouttime";
  8781. parameters.Add(new OracleParameter(":productionlineid", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
  8782. if (string.IsNullOrEmpty(se.ProcedureIDS))
  8783. {
  8784. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, null, ParameterDirection.Input));
  8785. }
  8786. else
  8787. {
  8788. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, "," + se.ProcedureIDS + ",", ParameterDirection.Input));
  8789. }
  8790. if (string.IsNullOrEmpty(se.UserIDS))
  8791. {
  8792. parameters.Add(new OracleParameter(":PUserIDS", OracleDbType.Varchar2, null, ParameterDirection.Input));
  8793. }
  8794. else
  8795. {
  8796. parameters.Add(new OracleParameter(":PUserIDS", OracleDbType.Varchar2, "," + se.UserIDS + ",", ParameterDirection.Input));
  8797. }
  8798. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode, ParameterDirection.Input));
  8799. parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, se.GoodsCode, ParameterDirection.Input));
  8800. parameters.Add(new OracleParameter(":backusercode", OracleDbType.Varchar2, se.BackUserCode, ParameterDirection.Input));
  8801. parameters.Add(new OracleParameter(":groutingusercode", OracleDbType.Varchar2, se.GroutingUserCode, ParameterDirection.Input));
  8802. parameters.Add(new OracleParameter(":ptimebegin", OracleDbType.Date, se.PTimeStart, ParameterDirection.Input));
  8803. parameters.Add(new OracleParameter(":ptimeend", OracleDbType.Date, se.PTimeEnd, ParameterDirection.Input));
  8804. parameters.Add(new OracleParameter(":backtimebegin", OracleDbType.Date, se.BackTimeStart, ParameterDirection.Input));
  8805. parameters.Add(new OracleParameter(":backtimeend", OracleDbType.Date, se.BackTimeEnd, ParameterDirection.Input));
  8806. parameters.Add(new OracleParameter(":puserid", OracleDbType.Int32, se.UserID, ParameterDirection.Input));
  8807. parameters.Add(new OracleParameter(":goodsid", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  8808. parameters.Add(new OracleParameter(":procedureid", OracleDbType.Int32, se.ProcedureID, ParameterDirection.Input));
  8809. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  8810. return sqlString;
  8811. }
  8812. #endregion
  8813. /// <summary>
  8814. /// 工序收发存汇总表(初始化数据)
  8815. /// </summary>
  8816. /// <param name="user"></param>
  8817. /// <returns></returns>
  8818. public static ServiceResultEntity GetRPT030111IData(SUserInfo user)
  8819. {
  8820. IDBConnection conn = null;
  8821. try
  8822. {
  8823. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8824. OracleParameter[] parameters = new OracleParameter[]
  8825. {
  8826. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  8827. };
  8828. string sqlString =
  8829. "SELECT t.ptid, t.name\n" +
  8830. " FROM tp_mst_rpt_transfer t\n" +
  8831. " WHERE t.AccountID = :AccountID\n" +
  8832. " AND t.valueflag = '1'\n" +
  8833. " ORDER BY t.displayno desc";
  8834. DataSet data = conn.GetSqlResultToDs(sqlString, parameters);
  8835. ServiceResultEntity sre = new ServiceResultEntity();
  8836. //if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  8837. //{
  8838. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8839. // return sre;
  8840. //}
  8841. sre.Data = data;
  8842. return sre;
  8843. }
  8844. catch (Exception ex)
  8845. {
  8846. throw ex;
  8847. }
  8848. finally
  8849. {
  8850. if (conn != null &&
  8851. conn.ConnState == ConnectionState.Open)
  8852. {
  8853. conn.Close();
  8854. }
  8855. }
  8856. }
  8857. /// <summary>
  8858. /// 工序收发存汇总表
  8859. /// </summary>
  8860. /// <param name="user"></param>
  8861. /// <param name="se"></param>
  8862. /// <returns></returns>
  8863. public static ServiceResultEntity GetRPT030111SData(SUserInfo user, RPT030111_SE se)
  8864. {
  8865. IDBTransaction conn = null;
  8866. try
  8867. {
  8868. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8869. conn.Connect();
  8870. OracleParameter[] parameters = new OracleParameter[]
  8871. {
  8872. new OracleParameter("in_accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  8873. new OracleParameter("in_ptid", OracleDbType.Int32, se.PTID, ParameterDirection.Input),
  8874. //new OracleParameter("in_datetimeinit", OracleDbType.Date, se.GTimeInit, ParameterDirection.Input),
  8875. new OracleParameter("in_datetimebegin", OracleDbType.Date, se.GTimeStart , ParameterDirection.Input),
  8876. new OracleParameter("in_datetimeend", OracleDbType.Date, se.GTimeEnd , ParameterDirection.Input),
  8877. new OracleParameter("in_goodstypecode", OracleDbType.Varchar2, se.GoodsTypeCode , ParameterDirection.Input),
  8878. new OracleParameter("in_goodscode", OracleDbType.Varchar2, se.GoodsCode , ParameterDirection.Input),
  8879. new OracleParameter("out_data", OracleDbType.RefCursor, null, ParameterDirection.Output),
  8880. };
  8881. DataSet data = conn.ExecStoredProcedure("pro_rpt_gettransfers_sum_c", parameters);
  8882. ServiceResultEntity sre = new ServiceResultEntity();
  8883. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  8884. {
  8885. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8886. return sre;
  8887. }
  8888. //StringBuilder intdids = new StringBuilder();
  8889. //foreach (DataRow row in data.Tables[0].Rows)
  8890. //{
  8891. // if (intdids.Length > 0)
  8892. // {
  8893. // intdids.Append(", ");
  8894. // }
  8895. // intdids.Append(row["tdid"] + " AS \"" + row["name"] + "\"\n");
  8896. //}
  8897. //string sqlString =
  8898. // "WITH ttm AS\n" +
  8899. // " (SELECT *\n" +
  8900. // " FROM TMP_RPT_TECDEP_D\n" +
  8901. // " pivot(SUM(m)\n" +
  8902. // " FOR intdid IN(" + intdids + ")))\n" +
  8903. // "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" +
  8904. // " FROM TMP_RPT_TECDEP_T t\n" +
  8905. // " LEFT JOIN ttm m\n" +
  8906. // " ON m.goodsid = t.goodsid\n" +
  8907. // " AND m.outtdid = t.tecdepid\n" +
  8908. // " ORDER BY t.goodscode, t.displayno";
  8909. //data = conn.GetSqlResultToDs(sqlString);
  8910. //if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  8911. //{
  8912. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8913. // return sre;
  8914. //}
  8915. conn.Commit();
  8916. sre.Data = data;
  8917. return sre;
  8918. }
  8919. catch (Exception ex)
  8920. {
  8921. throw ex;
  8922. }
  8923. finally
  8924. {
  8925. if (conn != null &&
  8926. conn.ConnState == ConnectionState.Open)
  8927. {
  8928. conn.Disconnect();
  8929. }
  8930. }
  8931. }
  8932. #endregion 汇总报表
  8933. #region 公共函数
  8934. /// <summary>
  8935. /// 取得报表的查询数据源统计工序数据
  8936. /// </summary>
  8937. /// <param name="user">登录用户信息</param>
  8938. /// <param name="se">查询条件</param>
  8939. /// <returns>查询结果</returns>
  8940. public static ServiceResultEntity GetRptSourceProcedureModule(SUserInfo user, int? RptProcedureID)
  8941. {
  8942. IDBConnection conn = null;
  8943. try
  8944. {
  8945. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8946. OracleParameter[] paras = new OracleParameter[]{
  8947. new OracleParameter("in_rptProcedureId",OracleDbType.Int32,RptProcedureID,ParameterDirection.Input),
  8948. new OracleParameter("out_rptSResult",OracleDbType.RefCursor, ParameterDirection.Output),
  8949. new OracleParameter("out_rptTresult",OracleDbType.RefCursor, ParameterDirection.Output),
  8950. };
  8951. DataSet data = conn.ExecStoredProcedure("PRO_MST_GetRptProcedureBYID", paras);
  8952. ServiceResultEntity sre = new ServiceResultEntity();
  8953. if (data == null || data.Tables.Count == 0)
  8954. {
  8955. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  8956. return sre;
  8957. }
  8958. sre.Data = new DataSet();
  8959. sre.Data = data;
  8960. return sre;
  8961. }
  8962. catch (Exception ex)
  8963. {
  8964. throw ex;
  8965. }
  8966. finally
  8967. {
  8968. if (conn != null &&
  8969. conn.ConnState == ConnectionState.Open)
  8970. {
  8971. conn.Close();
  8972. }
  8973. }
  8974. }
  8975. /// <summary>
  8976. /// 取得报表数据源数据
  8977. /// </summary>
  8978. /// <param name="user">登录用户信息</param>
  8979. /// <returns>查询结果</returns>
  8980. public static ServiceResultEntity GetRptProcedureModule(SUserInfo user)
  8981. {
  8982. IDBConnection conn = null;
  8983. try
  8984. {
  8985. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  8986. string selSql = " select "
  8987. + " TP_MST_RptProcedure.Rptprocedureid,"
  8988. + " TP_MST_RptProcedure.Rptprocedurecode,"
  8989. + " TP_MST_RptProcedure.Rptprocedurename,"
  8990. + " TP_MST_RptProcedure.Rptproceduretype,"
  8991. + " decode(TP_MST_RptProcedure.Rptproceduretype,'A0001','出窑统计','质量统计') RptproceduretypeName,"
  8992. + " (select listagg(s.procedureid) sprocedureid from tp_mst_rptsprocedure s where s.rptprocedureid = TP_MST_RptProcedure.Rptprocedureid) sprocedureid,"
  8993. + " (select listagg(t.procedureid) tprocedureid from tp_mst_rpttprocedure t where t.rptprocedureid = TP_MST_RptProcedure.Rptprocedureid) tprocedureid,"
  8994. + " TP_MST_RptProcedure.Optimestamp "
  8995. + " from TP_MST_RptProcedure "
  8996. + " where TP_MST_RptProcedure.ValueFlag=1 "
  8997. + " and TP_MST_RptProcedure.AccountID=:accountID order by TP_MST_RptProcedure.displayno";
  8998. List<OracleParameter> parameters = new List<OracleParameter>();
  8999. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9000. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9001. ServiceResultEntity sre = new ServiceResultEntity();
  9002. if (data == null || data.Rows.Count == 0)
  9003. {
  9004. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9005. return sre;
  9006. }
  9007. sre.Data = new DataSet();
  9008. sre.Data.Tables.Add(data);
  9009. return sre;
  9010. }
  9011. catch (Exception ex)
  9012. {
  9013. throw ex;
  9014. }
  9015. finally
  9016. {
  9017. if (conn != null &&
  9018. conn.ConnState == ConnectionState.Open)
  9019. {
  9020. conn.Close();
  9021. }
  9022. }
  9023. }
  9024. /// <summary>
  9025. /// 取得窑炉数据
  9026. /// </summary>
  9027. /// <param name="user">登录用户信息</param>
  9028. /// <param name="pValue">使用标识条件</param>
  9029. /// <returns>查询结果</returns>
  9030. public static ServiceResultEntity GetKilnData(SUserInfo user, byte pValue)
  9031. {
  9032. IDBConnection conn = null;
  9033. try
  9034. {
  9035. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9036. string selSql = string.Empty;
  9037. List<OracleParameter> parameters = new List<OracleParameter>();
  9038. //根据帐套查询数据
  9039. if (pValue.ToString() == Constant.INT_IS_ONE.ToString())
  9040. {
  9041. selSql = "Select KilnID,KilnCode,KilnName,KilnType,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp "
  9042. + "from TP_MST_Kiln where AccountID = :AccountID";
  9043. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9044. }
  9045. //根据帐套和标识查询数据
  9046. else if (pValue.ToString() == Constant.INT_IS_ZERO.ToString())
  9047. {
  9048. selSql = "Select KilnID,KilnCode,KilnName,KilnType,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp "
  9049. + "from TP_MST_Kiln where valueflag = :valueflag and AccountID = :AccountID";
  9050. parameters.Add(new OracleParameter(":valueflag", OracleDbType.NVarchar2, Constant.INT_IS_ONE.ToString(), ParameterDirection.Input));
  9051. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9052. }
  9053. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9054. ServiceResultEntity sre = new ServiceResultEntity();
  9055. if (data == null || data.Rows.Count == 0)
  9056. {
  9057. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9058. return sre;
  9059. }
  9060. sre.Data = new DataSet();
  9061. sre.Data.Tables.Add(data);
  9062. return sre;
  9063. }
  9064. catch (Exception ex)
  9065. {
  9066. throw ex;
  9067. }
  9068. finally
  9069. {
  9070. if (conn != null &&
  9071. conn.ConnState == ConnectionState.Open)
  9072. {
  9073. conn.Close();
  9074. }
  9075. }
  9076. }
  9077. /// <summary>
  9078. /// 取得窑车数据
  9079. /// </summary>
  9080. /// <param name="user">登录用户信息</param>
  9081. /// <returns>查询结果</returns>
  9082. public static ServiceResultEntity GetAllKilnCarInfo(SUserInfo user)
  9083. {
  9084. IDBConnection conn = null;
  9085. try
  9086. {
  9087. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9088. string selSql = String.Empty;
  9089. List<OracleParameter> parameters = new List<OracleParameter>();
  9090. //获取窑车管理的数据
  9091. selSql = "Select KilnCarID,KilnID,KilnCarCode,KilnCarName,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp "
  9092. + "from TP_MST_KilnCar where AccountID = :AccountID";
  9093. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9094. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9095. ServiceResultEntity sre = new ServiceResultEntity();
  9096. if (data == null || data.Rows.Count == 0)
  9097. {
  9098. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9099. return sre;
  9100. }
  9101. sre.Data = new DataSet();
  9102. sre.Data.Tables.Add(data);
  9103. return sre;
  9104. }
  9105. catch (Exception ex)
  9106. {
  9107. throw ex;
  9108. }
  9109. finally
  9110. {
  9111. if (conn != null &&
  9112. conn.ConnState == ConnectionState.Open)
  9113. {
  9114. conn.Close();
  9115. }
  9116. }
  9117. }
  9118. /// <summary>
  9119. /// 取得生产线所有的工序
  9120. /// </summary>
  9121. /// <param name="user">登录用户信息</param>
  9122. /// <returns>查询结果</returns>
  9123. public static ServiceResultEntity GetRptProductionLineProcedures(SUserInfo user, int? RptProductionLineID)
  9124. {
  9125. IDBConnection conn = null;
  9126. try
  9127. {
  9128. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9129. string selSql = "select "
  9130. + " tp_pc_procedure.procedureid, "
  9131. + " tp_pc_procedure.Procedurename "
  9132. + " from "
  9133. + " ( "
  9134. + " select TP_PM_ProductionData.Procedureid "
  9135. + " from TP_PM_ProductionData "
  9136. + " where TP_PM_ProductionData.accountid = :accountID "
  9137. + " and TP_PM_ProductionData.productionlineid = :ProductionLineID "
  9138. + " group by TP_PM_ProductionData.Procedureid "
  9139. + " order by TP_PM_ProductionData.Procedureid "
  9140. + " )temp left join tp_pc_procedure "
  9141. + " on tp_pc_procedure.procedureid=temp.procedureid ";
  9142. List<OracleParameter> parameters = new List<OracleParameter>();
  9143. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9144. parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, RptProductionLineID, ParameterDirection.Input));
  9145. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9146. ServiceResultEntity sre = new ServiceResultEntity();
  9147. if (data == null || data.Rows.Count == 0)
  9148. {
  9149. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9150. return sre;
  9151. }
  9152. sre.Data = new DataSet();
  9153. sre.Data.Tables.Add(data);
  9154. return sre;
  9155. }
  9156. catch (Exception ex)
  9157. {
  9158. throw ex;
  9159. }
  9160. finally
  9161. {
  9162. if (conn != null &&
  9163. conn.ConnState == ConnectionState.Open)
  9164. {
  9165. conn.Close();
  9166. }
  9167. }
  9168. }
  9169. /// <summary>
  9170. /// 取得数据字典数据
  9171. /// </summary>
  9172. /// <param name="Pvalue">显示停用标识</param>
  9173. /// <param name="dictionaryType">字典类别</param>
  9174. /// <param name="user">登录用户信息</param>
  9175. /// <returns>查询结果</returns>
  9176. public static ServiceResultEntity GetRptDictionaryData(byte Pvalue, string dictionaryType, SUserInfo user)
  9177. {
  9178. IDBConnection conn = null;
  9179. try
  9180. {
  9181. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9182. string selSql = String.Empty;
  9183. List<OracleParameter> parameters = new List<OracleParameter>();
  9184. //根据帐套获得数据字典管理的数据
  9185. if (Pvalue.ToString() == Constant.INT_IS_ONE.ToString())
  9186. {
  9187. selSql = "Select DictionaryID,DictionaryType,DictionaryValue,DisplayNo,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,"
  9188. + "UpdateUserID,OPTimeStamp from TP_MST_DataDictionary where DictionaryType = :DictionaryType and AccountID = :AccountID";
  9189. parameters.Add(new OracleParameter(":DictionaryType", OracleDbType.NVarchar2, dictionaryType, ParameterDirection.Input));
  9190. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9191. }
  9192. //根据帐套,标识获得数据字典管理的数据
  9193. else if (Pvalue.ToString() == Constant.INT_IS_ZERO.ToString())
  9194. {
  9195. selSql = "Select DictionaryID,DictionaryType,DictionaryValue,DisplayNo,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,"
  9196. + "UpdateUserID,OPTimeStamp from TP_MST_DataDictionary where valueflag = :valueflag and DictionaryType = :DictionaryType and AccountID = :AccountID";
  9197. parameters.Add(new OracleParameter(":valueflag", OracleDbType.Int32, Constant.INT_IS_ONE, ParameterDirection.Input));
  9198. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9199. parameters.Add(new OracleParameter(":DictionaryType", OracleDbType.NVarchar2, dictionaryType, ParameterDirection.Input));
  9200. }
  9201. DataTable data = conn.GetSqlResultToDt(selSql.ToString(), parameters.ToArray());
  9202. ServiceResultEntity sre = new ServiceResultEntity();
  9203. if (data == null || data.Rows.Count == 0)
  9204. {
  9205. //sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9206. return sre;
  9207. }
  9208. sre.Data = new DataSet();
  9209. sre.Data.Tables.Add(data);
  9210. return sre;
  9211. }
  9212. catch (Exception ex)
  9213. {
  9214. throw ex;
  9215. }
  9216. finally
  9217. {
  9218. if (conn != null &&
  9219. conn.ConnState == ConnectionState.Open)
  9220. {
  9221. conn.Close();
  9222. }
  9223. }
  9224. }
  9225. #endregion 公共函数
  9226. #endregion 统一使用Se模式rviceResultEntity类
  9227. /// <summary>
  9228. /// 获取注浆次数报表
  9229. /// </summary>
  9230. /// <param name="groutingLineEntity"></param>
  9231. /// <param name="user"></param>
  9232. /// <returns></returns>
  9233. public static ServiceResultEntity GetGroutingCount(GroutingLineEntity groutingLineEntity, SUserInfo user)
  9234. {
  9235. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9236. try
  9237. {
  9238. con.Open();
  9239. OracleParameter[] paras = new OracleParameter[]{
  9240. new OracleParameter("BuildingNo",OracleDbType.NVarchar2,
  9241. groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
  9242. new OracleParameter("FloorNo",OracleDbType.NVarchar2,
  9243. groutingLineEntity.FLOORNO,ParameterDirection.Input),
  9244. new OracleParameter("GroutingLineNo",OracleDbType.NVarchar2,
  9245. groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
  9246. new OracleParameter("GroutingLineCode",OracleDbType.NVarchar2,
  9247. groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
  9248. new OracleParameter("GroutingLineName",OracleDbType.NVarchar2,
  9249. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  9250. new OracleParameter("GMouldTypeID",OracleDbType.Int32,
  9251. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  9252. new OracleParameter("remarks",OracleDbType.NVarchar2,
  9253. groutingLineEntity.REMARKS,ParameterDirection.Input),
  9254. new OracleParameter("AccountID",OracleDbType.Int32,
  9255. user.AccountID,ParameterDirection.Input),
  9256. new OracleParameter("UserId",OracleDbType.Int32,
  9257. user.UserID,ParameterDirection.Input),
  9258. new OracleParameter("PurviewType",OracleDbType.Int32,
  9259. groutingLineEntity.Purview,ParameterDirection.Input),
  9260. new OracleParameter("rs_result",OracleDbType.RefCursor,
  9261. ParameterDirection.Output),
  9262. new OracleParameter("UserCode",OracleDbType.NVarchar2,
  9263. groutingLineEntity.USERCODE,ParameterDirection.Input),
  9264. };
  9265. //调用获取符合条件的成型线信息
  9266. DataSet ds = con.ExecStoredProcedure("PRO_RPT_GetGroutingCount", paras);
  9267. ServiceResultEntity sre = new ServiceResultEntity();
  9268. if (ds == null || ds.Tables[0].Rows.Count == 0)
  9269. {
  9270. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9271. return sre;
  9272. }
  9273. sre.Data = new DataSet();
  9274. //DataTable dt=ds.Tables[0];
  9275. sre.Data.Tables.Add(ds.Tables[0].Copy());
  9276. return sre;
  9277. }
  9278. catch (Exception ex)
  9279. {
  9280. throw ex;
  9281. }
  9282. finally
  9283. {
  9284. if (con.ConnState == ConnectionState.Open)
  9285. {
  9286. con.Close();
  9287. }
  9288. }
  9289. }
  9290. #region 在产产品汇总表
  9291. /// <summary>
  9292. /// 取得RPT030105(在产产品汇总表)的汇总信息查询数据
  9293. /// </summary>
  9294. /// <param name="user">登录用户信息</param>
  9295. /// <param name="se">查询条件</param>
  9296. /// <returns>查询结果</returns>
  9297. public static ServiceResultEntity GetRPT030105Data(SUserInfo user, RPT030105_SE se)
  9298. {
  9299. IDBConnection conn = null;
  9300. try
  9301. {
  9302. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9303. List<OracleParameter> parameters = new List<OracleParameter>();
  9304. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030105SQL(user, se, ref parameters));
  9305. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  9306. ServiceResultEntity sre = new ServiceResultEntity();
  9307. if (data == null || data.Rows.Count == 0)
  9308. {
  9309. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9310. return sre;
  9311. }
  9312. sre.Data = new DataSet();
  9313. sre.Data.Tables.Add(data);
  9314. return sre;
  9315. }
  9316. catch (Exception ex)
  9317. {
  9318. throw ex;
  9319. }
  9320. finally
  9321. {
  9322. if (conn != null &&
  9323. conn.ConnState == ConnectionState.Open)
  9324. {
  9325. conn.Close();
  9326. }
  9327. }
  9328. }
  9329. /// <summary>
  9330. /// 获取RPT030105画面(产品产量汇总表)的汇总信息查询sql
  9331. /// </summary>
  9332. /// <returns>sql</returns>
  9333. private static string GetRPT030105SQL(SUserInfo user, RPT030105_SE se, ref List<OracleParameter> parameters)
  9334. {
  9335. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9336. //if (user.AccountCode == "dongke")
  9337. {
  9338. #region
  9339. /*
  9340. string selSql =
  9341. "select " +
  9342. " ProcedureID," +
  9343. " procedurecode, " +
  9344. " decode(productionlinename, '总计', '--', procedurename) procedurename, " +
  9345. " productionlineid, " +
  9346. " productionlinecode, " +
  9347. " productionlinename, " +
  9348. " decode(productionlinename, '--', '--', Usercode) Usercode, " +
  9349. " decode(productionlinename, '--', null, UserID) UserID, " +
  9350. " subGoodsTypecode, " +
  9351. " Goodsid," +
  9352. " Goodscode, " +
  9353. " Goodstypename, " +
  9354. " InCount from (" +
  9355. "select " +
  9356. " ProcedureID," +
  9357. " procedurecode, " +
  9358. " decode(usercode,'合计','合计', decode(usercode,'小计','--',decode(usercode,'--','--',procedurename))) procedurename, " +
  9359. " productionlineid, " +
  9360. " productionlinecode, " +
  9361. " decode(ProcedureID,'总计','总计',decode(usercode,'小计','--',productionlinename)) productionlinename, " +
  9362. " decode(ProcedureID,'总计','--',Usercode) Usercode, " +
  9363. " decode(ProcedureID,'总计',null,Userid) Userid, " +
  9364. " subGoodsTypecode, " +
  9365. " Goodsid," +
  9366. " Goodscode, " +
  9367. " decode(usercode,'小计','小计',Goodstypename)Goodstypename, " +
  9368. " InCount " +
  9369. "from " +
  9370. "(" +
  9371. " select " +
  9372. " ProcedureID, " +
  9373. " procedurecode, " +
  9374. " procedurename, " +
  9375. " productionlineid, " +
  9376. " productionlinecode, " +
  9377. " productionlinename, " +
  9378. " decode(procedurecode,'--','合计',Usercode) Usercode, " +
  9379. " decode(procedurecode,'--',null,Userid) Userid, " +
  9380. " subGoodsTypecode," +
  9381. " Goodsid," +
  9382. " Goodscode," +
  9383. " Goodstypename, " +
  9384. " InCount " +
  9385. " from ( select " +
  9386. " decode(grouping(tp_pc_procedure.ProcedureID),1,'总计',tp_pc_procedure.ProcedureID) ProcedureID," +
  9387. " decode(grouping(tp_pc_procedure.procedurecode),1,'--',tp_pc_procedure.procedurecode) procedurecode, " +
  9388. " decode(grouping(tp_pc_procedure.procedurename),1,'--',tp_pc_procedure.procedurename) procedurename, " +
  9389. " decode(grouping(tp_pm_inproduction.productionlineid),1,'--',tp_pm_inproduction.productionlineid) productionlineid, " +
  9390. " decode(grouping(tp_pm_inproduction.productionlinecode),1,'--',tp_pm_inproduction.productionlinecode) productionlinecode, " +
  9391. " decode(grouping(tp_pm_inproduction.productionlinename),1,'--',tp_pm_inproduction.productionlinename) productionlinename, " +
  9392. " decode(grouping(TP_MST_User.Usercode),1,'小计',TP_MST_User.Usercode) Usercode," +
  9393. " decode(grouping(TP_MST_User.Userid),1,null,TP_MST_User.Userid) Userid," +
  9394. " decode(grouping(substr(TP_MST_GoodsType.Goodstypecode,0,6)),1,'--',substr(TP_MST_GoodsType.Goodstypecode,0,6)) subGoodsTypecode," +
  9395. " decode(grouping(TP_MST_Goods.Goodscode),1,'--',TP_MST_Goods.Goodscode) Goodscode," +
  9396. " decode(grouping(TP_MST_Goods.Goodsid),1,'--',TP_MST_Goods.Goodsid) Goodsid," +
  9397. " decode(grouping(TP_MST_GoodsType.Goodstypename),1,'--',TP_MST_GoodsType.Goodstypename) Goodstypename," +
  9398. " count(barcode) as InCount " +
  9399. " from tp_pm_inproduction " +
  9400. " left join tp_pc_procedure" +
  9401. " on tp_pm_inproduction.FlowProcedureID=tp_pc_procedure.ProcedureID" +
  9402. " 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" +
  9403. " Where 1=1 " +
  9404. " and tp_pm_inproduction.AccountID=:AccountID and tp_pm_inproduction.valueflag=1";
  9405. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  9406. {
  9407. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1";
  9408. selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1";
  9409. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  9410. }
  9411. if (!string.IsNullOrEmpty(se.LineIDS))
  9412. {
  9413. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||tp_pm_inproduction.ProductionLineId||',')>0 ";
  9414. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  9415. }
  9416. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  9417. {
  9418. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||tp_pm_inproduction.FlowProcedureId||',')>0 ";
  9419. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  9420. }
  9421. if (!string.IsNullOrEmpty(se.GoodsCode))
  9422. {
  9423. selSql = selSql + " AND instr(','||:GoodsCode||',',','||tp_pm_inproduction.goodsCode||',')>0 ";
  9424. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  9425. }
  9426. selSql = selSql +
  9427. "group by " +
  9428. " rollup(tp_pc_procedure.ProcedureID, " +
  9429. " tp_pc_procedure.procedurecode, " +
  9430. " tp_pc_procedure.procedurename, " +
  9431. " tp_pm_inproduction.productionlineid, " +
  9432. " tp_pm_inproduction.productionlinecode, " +
  9433. " tp_pm_inproduction.productionlinename, " +
  9434. " substr(TP_MST_GoodsType.Goodstypecode,0,6), " +
  9435. " TP_MST_User.Usercode," +
  9436. " TP_MST_Goods.Goodscode, " +
  9437. " TP_MST_User.UserID," +
  9438. " TP_MST_Goods.GoodsID, " +
  9439. " TP_MST_GoodsType.Goodstypename)) temp ) temp2 " +
  9440. "where 1=1 " +
  9441. "and (Goodstypename!='--')" +
  9442. "or (Goodstypename='--' and UserCode='小计' and subGoodsTypecode!='--') " +
  9443. "or (Goodstypename='--' and UserCode='合计') " +
  9444. "or (Goodstypename='--' and UserCode='总计') )";
  9445. return selSql;
  9446. */
  9447. #endregion
  9448. }
  9449. string sqlString = "select t.productionlineid\n" +
  9450. " ,t.productionlinecode\n" +
  9451. " ,decode(gid\n" +
  9452. " ,15\n" +
  9453. " ,'总计'\n" +
  9454. " ,t.productionlinename) productionlinename\n" +
  9455. " ,t.ProcedureID\n" +
  9456. " ,t.procedurecode\n" +
  9457. " ,decode(gid, 3, '合计【' || t.procedurename || '】', t.procedurename) procedurename\n" +
  9458. " ,t.Goodstypeid2\n" +
  9459. " ,t.Goodstypecode2\n" +
  9460. " ,t.Goodstypename2\n" +
  9461. //" ,decode(gid, 1, '小计【' || t.Goodstypename2 || '】', t.Goodstypename2) Goodstypename2\n" +
  9462. " ,t.userid\n" +
  9463. " ,t.usercode\n" +
  9464. " ,t.Goodsid\n" +
  9465. " ,t.Goodscode ,t.GOODSNAME\n" +
  9466. " ,t.InCount\n" +
  9467. " ,t.STAFFNAME AS STAFFNAMEs\n" +
  9468. " from (select grouping_id(inp.productionlineid\n" +
  9469. " ,inp.ProcedureID\n" +
  9470. //" ,gt2.Goodstypeid\n" +
  9471. //" ,gt.Goodstypeid\n" +
  9472. " ,inp.userid\n" +
  9473. " ,inp.Goodsid) gid\n" +
  9474. " ,inp.productionlineid\n" +
  9475. " ,pline.productionlinecode\n" +
  9476. " ,pline.productionlinename\n" +
  9477. " ,inp.ProcedureID\n" +
  9478. " ,p.procedurecode\n" +
  9479. " ,p.procedurename\n" +
  9480. //" ,gt2.GoodstypeID GoodstypeID2\n" +
  9481. //" ,gt2.Goodstypecode Goodstypecode2\n" +
  9482. //" ,gt2.Goodstypename Goodstypename2\n" +
  9483. " ,gt.GoodstypeID GoodstypeID2\n" +
  9484. " ,gt.Goodstypecode Goodstypecode2\n" +
  9485. " ,gt.Goodstypename Goodstypename2\n" +
  9486. " ,inp.Goodsid\n" +
  9487. " ,inp.userid\n" +
  9488. " ,u.usercode\n" +
  9489. " ,g.Goodscode ,g.GOODSNAME\n" +
  9490. " ,count(inp.barcode) as InCount\n" +
  9491. " ,STAFF.STAFFNAME\n" +
  9492. " from tp_pm_inproduction inp\n" +
  9493. " inner join tp_pc_procedure p\n" +
  9494. " on inp.ProcedureID = p.ProcedureID\n" +
  9495. " inner join tp_pc_productionline pline\n" +
  9496. " on pline.productionlineid = inp.productionlineid\n" +
  9497. " inner join TP_MST_User u\n" +
  9498. " on inp.userid = u.Userid\n" +
  9499. " inner join TP_MST_Goods g\n" +
  9500. " on inp.goodsid = g.Goodsid\n" +
  9501. " inner join TP_MST_GoodsType gt\n" +
  9502. " on g.GoodsTypeID = gt.GoodsTypeID\n" +
  9503. " INNER JOIN TP_PM_PRODUCTIONDATA TPD ON INP.PRODUCTIONDATAID = TPD.PRODUCTIONDATAID\n" +
  9504. " LEFT JOIN (\n" +
  9505. " SELECT\n" +
  9506. " D.CLASSESSETTINGID,\n" +
  9507. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME \n" +
  9508. " FROM\n" +
  9509. " (\n" +
  9510. " SELECT\n" +
  9511. " CD.CLASSESSETTINGID,\n" +
  9512. " HR.STAFFNAME \n" +
  9513. " FROM\n" +
  9514. " TP_PC_CLASSESDETAIL CD\n" +
  9515. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID\n" +
  9516. " ) D \n" +
  9517. " GROUP BY\n" +
  9518. " D.CLASSESSETTINGID\n" +
  9519. " ) STAFF ON TPD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n" +
  9520. //" inner join TP_MST_GoodsType gt2\n" +
  9521. //" on gt.accountid = gt2.accountid\n" +
  9522. //" and substr(gt.Goodstypecode, 0, 6) = gt2.Goodstypecode\n" +
  9523. " where inp.AccountID = 1\n" +
  9524. " and inp.valueflag = '1'\n";
  9525. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  9526. {
  9527. //selSql = selSql + " AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1";
  9528. sqlString += " AND instr(gt.GOODSTYPECode,:GoodsTypeIDS)=1";
  9529. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  9530. }
  9531. if (!string.IsNullOrEmpty(se.LineIDS))
  9532. {
  9533. sqlString += " AND instr(','||:ProductionLineIDS||',',','||inp.ProductionLineId||',')>0 ";
  9534. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  9535. }
  9536. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  9537. {
  9538. sqlString += " AND instr(','||:ProcedureIDS||',',','||inp.ProcedureId||',')>0 ";
  9539. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  9540. }
  9541. if (!string.IsNullOrEmpty(se.GoodsCode))
  9542. {
  9543. sqlString += " AND instr(','||:GoodsCode||',',','||inp.goodsCode||',')>0 ";
  9544. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  9545. }
  9546. // fenglinyong add 添加员工姓名 2022-08-29
  9547. if (!string.IsNullOrEmpty(se.StaffName))
  9548. {
  9549. sqlString += " AND instr(STAFF.STAFFNAME,:STAFFNAME)=1";
  9550. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  9551. }
  9552. // fenglinyong add 添加员工姓名 2022-08-29
  9553. //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";
  9554. //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";
  9555. 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,g.GOODSNAME,STAFF.STAFFNAME),(inp.productionlineid, pline.productionlinecode, pline.productionlinename, inp.ProcedureID, p.procedurecode, p.procedurename),())) t";
  9556. sqlString += " order by t.procedurename, t.usercode, t.Goodstypecode2, t.Goodscode";
  9557. return sqlString;
  9558. }
  9559. /// <summary>
  9560. /// 取得RPT030105(在产产品汇总表)的汇总信息查询数据
  9561. /// </summary>
  9562. /// <param name="user">登录用户信息</param>
  9563. /// <param name="se">查询条件</param>
  9564. /// <returns>查询结果</returns>
  9565. public static ServiceResultEntity GetRPT030105IData(SUserInfo user, RPT030105_SE se)
  9566. {
  9567. IDBConnection conn = null;
  9568. try
  9569. {
  9570. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9571. List<OracleParameter> parameters = new List<OracleParameter>();
  9572. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030105ISQL(user, se, ref parameters));
  9573. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9574. if (se != null)
  9575. {
  9576. if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
  9577. {
  9578. //sql.Append(" AND instr(','||:GoodsTypeIDS||',',','||TP_MST_GOODSTYPE.GOODSTYPECode||',')=1");
  9579. sql.Append(" AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeIDS)=1");
  9580. parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
  9581. }
  9582. if (!string.IsNullOrEmpty(se.LineIDS))
  9583. {
  9584. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||tp_pm_inproduction.ProductionLineId||',')>0 ");
  9585. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  9586. }
  9587. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  9588. {
  9589. sql.Append(" AND instr(','||:ProcedureIDS||',',','||tp_pm_inproduction.FlowProcedureId||',')>0 ");
  9590. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  9591. }
  9592. if (!string.IsNullOrEmpty(se.GoodsCode))
  9593. {
  9594. sql.Append(" AND instr(','||:GoodsCode||',',','||tp_pm_inproduction.goodsCode||',')>0 ");
  9595. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  9596. }
  9597. // 总单点击查询用
  9598. if (se.GoodsID.HasValue)
  9599. {
  9600. sql.Append(" AND tp_pm_inproduction.Goodsid = :GoodsID ");
  9601. parameters.Add(new OracleParameter(":GoodsID", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  9602. }
  9603. if (se.UserID.HasValue)
  9604. {
  9605. sql.Append(" AND A.userid = :userid ");
  9606. parameters.Add(new OracleParameter(":userid", OracleDbType.Int32, se.UserID, ParameterDirection.Input));
  9607. }
  9608. // fenglinyong add 添加员工姓名 2022-08-29
  9609. if (!string.IsNullOrEmpty(se.StaffName))
  9610. {
  9611. sql.Append(" AND instr(STAFF.STAFFNAME,:STAFFNAME)=1");
  9612. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  9613. }
  9614. // fenglinyong add 添加员工姓名 2022-08-29
  9615. }
  9616. sql.Append(" order by TP_PM_InProduction.UpdateTime desc");
  9617. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  9618. ServiceResultEntity sre = new ServiceResultEntity();
  9619. if (data == null || data.Rows.Count == 0)
  9620. {
  9621. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9622. return sre;
  9623. }
  9624. sre.Data = new DataSet();
  9625. sre.Data.Tables.Add(data);
  9626. return sre;
  9627. }
  9628. catch (Exception ex)
  9629. {
  9630. throw ex;
  9631. }
  9632. finally
  9633. {
  9634. if (conn != null &&
  9635. conn.ConnState == ConnectionState.Open)
  9636. {
  9637. conn.Close();
  9638. }
  9639. }
  9640. }
  9641. /// <summary>
  9642. /// 获取RPT030105画面(产品产量汇总表)的汇总信息查询sql
  9643. /// </summary>
  9644. /// <returns>sql</returns>
  9645. private static string GetRPT030105ISQL(SUserInfo user, RPT030105_SE se, ref List<OracleParameter> parameters)
  9646. {
  9647. string selSql =
  9648. @"
  9649. SELECT
  9650. TP_PM_INPRODUCTION.BARCODE,
  9651. TP_PM_INPRODUCTION.GOODSID,
  9652. TP_PM_INPRODUCTION.GOODSCODE,
  9653. TP_PM_INPRODUCTION.GOODSNAME,
  9654. TP_PM_INPRODUCTION.USERID,
  9655. A.USERNAME AS USERNAME,
  9656. A.USERCODE AS USERCODE,
  9657. TP_PM_INPRODUCTION.PRODUCTIONLINEID,
  9658. TP_PM_INPRODUCTION.PRODUCTIONLINECODE,
  9659. TP_PM_INPRODUCTION.PRODUCTIONLINENAME,
  9660. TP_PM_INPRODUCTION.MODELTYPE,
  9661. DECODE( TP_PM_INPRODUCTION.INSCRAPFLAG, '1', '待审核的报废品', '正常' ) AS INSCRAPFLAG,
  9662. TP_PM_INPRODUCTION.ISPUBLICBODY,
  9663. DECODE( TP_PM_INPRODUCTION.ISREFIRE, '6', '1', '0' ) AS ISREFIRE,
  9664. DECODE( TP_PM_INPRODUCTION.CANMANYTIMES, '1', '能', '不能' ) AS CANMANYTIMES,
  9665. DECODE( TP_PM_INPRODUCTION.PROCEDUREMODEL, '1', '计件模型', '检验模型' ) AS PROCEDUREMODEL,
  9666. TP_PM_INPRODUCTION.GROUTINGDAILYID,
  9667. TP_PM_INPRODUCTION.GROUTINGDAILYDETAILID,
  9668. TP_PM_INPRODUCTION.GROUTINGDATE,
  9669. TP_PM_INPRODUCTION.GROUTINGLINEID,
  9670. TP_PM_INPRODUCTION.GROUTINGLINECODE,
  9671. TP_PM_INPRODUCTION.GROUTINGLINENAME,
  9672. TP_PM_INPRODUCTION.PROCEDUREID COMPLETEPROCEDUREID,
  9673. D.PROCEDURENAME AS COMPLETEPROCEDURENAME,
  9674. TP_PM_INPRODUCTION.GMOULDTYPEID,
  9675. TP_MST_GMOULDTYPE.GMOULDTYPENAME AS GMOULDTYPENAME,
  9676. TP_PM_INPRODUCTION.GROUTINGLINEDETAILID,
  9677. TP_PM_INPRODUCTION.GROUTINGMOULDCODE,
  9678. TP_PM_INPRODUCTION.SPECIALREPAIRFLAG,
  9679. TP_PM_INPRODUCTION.GROUTINGUSERCODE,
  9680. TP_PM_GROUTINGDAILYDETAIL.GROUTINGCOUNT,
  9681. TP_PM_INPRODUCTION.REMARKS,
  9682. TP_PM_GROUTINGDAILYDETAIL.GLAZINGROOM,
  9683. TP_PM_INPRODUCTION.GOODSLEVELID,
  9684. TP_MST_GOODSLEVEL.GOODSLEVELNAME,
  9685. TP_PM_INPRODUCTION.GOODSLEVELTYPEID,
  9686. TP_SYS_GOODSLEVELTYPE.GOODSLEVELTYPENAME,
  9687. TP_PM_INPRODUCTION.ACCOUNTID,
  9688. TP_PM_INPRODUCTION.VALUEFLAG,
  9689. TP_PM_INPRODUCTION.CREATETIME,
  9690. TP_PM_INPRODUCTION.CREATEUSERID,
  9691. B.USERNAME AS CREATEUSERNAME,
  9692. TP_PM_INPRODUCTION.PROCEDURETIME AS UPDATETIME,
  9693. TP_PM_INPRODUCTION.UPDATEUSERID,
  9694. C.USERNAME AS UPDATEUSERNAME,
  9695. REPLACE ( ( TP_MST_LOGO.LOGONAME || '[' || TP_MST_LOGO.LOGOCODE || ']' ), '[]', '' ) AS LOGOCODENAME,
  9696. TP_PM_GROUTINGDAILYDETAIL.SECURITYCODE
  9697. ,STAFF.STAFFNAME
  9698. FROM
  9699. TP_PM_INPRODUCTION
  9700. INNER JOIN TP_MST_USER A ON A.USERID = TP_PM_INPRODUCTION.USERID
  9701. INNER JOIN TP_MST_USER B ON B.USERID = TP_PM_INPRODUCTION.CREATEUSERID
  9702. INNER JOIN TP_MST_USER C ON C.USERID = TP_PM_INPRODUCTION.UPDATEUSERID
  9703. INNER JOIN TP_PC_PROCEDURE D ON D.PROCEDUREID = TP_PM_INPRODUCTION.PROCEDUREID
  9704. INNER JOIN TP_MST_GMOULDTYPE ON TP_MST_GMOULDTYPE.GMOULDTYPEID = TP_PM_INPRODUCTION.GMOULDTYPEID
  9705. INNER JOIN TP_SYS_PROCEDUREMODELTYPE ON TP_SYS_PROCEDUREMODELTYPE.PROCEDUREMODELTYPEID = TP_PM_INPRODUCTION.MODELTYPE
  9706. INNER JOIN TP_PM_GROUTINGDAILY ON TP_PM_GROUTINGDAILY.GROUTINGDAILYID = TP_PM_INPRODUCTION.GROUTINGDAILYID
  9707. INNER JOIN TP_PM_GROUTINGDAILYDETAIL ON TP_PM_GROUTINGDAILYDETAIL.GROUTINGDAILYDETAILID = TP_PM_INPRODUCTION.GROUTINGDAILYDETAILID
  9708. INNER JOIN TP_PC_GROUTINGLINEDETAIL ON TP_PC_GROUTINGLINEDETAIL.GROUTINGLINEDETAILID = TP_PM_INPRODUCTION.GROUTINGLINEDETAILID
  9709. INNER JOIN TP_MST_ACCOUNT ON TP_MST_ACCOUNT.ACCOUNTID = TP_PM_INPRODUCTION.ACCOUNTID
  9710. LEFT JOIN TP_MST_GOODSLEVEL ON TP_MST_GOODSLEVEL.GOODSLEVELID = TP_PM_INPRODUCTION.GOODSLEVELID
  9711. LEFT JOIN TP_SYS_GOODSLEVELTYPE ON TP_SYS_GOODSLEVELTYPE.GOODSLEVELTYPEID = TP_PM_INPRODUCTION.GOODSLEVELTYPEID
  9712. LEFT JOIN TP_MST_LOGO ON TP_PM_INPRODUCTION.LOGOID = TP_MST_LOGO.LOGOID
  9713. LEFT JOIN TP_MST_GOODS ON TP_PM_INPRODUCTION.GOODSID = TP_MST_GOODS.GOODSID
  9714. LEFT JOIN TP_MST_GOODSTYPE ON TP_MST_GOODS.GOODSTYPEID = TP_MST_GOODSTYPE.GOODSTYPEID
  9715. INNER JOIN TP_PM_PRODUCTIONDATA PD ON TP_PM_INPRODUCTION.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  9716. LEFT JOIN (
  9717. SELECT
  9718. D.CLASSESSETTINGID,
  9719. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  9720. FROM
  9721. (
  9722. SELECT
  9723. CD.CLASSESSETTINGID,
  9724. HR.STAFFNAME
  9725. FROM
  9726. TP_PC_CLASSESDETAIL CD
  9727. LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID
  9728. ) D
  9729. GROUP BY
  9730. D.CLASSESSETTINGID
  9731. ) STAFF ON PD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  9732. WHERE
  9733. TP_PM_INPRODUCTION.ACCOUNTID = :AccountID
  9734. ";
  9735. return selSql;
  9736. }
  9737. #endregion
  9738. /// <summary>
  9739. /// 取得RPT030106(成检缺陷汇总表)的汇总信息查询数据
  9740. /// </summary>
  9741. /// <param name="user">登录用户信息</param>
  9742. /// <param name="se">查询条件</param>
  9743. /// <returns>查询结果</returns>
  9744. public static ServiceResultEntity GetRPT030106Data(SUserInfo user, RPT030106_SE se)
  9745. {
  9746. IDBConnection conn = null;
  9747. try
  9748. {
  9749. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  9750. List<OracleParameter> parameters = new List<OracleParameter>();
  9751. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030106SQL(user, se, ref parameters));
  9752. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  9753. ServiceResultEntity sre = new ServiceResultEntity();
  9754. if (data == null || data.Rows.Count == 0)
  9755. {
  9756. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  9757. return sre;
  9758. }
  9759. sre.Data = new DataSet();
  9760. sre.Data.Tables.Add(data);
  9761. return sre;
  9762. }
  9763. catch (Exception ex)
  9764. {
  9765. throw ex;
  9766. }
  9767. finally
  9768. {
  9769. if (conn != null &&
  9770. conn.ConnState == ConnectionState.Open)
  9771. {
  9772. conn.Close();
  9773. }
  9774. }
  9775. }
  9776. /// <summary>
  9777. /// 获取RPT030106画面(成检缺陷汇总表)的汇总信息查询sql
  9778. /// </summary>
  9779. /// <returns>sql</returns>
  9780. private static string GetRPT030106SQL(SUserInfo user, RPT030106_SE se, ref List<OracleParameter> parameters)
  9781. {
  9782. #region
  9783. //string selSql = "";
  9784. //parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  9785. //selSql = selSql +
  9786. // "select " +
  9787. // " DefectProcedureID," +
  9788. // " DefectProcedureCode, " +
  9789. // " decode(DefectProcedureID, '总计', '--', decode(DefectCode, '小计', decode(DefectProcedureName, '', '', '--'), DefectProcedureName)) DefectProcedureName," +
  9790. // " ProductionLineID, " +
  9791. // " ProductionLineCode," +
  9792. // " decode(DefectProcedureID, '总计', '总计', decode(DefectCode, '小计', '--', ProductionLineName)) ProductionLineName, " +
  9793. // " ProcedureID, " +
  9794. // " ProcedureCode," +
  9795. // " decode(DefectCode, '小计', '--', ProcedureName) ProcedureName," +
  9796. // " DefectCode, " +
  9797. // " DefectName, " +
  9798. // " DefectTypeName, " +
  9799. // " Userid," +
  9800. // " Usercode," +
  9801. // " Username," +
  9802. // " Goodstypename," +
  9803. // " Goodsid," +
  9804. // " Goodscode," +
  9805. // " Goodsname," +
  9806. // " InCount from (" +
  9807. // "select " +
  9808. // " DefectProcedureID," +
  9809. // " DefectProcedureCode, " +
  9810. // " decode(DefectProcedureCode, '--', '合计', DefectProcedureName) DefectProcedureName, " +
  9811. // " ProductionLineID, " +
  9812. // " ProductionLineCode, " +
  9813. // " ProductionLineName, " +
  9814. // " ProcedureID, " +
  9815. // " ProcedureCode, " +
  9816. // " ProcedureName, " +
  9817. // " decode(DefectName, '--', decode(DefectCode, '--', '--', '小计'), DefectCode) DefectCode, " +
  9818. // " DefectName, " +
  9819. // " DefectTypeName, " +
  9820. // " Userid, " +
  9821. // " Usercode, " +
  9822. // " Username, " +
  9823. // " Goodstypename, " +
  9824. // " Goodsid, " +
  9825. // " Goodscode, " +
  9826. // " Goodsname, " +
  9827. // " InCount " +
  9828. // "from " +
  9829. // "(" +
  9830. // " select " +
  9831. // " decode(grouping(TP_PM_Defect.DefectProcedureID),1,'总计',TP_PM_Defect.DefectProcedureID) DefectProcedureID, " +
  9832. // " decode(grouping(TP_PM_Defect.DefectProcedureCode),1,'--',TP_PM_Defect.DefectProcedureCode) DefectProcedureCode, " +
  9833. // " decode(grouping(TP_PM_Defect.DefectProcedureName),1,'--',TP_PM_Defect.DefectProcedureName) DefectProcedureName, " +
  9834. // " decode(grouping(TP_PM_Defect.ProductionLineID),1,'--',TP_PM_Defect.ProductionLineID) ProductionLineID, " +
  9835. // " decode(grouping(TP_PM_Defect.ProductionLineCode),1,'--',TP_PM_Defect.ProductionLineCode) ProductionLineCode, " +
  9836. // " decode(grouping(TP_PM_Defect.ProductionLineName),1,'--',TP_PM_Defect.ProductionLineName) ProductionLineName, " +
  9837. // " decode(grouping(TP_PM_Defect.ProcedureID),1,'--',TP_PM_Defect.ProcedureID) ProcedureID, " +
  9838. // " decode(grouping(TP_PM_Defect.ProcedureCode),1,'--',TP_PM_Defect.ProcedureCode) ProcedureCode," +
  9839. // " decode(grouping(TP_PM_Defect.ProcedureName),1,'--',TP_PM_Defect.ProcedureName) ProcedureName," +
  9840. // " decode(grouping(TP_PM_Defect.DefectCode),1,'--',TP_PM_Defect.DefectCode) DefectCode, " +
  9841. // " decode(grouping(TP_PM_Defect.DefectName),1,'--',TP_PM_Defect.DefectName) DefectName, " +
  9842. // " decode(grouping(TP_MST_DefectType.DefectTypeName),1,'--',TP_MST_DefectType.DefectTypeName) DefectTypeName, " +
  9843. // " decode(grouping(TP_PM_Defect.Userid),1,'--',TP_PM_Defect.Userid) Userid, " +
  9844. // " decode(grouping(TP_PM_Defect.Usercode),1,'--',TP_PM_Defect.Usercode) Usercode, " +
  9845. // " decode(grouping(TP_PM_Defect.Username),1,'--',TP_PM_Defect.Username) Username, " +
  9846. // " decode(grouping(TP_MST_GoodsType.Goodstypename),1,'--',TP_MST_GoodsType.Goodstypename) Goodstypename, " +
  9847. // " decode(grouping(TP_PM_Defect.Goodsid),1,'--',TP_PM_Defect.Goodsid) Goodsid, " +
  9848. // " decode(grouping(TP_PM_Defect.Goodscode),1,'--',TP_PM_Defect.Goodscode) Goodscode, " +
  9849. // " decode(grouping(TP_PM_Defect.Goodsname),1,'--',TP_PM_Defect.Goodscode) Goodsname, " +
  9850. // " count(TP_PM_Defect.barcode) as InCount " +
  9851. // " from TP_PM_Defect " +
  9852. // " left join tp_pc_procedure on TP_PM_Defect.ProcedureID=tp_pc_procedure.ProcedureID " +
  9853. // " left join TP_MST_Goods on TP_PM_Defect.Goodsid=TP_MST_Goods.Goodsid" +
  9854. // " left join TP_MST_GoodsType on TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID" +
  9855. // " left join TP_MST_Defect on TP_PM_Defect.DefectID=TP_MST_Defect.DefectID" +
  9856. // " left join TP_MST_DefectType on TP_MST_Defect.DefectTypeID=TP_MST_DefectType.DefectTypeID" +
  9857. // " left join TP_PM_ProductionData on TP_PM_ProductionData.ProductionDataID=TP_PM_Defect.ProductionDataID" +
  9858. // " Where TP_PM_Defect.valueflag=1 and tp_pc_procedure.ModelType=-1" +
  9859. // " and TP_PM_Defect.AccountID=:AccountID ";
  9860. //if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  9861. //{
  9862. // selSql = selSql + " AND instr(TP_MST_GOODSTYPE.GOODSTYPECode,:GoodsTypeCode)=1 ";
  9863. // parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  9864. //}
  9865. //if (!string.IsNullOrEmpty(se.LineIDS))
  9866. //{
  9867. // selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||TP_PM_Defect.ProductionLineId||',')>0 ";
  9868. // parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  9869. //}
  9870. //if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  9871. //{
  9872. // //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  9873. // selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 ) ";
  9874. // parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  9875. //}
  9876. //else
  9877. //{
  9878. // // modify by chenxy :没有选择时,应全查询出来。
  9879. // //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  9880. //}
  9881. //if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  9882. //{
  9883. // selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||TP_PM_Defect.ProcedureID||',')>0 ";
  9884. // parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  9885. //}
  9886. //if (!string.IsNullOrEmpty(se.KilnCode))
  9887. //{
  9888. // selSql = selSql + " AND instr(tp_pm_productiondata.KilnCode,:KilnCode) >0 ";
  9889. // parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  9890. //}
  9891. //if (!string.IsNullOrEmpty(se.GoodsIDS))
  9892. //{
  9893. // selSql = selSql + " AND instr(','||:GoodsIDS||',',','||TP_PM_Defect.Goodsid||',')>0 ";
  9894. // parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  9895. //}
  9896. //if (!string.IsNullOrEmpty(se.GoodsCode))
  9897. //{
  9898. // selSql = selSql + " AND instr(TP_PM_Defect.goodsCode,:GoodsCode) >0 ";
  9899. // parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  9900. //}
  9901. //if (!string.IsNullOrEmpty(se.DefectUserCode))
  9902. //{
  9903. // selSql = selSql + " AND instr(TP_PM_Defect.DefectUserCode,:DefectUserCode) >0 ";
  9904. // parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  9905. //}
  9906. //if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  9907. //{
  9908. // selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||TP_MST_DefectType.DefectTypeID||',')>0 ";
  9909. // parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  9910. //}
  9911. //if (!string.IsNullOrEmpty(se.DefectCode))
  9912. //{
  9913. // selSql = selSql + " AND instr(TP_PM_Defect.DefectCode,:DefectCode) >0 ";
  9914. // parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  9915. //}
  9916. //if (!string.IsNullOrEmpty(se.DefectName))
  9917. //{
  9918. // selSql = selSql + " AND instr(TP_PM_Defect.DefectName,:DefectName) >0";
  9919. // parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  9920. //}
  9921. //if (!string.IsNullOrEmpty(se.CheckUserCode))
  9922. //{
  9923. // selSql = selSql + " AND instr(TP_PM_Defect.UserCode,:UserCode) >0";
  9924. // parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  9925. //}
  9926. //if (se.CreateTimeStart.HasValue)
  9927. //{
  9928. // selSql = selSql + " AND TP_PM_Defect.CreateTime>= :CreateTimeStart ";
  9929. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  9930. //}
  9931. //if (se.CreateTimeEnd.HasValue)
  9932. //{
  9933. // selSql = selSql + " AND TP_PM_Defect.CreateTime<= :CreateTimeEnd ";
  9934. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  9935. //}
  9936. //selSql = selSql +
  9937. // "group by " +
  9938. // " rollup(TP_PM_Defect.DefectProcedureID, " +
  9939. // " TP_PM_Defect.DefectProcedureCode, " +
  9940. // " TP_PM_Defect.DefectProcedureName, " +
  9941. // " TP_PM_Defect.ProductionLineID, " +
  9942. // " TP_PM_Defect.ProductionLineCode, " +
  9943. // " TP_PM_Defect.ProductionLineName, " +
  9944. // " TP_PM_Defect.ProcedureID, " +
  9945. // " TP_PM_Defect.ProcedureCode," +
  9946. // " TP_PM_Defect.ProcedureName, " +
  9947. // " TP_PM_Defect.DefectCode, " +
  9948. // " TP_PM_Defect.DefectName, " +
  9949. // " TP_MST_DefectType.DefectTypeName, " +
  9950. // " TP_PM_Defect.Userid, " +
  9951. // " TP_PM_Defect.Usercode, " +
  9952. // " TP_PM_Defect.Username, " +
  9953. // " TP_MST_GoodsType.Goodstypename, " +
  9954. // " TP_PM_Defect.Goodsid, " +
  9955. // " TP_PM_Defect.Goodscode, " +
  9956. // " TP_PM_Defect.Goodsname " +
  9957. // " )) temp ) temp2 " +
  9958. // "where 1=1 " +
  9959. // "and ((Goodsname!='--' )" +
  9960. // "or (Goodsname='--' and defectcode='小计')" +
  9961. // "or (Goodsname='--' and DefectProcedurename='合计') " +
  9962. // "or (Goodsname='--' and DefectProcedureID='总计'))";
  9963. //////----------------------
  9964. ////if (!string.IsNullOrEmpty(se.CompleteProcedureIDS))
  9965. ////{
  9966. //// selSql = selSql + @" AND exists(select 1 from tp_pm_productiondata where (instr(','||:CompleteProcedureIDS||',',','||ProcedureID||',')>0 ";
  9967. //// parameters.Add(new OracleParameter(":CompleteProcedureIDS", OracleDbType.NVarchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  9968. //// selSql = selSql + " AND TP_PM_ProductionData.CreateTime>= :CompleteCreateTimeStart ";
  9969. //// parameters.Add(new OracleParameter(":CompleteCreateTimeStart", OracleDbType.Date, se.CompleteCreateTimeStart.Value, ParameterDirection.Input));
  9970. //// selSql = selSql + " AND TP_PM_ProductionData.CreateTime<= :CompleteCreateTimeEnd )) ";
  9971. //// parameters.Add(new OracleParameter(":CompleteCreateTimeEnd", OracleDbType.Date, se.CompleteCreateTimeEnd.Value, ParameterDirection.Input));
  9972. ////}
  9973. //////----------------------
  9974. //return selSql;
  9975. #endregion
  9976. string selSql =
  9977. "SELECT t.ProductionLineID\n" +
  9978. " ,t.ProductionLineCode\n" +
  9979. " ,decode(t.gid, 31, '总计', 0, t.ProductionLineName, '--') ProductionLineName\n" +
  9980. " ,t.ProcedureID\n" +
  9981. " ,t.ProcedureCode\n" +
  9982. " ,decode(t.gid, 0, t.ProcedureName, '--') ProcedureName\n" +
  9983. " ,t.DefectProcedureID\n" +
  9984. " ,t.DefectProcedureCode\n" +
  9985. " ,decode(t.gid,\n" +
  9986. " 7,\n" +
  9987. " '合计【' || t.DefectProcedureName || '】',\n" +
  9988. " 0,\n" +
  9989. " t.DefectProcedureName,\n" +
  9990. " '--') DefectProcedureName\n" +
  9991. " ,decode(t.gid, 0, t.DefectCode, '--') DefectCode\n" +
  9992. " ,decode(t.gid,\n" +
  9993. " 3,\n" +
  9994. " '小计【[' || t.DefectCode || ']' || t.DefectName || '】',\n" +
  9995. " 0,\n" +
  9996. " t.DefectName,\n" +
  9997. " '--') DefectName\n" +
  9998. " ,decode(t.gid, 0, t.DefectTypeName, '--') DefectTypeName\n" +
  9999. " --,decode(t.gid, 0, t.Userid, '--') Userid\n" +
  10000. " ,t.Userid\n" +
  10001. " ,decode(t.gid, 0, t.Usercode, '--') Usercode\n" +
  10002. " ,decode(t.gid, 0, t.Username, '--') Username\n" +
  10003. " ,decode(t.gid, 0, t.Goodstypename, '--') Goodstypename\n" +
  10004. " --,decode(t.gid, 0, t.Goodsid, '--') Goodsid\n" +
  10005. " ,t.Goodsid\n" +
  10006. " ,decode(t.gid, 0, t.Goodscode, '--') Goodscode\n" +
  10007. " ,decode(t.gid, 0, t.Goodsname, '--') Goodsname\n" +
  10008. " ,t.InCount\n" +
  10009. " FROM (SELECT grouping_id(pmd.ProductionLineID,\n" +
  10010. " pmd.DefectProcedureID,\n" +
  10011. " pmd.DefectCode,\n" +
  10012. " pmd.userid,\n" +
  10013. " pmd.goodsid) gid\n" +
  10014. " ,pmd.ProductionLineID\n" +
  10015. " ,pmd.ProductionLineCode\n" +
  10016. " ,pmd.ProductionLineName\n" +
  10017. " ,pmd.ProcedureID\n" +
  10018. " ,pmd.ProcedureCode\n" +
  10019. " ,pmd.ProcedureName\n" +
  10020. " ,pmd.DefectProcedureID\n" +
  10021. " ,pmd.DefectProcedureCode\n" +
  10022. " ,pmd.DefectProcedureName\n" +
  10023. " ,pmd.DefectCode\n" +
  10024. " ,pmd.DefectName\n" +
  10025. " ,dt.DefectTypeName\n" +
  10026. " ,pmd.Userid\n" +
  10027. " ,pmd.Usercode\n" +
  10028. " ,pmd.Username\n" +
  10029. " ,gt.Goodstypename\n" +
  10030. " ,pmd.Goodsid\n" +
  10031. " ,pmd.Goodscode\n" +
  10032. " ,pmd.Goodsname\n" +
  10033. " ,COUNT(pmd.barcode) InCount\n" +
  10034. " FROM tp_pm_defect pmd\n" +
  10035. " LEFT JOIN TP_MST_Goods g\n" +
  10036. " ON pmd.Goodsid = g.Goodsid\n" +
  10037. " LEFT JOIN TP_MST_GoodsType gt\n" +
  10038. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  10039. " LEFT JOIN TP_MST_Defect mstd\n" +
  10040. " ON pmd.DefectID = mstd.DefectID\n" +
  10041. " LEFT JOIN TP_MST_DefectType dt\n" +
  10042. " ON mstd.DefectTypeID = dt.DefectTypeID\n" +
  10043. " INNER JOIN tp_pm_productiondata pd\n" +
  10044. " ON pmd.ProductionDataID = pd.ProductionDataID\n" +
  10045. " -- 交接工序\n" +
  10046. " INNER JOIN tp_pm_productiondata hopd\n" +
  10047. " ON hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" +
  10048. " AND hopd.valueflag = '1'\n" +
  10049. " AND hopd.barcode = pd.barcode\n" +
  10050. " AND hopd.kilncarbatchno = pd.kilncarbatchno\n" +
  10051. " WHERE pmd.valueflag = '1'\n" +
  10052. " AND pd.ModelType = -1\n" +
  10053. " AND pmd.AccountID = :AccountID\n";
  10054. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  10055. parameters.Add(new OracleParameter(":HandOverProcedureID", OracleDbType.Int32, se.HandOverProcedureID, ParameterDirection.Input));
  10056. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  10057. {
  10058. selSql = selSql + " AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1 ";
  10059. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  10060. }
  10061. if (!string.IsNullOrEmpty(se.LineIDS))
  10062. {
  10063. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pmd.ProductionLineId||',')>0 ";
  10064. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  10065. }
  10066. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  10067. {
  10068. //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  10069. selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||pmd.DefectProcedureID||',')>0 ) ";
  10070. parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  10071. }
  10072. else
  10073. {
  10074. // modify by chenxy :没有选择时,应全查询出来。
  10075. //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  10076. }
  10077. if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  10078. {
  10079. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||pmd.ProcedureID||',')>0 ";
  10080. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  10081. }
  10082. if (!string.IsNullOrEmpty(se.KilnCode))
  10083. {
  10084. selSql = selSql + " AND instr(pd.KilnCode,:KilnCode) >0 ";
  10085. parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  10086. }
  10087. if (!string.IsNullOrEmpty(se.GoodsIDS))
  10088. {
  10089. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||pmd.Goodsid||',')>0 ";
  10090. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  10091. }
  10092. if (!string.IsNullOrEmpty(se.GoodsCode))
  10093. {
  10094. selSql = selSql + " AND instr(pmd.goodsCode,:GoodsCode) >0 ";
  10095. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  10096. }
  10097. if (!string.IsNullOrEmpty(se.DefectUserCode))
  10098. {
  10099. selSql = selSql + " AND instr(pmd.DefectUserCode,:DefectUserCode) >0 ";
  10100. parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  10101. }
  10102. if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  10103. {
  10104. selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||dt.DefectTypeID||',')>0 ";
  10105. parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  10106. }
  10107. if (!string.IsNullOrEmpty(se.DefectCode))
  10108. {
  10109. selSql = selSql + " AND instr(pmd.DefectCode,:DefectCode) >0 ";
  10110. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  10111. }
  10112. if (!string.IsNullOrEmpty(se.DefectName))
  10113. {
  10114. selSql = selSql + " AND instr(pmd.DefectName,:DefectName) >0 ";
  10115. parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  10116. }
  10117. if (!string.IsNullOrEmpty(se.CheckUserCode))
  10118. {
  10119. selSql = selSql + " AND instr(pmd.UserCode,:UserCode) >0";
  10120. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  10121. }
  10122. if (se.CreateTimeStart.HasValue)
  10123. {
  10124. selSql = selSql + " AND pmd.CreateTime>= :CreateTimeStart ";
  10125. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  10126. }
  10127. if (se.CreateTimeEnd.HasValue)
  10128. {
  10129. selSql = selSql + " AND pmd.CreateTime<= :CreateTimeEnd ";
  10130. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  10131. }
  10132. // 交接时间
  10133. if (se.HandOverTimeStart.HasValue)
  10134. {
  10135. selSql = selSql + " AND hopd.CreateTime>= :HandOverTimeStart ";
  10136. parameters.Add(new OracleParameter(":HandOverTimeStart", OracleDbType.Date, se.HandOverTimeStart.Value, ParameterDirection.Input));
  10137. }
  10138. if (se.HandOverTimeEnd.HasValue)
  10139. {
  10140. selSql = selSql + " AND hopd.CreateTime<= :HandOverTimeEnd ";
  10141. parameters.Add(new OracleParameter(":HandOverTimeEnd", OracleDbType.Date, se.HandOverTimeEnd.Value, ParameterDirection.Input));
  10142. }
  10143. selSql = selSql +
  10144. " GROUP BY GROUPING SETS((pmd.ProductionLineID, pmd.ProductionLineCode, pmd.ProductionLineName, pmd.ProcedureID, pmd.ProcedureCode, pmd.ProcedureName, pmd.DefectProcedureID, pmd.DefectProcedureCode, pmd.DefectProcedureName, pmd.DefectCode, pmd.DefectName, dt.DefectTypeName, pmd.Userid, pmd.Usercode, pmd.Username, gt.Goodstypename, pmd.Goodsid, pmd.Goodscode, pmd.Goodsname),(pmd.ProductionLineID, pmd.ProductionLineCode, pmd.ProductionLineName, pmd.ProcedureID, pmd.ProcedureCode, pmd.ProcedureName, pmd.DefectProcedureID, pmd.DefectProcedureCode, pmd.DefectProcedureName, pmd.DefectCode, pmd.DefectName, dt.DefectTypeName),(pmd.ProductionLineID, pmd.ProductionLineCode, pmd.ProductionLineName, pmd.ProcedureID, pmd.ProcedureCode, pmd.ProcedureName, pmd.DefectProcedureID, pmd.DefectProcedureCode, pmd.DefectProcedureName),())\n" +
  10145. " ORDER BY pmd.ProductionLineCode\n" +
  10146. " ,pmd.ProcedureCode\n" +
  10147. " ,pmd.DefectProcedureCode\n" +
  10148. " ,pmd.DefectCode\n" +
  10149. " ,pmd.Usercode\n" +
  10150. " ,pmd.Goodscode) t";
  10151. return selSql;
  10152. }
  10153. /// <summary>
  10154. /// 取得RPT030106(成检缺陷汇总表-明细)的汇总信息查询数据
  10155. /// </summary>
  10156. /// <param name="user">登录用户信息</param>
  10157. /// <param name="se">查询条件</param>
  10158. /// <returns>查询结果</returns>
  10159. public static ServiceResultEntity GetRPT030106IData(SUserInfo user, RPT030106_SE se)
  10160. {
  10161. IDBConnection conn = null;
  10162. try
  10163. {
  10164. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  10165. List<OracleParameter> parameters = new List<OracleParameter>();
  10166. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030106ISQL(user, se, ref parameters));
  10167. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  10168. ServiceResultEntity sre = new ServiceResultEntity();
  10169. if (data == null || data.Rows.Count == 0)
  10170. {
  10171. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  10172. return sre;
  10173. }
  10174. sre.Data = new DataSet();
  10175. sre.Data.Tables.Add(data);
  10176. return sre;
  10177. }
  10178. catch (Exception ex)
  10179. {
  10180. throw ex;
  10181. }
  10182. finally
  10183. {
  10184. if (conn != null &&
  10185. conn.ConnState == ConnectionState.Open)
  10186. {
  10187. conn.Close();
  10188. }
  10189. }
  10190. }
  10191. /// <summary>
  10192. /// 获取RPT030106画面(成检缺陷汇总表-明细)的汇总信息查询sql
  10193. /// </summary>
  10194. /// <returns>sql</returns>
  10195. private static string GetRPT030106ISQL(SUserInfo user, RPT030106_SE se, ref List<OracleParameter> parameters)
  10196. {
  10197. // string selSql = @"select
  10198. // tp_pm_defect.productionlinename,
  10199. // tp_pm_defect.procedurename,
  10200. // tp_pm_defect.DefectProcedureCode,
  10201. // tp_pm_defect.DefectProcedureName,
  10202. // tp_pm_defect.DefectUserCode,
  10203. // tp_pm_defect.defectusername,
  10204. // tp_mst_defectType.DefectTypeName,
  10205. // TP_MST_Defect.Remarks DefectRemarks,
  10206. // tp_pm_defect.defectcode,
  10207. // tp_pm_defect.defectname,
  10208. // tp_pm_defect.UserCode,
  10209. // tp_pm_defect.username,
  10210. // tp_mst_goodstype.Goodstypename,
  10211. // tp_pm_defect.goodscode,
  10212. // tp_pm_defect.barcode,
  10213. // tp_pm_productiondata.groutingdate,
  10214. // tp_pm_productiondata.groutingnum,
  10215. // tp_pm_productiondata.groutingMouldCode,
  10216. // tp_pm_productiondata.KilnCarCode,
  10217. // tp_pm_productiondata.Procedureid,
  10218. // decode(TP_PM_ProductionData.Goodsleveltypeid, '4', '正品' , '5','副品','6','重烧','7','次品','') as Goodsleveltype,
  10219. // tp_pm_defect.DefectPositionCode,
  10220. // tp_pm_defect.DefectPositionName,
  10221. // tp_pm_productiondata.GroutingUserCode,
  10222. // --replace((TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']'),'[]','') as LogoCodeName
  10223. // decode(TP_MST_Logo.Logocode, null, null,TP_MST_Logo.Logoname||'['||TP_MST_Logo.Logocode||']')) as LogoCodeName
  10224. // ,TP_PM_Defect.CreateTime
  10225. // ,(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
  10226. // ,TP_MST_DefectFine.DefectFineCode
  10227. // ,TP_PM_Defect.DefectDeductionNum
  10228. // from tp_pm_defect
  10229. // left join TP_MST_Goods
  10230. // on TP_PM_Defect.Goodsid=TP_MST_Goods.Goodsid
  10231. // left join TP_MST_GoodsType
  10232. // on TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID
  10233. // left join TP_MST_Defect
  10234. // on TP_PM_Defect.DefectID=TP_MST_Defect.DefectID
  10235. // left join TP_MST_DefectType
  10236. // on TP_MST_Defect.DefectTypeID=TP_MST_DefectType.DefectTypeID
  10237. // inner join tp_pm_productiondata
  10238. // on tp_pm_defect.ProductionDataID=tp_pm_productiondata.ProductionDataID
  10239. // left join TP_MST_DefectFine
  10240. // on tp_pm_defect.DefectFine=TP_MST_DefectFine.DefectFineID
  10241. // left join tp_mst_logo
  10242. // on tp_pm_productiondata.logoid=tp_mst_logo.logoid";
  10243. // 质量登记改判时,缺陷的登记时间是当前时间,不是交接或前次登记时间。
  10244. // 追加交接时间,改判标识。
  10245. string selSql =
  10246. "SELECT pmd.productiondataid,pmd.productionlinename,pd.groutingdailydetailid\n" +
  10247. " ,pmd.procedurename\n" +
  10248. " ,pmd.DefectProcedureCode\n" +
  10249. " ,pmd.DefectProcedureName\n" +
  10250. " ,pmd.DefectUserCode\n" +
  10251. " ,pmd.defectusername\n" +
  10252. " ,dt.DefectTypeName\n" +
  10253. " ,mstd.Remarks DefectRemarks\n" +
  10254. " ,pmd.defectcode\n" +
  10255. //" ,d.alldefectcode\n" +
  10256. " ,(SELECT listagg(to_char(def.defectcode), ',') within GROUP(ORDER BY def.PRODUCTIONDEFECTID) AS alldefectcode\n" +
  10257. " FROM tp_pm_defect def\n" +
  10258. " WHERE def.barcode = pmd.barcode\n" +
  10259. " AND def.valueflag = '1') AS alldefectcode\n" +
  10260. " ,pmd.defectname\n" +
  10261. " ,pmd.UserCode\n" +
  10262. " ,pmd.username\n" +
  10263. " ,gt.Goodstypename\n" +
  10264. " ,pmd.goodscode,pmd.GOODSNAME\n" +
  10265. " ,pmd.barcode\n" +
  10266. " ,pd.groutingdate\n" +
  10267. " ,pd.groutingnum\n" +
  10268. " ,pd.groutingMouldCode\n" +
  10269. " ,pd.groutingLineCode\n" +
  10270. " ,pd.KilnCarCode\n" +
  10271. " ,pd.Procedureid\n" +
  10272. " ,gl.goodslevelname Goodsleveltype\n" +
  10273. " ,pmd.DefectPositionCode\n" +
  10274. " ,pmd.DefectPositionName\n" +
  10275. " ,pd.GroutingUserCode\n" +
  10276. " , CASE\n" +
  10277. " WHEN logo.logoid IS NULL THEN\n" +
  10278. " NULL\n" +
  10279. " ELSE\n" +
  10280. " logo.Logoname || '[' || logo.Logocode || ']'\n" +
  10281. " END AS LogoCodeName\n" +
  10282. " ,pmd.CreateTime\n" +
  10283. " ,mstdf.DefectFineCode\n" +
  10284. " ,pmd.DefectDeductionNum\n" +
  10285. //" ,to_char(pmd.DefectDeductionNum, '990.00') DefectDeductionNum\n" +
  10286. " ,hopd.createtime handovertime\n" +
  10287. " ,(SELECT listagg(to_char(pduc.UserCode), ',') within GROUP(ORDER BY pduc.ProductionDataID) AS WorkUserCodes\n" +
  10288. " FROM tp_pm_ProductionData pduc\n" +
  10289. " WHERE pduc.barcode = pmd.barcode\n" +
  10290. " AND pduc.valueflag = '1') AS WorkUserCodes\n" +
  10291. //" ,(SELECT listagg(to_char(u.UserCode), ',') within GROUP(ORDER BY pdcu.ProductionDataID) AS CreateUserCodes\n" +
  10292. //" FROM tp_pm_ProductionData pdcu\n" +
  10293. //" Left join tp_mst_user u on u.userid = pdcu.createuserid\n" +
  10294. //" WHERE pdcu.barcode = pmd.barcode\n" +
  10295. //" AND pdcu.valueflag = '1') AS CreateUserCodes\n" +
  10296. " , null AS CreateUserCodes\n" +
  10297. //" , CASE\n" +
  10298. //" WHEN EXISTS (SELECT 1\n" +
  10299. //" FROM tp_pm_ProductionData pdud\n" +
  10300. //" WHERE pdud.barcode = pmd.barcode\n" +
  10301. //" AND pdud.modeltype = -1\n" +
  10302. //" AND pdud.procedureid = pd.procedureid\n" +
  10303. //" AND pdud.kilncarbatchno = pd.kilncarbatchno\n" +
  10304. //" AND pdud.valueflag = '0') THEN\n" +
  10305. //" 1\n" +
  10306. //" ELSE\n" +
  10307. //" 0\n" +
  10308. //" END AS undoflag\n" +
  10309. " , case when pd.checkflag = '1' then 0 else 1 end AS undoflag\n" +
  10310. " , CASE\n" +
  10311. " WHEN EXISTS (SELECT 1\n" +
  10312. " FROM tp_pm_semicheck sc\n" +
  10313. " WHERE sc.barcode = pmd.barcode\n" +
  10314. " AND sc.SEMICHECKTYPE = 1\n" +
  10315. " AND sc.valueflag = '1') THEN\n" +
  10316. " 1\n" +
  10317. " ELSE\n" +
  10318. " 0\n" +
  10319. " END reworkflag" +
  10320. " ,gdd.glazingroom" +
  10321. " ,gdd.testmouldflag" +
  10322. " ,SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) -1 ) AS Kcode\n";
  10323. if (!string.IsNullOrEmpty(se.Fyear))
  10324. {
  10325. selSql += " ,SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) -1 ) AS Fyear\n";
  10326. }
  10327. selSql += " ,tmdd.DICTIONARYVALUE AS KilnLocation\n" +
  10328. " ,STAFF.STAFFNAME\n" +
  10329. " FROM tp_pm_defect pmd\n" +
  10330. " LEFT JOIN TP_MST_Goods g\n" +
  10331. " ON pmd.Goodsid = g.Goodsid\n" +
  10332. " LEFT JOIN TP_MST_GoodsType gt\n" +
  10333. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  10334. " LEFT JOIN TP_MST_Defect mstd\n" +
  10335. " ON pmd.DefectID = mstd.DefectID\n" +
  10336. " LEFT JOIN TP_MST_DefectType dt\n" +
  10337. " ON mstd.DefectTypeID = dt.DefectTypeID\n" +
  10338. " INNER JOIN tp_pm_productiondata pd\n" +
  10339. " ON pmd.ProductionDataID = pd.ProductionDataID\n" +
  10340. " LEFT JOIN TP_PM_GroutingDailyDetail gdd\n" +
  10341. " ON gdd.Groutingdailydetailid = pd.Groutingdailydetailid\n" +
  10342. " LEFT JOIN tp_mst_goodslevel gl\n" +
  10343. " ON pd.goodslevelid = gl.goodslevelid\n" +
  10344. "-- 交接工序\n" +
  10345. " INNER JOIN tp_pm_productiondata hopd\n" +
  10346. " ON hopd.kilncarbatchno = pd.kilncarbatchno\n " +
  10347. " AND hopd.barcode = pd.barcode\n" +
  10348. " AND hopd.valueflag = '1'\n" +
  10349. " AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" +
  10350. " LEFT JOIN TP_MST_DefectFine mstdf\n" +
  10351. " ON pmd.DefectFine = mstdf.DefectFineID\n" +
  10352. " LEFT JOIN tp_mst_logo logo\n" +
  10353. " ON pd.logoid = logo.logoid\n" +
  10354. " LEFT JOIN TP_MST_DATADICTIONARY tmdd ON pd.kilncarposition = tmdd.dictionaryid \n" +
  10355. " AND tmdd.dictionarytype = 'TPC003' \n" +
  10356. " LEFT JOIN ( \n" +
  10357. " SELECT \n" +
  10358. " D.CLASSESSETTINGID, \n" +
  10359. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME \n" +
  10360. " FROM \n" +
  10361. " ( \n" +
  10362. " SELECT \n" +
  10363. " CD.CLASSESSETTINGID, \n" +
  10364. " HR.STAFFNAME \n" +
  10365. " FROM \n" +
  10366. " TP_PC_CLASSESDETAIL CD \n" +
  10367. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID \n" +
  10368. " ) D \n" +
  10369. " GROUP BY \n" +
  10370. " D.CLASSESSETTINGID \n" +
  10371. " ) STAFF ON pd.CLASSESSETTINGID = STAFF.CLASSESSETTINGID \n" +
  10372. //" LEFT JOIN (SELECT def.barcode, wmsys.wm_concat( to_char(def.defectcode)) alldefectcode\n" +
  10373. //" FROM tp_pm_defect def\n" +
  10374. //" WHERE def.valueflag = '1'\n" +
  10375. ////def.createtime
  10376. //" group by def.barcode ) d\n" +
  10377. //" ON d.barcode = pmd.barcode\n" +
  10378. " WHERE pmd.valueflag = '1' \n" +
  10379. " AND pd.ModelType = -1\n" +
  10380. " AND pmd.AccountID = :AccountID\n";
  10381. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  10382. parameters.Add(new OracleParameter(":HandOverProcedureID", OracleDbType.Int32, se.HandOverProcedureID, ParameterDirection.Input));
  10383. //selSql = selSql +
  10384. // " Where TP_PM_Defect.valueflag='1' and tp_pm_productiondata.ModelType=-1" +
  10385. // " and TP_PM_Defect.AccountID=:AccountID ";
  10386. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  10387. {
  10388. selSql = selSql + " AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1 ";
  10389. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  10390. }
  10391. if (!string.IsNullOrEmpty(se.LineIDS))
  10392. {
  10393. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pmd.ProductionLineId||',')>0 ";
  10394. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  10395. }
  10396. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  10397. {
  10398. //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  10399. selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||pmd.DefectProcedureID||',')>0 ) ";
  10400. parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  10401. }
  10402. else
  10403. {
  10404. // modify by chenxy :没有选择时,应全查询出来。
  10405. //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  10406. }
  10407. if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  10408. {
  10409. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||pmd.ProcedureID||',')>0 ";
  10410. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  10411. }
  10412. if (!string.IsNullOrEmpty(se.KilnCode))
  10413. {
  10414. selSql = selSql + " AND instr(pd.KilnCode,:KilnCode) >0 ";
  10415. parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  10416. }
  10417. if (!string.IsNullOrEmpty(se.GoodsIDS))
  10418. {
  10419. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||pmd.Goodsid||',')>0 ";
  10420. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  10421. }
  10422. if (!string.IsNullOrEmpty(se.GoodsCode))
  10423. {
  10424. selSql = selSql + " AND instr(pmd.goodsCode,:GoodsCode) >0 ";
  10425. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  10426. }
  10427. if (!string.IsNullOrEmpty(se.Kcode))
  10428. {
  10429. selSql = selSql + " AND SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) -1 ) = :Kcode ";
  10430. parameters.Add(new OracleParameter(":Kcode", OracleDbType.NVarchar2, se.Kcode.PadLeft(3, '0'), ParameterDirection.Input));
  10431. }
  10432. if (!string.IsNullOrEmpty(se.Fyear))
  10433. {
  10434. selSql = selSql + " AND SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) -1 ) = :Fyear ";
  10435. parameters.Add(new OracleParameter(":Fyear", OracleDbType.NVarchar2, se.Fyear, ParameterDirection.Input));
  10436. }
  10437. if (!string.IsNullOrEmpty(se.GoodsCodeS2D))
  10438. {
  10439. selSql = selSql + " AND pmd.goodsCode = :GoodsCodeS2D ";
  10440. parameters.Add(new OracleParameter(":GoodsCodeS2D", OracleDbType.NVarchar2, se.GoodsCodeS2D, ParameterDirection.Input));
  10441. }
  10442. if (!string.IsNullOrEmpty(se.DefectUserCode))
  10443. {
  10444. selSql = selSql + " AND instr(pmd.DefectUserCode,:DefectUserCode) >0 ";
  10445. parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  10446. }
  10447. if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  10448. {
  10449. selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||dt.DefectTypeID||',')>0 ";
  10450. parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  10451. }
  10452. if (!string.IsNullOrEmpty(se.DefectCode))
  10453. {
  10454. selSql = selSql + " AND instr(pmd.DefectCode,:DefectCode) >0 ";
  10455. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  10456. }
  10457. if (!string.IsNullOrEmpty(se.DefectCodeS2D))
  10458. {
  10459. selSql = selSql + " AND pmd.DefectCode = :DefectCodeS2D ";
  10460. parameters.Add(new OracleParameter(":DefectCodeS2D", OracleDbType.NVarchar2, se.DefectCodeS2D, ParameterDirection.Input));
  10461. }
  10462. if (!string.IsNullOrEmpty(se.DefectName))
  10463. {
  10464. selSql = selSql + " AND instr(pmd.DefectName,:DefectName) >0 ";
  10465. parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  10466. }
  10467. if (!string.IsNullOrEmpty(se.CheckUserCode))
  10468. {
  10469. selSql = selSql + " AND instr(pmd.UserCode,:UserCode) >0";
  10470. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  10471. }
  10472. if (!string.IsNullOrEmpty(se.CheckUserCodeS2D))
  10473. {
  10474. selSql = selSql + " AND pmd.UserCode = :CheckUserCodeS2D ";
  10475. parameters.Add(new OracleParameter(":CheckUserCodeS2D", OracleDbType.NVarchar2, se.CheckUserCodeS2D, ParameterDirection.Input));
  10476. }
  10477. // 登记时间(缺陷)
  10478. if (se.CreateTimeStart.HasValue)
  10479. {
  10480. selSql = selSql + " AND pmd.CreateTime>= :CreateTimeStart ";
  10481. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  10482. }
  10483. if (se.CreateTimeEnd.HasValue)
  10484. {
  10485. selSql = selSql + " AND pmd.CreateTime<= :CreateTimeEnd ";
  10486. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  10487. }
  10488. // 交接时间
  10489. if (se.HandOverTimeStart.HasValue)
  10490. {
  10491. selSql = selSql + " AND hopd.CreateTime>= :HandOverTimeStart ";
  10492. parameters.Add(new OracleParameter(":HandOverTimeStart", OracleDbType.Date, se.HandOverTimeStart.Value, ParameterDirection.Input));
  10493. }
  10494. if (se.HandOverTimeEnd.HasValue)
  10495. {
  10496. selSql = selSql + " AND hopd.CreateTime<= :HandOverTimeEnd ";
  10497. parameters.Add(new OracleParameter(":HandOverTimeEnd", OracleDbType.Date, se.HandOverTimeEnd.Value, ParameterDirection.Input));
  10498. }
  10499. // 试验标识
  10500. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  10501. {
  10502. selSql += " AND gdd.TestMouldFlag = :TestMouldFlag ";
  10503. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  10504. }
  10505. // fenglinyong add 添加员工姓名 2022-08-29
  10506. if (!string.IsNullOrEmpty(se.StaffName))
  10507. {
  10508. selSql = selSql + " AND instr(STAFF.STAFFNAME,:STAFFNAME) >0";
  10509. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  10510. }
  10511. // fenglinyong add 添加员工姓名 2022-08-29
  10512. //if (!string.IsNullOrEmpty(se.PurViewUserCodeIDS))
  10513. //{
  10514. // selSql = selSql + " AND instr(','||:PurViewUserCodeIDS||',',','||TP_PM_Defect.DefectUserID||',')>0 ";
  10515. // parameters.Add(new OracleParameter(":PurViewUserCodeIDS", OracleDbType.NVarchar2, se.PurViewUserCodeIDS, ParameterDirection.Input));
  10516. //}
  10517. ////----------------------
  10518. //if (!string.IsNullOrEmpty(se.CompleteProcedureIDS))
  10519. //{
  10520. // selSql = selSql + @" AND exists(select 1 from tp_pm_productiondata where (instr(','||:CompleteProcedureIDS||',',','||ProcedureID||',')>0 ";
  10521. // parameters.Add(new OracleParameter(":CompleteProcedureIDS", OracleDbType.NVarchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  10522. // selSql = selSql + " AND TP_PM_ProductionData.CreateTime>= :CompleteCreateTimeStart ";
  10523. // parameters.Add(new OracleParameter(":CompleteCreateTimeStart", OracleDbType.Date, se.CompleteCreateTimeStart.Value, ParameterDirection.Input));
  10524. // selSql = selSql + " AND TP_PM_ProductionData.CreateTime<= :CompleteCreateTimeEnd )) ";
  10525. // parameters.Add(new OracleParameter(":CompleteCreateTimeEnd", OracleDbType.Date, se.CompleteCreateTimeEnd.Value, ParameterDirection.Input));
  10526. //}
  10527. ////----------------------
  10528. /// 2026-01-06 增加 数据源
  10529. selSql = @" SELECT *
  10530. FROM (SELECT p28.*
  10531. ,CASE
  10532. WHEN pd24.procedureid = 24 THEN
  10533. '重烧'
  10534. WHEN pd24.procedureid = 42 THEN
  10535. '冷补'
  10536. ELSE
  10537. '一烧'
  10538. END datasource
  10539. ,row_number() over(PARTITION BY p28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
  10540. FROM ( " + selSql;
  10541. selSql = selSql + @" ) p28
  10542. INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
  10543. ON pd24.groutingdailydetailid = p28.groutingdailydetailid
  10544. WHERE pd24.valueflag = 1
  10545. AND pd24.procedureid IN (13,55, 24, 42) -- 重烧质量登记里包含 重烧修补24 / 冷补42
  10546. AND pd24.productiondataid < p28.productiondataid) t
  10547. WHERE rownums = 1 ";
  10548. selSql = selSql + " order by t.productionlinename,t.procedurename,t.defectprocedurename,t.defectusercode ";
  10549. return selSql;
  10550. }
  10551. /// <summary>
  10552. /// 取得RPT030106(成检缺陷汇总表-缺陷登记明细)的汇总信息查询数据
  10553. /// </summary>
  10554. /// <param name="user">登录用户信息</param>
  10555. /// <param name="se">查询条件</param>
  10556. /// <returns>查询结果</returns>
  10557. public static ServiceResultEntity GetRPT030106DData(SUserInfo user, RPT030106_SE se)
  10558. {
  10559. IDBConnection conn = null;
  10560. try
  10561. {
  10562. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  10563. List<OracleParameter> parameters = new List<OracleParameter>();
  10564. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030106DSQL(user, se, ref parameters));
  10565. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  10566. ServiceResultEntity sre = new ServiceResultEntity();
  10567. if (data == null || data.Rows.Count == 0)
  10568. {
  10569. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  10570. return sre;
  10571. }
  10572. sre.Data = new DataSet();
  10573. sre.Data.Tables.Add(data);
  10574. return sre;
  10575. }
  10576. catch (Exception ex)
  10577. {
  10578. throw ex;
  10579. }
  10580. finally
  10581. {
  10582. if (conn != null &&
  10583. conn.ConnState == ConnectionState.Open)
  10584. {
  10585. conn.Close();
  10586. }
  10587. }
  10588. }
  10589. /// <summary>
  10590. /// 获取RPT030106画面(成检缺陷汇总表-缺陷登记明细)的汇总信息查询sql
  10591. /// </summary>
  10592. /// <returns>sql</returns>
  10593. private static string GetRPT030106DSQL(SUserInfo user, RPT030106_SE se, ref List<OracleParameter> parameters)
  10594. {
  10595. // 质量登记改判时,缺陷的登记时间是当前时间,不是交接或前次登记时间。
  10596. // 追加交接时间,改判标识。
  10597. string selSql =
  10598. "SELECT pmd.productionlinename\n" +
  10599. " ,pmd.procedurename\n" +
  10600. " ,pmd.DefectProcedureCode\n" +
  10601. " ,pmd.DefectProcedureName\n" +
  10602. " ,pmd.DefectUserCode\n" +
  10603. " ,pmd.defectusername\n" +
  10604. " ,jobs.jobsname defectjobsname\n" +
  10605. " ,dt.DefectTypeName\n" +
  10606. " ,mstd.Remarks DefectRemarks\n" +
  10607. " ,pd.Remarks barcodeRemarks\n" +
  10608. " ,pmd.defectcode\n" +
  10609. //" ,d.alldefectcode\n" +
  10610. " ,(SELECT listagg(to_char(def.defectcode), ',') within GROUP(ORDER BY def.PRODUCTIONDEFECTID) AS alldefectcode\n" +
  10611. " FROM tp_pm_defect def\n" +
  10612. " WHERE def.barcode = pmd.barcode\n" +
  10613. " AND def.valueflag = '1') AS alldefectcode\n" +
  10614. " ,pmd.defectname\n" +
  10615. " ,pmd.UserCode\n" +
  10616. " ,pmd.username\n" +
  10617. " ,gt.Goodstypename\n" +
  10618. " ,pmd.goodscode,pmd.GOODSNAME\n" +
  10619. " ,pmd.barcode\n" +
  10620. " ,pd.groutingdate\n" +
  10621. " ,pd.groutingnum\n" +
  10622. " ,pd.groutingMouldCode\n" +
  10623. " ,pd.GroutingLineCode\n" +
  10624. " ,pd.KilnCarCode\n" +
  10625. " ,pd.Procedureid\n" +
  10626. " ,gl.goodslevelname Goodsleveltype\n" +
  10627. " ,pmd.DefectPositionCode\n" +
  10628. " ,pmd.DefectPositionName\n" +
  10629. " ,pd.GroutingUserCode\n" +
  10630. " , CASE\n" +
  10631. " WHEN logo.logoid IS NULL THEN\n" +
  10632. " NULL\n" +
  10633. " ELSE\n" +
  10634. " logo.Logoname || '[' || logo.Logocode || ']'\n" +
  10635. " END AS LogoCodeName\n" +
  10636. //" ,pmd.CreateTime\n" +
  10637. " ,pd.CheckTime pdchecktime\n" +
  10638. " ,pmd.CheckTime\n" +
  10639. " ,mstdf.DefectFineCode\n" +
  10640. " ,pmd.DefectDeductionNum\n" +
  10641. //" ,to_char(pmd.DefectDeductionNum, '990.00') DefectDeductionNum\n" +
  10642. " ,hopd.createtime handovertime\n" +
  10643. " ,(SELECT listagg(to_char(pduc.UserCode), ',') within GROUP(ORDER BY pduc.ProductionDataID) AS WorkUserCodes\n" +
  10644. " FROM tp_pm_ProductionData pduc\n" +
  10645. " WHERE pduc.barcode = pmd.barcode\n" +
  10646. " AND pduc.valueflag = '1') AS WorkUserCodes\n" +
  10647. //" ,(SELECT listagg(to_char(u.UserCode), ',') within GROUP(ORDER BY pdcu.ProductionDataID) AS CreateUserCodes\n" +
  10648. //" FROM tp_pm_ProductionData pdcu\n" +
  10649. //" Left join tp_mst_user u on u.userid = pdcu.createuserid\n" +
  10650. //" WHERE pdcu.barcode = pmd.barcode\n" +
  10651. //" AND pdcu.valueflag = '1') AS CreateUserCodes\n" +
  10652. " , null AS CreateUserCodes\n" +
  10653. " ,(SELECT listagg(to_char(s.StaffName), ',') within GROUP(ORDER BY s.Staffid) AS DefectStaffNames\n" +
  10654. " FROM TP_PM_DefectResponsible dr\n" +
  10655. " Left join TP_HR_Staff s on s.Staffid = dr.Staffid\n" +
  10656. " WHERE dr.ProductionDefectID = pmd.ProductionDefectID --dr pdcu.valueflag = '1'\n" +
  10657. " ) AS DefectStaffNames\n" +
  10658. " , CASE\n" +
  10659. " WHEN pd.isrefire <> '0' THEN\n" +
  10660. " (select listagg(to_char(d.defectname || '[' || d.defectpositionname || ']')\n" +
  10661. " ,',') within group(order by d.productiondefectid) bsqx\n" +
  10662. " from tp_pm_productiondata p\n" +
  10663. " inner join tp_pm_defect d\n" +
  10664. " on d.productiondataid = p.productiondataid\n" +
  10665. " where p.valueflag = '1'\n" +
  10666. " and d.valueflag = '1'\n" +
  10667. " and p.barcode = pd.barcode\n" +
  10668. " and p.modeltype = -1\n" +
  10669. " and p.isrefire = '0')\n" +
  10670. " ELSE\n" +
  10671. " null\n" +
  10672. " END AS bsqx\n" +
  10673. //" , CASE\n" +
  10674. //" WHEN EXISTS (SELECT 1\n" +
  10675. //" FROM tp_pm_ProductionData pdud\n" +
  10676. //" WHERE pdud.barcode = pmd.barcode\n" +
  10677. //" AND pdud.modeltype = -1\n" +
  10678. //" AND pdud.procedureid = pd.procedureid\n" +
  10679. //" AND pdud.kilncarbatchno = pd.kilncarbatchno\n" +
  10680. //" AND pdud.valueflag = '0') THEN\n" +
  10681. //" 1\n" +
  10682. //" ELSE\n" +
  10683. //" 0\n" +
  10684. //" END AS undoflag\n" +
  10685. " , case when pd.checkflag = '1' then 0 else 1 end AS undoflag\n" +
  10686. " ,SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) -1 ) AS Kcode1\n" +
  10687. " ,SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) -1 ) AS Fyear1\n" +
  10688. " ,tmdd.DICTIONARYVALUE AS KilnLocation \n" +
  10689. " ,STAFF.STAFFNAME AS STAFFNAMEDETAIL \n" +
  10690. " FROM tp_pm_defect pmd\n" +
  10691. " LEFT JOIN TP_PC_Procedure p\n" +
  10692. " ON p.procedureid = pmd.procedureid\n" +
  10693. " LEFT JOIN TP_PC_Procedure pdd\n" +
  10694. " ON pdd.procedureid = pmd.defectprocedureid\n" +
  10695. " LEFT JOIN TP_MST_Goods g\n" +
  10696. " ON pmd.Goodsid = g.Goodsid\n" +
  10697. " LEFT JOIN TP_MST_GoodsType gt\n" +
  10698. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  10699. " LEFT JOIN TP_MST_Defect mstd\n" +
  10700. " ON pmd.DefectID = mstd.DefectID\n" +
  10701. " LEFT JOIN TP_MST_Jobs jobs\n" +
  10702. " ON jobs.jobsid = pmd.Defectjobs\n" +
  10703. " LEFT JOIN TP_MST_DefectType dt\n" +
  10704. " ON mstd.DefectTypeID = dt.DefectTypeID\n" +
  10705. " INNER JOIN tp_pm_productiondata pd\n" +
  10706. " ON pmd.ProductionDataID = pd.ProductionDataID\n" +
  10707. " LEFT JOIN tp_mst_goodslevel gl\n" +
  10708. " ON pd.goodslevelid = gl.goodslevelid\n" +
  10709. //"-- 交接工序\n" +
  10710. //" INNER JOIN tp_pm_productiondata hopd\n" +
  10711. //" ON hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" +
  10712. //" AND hopd.valueflag = '1'\n" +
  10713. //" AND hopd.barcode = pd.barcode\n" +
  10714. //" AND hopd.kilncarbatchno = pd.kilncarbatchno\n" +
  10715. " INNER JOIN tp_pm_productiondata hopd\n" +
  10716. " ON hopd.kilncarbatchno = pd.kilncarbatchno\n " +
  10717. " AND hopd.barcode = pd.barcode\n" +
  10718. " AND hopd.valueflag = '1'\n" +
  10719. " AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" +
  10720. " LEFT JOIN TP_MST_DefectFine mstdf\n" +
  10721. " ON pmd.DefectFine = mstdf.DefectFineID\n" +
  10722. " LEFT JOIN tp_mst_logo logo\n" +
  10723. " ON pd.logoid = logo.logoid\n" +
  10724. " LEFT JOIN TP_MST_DATADICTIONARY tmdd ON pd.kilncarposition = tmdd.dictionaryid\n" +
  10725. " AND tmdd.dictionarytype = 'TPC003'\n" +
  10726. " LEFT JOIN (\n" +
  10727. " SELECT\n" +
  10728. " D.CLASSESSETTINGID,\n" +
  10729. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME\n" +
  10730. " FROM\n" +
  10731. " (\n" +
  10732. " SELECT\n" +
  10733. " CD.CLASSESSETTINGID,\n" +
  10734. " HR.STAFFNAME \n" +
  10735. " FROM\n" +
  10736. " TP_PC_CLASSESDETAIL CD\n" +
  10737. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID\n" +
  10738. " ) D \n" +
  10739. " GROUP BY\n" +
  10740. " D.CLASSESSETTINGID\n" +
  10741. " ) STAFF ON pd.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n" +
  10742. //" LEFT JOIN (SELECT def.barcode, wmsys.wm_concat( to_char(def.defectcode)) alldefectcode\n" +
  10743. //" FROM tp_pm_defect def\n" +
  10744. //" WHERE def.valueflag = '1'\n" +
  10745. ////def.createtime
  10746. //" group by def.barcode ) d\n" +
  10747. //" ON d.barcode = pmd.barcode\n" +
  10748. " WHERE pmd.valueflag = '1' \n" +
  10749. " AND pd.ModelType = -1\n" +
  10750. " AND pmd.AccountID = :AccountID\n";
  10751. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  10752. parameters.Add(new OracleParameter(":HandOverProcedureID", OracleDbType.Int32, se.HandOverProcedureID, ParameterDirection.Input));
  10753. //selSql = selSql +
  10754. // " Where TP_PM_Defect.valueflag='1' and tp_pm_productiondata.ModelType=-1" +
  10755. // " and TP_PM_Defect.AccountID=:AccountID ";
  10756. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  10757. {
  10758. selSql = selSql + " AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1 ";
  10759. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  10760. }
  10761. if (!string.IsNullOrEmpty(se.LineIDS))
  10762. {
  10763. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pmd.ProductionLineId||',')>0 ";
  10764. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  10765. }
  10766. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  10767. {
  10768. //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  10769. selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||pmd.DefectProcedureID||',')>0 ) ";
  10770. parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  10771. }
  10772. else
  10773. {
  10774. // modify by chenxy :没有选择时,应全查询出来。
  10775. //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  10776. }
  10777. if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  10778. {
  10779. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||pmd.ProcedureID||',')>0 ";
  10780. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  10781. }
  10782. if (!string.IsNullOrEmpty(se.KilnCode))
  10783. {
  10784. selSql = selSql + " AND instr(pd.KilnCode,:KilnCode) >0 ";
  10785. parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  10786. }
  10787. if (!string.IsNullOrEmpty(se.GoodsIDS))
  10788. {
  10789. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||pmd.Goodsid||',')>0 ";
  10790. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  10791. }
  10792. if (!string.IsNullOrEmpty(se.GoodsCode))
  10793. {
  10794. selSql = selSql + " AND instr(pmd.goodsCode,:GoodsCode) >0 ";
  10795. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  10796. }
  10797. if (!string.IsNullOrEmpty(se.Kcode))
  10798. {
  10799. selSql = selSql + " AND SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 3 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) -1 ) = :Kcode ";
  10800. parameters.Add(new OracleParameter(":Kcode", OracleDbType.NVarchar2, se.Kcode.PadLeft(3, '0'), ParameterDirection.Input));
  10801. }
  10802. if (!string.IsNullOrEmpty(se.Fyear))
  10803. {
  10804. selSql = selSql + " AND SUBSTR( pd.KILNCARBATCHNO, INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) + 1, INSTR( pd.KILNCARBATCHNO, '$', 1, 2 ) - INSTR( pd.KILNCARBATCHNO, '$', 1, 1 ) -1 ) = :Fyear ";
  10805. parameters.Add(new OracleParameter(":Fyear", OracleDbType.NVarchar2, se.Fyear, ParameterDirection.Input));
  10806. }
  10807. if (!string.IsNullOrEmpty(se.GoodsCodeS2D))
  10808. {
  10809. selSql = selSql + " AND pmd.goodsCode = :GoodsCodeS2D ";
  10810. parameters.Add(new OracleParameter(":GoodsCodeS2D", OracleDbType.NVarchar2, se.GoodsCodeS2D, ParameterDirection.Input));
  10811. }
  10812. if (!string.IsNullOrEmpty(se.DefectUserCode))
  10813. {
  10814. selSql = selSql + " AND instr(pmd.DefectUserCode,:DefectUserCode) >0 ";
  10815. parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  10816. }
  10817. if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  10818. {
  10819. selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||dt.DefectTypeID||',')>0 ";
  10820. parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  10821. }
  10822. if (!string.IsNullOrEmpty(se.DefectCode))
  10823. {
  10824. selSql = selSql + " AND instr(pmd.DefectCode,:DefectCode) >0 ";
  10825. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  10826. }
  10827. if (!string.IsNullOrEmpty(se.DefectCodeS2D))
  10828. {
  10829. selSql = selSql + " AND pmd.DefectCode = :DefectCodeS2D ";
  10830. parameters.Add(new OracleParameter(":DefectCodeS2D", OracleDbType.NVarchar2, se.DefectCodeS2D, ParameterDirection.Input));
  10831. }
  10832. if (!string.IsNullOrEmpty(se.DefectName))
  10833. {
  10834. selSql = selSql + " AND instr(pmd.DefectName,:DefectName) >0 ";
  10835. parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  10836. }
  10837. if (!string.IsNullOrEmpty(se.CheckUserCode))
  10838. {
  10839. selSql = selSql + " AND instr(pmd.UserCode,:UserCode) >0";
  10840. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  10841. }
  10842. if (!string.IsNullOrEmpty(se.CheckUserCodeS2D))
  10843. {
  10844. selSql = selSql + " AND pmd.UserCode = :CheckUserCodeS2D ";
  10845. parameters.Add(new OracleParameter(":CheckUserCodeS2D", OracleDbType.NVarchar2, se.CheckUserCodeS2D, ParameterDirection.Input));
  10846. }
  10847. //if (se.CreateTimeStart.HasValue)
  10848. //{
  10849. // selSql = selSql + " AND pmd.CreateTime>= :CreateTimeStart ";
  10850. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  10851. //}
  10852. //if (se.CreateTimeEnd.HasValue)
  10853. //{
  10854. // selSql = selSql + " AND pmd.CreateTime<= :CreateTimeEnd ";
  10855. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  10856. //}
  10857. // 登记时间(第一次成检)
  10858. if (se.CreateTimeStart.HasValue)
  10859. {
  10860. selSql = selSql + " AND pd.checktime>= :CreateTimeStart ";
  10861. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  10862. }
  10863. if (se.CreateTimeEnd.HasValue)
  10864. {
  10865. selSql = selSql + " AND pd.checktime<= :CreateTimeEnd ";
  10866. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  10867. }
  10868. // 缺陷登记时间
  10869. if (se.CheckTimeStart.HasValue)
  10870. {
  10871. selSql = selSql + " AND pmd.checktime>= :CheckTimeStart ";
  10872. parameters.Add(new OracleParameter(":CheckTimeStart", OracleDbType.Date, se.CheckTimeStart.Value, ParameterDirection.Input));
  10873. }
  10874. if (se.CheckTimeEnd.HasValue)
  10875. {
  10876. selSql = selSql + " AND pmd.checktime<= :CheckTimeEnd ";
  10877. parameters.Add(new OracleParameter(":CheckTimeEnd", OracleDbType.Date, se.CheckTimeEnd.Value, ParameterDirection.Input));
  10878. }
  10879. // 交接时间
  10880. if (se.HandOverTimeStart.HasValue)
  10881. {
  10882. selSql = selSql + " AND hopd.CreateTime>= :HandOverTimeStart ";
  10883. parameters.Add(new OracleParameter(":HandOverTimeStart", OracleDbType.Date, se.HandOverTimeStart.Value, ParameterDirection.Input));
  10884. }
  10885. if (se.HandOverTimeEnd.HasValue)
  10886. {
  10887. selSql = selSql + " AND hopd.CreateTime<= :HandOverTimeEnd ";
  10888. parameters.Add(new OracleParameter(":HandOverTimeEnd", OracleDbType.Date, se.HandOverTimeEnd.Value, ParameterDirection.Input));
  10889. }
  10890. // fenglinyong add 添加员工姓名 2022-08-29
  10891. if (!string.IsNullOrEmpty(se.StaffName))
  10892. {
  10893. selSql = selSql + " AND instr(STAFF.STAFFNAME,:STAFFNAME) >0";
  10894. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  10895. }
  10896. // fenglinyong add 添加员工姓名 2022-08-29
  10897. //selSql = selSql + " order by pmd.productionlinename,pmd.procedurename,pmd.defectprocedurename,pmd.defectusercode ";
  10898. selSql = selSql + " order by pmd.productionlinename,p.DISPLAYNO,pdd.DISPLAYNO,dt.DISPLAYNO,mstd.DISPLAYNO,pmd.defectusercode,pmd.barcode ";
  10899. return selSql;
  10900. }
  10901. /// <summary>
  10902. /// 取得RPT030106(成检缺陷汇总表-生产工序信息)的汇总信息查询数据
  10903. /// </summary>
  10904. /// <param name="user">登录用户信息</param>
  10905. /// <param name="se">查询条件</param>
  10906. /// <returns>查询结果</returns>
  10907. public static ServiceResultEntity GetRPT030106ProData(SUserInfo user, RPT030106_SE se)
  10908. {
  10909. IDBConnection conn = null;
  10910. try
  10911. {
  10912. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  10913. List<OracleParameter> parameters = new List<OracleParameter>();
  10914. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030106ProSQL(user, se, ref parameters));
  10915. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  10916. ServiceResultEntity sre = new ServiceResultEntity();
  10917. if (data == null || data.Rows.Count == 0)
  10918. {
  10919. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  10920. return sre;
  10921. }
  10922. sre.Data = new DataSet();
  10923. sre.Data.Tables.Add(data);
  10924. return sre;
  10925. }
  10926. catch (Exception ex)
  10927. {
  10928. throw ex;
  10929. }
  10930. finally
  10931. {
  10932. if (conn != null &&
  10933. conn.ConnState == ConnectionState.Open)
  10934. {
  10935. conn.Close();
  10936. }
  10937. }
  10938. }
  10939. /// <summary>
  10940. /// 获取RPT030106画面(成检缺陷汇总表-生产工序信息)的汇总信息查询sql
  10941. /// </summary>
  10942. /// <returns>sql</returns>
  10943. private static string GetRPT030106ProSQL(SUserInfo user, RPT030106_SE se, ref List<OracleParameter> parameters)
  10944. {
  10945. // 质量登记改判时,缺陷的登记时间是当前时间,不是交接或前次登记时间。
  10946. // 追加交接时间,改判标识。
  10947. string selSql =
  10948. //"SELECT pmd.productionlinename\n" +
  10949. //" ,pmd.procedurename\n" +
  10950. //" ,pmd.DefectProcedureCode\n" +
  10951. //" ,pmd.DefectProcedureName\n" +
  10952. //" ,pmd.DefectUserCode\n" +
  10953. //" ,pmd.defectusername\n" +
  10954. //" ,jobs.jobsname defectjobsname\n" +
  10955. //" ,dt.DefectTypeName\n" +
  10956. //" ,mstd.Remarks DefectRemarks\n" +
  10957. //" ,pd.Remarks barcodeRemarks\n" +
  10958. //" ,pmd.defectcode\n" +
  10959. //" ,d.alldefectcode\n" +
  10960. //" ,pmd.defectname\n" +
  10961. //" ,pmd.UserCode\n" +
  10962. //" ,pmd.username\n" +
  10963. //" ,gt.Goodstypename\n" +
  10964. //" ,pmd.goodscode\n" +
  10965. //" ,pmd.barcode\n" +
  10966. //" ,pd.groutingdate\n" +
  10967. //" ,pd.groutingnum\n" +
  10968. //" ,pd.groutingMouldCode\n" +
  10969. //" ,pd.GroutingLineCode\n" +
  10970. //" ,pd.KilnCarCode\n" +
  10971. //" ,pd.Procedureid\n" +
  10972. //" ,gl.goodslevelname Goodsleveltype\n" +
  10973. //" ,pmd.DefectPositionCode\n" +
  10974. //" ,pmd.DefectPositionName\n" +
  10975. //" ,pd.GroutingUserCode\n" +
  10976. //" , CASE\n" +
  10977. //" WHEN logo.logoid IS NULL THEN\n" +
  10978. //" NULL\n" +
  10979. //" ELSE\n" +
  10980. //" logo.Logoname || '[' || logo.Logocode || ']'\n" +
  10981. //" END AS LogoCodeName\n" +
  10982. ////" ,pmd.CreateTime\n" +
  10983. //" ,pd.CheckTime pdchecktime\n" +
  10984. //" ,pmd.CheckTime\n" +
  10985. //" ,mstdf.DefectFineCode\n" +
  10986. //" ,pmd.DefectDeductionNum\n" +
  10987. ////" ,to_char(pmd.DefectDeductionNum, '990.00') DefectDeductionNum\n" +
  10988. //" ,hopd.createtime handovertime\n" +
  10989. //" ,(SELECT listagg(to_char(pduc.UserCode), ',') within GROUP(ORDER BY pduc.ProductionDataID) AS WorkUserCodes\n" +
  10990. //" FROM tp_pm_ProductionData pduc\n" +
  10991. //" WHERE pduc.barcode = pmd.barcode\n" +
  10992. //" AND pduc.valueflag = '1') AS WorkUserCodes\n" +
  10993. //" ,(SELECT listagg(to_char(u.UserCode), ',') within GROUP(ORDER BY pdcu.ProductionDataID) AS CreateUserCodes\n" +
  10994. //" FROM tp_pm_ProductionData pdcu\n" +
  10995. //" Left join tp_mst_user u on u.userid = pdcu.createuserid\n" +
  10996. //" WHERE pdcu.barcode = pmd.barcode\n" +
  10997. //" AND pdcu.valueflag = '1') AS CreateUserCodes\n" +
  10998. //" , CASE\n" +
  10999. //" WHEN EXISTS (SELECT 1\n" +
  11000. //" FROM tp_pm_ProductionData pdud\n" +
  11001. //" WHERE pdud.barcode = pmd.barcode\n" +
  11002. //" AND pdud.modeltype = -1\n" +
  11003. //" AND pdud.procedureid = pd.procedureid\n" +
  11004. //" AND pdud.kilncarbatchno = pd.kilncarbatchno\n" +
  11005. //" AND pdud.valueflag = '0') THEN\n" +
  11006. //" 1\n" +
  11007. //" ELSE\n" +
  11008. //" 0\n" +
  11009. //" END AS undoflag\n" +
  11010. "SELECT pmd.goodscode ,pmd.goodsname\n" +
  11011. " ,pmd.barcode\n" +
  11012. " ,pmd.defectcode\n" +
  11013. " ,pmd.defectname\n" +
  11014. " ,pmd.DefectPositionCode\n" +
  11015. " ,pmd.DefectPositionName\n" +
  11016. " ,gl.goodslevelname Goodsleveltype\n" +
  11017. " , CASE\n" +
  11018. " WHEN logo.logoid IS NULL THEN\n" +
  11019. " NULL\n" +
  11020. " ELSE\n" +
  11021. " logo.Logoname || '[' || logo.Logocode || ']'\n" +
  11022. " END AS LogoCodeName\n" +
  11023. //" ,pmd.CreateTime\n" +
  11024. " ,pd.CheckTime pdchecktime\n" +
  11025. " ,pmd.CheckTime\n" +
  11026. " ,proddata.CheckTime protime\n" +
  11027. " ,proddata.UserCode prousercode\n" +
  11028. " ,proddata.PROCEDURENAME proname\n" +
  11029. " ,pd.KILNCARCODE KILNCARCODE\n" +
  11030. " ,STAFF.STAFFNAME AS STAFFNAMEPRO\n" +
  11031. " FROM tp_pm_defect pmd\n" +
  11032. " INNER JOIN tp_pm_productiondata proddata\n" +
  11033. " ON proddata.barcode = pmd.barcode\n " +
  11034. //" AND proddata.ProcedureID in ('" + se.CompleteProcedureIDS + "')\n" +
  11035. " AND (instr(','||:ProProcedureIDS||',',','||proddata.ProcedureID||',')>0 )\n" +
  11036. " AND proddata.valueflag = '1'\n" +
  11037. " INNER JOIN tp_pm_productiondata pd\n" +
  11038. " ON pmd.ProductionDataID = pd.ProductionDataID\n" +
  11039. " LEFT JOIN TP_PC_Procedure p\n" +
  11040. " ON p.procedureid = pmd.procedureid\n" +
  11041. " LEFT JOIN TP_PC_Procedure pdd\n" +
  11042. " ON pdd.procedureid = pmd.defectprocedureid\n" +
  11043. " LEFT JOIN TP_MST_Goods g\n" +
  11044. " ON pmd.Goodsid = g.Goodsid\n" +
  11045. " LEFT JOIN TP_MST_GoodsType gt\n" +
  11046. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  11047. " LEFT JOIN TP_MST_Defect mstd\n" +
  11048. " ON pmd.DefectID = mstd.DefectID\n" +
  11049. " LEFT JOIN TP_MST_Jobs jobs\n" +
  11050. " ON jobs.jobsid = pmd.Defectjobs\n" +
  11051. " LEFT JOIN TP_MST_DefectType dt\n" +
  11052. " ON mstd.DefectTypeID = dt.DefectTypeID\n" +
  11053. " LEFT JOIN tp_mst_goodslevel gl\n" +
  11054. " ON pd.goodslevelid = gl.goodslevelid\n" +
  11055. "-- 交接工序\n" +
  11056. " INNER JOIN tp_pm_productiondata hopd\n" +
  11057. " ON hopd.kilncarbatchno = pd.kilncarbatchno\n " +
  11058. " AND hopd.barcode = pd.barcode\n" +
  11059. " AND hopd.valueflag = '1'\n" +
  11060. " AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" +
  11061. " LEFT JOIN TP_MST_DefectFine mstdf\n" +
  11062. " ON pmd.DefectFine = mstdf.DefectFineID\n" +
  11063. " LEFT JOIN tp_mst_logo logo\n" +
  11064. " ON pd.logoid = logo.logoid\n" +
  11065. " LEFT JOIN (\n" +
  11066. " SELECT\n" +
  11067. " D.CLASSESSETTINGID,\n" +
  11068. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME\n" +
  11069. " FROM\n" +
  11070. " (\n" +
  11071. " SELECT\n" +
  11072. " CD.CLASSESSETTINGID,\n" +
  11073. " HR.STAFFNAME \n" +
  11074. " FROM\n" +
  11075. " TP_PC_CLASSESDETAIL CD\n" +
  11076. " LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID \n" +
  11077. " ) D \n" +
  11078. " GROUP BY\n" +
  11079. " D.CLASSESSETTINGID\n" +
  11080. " ) STAFF ON proddata.CLASSESSETTINGID = STAFF.CLASSESSETTINGID\n" +
  11081. //" LEFT JOIN (SELECT def.barcode, wmsys.wm_concat( to_char(def.defectcode)) alldefectcode\n" +
  11082. //" FROM tp_pm_defect def\n" +
  11083. //" WHERE def.valueflag = '1'\n" +
  11084. ////def.createtime
  11085. //" group by def.barcode ) d\n" +
  11086. //" ON d.barcode = pmd.barcode\n" +
  11087. " WHERE pmd.valueflag = '1' \n" +
  11088. " AND pd.ModelType = -1\n" +
  11089. " AND pmd.AccountID = :AccountID\n";
  11090. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  11091. parameters.Add(new OracleParameter(":HandOverProcedureID", OracleDbType.Int32, se.HandOverProcedureID, ParameterDirection.Input));
  11092. parameters.Add(new OracleParameter(":ProProcedureIDS", OracleDbType.Varchar2, se.CompleteProcedureIDS, ParameterDirection.Input));
  11093. //selSql = selSql +
  11094. // " Where TP_PM_Defect.valueflag='1' and tp_pm_productiondata.ModelType=-1" +
  11095. // " and TP_PM_Defect.AccountID=:AccountID ";
  11096. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  11097. {
  11098. selSql = selSql + " AND instr(gt.GOODSTYPECode,:GoodsTypeCode)=1 ";
  11099. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  11100. }
  11101. if (!string.IsNullOrEmpty(se.LineIDS))
  11102. {
  11103. selSql = selSql + " AND instr(','||:ProductionLineIDS||',',','||pmd.ProductionLineId||',')>0 ";
  11104. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.LineIDS, ParameterDirection.Input));
  11105. }
  11106. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  11107. {
  11108. //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) ";
  11109. selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||pmd.DefectProcedureID||',')>0 ) ";
  11110. parameters.Add(new OracleParameter(":DefectProcedureIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  11111. }
  11112. else
  11113. {
  11114. // modify by chenxy :没有选择时,应全查询出来。
  11115. //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序
  11116. }
  11117. if (!string.IsNullOrEmpty(se.CheckProcedureIDS))
  11118. {
  11119. selSql = selSql + " AND instr(','||:ProcedureIDS||',',','||pmd.ProcedureID||',')>0 ";
  11120. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.CheckProcedureIDS, ParameterDirection.Input));
  11121. }
  11122. if (!string.IsNullOrEmpty(se.KilnCode))
  11123. {
  11124. selSql = selSql + " AND instr(pd.KilnCode,:KilnCode) >0 ";
  11125. parameters.Add(new OracleParameter(":KilnCode", OracleDbType.NVarchar2, se.KilnCode, ParameterDirection.Input));
  11126. }
  11127. if (!string.IsNullOrEmpty(se.GoodsIDS))
  11128. {
  11129. selSql = selSql + " AND instr(','||:GoodsIDS||',',','||pmd.Goodsid||',')>0 ";
  11130. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
  11131. }
  11132. if (!string.IsNullOrEmpty(se.GoodsCode))
  11133. {
  11134. selSql = selSql + " AND instr(pmd.goodsCode,:GoodsCode) >0 ";
  11135. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  11136. }
  11137. if (!string.IsNullOrEmpty(se.GoodsCodeS2D))
  11138. {
  11139. selSql = selSql + " AND pmd.goodsCode = :GoodsCodeS2D ";
  11140. parameters.Add(new OracleParameter(":GoodsCodeS2D", OracleDbType.NVarchar2, se.GoodsCodeS2D, ParameterDirection.Input));
  11141. }
  11142. if (!string.IsNullOrEmpty(se.DefectUserCode))
  11143. {
  11144. selSql = selSql + " AND instr(pmd.DefectUserCode,:DefectUserCode) >0 ";
  11145. parameters.Add(new OracleParameter(":DefectUserCode", OracleDbType.NVarchar2, se.DefectUserCode, ParameterDirection.Input));
  11146. }
  11147. if (!string.IsNullOrEmpty(se.DefectTypeIDS))
  11148. {
  11149. selSql = selSql + " AND instr(','||:DefectTypeIDS||',',','||dt.DefectTypeID||',')>0 ";
  11150. parameters.Add(new OracleParameter(":DefectTypeIDS", OracleDbType.NVarchar2, se.DefectTypeIDS, ParameterDirection.Input));
  11151. }
  11152. if (!string.IsNullOrEmpty(se.DefectCode))
  11153. {
  11154. selSql = selSql + " AND instr(pmd.DefectCode,:DefectCode) >0 ";
  11155. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  11156. }
  11157. if (!string.IsNullOrEmpty(se.DefectCodeS2D))
  11158. {
  11159. selSql = selSql + " AND pmd.DefectCode = :DefectCodeS2D ";
  11160. parameters.Add(new OracleParameter(":DefectCodeS2D", OracleDbType.NVarchar2, se.DefectCodeS2D, ParameterDirection.Input));
  11161. }
  11162. if (!string.IsNullOrEmpty(se.DefectName))
  11163. {
  11164. selSql = selSql + " AND instr(pmd.DefectName,:DefectName) >0 ";
  11165. parameters.Add(new OracleParameter(":DefectName", OracleDbType.NVarchar2, se.DefectName, ParameterDirection.Input));
  11166. }
  11167. if (!string.IsNullOrEmpty(se.CheckUserCode))
  11168. {
  11169. selSql = selSql + " AND instr(pmd.UserCode,:UserCode) >0";
  11170. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CheckUserCode, ParameterDirection.Input));
  11171. }
  11172. if (!string.IsNullOrEmpty(se.CheckUserCodeS2D))
  11173. {
  11174. selSql = selSql + " AND pmd.UserCode = :CheckUserCodeS2D ";
  11175. parameters.Add(new OracleParameter(":CheckUserCodeS2D", OracleDbType.NVarchar2, se.CheckUserCodeS2D, ParameterDirection.Input));
  11176. }
  11177. //if (se.CreateTimeStart.HasValue)
  11178. //{
  11179. // selSql = selSql + " AND pmd.CreateTime>= :CreateTimeStart ";
  11180. // parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  11181. //}
  11182. //if (se.CreateTimeEnd.HasValue)
  11183. //{
  11184. // selSql = selSql + " AND pmd.CreateTime<= :CreateTimeEnd ";
  11185. // parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  11186. //}
  11187. // 成检登记时间
  11188. if (se.CreateTimeStart.HasValue)
  11189. {
  11190. selSql = selSql + " AND pd.checktime>= :CreateTimeStart ";
  11191. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
  11192. }
  11193. if (se.CreateTimeEnd.HasValue)
  11194. {
  11195. selSql = selSql + " AND pd.checktime<= :CreateTimeEnd ";
  11196. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
  11197. }
  11198. // 缺陷登记时间
  11199. if (se.CheckTimeStart.HasValue)
  11200. {
  11201. selSql = selSql + " AND pmd.checktime>= :CheckTimeStart ";
  11202. parameters.Add(new OracleParameter(":CheckTimeStart", OracleDbType.Date, se.CheckTimeStart.Value, ParameterDirection.Input));
  11203. }
  11204. if (se.CheckTimeEnd.HasValue)
  11205. {
  11206. selSql = selSql + " AND pmd.checktime<= :CheckTimeEnd ";
  11207. parameters.Add(new OracleParameter(":CheckTimeEnd", OracleDbType.Date, se.CheckTimeEnd.Value, ParameterDirection.Input));
  11208. }
  11209. // 交接时间
  11210. if (se.HandOverTimeStart.HasValue)
  11211. {
  11212. selSql = selSql + " AND hopd.CreateTime>= :HandOverTimeStart ";
  11213. parameters.Add(new OracleParameter(":HandOverTimeStart", OracleDbType.Date, se.HandOverTimeStart.Value, ParameterDirection.Input));
  11214. }
  11215. if (se.HandOverTimeEnd.HasValue)
  11216. {
  11217. selSql = selSql + " AND hopd.CreateTime<= :HandOverTimeEnd ";
  11218. parameters.Add(new OracleParameter(":HandOverTimeEnd", OracleDbType.Date, se.HandOverTimeEnd.Value, ParameterDirection.Input));
  11219. }
  11220. // fenglinyong add 添加员工姓名 2022-08-29
  11221. if (!string.IsNullOrEmpty(se.StaffName))
  11222. {
  11223. selSql = selSql + " AND instr(STAFF.STAFFNAME,:STAFFNAME) >0";
  11224. parameters.Add(new OracleParameter(":STAFFNAME", OracleDbType.NVarchar2, se.StaffName, ParameterDirection.Input));
  11225. }
  11226. // fenglinyong add 添加员工姓名 2022-08-29
  11227. //selSql = selSql + " order by pmd.productionlinename,p.DISPLAYNO,pdd.DISPLAYNO,dt.DISPLAYNO,mstd.DISPLAYNO,pmd.defectusercode,pmd.barcode ";
  11228. selSql = selSql + " order by proddata.CheckTime ";
  11229. return selSql;
  11230. }
  11231. /// <summary>
  11232. /// 窑车状态主表查询
  11233. /// </summary>
  11234. /// <param name="kilnCode">窑炉编码</param>
  11235. /// <param name="kilnCarCode">窑车编码</param>
  11236. /// <param name="sUserInfo">用户基本信息</param>
  11237. /// <returns></returns>
  11238. public static ServiceResultEntity GetKilnCarStatusByCode(string kilnCode, string kilnCarCode, SUserInfo sUserInfo)
  11239. {
  11240. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  11241. try
  11242. {
  11243. con.Open();
  11244. OracleParameter[] paras = new OracleParameter[]{
  11245. new OracleParameter("in_AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  11246. new OracleParameter("in_KilnCode",OracleDbType.Varchar2,kilnCode,ParameterDirection.Input),
  11247. new OracleParameter("in_KilnCarCode",OracleDbType.Varchar2,kilnCarCode,ParameterDirection.Input),
  11248. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  11249. };
  11250. DataSet dsSearchReport = con.ExecStoredProcedure("PRO_RPT_GetKilnCarStatus", paras);
  11251. ServiceResultEntity sre = new ServiceResultEntity();
  11252. if (dsSearchReport == null || dsSearchReport.Tables[0].Rows.Count == 0)
  11253. {
  11254. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11255. return sre;
  11256. }
  11257. sre.Data = new DataSet();
  11258. sre.Data.Tables.Add(dsSearchReport.Tables[0].Copy());
  11259. return sre;
  11260. }
  11261. catch (Exception ex)
  11262. {
  11263. throw ex;
  11264. }
  11265. finally
  11266. {
  11267. if (con != null &&
  11268. con.ConnState == ConnectionState.Open)
  11269. {
  11270. con.Close();
  11271. }
  11272. }
  11273. }
  11274. /// <summary>
  11275. /// 窑车状态明细表查询
  11276. /// </summary>
  11277. /// <param name="kilnCarCode">窑车编码</param>
  11278. /// <param name="sUserInfo">用户基本信息</param>
  11279. /// <returns></returns>
  11280. public static ServiceResultEntity GetKilnCarStatusDetailByCode(string kilnCarCode, SUserInfo sUserInfo)
  11281. {
  11282. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  11283. try
  11284. {
  11285. con.Open();
  11286. OracleParameter[] paras = new OracleParameter[]{
  11287. new OracleParameter("in_AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  11288. new OracleParameter("in_KilnCarCode",OracleDbType.Varchar2,kilnCarCode,ParameterDirection.Input),
  11289. new OracleParameter("out_KilnCarData",OracleDbType.RefCursor, ParameterDirection.Output),
  11290. new OracleParameter("out_KilnCarGoods",OracleDbType.RefCursor, ParameterDirection.Output),
  11291. };
  11292. DataSet dsSearchReport = con.ExecStoredProcedure("PRO_RPT_GetKilnCarData", paras);
  11293. ServiceResultEntity sre = new ServiceResultEntity();
  11294. if (dsSearchReport == null || dsSearchReport.Tables[0].Rows.Count == 0)
  11295. {
  11296. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11297. return sre;
  11298. }
  11299. sre.Data = new DataSet();
  11300. sre.Data.Tables.Add(dsSearchReport.Tables[0].Copy());//生产数据
  11301. sre.Data.Tables.Add(dsSearchReport.Tables[1].Copy());//窑车产品
  11302. return sre;
  11303. }
  11304. catch (Exception ex)
  11305. {
  11306. throw ex;
  11307. }
  11308. finally
  11309. {
  11310. if (con != null &&
  11311. con.ConnState == ConnectionState.Open)
  11312. {
  11313. con.Close();
  11314. }
  11315. }
  11316. }
  11317. /// <summary>
  11318. /// 取得RPT010201_1画面(工序漏扫明细表)的查询数据
  11319. /// </summary>
  11320. /// <param name="user">登录用户信息</param>
  11321. /// <param name="se">查询条件</param>
  11322. /// <returns>查询结果</returns>
  11323. public static ServiceResultEntity GetRPT080101SData(SUserInfo user, RPT010201_SE se)
  11324. {
  11325. IDBConnection conn = null;
  11326. try
  11327. {
  11328. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  11329. List<OracleParameter> parameters = new List<OracleParameter>();
  11330. parameters.Clear();
  11331. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT080101SSQL(user, se, ref parameters));
  11332. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  11333. ServiceResultEntity sre = new ServiceResultEntity();
  11334. if (data == null || data.Rows.Count == 0)
  11335. {
  11336. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11337. return sre;
  11338. }
  11339. sre.Data = new DataSet();
  11340. sre.Data.Tables.Add(data);
  11341. return sre;
  11342. }
  11343. catch (Exception ex)
  11344. {
  11345. throw ex;
  11346. }
  11347. finally
  11348. {
  11349. if (conn != null &&
  11350. conn.ConnState == ConnectionState.Open)
  11351. {
  11352. conn.Close();
  11353. }
  11354. }
  11355. }
  11356. /// <summary>
  11357. /// 获取RPT010201_1画面(工序漏扫明细表)的查询sql
  11358. /// </summary>
  11359. /// <returns>sql</returns>
  11360. private static string GetRPT080101SSQL(SUserInfo user, RPT010201_SE se, ref List<OracleParameter> parameters)
  11361. {
  11362. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  11363. #region
  11364. #endregion
  11365. string sql = @"
  11366. select gd.groutinglinecode,
  11367. gd.groutingmouldcode,
  11368. gd.mouldcode,
  11369. gd.usercode,
  11370. gs.goodscode,
  11371. gs.goodsname,
  11372. gs.goodsspecification,
  11373. gms.gmouldstatusname, -- 模具状态
  11374. --gs.goodsmodel,
  11375. gd.groutingcount, -- 注浆次数
  11376. --gd.groutingnum,
  11377. gd.scrapnum, -- 开模损坯数
  11378. gd.deliverpnum, -- 交坯数
  11379. gd.mingroutingdate, -- 开始注浆时间
  11380. gd.maxgroutingdate, -- 最后注浆时间
  11381. gld.beginuseddate, -- 开始使用时间
  11382. gld.enduseddate, -- 结束使用时间
  11383. zl.OutKilnCount, -- 质量登记数
  11384. zl.GoodCount, -- 正品数
  11385. zl.SubstandardCount, -- 副品数
  11386. zl.ReFireCount, -- 重烧数
  11387. zl.BadCount -- 次品数
  11388. from (select gdd.groutinglinecode,
  11389. gdd.groutingmouldcode,
  11390. gdd.mouldcode,
  11391. gdd.goodsid,
  11392. gdd.groutinglinedetailid,
  11393. wmsys.wm_concat(distinct to_char(gdd.usercode)) usercode,
  11394. max(gdd.groutingcount) groutingcount,
  11395. sum(decode(gdd.groutingflag, '1', 1, 0)) groutingnum,
  11396. sum(decode(gdd.scrapflag, '1', 1, 0)) scrapnum,
  11397. sum(decode(gdd.deliverflag, '1', 1, 0)) deliverpnum,
  11398. min(gdd.groutingdate) mingroutingdate,
  11399. max(gdd.groutingdate) maxgroutingdate
  11400. from tp_pm_groutingdailydetail gdd
  11401. where gdd.groutingflag = '1'
  11402. and gdd.AccountID = :AccountID
  11403. ";
  11404. // 成型线编码
  11405. if (!string.IsNullOrEmpty(se.groutinglinecode))
  11406. {
  11407. //sql = sql + " and gdd.groutinglinecode=:groutinglinecode";
  11408. sql = sql + " and instr(gdd.groutinglinecode,:groutinglinecode)>0";
  11409. parameters.Add(new OracleParameter(":groutinglinecode", OracleDbType.NVarchar2, se.groutinglinecode, ParameterDirection.Input));
  11410. }
  11411. // 模具编码
  11412. if (!string.IsNullOrEmpty(se.groutingmouldcode))
  11413. {
  11414. //sql = sql + " and gdd.groutingmouldcode=:groutingmouldcode";
  11415. sql = sql + " and instr(gdd.groutingmouldcode,:groutingmouldcode)>0";
  11416. parameters.Add(new OracleParameter(":groutingmouldcode", OracleDbType.NVarchar2, se.groutingmouldcode, ParameterDirection.Input));
  11417. }
  11418. sql = sql + @"
  11419. group by gdd.groutinglinecode,
  11420. gdd.groutingmouldcode,
  11421. gdd.mouldcode,
  11422. gdd.goodsid,
  11423. gdd.groutinglinedetailid) gd
  11424. left join (select pdbc.mouldcode,
  11425. sum(1) OutKilnCount,
  11426. sum(case
  11427. when defect.defectprocedureid is not null and
  11428. glt.goodsleveltypeid in (5, 6, 7) then
  11429. 0
  11430. else
  11431. 1
  11432. end) GoodCount,
  11433. sum(case
  11434. when defect.defectprocedureid is not null and
  11435. glt.goodsleveltypeid = 7 then
  11436. 1
  11437. else
  11438. 0
  11439. end) SubstandardCount,
  11440. sum(case
  11441. when defect.defectprocedureid is not null and
  11442. glt.goodsleveltypeid = 6 then
  11443. 1
  11444. else
  11445. 0
  11446. end) ReFireCount,
  11447. sum(case
  11448. when defect.defectprocedureid is not null and
  11449. glt.goodsleveltypeid = 5 then
  11450. 1
  11451. else
  11452. 0
  11453. end) BadCount
  11454. from (select distinct pd.barcode,
  11455. pd.mouldcode,
  11456. pd.kilncarbatchno
  11457. from tp_pm_productiondata pd
  11458. where pd.valueflag = '1'";
  11459. // 开始注浆--开始
  11460. if (se.beginCreateTime.HasValue)
  11461. {
  11462. sql = sql + " and pd.createtime>=:groutingDateStart ";
  11463. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  11464. }
  11465. //--and pd.createtime > 查询条件。开始注浆日期开始
  11466. // --and pd.procedureid = :in_rptSprocedureId
  11467. sql = sql + @"
  11468. and pd.procedureid = 11
  11469. and pd.AccountID = 1) pdbc
  11470. left join (select kcbc.barcode,
  11471. kcbc.kilncarbatchno,
  11472. kcbc.goodsleveltypeid,
  11473. kcbc.productiondataid
  11474. from (select pd.barcode,
  11475. pd.kilncarbatchno,
  11476. pd.goodsleveltypeid,
  11477. pd.productiondataid,
  11478. ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid
  11479. from tp_pm_productiondata pd
  11480. where pd.valueflag = '1'
  11481. --and pd.AccountID = :AccountID
  11482. and pd.AccountID = :AccountID";
  11483. //--and pd.createtime > 查询条件。开始注浆日期开始
  11484. // 开始注浆--开始
  11485. if (se.beginCreateTime.HasValue)
  11486. {
  11487. sql = sql + " and pd.createtime>=:groutingDateStart ";
  11488. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  11489. }
  11490. sql = sql + @" and length(pd.kilncarbatchno) > 0
  11491. and pd.modeltype = -1) kcbc
  11492. where kcbc.dataid = 1) glt
  11493. on pdbc.kilncarbatchno = glt.kilncarbatchno
  11494. and pdbc.barcode = glt.barcode
  11495. left join (select distinct productiondataid, defectprocedureid
  11496. from tp_pm_defect def
  11497. where def.valueflag = '1'";
  11498. //--and pd.createtime > 查询条件。开始注浆日期开始
  11499. // 开始注浆--开始
  11500. if (se.beginCreateTime.HasValue)
  11501. {
  11502. sql = sql + " and def.createtime>=:groutingDateStart ";
  11503. parameters.Add(new OracleParameter(":groutingDateStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  11504. }
  11505. sql = sql + @"
  11506. and def.AccountID = :AccountID) defect
  11507. on defect.productiondataid = glt.productiondataid
  11508. group by pdbc.mouldcode) zl
  11509. on zl.mouldcode = gd.mouldcode
  11510. left join tp_mst_goods gs
  11511. on gs.goodsid = gd.goodsid
  11512. left join tp_pc_groutinglinedetail gld
  11513. on gld.groutinglinedetailid = gd.groutinglinedetailid
  11514. and gld.mouldcode = gd.mouldcode
  11515. left join tp_sys_gmouldstatus gms
  11516. on gms.gmouldstatusid = gld.gmouldstatus
  11517. where 1=1
  11518. ";
  11519. // 产品编码
  11520. if (!string.IsNullOrEmpty(se.goodscode))
  11521. {
  11522. //sql = sql + " and gs.goodscode=:goodscode";
  11523. sql = sql + " and instr(gs.goodscode,:goodscode)>0";
  11524. parameters.Add(new OracleParameter(":goodscode", OracleDbType.NVarchar2, se.goodscode, ParameterDirection.Input));
  11525. }
  11526. // 成型工号
  11527. if (!string.IsNullOrEmpty(se.groutingUserCode))
  11528. {
  11529. //sql = sql + " and gd.usercode=:usercode";
  11530. sql = sql + " and instr(gd.usercode,:usercode)>0";
  11531. parameters.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, se.groutingUserCode, ParameterDirection.Input));
  11532. }
  11533. // 开始注浆--开始
  11534. if (se.beginCreateTime.HasValue)
  11535. {
  11536. sql = sql + " and gd.mingroutingdate>=:CreateTimeStart ";
  11537. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.beginCreateTime.Value, ParameterDirection.Input));
  11538. }
  11539. // 开始注浆--结束
  11540. if (se.endCreateTime.HasValue)
  11541. {
  11542. sql = sql + " and gd.mingroutingdate<=:CreateTimeEnd ";
  11543. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.endCreateTime.Value, ParameterDirection.Input));
  11544. }
  11545. // 结束注浆--开始
  11546. if (se.beginCreateTime2.HasValue)
  11547. {
  11548. sql = sql + " and gd.maxgroutingdate>=:CreateTimeotherStart2 ";
  11549. parameters.Add(new OracleParameter(":CreateTimeotherStart2", OracleDbType.Date, se.beginCreateTime2.Value, ParameterDirection.Input));
  11550. }
  11551. // 结束注浆--结束
  11552. if (se.endCreateTime2.HasValue)
  11553. {
  11554. sql = sql + " and gd.maxgroutingdate<=:CreateTimeotherEnd2";
  11555. parameters.Add(new OracleParameter(":CreateTimeotherEnd2", OracleDbType.Date, se.endCreateTime2.Value, ParameterDirection.Input));
  11556. }
  11557. // 模具状态
  11558. if (!string.IsNullOrEmpty(se.gmouldstatus))
  11559. {
  11560. sql = sql + " and gms.gmouldstatusid=:gmouldstatus";
  11561. parameters.Add(new OracleParameter(":gmouldstatus", OracleDbType.NVarchar2, se.gmouldstatus, ParameterDirection.Input));
  11562. }
  11563. sql = sql + " order by groutinglinecode,groutingmouldcode";
  11564. return sql;
  11565. }
  11566. #region 工资产量统计
  11567. /// <summary>
  11568. /// 取得RPT080102画面(成型工产量)的查询数据
  11569. /// </summary>
  11570. /// <param name="user">登录用户信息</param>
  11571. /// <param name="se">查询条件</param>
  11572. /// <returns>查询结果</returns>
  11573. public static ServiceResultEntity GetRPT080102SData(SUserInfo user, RPT080102_SE se)
  11574. {
  11575. IDBTransaction conn = null;
  11576. try
  11577. {
  11578. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11579. conn.Connect();
  11580. OracleParameter[] paras = new OracleParameter[]{
  11581. new OracleParameter("in_AccountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  11582. new OracleParameter("in_BeginDate",OracleDbType.Date,se.startDateTime,ParameterDirection.Input),
  11583. new OracleParameter("in_EndDate",OracleDbType.Date,se.endDateTime,ParameterDirection.Input),
  11584. new OracleParameter("in_deliverprocess",OracleDbType.Varchar2,se.DeliverProcedureIDS,ParameterDirection.Input),
  11585. new OracleParameter("in_IntoKilnProcess",OracleDbType.Varchar2,se.IntoProcedureIDS,ParameterDirection.Input),
  11586. new OracleParameter("in_OutKilnProcess",OracleDbType.Varchar2,se.OutProcedureIDS,ParameterDirection.Input),
  11587. new OracleParameter("in_QualityProcess",OracleDbType.Varchar2,se.ProcedureIDS,ParameterDirection.Input),
  11588. new OracleParameter("in_DefectFine",OracleDbType.Varchar2,se.DefectFineIDS,ParameterDirection.Input),
  11589. new OracleParameter("in_Impurity",OracleDbType.Varchar2,se.DefectIDS,ParameterDirection.Input),
  11590. new OracleParameter("out_Production",OracleDbType.RefCursor, ParameterDirection.Output),
  11591. new OracleParameter("out_Deliver",OracleDbType.RefCursor,ParameterDirection.Output),
  11592. new OracleParameter("out_Repair",OracleDbType.RefCursor,ParameterDirection.Output),
  11593. };
  11594. conn.IsCommandTimeout = false;
  11595. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetDeliver_Production", paras);
  11596. ServiceResultEntity sre = new ServiceResultEntity();
  11597. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  11598. {
  11599. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11600. return sre;
  11601. }
  11602. sre.Data = new DataSet();
  11603. sre.Data = data;
  11604. conn.Commit();
  11605. return sre;
  11606. }
  11607. catch (Exception ex)
  11608. {
  11609. throw ex;
  11610. }
  11611. finally
  11612. {
  11613. if (conn != null &&
  11614. conn.ConnState == ConnectionState.Open)
  11615. {
  11616. conn.Disconnect();
  11617. }
  11618. }
  11619. }
  11620. /// <summary>
  11621. /// 取得RPT080103画面(烧成前工序产量明细表)的查询数据
  11622. /// </summary>
  11623. /// <param name="user">登录用户信息</param>
  11624. /// <param name="se">查询条件</param>
  11625. /// <returns>查询结果</returns>
  11626. public static ServiceResultEntity GetRPT080103SData(SUserInfo user, RPT080103_SE se)
  11627. {
  11628. IDBTransaction conn = null;
  11629. try
  11630. {
  11631. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11632. conn.Connect();
  11633. OracleParameter[] paras = new OracleParameter[]{
  11634. new OracleParameter("in_AccountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  11635. new OracleParameter("in_BeginDate",OracleDbType.Date,se.startDateTime,ParameterDirection.Input),
  11636. new OracleParameter("in_EndDate",OracleDbType.Date,se.endDateTime,ParameterDirection.Input),
  11637. new OracleParameter("in_Process",OracleDbType.Varchar2,se.ProcedureIDS,ParameterDirection.Input),
  11638. new OracleParameter("in_HandOverProcess",OracleDbType.Varchar2,se.HandOverProcedureIDS,ParameterDirection.Input),
  11639. new OracleParameter("in_OutKilnProcess",OracleDbType.Varchar2,se.OutProcedureIDS,ParameterDirection.Input),
  11640. new OracleParameter("in_QualityProcess",OracleDbType.Varchar2,se.QualityProcedureIDS,ParameterDirection.Input),
  11641. new OracleParameter("in_Defect1",OracleDbType.Varchar2,se.DefectIDS,ParameterDirection.Input),
  11642. new OracleParameter("in_Defect2",OracleDbType.Varchar2,se.DefectIDS2,ParameterDirection.Input),
  11643. new OracleParameter("out_Production",OracleDbType.RefCursor, ParameterDirection.Output),
  11644. };
  11645. conn.IsCommandTimeout = false;
  11646. //DataSet data = null;
  11647. //if (se.ProcedureIDS.Contains(","))
  11648. //{
  11649. // data = conn.ExecStoredProcedure("PRO_RPT_GetStandardProduction2", paras);
  11650. //}
  11651. //else
  11652. //{
  11653. // data = conn.ExecStoredProcedure("PRO_RPT_GetStandardProduction", paras);
  11654. //}
  11655. DataSet data = conn.ExecStoredProcedure("PRO_RPT_GetStandard_Production", paras);
  11656. ServiceResultEntity sre = new ServiceResultEntity();
  11657. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  11658. {
  11659. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11660. return sre;
  11661. }
  11662. sre.Data = new DataSet();
  11663. sre.Data = data;
  11664. conn.Commit();
  11665. return sre;
  11666. }
  11667. catch (Exception ex)
  11668. {
  11669. throw ex;
  11670. }
  11671. finally
  11672. {
  11673. if (conn != null &&
  11674. conn.ConnState == ConnectionState.Open)
  11675. {
  11676. conn.Disconnect();
  11677. }
  11678. }
  11679. }
  11680. /// <summary>
  11681. /// 取得RPT080104画面(烧成工序产量明细表)的查询数据
  11682. /// </summary>
  11683. /// <param name="user">登录用户信息</param>
  11684. /// <param name="se">查询条件</param>
  11685. /// <returns>查询结果</returns>
  11686. public static ServiceResultEntity GetRPT080104SData(SUserInfo user, RPT080103_SE se)
  11687. {
  11688. IDBTransaction conn = null;
  11689. try
  11690. {
  11691. conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11692. conn.Connect();
  11693. OracleParameter[] paras = new OracleParameter[]{
  11694. new OracleParameter("in_AccountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  11695. new OracleParameter("in_BeginDate",OracleDbType.Date,se.startDateTime,ParameterDirection.Input),
  11696. new OracleParameter("in_EndDate",OracleDbType.Date,se.endDateTime,ParameterDirection.Input),
  11697. new OracleParameter("in_Process",OracleDbType.Varchar2,se.ProcedureIDS,ParameterDirection.Input),
  11698. new OracleParameter("in_OutKilnProcess",OracleDbType.Varchar2,se.OutProcedureIDS,ParameterDirection.Input),
  11699. new OracleParameter("in_QualityProcess",OracleDbType.Varchar2,se.QualityProcedureIDS,ParameterDirection.Input),
  11700. new OracleParameter("in_Defect1",OracleDbType.Varchar2,se.DefectIDS,ParameterDirection.Input),
  11701. new OracleParameter("in_Defect2",OracleDbType.Varchar2,se.DefectIDS2,ParameterDirection.Input),
  11702. new OracleParameter("out_Production",OracleDbType.RefCursor, ParameterDirection.Output),
  11703. };
  11704. conn.IsCommandTimeout = false;
  11705. DataSet data = null;
  11706. if (se.ProcedureIDS.Contains(","))
  11707. {
  11708. data = conn.ExecStoredProcedure("PRO_RPT_GetKilnProduction2", paras);
  11709. }
  11710. else
  11711. {
  11712. data = conn.ExecStoredProcedure("PRO_RPT_GetKilnProduction", paras);
  11713. }
  11714. ServiceResultEntity sre = new ServiceResultEntity();
  11715. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  11716. {
  11717. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  11718. return sre;
  11719. }
  11720. sre.Data = data;
  11721. //string sqlString =
  11722. //"SELECT kk.procedurename\n" +
  11723. //" ,kk.usercode\n" +
  11724. //" ,kk.kilncode\n" +
  11725. //" ,kk.kdate\n" +
  11726. //" ,COUNT(*) kcount\n" +
  11727. //" FROM (SELECT k.usercode\n" +
  11728. //" ,kiln.kilncode\n" +
  11729. //" ,p.procedurename\n" +
  11730. //" ,trunc(k.createtime) kdate\n" +
  11731. //" FROM tp_pm_kilncardata k\n" +
  11732. //" LEFT JOIN tp_mst_kiln kiln\n" +
  11733. //" ON kiln.kilnid = k.kilnid\n" +
  11734. //" LEFT JOIN tp_pc_procedure p\n" +
  11735. //" ON p.procedureid = k.procedureid\n" +
  11736. //" WHERE k.valueflag = '1'\n" +
  11737. //" AND k.AccountID = :in_AccountID\n" +
  11738. //" AND k.createtime >= :in_BeginDate\n" +
  11739. //" AND k.createtime <= :in_EndDate\n" +
  11740. //" AND instr(','|| :procedureids ||',', ','|| k.procedureid ||',' ) > 0) kk\n" +
  11741. //" GROUP BY kk.procedurename, kk.usercode, kk.kilncode, kk.kdate\n" +
  11742. //" ORDER BY kk.procedurename, kk.usercode, kk.kilncode, kk.kdate";
  11743. string sqlString = "WITH kilnData AS\n" +
  11744. " (SELECT k.usercode\n" +
  11745. " ,kiln.kilncode\n" +
  11746. " ,p.procedurename\n" +
  11747. " ,trunc(k.createtime) kdate\n" +
  11748. " ,k.userid\n" +
  11749. " ,k.procedureid\n" +
  11750. " ,k.kilnid\n" +
  11751. " ,k.KILNCARBATCHNO\n" +
  11752. " FROM tp_pm_kilncardata k\n" +
  11753. " LEFT JOIN tp_mst_kiln kiln\n" +
  11754. " ON kiln.kilnid = k.kilnid\n" +
  11755. " LEFT JOIN tp_pc_procedure p\n" +
  11756. " ON p.procedureid = k.procedureid\n" +
  11757. " WHERE k.valueflag = '1'\n" +
  11758. " AND k.AccountID = :in_AccountID\n" +
  11759. " AND k.createtime >= :in_BeginDate\n" +
  11760. " AND k.createtime <= :in_EndDate\n" +
  11761. " AND instr(',' || :procedureids || ',', ',' || k.procedureid || ',') > 0)\n" +
  11762. "SELECT kd.procedurename\n" +
  11763. " ,kd.usercode\n" +
  11764. " ,kd.kilncode\n" +
  11765. " ,kd.kdate\n" +
  11766. " ,kd.kcount\n" +
  11767. " ,kpd.kpcount\n" +
  11768. " FROM (SELECT kk.procedurename\n" +
  11769. " ,kk.usercode\n" +
  11770. " ,kk.kilncode\n" +
  11771. " ,kk.kdate\n" +
  11772. " ,kk.procedureid\n" +
  11773. " ,kk.userid\n" +
  11774. " ,kk.kilnid\n" +
  11775. " ,COUNT(*) kcount\n" +
  11776. " FROM kilnData kk\n" +
  11777. " GROUP BY kk.procedurename\n" +
  11778. " ,kk.usercode\n" +
  11779. " ,kk.kilncode\n" +
  11780. " ,kk.kdate\n" +
  11781. " ,kk.procedureid\n" +
  11782. " ,kk.userid\n" +
  11783. " ,kk.kilnid) kd\n" +
  11784. " LEFT JOIN (SELECT kk.kdate\n" +
  11785. " ,kk.procedureid\n" +
  11786. " ,kk.userid\n" +
  11787. " ,kk.kilnid\n" +
  11788. " ,COUNT(*) kpcount\n" +
  11789. " FROM kilnData kk\n" +
  11790. " INNER JOIN tp_pm_productiondata pd\n" +
  11791. " ON pd.valueflag = '1'\n" +
  11792. " AND pd.procedureid = kk.procedureid\n" +
  11793. " AND pd.kilnid = kk.kilnid\n" +
  11794. " AND pd.KILNCARBATCHNO = kk.KILNCARBATCHNO\n" +
  11795. " GROUP BY kk.kdate, kk.procedureid, kk.userid, kk.kilnid) kpd\n" +
  11796. " ON kpd.kdate = kd.kdate\n" +
  11797. " AND kpd.procedureid = kd.procedureid\n" +
  11798. " AND kpd.userid = kd.userid\n" +
  11799. " AND kpd.kilnid = kd.kilnid\n" +
  11800. " ORDER BY kd.procedurename, kd.usercode, kd.kilncode, kd.kdate";
  11801. OracleParameter[] parascount = new OracleParameter[]{
  11802. new OracleParameter(":in_AccountID",OracleDbType.Int32,user.AccountID,ParameterDirection.Input),
  11803. new OracleParameter(":in_BeginDate",OracleDbType.Date,se.startDateTime,ParameterDirection.Input),
  11804. new OracleParameter(":in_EndDate",OracleDbType.Date,se.endDateTime,ParameterDirection.Input),
  11805. new OracleParameter(":procedureids",OracleDbType.Varchar2,se.ProcedureIDS,ParameterDirection.Input),
  11806. };
  11807. DataTable dt = conn.GetSqlResultToDt(sqlString, parascount);
  11808. if (dt != null)
  11809. {
  11810. sre.Data.Tables.Add(dt);
  11811. }
  11812. conn.Commit();
  11813. return sre;
  11814. }
  11815. catch (Exception ex)
  11816. {
  11817. throw ex;
  11818. }
  11819. finally
  11820. {
  11821. if (conn != null &&
  11822. conn.ConnState == ConnectionState.Open)
  11823. {
  11824. conn.Disconnect();
  11825. }
  11826. }
  11827. }
  11828. #endregion
  11829. /// <summary>
  11830. /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据 若生产工序包含干补,则执行干补的查询sql,且只查询干补一个生产工序
  11831. /// </summary>
  11832. /// <param name="searchEntity">生产数据实体类</param>
  11833. /// <param name="user">用户基本信息</param>
  11834. /// <returns>DataTable</returns>
  11835. public static DataTable GetProductionData(SearchProductionDataEntity searchEntity, SUserInfo user)
  11836. {
  11837. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  11838. string sqlString = "";
  11839. IDataParameter[] paras = null;
  11840. try
  11841. {
  11842. //2022年8月15日10:07:28 工序写死待调整
  11843. if (!string.IsNullOrEmpty(searchEntity.ProcedureIDS + "") && (',' + searchEntity.ProcedureIDS + ',').Contains(",19,"))
  11844. {
  11845. sqlString = @"SELECT
  11846. CASE WHEN CreateTime IS NULL AND GID = 0 THEN '小计' WHEN GID = 1 THEN '合计'
  11847. WHEN GID = 3 THEN '总计' ELSE TO_CHAR( ProductionLineName ) END AS ProductionLineName,
  11848. CreateTime,
  11849. ProductionDataID,
  11850. procedureName,
  11851. BarCode,
  11852. GoodsCode,
  11853. GoodsName,
  11854. UserCode,
  11855. IsPublicBody,
  11856. ProcedureModel,
  11857. PieceType,
  11858. ProcedureModelTypeName,
  11859. GoodsGrade,
  11860. OrganizationName,
  11861. Remarks,
  11862. KilnID,
  11863. KilnCode,
  11864. KilnName,
  11865. KilnCarID,
  11866. KilnCarCode,
  11867. KilnCarName,
  11868. KilnCarPosition,
  11869. KilnCarPositionName,
  11870. GoodsTypeName,
  11871. barusercode,
  11872. GroutingUserCode,
  11873. GroutingMouldCode,
  11874. GroutingDate,
  11875. GroutingNum,
  11876. barusername,
  11877. glazingroom,
  11878. Goodsleveltype,
  11879. SpecialRepairFlag,
  11880. finishProcedureName,
  11881. ProductionLineName,
  11882. inprocedurename,
  11883. SecurityCode,
  11884. TestMouldFlag,
  11885. STAFFNAME ,NUMS
  11886. FROM
  11887. (
  11888. SELECT
  11889. GROUPING_ID ( u.usercode, pd.GoodsCode ) GID,
  11890. t.SPECIALREPAIRTIME AS CreateTime,
  11891. pd.ProductionDataID,
  11892. pd.ProductionLineCode,
  11893. '10-0干补' AS procedureName,
  11894. pd.BarCode,
  11895. pd.GoodsCode,
  11896. pd.GoodsName,
  11897. t.SPECIALREPAIRUSERCODE AS UserCode,
  11898. pd.IsPublicBody,
  11899. decode( pd.ProcedureModel, '1', '计数模型', '检验模型' ) AS ProcedureModel,
  11900. pmt.ProcedureModelTypeName,
  11901. decode( pd.PieceType, '1', '不计件', '同工种策略' ) AS PieceType,
  11902. pd.IsReworked,
  11903. gl.GoodsLevelName AS GoodsGrade,
  11904. o.OrganizationName,
  11905. pd.Remarks,
  11906. pd.KilnID,
  11907. pd.KilnCode,
  11908. pd.KilnName,
  11909. pd.KilnCarID,
  11910. pd.KilnCarCode,
  11911. pd.KilnCarName,
  11912. pd.KilnCarPosition,
  11913. dd.DictionaryValue KilnCarPositionName,
  11914. gt.GoodsTypeName,
  11915. u.usercode AS barusercode,
  11916. pd.GroutingUserCode,
  11917. pd.GroutingMouldCode,
  11918. pd.GroutingDate,
  11919. pd.GroutingNum,
  11920. u.username AS barusername,
  11921. gdd.glazingroom,
  11922. decode( pd.Goodsleveltypeid, '4', '正品', '5', '副品', '6', '重烧', '7', '次品', '9', '干补', '' ) AS Goodsleveltype,
  11923. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  11924. pd.SpecialRepairFlag,
  11925. pd.procedureName AS finishProcedureName,
  11926. pd.ProductionLineName,
  11927. pcp.procedurename inprocedurename,
  11928. gdd.SecurityCode,
  11929. gdd.TestMouldFlag,
  11930. STAFF.STAFFNAME
  11931. FROM
  11932. tp_pm_scrapproduct t
  11933. INNER JOIN TP_PM_ProductionData pd ON t.productiondataid = pd.productiondataid
  11934. LEFT JOIN TP_MST_USER u ON pd.Createuserid = u.userid
  11935. LEFT JOIN TP_MST_Goods g ON pd.GoodsID = g.GoodsID
  11936. LEFT JOIN TP_MST_GoodsType gt ON g.GoodsTypeID = gt.GoodsTypeID
  11937. LEFT JOIN TP_SYS_ProcedureModelType pmt ON pd.ModelType = pmt.PROCEDUREMODELTYPEID
  11938. LEFT JOIN TP_MST_GoodsLevel gl ON pd.Goodslevelid = gl.Goodslevelid
  11939. LEFT JOIN TP_MST_ORGANIZATION o ON pd.OrganizationID = o.OrganizationID
  11940. LEFT JOIN TP_MST_DataDictionary dd ON pd.KilnCarPosition = dd.DictionaryID
  11941. LEFT JOIN tp_pm_inproduction inp ON inp.barcode = pd.barcode
  11942. LEFT JOIN tp_pc_procedure pcp ON pcp.procedureid = inp.procedureid
  11943. LEFT JOIN TP_MST_Logo ON pd.logoid = TP_MST_Logo.logoid
  11944. LEFT JOIN TP_PM_GroutingDailyDetail gdd ON pd.Groutingdailydetailid = gdd.Groutingdailydetailid
  11945. LEFT JOIN (
  11946. SELECT
  11947. D.CLASSESSETTINGID,
  11948. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  11949. FROM
  11950. ( SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D
  11951. GROUP BY
  11952. D.CLASSESSETTINGID
  11953. ) STAFF ON pd.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  11954. WHERE
  11955. t.goodsleveltypeid = 9
  11956. AND pd.VALUEFLAG = 1
  11957. AND ( : ProductionLineID = '' OR : ProductionLineID IS NULL OR pd.ProductionLineID =: ProductionLineID )
  11958. AND ( : barCode = '' OR : barCode IS NULL OR instr( pd.BarCode,: barCode ) > 0 )
  11959. AND ( : goodsCode = '' OR : goodsCode IS NULL OR instr( pd.goodsCode,: goodsCode ) > 0 )
  11960. AND ( : goodsName = '' OR : goodsName IS NULL OR instr( pd.goodsName,: goodsName ) > 0 )
  11961. AND ( : userCode = '' OR : userCode IS NULL OR instr( pd.userCode,: userCode ) > 0 )
  11962. AND ( : organizationID = 0 OR : organizationID IS NULL OR pd.organizationID =: organizationID )
  11963. AND ( t.specialrepairtime >=: begindate AND t.specialrepairtime <=: enddate )
  11964. AND ( : isReworked = '' OR : isReworked IS NULL OR ( instr( : isReworked, pd.isReworked ) > 0 ) )
  11965. AND ( : pKilnCode = '' OR : pKilnCode IS NULL OR pd.KilnCode = : pKilnCode )
  11966. AND ( : pKilnCarCode = '' OR : pKilnCarCode IS NULL OR instr( pd.KilnCarCode,: pKilnCarCode ) > 0 )
  11967. AND ( : pKilnCarPosition = '' OR : pKilnCarPosition IS NULL OR pd.KilnCarPosition = : pKilnCarPosition )
  11968. AND ( : remarks = '' OR : remarks IS NULL OR instr( pd.remarks,: remarks ) > 0 )
  11969. AND ( : goodstypecode = '' OR : goodstypecode IS NULL OR instr( gt.goodstypecode,: goodstypecode ) = 1 )
  11970. AND ( : TestMouldFlag IS NULL OR gdd.TestMouldFlag = : TestMouldFlag )
  11971. AND ( : STAFFNAME = '' OR : STAFFNAME IS NULL OR instr( STAFF.STAFFNAME,: STAFFNAME ) > 0 )
  11972. GROUP BY
  11973. GROUPING SETS (
  11974. (
  11975. t.SPECIALREPAIRTIME,
  11976. pd.ProductionDataID,
  11977. pd.ProductionLineCode,
  11978. pd.BarCode,
  11979. pd.GoodsCode,
  11980. pd.GoodsName,
  11981. t.SPECIALREPAIRUSERCODE,
  11982. pd.IsPublicBody,
  11983. pd.ProcedureModel,
  11984. pmt.ProcedureModelTypeName,
  11985. pd.PieceType,
  11986. pd.IsReworked,
  11987. gl.GoodsLevelName,
  11988. o.OrganizationName,
  11989. pd.Remarks,
  11990. pd.KilnID,
  11991. pd.KilnCode,
  11992. pd.KilnName,
  11993. pd.KilnCarID,
  11994. pd.KilnCarCode,
  11995. pd.KilnCarName,
  11996. pd.KilnCarPosition,
  11997. dd.DictionaryValue,
  11998. gt.GoodsTypeName,
  11999. u.usercode,
  12000. pd.GroutingUserCode,
  12001. pd.GroutingMouldCode,
  12002. pd.GroutingDate,
  12003. pd.GroutingNum,
  12004. u.username,
  12005. gdd.glazingroom,
  12006. pd.Goodsleveltypeid,
  12007. TP_MST_Logo.Logoname,
  12008. TP_MST_Logo.Logocode,
  12009. pd.SpecialRepairFlag,
  12010. pd.procedureName,
  12011. pd.ProductionLineName,
  12012. pcp.procedurename,
  12013. gdd.SecurityCode,
  12014. gdd.TestMouldFlag,
  12015. STAFF.STAFFNAME
  12016. ),
  12017. ( u.usercode, pd.GoodsCode ),
  12018. ( u.usercode ),
  12019. ( )
  12020. )
  12021. )
  12022. ";
  12023. paras = new OracleParameter[]{
  12024. new OracleParameter(":ProductionLineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12025. new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12026. new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12027. new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12028. new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12029. new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12030. new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12031. new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12032. new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12033. new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12034. new OracleParameter(":pKilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12035. new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12036. new OracleParameter(":pKilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12037. new OracleParameter(":goodstypecode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12038. new OracleParameter(":TestMouldFlag", OracleDbType.Char, searchEntity.TestMouldFlag, ParameterDirection.Input),
  12039. new OracleParameter(":STAFFNAME", OracleDbType.Varchar2, searchEntity.StaffName, ParameterDirection.Input)
  12040. };
  12041. }
  12042. else
  12043. {
  12044. sqlString = @"SELECT
  12045. CASE WHEN UpdateTime is NULL AND GID=0 THEN '小计'
  12046. WHEN GID =1 THEN '合计'
  12047. WHEN GID =3 THEN '总计'
  12048. ELSE TO_CHAR(ProductionLineName) END AS ProductionLineName
  12049. ,CreateTime
  12050. ,UpdateTime
  12051. ,ProductionDataID
  12052. ,ProductionLineCode
  12053. ,BarCode
  12054. ,GoodsCode
  12055. ,GoodsName
  12056. ,UserCode
  12057. ,IsPublicBody
  12058. ,ProcedureModel
  12059. ,ProcedureModelTypeName
  12060. ,PieceType
  12061. ,IsReworked
  12062. ,GoodsGrade
  12063. ,OrganizationName
  12064. ,Remarks
  12065. ,KilnID
  12066. ,KilnCode
  12067. ,KilnName
  12068. ,KilnCarID
  12069. ,KilnCarCode
  12070. ,KilnCarName
  12071. ,KilnCarPosition
  12072. ,KilnCarPositionName
  12073. ,GoodsTypeName
  12074. ,barusercode
  12075. ,GroutingUserCode
  12076. ,GroutingMouldCode
  12077. ,GroutingDate
  12078. ,GroutingNum
  12079. ,barusername
  12080. ,glazingroom
  12081. ,SecurityCode
  12082. ,TestMouldFlag
  12083. ,Goodsleveltype
  12084. ,LogoCodeName
  12085. ,SpecialRepairFlag
  12086. ,procedureName
  12087. ,inprocedurename
  12088. ,STAFFNAME
  12089. ,NUMS
  12090. FROM(
  12091. SELECT
  12092. GROUPING_ID(TP_PM_ProductionData.UserCode,TP_PM_ProductionData.GoodsCode) GID,
  12093. TP_PM_ProductionData.CreateTime,
  12094. TP_PM_ProductionData.UpdateTime,
  12095. TP_PM_ProductionData.ProductionDataID,
  12096. TP_PM_ProductionData.ProductionLineCode,
  12097. TP_PM_ProductionData.BarCode,
  12098. TP_PM_ProductionData.GoodsCode,
  12099. TP_PM_ProductionData.GoodsName,
  12100. TP_PM_ProductionData.UserCode,
  12101. TP_PM_ProductionData.IsPublicBody,
  12102. decode( TP_PM_ProductionData.ProcedureModel, '1', '计数模型', '检验模型' ) AS ProcedureModel,
  12103. TP_SYS_ProcedureModelType.ProcedureModelTypeName,
  12104. decode( TP_PM_ProductionData.PieceType, '1', '不计件', '同工种策略' ) AS PieceType,
  12105. TP_PM_ProductionData.IsReworked,
  12106. TP_MST_GoodsLevel.GoodsLevelName AS GoodsGrade,
  12107. TP_MST_ORGANIZATION.OrganizationName,
  12108. TP_PM_ProductionData.Remarks,
  12109. TP_PM_ProductionData.KilnID,
  12110. TP_PM_ProductionData.KilnCode,
  12111. TP_PM_ProductionData.KilnName,
  12112. TP_PM_ProductionData.KilnCarID,
  12113. TP_PM_ProductionData.KilnCarCode,
  12114. TP_PM_ProductionData.KilnCarName,
  12115. TP_PM_ProductionData.KilnCarPosition,
  12116. TP_MST_DataDictionary.DictionaryValue KilnCarPositionName,
  12117. TP_MST_GoodsType.GoodsTypeName,
  12118. TP_MST_USER.usercode AS barusercode,
  12119. TP_PM_ProductionData.GroutingUserCode,
  12120. TP_PM_ProductionData.GroutingMouldCode,
  12121. TP_PM_ProductionData.GroutingDate,
  12122. TP_PM_ProductionData.GroutingNum,
  12123. TP_MST_USER.username AS barusername,
  12124. gdd.glazingroom,
  12125. gdd.SecurityCode,
  12126. gdd.TestMouldFlag,
  12127. decode( TP_PM_ProductionData.Goodsleveltypeid, '4', '正品', '5', '副品', '6', '重烧', '7', '次品', '' ) AS Goodsleveltype,
  12128. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  12129. TP_PM_ProductionData.SpecialRepairFlag,
  12130. TP_PM_ProductionData.procedureName,
  12131. TP_PM_ProductionData.ProductionLineName,
  12132. pcp.procedurename inprocedurename
  12133. ,STAFF.STAFFNAME ,COUNT(1) AS NUMS
  12134. FROM
  12135. TP_PM_ProductionData
  12136. LEFT JOIN tp_pm_inproduction inp ON inp.barcode = TP_PM_ProductionData.barcode
  12137. LEFT JOIN tp_pc_procedure pcp ON pcp.procedureid = inp.procedureid
  12138. LEFT JOIN TP_SYS_ProcedureModelType ON TP_PM_ProductionData.ModelType = TP_SYS_ProcedureModelType.PROCEDUREMODELTYPEID
  12139. LEFT JOIN TP_MST_ORGANIZATION ON TP_PM_ProductionData.OrganizationID = TP_MST_ORGANIZATION.OrganizationID
  12140. LEFT JOIN TP_MST_DataDictionary ON TP_PM_ProductionData.KilnCarPosition = TP_MST_DataDictionary.DictionaryID
  12141. LEFT JOIN TP_MST_GoodsLevel ON TP_PM_ProductionData.Goodslevelid = TP_MST_GoodsLevel.Goodslevelid
  12142. LEFT JOIN TP_MST_Goods ON TP_PM_ProductionData.GoodsID = TP_MST_Goods.GoodsID
  12143. LEFT JOIN TP_MST_GoodsType ON TP_MST_Goods.GoodsTypeID = TP_MST_GoodsType.GoodsTypeID
  12144. LEFT JOIN TP_MST_USER ON TP_PM_ProductionData.Createuserid = TP_MST_USER.userid
  12145. LEFT JOIN TP_MST_Logo ON TP_PM_ProductionData.logoid = TP_MST_Logo.logoid
  12146. LEFT JOIN TP_PM_GroutingDailyDetail gdd ON TP_PM_ProductionData.Groutingdailydetailid = gdd.Groutingdailydetailid
  12147. LEFT JOIN (
  12148. SELECT
  12149. D.CLASSESSETTINGID,
  12150. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  12151. FROM
  12152. (
  12153. SELECT
  12154. CD.CLASSESSETTINGID,
  12155. HR.STAFFNAME
  12156. FROM
  12157. TP_PC_CLASSESDETAIL CD
  12158. LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID
  12159. ) D
  12160. GROUP BY
  12161. D.CLASSESSETTINGID
  12162. ) STAFF ON TP_PM_ProductionData.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  12163. WHERE TP_PM_ProductionData.VALUEFLAG = 1
  12164. AND ( :ProcedureIDS= '' or :ProcedureIDS is null or instr(',' || :ProcedureIDS || ',', ',' || TP_PM_ProductionData.procedureid || ',') > 0)
  12165. AND ( :ProductionLineID = '' OR :ProductionLineID IS NULL OR TP_PM_ProductionData.ProductionLineID =:ProductionLineID )
  12166. AND ( :barCode = '' OR :barCode IS NULL OR instr( TP_PM_ProductionData.BarCode,:barCode ) > 0 )
  12167. AND ( :goodsCode = '' OR :goodsCode IS NULL OR instr( TP_PM_ProductionData.goodsCode,:goodsCode ) > 0 )
  12168. AND ( :goodsName = '' OR :goodsName IS NULL OR instr( TP_PM_ProductionData.goodsName,:goodsName ) > 0 )
  12169. AND ( :userCode = '' OR :userCode IS NULL OR instr( TP_PM_ProductionData.userCode,:userCode ) > 0 )
  12170. AND ( :organizationID = 0 OR :organizationID IS NULL OR TP_PM_ProductionData.organizationID =:organizationID )
  12171. AND (TP_PM_ProductionData.CreateTime>=:begindate and TP_PM_ProductionData.CreateTime<=:enddate)
  12172. AND ( :isReworked = '' OR :isReworked IS NULL OR ( instr( :isReworked, TP_PM_ProductionData.isReworked ) > 0 ) )
  12173. AND ( :pKilnCode = '' OR :pKilnCode IS NULL OR TP_PM_ProductionData.KilnCode = :pKilnCode )
  12174. AND ( :pKilnCarCode = '' OR :pKilnCarCode IS NULL OR instr( TP_PM_ProductionData.KilnCarCode,:pKilnCarCode ) > 0 )
  12175. AND ( :pKilnCarPosition = '' OR :pKilnCarPosition IS NULL OR TP_PM_ProductionData.KilnCarPosition = :pKilnCarPosition )
  12176. AND ( :remarks = '' OR :remarks IS NULL OR instr( TP_PM_ProductionData.remarks,:remarks ) > 0 )
  12177. AND ( :goodstypecode = '' OR :goodstypecode IS NULL OR instr( TP_MST_GoodsType.goodstypecode,:goodstypecode ) = 1 )
  12178. AND ( :TestMouldFlag IS NULL OR gdd.TestMouldFlag = :TestMouldFlag)
  12179. AND ( :STAFFNAME = '' OR :STAFFNAME IS NULL OR instr( STAFF.STAFFNAME,:STAFFNAME ) > 0 )
  12180. GROUP BY GROUPING SETS((
  12181. TP_PM_ProductionData.CreateTime,
  12182. TP_PM_ProductionData.UpdateTime,
  12183. TP_PM_ProductionData.ProductionDataID,
  12184. TP_PM_ProductionData.ProductionLineCode,
  12185. TP_PM_ProductionData.BarCode,
  12186. TP_PM_ProductionData.GoodsCode,
  12187. TP_PM_ProductionData.GoodsName,
  12188. TP_PM_ProductionData.UserCode,
  12189. TP_PM_ProductionData.IsPublicBody,
  12190. TP_PM_ProductionData.ProcedureModel,
  12191. TP_SYS_ProcedureModelType.ProcedureModelTypeName,
  12192. TP_PM_ProductionData.PieceType,
  12193. TP_PM_ProductionData.IsReworked,
  12194. TP_MST_GoodsLevel.GoodsLevelName,
  12195. TP_MST_ORGANIZATION.OrganizationName,
  12196. TP_PM_ProductionData.Remarks,
  12197. TP_PM_ProductionData.KilnID,
  12198. TP_PM_ProductionData.KilnCode,
  12199. TP_PM_ProductionData.KilnName,
  12200. TP_PM_ProductionData.KilnCarID,
  12201. TP_PM_ProductionData.KilnCarCode,
  12202. TP_PM_ProductionData.KilnCarName,
  12203. TP_PM_ProductionData.KilnCarPosition,
  12204. TP_MST_DataDictionary.DictionaryValue,
  12205. TP_MST_GoodsType.GoodsTypeName,
  12206. TP_MST_USER.usercode,
  12207. TP_PM_ProductionData.GroutingUserCode,
  12208. TP_PM_ProductionData.GroutingMouldCode,
  12209. TP_PM_ProductionData.GroutingDate,
  12210. TP_PM_ProductionData.GroutingNum,
  12211. TP_MST_USER.username,
  12212. gdd.glazingroom,
  12213. gdd.SecurityCode,TP_MST_Logo.Logocode,TP_MST_Logo.Logoname ,
  12214. gdd.TestMouldFlag,TP_PM_ProductionData.Goodsleveltypeid,
  12215. TP_PM_ProductionData.SpecialRepairFlag,
  12216. TP_PM_ProductionData.procedureName,
  12217. TP_PM_ProductionData.ProductionLineName,
  12218. pcp.procedurename,STAFF.STAFFNAME ),
  12219. (TP_PM_ProductionData.UserCode,TP_PM_ProductionData.GoodsCode),
  12220. (TP_PM_ProductionData.UserCode),()) )";
  12221. paras = new OracleParameter[]{
  12222. new OracleParameter(":ProcedureIDS",OracleDbType.Varchar2, searchEntity.ProcedureIDS, ParameterDirection.Input),
  12223. new OracleParameter(":ProductionLineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12224. new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12225. new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12226. new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12227. new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12228. new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12229. new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12230. new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12231. new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12232. new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12233. new OracleParameter(":pKilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12234. new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12235. new OracleParameter(":pKilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12236. new OracleParameter(":goodstypecode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12237. new OracleParameter(":TestMouldFlag", OracleDbType.Char, searchEntity.TestMouldFlag, ParameterDirection.Input),
  12238. new OracleParameter(":STAFFNAME", OracleDbType.Varchar2, searchEntity.StaffName, ParameterDirection.Input)
  12239. };
  12240. }
  12241. oracleConn.Open();
  12242. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  12243. if (ds != null && ds.Tables.Count > 0)
  12244. {
  12245. return ds.Tables[0];
  12246. }
  12247. else
  12248. {
  12249. return null;
  12250. }
  12251. }
  12252. catch (Exception ex)
  12253. {
  12254. throw ex;
  12255. }
  12256. finally
  12257. {
  12258. if (oracleConn.ConnState == ConnectionState.Open)
  12259. {
  12260. oracleConn.Close();
  12261. }
  12262. }
  12263. /* if (!string.IsNullOrEmpty(searchEntity.ProcedureIDS + ""))
  12264. {
  12265. if ((','+searchEntity.ProcedureIDS+',').Contains(",18,"))
  12266. {
  12267. try
  12268. {
  12269. string sqlString = @"
  12270. SELECT
  12271. -- lsq 干补操作时间,关联报损表的pd.UserCode实际为干补完成工序的操作时间
  12272. -- pd.CreateTime,
  12273. -- pd.UpdateTime,
  12274. t.SPECIALREPAIRTIME AS CreateTime,
  12275. -- end
  12276. pd.ProductionDataID,
  12277. pd.ProductionLineCode,
  12278. '10-0干补' AS procedureName,
  12279. pd.BarCode,
  12280. pd.GoodsCode,
  12281. pd.GoodsName,
  12282. -- lsq 干补生产工号,关联报损表的pd.UserCode实际为干补完成工序的生产工号
  12283. -- pd.UserCode,
  12284. t.SPECIALREPAIRUSERCODE AS UserCode,
  12285. -- end
  12286. pd.IsPublicBody,
  12287. decode( pd.ProcedureModel, '1', '计数模型', '检验模型' ) AS ProcedureModel,
  12288. pmt.ProcedureModelTypeName,
  12289. decode( pd.PieceType, '1', '不计件', '同工种策略' ) AS PieceType,
  12290. pd.IsReworked,
  12291. gl.GoodsLevelName AS GoodsGrade,
  12292. o.OrganizationName,
  12293. pd.Remarks,
  12294. pd.KilnID,
  12295. pd.KilnCode,
  12296. pd.KilnName,
  12297. pd.KilnCarID,
  12298. pd.KilnCarCode,
  12299. pd.KilnCarName,
  12300. pd.KilnCarPosition,
  12301. dd.DictionaryValue KilnCarPositionName,
  12302. gt.GoodsTypeName,
  12303. u.usercode AS barusercode,
  12304. pd.GroutingUserCode,
  12305. pd.GroutingMouldCode,
  12306. pd.GroutingDate,
  12307. pd.GroutingNum,
  12308. u.username AS barusername,
  12309. gdd.glazingroom,
  12310. decode( pd.Goodsleveltypeid, '4', '正品', '5', '副品', '6', '重烧', '7', '次品', '9', '干补', '' ) AS Goodsleveltype,
  12311. REPLACE ( ( TP_MST_Logo.Logoname || '[' || TP_MST_Logo.Logocode || ']' ), '[]', '' ) AS LogoCodeName,
  12312. pd.SpecialRepairFlag,
  12313. pd.procedureName AS finishProcedureName,
  12314. pd.ProductionLineName,
  12315. pcp.procedurename inprocedurename,
  12316. gdd.SecurityCode
  12317. FROM
  12318. tp_pm_scrapproduct t
  12319. INNER JOIN TP_PM_ProductionData pd ON t.productiondataid = pd.productiondataid
  12320. LEFT JOIN TP_MST_USER u ON pd.Createuserid = u.userid
  12321. LEFT JOIN TP_MST_Goods g ON pd.GoodsID = g.GoodsID
  12322. LEFT JOIN TP_MST_GoodsType gt ON g.GoodsTypeID = gt.GoodsTypeID
  12323. LEFT JOIN TP_SYS_ProcedureModelType pmt ON pd.ModelType = pmt.PROCEDUREMODELTYPEID
  12324. LEFT JOIN TP_MST_GoodsLevel gl ON pd.Goodslevelid = gl.Goodslevelid
  12325. LEFT JOIN TP_MST_ORGANIZATION o ON pd.OrganizationID = o.OrganizationID
  12326. LEFT JOIN TP_MST_DataDictionary dd ON pd.KilnCarPosition = dd.DictionaryID
  12327. LEFT JOIN tp_pm_inproduction inp ON inp.barcode = pd.barcode
  12328. LEFT JOIN tp_pc_procedure pcp ON pcp.procedureid = inp.procedureid
  12329. LEFT JOIN TP_MST_Logo ON pd.logoid = TP_MST_Logo.logoid
  12330. LEFT JOIN TP_PM_GroutingDailyDetail gdd ON pd.Groutingdailydetailid = gdd.Groutingdailydetailid
  12331. WHERE
  12332. --t.goodsleveltypeid = 9
  12333. pd.VALUEFLAG = 1
  12334. AND ( :ProductionLineID = '' OR :ProductionLineID IS NULL OR pd.ProductionLineID =:ProductionLineID )
  12335. AND ( :barCode = '' OR :barCode IS NULL OR instr( pd.BarCode,:barCode ) > 0 )
  12336. AND ( :goodsCode = '' OR :goodsCode IS NULL OR instr( pd.goodsCode,:goodsCode ) > 0 )
  12337. AND ( :goodsName = '' OR :goodsName IS NULL OR instr( pd.goodsName,:goodsName ) > 0 )
  12338. AND ( :userCode = '' OR :userCode IS NULL OR instr( pd.userCode,:userCode ) > 0 )
  12339. AND ( :organizationID = 0 OR :organizationID IS NULL OR pd.organizationID =:organizationID )
  12340. AND ( t.specialrepairtime >=:begindate AND t.specialrepairtime <=:enddate )
  12341. AND ( :isReworked = '' OR :isReworked IS NULL OR ( instr( :isReworked, pd.isReworked ) > 0 ) )
  12342. AND ( :pKilnCode = '' OR :pKilnCode IS NULL OR pd.KilnCode = :pKilnCode )
  12343. AND ( :pKilnCarCode = '' OR :pKilnCarCode IS NULL OR instr( pd.KilnCarCode,:pKilnCarCode ) > 0 )
  12344. AND ( :pKilnCarPosition = '' OR :pKilnCarPosition IS NULL OR pd.KilnCarPosition = :pKilnCarPosition )
  12345. AND ( :remarks = '' OR :remarks IS NULL OR instr( pd.remarks,:remarks ) > 0 )
  12346. AND ( :goodstypecode = '' OR :goodstypecode IS NULL OR instr( gt.goodstypecode,:goodstypecode ) = 1 )
  12347. ";
  12348. OracleParameter[] parascount = new OracleParameter[]{
  12349. new OracleParameter(":ProductionLineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12350. new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12351. new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12352. new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12353. new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12354. new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12355. new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12356. new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12357. new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12358. new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12359. new OracleParameter(":pKilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12360. new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12361. new OracleParameter(":pKilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12362. new OracleParameter(":goodstypecode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12363. };
  12364. oracleConn.Open();
  12365. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, parascount);
  12366. if (ds != null && ds.Tables.Count > 0)
  12367. {
  12368. return ds.Tables[0];
  12369. }
  12370. else
  12371. {
  12372. return null;
  12373. }
  12374. }
  12375. catch (Exception ex)
  12376. {
  12377. throw ex;
  12378. }
  12379. finally
  12380. {
  12381. if (oracleConn.ConnState == ConnectionState.Open)
  12382. {
  12383. oracleConn.Close();
  12384. }
  12385. }
  12386. }
  12387. else {
  12388. string procsql = "PRO_RPT_GetProductionData";
  12389. try
  12390. {
  12391. IDataParameter[] paras = new OracleParameter[]
  12392. {
  12393. new OracleParameter("in_procedureList",OracleDbType.Varchar2, searchEntity.ProcedureIDS, ParameterDirection.Input),
  12394. new OracleParameter("in_LineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12395. new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12396. new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12397. new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12398. new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12399. new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12400. new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12401. new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12402. new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12403. new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12404. new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  12405. new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  12406. new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12407. new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12408. new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12409. new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  12410. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  12411. new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12412. };
  12413. oracleConn.Open();
  12414. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  12415. if (returnDs != null && returnDs.Tables.Count > 0)
  12416. {
  12417. return returnDs.Tables[0];
  12418. }
  12419. else
  12420. {
  12421. return null;
  12422. }
  12423. }
  12424. catch (Exception ex)
  12425. {
  12426. throw ex;
  12427. }
  12428. finally
  12429. {
  12430. if (oracleConn.ConnState == ConnectionState.Open)
  12431. {
  12432. oracleConn.Close();
  12433. }
  12434. }
  12435. }
  12436. }
  12437. else {
  12438. string procsql = "PRO_RPT_GetProductionData";
  12439. try
  12440. {
  12441. IDataParameter[] paras = new OracleParameter[]
  12442. {
  12443. new OracleParameter("in_procedureList",OracleDbType.Varchar2, searchEntity.ProcedureIDS, ParameterDirection.Input),
  12444. new OracleParameter("in_LineID", OracleDbType.Int32,searchEntity.ProductionLineID, ParameterDirection.Input),
  12445. new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  12446. new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  12447. new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  12448. new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  12449. new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  12450. new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  12451. new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  12452. new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  12453. new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  12454. new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  12455. new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  12456. new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  12457. new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  12458. new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  12459. new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  12460. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  12461. new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  12462. };
  12463. oracleConn.Open();
  12464. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  12465. if (returnDs != null && returnDs.Tables.Count > 0)
  12466. {
  12467. return returnDs.Tables[0];
  12468. }
  12469. else
  12470. {
  12471. return null;
  12472. }
  12473. }
  12474. catch (Exception ex)
  12475. {
  12476. throw ex;
  12477. }
  12478. finally
  12479. {
  12480. if (oracleConn.ConnState == ConnectionState.Open)
  12481. {
  12482. oracleConn.Close();
  12483. }
  12484. }
  12485. }*/
  12486. }
  12487. /// <summary>
  12488. /// 取得RPT080106(温湿计明细)的汇总信息查询数据
  12489. /// </summary>
  12490. /// <param name="user">登录用户信息</param>
  12491. /// <param name="se">查询条件</param>
  12492. /// <returns>查询结果</returns>
  12493. public static ServiceResultEntity GetRPT080106IData(SUserInfo user, CelsiusRecordEntity se)
  12494. {
  12495. IDBConnection conn = null;
  12496. try
  12497. {
  12498. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  12499. List<OracleParameter> parameters = new List<OracleParameter>();
  12500. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT080106ISQL(user, se, ref parameters));
  12501. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  12502. ServiceResultEntity sre = new ServiceResultEntity();
  12503. if (data == null || data.Rows.Count == 0)
  12504. {
  12505. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  12506. return sre;
  12507. }
  12508. sre.Data = new DataSet();
  12509. sre.Data.Tables.Add(data);
  12510. return sre;
  12511. }
  12512. catch (Exception ex)
  12513. {
  12514. throw ex;
  12515. }
  12516. finally
  12517. {
  12518. if (conn != null &&
  12519. conn.ConnState == ConnectionState.Open)
  12520. {
  12521. conn.Close();
  12522. }
  12523. }
  12524. }
  12525. /// <summary>
  12526. /// 取得RPT080106(温湿计明细)的汇总信息查询数据sql
  12527. /// </summary>
  12528. /// <returns>sql</returns>
  12529. private static string GetRPT080106ISQL(SUserInfo user, CelsiusRecordEntity se, ref List<OracleParameter> parameters)
  12530. {
  12531. string selSql = @"Select cr.*,t.*,to_char(cr.RecordDate,'mm-dd hh24:mi') as RecordDateStr from TP_PM_CelsiusRecord cr
  12532. Left join TP_MST_User u On cr.ThermometerID = u.UserId
  12533. Inner join TP_MST_Thermometer t On cr.ThermometerID = t.ThermometerID
  12534. Where cr.AccountID =:AccountID and cr.ValueFlag = '1' ";
  12535. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  12536. if (!string.IsNullOrEmpty(se.ThermometerIDS))
  12537. {
  12538. selSql = selSql + " AND instr(','||:ThermometerIDS||',',','||cr.ThermometerID||',')>0 ";
  12539. parameters.Add(new OracleParameter(":ThermometerIDS", OracleDbType.NVarchar2, se.ThermometerIDS, ParameterDirection.Input));
  12540. }
  12541. if (!string.IsNullOrEmpty(se.Remarks))
  12542. {
  12543. selSql = selSql + " AND instr(cr.Remarks,:Remarks) >0 ";
  12544. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  12545. }
  12546. if (se.RecordDate.HasValue)
  12547. {
  12548. selSql = selSql + " AND cr.CreateTime>= :CreateTimeStart ";
  12549. parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.RecordDate.Value, ParameterDirection.Input));
  12550. }
  12551. if (se.RecordDateEnd.HasValue)
  12552. {
  12553. selSql = selSql + " AND cr.CreateTime<= :CreateTimeEnd ";
  12554. parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.RecordDateEnd.Value, ParameterDirection.Input));
  12555. }
  12556. selSql +=
  12557. // 温湿计查看权限
  12558. " AND EXISTS (SELECT UP.PurviewID" +
  12559. " FROM TP_MST_UserPurview UP" +
  12560. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.ViewCelsius + "'" +
  12561. " AND (UP.PurviewID = -1 OR UP.PurviewID = CR.ThermometerID)" +
  12562. " AND UP.UserId = :UPUserId)";
  12563. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  12564. selSql = selSql + " order by RecordDate asc";
  12565. return selSql;
  12566. }
  12567. /// <summary>
  12568. /// 取得RPT030110画面(半检登记汇总表)的汇总信息查询数据
  12569. /// </summary>
  12570. /// <param name="user">登录用户信息</param>
  12571. /// <param name="se">查询条件</param>
  12572. /// <returns>查询结果</returns>
  12573. public static ServiceResultEntity GetRPT030110Data(SUserInfo user, SemiCheckEntity se)
  12574. {
  12575. IDBConnection conn = null;
  12576. try
  12577. {
  12578. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  12579. List<OracleParameter> parameters = new List<OracleParameter>();
  12580. string sql = ReportModuleLogic.GetRPT030110SSQL(user, se, ref parameters);
  12581. DataTable data = conn.GetSqlResultToDt(sql, parameters.ToArray());
  12582. ServiceResultEntity sre = new ServiceResultEntity();
  12583. if (data == null || data.Rows.Count == 0)
  12584. {
  12585. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  12586. return sre;
  12587. }
  12588. sre.Data = new DataSet();
  12589. sre.Data.Tables.Add(data);
  12590. return sre;
  12591. }
  12592. catch (Exception ex)
  12593. {
  12594. throw ex;
  12595. }
  12596. finally
  12597. {
  12598. if (conn != null &&
  12599. conn.ConnState == ConnectionState.Open)
  12600. {
  12601. conn.Close();
  12602. }
  12603. }
  12604. }
  12605. /// <summary>
  12606. /// 获取RPT030110画面(半检登记汇总表)的汇总信息查询sql
  12607. /// </summary>
  12608. /// <returns>sql</returns>
  12609. private static string GetRPT030110SSQL(SUserInfo user, SemiCheckEntity se, ref List<OracleParameter> parameters)
  12610. {
  12611. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  12612. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  12613. #region
  12614. // string sqlString = @"
  12615. // SELECT t.reworkprocedureid -- 返工工序id
  12616. // ,decode(gid,
  12617. // 7,
  12618. // '总计',
  12619. // 3,
  12620. // '合计【' || t.reworkprocedurename || '】',
  12621. // 0,
  12622. // t.reworkprocedurename,
  12623. // '--') reworkprocedurename -- 返工工序
  12624. // ,t.goodstypecode2 -- 产品二级类别
  12625. // ,decode(gid,
  12626. // 1,
  12627. // '小计【' || t.goodstypename2 || '】',
  12628. // 0,
  12629. // t.goodstypename2,
  12630. // '--') goodstypename2 -- 产品二级类别
  12631. // ,t.reworkuserid -- 返工工号id
  12632. // ,decode(gid, 0, t.reworkusercode, '--') reworkusercode -- 返工工号
  12633. // ,t.goodsid -- 产品id
  12634. // ,decode(gid, 0, t.goodscode, '--') goodscode -- 产品编码
  12635. // ,decode(gid, 0, t.goodstypename, '--') goodstypename -- 产品类别
  12636. // ,t.reworkcount -- 返工数
  12637. // ,t.badcount -- 不合格数
  12638. // ,t.regoodcount -- 复检合格数
  12639. // ,t.rebadcount -- 复检不合格数
  12640. // ,t.renocount -- 未复检
  12641. // --,t.renocountsum -- 待返工
  12642. // ,(SELECT COUNT(*)
  12643. // FROM tp_pm_semicheck sci
  12644. // WHERE sci.valueflag = '1'
  12645. // AND sci.backoutflag = '0'
  12646. // AND sci.semichecktype = 1
  12647. // AND sci.resemichecktype = 0
  12648. // AND (t.reworkprocedureid is null or sci.reworkprocedureid = t.reworkprocedureid)
  12649. // AND (t.goodsid is null or sci.goodsid = t.goodsid)
  12650. // AND (t.reworkuserid is null or sci.reworkuserid = t.reworkuserid)) AS renocountsum
  12651. // FROM (SELECT grouping_id(sc.reworkprocedureid, gt2.goodstypecode, g.goodsid) gid
  12652. // ,sc.reworkprocedureid
  12653. // ,rp.procedurename reworkprocedurename
  12654. // ,gt2.goodstypecode goodstypecode2
  12655. // ,gt2.goodstypename goodstypename2
  12656. // ,sc.reworkuserid
  12657. // ,sc.reworkusercode
  12658. // ,g.goodsid
  12659. // ,g.goodscode
  12660. // ,gt.goodstypename
  12661. // , SUM(CASE
  12662. // WHEN sc.semichecktype = 1 THEN
  12663. // 1
  12664. // ELSE
  12665. // 0
  12666. // END) reworkcount
  12667. // , SUM(CASE
  12668. // WHEN sc.semichecktype = 2 THEN
  12669. // 1
  12670. // ELSE
  12671. // 0
  12672. // END) badcount
  12673. // , SUM(CASE
  12674. // WHEN sc.semichecktype = 1 AND sc.resemichecktype = 0 THEN
  12675. // 1
  12676. // ELSE
  12677. // 0
  12678. // END) renocount
  12679. // , SUM(CASE
  12680. // WHEN sc.semichecktype = 1 AND sc.resemichecktype = 1 THEN
  12681. // 1
  12682. // ELSE
  12683. // 0
  12684. // END) regoodcount
  12685. // , SUM(CASE
  12686. // WHEN sc.semichecktype = 1 AND sc.resemichecktype = 2 THEN
  12687. // 1
  12688. // ELSE
  12689. // 0
  12690. // END) rebadcount
  12691. // --,(select count(*) from tp_pm_semicheck sci where sci.valueflag = '1' and sci.backoutflag = '0' and sci.semichecktype = 1
  12692. // -- and sci.resemichecktype = 0 and sci.reworkprocedureid = sc.reworkprocedureid and sci.reworkuserid = sc.reworkuserid and sci.goodsid = g.goodsid) as renocountsum
  12693. // --FROM tp_pm_semicheck sc
  12694. // FROM (SELECT semicheckid
  12695. // ,barcode
  12696. // ,productionlineid
  12697. // ,procedureid
  12698. // ,proceduretime
  12699. // ,proceduremodel
  12700. // ,modeltype
  12701. // ,organizationid
  12702. // ,goodsid
  12703. // ,goodscode
  12704. // ,userid
  12705. // ,usercode
  12706. // ,productiondataid
  12707. // ,logoid
  12708. // ,ispublicbody
  12709. // ,specialrepairflag
  12710. // ,goodslevelid
  12711. // ,goodsleveltypeid
  12712. // ,groutingdailyid
  12713. // ,groutingdailydetailid
  12714. // ,groutinglineid
  12715. // ,groutinglinecode
  12716. // ,groutinglinename
  12717. // ,gmouldtypeid
  12718. // ,canmanytimes
  12719. // ,groutinglinedetailid
  12720. // ,groutingdate
  12721. // ,groutingmouldcode
  12722. // ,mouldcode
  12723. // ,groutinguserid
  12724. // ,groutingusercode
  12725. // ,groutingnum
  12726. // ,semichecktype
  12727. // ,semicheckuserid
  12728. // ,semicheckusercode
  12729. // ,semichecktime
  12730. // ,reworkprocedureid
  12731. // ,reworkprocedurecode
  12732. // ,reworkuserid
  12733. // ,reworkusercode
  12734. // ,resemichecktype
  12735. // ,resemicheckuserid
  12736. // ,resemicheckusercode
  12737. // ,resemichecktime
  12738. // ,backoutflag
  12739. // ,backouttime
  12740. // ,backoutuserid
  12741. // ,backoutusercode
  12742. // ,remarks
  12743. // ,createtime
  12744. // ,createuserid
  12745. // ,updateuserid
  12746. // FROM tp_pm_semicheck sc
  12747. // WHERE sc.accountid = :accountid
  12748. // AND sc.valueflag = '1'
  12749. // AND sc.semichecktype = 1
  12750. // AND sc.backoutflag = '0'
  12751. // UNION ALL
  12752. // SELECT DISTINCT sc.semicheckid
  12753. // ,sc.barcode
  12754. // ,sc.productionlineid
  12755. // ,sc.procedureid
  12756. // ,sc.proceduretime
  12757. // ,sc.proceduremodel
  12758. // ,sc.modeltype
  12759. // ,sc.organizationid
  12760. // ,sc.goodsid
  12761. // ,sc.goodscode
  12762. // ,sc.userid
  12763. // ,sc.usercode
  12764. // ,sc.productiondataid
  12765. // ,sc.logoid
  12766. // ,sc.ispublicbody
  12767. // ,sc.specialrepairflag
  12768. // ,sc.goodslevelid
  12769. // ,sc.goodsleveltypeid
  12770. // ,sc.groutingdailyid
  12771. // ,sc.groutingdailydetailid
  12772. // ,sc.groutinglineid
  12773. // ,sc.groutinglinecode
  12774. // ,sc.groutinglinename
  12775. // ,sc.gmouldtypeid
  12776. // ,sc.canmanytimes
  12777. // ,sc.groutinglinedetailid
  12778. // ,sc.groutingdate
  12779. // ,sc.groutingmouldcode
  12780. // ,sc.mouldcode
  12781. // ,sc.groutinguserid
  12782. // ,sc.groutingusercode
  12783. // ,sc.groutingnum
  12784. // ,sc.semichecktype
  12785. // ,sc.semicheckuserid
  12786. // ,sc.semicheckusercode
  12787. // ,sc.semichecktime
  12788. // --,sc.reworkprocedureid
  12789. // --,sc.reworkprocedurecode
  12790. // --,sc.reworkuserid
  12791. // --,sc.reworkusercode
  12792. // ,scd.defectprocedureid
  12793. // ,scdp.procedurename
  12794. // ,scd.defectuserid
  12795. // ,scd.defectusercode
  12796. // ,sc.resemichecktype
  12797. // ,sc.resemicheckuserid
  12798. // ,sc.resemicheckusercode
  12799. // ,sc.resemichecktime
  12800. // ,sc.backoutflag
  12801. // ,sc.backouttime
  12802. // ,sc.backoutuserid
  12803. // ,sc.backoutusercode
  12804. // ,sc.remarks
  12805. // ,sc.createtime
  12806. // ,sc.createuserid
  12807. // ,sc.updateuserid
  12808. // FROM tp_pm_semicheck sc
  12809. // LEFT JOIN TP_PM_SemiCheckDefect scd
  12810. // ON sc.semicheckid = scd.semicheckid
  12811. // LEFT JOIN tp_pc_procedure scdp
  12812. // ON scdp.procedureid = scd.defectprocedureid
  12813. // WHERE sc.accountid = :accountid
  12814. // AND sc.valueflag = '1'
  12815. // AND sc.semichecktype = 2
  12816. // AND sc.backoutflag = '0'
  12817. // ) sc
  12818. // LEFT JOIN tp_pc_procedure rp
  12819. // ON rp.procedureid = sc.reworkprocedureid
  12820. // INNER JOIN tp_mst_goods g
  12821. // ON g.goodsid = sc.goodsid
  12822. // INNER JOIN tp_mst_goodstype gt
  12823. // ON gt.goodstypeid = g.goodstypeid
  12824. // INNER JOIN tp_mst_goodstype gt2
  12825. // ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)
  12826. // AND gt2.accountid = gt.accountid
  12827. // INNER join TP_PM_GroutingDailyDetail GroutingDailyDetail
  12828. // ON GroutingDailyDetail.GroutingDailyDetailID=sc.GroutingDailyDetailID
  12829. // 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))";
  12830. #endregion
  12831. string sqlString = "SELECT t.reworkprocedureid -- 返工工序id\n" +
  12832. " ,decode(gid,\n" +
  12833. " 7,\n" +
  12834. " '总计',\n" +
  12835. " 3,\n" +
  12836. " '合计【' || t.reworkprocedurename || '】',\n" +
  12837. " 0,\n" +
  12838. " t.reworkprocedurename,\n" +
  12839. " '--') reworkprocedurename -- 返工工序\n" +
  12840. " ,t.goodstypecode2 -- 产品二级类别\n" +
  12841. " ,decode(gid,\n" +
  12842. " 1,\n" +
  12843. " '小计【' || t.goodstypename2 || '】',\n" +
  12844. " 0,\n" +
  12845. " t.goodstypename2,\n" +
  12846. " '--') goodstypename2 -- 产品二级类别\n" +
  12847. " ,t.reworkuserid -- 返工工号id\n" +
  12848. " ,decode(gid, 0, t.reworkusercode, '--') reworkusercode -- 返工工号\n" +
  12849. " ,t.goodsid -- 产品id\n" +
  12850. " ,decode(gid, 0, t.goodscode, '--') goodscode -- 产品编码\n" +
  12851. " ,decode(gid, 0, t.goodstypename, '--') goodstypename -- 产品类别\n" +
  12852. " ,t.reworkcount -- 返工数\n" +
  12853. " ,t.badcount -- 不合格数\n" +
  12854. " ,t.regoodcount -- 复检合格数\n" +
  12855. " ,t.rebadcount -- 复检不合格数\n" +
  12856. " ,t.renocount -- 未复检\n" +
  12857. " ,t.renocountsum -- 待返工\n" +
  12858. " FROM (SELECT grouping_id(sct.reworkprocedureid,\n" +
  12859. " sct.goodstypecode2,\n" +
  12860. " sct.goodsid) gid\n" +
  12861. " ,sct.displayno\n" +
  12862. " ,sct.reworkprocedureid\n" +
  12863. " ,sct.reworkprocedurename\n" +
  12864. " ,sct.goodstypecode2\n" +
  12865. " ,sct.goodstypename2\n" +
  12866. " ,sct.reworkuserid\n" +
  12867. " ,sct.reworkusercode\n" +
  12868. " ,sct.goodsid\n" +
  12869. " ,sct.goodscode\n" +
  12870. " ,sct.goodstypename\n" +
  12871. " ,SUM(sct.reworkcount) reworkcount\n" +
  12872. " ,SUM(sct. badcount) badcount\n" +
  12873. " ,SUM(sct. renocount) renocount\n" +
  12874. " ,SUM(sct.regoodcount) regoodcount\n" +
  12875. " ,SUM(sct.rebadcount) rebadcount\n" +
  12876. " ,SUM(sct.renocountsum) renocountsum\n" +
  12877. " FROM (SELECT rp.displayno\n" +
  12878. " ,sc.reworkprocedureid\n" +
  12879. " ,rp.procedurename reworkprocedurename\n" +
  12880. " ,gt2.goodstypecode goodstypecode2\n" +
  12881. " ,gt2.goodstypename goodstypename2\n" +
  12882. " ,sc.reworkuserid\n" +
  12883. " ,sc.reworkusercode\n" +
  12884. " ,g.goodsid\n" +
  12885. " ,g.goodscode\n" +
  12886. " ,gt.goodstypename\n" +
  12887. " , SUM(CASE\n" +
  12888. " WHEN sc.semichecktype = 1 THEN\n" +
  12889. " 1\n" +
  12890. " ELSE\n" +
  12891. " 0\n" +
  12892. " END) reworkcount\n" +
  12893. " , SUM(CASE\n" +
  12894. " WHEN sc.semichecktype = 2 THEN\n" +
  12895. " 1\n" +
  12896. " ELSE\n" +
  12897. " 0\n" +
  12898. " END) badcount\n" +
  12899. " , SUM(CASE\n" +
  12900. " WHEN sc.semichecktype = 1 AND sc.resemichecktype = 0 THEN\n" +
  12901. " 1\n" +
  12902. " ELSE\n" +
  12903. " 0\n" +
  12904. " END) renocount\n" +
  12905. " , SUM(CASE\n" +
  12906. " WHEN sc.semichecktype = 1 AND sc.resemichecktype = 1 THEN\n" +
  12907. " 1\n" +
  12908. " ELSE\n" +
  12909. " 0\n" +
  12910. " END) regoodcount\n" +
  12911. " , SUM(CASE\n" +
  12912. " WHEN sc.semichecktype = 1 AND sc.resemichecktype = 2 THEN\n" +
  12913. " 1\n" +
  12914. " ELSE\n" +
  12915. " 0\n" +
  12916. " END) rebadcount\n" +
  12917. " ,(SELECT COUNT(*)\n" +
  12918. " FROM tp_pm_semicheck sci\n" +
  12919. " WHERE sci.valueflag = '1'\n" +
  12920. " AND sci.backoutflag = '0'\n" +
  12921. " AND sci.semichecktype = 1\n" +
  12922. " AND sci.resemichecktype = 0\n" +
  12923. " AND sci.accountid = :accountid\n" +
  12924. " AND sci.reworkprocedureid = sc.reworkprocedureid\n" +
  12925. " AND sci.reworkuserid = sc.reworkuserid\n" +
  12926. " AND sci.goodsid = g.goodsid) AS renocountsum\n" +
  12927. " FROM (SELECT semicheckid\n" +
  12928. " ,barcode\n" +
  12929. " ,productionlineid\n" +
  12930. " ,procedureid\n" +
  12931. " ,proceduretime\n" +
  12932. " ,proceduremodel\n" +
  12933. " ,modeltype\n" +
  12934. " ,organizationid\n" +
  12935. " ,goodsid\n" +
  12936. " ,goodscode\n" +
  12937. " ,userid\n" +
  12938. " ,usercode\n" +
  12939. " ,productiondataid\n" +
  12940. " ,logoid\n" +
  12941. " ,ispublicbody\n" +
  12942. " ,specialrepairflag\n" +
  12943. " ,goodslevelid\n" +
  12944. " ,goodsleveltypeid\n" +
  12945. " ,groutingdailyid\n" +
  12946. " ,groutingdailydetailid\n" +
  12947. " ,groutinglineid\n" +
  12948. " ,groutinglinecode\n" +
  12949. " ,groutinglinename\n" +
  12950. " ,gmouldtypeid\n" +
  12951. " ,canmanytimes\n" +
  12952. " ,groutinglinedetailid\n" +
  12953. " ,groutingdate\n" +
  12954. " ,groutingmouldcode\n" +
  12955. " ,mouldcode\n" +
  12956. " ,groutinguserid\n" +
  12957. " ,groutingusercode\n" +
  12958. " ,groutingnum\n" +
  12959. " ,semichecktype\n" +
  12960. " ,semicheckuserid\n" +
  12961. " ,semicheckusercode\n" +
  12962. " ,semichecktime\n" +
  12963. " ,reworkprocedureid\n" +
  12964. " ,reworkprocedurecode\n" +
  12965. " ,reworkuserid\n" +
  12966. " ,reworkusercode\n" +
  12967. " ,resemichecktype\n" +
  12968. " ,resemicheckuserid\n" +
  12969. " ,resemicheckusercode\n" +
  12970. " ,resemichecktime\n" +
  12971. " ,backoutflag\n" +
  12972. " ,backouttime\n" +
  12973. " ,backoutuserid\n" +
  12974. " ,backoutusercode\n" +
  12975. " ,remarks\n" +
  12976. " ,createtime\n" +
  12977. " ,createuserid\n" +
  12978. " ,updateuserid\n" +
  12979. " FROM tp_pm_semicheck sc\n" +
  12980. " WHERE sc.accountid = :accountid\n" +
  12981. " AND sc.valueflag = '1'\n" +
  12982. " AND sc.semichecktype = 1\n" +
  12983. " AND sc.backoutflag = '0'\n" +
  12984. " UNION ALL\n" +
  12985. " SELECT DISTINCT sc.semicheckid\n" +
  12986. " ,sc.barcode\n" +
  12987. " ,sc.productionlineid\n" +
  12988. " ,sc.procedureid\n" +
  12989. " ,sc.proceduretime\n" +
  12990. " ,sc.proceduremodel\n" +
  12991. " ,sc.modeltype\n" +
  12992. " ,sc.organizationid\n" +
  12993. " ,sc.goodsid\n" +
  12994. " ,sc.goodscode\n" +
  12995. " ,sc.userid\n" +
  12996. " ,sc.usercode\n" +
  12997. " ,sc.productiondataid\n" +
  12998. " ,sc.logoid\n" +
  12999. " ,sc.ispublicbody\n" +
  13000. " ,sc.specialrepairflag\n" +
  13001. " ,sc.goodslevelid\n" +
  13002. " ,sc.goodsleveltypeid\n" +
  13003. " ,sc.groutingdailyid\n" +
  13004. " ,sc.groutingdailydetailid\n" +
  13005. " ,sc.groutinglineid\n" +
  13006. " ,sc.groutinglinecode\n" +
  13007. " ,sc.groutinglinename\n" +
  13008. " ,sc.gmouldtypeid\n" +
  13009. " ,sc.canmanytimes\n" +
  13010. " ,sc.groutinglinedetailid\n" +
  13011. " ,sc.groutingdate\n" +
  13012. " ,sc.groutingmouldcode\n" +
  13013. " ,sc.mouldcode\n" +
  13014. " ,sc.groutinguserid\n" +
  13015. " ,sc.groutingusercode\n" +
  13016. " ,sc.groutingnum\n" +
  13017. " ,sc.semichecktype\n" +
  13018. " ,sc.semicheckuserid\n" +
  13019. " ,sc.semicheckusercode\n" +
  13020. " ,sc.semichecktime\n" +
  13021. " --,sc.reworkprocedureid\n" +
  13022. " --,sc.reworkprocedurecode\n" +
  13023. " --,sc.reworkuserid\n" +
  13024. " --,sc.reworkusercode\n" +
  13025. " ,scd.defectprocedureid\n" +
  13026. " ,scdp.procedurename\n" +
  13027. " ,scd.defectuserid\n" +
  13028. " ,scd.defectusercode\n" +
  13029. " ,sc.resemichecktype\n" +
  13030. " ,sc.resemicheckuserid\n" +
  13031. " ,sc.resemicheckusercode\n" +
  13032. " ,sc.resemichecktime\n" +
  13033. " ,sc.backoutflag\n" +
  13034. " ,sc.backouttime\n" +
  13035. " ,sc.backoutuserid\n" +
  13036. " ,sc.backoutusercode\n" +
  13037. " ,sc.remarks\n" +
  13038. " ,sc.createtime\n" +
  13039. " ,sc.createuserid\n" +
  13040. " ,sc.updateuserid\n" +
  13041. " FROM tp_pm_semicheck sc\n" +
  13042. " LEFT JOIN TP_PM_SemiCheckDefect scd\n" +
  13043. " ON sc.semicheckid = scd.semicheckid\n" +
  13044. " AND scd.valueflag='1'\n" +
  13045. " LEFT JOIN tp_pc_procedure scdp\n" +
  13046. " ON scdp.procedureid = scd.defectprocedureid\n" +
  13047. " WHERE sc.accountid = :accountid\n" +
  13048. " AND sc.valueflag = '1'\n" +
  13049. " AND sc.semichecktype = 2\n" +
  13050. " AND sc.backoutflag = '0') sc\n" +
  13051. " LEFT JOIN tp_pc_procedure rp\n" +
  13052. " ON rp.procedureid = sc.reworkprocedureid\n" +
  13053. " INNER JOIN tp_mst_goods g\n" +
  13054. " ON g.goodsid = sc.goodsid\n" +
  13055. " INNER JOIN tp_mst_goodstype gt\n" +
  13056. " ON gt.goodstypeid = g.goodstypeid\n" +
  13057. " INNER JOIN tp_mst_goodstype gt2\n" +
  13058. " ON gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  13059. " AND gt2.accountid = gt.accountid\n" +
  13060. " INNER JOIN TP_PM_GroutingDailyDetail GroutingDailyDetail\n" +
  13061. " ON GroutingDailyDetail.GroutingDailyDetailID =\n" +
  13062. " sc.GroutingDailyDetailID\n" //+
  13063. //" WHERE EXISTS (SELECT 1\n" +
  13064. //" FROM TP_MST_UserPurview up\n" +
  13065. //" WHERE up.PurviewType = 9\n" +
  13066. //" AND up.UserID = :UserID\n" +
  13067. //" AND (up.PurviewID = -1 OR\n" +
  13068. //" up.PurviewID = sc.procedureid))\n"
  13069. ;
  13070. // 完成工序集
  13071. if (!string.IsNullOrEmpty(se.CProcedureIDS))
  13072. {
  13073. sqlString += " AND instr(','||:procedureids||',', ',' || sc.procedureid || ',') > 0";
  13074. parameters.Add(new OracleParameter(":procedureids", OracleDbType.Varchar2, se.CProcedureIDS, ParameterDirection.Input));
  13075. }
  13076. // 完成时间起始
  13077. if (se.CDateTimeStart.HasValue)
  13078. {
  13079. sqlString = sqlString + " AND sc.ProcedureTime >= :CDateTimeStart ";
  13080. parameters.Add(new OracleParameter(":CDateTimeStart", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13081. }
  13082. // 完成时间结束
  13083. if (se.CDateTimeEnd.HasValue)
  13084. {
  13085. sqlString = sqlString + " AND sc.ProcedureTime <= :CDateTimeEnd ";
  13086. parameters.Add(new OracleParameter(":CDateTimeEnd", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13087. }
  13088. // 完成工号
  13089. if (!string.IsNullOrEmpty(se.CUserCode))
  13090. {
  13091. sqlString = sqlString + " AND instr(sc.UserCode,:UserCode)>0";
  13092. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CUserCode, ParameterDirection.Input));
  13093. }
  13094. // 产品类别
  13095. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  13096. {
  13097. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 ";
  13098. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  13099. }
  13100. // 产品编码
  13101. if (!string.IsNullOrEmpty(se.GoodsCode))
  13102. {
  13103. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0";
  13104. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  13105. }
  13106. // 成型工号
  13107. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  13108. {
  13109. sqlString = sqlString + " AND instr(sc.GroutingUserCode,:GroutingUserCode)>0";
  13110. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  13111. }
  13112. // 注浆时间起始
  13113. if (se.GroutingDateTimeStart.HasValue)
  13114. {
  13115. sqlString = sqlString + " AND sc.GroutingDate >= :GroutingDateTimeStart ";
  13116. parameters.Add(new OracleParameter(":GroutingDateTimeStart", OracleDbType.Date, se.GroutingDateTimeStart.Value, ParameterDirection.Input));
  13117. }
  13118. // 注浆时间结束
  13119. if (se.GroutingDateTimeEnd.HasValue)
  13120. {
  13121. sqlString = sqlString + " AND sc.GroutingDate <= :GroutingDateTimeEnd ";
  13122. parameters.Add(new OracleParameter(":GroutingDateTimeEnd", OracleDbType.Date, se.GroutingDateTimeEnd.Value, ParameterDirection.Input));
  13123. }
  13124. // 交坯时间起始
  13125. if (se.DeliveryDateTimeStart.HasValue)
  13126. {
  13127. sqlString = sqlString + " AND GroutingDailyDetail.DeliverTime >= :DeliveryDateTimeStart ";
  13128. parameters.Add(new OracleParameter(":DeliveryDateTimeStart", OracleDbType.Date, se.DeliveryDateTimeStart.Value, ParameterDirection.Input));
  13129. }
  13130. // 交坯时间结束
  13131. if (se.DeliveryDateTimeEnd.HasValue)
  13132. {
  13133. sqlString = sqlString + " AND GroutingDailyDetail.DeliverTime <= :DeliveryDateTimeEnd ";
  13134. parameters.Add(new OracleParameter(":DeliveryDateTimeEnd", OracleDbType.Date, se.DeliveryDateTimeEnd.Value, ParameterDirection.Input));
  13135. }
  13136. // 半检状态
  13137. if (!string.IsNullOrEmpty(se.SemiCheckType))
  13138. {
  13139. sqlString = sqlString + " AND instr(','||:SemiCheckType||',',','||sc.SemiCheckType||',')>0 ";
  13140. parameters.Add(new OracleParameter(":SemiCheckType", OracleDbType.NVarchar2, se.SemiCheckType, ParameterDirection.Input));
  13141. }
  13142. // 半检时间起始
  13143. if (se.SemiCheckDateTimeStart.HasValue)
  13144. {
  13145. sqlString = sqlString + " AND sc.SemiCheckTime >= :SemiCheckDateTimeStart ";
  13146. parameters.Add(new OracleParameter(":SemiCheckDateTimeStart", OracleDbType.Date, se.SemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13147. }
  13148. // 半检时间结束
  13149. if (se.SemiCheckDateTimeEnd.HasValue)
  13150. {
  13151. sqlString = sqlString + " AND sc.SemiCheckTime <= :SemiCheckDateTimeEnd ";
  13152. parameters.Add(new OracleParameter(":SemiCheckDateTimeEnd", OracleDbType.Date, se.SemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13153. }
  13154. // 半检工号
  13155. if (!string.IsNullOrEmpty(se.SemiCheckUserCode))
  13156. {
  13157. sqlString = sqlString + " AND instr(sc.SemiCheckUserCode,:SemiCheckUserCode)>0";
  13158. parameters.Add(new OracleParameter(":SemiCheckUserCode", OracleDbType.NVarchar2, se.SemiCheckUserCode, ParameterDirection.Input));
  13159. }
  13160. // 返工工序
  13161. if (!string.IsNullOrEmpty(se.RProcedureIDS))
  13162. {
  13163. sqlString = sqlString + " AND instr(','||:RProcedureIDS||',',','||sc.ReworkProcedureID||',')>0 ";
  13164. parameters.Add(new OracleParameter(":RProcedureIDS", OracleDbType.NVarchar2, se.RProcedureIDS, ParameterDirection.Input));
  13165. }
  13166. // 返工工号
  13167. if (!string.IsNullOrEmpty(se.ReworkUserCode))
  13168. {
  13169. sqlString = sqlString + " AND instr(sc.ReworkUserCode,:ReworkUserCode)>0";
  13170. parameters.Add(new OracleParameter(":ReworkUserCode", OracleDbType.NVarchar2, se.ReworkUserCode, ParameterDirection.Input));
  13171. }
  13172. // 复检状态
  13173. if (!string.IsNullOrEmpty(se.ReSemiCheckType))
  13174. {
  13175. sqlString = sqlString + " AND instr(','||:ReSemiCheckType||',',','||sc.ReSemiCheckType||',')>0 ";
  13176. parameters.Add(new OracleParameter(":ReSemiCheckType", OracleDbType.NVarchar2, se.ReSemiCheckType, ParameterDirection.Input));
  13177. }
  13178. // 复检时间起始
  13179. if (se.ReSemiCheckDateTimeStart.HasValue)
  13180. {
  13181. sqlString = sqlString + " AND sc.ReSemiCheckTime >= :ReSemiCheckDateTimeStart ";
  13182. parameters.Add(new OracleParameter(":ReSemiCheckDateTimeStart", OracleDbType.Date, se.ReSemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13183. }
  13184. // 复检时间结束
  13185. if (se.ReSemiCheckDateTimeEnd.HasValue)
  13186. {
  13187. sqlString = sqlString + " AND sc.ReSemiCheckTime <= :ReSemiCheckDateTimeEnd ";
  13188. parameters.Add(new OracleParameter(":ReSemiCheckDateTimeEnd", OracleDbType.Date, se.ReSemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13189. }
  13190. // 复检工号
  13191. if (!string.IsNullOrEmpty(se.ReSemiCheckUserCode))
  13192. {
  13193. sqlString = sqlString + " AND instr(sc.ReSemiCheckUserCode,:ReSemiCheckUserCode)>0";
  13194. parameters.Add(new OracleParameter(":ReSemiCheckUserCode", OracleDbType.NVarchar2, se.ReSemiCheckUserCode, ParameterDirection.Input));
  13195. }
  13196. // 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),())
  13197. // ORDER BY rp.displayno
  13198. // ,gt2.goodstypename
  13199. // ,sc.reworkusercode
  13200. // ,g.goodscode
  13201. // ,gt.goodstypename, gid) t
  13202. // ";
  13203. sqlString = sqlString +
  13204. " GROUP BY rp.displayno\n" +
  13205. " ,sc.reworkprocedureid\n" +
  13206. " ,rp.procedurename\n" +
  13207. " ,gt2.goodstypecode\n" +
  13208. " ,gt2.goodstypename\n" +
  13209. " ,sc.reworkuserid\n" +
  13210. " ,sc.reworkusercode\n" +
  13211. " ,g.goodsid\n" +
  13212. " ,g.goodscode\n" +
  13213. " ,gt.goodstypename) sct\n" +
  13214. " 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" +
  13215. " ORDER BY sct.displayno\n" +
  13216. " ,sct.goodstypename\n" +
  13217. " ,sct.reworkusercode\n" +
  13218. " ,sct.goodscode\n" +
  13219. " ,sct.goodstypename\n" +
  13220. " ,gid) t";
  13221. return sqlString;
  13222. }
  13223. /// <summary>
  13224. /// 取得RPT080107(半检登记明细)的信息查询数据
  13225. /// </summary>
  13226. /// <param name="user">登录用户信息</param>
  13227. /// <param name="se">查询条件</param>
  13228. /// <returns>查询结果</returns>
  13229. public static ServiceResultEntity GetRPT080107IData(SUserInfo user, SemiCheckEntity se)
  13230. {
  13231. IDBConnection conn = null;
  13232. try
  13233. {
  13234. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13235. List<OracleParameter> parameters = new List<OracleParameter>();
  13236. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT080107ISQL(user, se, ref parameters));
  13237. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  13238. ServiceResultEntity sre = new ServiceResultEntity();
  13239. if (data == null || data.Rows.Count == 0)
  13240. {
  13241. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  13242. return sre;
  13243. }
  13244. sre.Data = new DataSet();
  13245. sre.Data.Tables.Add(data);
  13246. return sre;
  13247. }
  13248. catch (Exception ex)
  13249. {
  13250. throw ex;
  13251. }
  13252. finally
  13253. {
  13254. if (conn != null &&
  13255. conn.ConnState == ConnectionState.Open)
  13256. {
  13257. conn.Close();
  13258. }
  13259. }
  13260. }
  13261. //xuwei add 2019-10-14
  13262. /// <summary>
  13263. /// 取得RPT080108(半检返修登记明细)的信息查询数据
  13264. /// </summary>
  13265. /// <param name="user">登录用户信息</param>
  13266. /// <param name="se">查询条件</param>
  13267. /// <returns>查询结果</returns>
  13268. public static ServiceResultEntity GetRPT080108IData(SUserInfo user, SemiCheckEntity se)
  13269. {
  13270. IDBConnection conn = null;
  13271. try
  13272. {
  13273. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13274. List<OracleParameter> parameters = new List<OracleParameter>();
  13275. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT080108ISQL(user, se, ref parameters));
  13276. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  13277. ServiceResultEntity sre = new ServiceResultEntity();
  13278. if (data == null || data.Rows.Count == 0)
  13279. {
  13280. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  13281. return sre;
  13282. }
  13283. sre.Data = new DataSet();
  13284. sre.Data.Tables.Add(data);
  13285. return sre;
  13286. }
  13287. catch (Exception ex)
  13288. {
  13289. throw ex;
  13290. }
  13291. finally
  13292. {
  13293. if (conn != null &&
  13294. conn.ConnState == ConnectionState.Open)
  13295. {
  13296. conn.Close();
  13297. }
  13298. }
  13299. }
  13300. /// <summary>
  13301. /// 获取RPT080108画面(半检返修登记明细)的汇总信息查询sql
  13302. /// </summary>
  13303. /// <returns>sql</returns>
  13304. private static string GetRPT080108ISQL(SUserInfo user, SemiCheckEntity se, ref List<OracleParameter> parameters)
  13305. {
  13306. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  13307. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  13308. string sqlString = @"
  13309. SELECT
  13310. sr.SEMIREWORKID ,--AS SEMIREWORKID,
  13311. p.PROCEDURECODE ,--AS 完成工序编码,
  13312. p.PROCEDURENAME ,--AS 完成工序,
  13313. sr.PROCEDURETIME ,--AS 完成时间,
  13314. sr.USERCODE ,--完成工号,
  13315. gt2.GOODSTYPENAME AS GOODSTYPENAME2,--AS 产品二级类别,
  13316. gt.GOODSTYPENAME ,--AS 产品类别,
  13317. g.GOODSCODE ,--AS 产品编码,
  13318. g.GOODSNAME,--AS 产品名称,
  13319. sr.BARCODE ,--AS 产品条码,
  13320. sr.SEMIREWORKUSERCODE ,--AS 半检工号,
  13321. sr.SEMIREWORKTIME ,--AS 半检时间,
  13322. pr.PROCEDURECODE AS REWORKPCODE,--AS 返修工序编码,
  13323. pr.PROCEDURENAME AS REWORKPNAME,--AS 返修工序,
  13324. sr.BACKOUTFLAG ,--AS 撤销标识,
  13325. sr.BACKOUTUSERCODE ,--AS 撤销工号,
  13326. sr.BACKOUTTIME ,--AS 撤销时间,
  13327. sr.GROUTINGUSERCODE ,--AS 成型工号,
  13328. sr.GROUTINGLINECODE ,--AS 成型线编码,
  13329. sr.GROUTINGMOULDCODE ,--AS 模具编号,
  13330. sr.GROUTINGDATE ,--AS 注浆时间,
  13331. gd.DELIVERTIME ,--AS 交坯时间,
  13332. l.LOGONAME ,--AS 商标,
  13333. srd.DEFECTCODE ,--AS 缺陷编码,
  13334. srd.DEFECTNAME ,--AS 缺陷名称,
  13335. srd.DEFECTPOSITIONCODE ,--AS 位置编码,
  13336. srd.DEFECTPOSITIONNAME ,--AS 缺陷位置,
  13337. pd.PROCEDURECODE AS DEFECTPCODE,--AS 责任工序编码,
  13338. pd.PROCEDURENAME AS DEFECTPNAME,--AS 责任工序,
  13339. srd.DEFECTUSERCODE ,--AS 责任工号,
  13340. inpp.PROCEDURENAME CurrPROCEDURENAME --AS 当前工序
  13341. FROM
  13342. TP_PM_SEMIREWORK sr
  13343. LEFT JOIN TP_PM_SEMIREWORKDEFECT srd ON sr.SEMIREWORKID = srd.SEMIREWORKID
  13344. LEFT JOIN TP_PC_PROCEDURE p ON p.PROCEDUREID = sr.PROCEDUREID
  13345. LEFT JOIN TP_PC_PROCEDURE pr ON pr.PROCEDUREID = sr.REWORKPROCEDUREID
  13346. LEFT JOIN TP_PC_PROCEDURE pd ON pd.PROCEDUREID = srd.DEFECTPROCEDUREID
  13347. LEFT JOIN TP_MST_GOODS g ON sr.GOODSID = g.GOODSID
  13348. LEFT JOIN TP_MST_GOODSTYPE gt ON g.GOODSTYPEID = gt.GOODSTYPEID
  13349. LEFT JOIN TP_MST_GOODSTYPE gt2 ON gt2.ACCOUNTID = gt.ACCOUNTID
  13350. AND gt2.GOODSTYPECODE = substr( gt.GOODSTYPECODE, 1, 6 )
  13351. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.GROUTINGDAILYDETAILID = sr.GROUTINGDAILYDETAILID
  13352. LEFT JOIN TP_MST_LOGO l ON gd.LOGOID = l.LOGOID
  13353. LEFT JOIN TP_PM_INPRODUCTION inp ON inp.BARCODE = sr.BARCODE
  13354. LEFT JOIN TP_PC_PROCEDURE inpp ON inp.PROCEDUREID = inpp.PROCEDUREID
  13355. WHERE
  13356. sr.VALUEFLAG = '1'
  13357. AND srd.VALUEFLAG = '1'
  13358. AND sr.AccountID=:AccountID
  13359. ";
  13360. //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))
  13361. // 完成工序
  13362. if (!string.IsNullOrEmpty(se.CProcedureIDS))
  13363. {
  13364. sqlString = sqlString + " AND instr(','||:CProcedureIDS||',',','||p.PROCEDURECODE||',')>0 ";
  13365. parameters.Add(new OracleParameter(":CProcedureIDS", OracleDbType.NVarchar2, se.CProcedureIDS, ParameterDirection.Input));
  13366. }
  13367. // 完成时间起始
  13368. if (se.CDateTimeStart.HasValue)
  13369. {
  13370. sqlString = sqlString + " AND sr.ProcedureTime >= :CDateTimeStart ";
  13371. parameters.Add(new OracleParameter(":CDateTimeStart", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13372. }
  13373. // 完成时间结束
  13374. if (se.CDateTimeEnd.HasValue)
  13375. {
  13376. sqlString = sqlString + " AND sr.ProcedureTime <= :CDateTimeEnd ";
  13377. parameters.Add(new OracleParameter(":CDateTimeEnd", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13378. }
  13379. // 完成工号
  13380. if (!string.IsNullOrEmpty(se.CUserCode))
  13381. {
  13382. sqlString = sqlString + " AND instr(','||:UserCode||',' , ','||sr.UserCode||',')>0";
  13383. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CUserCode, ParameterDirection.Input));
  13384. }
  13385. // 产品类别
  13386. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  13387. {
  13388. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 ";
  13389. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  13390. }
  13391. // 产品编码
  13392. if (!string.IsNullOrEmpty(se.GoodsCode))
  13393. {
  13394. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0";
  13395. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  13396. }
  13397. // 成型工号
  13398. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  13399. {
  13400. sqlString = sqlString + " AND instr(','||:GroutingUserCode||',' , ','||sr.GroutingUserCode||',')>0";
  13401. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  13402. }
  13403. // 注浆时间起始
  13404. if (se.GroutingDateTimeStart.HasValue)
  13405. {
  13406. sqlString = sqlString + " AND sr.GroutingDate >= :GroutingDateTimeStart ";
  13407. parameters.Add(new OracleParameter(":GroutingDateTimeStart", OracleDbType.Date, se.GroutingDateTimeStart.Value, ParameterDirection.Input));
  13408. }
  13409. // 注浆时间结束
  13410. if (se.GroutingDateTimeEnd.HasValue)
  13411. {
  13412. sqlString = sqlString + " AND sr.GroutingDate <= :GroutingDateTimeEnd ";
  13413. parameters.Add(new OracleParameter(":GroutingDateTimeEnd", OracleDbType.Date, se.GroutingDateTimeEnd.Value, ParameterDirection.Input));
  13414. }
  13415. // 交坯时间起始
  13416. if (se.DeliveryDateTimeStart.HasValue)
  13417. {
  13418. sqlString = sqlString + " AND gd.DeliverTime >= :DeliveryDateTimeStart ";
  13419. parameters.Add(new OracleParameter(":DeliveryDateTimeStart", OracleDbType.Date, se.DeliveryDateTimeStart.Value, ParameterDirection.Input));
  13420. }
  13421. // 交坯时间结束
  13422. if (se.DeliveryDateTimeEnd.HasValue)
  13423. {
  13424. sqlString = sqlString + " AND gd.DeliverTime <= :DeliveryDateTimeEnd ";
  13425. parameters.Add(new OracleParameter(":DeliveryDateTimeEnd", OracleDbType.Date, se.DeliveryDateTimeEnd.Value, ParameterDirection.Input));
  13426. }
  13427. // 半检时间起始
  13428. if (se.SemiCheckDateTimeStart.HasValue)
  13429. {
  13430. sqlString = sqlString + " AND sr.SEMIREWORKTIME >= :SemiCheckDateTimeStart ";
  13431. parameters.Add(new OracleParameter(":SemiCheckDateTimeStart", OracleDbType.Date, se.SemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13432. }
  13433. // 半检时间结束
  13434. if (se.SemiCheckDateTimeEnd.HasValue)
  13435. {
  13436. sqlString = sqlString + " AND sr.SEMIREWORKTIME <= :SemiCheckDateTimeEnd ";
  13437. parameters.Add(new OracleParameter(":SemiCheckDateTimeEnd", OracleDbType.Date, se.SemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13438. }
  13439. // 半检工号
  13440. if (!string.IsNullOrEmpty(se.SemiCheckUserCode))
  13441. {
  13442. sqlString = sqlString + " AND instr(','||:SemiCheckUserCode||',' , ','||sr.SEMIREWORKUSERCODE||',')>0";
  13443. parameters.Add(new OracleParameter(":SemiCheckUserCode", OracleDbType.NVarchar2, se.SemiCheckUserCode, ParameterDirection.Input));
  13444. }
  13445. // 返修工序
  13446. if (!string.IsNullOrEmpty(se.RProcedureIDS))
  13447. {
  13448. sqlString = sqlString + " AND instr(','||:RProcedureIDS||',',','||pr.PROCEDUREID||',')>0 ";
  13449. parameters.Add(new OracleParameter(":RProcedureIDS", OracleDbType.NVarchar2, se.RProcedureIDS, ParameterDirection.Input));
  13450. }
  13451. // 返修工号
  13452. if (!string.IsNullOrEmpty(se.ReworkUserCode))
  13453. {
  13454. sqlString = sqlString + " AND instr(sr.ReworkUserCode,:ReworkUserCode)>0";
  13455. parameters.Add(new OracleParameter(":ReworkUserCode", OracleDbType.NVarchar2, se.ReworkUserCode, ParameterDirection.Input));
  13456. }
  13457. // 撤销标识
  13458. if (!string.IsNullOrEmpty(se.BackOutFlag))
  13459. {
  13460. sqlString = sqlString + " AND instr(','||:BackOutFlag||',',','||sr.BackOutFlag||',')>0 ";
  13461. parameters.Add(new OracleParameter(":BackOutFlag", OracleDbType.NVarchar2, se.BackOutFlag, ParameterDirection.Input));
  13462. }
  13463. // 撤销时间起始
  13464. if (se.BackOutTimeStart.HasValue)
  13465. {
  13466. sqlString = sqlString + " AND sr.BackOutTime >= :BackOutTimeStart ";
  13467. parameters.Add(new OracleParameter(":BackOutTimeStart", OracleDbType.Date, se.BackOutTimeStart.Value, ParameterDirection.Input));
  13468. }
  13469. // 撤销时间结束
  13470. if (se.BackOutTimeEnd.HasValue)
  13471. {
  13472. sqlString = sqlString + " AND sr.BackOutTime <= :BackOutTimeEnd ";
  13473. parameters.Add(new OracleParameter(":BackOutTimeEnd", OracleDbType.Date, se.BackOutTimeEnd.Value, ParameterDirection.Input));
  13474. }
  13475. // 撤销工号
  13476. if (!string.IsNullOrEmpty(se.BackOutUserCode))
  13477. {
  13478. sqlString = sqlString + " AND instr(','||:BackOutUserCode||',' , ','||sr.BackOutUserCode||',')>0";
  13479. parameters.Add(new OracleParameter(":BackOutUserCode", OracleDbType.NVarchar2, se.BackOutUserCode, ParameterDirection.Input));
  13480. }
  13481. // 产品条码
  13482. if (!string.IsNullOrEmpty(se.BarCode))
  13483. {
  13484. sqlString = sqlString + " AND instr(sr.BarCode,:BarCode)>0";
  13485. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  13486. }
  13487. // 缺陷编码
  13488. if (!string.IsNullOrEmpty(se.DefectCode))
  13489. {
  13490. sqlString = sqlString + " AND instr(srd.DefectCode,:DefectCode)>0";
  13491. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  13492. }
  13493. // 缺陷位置集
  13494. if (!string.IsNullOrEmpty(se.DefectPositionIDS))
  13495. {
  13496. sqlString = sqlString + " AND instr(','||:DefectPositionIDS||',',','||srd.DefectPositionID||',')>0 ";
  13497. parameters.Add(new OracleParameter(":DefectPositionIDS", OracleDbType.NVarchar2, se.DefectPositionIDS, ParameterDirection.Input));
  13498. }
  13499. // 责任工序集
  13500. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  13501. {
  13502. sqlString = sqlString + " AND instr(','||:DefectPositionIDS||',',','||pd.PROCEDUREID||',')>0 ";
  13503. parameters.Add(new OracleParameter(":DefectPositionIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  13504. }
  13505. // 责任工号
  13506. if (!string.IsNullOrEmpty(se.DefectUser))
  13507. {
  13508. sqlString = sqlString + " AND instr(srd.DEFECTUSERCODE,:DefectUser)>0";
  13509. parameters.Add(new OracleParameter(":DefectUser", OracleDbType.NVarchar2, se.DefectUser, ParameterDirection.Input));
  13510. }
  13511. // 只显示最后一条半检记录
  13512. if (se.SemiCheckType == "1")
  13513. {
  13514. // 撤销的记录全显示,未撤销的记录只显示最后一条
  13515. sqlString += " and (sr.backoutflag = '1' or not exists (select sw.semireworkid\n" +
  13516. " from TP_PM_SEMIREWORK sw\n" +
  13517. " where sw.barcode = sr.barcode\n" +
  13518. " and sw.valueflag = '1'\n" +
  13519. " and (sw.backoutflag = '0')\n" +
  13520. " and sw.semireworkid > sr.semireworkid) )";
  13521. }
  13522. return sqlString;
  13523. }
  13524. //xuwei end
  13525. //xuwei add 2019-10-21
  13526. /// <summary>
  13527. /// 统计当前工号,当日,按产品编码分组统计半检返修数据数量
  13528. /// </summary>
  13529. /// <param name="user">用户</param>
  13530. /// <param name="dataStr">统计日期</param>
  13531. /// <returns></returns>
  13532. public static ServiceResultEntity GetSemiReworkDayCount(SUserInfo user, string dateStr)
  13533. {
  13534. IDBConnection conn = null;
  13535. try
  13536. {
  13537. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13538. string sqlStr = $@"
  13539. SELECT
  13540. nvl(sr.SEMIREWORKUSERCODE,'--') SEMIREWORKUSERCODE,--AS 半检工号,
  13541. nvl( g.GOODSCODE, '合计' ) GOODSCODE,--AS 产品编码,
  13542. nvl(g.GOODSNAME,'--') GOODSNAME,--AS 产口名称,
  13543. to_char(count( sr.SEMIREWORKID )) GOODSCOUNT --AS 返修数量
  13544. FROM
  13545. TP_PM_SEMIREWORK sr
  13546. LEFT JOIN TP_PM_SEMIREWORKDEFECT srd ON sr.SEMIREWORKID = srd.SEMIREWORKID
  13547. LEFT JOIN TP_MST_GOODS g ON sr.GOODSID = g.GOODSID
  13548. WHERE
  13549. sr.VALUEFLAG = '1'
  13550. AND sr.ACCOUNTID = '{user.AccountID}'
  13551. AND sr.SEMIREWORKUSERCODE = '{user.UserCode}'
  13552. AND to_date(to_char(sr.CREATETIME,'yyyy-mm-dd'),'yyyy-mm-dd') = to_date('{dateStr}','yyyy-mm-dd')
  13553. GROUP BY
  13554. grouping sets ( ( sr.SEMIREWORKUSERCODE, g.GOODSCODE, g.GOODSNAME ), ( ) )
  13555. ";
  13556. DataTable data = conn.GetSqlResultToDt(sqlStr);
  13557. ServiceResultEntity sre = new ServiceResultEntity();
  13558. //if (data == null || data.Rows.Count == 0)
  13559. //{
  13560. // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  13561. // return sre;
  13562. //}
  13563. sre.Data = new DataSet();
  13564. sre.Data.Tables.Add(data);
  13565. return sre;
  13566. }
  13567. catch (Exception ex)
  13568. {
  13569. throw ex;
  13570. }
  13571. finally
  13572. {
  13573. if (conn != null &&
  13574. conn.ConnState == ConnectionState.Open)
  13575. {
  13576. conn.Close();
  13577. }
  13578. }
  13579. }
  13580. //xuwei end
  13581. /// <summary>
  13582. /// 获取RPT030110画面(半检登记汇总表)的汇总信息查询sql
  13583. /// </summary>
  13584. /// <returns>sql</returns>
  13585. private static string GetRPT080107ISQL(SUserInfo user, SemiCheckEntity se, ref List<OracleParameter> parameters)
  13586. {
  13587. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  13588. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  13589. string sqlString = @"
  13590. select
  13591. SemiCheck.SemiCheckID,
  13592. CProcedure.ProcedureName as CProcedureName,
  13593. SemiCheck.ProcedureTime,
  13594. SemiCheck.UserCode,
  13595. GoodsType2.GoodsTypeName as LevelGoodsTypeName,
  13596. GoodsType.GoodsTypeName,
  13597. Goods.GoodsCode,
  13598. SemiCheck.BarCode,
  13599. -- 复检后不显示半检状态
  13600. SemiCheckType.SemiCheckTypeName,
  13601. --decode(SemiCheck.ReSemiCheckType, 0, SemiCheckType.SemiCheckTypeName, '已复检') SemiCheckTypeName,
  13602. SemiCheck.SemiCheckUserCode,
  13603. SemiCheck.SemiCheckTime,
  13604. ReSemiCheckType.ReSemiCheckTypeName,
  13605. SemiCheck.ReSemiCheckUserCode,
  13606. SemiCheck.ReSemiCheckTime,
  13607. decode(SemiCheck.BackOutFlag,'0','正常','撤销') as BackOutFlag,
  13608. SemiCheck.BackOutUserCode,
  13609. SemiCheck.BackOutTime,
  13610. SemiCheck.GroutingUserCode,
  13611. SemiCheck.GroutingLineCode,
  13612. SemiCheck.GroutingMouldCode,
  13613. SemiCheck.GroutingDate,
  13614. GroutingDailyDetail.DeliverTime,
  13615. logo.logoName,
  13616. RProcedure.ProcedureName as RProcedureName,
  13617. SemiCheck.ReworkUserCode,
  13618. SemiCheckDefect.DefectCode,
  13619. SemiCheckDefect.DefectName as DefectName1,
  13620. concat(SemiCheckDefect.DefectCode||'->',SemiCheckDefect.DefectName) as DefectName,
  13621. SemiCheckDefect.DefectPositionName,
  13622. SemiCheckDefect.DefectPositionCode,
  13623. concat(SemiCheckDefect.DefectPositionCode||'->',SemiCheckDefect.DefectPositionName) as DefectPositionName,
  13624. Procedure.ProcedureName,
  13625. inpp.ProcedureName CurrProcedureName,
  13626. DefectUser.username as DefectUser,
  13627. GroutingDailyDetail.testmouldflag
  13628. from TP_PM_SemiCheck SemiCheck
  13629. left join TP_PC_Procedure CProcedure
  13630. on SemiCheck.ProcedureID=CProcedure.ProcedureID
  13631. left join TP_MST_Goods Goods
  13632. on SemiCheck.GoodsID=Goods.GoodsID
  13633. left join TP_MST_GoodsType GoodsType
  13634. on Goods.GoodsTypeID=GoodsType.GoodsTypeID
  13635. left join TP_MST_GoodsType GoodsType2
  13636. on GoodsType2.accountid=GoodsType.accountid
  13637. and GoodsType2.GoodsTypecode=substr(GoodsType.GoodsTypecode,1,6)
  13638. left join TP_SYS_SemiCheckType SemiCheckType
  13639. on SemiCheck.SemiCheckType=SemiCheckType.SemiCheckTypeID
  13640. left join TP_SYS_ReSemiCheckType ReSemiCheckType
  13641. on SemiCheck.ReSemiCheckType=ReSemiCheckType.ReSemiCheckTypeID
  13642. left join TP_PM_GroutingDailyDetail GroutingDailyDetail
  13643. on GroutingDailyDetail.GroutingDailyDetailID=SemiCheck.GroutingDailyDetailID
  13644. left join TP_MST_Logo logo
  13645. on GroutingDailyDetail.LogoID=logo.LogoID
  13646. left join TP_PC_Procedure RProcedure
  13647. on SemiCheck.ReworkProcedureID=RProcedure.ProcedureID
  13648. left join TP_PM_SemiCheckDefect SemiCheckDefect
  13649. on SemiCheck.SemiCheckID=SemiCheckDefect.SemiCheckID
  13650. and SemiCheckDefect.ValueFlag='1'
  13651. left join TP_PC_Procedure Procedure
  13652. on SemiCheckDefect.DefectProcedureID=Procedure.ProcedureID
  13653. left join TP_MST_User DefectUser
  13654. on DefectUser.userid=SemiCheckDefect.DefectUserID
  13655. left join tp_pm_inproduction inp on inp.barcode = SemiCheck.barcode
  13656. left join TP_PC_Procedure inpp on inp.ProcedureID = inpp.ProcedureID
  13657. where SemiCheck.AccountID=:AccountID
  13658. ";
  13659. //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))
  13660. // 完成工序
  13661. if (!string.IsNullOrEmpty(se.CProcedureIDS))
  13662. {
  13663. sqlString = sqlString + " AND instr(','||:CProcedureIDS||',',','||SemiCheck.ProcedureID||',')>0 ";
  13664. parameters.Add(new OracleParameter(":CProcedureIDS", OracleDbType.NVarchar2, se.CProcedureIDS, ParameterDirection.Input));
  13665. }
  13666. // 完成时间起始
  13667. if (se.CDateTimeStart.HasValue)
  13668. {
  13669. sqlString = sqlString + " AND SemiCheck.ProcedureTime >= :CDateTimeStart ";
  13670. parameters.Add(new OracleParameter(":CDateTimeStart", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13671. }
  13672. // 完成时间结束
  13673. if (se.CDateTimeEnd.HasValue)
  13674. {
  13675. sqlString = sqlString + " AND SemiCheck.ProcedureTime <= :CDateTimeEnd ";
  13676. parameters.Add(new OracleParameter(":CDateTimeEnd", OracleDbType.Date, se.CDateTimeStart.Value, ParameterDirection.Input));
  13677. }
  13678. // 完成工号
  13679. if (!string.IsNullOrEmpty(se.CUserCode))
  13680. {
  13681. sqlString = sqlString + " AND instr(SemiCheck.UserCode,:UserCode)>0";
  13682. parameters.Add(new OracleParameter(":UserCode", OracleDbType.NVarchar2, se.CUserCode, ParameterDirection.Input));
  13683. }
  13684. // 产品类别
  13685. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  13686. {
  13687. sqlString = sqlString + " AND instr(GoodsType.GoodsTypeCode,:GoodsTypeCode)=1 ";
  13688. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  13689. }
  13690. // 产品编码
  13691. if (!string.IsNullOrEmpty(se.GoodsCode))
  13692. {
  13693. sqlString = sqlString + " AND instr(Goods.GoodsCode,:GoodsCode)>0";
  13694. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  13695. }
  13696. // 成型工号
  13697. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  13698. {
  13699. sqlString = sqlString + " AND instr(SemiCheck.GroutingUserCode,:GroutingUserCode)>0";
  13700. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  13701. }
  13702. // 注浆时间起始
  13703. if (se.GroutingDateTimeStart.HasValue)
  13704. {
  13705. sqlString = sqlString + " AND SemiCheck.GroutingDate >= :GroutingDateTimeStart ";
  13706. parameters.Add(new OracleParameter(":GroutingDateTimeStart", OracleDbType.Date, se.GroutingDateTimeStart.Value, ParameterDirection.Input));
  13707. }
  13708. // 注浆时间结束
  13709. if (se.GroutingDateTimeEnd.HasValue)
  13710. {
  13711. sqlString = sqlString + " AND SemiCheck.GroutingDate <= :GroutingDateTimeEnd ";
  13712. parameters.Add(new OracleParameter(":GroutingDateTimeEnd", OracleDbType.Date, se.GroutingDateTimeEnd.Value, ParameterDirection.Input));
  13713. }
  13714. // 交坯时间起始
  13715. if (se.DeliveryDateTimeStart.HasValue)
  13716. {
  13717. sqlString = sqlString + " AND GroutingDailyDetail.DeliverTime >= :DeliveryDateTimeStart ";
  13718. parameters.Add(new OracleParameter(":DeliveryDateTimeStart", OracleDbType.Date, se.DeliveryDateTimeStart.Value, ParameterDirection.Input));
  13719. }
  13720. // 交坯时间结束
  13721. if (se.DeliveryDateTimeEnd.HasValue)
  13722. {
  13723. sqlString = sqlString + " AND GroutingDailyDetail.DeliverTime <= :DeliveryDateTimeEnd ";
  13724. parameters.Add(new OracleParameter(":DeliveryDateTimeEnd", OracleDbType.Date, se.DeliveryDateTimeEnd.Value, ParameterDirection.Input));
  13725. }
  13726. // 半检状态
  13727. if (!string.IsNullOrEmpty(se.SemiCheckType))
  13728. {
  13729. sqlString = sqlString + " AND instr(','||:SemiCheckType||',',','||SemiCheck.SemiCheckType||',')>0 ";
  13730. parameters.Add(new OracleParameter(":SemiCheckType", OracleDbType.NVarchar2, se.SemiCheckType, ParameterDirection.Input));
  13731. }
  13732. // 半检时间起始
  13733. if (se.SemiCheckDateTimeStart.HasValue)
  13734. {
  13735. sqlString = sqlString + " AND SemiCheck.SemiCheckTime >= :SemiCheckDateTimeStart ";
  13736. parameters.Add(new OracleParameter(":SemiCheckDateTimeStart", OracleDbType.Date, se.SemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13737. }
  13738. // 半检时间结束
  13739. if (se.SemiCheckDateTimeEnd.HasValue)
  13740. {
  13741. sqlString = sqlString + " AND SemiCheck.SemiCheckTime <= :SemiCheckDateTimeEnd ";
  13742. parameters.Add(new OracleParameter(":SemiCheckDateTimeEnd", OracleDbType.Date, se.SemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13743. }
  13744. // 半检工号
  13745. if (!string.IsNullOrEmpty(se.SemiCheckUserCode))
  13746. {
  13747. sqlString = sqlString + " AND instr(SemiCheck.SemiCheckUserCode,:SemiCheckUserCode)>0";
  13748. parameters.Add(new OracleParameter(":SemiCheckUserCode", OracleDbType.NVarchar2, se.SemiCheckUserCode, ParameterDirection.Input));
  13749. }
  13750. // 返工工序
  13751. if (!string.IsNullOrEmpty(se.RProcedureIDS))
  13752. {
  13753. sqlString = sqlString + " AND instr(','||:RProcedureIDS||',',','||SemiCheck.ReworkProcedureID||',')>0 ";
  13754. parameters.Add(new OracleParameter(":RProcedureIDS", OracleDbType.NVarchar2, se.RProcedureIDS, ParameterDirection.Input));
  13755. }
  13756. // 返工工号
  13757. if (!string.IsNullOrEmpty(se.ReworkUserCode))
  13758. {
  13759. sqlString = sqlString + " AND instr(SemiCheck.ReworkUserCode,:ReworkUserCode)>0";
  13760. parameters.Add(new OracleParameter(":ReworkUserCode", OracleDbType.NVarchar2, se.ReworkUserCode, ParameterDirection.Input));
  13761. }
  13762. // 复检状态
  13763. if (!string.IsNullOrEmpty(se.ReSemiCheckType))
  13764. {
  13765. sqlString = sqlString + " AND instr(','||:ReSemiCheckType||',',','||SemiCheck.ReSemiCheckType||',')>0 ";
  13766. parameters.Add(new OracleParameter(":ReSemiCheckType", OracleDbType.NVarchar2, se.ReSemiCheckType, ParameterDirection.Input));
  13767. }
  13768. // 复检时间起始
  13769. if (se.ReSemiCheckDateTimeStart.HasValue)
  13770. {
  13771. sqlString = sqlString + " AND SemiCheck.ReSemiCheckTime >= :ReSemiCheckDateTimeStart ";
  13772. parameters.Add(new OracleParameter(":ReSemiCheckDateTimeStart", OracleDbType.Date, se.ReSemiCheckDateTimeStart.Value, ParameterDirection.Input));
  13773. }
  13774. // 复检时间结束
  13775. if (se.ReSemiCheckDateTimeEnd.HasValue)
  13776. {
  13777. sqlString = sqlString + " AND SemiCheck.ReSemiCheckTime <= :ReSemiCheckDateTimeEnd ";
  13778. parameters.Add(new OracleParameter(":ReSemiCheckDateTimeEnd", OracleDbType.Date, se.ReSemiCheckDateTimeEnd.Value, ParameterDirection.Input));
  13779. }
  13780. // 复检工号
  13781. if (!string.IsNullOrEmpty(se.ReSemiCheckUserCode))
  13782. {
  13783. sqlString = sqlString + " AND instr(SemiCheck.ReSemiCheckUserCode,:ReSemiCheckUserCode)>0";
  13784. parameters.Add(new OracleParameter(":ReSemiCheckUserCode", OracleDbType.NVarchar2, se.ReSemiCheckUserCode, ParameterDirection.Input));
  13785. }
  13786. // 撤销标识
  13787. if (!string.IsNullOrEmpty(se.BackOutFlag))
  13788. {
  13789. sqlString = sqlString + " AND instr(','||:BackOutFlag||',',','||SemiCheck.BackOutFlag||',')>0 ";
  13790. parameters.Add(new OracleParameter(":BackOutFlag", OracleDbType.NVarchar2, se.BackOutFlag, ParameterDirection.Input));
  13791. }
  13792. // 撤销时间起始
  13793. if (se.BackOutTimeStart.HasValue)
  13794. {
  13795. sqlString = sqlString + " AND SemiCheck.BackOutTime >= :BackOutTimeStart ";
  13796. parameters.Add(new OracleParameter(":BackOutTimeStart", OracleDbType.Date, se.BackOutTimeStart.Value, ParameterDirection.Input));
  13797. }
  13798. // 撤销时间结束
  13799. if (se.BackOutTimeEnd.HasValue)
  13800. {
  13801. sqlString = sqlString + " AND SemiCheck.BackOutTime <= :BackOutTimeEnd ";
  13802. parameters.Add(new OracleParameter(":BackOutTimeEnd", OracleDbType.Date, se.BackOutTimeEnd.Value, ParameterDirection.Input));
  13803. }
  13804. // 撤销工号
  13805. if (!string.IsNullOrEmpty(se.BackOutUserCode))
  13806. {
  13807. sqlString = sqlString + " AND instr(SemiCheck.BackOutUserCode,:BackOutUserCode)>0";
  13808. parameters.Add(new OracleParameter(":BackOutUserCode", OracleDbType.NVarchar2, se.BackOutUserCode, ParameterDirection.Input));
  13809. }
  13810. // 产品条码
  13811. if (!string.IsNullOrEmpty(se.BarCode))
  13812. {
  13813. sqlString = sqlString + " AND instr(SemiCheck.BarCode,:BarCode)>0";
  13814. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  13815. }
  13816. // 缺陷编码
  13817. if (!string.IsNullOrEmpty(se.DefectCode))
  13818. {
  13819. sqlString = sqlString + " AND instr(SemiCheckDefect.DefectCode,:DefectCode)>0";
  13820. parameters.Add(new OracleParameter(":DefectCode", OracleDbType.NVarchar2, se.DefectCode, ParameterDirection.Input));
  13821. }
  13822. // 缺陷位置集
  13823. if (!string.IsNullOrEmpty(se.DefectPositionIDS))
  13824. {
  13825. sqlString = sqlString + " AND instr(','||:DefectPositionIDS||',',','||SemiCheckDefect.DefectPositionID||',')>0 ";
  13826. parameters.Add(new OracleParameter(":DefectPositionIDS", OracleDbType.NVarchar2, se.DefectPositionIDS, ParameterDirection.Input));
  13827. }
  13828. // 责任工序集
  13829. if (!string.IsNullOrEmpty(se.DefectProcedureIDS))
  13830. {
  13831. sqlString = sqlString + " AND instr(','||:DefectPositionIDS||',',','||SemiCheckDefect.DefectPositionID||',')>0 ";
  13832. parameters.Add(new OracleParameter(":DefectPositionIDS", OracleDbType.NVarchar2, se.DefectProcedureIDS, ParameterDirection.Input));
  13833. }
  13834. // 责任工号
  13835. if (!string.IsNullOrEmpty(se.DefectUser))
  13836. {
  13837. sqlString = sqlString + " AND instr(DefectUser.UserCode,:DefectUser)>0";
  13838. parameters.Add(new OracleParameter(":DefectUser", OracleDbType.NVarchar2, se.DefectUser, ParameterDirection.Input));
  13839. }
  13840. // 试验标识
  13841. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  13842. {
  13843. sqlString = sqlString + " AND GroutingDailyDetail.TestMouldFlag = :TestMouldFlag ";
  13844. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  13845. }
  13846. return sqlString;
  13847. }
  13848. /// <summary>
  13849. /// 取得F_RPT_030112画面(产成品交接汇总表)的汇总信息查询数据
  13850. /// </summary>
  13851. /// <param name="user">登录用户信息</param>
  13852. /// <param name="se">查询条件</param>
  13853. /// <returns>查询结果</returns>
  13854. public static ServiceResultEntity GetRPT0030112SData(SUserInfo user, SearchFinishedProductEntity se)
  13855. {
  13856. IDBConnection conn = null;
  13857. try
  13858. {
  13859. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  13860. List<OracleParameter> parameters = new List<OracleParameter>();
  13861. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT030112SSQL(user, se, ref parameters));
  13862. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  13863. ServiceResultEntity sre = new ServiceResultEntity();
  13864. if (data == null || data.Rows.Count == 0)
  13865. {
  13866. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  13867. return sre;
  13868. }
  13869. sre.Data = new DataSet();
  13870. sre.Data.Tables.Add(data);
  13871. return sre;
  13872. }
  13873. catch (Exception ex)
  13874. {
  13875. throw ex;
  13876. }
  13877. finally
  13878. {
  13879. if (conn != null &&
  13880. conn.ConnState == ConnectionState.Open)
  13881. {
  13882. conn.Close();
  13883. }
  13884. }
  13885. }
  13886. /// <summary>
  13887. /// 获取RPT030112画面(产成品交接汇总表)的汇总信息查询sql
  13888. /// </summary>
  13889. /// <returns>sql</returns>
  13890. private static string GetRPT030112SSQL(SUserInfo user, SearchFinishedProductEntity se, ref List<OracleParameter> parameters)
  13891. {
  13892. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  13893. //parameters.Add(new OracleParameter(":UserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  13894. string sqlString = @"SELECT ts.gid
  13895. ,logoid
  13896. ,decode(ts.gid,
  13897. '23',
  13898. '总计【' || orderno || '】',
  13899. decode(ts.gid, '1', '--', '3', '--', orderno)) AS orderno
  13900. ,decode(ts.gid,
  13901. '3',
  13902. '合计【' || logoname || '】',
  13903. decode(ts.gid, '1', '--', logoname)) AS logoname
  13904. ,decode(ts.gid, '1', '小计【' || goodscode || '】', goodscode) AS goodscode
  13905. ,decode(ts.gid, '1', '--', goodsmodel) AS goodsmodel
  13906. ,GoodsSpecification
  13907. ,fhtime
  13908. ,COUNT
  13909. FROM (SELECT grouping_id(l.logoid,
  13910. o.orderno,
  13911. l.logoname,
  13912. g.goodscode,
  13913. to_char(f.fhtime, 'yyyy-mm-dd')) AS gid
  13914. ,decode(GROUPING(l.logoid), 1, '--', l.logoid) AS logoid
  13915. ,decode(GROUPING(o.orderno), 1, '--', o.orderno) AS orderno
  13916. ,decode(GROUPING(l.logoname), 1, '--', l.logoname) AS logoname
  13917. ,decode(GROUPING(g.goodscode), 1, '--', g.goodscode) AS goodscode
  13918. ,decode(GROUPING(g.goodscode), 1, '--', g.goodsmodel) AS goodsmodel
  13919. ,decode(GROUPING(g.GoodsSpecification), 1, '--', g.GoodsSpecification) AS GoodsSpecification
  13920. ,decode(GROUPING(to_char(f.fhtime, 'yyyy-mm-dd')),
  13921. 1,
  13922. '--',
  13923. to_char(f.fhtime, 'yyyy-mm-dd')) AS fhtime
  13924. ,COUNT(f.fhtime) AS COUNT
  13925. FROM tp_pm_finishedproduct F
  13926. LEFT JOIN TP_PM_Order O ON F.Fhorderid = O.Orderid
  13927. LEFT JOIN tp_mst_logo L ON F.LOGOID = L.LOGOID
  13928. LEFT JOIN tp_mst_goods G ON g.goodsid = f.goodsid
  13929. LEFT JOIN TP_MST_GoodsType gt ON g.GoodsTypeID = gt.GoodsTypeID
  13930. where f.fhtime is not null and f.AccountID=:AccountID ";
  13931. // 交接时间起始
  13932. if (se.FHTimeStart.HasValue)
  13933. {
  13934. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart ";
  13935. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, se.FHTimeStart.Value, ParameterDirection.Input));
  13936. }
  13937. // 交接时间结束
  13938. if (se.FHTimeEnd.HasValue)
  13939. {
  13940. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd ";
  13941. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, se.FHTimeEnd.Value, ParameterDirection.Input));
  13942. }
  13943. // 订单号
  13944. if (!string.IsNullOrEmpty(se.OrderNo))
  13945. {
  13946. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0";
  13947. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, se.OrderNo, ParameterDirection.Input));
  13948. }
  13949. // 产品类别编码
  13950. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  13951. {
  13952. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1";
  13953. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  13954. }
  13955. // 产品编码
  13956. if (!string.IsNullOrEmpty(se.GoodsCode))
  13957. {
  13958. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0";
  13959. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  13960. }
  13961. // 产品型号
  13962. if (!string.IsNullOrEmpty(se.GoodsModel))
  13963. {
  13964. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0";
  13965. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, se.GoodsModel, ParameterDirection.Input));
  13966. }
  13967. // 产品商标ID集
  13968. if (!string.IsNullOrEmpty(se.LogoIDS))
  13969. {
  13970. sqlString += " AND instr(','||:LogoIDS||',', ',' || L.logoid || ',') > 0";
  13971. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, se.LogoIDS, ParameterDirection.Input));
  13972. }
  13973. // 交接工号
  13974. if (!string.IsNullOrEmpty(se.FHUserCode))
  13975. {
  13976. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0";
  13977. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, se.FHUserCode, ParameterDirection.Input));
  13978. }
  13979. sqlString = sqlString + @" GROUP BY rollup(o.orderno,l.logoid, l.logoname,g.goodscode,g.goodsmodel,g.GoodsSpecification,to_char(f.fhtime, 'yyyy-mm-dd'))
  13980. order by o.orderno,l.logoid, l.logoname,g.goodscode,to_char(f.fhtime, 'yyyy-mm-dd')
  13981. )ts
  13982. where ( logoid!='--' and orderno!='--' and logoname!='--' and goodscode!='--' and fhtime!='--')
  13983. or (goodscode!='--')
  13984. or(logoname!='')
  13985. or (orderno!='--') and ts.gid!='7'";
  13986. return sqlString;
  13987. }
  13988. /// <summary>
  13989. /// 取得F_RPT_030112画面(产成品交接汇总表)的汇总信息
  13990. /// </summary>
  13991. /// <param name="user">登录用户信息</param>
  13992. /// <param name="se">查询条件</param>
  13993. /// <returns>查询结果</returns>
  13994. public static ServiceResultEntity GetRPT0030112SumData(ClientRequestEntity cre, SUserInfo user)
  13995. {
  13996. IDBConnection conn = null;
  13997. try
  13998. {
  13999. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14000. List<OracleParameter> parameters = new List<OracleParameter>();
  14001. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  14002. //string sqlString = "SELECT trunc(f.fhtime) fhtime, g.goodscode, COUNT(*) goodscount\n" +
  14003. string sqlString = "SELECT nvl2(o.orderno,\n" +
  14004. " nvl2(l.logoname,\n" +
  14005. " o.orderno,\n" +
  14006. " to_char('合计[') || o.orderno ||\n" +
  14007. " to_char(']')),\n" +
  14008. " '总计') orderno\n" +
  14009. " ,nvl2(l.logoname,\n" +
  14010. " nvl2(g.goodscode,\n" +
  14011. " l.logoname,\n" +
  14012. " to_char('小计[' || l.logoname || ']')),\n" +
  14013. " '--') logoname\n" +
  14014. " ,nvl(g.goodscode, '--') goodscode" +
  14015. " ,nvl(g.goodsmodel, '--') goodsmodel" +
  14016. " ,nvl(gdd.materialcode, '--') mcode" +
  14017. " ,nvl(gdd.materialremark, '--') mremark" +
  14018. " ,f.logoid" +
  14019. " ,f.goodsid" +
  14020. " ,f.fhorderid" +
  14021. " ,COUNT(*) count" +
  14022. " FROM tp_pm_finishedproduct f\n" +
  14023. " inner JOIN tp_pm_groutingdailydetail gdd\n" +
  14024. " ON gdd.barcode = f.barcode\n" +
  14025. " LEFT JOIN tp_mst_logo l\n" +
  14026. " ON f.logoid = l.logoid\n" +
  14027. " LEFT JOIN TP_PM_Order O\n" +
  14028. " ON f.Fhorderid = O.Orderid\n" +
  14029. " LEFT JOIN tp_mst_goods G\n" +
  14030. " ON g.goodsid = f.goodsid\n" +
  14031. " LEFT JOIN TP_MST_GoodsType gt\n" +
  14032. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  14033. " WHERE f.fhtime IS NOT NULL\n" +
  14034. " AND f.AccountID = :AccountID\n";
  14035. // 交接时间起始
  14036. if (cre.Properties["FHTimeStart"] != null)
  14037. {
  14038. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart \n";
  14039. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, cre.Properties["FHTimeStart"], ParameterDirection.Input));
  14040. }
  14041. // 交接时间结束
  14042. if (cre.Properties["FHTimeEnd"] != null)
  14043. {
  14044. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd \n";
  14045. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, cre.Properties["FHTimeEnd"], ParameterDirection.Input));
  14046. }
  14047. // 订单号
  14048. if (!string.IsNullOrEmpty(cre.Properties["OrderNo"] as string))
  14049. {
  14050. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0 \n";
  14051. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, cre.Properties["OrderNo"], ParameterDirection.Input));
  14052. }
  14053. // 产品类别编码
  14054. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"] as string))
  14055. {
  14056. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 \n";
  14057. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  14058. }
  14059. // 产品编码
  14060. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"] as string))
  14061. {
  14062. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  14063. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input));
  14064. }
  14065. // 产品型号
  14066. if (!string.IsNullOrEmpty(cre.Properties["GoodsModel"] as string))
  14067. {
  14068. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0 \n";
  14069. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, cre.Properties["GoodsModel"], ParameterDirection.Input));
  14070. }
  14071. // 产品商标ID集
  14072. if (!string.IsNullOrEmpty(cre.Properties["LogoIDS"] as string))
  14073. {
  14074. sqlString += " AND instr(','||:LogoIDS||',', ',' || f.logoid || ',') > 0 \n";
  14075. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, cre.Properties["LogoIDS"], ParameterDirection.Input));
  14076. }
  14077. // 交接工号
  14078. if (!string.IsNullOrEmpty(cre.Properties["FHUserCode"] as string))
  14079. {
  14080. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0 \n";
  14081. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, cre.Properties["FHUserCode"], ParameterDirection.Input));
  14082. }
  14083. // 试验标识
  14084. if (!string.IsNullOrEmpty(cre.Properties["TestMouldFlag"] as string))
  14085. {
  14086. sqlString = sqlString + " AND gdd.TestMouldFlag = :TestMouldFlag ";
  14087. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, cre.Properties["TestMouldFlag"], ParameterDirection.Input));
  14088. }
  14089. //sqlString += " group by trunc(f.fhtime), g.goodscode order by trunc(f.fhtime), g.goodscode";
  14090. sqlString += " group by grouping sets((o.orderno, l.logoname, g.goodscode, g.goodsmodel, gdd.materialcode,gdd.materialremark,f.logoid,f.goodsid,f.fhorderid),(o.orderno, l.logoname,f.logoid,f.fhorderid),(o.orderno,f.fhorderid),())";
  14091. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  14092. ServiceResultEntity sre = new ServiceResultEntity();
  14093. if (data == null || data.Rows.Count == 0)
  14094. {
  14095. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14096. return sre;
  14097. }
  14098. sre.Data = new DataSet();
  14099. sre.Data.Tables.Add(data);
  14100. return sre;
  14101. }
  14102. catch (Exception ex)
  14103. {
  14104. throw ex;
  14105. }
  14106. finally
  14107. {
  14108. if (conn != null &&
  14109. conn.ConnState == ConnectionState.Open)
  14110. {
  14111. conn.Close();
  14112. }
  14113. }
  14114. }
  14115. /// <summary>
  14116. /// 取得F_RPT_030112画面(产成品交接汇总表)的明细信息查询数据
  14117. /// </summary>
  14118. /// <param name="user">登录用户信息</param>
  14119. /// <param name="se">查询条件</param>
  14120. /// <returns>查询结果</returns>
  14121. public static ServiceResultEntity GetRPT0030112DetailSData(SUserInfo user, SearchFinishedProductEntity se)
  14122. {
  14123. IDBConnection conn = null;
  14124. try
  14125. {
  14126. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14127. List<OracleParameter> parameters = new List<OracleParameter>();
  14128. StringBuilder sql = new StringBuilder(ReportModuleLogic.GetRPT0030112DetailSData(user, se, ref parameters));
  14129. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  14130. ServiceResultEntity sre = new ServiceResultEntity();
  14131. if (data == null || data.Rows.Count == 0)
  14132. {
  14133. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14134. return sre;
  14135. }
  14136. sre.Data = new DataSet();
  14137. sre.Data.Tables.Add(data);
  14138. return sre;
  14139. }
  14140. catch (Exception ex)
  14141. {
  14142. throw ex;
  14143. }
  14144. finally
  14145. {
  14146. if (conn != null &&
  14147. conn.ConnState == ConnectionState.Open)
  14148. {
  14149. conn.Close();
  14150. }
  14151. }
  14152. }
  14153. private static string GetRPT0030112DetailSData(SUserInfo user, SearchFinishedProductEntity se, ref List<OracleParameter> parameters)
  14154. {
  14155. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  14156. string sqlString = "SELECT O.ORDERNO,\n" +
  14157. " F.FHTIME,\n" +
  14158. " F.FHUSERCODE,\n" +
  14159. " F.BARCODE,\n" +
  14160. " F.GOODSCODE,\n" +
  14161. " L.LOGONAME,\n" +
  14162. " F.GROUTINGUSERCODE,\n" +
  14163. " F.GROUTINGLINECODE,\n" +
  14164. " F.GROUTINGMOULDCODE,\n" +
  14165. " F.GROUTINGDATE,\n" +
  14166. " G.DELIVERTIME,\n" +
  14167. " GOODS.goodsmodel,\n" +
  14168. //" (GOODS.MATERIALCODE || L.TAGCODE || G.ONLYCODE) AS FINISHEDBARCODE,\n" +
  14169. //" 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" +
  14170. " G.outlabelcode AS FINISHEDBARCODE,\n" +
  14171. " G.MATERIALCODE AS mcode,\n" +
  14172. " G.materialremark AS mremark,\n" +
  14173. " F.CREATETIME AS PRODUCTFINISHEDTIME,\n" +
  14174. " G.SecurityCode,\n" +
  14175. " G.TestMouldFlag\n" +
  14176. " FROM TP_PM_FINISHEDPRODUCT F\n" +
  14177. " LEFT JOIN TP_PM_ORDER O\n" +
  14178. " ON F.FHORDERID = O.ORDERID\n" +
  14179. " LEFT JOIN TP_MST_LOGO L\n" +
  14180. " ON F.LOGOID = L.LOGOID\n" +
  14181. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL G\n" +
  14182. " ON F.GROUTINGDAILYDETAILID = G.GROUTINGDAILYDETAILID\n" +
  14183. " LEFT JOIN TP_MST_GOODS GOODS\n" +
  14184. " ON F.GOODSID = GOODS.GOODSID\n" +
  14185. " LEFT JOIN TP_MST_GOODSTYPE GOODSTYPE\n" +
  14186. " ON GOODS.GOODSTYPEID = GOODSTYPE.GOODSTYPEID\n" +
  14187. " WHERE F.ACCOUNTID = :ACCOUNTID\n" +
  14188. " AND F.FHTIME IS NOT NULL";
  14189. // 交接时间起始
  14190. if (se.FHTimeStart.HasValue)
  14191. {
  14192. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart ";
  14193. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, se.FHTimeStart.Value, ParameterDirection.Input));
  14194. }
  14195. // 交接时间结束
  14196. if (se.FHTimeEnd.HasValue)
  14197. {
  14198. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd ";
  14199. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, se.FHTimeEnd.Value, ParameterDirection.Input));
  14200. }
  14201. // 订单号
  14202. if (!string.IsNullOrEmpty(se.OrderNo))
  14203. {
  14204. //sqlString = sqlString + " AND O.OrderNo=:OrderNo";
  14205. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0";
  14206. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, se.OrderNo, ParameterDirection.Input));
  14207. }
  14208. // 产品类别编码
  14209. if (!string.IsNullOrEmpty(se.GoodsTypeCode))
  14210. {
  14211. sqlString = sqlString + " AND instr(GoodsType.GoodsTypeCode,:GoodsTypeCode)=1";
  14212. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode, ParameterDirection.Input));
  14213. }
  14214. // 产品编码
  14215. if (!string.IsNullOrEmpty(se.GoodsCode))
  14216. {
  14217. sqlString = sqlString + " AND instr(Goods.GoodsCode,:GoodsCode)>0";
  14218. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  14219. }
  14220. // 产品型号
  14221. if (!string.IsNullOrEmpty(se.GoodsModel))
  14222. {
  14223. sqlString = sqlString + " AND instr(Goods.GoodsModel,:GoodsModel)>0";
  14224. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, se.GoodsModel, ParameterDirection.Input));
  14225. }
  14226. // 产品商标ID集
  14227. if (!string.IsNullOrEmpty(se.LogoIDS))
  14228. {
  14229. sqlString += " AND instr(','||:LogoIDS||',', ',' || L.logoid || ',') > 0";
  14230. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, se.LogoIDS, ParameterDirection.Input));
  14231. }
  14232. // 交接工号
  14233. if (!string.IsNullOrEmpty(se.FHUserCode))
  14234. {
  14235. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0";
  14236. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, se.FHUserCode, ParameterDirection.Input));
  14237. }
  14238. if (se.OrderID != null)
  14239. {
  14240. sqlString = sqlString + " AND F.fhorderid = :fhorderid";
  14241. parameters.Add(new OracleParameter(":fhorderid", OracleDbType.Int32, se.OrderID, ParameterDirection.Input));
  14242. }
  14243. if (se.GoodsID != null)
  14244. {
  14245. sqlString = sqlString + " AND F.GoodsID = :GoodsID";
  14246. parameters.Add(new OracleParameter(":GoodsID", OracleDbType.Int32, se.GoodsID, ParameterDirection.Input));
  14247. }
  14248. if (se.LogoID != null)
  14249. {
  14250. sqlString = sqlString + " AND F.LogoID = :LogoID";
  14251. parameters.Add(new OracleParameter(":LogoID", OracleDbType.Int32, se.LogoID, ParameterDirection.Input));
  14252. }
  14253. // 试验标识
  14254. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  14255. {
  14256. sqlString += " AND g.TestMouldFlag = :TestMouldFlag ";
  14257. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
  14258. }
  14259. return sqlString;
  14260. }
  14261. /// <summary>
  14262. /// 取得F_RPT_030112画面(产成品交接汇总表)的交接数量
  14263. /// </summary>
  14264. /// <param name="user">登录用户信息</param>
  14265. /// <param name="se">查询条件</param>
  14266. /// <returns>查询结果</returns>
  14267. public static ServiceResultEntity GetRPT0030112NData(ClientRequestEntity cre, SUserInfo user)
  14268. {
  14269. IDBConnection conn = null;
  14270. try
  14271. {
  14272. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14273. List<OracleParameter> parameters = new List<OracleParameter>();
  14274. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  14275. //string sqlString = "SELECT trunc(f.fhtime) fhtime, g.goodscode, COUNT(*) goodscount\n" +
  14276. string sqlString = "SELECT nvl2(trunc(f.fhtime),\n" +
  14277. " nvl2(l.logoname,\n" +
  14278. " to_char(trunc(f.fhtime), 'yyyy-mm-dd'),\n" +
  14279. " to_char('合计[') || to_char(trunc(f.fhtime), 'yyyy-mm-dd') ||\n" +
  14280. " to_char(']')),\n" +
  14281. " '总计') fhtime\n" +
  14282. " ,nvl2(l.logoname,\n" +
  14283. " nvl2(g.goodscode,\n" +
  14284. " l.logoname,\n" +
  14285. " to_char('小计[' || l.logoname || ']')),\n" +
  14286. " '--') logoname\n" +
  14287. " ,nvl(g.goodscode, '--') goodscode" +
  14288. " ,nvl(g.goodsmodel, '--') goodsmodel" +
  14289. " ,nvl(gdd.materialcode, '--') mcode" +
  14290. " ,nvl(gdd.materialremark, '--') mremark" +
  14291. " ,COUNT(*) goodscount" +
  14292. " FROM tp_pm_finishedproduct f\n" +
  14293. " inner JOIN tp_pm_groutingdailydetail gdd\n" +
  14294. " ON gdd.barcode = f.barcode\n" +
  14295. " LEFT JOIN tp_mst_logo l\n" +
  14296. " ON f.logoid = l.logoid\n" +
  14297. " LEFT JOIN TP_PM_Order O\n" +
  14298. " ON f.Fhorderid = O.Orderid\n" +
  14299. " LEFT JOIN tp_mst_goods G\n" +
  14300. " ON g.goodsid = f.goodsid\n" +
  14301. " LEFT JOIN TP_MST_GoodsType gt\n" +
  14302. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  14303. " WHERE f.fhtime IS NOT NULL\n" +
  14304. " AND f.AccountID = :AccountID\n";
  14305. // 交接时间起始
  14306. if (cre.Properties["FHTimeStart"] != null)
  14307. {
  14308. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart \n";
  14309. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, cre.Properties["FHTimeStart"], ParameterDirection.Input));
  14310. }
  14311. // 交接时间结束
  14312. if (cre.Properties["FHTimeEnd"] != null)
  14313. {
  14314. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd \n";
  14315. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, cre.Properties["FHTimeEnd"], ParameterDirection.Input));
  14316. }
  14317. // 订单号
  14318. if (!string.IsNullOrEmpty(cre.Properties["OrderNo"] as string))
  14319. {
  14320. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0 \n";
  14321. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, cre.Properties["OrderNo"], ParameterDirection.Input));
  14322. }
  14323. // 产品类别编码
  14324. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"] as string))
  14325. {
  14326. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 \n";
  14327. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  14328. }
  14329. // 产品编码
  14330. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"] as string))
  14331. {
  14332. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  14333. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input));
  14334. }
  14335. // 产品型号
  14336. if (!string.IsNullOrEmpty(cre.Properties["GoodsModel"] as string))
  14337. {
  14338. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0 \n";
  14339. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, cre.Properties["GoodsModel"], ParameterDirection.Input));
  14340. }
  14341. // 产品商标ID集
  14342. if (!string.IsNullOrEmpty(cre.Properties["LogoIDS"] as string))
  14343. {
  14344. sqlString += " AND instr(','||:LogoIDS||',', ',' || f.logoid || ',') > 0 \n";
  14345. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, cre.Properties["LogoIDS"], ParameterDirection.Input));
  14346. }
  14347. // 交接工号
  14348. if (!string.IsNullOrEmpty(cre.Properties["FHUserCode"] as string))
  14349. {
  14350. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0 \n";
  14351. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, cre.Properties["FHUserCode"], ParameterDirection.Input));
  14352. }
  14353. // 试验标识
  14354. if (!string.IsNullOrEmpty(cre.Properties["TestMouldFlag"] as string))
  14355. {
  14356. sqlString = sqlString + " AND gdd.TestMouldFlag = :TestMouldFlag ";
  14357. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, cre.Properties["TestMouldFlag"], ParameterDirection.Input));
  14358. }
  14359. //sqlString += " group by trunc(f.fhtime), g.goodscode order by trunc(f.fhtime), g.goodscode";
  14360. sqlString += " GROUP BY GROUPING SETS((trunc(f.fhtime), l.logoname, g.goodscode,g.goodsmodel,gdd.materialcode,gdd.materialremark),(trunc(f.fhtime), l.logoname),(trunc(f.fhtime)),())";
  14361. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  14362. ServiceResultEntity sre = new ServiceResultEntity();
  14363. if (data == null || data.Rows.Count == 0)
  14364. {
  14365. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14366. return sre;
  14367. }
  14368. sre.Data = new DataSet();
  14369. sre.Data.Tables.Add(data);
  14370. return sre;
  14371. }
  14372. catch (Exception ex)
  14373. {
  14374. throw ex;
  14375. }
  14376. finally
  14377. {
  14378. if (conn != null &&
  14379. conn.ConnState == ConnectionState.Open)
  14380. {
  14381. conn.Close();
  14382. }
  14383. }
  14384. }
  14385. /// <summary>
  14386. /// 取得F_RPT_030112画面(产成品交接汇总表)的型号数量
  14387. /// </summary>
  14388. /// <param name="user">登录用户信息</param>
  14389. /// <param name="se">查询条件</param>
  14390. /// <returns>查询结果</returns>
  14391. public static ServiceResultEntity GetRPT0030112GNData(ClientRequestEntity cre, SUserInfo user)
  14392. {
  14393. IDBConnection conn = null;
  14394. try
  14395. {
  14396. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14397. List<OracleParameter> parameters = new List<OracleParameter>();
  14398. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  14399. //string sqlString = "SELECT trunc(f.fhtime) fhtime, g.goodscode, COUNT(*) goodscount\n" +
  14400. string sqlString = "SELECT --nvl2(trunc(f.fhtime),\n" +
  14401. //" nvl2(l.logoname,\n" +
  14402. //" to_char(trunc(f.fhtime), 'yyyy-mm-dd'),\n" +
  14403. //" to_char('合计[') || to_char(trunc(f.fhtime), 'yyyy-mm-dd') ||\n" +
  14404. //" to_char(']')),\n" +
  14405. //" '总计') fhtime\n" +
  14406. //" ,nvl2(l.logoname,\n" +
  14407. //" nvl2(g.goodscode,\n" +
  14408. //" l.logoname,\n" +
  14409. //" to_char('小计[' || l.logoname || ']')),\n" +
  14410. //" '--') logoname\n" +
  14411. " nvl(g.goodscode, '合计') goodscode" +
  14412. " ,nvl(g.goodsmodel, '--') goodsmodel" +
  14413. " ,nvl(gdd.materialcode, '--') mcode" +
  14414. " ,nvl(gdd.materialremark, '--') mremark" +
  14415. " ,COUNT(*) goodscount" +
  14416. " FROM tp_pm_finishedproduct f\n" +
  14417. " inner JOIN tp_pm_groutingdailydetail gdd\n" +
  14418. " ON gdd.barcode = f.barcode\n" +
  14419. " LEFT JOIN tp_mst_logo l\n" +
  14420. " ON f.logoid = l.logoid\n" +
  14421. " LEFT JOIN TP_PM_Order O\n" +
  14422. " ON f.Fhorderid = O.Orderid\n" +
  14423. " LEFT JOIN tp_mst_goods G\n" +
  14424. " ON g.goodsid = f.goodsid\n" +
  14425. " LEFT JOIN TP_MST_GoodsType gt\n" +
  14426. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  14427. " WHERE f.fhtime IS NOT NULL\n" +
  14428. " AND f.AccountID = :AccountID\n";
  14429. // 交接时间起始
  14430. if (cre.Properties["FHTimeStart"] != null)
  14431. {
  14432. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart \n";
  14433. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, cre.Properties["FHTimeStart"], ParameterDirection.Input));
  14434. }
  14435. // 交接时间结束
  14436. if (cre.Properties["FHTimeEnd"] != null)
  14437. {
  14438. sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd \n";
  14439. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, cre.Properties["FHTimeEnd"], ParameterDirection.Input));
  14440. }
  14441. // 订单号
  14442. if (!string.IsNullOrEmpty(cre.Properties["OrderNo"] as string))
  14443. {
  14444. sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0 \n";
  14445. parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, cre.Properties["OrderNo"], ParameterDirection.Input));
  14446. }
  14447. // 产品类别编码
  14448. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"] as string))
  14449. {
  14450. sqlString = sqlString + " AND instr(gt.GoodsTypeCode,:GoodsTypeCode)=1 \n";
  14451. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  14452. }
  14453. // 产品编码
  14454. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"] as string))
  14455. {
  14456. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  14457. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input));
  14458. }
  14459. // 产品型号
  14460. if (!string.IsNullOrEmpty(cre.Properties["GoodsModel"] as string))
  14461. {
  14462. sqlString = sqlString + " AND instr(g.GoodsModel,:GoodsModel)>0 \n";
  14463. parameters.Add(new OracleParameter(":GoodsModel", OracleDbType.NVarchar2, cre.Properties["GoodsModel"], ParameterDirection.Input));
  14464. }
  14465. // 产品商标ID集
  14466. if (!string.IsNullOrEmpty(cre.Properties["LogoIDS"] as string))
  14467. {
  14468. sqlString += " AND instr(','||:LogoIDS||',', ',' || f.logoid || ',') > 0 \n";
  14469. parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, cre.Properties["LogoIDS"], ParameterDirection.Input));
  14470. }
  14471. // 交接工号
  14472. if (!string.IsNullOrEmpty(cre.Properties["FHUserCode"] as string))
  14473. {
  14474. sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0 \n";
  14475. parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, cre.Properties["FHUserCode"], ParameterDirection.Input));
  14476. }
  14477. // 试验标识
  14478. if (!string.IsNullOrEmpty(cre.Properties["TestMouldFlag"] as string))
  14479. {
  14480. sqlString = sqlString + " AND gdd.TestMouldFlag = :TestMouldFlag ";
  14481. parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, cre.Properties["TestMouldFlag"], ParameterDirection.Input));
  14482. }
  14483. //sqlString += " group by trunc(f.fhtime), g.goodscode order by trunc(f.fhtime), g.goodscode";
  14484. sqlString += " GROUP BY GROUPING SETS((g.goodscode,g.goodsmodel,gdd.materialcode,gdd.materialremark),())";
  14485. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  14486. ServiceResultEntity sre = new ServiceResultEntity();
  14487. if (data == null || data.Rows.Count == 0)
  14488. {
  14489. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14490. return sre;
  14491. }
  14492. sre.Data = new DataSet();
  14493. sre.Data.Tables.Add(data);
  14494. return sre;
  14495. }
  14496. catch (Exception ex)
  14497. {
  14498. throw ex;
  14499. }
  14500. finally
  14501. {
  14502. if (conn != null &&
  14503. conn.ConnState == ConnectionState.Open)
  14504. {
  14505. conn.Close();
  14506. }
  14507. }
  14508. }
  14509. /// <summary>
  14510. /// 取得PDA(产成品交接汇总表)的交接数量
  14511. /// </summary>
  14512. /// <param name="user">登录用户信息</param>
  14513. /// <param name="se">查询条件</param>
  14514. /// <returns>查询结果</returns>
  14515. public static ServiceResultEntity GetRPT0030112NPDAData(DateTime date, string goodscode, SUserInfo user)
  14516. {
  14517. IDBConnection conn = null;
  14518. try
  14519. {
  14520. DateTime dateStart = date;
  14521. DateTime dateEnd = dateStart.AddDays(1);
  14522. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14523. List<OracleParameter> parameters = new List<OracleParameter>();
  14524. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  14525. string sqlString = "SELECT o.orderno, g.goodscode, COUNT(*) goodscount\n" +
  14526. " FROM tp_pm_finishedproduct f\n" +
  14527. " LEFT JOIN TP_PM_Order O\n" +
  14528. " ON f.Fhorderid = O.Orderid\n" +
  14529. " LEFT JOIN tp_mst_goods G\n" +
  14530. " ON g.goodsid = f.goodsid\n" +
  14531. " LEFT JOIN TP_MST_GoodsType gt\n" +
  14532. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  14533. " WHERE f.fhtime IS NOT NULL\n" +
  14534. " AND f.AccountID = :AccountID\n";
  14535. sqlString = sqlString + " AND F.FHTime >= :FHTimeStart \n";
  14536. parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, dateStart, ParameterDirection.Input));
  14537. sqlString = sqlString + " AND F.FHTime < :FHTimeEnd \n";
  14538. parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, dateEnd, ParameterDirection.Input));
  14539. // 产品型号
  14540. if (!string.IsNullOrEmpty(goodscode))
  14541. {
  14542. sqlString = sqlString + " AND instr(g.GoodsCode,:GoodsCode)>0 \n";
  14543. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, goodscode, ParameterDirection.Input));
  14544. }
  14545. sqlString += " group by orderno, g.goodscode order by orderno, g.goodscode";
  14546. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  14547. ServiceResultEntity sre = new ServiceResultEntity();
  14548. if (data == null || data.Rows.Count == 0)
  14549. {
  14550. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14551. return sre;
  14552. }
  14553. sre.Data = new DataSet();
  14554. sre.Data.Tables.Add(data);
  14555. return sre;
  14556. }
  14557. catch (Exception ex)
  14558. {
  14559. throw ex;
  14560. }
  14561. finally
  14562. {
  14563. if (conn != null &&
  14564. conn.ConnState == ConnectionState.Open)
  14565. {
  14566. conn.Close();
  14567. }
  14568. }
  14569. }
  14570. /// <summary>
  14571. /// 获取在产品备份表
  14572. /// </summary>
  14573. /// <param name="cre"></param>
  14574. /// <param name="sUserInfo"></param>
  14575. /// <returns></returns>
  14576. public static ServiceResultEntity GetRPT010404Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  14577. {
  14578. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14579. try
  14580. {
  14581. ServiceResultEntity sre = new ServiceResultEntity();
  14582. string sqlString = @"
  14583. SELECT
  14584. INPB.BACKUPMONTH,
  14585. GDD.BARCODE,
  14586. INPB.GOODSCODE,
  14587. INPB.GOODSNAME,
  14588. WORKER.USERNAME AS USERNAME,
  14589. WORKER.USERCODE AS USERCODE,
  14590. INPB.PRODUCTIONLINECODE,
  14591. INPB.PRODUCTIONLINENAME,
  14592. DECODE( INPB.INSCRAPFLAG, '1', '待审核的报废品', '正常' ) AS INSCRAPFLAG,
  14593. INPB.ISPUBLICBODY,
  14594. DECODE( INPB.ISREFIRE, '6', '1', '0' ) ISREFIRE,
  14595. INPB.ISREWORKFLAG,
  14596. DECODE( INPB.CANMANYTIMES, '1', '能', '不能' ) AS CANMANYTIMES,
  14597. DECODE( INPB.PROCEDUREMODEL, '1', '计件模型', '检验模型' ) AS PROCEDUREMODEL,
  14598. INPB.GROUTINGDATE,
  14599. INPB.GROUTINGLINECODE,
  14600. INPB.GROUTINGLINENAME,
  14601. PRO.PROCEDURENAME AS COMPLETEPROCEDURENAME,
  14602. GMT.GMOULDTYPENAME AS GMOULDTYPENAME,
  14603. INPB.GROUTINGMOULDCODE,
  14604. INPB.SPECIALREPAIRFLAG,
  14605. INPB.GROUTINGUSERCODE,
  14606. GDD.GROUTINGCOUNT,
  14607. GDD.DELIVERTIME,
  14608. INPB.PROCEDURETIME,
  14609. INPB.REMARKS,
  14610. MGL.GOODSLEVELNAME,
  14611. MGLT.GOODSLEVELTYPENAME,
  14612. INPB.BACKUPTIME,
  14613. REPLACE ( ( LOGO.LOGONAME || '[' || LOGO.LOGOCODE || ']' ), '[]', '' ) AS LOGOCODENAME,
  14614. NVL(GDD.OUTLABELCODE,GOODS.MATERIALCODE || ( SELECT A.WORKCODE FROM TP_MST_ACCOUNT A WHERE A.ACCOUNTID = GDD.ACCOUNTID ) || LOGO.TAGCODE || GDD.ONLYCODE ) AS FINISHEDBARCODE,
  14615. STAFF.STAFFNAME
  14616. FROM
  14617. TP_PM_INPRODUCTION_BAKBYMONTH INPB
  14618. INNER JOIN TP_MST_USER WORKER ON WORKER.USERID = INPB.USERID
  14619. INNER JOIN TP_PC_PROCEDURE PRO ON PRO.PROCEDUREID = INPB.PROCEDUREID
  14620. INNER JOIN TP_MST_GMOULDTYPE GMT ON GMT.GMOULDTYPEID = INPB.GMOULDTYPEID
  14621. INNER JOIN TP_SYS_PROCEDUREMODELTYPE PMT ON PMT.PROCEDUREMODELTYPEID = INPB.MODELTYPE
  14622. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = INPB.GROUTINGDAILYDETAILID
  14623. LEFT JOIN TP_MST_GOODSLEVEL MGL ON MGL.GOODSLEVELID = INPB.GOODSLEVELID
  14624. LEFT JOIN TP_SYS_GOODSLEVELTYPE MGLT ON MGLT.GOODSLEVELTYPEID = INPB.GOODSLEVELTYPEID
  14625. LEFT JOIN TP_MST_LOGO LOGO ON INPB.LOGOID = LOGO.LOGOID
  14626. LEFT JOIN TP_MST_GOODS GOODS ON INPB.GOODSID = GOODS.GOODSID
  14627. INNER JOIN TP_PM_PRODUCTIONDATA PD ON INPB.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
  14628. -- AND INPB.FLOWPROCEDUREID = PD.PROCEDUREID
  14629. LEFT JOIN (
  14630. SELECT
  14631. D.CLASSESSETTINGID,
  14632. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  14633. FROM
  14634. (
  14635. SELECT
  14636. CD.CLASSESSETTINGID,
  14637. HR.STAFFNAME
  14638. FROM
  14639. TP_PC_CLASSESDETAIL CD
  14640. LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID
  14641. ) D
  14642. GROUP BY
  14643. D.CLASSESSETTINGID
  14644. ) STAFF ON PD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  14645. WHERE
  14646. INPB.ACCOUNTID = : ACCOUNTID
  14647. AND INPB.BACKUPMONTH = : BACKUPMONTH
  14648. ORDER BY
  14649. PRO.DISPLAYNO,
  14650. INPB.PROCEDURETIME
  14651. ";
  14652. OracleParameter[] oracleParameter = new OracleParameter[]
  14653. {
  14654. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID",sUserInfo.AccountID),
  14655. new Oracle.ManagedDataAccess.Client.OracleParameter(":BackupMonth",cre.Properties["BackupMonth"]),
  14656. };
  14657. oracleConn.Open();
  14658. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  14659. oracleConn.Close();
  14660. sre.Data = result;
  14661. return sre;
  14662. }
  14663. catch (Exception ex)
  14664. {
  14665. if (oracleConn.ConnState == ConnectionState.Open)
  14666. {
  14667. oracleConn.Close();
  14668. }
  14669. throw ex;
  14670. }
  14671. }
  14672. /// <summary>
  14673. /// 产成品单值明细表
  14674. /// </summary>
  14675. /// <param name="cre"></param>
  14676. /// <param name="sUserInfo"></param>
  14677. /// <returns></returns>
  14678. public static ServiceResultEntity GetRPT010405Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  14679. {
  14680. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14681. try
  14682. {
  14683. string sql =
  14684. "SELECT up.id, up.NAME\n" +
  14685. " FROM tp_mst_unitprice up\n" +
  14686. " WHERE up.accountid = :AccountID\n" +
  14687. " AND up.valueflag = '1'\n" +
  14688. " AND (:upname IS NULL OR instr(up.name, :upname) > 0)\n" +
  14689. " ORDER BY up.displayno";
  14690. OracleParameter[] opara = new OracleParameter[]
  14691. {
  14692. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  14693. new Oracle.ManagedDataAccess.Client.OracleParameter(":upname", OracleDbType.NVarchar2,cre.Properties["UPName"], ParameterDirection.Input),
  14694. };
  14695. DataTable upTable = oracleConn.GetSqlResultToDt(sql, opara);
  14696. StringBuilder upNames = new StringBuilder();
  14697. StringBuilder upTotals = new StringBuilder();
  14698. StringBuilder upSUMs = new StringBuilder();
  14699. foreach (DataRow item in upTable.Rows)
  14700. {
  14701. upNames.AppendFormat(", u{0} AS \"{1}\"\n", item["ID"], item["Name"]);
  14702. upTotals.AppendFormat(",(u{0} * nvl(fpcount, 0)) AS \"总【{1}】\"\n", item["ID"], item["Name"]);
  14703. upSUMs.AppendFormat(",SUM(decode(up.upid, {0}, up.unitprice, 0)) u{0}\n", item["ID"]);
  14704. }
  14705. ServiceResultEntity sre = new ServiceResultEntity();
  14706. string sqlString = "SELECT gt2.goodstypename GoodsTypeName2\n" +
  14707. " ,g.goodscode\n" +
  14708. " ,g.materialcode\n" +
  14709. " ,lg.logoname\n" +
  14710. " ,nvl(fpcount, 0) fpcount\n" +
  14711. // " ,u1 AS \"单值1\"\n" +
  14712. //" ,u2 AS \"单值2\"\n" +
  14713. upNames +
  14714. //" ,(u1 * nvl(fpcount, 0)) AS \"总【1】\"\n" +
  14715. //" ,(u2 * nvl(fpcount, 0)) AS \"总【2】\"\n" +
  14716. upTotals +
  14717. " FROM (SELECT up.goodsid\n" +
  14718. " ,up.logoid\n" +
  14719. //" ,SUM(decode(up.upid, 1, up.unitprice, 0)) u1\n" +
  14720. //" ,SUM(decode(up.upid, 2, up.unitprice, 0)) u2\n" +
  14721. upSUMs +
  14722. " FROM TP_MST_UnitPriceGoods up\n" +
  14723. " WHERE up.accountid = :AccountID\n" +
  14724. " GROUP BY up.goodsid, up.logoid) upg\n" +
  14725. " LEFT JOIN (SELECT fp.goodsid, fp.logoid, COUNT(*) fpcount\n" +
  14726. " FROM tp_pm_finishedproduct fp\n" +
  14727. " WHERE fp.accountid = :AccountID\n" +
  14728. " AND fp.fhtime BETWEEN :DateBegin AND :DateEnd\n" +
  14729. " AND (:GoodsCode IS NULL OR\n" +
  14730. " instr(fp.goodscode, :GoodsCode) > 0)\n" +
  14731. " GROUP BY fp.goodsid, fp.logoid) fpp\n" +
  14732. " ON fpp.goodsid = upg.goodsid\n" +
  14733. " AND fpp.logoid = upg.logoid\n" +
  14734. " INNER JOIN tp_mst_logo lg\n" +
  14735. " ON lg.logoid = upg.logoid\n" +
  14736. " INNER JOIN tp_mst_goods g\n" +
  14737. " ON g.goodsid = upg.goodsid\n" +
  14738. " INNER JOIN tp_mst_goodstype gt\n" +
  14739. " ON gt.goodstypeid = g.goodstypeid\n" +
  14740. " INNER JOIN tp_mst_goodstype gt2\n" +
  14741. " ON gt2.accountid = :AccountID\n" +
  14742. " AND length(gt2.goodstypecode) = 6\n" +
  14743. " AND instr(gt.goodstypecode, gt2.goodstypecode) = 1\n" +
  14744. " WHERE (:GoodsTypeCode IS NULL OR\n" +
  14745. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)\n" +
  14746. " AND (:GoodsCode IS NULL OR instr(g.goodscode, :GoodsCode) > 0)\n" +
  14747. " AND (:logoname IS NULL OR instr(lg.logoname, :logoname) > 0)\n" +
  14748. " ORDER BY g.goodscode, lg.displayno";
  14749. OracleParameter[] oracleParameter = new OracleParameter[]
  14750. {
  14751. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  14752. new Oracle.ManagedDataAccess.Client.OracleParameter(":DateBegin", OracleDbType.Date,cre.Properties["DateBegin"], ParameterDirection.Input),
  14753. new Oracle.ManagedDataAccess.Client.OracleParameter(":DateEnd", OracleDbType.Date,cre.Properties["DateEnd"], ParameterDirection.Input),
  14754. new Oracle.ManagedDataAccess.Client.OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2,cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  14755. new Oracle.ManagedDataAccess.Client.OracleParameter(":GoodsCode", OracleDbType.NVarchar2,cre.Properties["GoodsCode"], ParameterDirection.Input),
  14756. new Oracle.ManagedDataAccess.Client.OracleParameter(":logoname", OracleDbType.NVarchar2,cre.Properties["LogoName"], ParameterDirection.Input),
  14757. };
  14758. oracleConn.Open();
  14759. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  14760. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  14761. {
  14762. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14763. }
  14764. sre.Data = result;
  14765. oracleConn.Close();
  14766. return sre;
  14767. }
  14768. catch (Exception ex)
  14769. {
  14770. if (oracleConn.ConnState == ConnectionState.Open)
  14771. {
  14772. oracleConn.Close();
  14773. }
  14774. throw ex;
  14775. }
  14776. }
  14777. /// <summary>
  14778. /// 产成品单值明细表-单值名管理
  14779. /// </summary>
  14780. /// <param name="cre"></param>
  14781. /// <param name="sUserInfo"></param>
  14782. /// <returns></returns>
  14783. public static ServiceResultEntity GetRPT01040501Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  14784. {
  14785. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14786. try
  14787. {
  14788. ServiceResultEntity sre = new ServiceResultEntity();
  14789. string sqlString = "SELECT t.id, t.name, t.displayno, t.valueflag\n" +
  14790. " FROM TP_MST_UnitPrice t\n" +
  14791. " WHERE t.accountid = :accountid\n" +
  14792. " ORDER BY t.id";
  14793. OracleParameter[] oracleParameter = new OracleParameter[]
  14794. {
  14795. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  14796. };
  14797. oracleConn.Open();
  14798. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  14799. oracleConn.Close();
  14800. return sre;
  14801. }
  14802. catch (Exception ex)
  14803. {
  14804. if (oracleConn.ConnState == ConnectionState.Open)
  14805. {
  14806. oracleConn.Close();
  14807. }
  14808. throw ex;
  14809. }
  14810. }
  14811. /// <summary>
  14812. /// 产成品单值明细表-单值名管理
  14813. /// </summary>
  14814. /// <param name="cre"></param>
  14815. /// <param name="sUserInfo"></param>
  14816. /// <returns></returns>
  14817. public static ServiceResultEntity SetRPT01040501Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  14818. {
  14819. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14820. try
  14821. {
  14822. ServiceResultEntity sre = new ServiceResultEntity();
  14823. // 检验参数的有效性
  14824. if (cre.Data == null && cre.Data.Tables.Count == 0 ||
  14825. cre.Data.Tables[0].Rows.Count < Constant.INT_IS_ZERO)
  14826. {
  14827. return sre;
  14828. }
  14829. oracleTrConn.Connect();
  14830. foreach (DataRow dataRow in cre.Data.Tables[0].Rows)
  14831. {
  14832. // 新建
  14833. if (dataRow.RowState == DataRowState.Added)
  14834. {
  14835. #region 新增
  14836. string sqlString = "INSERT INTO TP_MST_UNITPRICE\n" +
  14837. " (NAME, displayno, accountid, valueflag, createuserid, updateuserid)\n" +
  14838. "VALUES\n" +
  14839. " (:NAME, nvl(:DisplayNo,0), :AccountID, :ValueFlag, :UserID, :UserID)";
  14840. OracleParameter[] oracleParameter = new OracleParameter[]
  14841. {
  14842. new OracleParameter(":NAME", OracleDbType.NVarchar2, dataRow["Name"],ParameterDirection.Input),
  14843. new OracleParameter(":DisplayNo",OracleDbType.Int32, dataRow["DisplayNo"], ParameterDirection.Input),
  14844. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID, ParameterDirection.Input),
  14845. new OracleParameter(":ValueFlag",OracleDbType.NVarchar2, dataRow["ValueFlag"],ParameterDirection.Input),
  14846. new OracleParameter(":UserID",OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  14847. };
  14848. oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  14849. #endregion
  14850. }
  14851. else if (dataRow.RowState == DataRowState.Modified)
  14852. {
  14853. #region 更新
  14854. string sqlUpdateString = "UPDATE TP_MST_UNITPRICE SET "
  14855. + " Name = :Name,"
  14856. + " DisplayNo = :DisplayNo,"
  14857. + " ValueFlag = :ValueFlag,"
  14858. + " UpdateUserID = :UserID"
  14859. + " WHERE ID = :ID";
  14860. OracleParameter[] oracleParameter = new OracleParameter[]
  14861. {
  14862. new OracleParameter(":ID",OracleDbType.Int32,dataRow["ID"], ParameterDirection.Input),
  14863. new OracleParameter(":Name", OracleDbType.NVarchar2, dataRow["Name"],ParameterDirection.Input),
  14864. new OracleParameter(":DisplayNo",OracleDbType.Int32, dataRow["DisplayNo"], ParameterDirection.Input),
  14865. new OracleParameter(":ValueFlag",OracleDbType.NVarchar2, dataRow["ValueFlag"],ParameterDirection.Input),
  14866. new OracleParameter(":UserID",OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  14867. };
  14868. oracleTrConn.ExecuteNonQuery(sqlUpdateString, oracleParameter);
  14869. #endregion
  14870. }
  14871. else if (dataRow.RowState == DataRowState.Deleted)
  14872. {
  14873. #region 删除
  14874. string sqlDeleteString = "DELETE TP_MST_UNITPRICE WHERE ID = :ID";
  14875. OracleParameter[] oracleParameter = new OracleParameter[]
  14876. {
  14877. new OracleParameter(":ID",OracleDbType.Int32,dataRow["ID"], ParameterDirection.Input),
  14878. };
  14879. oracleTrConn.ExecuteNonQuery(sqlDeleteString, oracleParameter);
  14880. #endregion
  14881. }
  14882. }
  14883. oracleTrConn.Commit();
  14884. oracleTrConn.Disconnect();
  14885. return sre;
  14886. }
  14887. catch (Exception ex)
  14888. {
  14889. if (oracleTrConn.ConnState == ConnectionState.Open)
  14890. {
  14891. oracleTrConn.Rollback();
  14892. oracleTrConn.Disconnect();
  14893. }
  14894. throw ex;
  14895. }
  14896. finally
  14897. {
  14898. if (oracleTrConn.ConnState == ConnectionState.Open)
  14899. {
  14900. oracleTrConn.Disconnect();
  14901. }
  14902. }
  14903. }
  14904. /// <summary>
  14905. /// 获取模具跟踪表
  14906. /// </summary>
  14907. /// <param name="cre"></param>
  14908. /// <param name="sUserInfo"></param>
  14909. /// <returns></returns>
  14910. public static ServiceResultEntity GetRPT020105Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  14911. {
  14912. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  14913. try
  14914. {
  14915. ServiceResultEntity sre = new ServiceResultEntity();
  14916. OracleParameter[] oracleParameter = new OracleParameter[]
  14917. {
  14918. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  14919. new OracleParameter("in_MouldBarcode",OracleDbType.Varchar2, cre.Properties["MouldBarcode"], ParameterDirection.Input),
  14920. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  14921. new OracleParameter("out_Tracking",OracleDbType.RefCursor, null, ParameterDirection.Output),
  14922. };
  14923. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_GetMouldTracking", oracleParameter);
  14924. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  14925. {
  14926. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14927. }
  14928. sre.Data = result;
  14929. return sre;
  14930. }
  14931. catch (Exception ex)
  14932. {
  14933. if (oracleConn.ConnState == ConnectionState.Open)
  14934. {
  14935. oracleConn.Close();
  14936. }
  14937. throw ex;
  14938. }
  14939. }
  14940. /// <summary>
  14941. /// 获取模具收发存汇总表
  14942. /// </summary>
  14943. /// <param name="cre"></param>
  14944. /// <param name="sUserInfo"></param>
  14945. /// <returns></returns>
  14946. public static ServiceResultEntity GetRPT030113Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  14947. {
  14948. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14949. try
  14950. {
  14951. ServiceResultEntity sre = new ServiceResultEntity();
  14952. OracleParameter[] oracleParameter = new OracleParameter[]
  14953. {
  14954. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  14955. new OracleParameter("in_YYYYMM",OracleDbType.Varchar2, cre.Properties["YYYYMM"], ParameterDirection.Input),
  14956. new OracleParameter("in_DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  14957. new OracleParameter("in_DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  14958. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  14959. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  14960. new OracleParameter("in_GoodsIDs",OracleDbType.Varchar2, cre.Properties["GoodsIDs"], ParameterDirection.Input),
  14961. new OracleParameter("in_GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
  14962. new OracleParameter("in_Type",OracleDbType.Int32, cre.Properties["Type"], ParameterDirection.Input),
  14963. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  14964. };
  14965. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_GetMould_SUM", oracleParameter);
  14966. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  14967. {
  14968. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  14969. }
  14970. sre.Data = result;
  14971. oracleConn.Commit();
  14972. return sre;
  14973. }
  14974. catch (Exception ex)
  14975. {
  14976. if (oracleConn.ConnState == ConnectionState.Open)
  14977. {
  14978. oracleConn.Disconnect();
  14979. }
  14980. throw ex;
  14981. }
  14982. }
  14983. /// <summary>
  14984. /// 获取废弃产品汇总表
  14985. /// </summary>
  14986. /// <param name="cre"></param>
  14987. /// <param name="sUserInfo"></param>
  14988. /// <returns></returns>
  14989. public static ServiceResultEntity GetRPT030114Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  14990. {
  14991. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14992. try
  14993. {
  14994. ServiceResultEntity sre = new ServiceResultEntity();
  14995. OracleParameter[] oracleParameter = new OracleParameter[]
  14996. {
  14997. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  14998. new OracleParameter("in_DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  14999. new OracleParameter("in_DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15000. new OracleParameter("in_scrapTypes",OracleDbType.Varchar2, cre.Properties["ScrapTypes"], ParameterDirection.Input),
  15001. new OracleParameter("in_ProcedureIDs",OracleDbType.Varchar2, cre.Properties["ProcedureIDs"], ParameterDirection.Input),
  15002. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15003. //new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15004. new OracleParameter("in_GoodsIDs",OracleDbType.Varchar2, cre.Properties["GoodsIDs"], ParameterDirection.Input),
  15005. new OracleParameter("in_GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
  15006. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15007. };
  15008. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_scrap_sum", oracleParameter);
  15009. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15010. {
  15011. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15012. }
  15013. sre.Data = result;
  15014. oracleConn.Commit();
  15015. return sre;
  15016. }
  15017. catch (Exception ex)
  15018. {
  15019. if (oracleConn.ConnState == ConnectionState.Open)
  15020. {
  15021. oracleConn.Disconnect();
  15022. }
  15023. throw ex;
  15024. }
  15025. }
  15026. /// <summary>
  15027. /// 获取废品损失汇总表
  15028. /// </summary>
  15029. /// <param name="cre"></param>
  15030. /// <param name="sUserInfo"></param>
  15031. /// <returns></returns>
  15032. public static ServiceResultEntity GetRPT030115Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15033. {
  15034. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15035. try
  15036. {
  15037. ServiceResultEntity sre = new ServiceResultEntity();
  15038. OracleParameter[] oracleParameter = new OracleParameter[]
  15039. {
  15040. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15041. new OracleParameter("in_ptid",OracleDbType.Int32, cre.Properties["PTID"], ParameterDirection.Input),
  15042. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15043. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15044. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15045. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15046. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15047. };
  15048. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_TECDEP_SCRAP_SUM", oracleParameter);
  15049. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15050. {
  15051. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15052. }
  15053. sre.Data = result;
  15054. oracleConn.Commit();
  15055. return sre;
  15056. }
  15057. catch (Exception ex)
  15058. {
  15059. if (oracleConn.ConnState == ConnectionState.Open)
  15060. {
  15061. oracleConn.Disconnect();
  15062. }
  15063. throw ex;
  15064. }
  15065. }
  15066. /// <summary>
  15067. /// 获取废品损失汇总-明细表
  15068. /// </summary>
  15069. /// <param name="cre"></param>
  15070. /// <param name="sUserInfo"></param>
  15071. /// <returns></returns>
  15072. public static ServiceResultEntity GetRPT030115DData(ClientRequestEntity cre, SUserInfo sUserInfo)
  15073. {
  15074. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15075. try
  15076. {
  15077. ServiceResultEntity sre = new ServiceResultEntity();
  15078. OracleParameter[] oracleParameter = new OracleParameter[]
  15079. {
  15080. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15081. new OracleParameter("in_ptid",OracleDbType.Int32, cre.Properties["PTID"], ParameterDirection.Input),
  15082. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15083. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15084. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15085. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15086. new OracleParameter("in_GoodsID",OracleDbType.Varchar2, cre.Properties["GoodsID"], ParameterDirection.Input),
  15087. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15088. };
  15089. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_TECDEP_SCRAP_SUMDETAIL", oracleParameter);
  15090. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15091. {
  15092. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15093. }
  15094. sre.Data = result;
  15095. oracleConn.Commit();
  15096. return sre;
  15097. }
  15098. catch (Exception ex)
  15099. {
  15100. if (oracleConn.ConnState == ConnectionState.Open)
  15101. {
  15102. oracleConn.Disconnect();
  15103. }
  15104. throw ex;
  15105. }
  15106. }
  15107. /// <summary>
  15108. /// 获取废品损失汇总表-半成品损失汇总表
  15109. /// </summary>
  15110. /// <param name="cre"></param>
  15111. /// <param name="sUserInfo"></param>
  15112. /// <returns></returns>
  15113. public static ServiceResultEntity GetRPT030115SData(ClientRequestEntity cre, SUserInfo sUserInfo)
  15114. {
  15115. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15116. try
  15117. {
  15118. ServiceResultEntity sre = new ServiceResultEntity();
  15119. OracleParameter[] oracleParameter = new OracleParameter[]
  15120. {
  15121. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15122. new OracleParameter("in_ptid",OracleDbType.Int32, cre.Properties["PTID"], ParameterDirection.Input),
  15123. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15124. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15125. new OracleParameter("in_GoodsTypeCode",OracleDbType.Varchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15126. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15127. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  15128. };
  15129. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_TECDEP_SCRAP_SUM_semi", oracleParameter);
  15130. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15131. {
  15132. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15133. }
  15134. StringBuilder cols = new StringBuilder();
  15135. StringBuilder sumCols = new StringBuilder();
  15136. foreach (DataRow item in result.Tables[0].Rows)
  15137. {
  15138. cols.AppendFormat(", d{0} AS \"{1}\"\n", item["id"], item["name"]);
  15139. sumCols.AppendFormat(", SUM(decode(td1.id, {0}, g.d, 0)) d{0}\n", item["id"]);
  15140. }
  15141. string sqlString = "SELECT gid\n" +
  15142. " ,decode(gid, 3, '合计', 1, '小计[' || gt2name || ']', gt2name) gt2name\n" +
  15143. " ,decode(gid, 0, td2name, '--') td2name\n" +
  15144. " ,gg.gc\n" +
  15145. " ,case when gg.gc is not null and gg.gc > 0 then round(tt.d / gg.gc,4) else null end gcc\n" +
  15146. " ,d\n" +
  15147. " ,c\n" +
  15148. " ,d-c g\n" +
  15149. cols +
  15150. " FROM (SELECT grouping_id(t.tecdepid, td2.id) gid\n" +
  15151. " ,nvl(t.tecdepid, -1) gt2id\n" +
  15152. " ,t.tecdepname gt2name\n" +
  15153. " ,td2.name td2name\n" +
  15154. " ,td2.displayno td2displayno\n" +
  15155. " ,SUM(g.d) d\n" +
  15156. " ,SUM(g.c) c\n" +
  15157. sumCols +
  15158. " FROM TMP_RPT_TECDEP_G g\n" +
  15159. " INNER JOIN TMP_RPT_TECDEP_T t\n" +
  15160. " ON g.goodsid = t.goodsid\n" +
  15161. " INNER JOIN tmp_rpt_tecdep_s s1\n" +
  15162. " ON s1.procedureid = g.pid\n" +
  15163. " INNER JOIN tp_mst_tecdep td1\n" +
  15164. " ON td1.id = s1.intecdepid\n" +
  15165. " LEFT JOIN tmp_rpt_tecdep_s s2\n" +
  15166. " ON s2.procedureid = g.f\n" +
  15167. " LEFT JOIN tp_mst_tecdep td2\n" +
  15168. " ON td2.id = s2.intecdepid\n" +
  15169. " WHERE td1.technologyflag = '1' -- 半成品工艺\n" +
  15170. " AND (td2.id IS NULL OR td2.technologyflag = '1')\n" +
  15171. " GROUP BY GROUPING SETS((t.tecdepid, t.tecdepname, td2.id, td2.name, td2.displayno),(t.tecdepid, t.tecdepname),())\n" +
  15172. " ORDER BY t.tecdepname, td2.displayno) tt\n" +
  15173. " LEFT JOIN (SELECT --grouping_id(gt2.goodstypeid) gid,\n" +
  15174. " nvl(t.tecdepid, -1) gt2id, COUNT(*) gc\n" +
  15175. " FROM tp_pm_groutingdailydetail gdd\n" +
  15176. " INNER JOIN TMP_RPT_TECDEP_T t\n" +
  15177. " ON gdd.goodsid = t.goodsid\n" +
  15178. " WHERE gdd.accountid = :in_accountid\n" +
  15179. " AND gdd.valueflag = '1'\n" +
  15180. " AND gdd.groutingflag = '1'\n" +
  15181. " AND gdd.groutingdate BETWEEN :in_datetimebegin AND\n" +
  15182. " :in_datetimeend\n" +
  15183. " GROUP BY GROUPING SETS((t.tecdepid),())) gg\n" +
  15184. " ON gg.gt2id = tt.gt2id\n" +
  15185. " ORDER BY tt.gt2name, tt.gid, tt.td2displayno";
  15186. oracleParameter = new OracleParameter[]
  15187. {
  15188. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15189. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15190. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15191. };
  15192. result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15193. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15194. {
  15195. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15196. }
  15197. sre.Data = result;
  15198. oracleConn.Commit();
  15199. return sre;
  15200. }
  15201. catch (Exception ex)
  15202. {
  15203. if (oracleConn.ConnState == ConnectionState.Open)
  15204. {
  15205. oracleConn.Disconnect();
  15206. }
  15207. throw ex;
  15208. }
  15209. }
  15210. /// <summary>
  15211. /// 获取成型存坯汇总表-注浆产品存坯汇总表
  15212. /// </summary>
  15213. /// <param name="cre"></param>
  15214. /// <param name="sUserInfo"></param>
  15215. /// <returns></returns>
  15216. public static ServiceResultEntity GetRPT030116GoodsData(ClientRequestEntity cre, SUserInfo sUserInfo)
  15217. {
  15218. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15219. try
  15220. {
  15221. ServiceResultEntity sre = new ServiceResultEntity();
  15222. /*
  15223. string sqlString =
  15224. "SELECT gdrd.goodsid\n" +
  15225. " ,gdrd.goodscode\n" +
  15226. //" ,gdrd.groutinglineid\n" +
  15227. //" ,gdrd.groutinglinecode\n" +
  15228. //" ,gdrd.userid\n" +
  15229. //" ,gdrd.usercode\n" +
  15230. " ,gdrd.gddc rdcount -- 存坯数\n" +
  15231. " ,rdd.gldcount -- 模具数\n" +
  15232. " , CASE\n" +
  15233. " WHEN rdd.gldcount IS NOT NULL AND rdd.gldcount > 0 THEN\n" +
  15234. " round(gdrd.gddc / rdd.gldcount, 2)\n" +
  15235. " ELSE\n" +
  15236. " NULL\n" +
  15237. " END rddays -- 存坯天数\n" +
  15238. " ,gdrd.reserveddays -- 应存天数\n" +
  15239. " ,(gdrd.gddc - gdrd.reserveddays * rdd.gldcount) ProfitNum --盈亏坯数\n" +
  15240. " FROM (SELECT gdd.goodsid\n" +
  15241. " ,gdd.goodscode\n" +
  15242. //" ,gdd.groutinglineid\n" +
  15243. //" ,gdd.groutinglinecode\n" +
  15244. //" ,gdd.userid\n" +
  15245. //" ,gdd.usercode\n" +
  15246. " ,g.reserveddays\n" +
  15247. " ,COUNT(*) gddc\n" +
  15248. " FROM tp_pm_groutingdailydetail gdd\n" +
  15249. " INNER JOIN tp_mst_goods g\n" +
  15250. " ON g.goodsid = gdd.goodsid\n" +
  15251. " INNER JOIN tp_mst_goodstype gt\n" +
  15252. " ON g.goodstypeid = gt.goodstypeid\n" +
  15253. " WHERE gdd.accountid = :accountid\n" +
  15254. " AND gdd.valueflag = '1'\n" +
  15255. " AND gdd.groutingflag = '1'\n" +
  15256. " AND gdd.barcode IS NOT NULL\n" +
  15257. " AND gdd.scrapflag = '0'\n" +
  15258. " AND gdd.deliverflag = '0'\n" +
  15259. " AND (:LineCode IS NULL OR\n" +
  15260. " instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  15261. " AND (:UserCode IS NULL OR instr(gdd.UserCode, :UserCode) > 0)\n" +
  15262. " AND (:GoodsCode IS NULL OR instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  15263. " AND (:GoodsTypeCode IS NULL OR\n" +
  15264. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  15265. " AND (:DateBegin IS NULL OR\n" +
  15266. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)\n" +
  15267. " GROUP BY gdd.goodsid\n" +
  15268. " ,gdd.goodscode\n" +
  15269. //" ,gdd.groutinglineid\n" +
  15270. //" ,gdd.groutinglinecode\n" +
  15271. //" ,gdd.userid\n" +
  15272. //" ,gdd.usercode\n" +
  15273. " ,g.reserveddays) gdrd\n" +
  15274. " LEFT JOIN (SELECT gld.goodsid\n" +
  15275. //" ,gld.groutinglineid\n" +
  15276. " ,COUNT(*) gldcount\n" +
  15277. " FROM tp_pc_groutinglinedetail gld\n" +
  15278. " INNER JOIN tp_pc_groutingline gl\n" +
  15279. " ON gl.groutinglineid = gld.groutinglineid\n" +
  15280. " WHERE gld.valueflag = '1'\n" +
  15281. " AND gld.gmouldstatus = 1\n" +
  15282. " AND gl.accountid = :accountid\n" +
  15283. " AND gl.valueflag = '1'\n" +
  15284. " AND gl.gmouldstatus = 1\n" +
  15285. " GROUP BY gld.goodsid\n" +
  15286. //" ,gld.groutinglineid\n" +
  15287. " ) rdd\n" +
  15288. " ON rdd.goodsid = gdrd.goodsid\n" +
  15289. //" AND rdd.groutinglineid = gdrd.groutinglineid\n" +
  15290. " ORDER BY gdrd.goodscode\n" +
  15291. //" ,gdrd.groutinglinecode, gdrd.usercode"
  15292. "";
  15293. */
  15294. string sqlString =
  15295. "SELECT grouping_id(t.goodstypecode2, t.goodsid) gid\n" +
  15296. " ,t.goodstypecode2\n" +
  15297. " ,decode(grouping_id(t.goodstypecode2, t.goodsid),\n" +
  15298. " 3,\n" +
  15299. " '总计',\n" +
  15300. " 1,\n" +
  15301. " '合计[' || t.goodstypename2 || ']',\n" +
  15302. " t.goodstypename2) goodstypename2\n" +
  15303. " ,t.goodstypename\n" +
  15304. " ,t.goodsid\n" +
  15305. " ,t.goodscode\n" +
  15306. //" ,t.groutinglineid\n" +
  15307. //" ,t.groutinglinecode\n" +
  15308. //" ,t.userid\n" +
  15309. //" ,t.usercode\n" +
  15310. " ,SUM(t.rdcount) rdcount\n" +
  15311. " ,t.gldcount -- 模具数\n" +
  15312. " ,t.rddays -- 存坯天数\n" +
  15313. " ,t.reserveddays -- 应存天数\n" +
  15314. " ,SUM(t.ProfitNum) ProfitNum\n" +
  15315. " FROM (SELECT gt2.goodstypecode goodstypecode2\n" +
  15316. " ,gt2.goodstypename goodstypename2\n" +
  15317. " ,gdrd.goodsid\n" +
  15318. " ,gdrd.goodscode\n" +
  15319. " ,gdrd.goodstypename\n" +
  15320. //" ,gdrd.groutinglineid\n" +
  15321. //" ,gdrd.groutinglinecode\n" +
  15322. //" ,gdrd.userid\n" +
  15323. //" ,gdrd.usercode\n" +
  15324. " ,gdrd.gddc rdcount -- 存坯数\n" +
  15325. " ,rdd.gldcount -- 模具数\n" +
  15326. " , CASE\n" +
  15327. " WHEN rdd.gldcount IS NOT NULL AND rdd.gldcount > 0 THEN\n" +
  15328. " round(gdrd.gddc / rdd.gldcount, 2)\n" +
  15329. " ELSE\n" +
  15330. " NULL\n" +
  15331. " END rddays -- 存坯天数\n" +
  15332. " ,gdrd.reserveddays -- 应存天数\n" +
  15333. // 盈亏坯数 = 存坯数-应存天数*模具数 存坯天数 = 存坯数/模具数
  15334. " ,(gdrd.gddc - gdrd.reserveddays * rdd.gldcount) ProfitNum --盈亏坯数\n" +
  15335. " FROM (SELECT gdd.goodsid\n" +
  15336. " ,gdd.goodscode\n" +
  15337. //" ,gdd.groutinglineid\n" +
  15338. //" ,gdd.groutinglinecode\n" +
  15339. //" ,gdd.userid\n" +
  15340. //" ,gdd.usercode\n" +
  15341. " ,g.reserveddays\n" +
  15342. " ,substr(gt.goodstypecode, 1, 6) goodstypecode2\n" +
  15343. " ,gt.goodstypename\n" +
  15344. " ,COUNT(*) gddc\n" +
  15345. " FROM tp_pm_groutingdailydetail gdd\n" +
  15346. " INNER JOIN tp_mst_goods g\n" +
  15347. " ON g.goodsid = gdd.goodsid\n" +
  15348. " INNER JOIN tp_mst_goodstype gt\n" +
  15349. " ON g.goodstypeid = gt.goodstypeid\n" +
  15350. " left JOIN tp_pm_inproduction inp\n" +
  15351. " ON inp.barcode = gdd.barcode\n" +
  15352. //20210113
  15353. " left JOIN tp_pc_procedure p\n" +
  15354. " ON inp.procedureid = p.procedureid\n" +
  15355. //end
  15356. " WHERE gdd.accountid = :accountid\n" +
  15357. " AND gdd.valueflag = '1'\n" +
  15358. " AND gdd.groutingflag = '1'\n" +
  15359. " --AND gdd.barcode IS NOT NULL\n" +
  15360. " AND gdd.scrapflag = '0'\n" +
  15361. " AND gdd.deliverflag = '0'\n" +
  15362. " AND (gdd.beginningflag='0')\n" +
  15363. " AND (:LineCode IS NULL OR\n" +
  15364. " instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  15365. " AND (:UserCode IS NULL OR\n" +
  15366. " instr(gdd.UserCode, :UserCode) > 0)\n" +
  15367. " AND (:GoodsCode IS NULL OR\n" +
  15368. " instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  15369. " AND (:GoodsTypeCode IS NULL OR\n" +
  15370. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  15371. " AND (:DateBegin IS NULL OR\n" +
  15372. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)\n" +
  15373. //20210113
  15374. " AND (P.procedurename IN('3#阴干区(入)','3#预干区(入)','3#烘干区(入)','3#烘干区(出)') or p.procedurename IS NULL)" +
  15375. //end
  15376. " GROUP BY gt.goodstypecode,gt.goodstypename\n" +
  15377. " ,gdd.goodsid\n" +
  15378. " ,gdd.goodscode\n" +
  15379. //" ,gdd.groutinglineid\n" +
  15380. //" ,gdd.groutinglinecode\n" +
  15381. //" ,gdd.userid\n" +
  15382. //" ,gdd.usercode\n" +
  15383. " ,g.reserveddays) gdrd\n" +
  15384. " LEFT JOIN (SELECT gld.goodsid\n" +
  15385. //" ,gld.groutinglineid\n" +
  15386. " ,COUNT(*) gldcount\n" +
  15387. " FROM tp_pc_groutinglinedetail gld\n" +
  15388. " INNER JOIN tp_pc_groutingline gl\n" +
  15389. " ON gl.groutinglineid = gld.groutinglineid\n" +
  15390. " WHERE gld.valueflag = '1'\n" +
  15391. " AND gld.gmouldstatus = 1\n" +
  15392. " AND gl.accountid = :accountid\n" +
  15393. " AND gl.valueflag = '1'\n" +
  15394. " AND gl.gmouldstatus = 1\n" +
  15395. " GROUP BY gld.goodsid\n" +
  15396. //" , gld.groutinglineid" +
  15397. " ) rdd\n" +
  15398. " ON rdd.goodsid = gdrd.goodsid\n" +
  15399. //" AND rdd.groutinglineid = gdrd.groutinglineid\n" +
  15400. " INNER JOIN tp_mst_goodstype gt2\n" +
  15401. " ON gt2.accountid = :accountid\n" +
  15402. " AND gt2.goodstypecode = gdrd.goodstypecode2\n" +
  15403. " ORDER BY gt2.goodstypecode\n" +
  15404. " ,gdrd.goodscode\n" +
  15405. //" ,gdrd.groutinglinecode\n" +
  15406. //" ,gdrd.usercode" +
  15407. " ) t\n" +
  15408. " GROUP BY GROUPING SETS((t.goodstypecode2, t.goodstypename2,t.goodstypename, t.goodsid, t.goodscode, t.gldcount, t.rddays, t.reserveddays),(t.goodstypecode2, t.goodstypename2),())";
  15409. OracleParameter[] oracleParameter = new OracleParameter[]
  15410. {
  15411. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15412. new OracleParameter(":DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15413. new OracleParameter(":DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15414. new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15415. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15416. new OracleParameter(":LineCode",OracleDbType.NVarchar2, cre.Properties["LineCode"], ParameterDirection.Input),
  15417. new OracleParameter(":UserCode",OracleDbType.NVarchar2, cre.Properties["UserCode"], ParameterDirection.Input),
  15418. };
  15419. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15420. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15421. {
  15422. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15423. }
  15424. sre.Data = result;
  15425. return sre;
  15426. }
  15427. catch (Exception ex)
  15428. {
  15429. if (oracleConn.ConnState == ConnectionState.Open)
  15430. {
  15431. oracleConn.Close();
  15432. }
  15433. throw ex;
  15434. }
  15435. }
  15436. /// <summary>
  15437. /// 获取成型存坯汇总表-成型工号存坯汇总表
  15438. /// </summary>
  15439. /// <param name="cre"></param>
  15440. /// <param name="sUserInfo"></param>
  15441. /// <returns></returns>
  15442. public static ServiceResultEntity GetRPT030116UserData(ClientRequestEntity cre, SUserInfo sUserInfo)
  15443. {
  15444. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15445. try
  15446. {
  15447. ServiceResultEntity sre = new ServiceResultEntity();
  15448. /*
  15449. string sqlString =
  15450. "SELECT gdrd.goodsid\n" +
  15451. " ,gdrd.goodscode\n" +
  15452. " ,gdrd.groutinglineid\n" +
  15453. " ,gdrd.groutinglinecode\n" +
  15454. " ,gdrd.userid\n" +
  15455. " ,gdrd.usercode\n" +
  15456. " ,gdrd.gddc rdcount -- 存坯数\n" +
  15457. " ,rdd.gldcount -- 模具数\n" +
  15458. " , CASE\n" +
  15459. " WHEN rdd.gldcount IS NOT NULL AND rdd.gldcount > 0 THEN\n" +
  15460. " round(gdrd.gddc / rdd.gldcount, 2)\n" +
  15461. " ELSE\n" +
  15462. " NULL\n" +
  15463. " END rddays -- 存坯天数\n" +
  15464. " ,gdrd.reserveddays -- 应存天数\n" +
  15465. " ,(gdrd.gddc - gdrd.reserveddays * rdd.gldcount) ProfitNum --盈亏坯数\n" +
  15466. " FROM (SELECT gdd.goodsid\n" +
  15467. " ,gdd.goodscode\n" +
  15468. " ,gdd.groutinglineid\n" +
  15469. " ,gdd.groutinglinecode\n" +
  15470. " ,gdd.userid\n" +
  15471. " ,gdd.usercode\n" +
  15472. " ,g.reserveddays\n" +
  15473. " ,COUNT(*) gddc\n" +
  15474. " FROM tp_pm_groutingdailydetail gdd\n" +
  15475. " INNER JOIN tp_mst_goods g\n" +
  15476. " ON g.goodsid = gdd.goodsid\n" +
  15477. " INNER JOIN tp_mst_goodstype gt\n" +
  15478. " ON g.goodstypeid = gt.goodstypeid\n" +
  15479. " WHERE gdd.accountid = :accountid\n" +
  15480. " AND gdd.valueflag = '1'\n" +
  15481. " AND gdd.groutingflag = '1'\n" +
  15482. " AND gdd.barcode IS NOT NULL\n" +
  15483. " AND gdd.scrapflag = '0'\n" +
  15484. " AND gdd.deliverflag = '0'\n" +
  15485. " AND (:LineCode IS NULL OR\n" +
  15486. " instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  15487. " AND (:UserCode IS NULL OR instr(gdd.UserCode, :UserCode) > 0)\n" +
  15488. " AND (:GoodsCode IS NULL OR instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  15489. " AND (:GoodsTypeCode IS NULL OR\n" +
  15490. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  15491. " AND (:DateBegin IS NULL OR\n" +
  15492. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)\n" +
  15493. " GROUP BY gdd.goodsid\n" +
  15494. " ,gdd.goodscode\n" +
  15495. " ,gdd.groutinglineid\n" +
  15496. " ,gdd.groutinglinecode\n" +
  15497. " ,gdd.userid\n" +
  15498. " ,gdd.usercode\n" +
  15499. " ,g.reserveddays) gdrd\n" +
  15500. " LEFT JOIN (SELECT gld.goodsid\n" +
  15501. " ,gld.groutinglineid\n" +
  15502. " ,COUNT(*) gldcount\n" +
  15503. " FROM tp_pc_groutinglinedetail gld\n" +
  15504. " INNER JOIN tp_pc_groutingline gl\n" +
  15505. " ON gl.groutinglineid = gld.groutinglineid\n" +
  15506. " WHERE gld.valueflag = '1'\n" +
  15507. " AND gld.gmouldstatus = 1\n" +
  15508. " AND gl.accountid = :accountid\n" +
  15509. " AND gl.valueflag = '1'\n" +
  15510. " AND gl.gmouldstatus = 1\n" +
  15511. " GROUP BY gld.goodsid\n" +
  15512. " ,gld.groutinglineid\n" +
  15513. " ) rdd\n" +
  15514. " ON rdd.goodsid = gdrd.goodsid\n" +
  15515. " AND rdd.groutinglineid = gdrd.groutinglineid\n" +
  15516. " ORDER BY gdrd.goodscode\n" +
  15517. " ,gdrd.groutinglinecode, gdrd.usercode" +
  15518. "";
  15519. */
  15520. string sqlString =
  15521. "SELECT grouping_id(t.goodstypecode2, t.goodsid) gid\n" +
  15522. " ,t.goodstypecode2\n" +
  15523. " ,decode(grouping_id(t.goodstypecode2, t.goodsid),\n" +
  15524. " 3,\n" +
  15525. " '总计',\n" +
  15526. " 1,\n" +
  15527. " '合计[' || t.goodstypename2 || ']',\n" +
  15528. " t.goodstypename2) goodstypename2\n" +
  15529. " ,t.goodsid\n" +
  15530. " ,t.goodscode\n" +
  15531. " ,t.groutinglineid\n" +
  15532. " ,t.groutinglinecode\n" +
  15533. " ,t.userid\n" +
  15534. " ,t.usercode\n" +
  15535. " ,t.MONITORName\n" +
  15536. " ,SUM(t.rdcount) rdcount\n" +
  15537. " ,t.gldcount -- 模具数\n" +
  15538. " ,t.rddays -- 存坯天数\n" +
  15539. " ,t.reserveddays -- 应存天数\n" +
  15540. " ,SUM(t.ProfitNum) ProfitNum\n" +
  15541. " FROM (SELECT gt2.goodstypecode goodstypecode2\n" +
  15542. " ,gt2.goodstypename goodstypename2\n" +
  15543. " ,gdrd.goodsid\n" +
  15544. " ,gdrd.goodscode\n" +
  15545. " ,gdrd.groutinglineid\n" +
  15546. " ,gdrd.groutinglinecode\n" +
  15547. " ,gdrd.userid\n" +
  15548. " ,gdrd.usercode\n" +
  15549. " ,mu.username MONITORName\n" +
  15550. " ,gdrd.gddc rdcount -- 存坯数\n" +
  15551. " ,rdd.gldcount -- 模具数\n" +
  15552. " , CASE\n" +
  15553. " WHEN rdd.gldcount IS NOT NULL AND rdd.gldcount > 0 THEN\n" +
  15554. " round(gdrd.gddc / rdd.gldcount, 2)\n" +
  15555. " ELSE\n" +
  15556. " NULL\n" +
  15557. " END rddays -- 存坯天数\n" +
  15558. " ,gdrd.reserveddays -- 应存天数\n" +
  15559. " ,(gdrd.gddc - gdrd.reserveddays * rdd.gldcount) ProfitNum --盈亏坯数\n" +
  15560. " FROM (SELECT gdd.goodsid\n" +
  15561. " ,gdd.goodscode\n" +
  15562. " ,gdd.groutinglineid\n" +
  15563. " ,gdd.groutinglinecode\n" +
  15564. " ,gdd.userid\n" +
  15565. " ,gdd.usercode\n" +
  15566. " ,g.reserveddays\n" +
  15567. " ,substr(gt.goodstypecode, 1, 6) goodstypecode2\n" +
  15568. " ,COUNT(*) gddc\n" +
  15569. " FROM tp_pm_groutingdailydetail gdd\n" +
  15570. " INNER JOIN tp_mst_goods g\n" +
  15571. " ON g.goodsid = gdd.goodsid\n" +
  15572. " INNER JOIN tp_mst_goodstype gt\n" +
  15573. " ON g.goodstypeid = gt.goodstypeid\n" +
  15574. " left JOIN tp_pm_inproduction inp\n" +
  15575. " ON inp.barcode = gdd.barcode\n" +
  15576. //20210113
  15577. " left JOIN tp_pc_procedure p\n" +
  15578. " ON inp.procedureid = p.procedureid\n" +
  15579. //end
  15580. " WHERE gdd.accountid = :accountid\n" +
  15581. " AND gdd.valueflag = '1'\n" +
  15582. " AND gdd.groutingflag = '1'\n" +
  15583. " AND gdd.barcode IS NOT NULL\n" +
  15584. " AND gdd.scrapflag = '0'\n" +
  15585. " AND gdd.deliverflag = '0'\n" +
  15586. " AND (gdd.beginningflag='0' or inp.barcode is not null)\n" +
  15587. " AND (:LineCode IS NULL OR\n" +
  15588. " instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  15589. " AND (:UserCode IS NULL OR\n" +
  15590. " instr(gdd.UserCode, :UserCode) > 0)\n" +
  15591. " AND (:GoodsCode IS NULL OR\n" +
  15592. " instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  15593. " AND (:GoodsTypeCode IS NULL OR\n" +
  15594. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  15595. " AND (:DateBegin IS NULL OR\n" +
  15596. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)\n" +
  15597. //20210113
  15598. " AND (P.procedurename IN('3#阴干区(入)','3#预干区(入)','3#烘干区(入)','3#烘干区(出)') or p.procedurename IS NULL)" +
  15599. //end
  15600. " GROUP BY gt.goodstypecode\n" +
  15601. " ,gdd.goodsid\n" +
  15602. " ,gdd.goodscode\n" +
  15603. " ,gdd.groutinglineid\n" +
  15604. " ,gdd.groutinglinecode\n" +
  15605. " ,gdd.userid\n" +
  15606. " ,gdd.usercode\n" +
  15607. " ,g.reserveddays) gdrd\n" +
  15608. " LEFT JOIN (SELECT gld.goodsid\n" +
  15609. " ,gld.groutinglineid\n" +
  15610. " ,gl.MONITORID\n" +
  15611. " ,COUNT(*) gldcount\n" +
  15612. " FROM tp_pc_groutinglinedetail gld\n" +
  15613. " INNER JOIN tp_pc_groutingline gl\n" +
  15614. " ON gl.groutinglineid = gld.groutinglineid\n" +
  15615. " WHERE gld.valueflag = '1'\n" +
  15616. " AND gld.gmouldstatus = 1\n" +
  15617. " AND gl.accountid = :accountid\n" +
  15618. " AND gl.valueflag = '1'\n" +
  15619. " AND gl.gmouldstatus = 1\n" +
  15620. " GROUP BY gld.goodsid, gld.groutinglineid,gl.MONITORID) rdd\n" +
  15621. " ON rdd.goodsid = gdrd.goodsid\n" +
  15622. " AND rdd.groutinglineid = gdrd.groutinglineid\n" +
  15623. // 成型班长
  15624. " LEFT JOIN tp_mst_user mu\n" +
  15625. " ON mu.userid = rdd.MONITORID\n" +
  15626. " INNER JOIN tp_mst_goodstype gt2\n" +
  15627. " ON gt2.accountid = :accountid\n" +
  15628. " AND gt2.goodstypecode = gdrd.goodstypecode2\n" +
  15629. " ORDER BY gt2.goodstypecode\n" +
  15630. " ,gdrd.goodscode\n" +
  15631. " ,gdrd.groutinglinecode\n" +
  15632. " ,gdrd.usercode) t\n" +
  15633. " 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),())";
  15634. OracleParameter[] oracleParameter = new OracleParameter[]
  15635. {
  15636. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15637. new OracleParameter(":DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15638. new OracleParameter(":DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15639. new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15640. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15641. new OracleParameter(":LineCode",OracleDbType.NVarchar2, cre.Properties["LineCode"], ParameterDirection.Input),
  15642. new OracleParameter(":UserCode",OracleDbType.NVarchar2, cre.Properties["UserCode"], ParameterDirection.Input),
  15643. };
  15644. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15645. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15646. {
  15647. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15648. }
  15649. sre.Data = result;
  15650. return sre;
  15651. }
  15652. catch (Exception ex)
  15653. {
  15654. if (oracleConn.ConnState == ConnectionState.Open)
  15655. {
  15656. oracleConn.Close();
  15657. }
  15658. throw ex;
  15659. }
  15660. }
  15661. /// <summary>
  15662. /// 获取成型存坯汇总表-成型存坯明细表
  15663. /// </summary>
  15664. /// <param name="cre"></param>
  15665. /// <param name="sUserInfo"></param>
  15666. /// <returns></returns>
  15667. public static ServiceResultEntity GetRPT030116DData(ClientRequestEntity cre, SUserInfo sUserInfo)
  15668. {
  15669. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15670. try
  15671. {
  15672. ServiceResultEntity sre = new ServiceResultEntity();
  15673. string sqlString = "SELECT gdd.barcode\n" +
  15674. //" ,gdd.groutinglineid\n" +
  15675. " ,gdd.groutinglinecode\n" +
  15676. " ,gdd.GroutingMouldCode\n" +
  15677. //" ,gdd.goodsid\n" +
  15678. " ,gdd.goodscode\n" +
  15679. //" ,gdd.userid\n" +
  15680. " ,gdd.usercode\n" +
  15681. " ,gdd.groutingdate\n" +
  15682. " ,p.procedurename\n" +
  15683. // 成型班长
  15684. " ,mu.username as MONITORName" +
  15685. " FROM tp_pm_groutingdailydetail gdd\n" +
  15686. " INNER JOIN tp_mst_goods g\n" +
  15687. " ON g.goodsid = gdd.goodsid\n" +
  15688. // 成型线
  15689. " LEFT JOIN tp_pc_groutingline gl" +
  15690. " ON gl.groutinglineid = GDD.GroutingLineID" +
  15691. // 成型班长
  15692. " LEFT JOIN tp_mst_user mu" +
  15693. " ON mu.userid = gl.MONITORID " +
  15694. " INNER JOIN tp_mst_goodstype gt\n" +
  15695. " ON g.goodstypeid = gt.goodstypeid\n" +
  15696. " left JOIN tp_pm_inproduction inp\n" +
  15697. " ON inp.barcode = gdd.barcode\n" +
  15698. " left JOIN tp_pc_procedure p\n" +
  15699. " ON inp.procedureid = p.procedureid\n" +
  15700. " WHERE gdd.accountid = :accountid\n" +
  15701. " AND gdd.valueflag = '1'\n" +
  15702. " AND gdd.groutingflag = '1'\n" +
  15703. " AND gdd.barcode IS NOT NULL\n" +
  15704. " AND gdd.scrapflag = '0'\n" +
  15705. " AND gdd.deliverflag = '0'\n" +
  15706. " AND (gdd.beginningflag='0' or inp.barcode is not null)\n" +
  15707. " AND (:LineID IS NULL OR gdd.groutinglineid = :LineID)\n" +
  15708. " AND (:UserID IS NULL OR gdd.UserID = :UserID)\n" +
  15709. " AND (:GoodsID IS NULL OR gdd.goodsid = :GoodsID)\n" +
  15710. " AND (:LineCode IS NULL OR instr(gdd.groutinglinecode, :LineCode) > 0)\n" +
  15711. " AND (:UserCode IS NULL OR instr(gdd.UserCode, :UserCode) > 0)\n" +
  15712. " AND (:GoodsCode IS NULL OR instr(gdd.GoodsCode, :GoodsCode) > 0)\n" +
  15713. " AND (:GoodsTypeCode IS NULL OR\n" +
  15714. " instr(gt.GoodstypeCode, :GoodsTypeCode) = 1)\n" +
  15715. " AND (:DateBegin IS NULL OR\n" +
  15716. " gdd.groutingdate BETWEEN :DateBegin AND :DateEnd)" +
  15717. //20210113
  15718. " AND (P.procedurename IN('3#阴干区(入)','3#预干区(入)','3#烘干区(入)','3#烘干区(出)') or p.procedurename IS NULL)" +
  15719. //end
  15720. " ORDER BY gdd.barcode\n" +
  15721. //" ,gdd.goodscode, gdrd.groutinglinecode, gdrd.usercode" +
  15722. "";
  15723. OracleParameter[] oracleParameter = new OracleParameter[]
  15724. {
  15725. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15726. new OracleParameter(":DateBegin",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15727. new OracleParameter(":DateEnd",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15728. new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  15729. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  15730. new OracleParameter(":LineCode",OracleDbType.NVarchar2, cre.Properties["LineCode"], ParameterDirection.Input),
  15731. new OracleParameter(":UserCode",OracleDbType.NVarchar2, cre.Properties["UserCode"], ParameterDirection.Input),
  15732. new OracleParameter(":GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
  15733. new OracleParameter(":LineID",OracleDbType.Int32, cre.Properties["LineID"], ParameterDirection.Input),
  15734. new OracleParameter(":UserID",OracleDbType.Int32, cre.Properties["UserID"], ParameterDirection.Input),
  15735. };
  15736. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15737. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15738. {
  15739. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15740. }
  15741. sre.Data = result;
  15742. return sre;
  15743. }
  15744. catch (Exception ex)
  15745. {
  15746. if (oracleConn.ConnState == ConnectionState.Open)
  15747. {
  15748. oracleConn.Close();
  15749. }
  15750. throw ex;
  15751. }
  15752. }
  15753. /// <summary>
  15754. /// 年度各工序月产量统计表
  15755. /// </summary>
  15756. /// <param name="cre"></param>
  15757. /// <param name="sUserInfo"></param>
  15758. /// <returns></returns>
  15759. public static ServiceResultEntity GetRPT030118Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15760. {
  15761. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15762. try
  15763. {
  15764. ServiceResultEntity sre = new ServiceResultEntity();
  15765. string sump = INIUtility.Read("ReportParameters", "RPT_030118", AppDomain.CurrentDomain.BaseDirectory + "Config.ini");
  15766. string sqlString = "select gt2.goodstypecode\n" +
  15767. " ,nvl2(gt2.goodstypename\n" +
  15768. " ,nvl2(t.procedureid\n" +
  15769. " ,gt2.goodstypename\n" +
  15770. " ,'小计[' || gt2.goodstypename || ']')\n" +
  15771. " ,'总计') goodstypename\n" +
  15772. " ,p.displayno\n" +
  15773. " ,decode(t.procedureid, null, '--', 0, '注浆', p.procedurename) procedurename\n" +
  15774. " ,sum(decode(t.mm, '12', t.pcount, 0)) m12\n" +
  15775. " ,sum(decode(t.mm, '01', t.pcount, 0)) m01\n" +
  15776. " ,sum(decode(t.mm, '02', t.pcount, 0)) m02\n" +
  15777. " ,sum(decode(t.mm, '03', t.pcount, 0)) m03\n" +
  15778. " ,sum(decode(t.mm, '04', t.pcount, 0)) m04\n" +
  15779. " ,sum(decode(t.mm, '05', t.pcount, 0)) m05\n" +
  15780. " ,sum(decode(t.mm, '06', t.pcount, 0)) m06\n" +
  15781. " ,sum(decode(t.mm, '07', t.pcount, 0)) m07\n" +
  15782. " ,sum(decode(t.mm, '08', t.pcount, 0)) m08\n" +
  15783. " ,sum(decode(t.mm, '09', t.pcount, 0)) m09\n" +
  15784. " ,sum(decode(t.mm, '10', t.pcount, 0)) m10\n" +
  15785. " ,sum(decode(t.mm, '11', t.pcount, 0)) m11\n" +
  15786. " ,sum(t.pcount) msum\n" +
  15787. " from (select --substr(gt.goodstypecode, 1, 6) gtcode2\n" +
  15788. " gt.goodstypecode\n" +
  15789. " ,0 procedureid\n" +
  15790. " ,to_char(pd.groutingdate, 'mm') mm\n" +
  15791. " ,count(*) pcount\n" +
  15792. " from tp_pm_groutingdailydetail pd\n" +
  15793. " inner join tp_mst_goods g\n" +
  15794. " on g.goodsid = pd.goodsid\n" +
  15795. //xuwei add 2021-03-15 内胆 座圈不算里面
  15796. " and g.SCRAPSUMFLAG = '1' \n" +
  15797. " inner join tp_mst_goodstype gt\n" +
  15798. " on gt.goodstypeid = g.goodstypeid\n" +
  15799. " where pd.accountid = :accountid\n" +
  15800. " and pd.groutingflag = '1'\n" +
  15801. " and pd.groutingdate >= :begindate\n" +
  15802. " and pd.groutingdate < :enddate\n" +
  15803. " group by --substr(gt.goodstypecode, 1, 6)\n" +
  15804. " gt.goodstypecode\n" +
  15805. " ,to_char(pd.groutingdate, 'mm')\n" +
  15806. " union all\n" +
  15807. " select --substr(gt.goodstypecode, 1, 6) gtcode2\n" +
  15808. " gt.goodstypecode\n" +
  15809. " ,pd.procedureid\n" +
  15810. " ,to_char(pd.createtime, 'mm') mm\n" +
  15811. " ,count(*) pcount\n" +
  15812. " from tp_pm_productiondata pd\n" +
  15813. " inner join tp_mst_goods g\n" +
  15814. " on g.goodsid = pd.goodsid\n" +
  15815. //xuwei add 2021-03-15 内胆 座圈不算里面
  15816. " and g.SCRAPSUMFLAG = '1' \n" +
  15817. " inner join tp_mst_goodstype gt\n" +
  15818. " on gt.goodstypeid = g.goodstypeid\n" +
  15819. " where pd.accountid = :accountid\n" +
  15820. " and pd.createtime >= :begindate\n" +
  15821. " and pd.createtime < :enddate\n" +
  15822. (string.IsNullOrWhiteSpace(sump) ? "" : " and pd.procedureid in (" + sump + ")\n") +
  15823. " group by --substr(gt.goodstypecode, 1, 6)\n" +
  15824. " gt.goodstypecode\n" +
  15825. " ,pd.procedureid\n" +
  15826. " ,to_char(pd.createtime, 'mm')" +
  15827. " union all\n" +
  15828. " select --substr(gt.goodstypecode, 1, 6) gtcode2\n" +
  15829. " gt.goodstypecode\n" +
  15830. " ,pd.procedureid\n" +
  15831. " ,to_char(pd.BACKOUTTIME, 'mm') mm\n" +
  15832. " ,count(*) pcount\n" +
  15833. " from tp_pm_productiondata pd\n" +
  15834. " inner join tp_mst_goods g\n" +
  15835. " on g.goodsid = pd.goodsid\n" +
  15836. //xuwei add 2021-03-15 内胆 座圈不算里面
  15837. " and g.SCRAPSUMFLAG = '1' \n" +
  15838. " inner join tp_mst_goodstype gt\n" +
  15839. " on gt.goodstypeid = g.goodstypeid\n" +
  15840. " where pd.accountid = :accountid\n" +
  15841. " and pd.valueflag = '0'\n" +
  15842. " and pd.BACKOUTTIME >= :begindate\n" +
  15843. " and pd.BACKOUTTIME < :enddate\n" +
  15844. (string.IsNullOrWhiteSpace(sump) ? "" : " and pd.procedureid in (" + sump + ")\n") +
  15845. " group by --substr(gt.goodstypecode, 1, 6)\n" +
  15846. " gt.goodstypecode\n" +
  15847. " ,pd.procedureid\n" +
  15848. " ,to_char(pd.BACKOUTTIME, 'mm')) t\n" +
  15849. " inner join tp_mst_goodstype gt2\n" +
  15850. " on gt2.accountid = 1\n" +
  15851. " and gt2.goodstypecode = substr(t.goodstypecode, 1, 6) --t.gtcode2\n" +
  15852. " left join tp_pc_procedure p\n" +
  15853. " on p.procedureid = t.procedureid\n" +
  15854. " group by grouping sets((gt2.goodstypecode, gt2.goodstypename, p.displayno, p.procedurename, t.procedureid),(gt2.goodstypecode, gt2.goodstypename),())";
  15855. OracleParameter[] oracleParameter = new OracleParameter[]
  15856. {
  15857. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  15858. new OracleParameter(":begindate",OracleDbType.Date, cre.Properties["DateBegin"], ParameterDirection.Input),
  15859. new OracleParameter(":enddate",OracleDbType.Date, cre.Properties["DateEnd"], ParameterDirection.Input),
  15860. };
  15861. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  15862. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  15863. {
  15864. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  15865. }
  15866. sre.Data = result;
  15867. return sre;
  15868. }
  15869. catch (Exception ex)
  15870. {
  15871. throw ex;
  15872. }
  15873. finally
  15874. {
  15875. oracleConn?.Close();
  15876. }
  15877. }
  15878. /// <summary>
  15879. /// 半检返修缺陷汇总表
  15880. /// </summary>
  15881. /// <param name="cre"></param>
  15882. /// <param name="sUserInfo"></param>
  15883. /// <returns></returns>
  15884. public static ServiceResultEntity GetRPT030119Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  15885. {
  15886. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  15887. try
  15888. {
  15889. ServiceResultEntity sre = new ServiceResultEntity();
  15890. string sqlString = "select dp.defectpositionid\n" +
  15891. " ,dp.defectpositioncode\n" +
  15892. " ,dp.defectpositionname\n" +
  15893. " ,'D_' || dp.defectpositionid colname\n" +
  15894. " from tp_mst_scdefectposition dp\n" +
  15895. " where dp.valueflag = '1'\n" +
  15896. " and dp.accountid = " + sUserInfo.AccountID + "\n";
  15897. if (!string.IsNullOrWhiteSpace(cre.Properties["defectpositionIDS"] + ""))
  15898. {
  15899. sqlString += " and instr(','||'" + cre.Properties["defectpositionIDS"] + "'||',', ','||dp.defectpositionid||',') > 0 \n";
  15900. }
  15901. sqlString += " order by dp.displayno";
  15902. DataTable scdTable = oracleConn.GetSqlResultToDt(sqlString);
  15903. if (scdTable == null || scdTable.Rows.Count == 0)
  15904. {
  15905. return sre;
  15906. }
  15907. List<string> pivotFor = new List<string>();
  15908. foreach (DataRow item in scdTable.Rows)
  15909. {
  15910. pivotFor.Add($"{item["defectpositionid"]} as {item["colname"]}");
  15911. }
  15912. List<OracleParameter> oracleParameters = new List<OracleParameter>();
  15913. oracleParameters.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  15914. sqlString = "select *\n" +
  15915. " from (select srd.defectid\n" +
  15916. " ,scd.defectcode\n" +
  15917. " ,scd.defectname\n" +
  15918. " ,nvl(srd.defectpositionid, 0) defectpositionid\n" +
  15919. " ,count(srd.semireworkdefectid) cc\n" +
  15920. " from TP_PM_SEMIREWORKDEFECT srd\n" +
  15921. " inner join TP_PM_SEMIREWORK sr\n" +
  15922. " on sr.SEMIREWORKID = srd.SEMIREWORKID\n" +
  15923. " left join tp_mst_semicheckdefect scd\n" +
  15924. " on scd.defectid = srd.defectid\n" +
  15925. " left join tp_mst_scdefectposition scdp\n" +
  15926. " on scdp.defectpositionid = srd.defectpositionid\n" +
  15927. " left join TP_MST_GOODS g on g.GOODSID = sr.GOODSID\n" + //xuwei add 2019-11-29
  15928. " left join TP_MST_GOODSTYPE gt on g.GOODSTYPEID = gt.GOODSTYPEID\n" + //xuwei add 2019-11-29
  15929. " where srd.valueflag = '1'\n" +
  15930. " and sr.BACKOUTFLAG = '0'\n" +
  15931. " and sr.valueflag = '1'\n" +
  15932. " and sr.accountid = :accountid\n";
  15933. // 半检日期
  15934. if (cre.Properties["SemireWorkTimeBegin"] != null)
  15935. {
  15936. sqlString += " and sr.SEMIREWORKTIME >= :SemireWorkTimeBegin\n";
  15937. oracleParameters.Add(new OracleParameter(":SemireWorkTimeBegin", cre.Properties["SemireWorkTimeBegin"]));
  15938. }
  15939. if (cre.Properties["SemireWorkTimeEnd"] != null)
  15940. {
  15941. sqlString += " and sr.SEMIREWORKTIME < :SemireWorkTimeEnd\n";
  15942. oracleParameters.Add(new OracleParameter(":SemireWorkTimeEnd", cre.Properties["SemireWorkTimeEnd"]));
  15943. }
  15944. // 产品编码 GOODSCODE
  15945. if (!string.IsNullOrWhiteSpace(cre.Properties["GOODSCODE"] + ""))
  15946. {
  15947. sqlString += " and instr(','||:GOODSCODE||',' , ','||sr.GOODSCODE||',') > 0 \n";
  15948. oracleParameters.Add(new OracleParameter(":GOODSCODE", cre.Properties["GOODSCODE"]));
  15949. }
  15950. // 成型工号 GROUTINGUSERCODE
  15951. if (!string.IsNullOrWhiteSpace(cre.Properties["GROUTINGUSERCODE"] + ""))
  15952. {
  15953. //xuwei modify 2019-11-13
  15954. //sqlString += " and instr(sr.GROUTINGUSERCODE,:GROUTINGUSERCODE) > 0 \n";
  15955. sqlString += " and instr(','||:GROUTINGUSERCODE||',' , ','||sr.GROUTINGUSERCODE||',') > 0 \n";
  15956. //xuwei end
  15957. oracleParameters.Add(new OracleParameter(":GROUTINGUSERCODE", cre.Properties["GROUTINGUSERCODE"]));
  15958. }
  15959. // 半检工号 SEMIREWORKUSERCODE
  15960. if (!string.IsNullOrWhiteSpace(cre.Properties["SEMIREWORKUSERCODE"] + ""))
  15961. {
  15962. //xuwei modify 2019-11-13
  15963. //sqlString += " and instr(sr.SEMIREWORKUSERCODE,:SEMIREWORKUSERCODE) > 0 \n";
  15964. sqlString += " and instr(','||:SEMIREWORKUSERCODE||',' , ','||sr.SEMIREWORKUSERCODE||',') > 0 \n";
  15965. //xuwei end
  15966. oracleParameters.Add(new OracleParameter(":SEMIREWORKUSERCODE", cre.Properties["SEMIREWORKUSERCODE"]));
  15967. }
  15968. // 缺陷位置 scdp.defectpositionname
  15969. if (!string.IsNullOrWhiteSpace(cre.Properties["defectpositionname"] + ""))
  15970. {
  15971. sqlString += " and instr(scdp.defectpositionname,:defectpositionname) > 0 \n";
  15972. oracleParameters.Add(new OracleParameter(":defectpositionname", cre.Properties["defectpositionname"]));
  15973. }
  15974. if (!string.IsNullOrWhiteSpace(cre.Properties["defectpositionIDS"] + ""))
  15975. {
  15976. sqlString += " and instr(','||:defectpositionIDS||',', ','||srd.defectpositionid||',') > 0 \n";
  15977. oracleParameters.Add(new OracleParameter(":defectpositionIDS", cre.Properties["defectpositionIDS"]));
  15978. }
  15979. // 缺陷名称 scd.defectname
  15980. if (!string.IsNullOrWhiteSpace(cre.Properties["defectname"] + ""))
  15981. {
  15982. sqlString += " and instr(scd.defectname,:defectname) > 0 \n";
  15983. oracleParameters.Add(new OracleParameter(":defectname", cre.Properties["defectname"]));
  15984. }
  15985. // 缺陷编码 scd.defectcode
  15986. if (!string.IsNullOrWhiteSpace(cre.Properties["defectcode"] + ""))
  15987. {
  15988. sqlString += " and scd.defectcode = :defectcode \n";
  15989. oracleParameters.Add(new OracleParameter(":defectcode", cre.Properties["defectcode"]));
  15990. }
  15991. //产品类别ID xuwei add 2019-11-29 g.GOODSTYPEID
  15992. if (!string.IsNullOrWhiteSpace(cre.Properties["GOODSTYPEID"] + ""))
  15993. {
  15994. sqlString += " and instr(','||:GOODSTYPEID||',' , ','||g.GOODSTYPEID||',') > 0 \n";
  15995. oracleParameters.Add(new OracleParameter(":GOODSTYPEID", cre.Properties["GOODSTYPEID"]));
  15996. }
  15997. //产品类别Code xuwei add 2019-11-29 g.GOODSTYPECODE
  15998. if (!string.IsNullOrWhiteSpace(cre.Properties["GOODSTYPECODE"] + ""))
  15999. {
  16000. sqlString += " and instr(gt.GOODSTYPECODE , :GOODSTYPECODE) = 1 \n";
  16001. oracleParameters.Add(new OracleParameter(":GOODSTYPECODE", cre.Properties["GOODSTYPECODE"]));
  16002. }
  16003. //返修工序 xuwei add 2019-11-29 sr.REWORKPROCEDUREID
  16004. if (!string.IsNullOrWhiteSpace(cre.Properties["REWORKPROCEDUREID"] + ""))
  16005. {
  16006. sqlString += " and instr(','||:REWORKPROCEDUREID||',' , ','||sr.REWORKPROCEDUREID||',') > 0 \n";
  16007. oracleParameters.Add(new OracleParameter(":REWORKPROCEDUREID", cre.Properties["REWORKPROCEDUREID"]));
  16008. }
  16009. sqlString +=
  16010. " group by grouping sets((srd.defectid, scd.defectcode, scd.defectname, srd.defectpositionid),(srd.defectid, scd.defectcode, scd.defectname),(srd.defectpositionid),())) t\n" +
  16011. "pivot(sum(cc)\n" +
  16012. " for defectpositionid in(" + string.Join(",", pivotFor) + ", 0 AS D_0))\n" +
  16013. " order by defectid";
  16014. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameters.ToArray());
  16015. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16016. {
  16017. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16018. return sre;
  16019. }
  16020. DataTable table = result.Tables[0];
  16021. DataRow dataRow = table.Rows[table.Rows.Count - 1];
  16022. dataRow["defectname"] = "合计";
  16023. foreach (DataRow item in scdTable.Rows)
  16024. {
  16025. string colname = item["colname"] + "";
  16026. if (table.Columns.Contains(colname))
  16027. {
  16028. if (dataRow[colname] == null || dataRow[colname] == DBNull.Value)
  16029. {
  16030. table.Columns.Remove(colname);
  16031. }
  16032. else
  16033. {
  16034. table.Columns[colname].Caption = item["defectpositionname"] + "";
  16035. }
  16036. }
  16037. }
  16038. table.Columns["D_0"].Caption = "合计";
  16039. sre.Data = result;
  16040. return sre;
  16041. }
  16042. catch (Exception ex)
  16043. {
  16044. throw ex;
  16045. }
  16046. finally
  16047. {
  16048. oracleConn?.Close();
  16049. }
  16050. }
  16051. /// <summary>
  16052. /// 模具注浆分析表
  16053. /// </summary>
  16054. /// <param name="cre"></param>
  16055. /// <param name="sUserInfo"></param>
  16056. /// <returns></returns>
  16057. public static ServiceResultEntity GetRPT040111Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16058. {
  16059. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16060. try
  16061. {
  16062. ServiceResultEntity sre = new ServiceResultEntity();
  16063. OracleParameter[] oracleParameter = new OracleParameter[]
  16064. {
  16065. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16066. new OracleParameter("in_datetimebegin",OracleDbType.Date, cre.Properties["GroutingDateBegin"], ParameterDirection.Input),
  16067. new OracleParameter("in_datetimeend",OracleDbType.Date, cre.Properties["GroutingDateEnd"], ParameterDirection.Input),
  16068. new OracleParameter("in_GoodsCode",OracleDbType.Varchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  16069. new OracleParameter("in_MouldBarcode",OracleDbType.Varchar2, cre.Properties["MouldBarcode"], ParameterDirection.Input),
  16070. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  16071. };
  16072. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_Mould_Groutingnum_AN", oracleParameter);
  16073. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  16074. {
  16075. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  16076. }
  16077. sre.Data = result;
  16078. oracleConn.Commit();
  16079. return sre;
  16080. }
  16081. catch (Exception ex)
  16082. {
  16083. if (oracleConn.ConnState == ConnectionState.Open)
  16084. {
  16085. oracleConn.Disconnect();
  16086. }
  16087. throw ex;
  16088. }
  16089. }
  16090. /// <summary>
  16091. /// 成检产品预算分析表
  16092. /// </summary>
  16093. /// <param name="cre"></param>
  16094. /// <param name="sUserInfo"></param>
  16095. /// <returns></returns>
  16096. public static ServiceResultEntity GetRPT040112Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16097. {
  16098. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16099. try
  16100. {
  16101. ServiceResultEntity sre = new ServiceResultEntity();
  16102. OracleParameter[] oracleParameter = new OracleParameter[]
  16103. {
  16104. new OracleParameter("in_AccountID",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16105. new OracleParameter("in_InTimeBegin",OracleDbType.Date, cre.Properties["InTimeBegin"], ParameterDirection.Input),
  16106. new OracleParameter("in_InTimeEnd",OracleDbType.Date, cre.Properties["InTimeEnd"], ParameterDirection.Input),
  16107. new OracleParameter("in_OutTimeBegin",OracleDbType.Date, cre.Properties["OutTimeBegin"], ParameterDirection.Input),
  16108. new OracleParameter("in_OutTimeEnd",OracleDbType.Date, cre.Properties["OutTimeEnd"], ParameterDirection.Input),
  16109. new OracleParameter("in_KilnID",OracleDbType.Int32, cre.Properties["KilnID"], ParameterDirection.Input),
  16110. new OracleParameter("in_KilnCarNumBegin",OracleDbType.Int32, cre.Properties["KilnCarNumBegin"], ParameterDirection.Input),
  16111. new OracleParameter("in_KilnCarNumEnd",OracleDbType.Int32, cre.Properties["KilnCarNumEnd"], ParameterDirection.Input),
  16112. new OracleParameter("out_KilnInfo",OracleDbType.RefCursor, null, ParameterDirection.Output),
  16113. new OracleParameter("out_Data",OracleDbType.RefCursor, null, ParameterDirection.Output),
  16114. };
  16115. DataSet result = oracleConn.ExecStoredProcedure("PRO_RPT_ExpectFinishedProduct", 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 GetRPT04011201Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16140. {
  16141. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16142. try
  16143. {
  16144. ServiceResultEntity sre = new ServiceResultEntity();
  16145. string sqlString = "SELECT s.settingkey, s.procedureid, p.procedurecode, p.procedurename\n" +
  16146. " FROM tp_qco_prosetting s\n" +
  16147. " LEFT JOIN tp_pc_procedure p\n" +
  16148. " ON s.procedureid = p.procedureid\n" +
  16149. " WHERE s.accountid = :accountid";
  16150. OracleParameter[] oracleParameter = new OracleParameter[]
  16151. {
  16152. new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16153. };
  16154. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  16155. sqlString = "SELECT k.kilnid, k.kilncode, k.kilnname, k.turnoverinterval\n" +
  16156. " FROM tp_mst_kiln k\n" +
  16157. " WHERE k.accountid = :accountid\n" +
  16158. " AND k.valueflag = '1'";
  16159. DataTable dt = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  16160. result.Tables.Add(dt);
  16161. sre.Data = result;
  16162. return sre;
  16163. }
  16164. catch (Exception ex)
  16165. {
  16166. if (oracleConn.ConnState == ConnectionState.Open)
  16167. {
  16168. oracleConn.Close();
  16169. }
  16170. throw ex;
  16171. }
  16172. }
  16173. /// <summary>
  16174. /// 成检产品预算分析表-设置
  16175. /// </summary>
  16176. /// <param name="cre"></param>
  16177. /// <param name="sUserInfo"></param>
  16178. /// <returns></returns>
  16179. public static ServiceResultEntity SetRPT04011201Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16180. {
  16181. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  16182. try
  16183. {
  16184. ServiceResultEntity sre = new ServiceResultEntity();
  16185. OracleParameter[] oracleParameter = null;
  16186. string sql = "update tp_qco_prosetting s set s.procedureid=:procedureid, s.procedurecode=:procedurecode\n" +
  16187. "where s.accountid=:accountid and s.settingkey=:settingkey";
  16188. foreach (DataRow item in cre.Data.Tables[0].Rows)
  16189. {
  16190. oracleParameter = new OracleParameter[]
  16191. {
  16192. new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16193. new OracleParameter("procedureid",OracleDbType.Int32, item["procedureid"], ParameterDirection.Input),
  16194. new OracleParameter("procedurecode",OracleDbType.NVarchar2, item["procedurecode"], ParameterDirection.Input),
  16195. new OracleParameter("settingkey",OracleDbType.NVarchar2, item["settingkey"], ParameterDirection.Input),
  16196. };
  16197. oracleConn.ExecuteNonQuery(sql, oracleParameter);
  16198. }
  16199. sql = "update tp_mst_kiln k set k.turnoverinterval=:turnoverinterval\n" +
  16200. "where k.accountid=:accountid and k.kilnid=:kilnid";
  16201. foreach (DataRow item in cre.Data.Tables[1].Rows)
  16202. {
  16203. oracleParameter = new OracleParameter[]
  16204. {
  16205. new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16206. new OracleParameter("turnoverinterval",OracleDbType.Int32, item["turnoverinterval"], ParameterDirection.Input),
  16207. new OracleParameter("kilnid",OracleDbType.Int32, item["kilnid"], ParameterDirection.Input),
  16208. };
  16209. oracleConn.ExecuteNonQuery(sql, oracleParameter);
  16210. }
  16211. oracleConn.Commit();
  16212. return sre;
  16213. }
  16214. catch (Exception ex)
  16215. {
  16216. if (oracleConn.ConnState == ConnectionState.Open)
  16217. {
  16218. oracleConn.Disconnect();
  16219. }
  16220. throw ex;
  16221. }
  16222. }
  16223. /// <summary>
  16224. /// 成品工艺质量表-恒洁三水
  16225. /// </summary>
  16226. /// <param name="cre"></param>
  16227. /// <param name="sUserInfo"></param>
  16228. /// <returns></returns>
  16229. public static ServiceResultEntity GetRPT040113Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16230. {
  16231. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16232. try
  16233. {
  16234. //int p1ID = 11; // 成检交接工序
  16235. //int p2ID = 12; // 成检登记工序
  16236. string gtcode2 = cre.Properties["gtcode2"] + "";
  16237. if (gtcode2 != "001001" && gtcode2 != "001002")
  16238. {
  16239. gtcode2 = "[ALL]";
  16240. }
  16241. string GoodsIDS = cre.Properties["GoodsIDS"] + "";
  16242. string KilnID = cre.Properties["KilnID"] + "";
  16243. if (string.IsNullOrWhiteSpace(GoodsIDS))
  16244. {
  16245. GoodsIDS = "0";
  16246. }
  16247. int kid = 0;
  16248. if (!string.IsNullOrWhiteSpace(KilnID))
  16249. {
  16250. kid = Convert.ToInt32(KilnID);
  16251. }
  16252. // DEFECTDEDUCTIONNUM 缺陷扣除数 1,2,5
  16253. // goodsleveltypeid 次品 7
  16254. string sqlString = "select t.*\n" +
  16255. " ,gt.goodstypename\n" +
  16256. " ,nvl(outk.outkcount, 0) outkcount\n" +
  16257. " ,nvl(outk.outkcount, 0) - t.defectcount cc\n" +
  16258. " ,decode(nvl(outk.outkcount, 0)\n" +
  16259. " ,0\n" +
  16260. " ,to_number(null)\n" +
  16261. " ,round((nvl(outk.outkcount, 0) - t.defectcount) /\n" +
  16262. " nvl(outk.outkcount, 0)\n" +
  16263. " ,4)) ccp\n" +
  16264. " from (select 10 pcode\n" +
  16265. " ,'成型' pname\n" +
  16266. " ,gt2.goodstypecode gtcode2\n" +
  16267. " ,count(*) defectcount\n" +
  16268. " from tp_pm_defect dd\n" +
  16269. " inner join tp_pm_productiondata pd\n" +
  16270. " on dd.productiondataid = pd.productiondataid\n" +
  16271. " LEFT JOIN TP_MST_Defect mstd\n" +
  16272. " ON dd.DefectID = mstd.DefectID\n" +
  16273. " LEFT JOIN TP_MST_DefectType DT\n" +
  16274. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  16275. " inner join tp_mst_goods g\n" +
  16276. " on dd.goodsid = g.goodsid\n" +
  16277. " inner join tp_mst_goodstype gt\n" +
  16278. " on gt.goodstypeid = g.goodstypeid\n" +
  16279. " inner join tp_mst_goodstype gt2\n" +
  16280. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16281. " where dd.valueflag = '1'\n" +
  16282. " and dd.accountid = :accountid\n" +
  16283. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16284. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16285. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16286. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16287. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16288. // 恒洁三车间特殊处理(质量相关)
  16289. //" and dd.procedureid = :p2ID\n" +
  16290. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  16291. // end
  16292. " and pd.isrefire='0'\n" +
  16293. " AND DT.DEFECTTYPENAME LIKE '成型%'\n" +
  16294. " and pd.CREATETIME >= :timebegin\n" +
  16295. " and pd.CREATETIME < :timeend\n" +
  16296. ////" -- 交坯、干补\n" +
  16297. //" and dd.defectprocedureid in (1, 17, 18)\n" +
  16298. " and (dd.DEFECTUSERCODE LIKE 'F%' OR dd.DEFECTUSERCODE LIKE 'SGY%' OR dd.DEFECTUSERCODE LIKE 'SGB%' OR dd.DEFECTUSERCODE IN('244','245'))\n" +
  16299. " group by gt2.goodstypecode\n" +
  16300. " union all\n" +
  16301. " select 20 pcode\n" +
  16302. " ,'改洗' pname\n" +
  16303. " ,gt2.goodstypecode gtcode2\n" +
  16304. " ,count(*) defectcount\n" +
  16305. " from tp_pm_defect dd\n" +
  16306. " inner join tp_pm_productiondata pd\n" +
  16307. " on dd.productiondataid = pd.productiondataid\n" +
  16308. " LEFT JOIN TP_MST_Defect mstd\n" +
  16309. " ON dd.DefectID = mstd.DefectID\n" +
  16310. " LEFT JOIN TP_MST_DefectType DT\n" +
  16311. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  16312. " inner join tp_mst_goods g\n" +
  16313. " on dd.goodsid = g.goodsid\n" +
  16314. " inner join tp_mst_goodstype gt\n" +
  16315. " on gt.goodstypeid = g.goodstypeid\n" +
  16316. " inner join tp_mst_goodstype gt2\n" +
  16317. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16318. " where dd.valueflag = '1'\n" +
  16319. " and dd.accountid = :accountid\n" +
  16320. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16321. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16322. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16323. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16324. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16325. // 恒洁三车间特殊处理(质量相关)
  16326. //" and dd.procedureid = :p2ID\n" +
  16327. " and (dd.procedureid = 12 or (dd.procedureid = 105 and pd.isrefire='0')) \n" +
  16328. // end
  16329. " and pd.isrefire='0'\n" +
  16330. " AND DT.DEFECTTYPENAME LIKE '%改洗%'\n" +
  16331. " and pd.CREATETIME >= :timebegin\n" +
  16332. " and pd.CREATETIME < :timeend\n" +
  16333. ////" -- 改洗、吹风\n" +
  16334. //" and dd.defectprocedureid in (2, 62)\n" +
  16335. ////" -- 除不平\n" +
  16336. //" and dd.defectid not in (91, 240)\n" +
  16337. " and (dd.DEFECTUSERCODE LIKE 'G%' OR dd.DEFECTUSERCODE LIKE 'I%' OR dd.DEFECTUSERCODE LIKE 'SDM%' OR dd.DEFECTUSERCODE LIKE 'SSS%'\n" +
  16338. " 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" +
  16339. " group by gt2.goodstypecode\n" +
  16340. " union all\n" +
  16341. " select 30 pcode\n" +
  16342. " ,'二检' pname\n" +
  16343. " ,gt2.goodstypecode gtcode2\n" +
  16344. " ,count(*) defectcount\n" +
  16345. " from tp_pm_defect dd\n" +
  16346. " inner join tp_pm_productiondata pd\n" +
  16347. " on dd.productiondataid = pd.productiondataid\n" +
  16348. " LEFT JOIN TP_MST_Defect mstd\n" +
  16349. " ON dd.DefectID = mstd.DefectID\n" +
  16350. " LEFT JOIN TP_MST_DefectType DT\n" +
  16351. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  16352. " inner join tp_mst_goods g\n" +
  16353. " on dd.goodsid = g.goodsid\n" +
  16354. " inner join tp_mst_goodstype gt\n" +
  16355. " on gt.goodstypeid = g.goodstypeid\n" +
  16356. " inner join tp_mst_goodstype gt2\n" +
  16357. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16358. " where dd.valueflag = '1'\n" +
  16359. " and dd.accountid = :accountid\n" +
  16360. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16361. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16362. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16363. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16364. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16365. // 恒洁三车间特殊处理(质量相关)
  16366. //" and dd.procedureid = :p2ID\n" +
  16367. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  16368. // end
  16369. " and pd.isrefire='0'\n" +
  16370. " AND DT.DEFECTTYPENAME LIKE '%检验%'\n" +
  16371. " and pd.CREATETIME >= :timebegin\n" +
  16372. " and pd.CREATETIME < :timeend\n" +
  16373. ////" -- 二检\n" +
  16374. //" and dd.defectprocedureid in (61)\n" +
  16375. " and (dd.DEFECTUSERCODE LIKE 'E%' OR dd.DEFECTUSERCODE LIKE 'J%' OR dd.DEFECTUSERCODE LIKE 'SJY%')\n" +
  16376. " group by gt2.goodstypecode\n" +
  16377. " union all\n" +
  16378. " select 40 pcode\n" +
  16379. " ,'施釉' pname\n" +
  16380. " ,gt2.goodstypecode gtcode2\n" +
  16381. " ,count(*) defectcount\n" +
  16382. " from tp_pm_defect dd\n" +
  16383. " inner join tp_pm_productiondata pd\n" +
  16384. " on dd.productiondataid = pd.productiondataid\n" +
  16385. " LEFT JOIN TP_MST_Defect mstd\n" +
  16386. " ON dd.DefectID = mstd.DefectID\n" +
  16387. " LEFT JOIN TP_MST_DefectType DT\n" +
  16388. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  16389. " inner join tp_mst_goods g\n" +
  16390. " on dd.goodsid = g.goodsid\n" +
  16391. " inner join tp_mst_goodstype gt\n" +
  16392. " on gt.goodstypeid = g.goodstypeid\n" +
  16393. " inner join tp_mst_goodstype gt2\n" +
  16394. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16395. " where dd.valueflag = '1'\n" +
  16396. " and dd.accountid = :accountid\n" +
  16397. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16398. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16399. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16400. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16401. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16402. // 恒洁三车间特殊处理(质量相关)
  16403. //" and dd.procedureid = :p2ID\n" +
  16404. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  16405. // end
  16406. " and pd.isrefire='0'\n" +
  16407. " AND DT.DEFECTTYPENAME LIKE '%施釉%'\n" +
  16408. " and pd.CREATETIME >= :timebegin\n" +
  16409. " and pd.CREATETIME < :timeend\n" +
  16410. ////" -- 施釉\n" +
  16411. //" and dd.defectprocedureid in (3, 4)\n" +
  16412. ////" -- 除铁、铜脏\n" +
  16413. //" and dd.defectid not in (827, 829, 398, 399, 830, 400)\n" +
  16414. " and (dd.DEFECTUSERCODE LIKE 'P%' OR dd.DEFECTUSERCODE LIKE 'SSY%')\n" +
  16415. " group by gt2.goodstypecode\n" +
  16416. " union all\n" +
  16417. " select 50 pcode\n" +
  16418. " ,'刮登' pname\n" +
  16419. " ,gt2.goodstypecode gtcode2\n" +
  16420. " ,count(*) defectcount\n" +
  16421. " from tp_pm_defect dd\n" +
  16422. " inner join tp_pm_productiondata pd\n" +
  16423. " on dd.productiondataid = pd.productiondataid\n" +
  16424. " LEFT JOIN TP_MST_Defect mstd\n" +
  16425. " ON dd.DefectID = mstd.DefectID\n" +
  16426. " LEFT JOIN TP_MST_DefectType DT\n" +
  16427. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  16428. " inner join tp_mst_goods g\n" +
  16429. " on dd.goodsid = g.goodsid\n" +
  16430. " inner join tp_mst_goodstype gt\n" +
  16431. " on gt.goodstypeid = g.goodstypeid\n" +
  16432. " inner join tp_mst_goodstype gt2\n" +
  16433. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16434. " where dd.valueflag = '1'\n" +
  16435. " and dd.accountid = :accountid\n" +
  16436. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16437. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16438. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16439. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16440. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16441. // 恒洁三车间特殊处理(质量相关)
  16442. //" and dd.procedureid = :p2ID\n" +
  16443. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  16444. // end
  16445. " and pd.isrefire='0'\n" +
  16446. " AND DT.DEFECTTYPENAME IN ('刮边','登窑')\n" +
  16447. " and pd.CREATETIME >= :timebegin\n" +
  16448. " and pd.CREATETIME < :timeend\n" +
  16449. ////" -- 登窑、入窑、卸窑\n" +
  16450. //" and dd.defectprocedureid in (5, 9, 10)\n" +
  16451. " 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" +
  16452. " group by gt2.goodstypecode\n" +
  16453. " union all\n" +
  16454. " select 60 pcode\n" +
  16455. " ,'烧成' pname\n" +
  16456. " ,gt2.goodstypecode gtcode2\n" +
  16457. " ,count(*) defectcount\n" +
  16458. " from tp_pm_defect dd\n" +
  16459. " inner join tp_pm_productiondata pd\n" +
  16460. " on dd.productiondataid = pd.productiondataid\n" +
  16461. " LEFT JOIN TP_MST_Defect mstd\n" +
  16462. " ON dd.DefectID = mstd.DefectID\n" +
  16463. " LEFT JOIN TP_MST_DefectType DT\n" +
  16464. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  16465. " inner join tp_mst_goods g\n" +
  16466. " on dd.goodsid = g.goodsid\n" +
  16467. " inner join tp_mst_goodstype gt\n" +
  16468. " on gt.goodstypeid = g.goodstypeid\n" +
  16469. " inner join tp_mst_goodstype gt2\n" +
  16470. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16471. " where dd.valueflag = '1'\n" +
  16472. " and dd.accountid = :accountid\n" +
  16473. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16474. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16475. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16476. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16477. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16478. // 恒洁三车间特殊处理(质量相关)
  16479. //" and dd.procedureid = :p2ID\n" +
  16480. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  16481. // end
  16482. " and pd.isrefire='0'\n" +
  16483. " AND DT.DEFECTTYPENAME LIKE '%烧成%'\n" +
  16484. " and pd.CREATETIME >= :timebegin\n" +
  16485. " and pd.CREATETIME < :timeend\n" +
  16486. ////" -- 惊风、毛针孔、烧裂、窑脏、釉泡\n" +
  16487. //" and dd.defectid in (385\n" +
  16488. //" ,203\n" +
  16489. //" ,836\n" +
  16490. //" ,234\n" +
  16491. //" ,384\n" +
  16492. //" ,202\n" +
  16493. //" ,835\n" +
  16494. //" ,390\n" +
  16495. //" ,818\n" +
  16496. //" ,389\n" +
  16497. //" ,204\n" +
  16498. //" ,814\n" +
  16499. //" ,837\n" +
  16500. //" ,387)\n" +
  16501. " and (dd.DEFECTUSERCODE LIKE 'SC%')\n" +
  16502. //" 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" +
  16503. //" 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" +
  16504. //" )\n" +
  16505. " group by gt2.goodstypecode\n" +
  16506. " union all\n" +
  16507. " select 70 pcode\n" +
  16508. " ,'杂锈点' pname\n" +
  16509. " ,gt2.goodstypecode gtcode2\n" +
  16510. " ,count(*) defectcount\n" +
  16511. " from tp_pm_defect dd\n" +
  16512. " inner join tp_pm_productiondata pd\n" +
  16513. " on dd.productiondataid = pd.productiondataid\n" +
  16514. " inner join tp_mst_goods g\n" +
  16515. " on dd.goodsid = g.goodsid\n" +
  16516. " inner join tp_mst_goodstype gt\n" +
  16517. " on gt.goodstypeid = g.goodstypeid\n" +
  16518. " inner join tp_mst_goodstype gt2\n" +
  16519. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16520. " where dd.valueflag = '1'\n" +
  16521. " and dd.accountid = :accountid\n" +
  16522. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16523. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16524. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16525. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16526. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16527. // 恒洁三车间特殊处理(质量相关)
  16528. //" and dd.procedureid = :p2ID\n" +
  16529. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  16530. // end
  16531. " and pd.isrefire='0'\n" +
  16532. " and pd.CREATETIME >= :timebegin\n" +
  16533. " and pd.CREATETIME < :timeend\n" +
  16534. ////" -- 铁脏、铜脏、窑脏、釉脏\n" +
  16535. //" and dd.defectid in\n" +
  16536. //" (730, 818, 827, 829, 830, 389, 398, 399, 400, 170)\n" +
  16537. " AND dd.DEFECTNAME like '%脏' \n" +
  16538. //" 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" +
  16539. //" 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" +
  16540. //" )\n" +
  16541. " group by gt2.goodstypecode\n" +
  16542. " union all\n" +
  16543. " select 80 pcode\n" +
  16544. " ,'其他' pname\n" +
  16545. " ,gt2.goodstypecode gtcode2\n" +
  16546. " ,count(*) defectcount\n" +
  16547. " from tp_pm_defect dd\n" +
  16548. " inner join tp_pm_productiondata pd\n" +
  16549. " on dd.productiondataid = pd.productiondataid\n" +
  16550. " LEFT JOIN TP_MST_Defect mstd\n" +
  16551. " ON dd.DefectID = mstd.DefectID\n" +
  16552. " LEFT JOIN TP_MST_DefectType DT\n" +
  16553. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  16554. " inner join tp_mst_goods g\n" +
  16555. " on dd.goodsid = g.goodsid\n" +
  16556. " inner join tp_mst_goodstype gt\n" +
  16557. " on gt.goodstypeid = g.goodstypeid\n" +
  16558. " inner join tp_mst_goodstype gt2\n" +
  16559. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16560. " where dd.valueflag = '1'\n" +
  16561. " and dd.accountid = :accountid\n" +
  16562. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16563. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16564. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16565. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16566. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16567. // 恒洁三车间特殊处理(质量相关)
  16568. //" and dd.procedureid = :p2ID\n" +
  16569. " and (dd.procedureid = 12 or (dd.procedureid = 105 )) \n" +
  16570. // end
  16571. " and pd.isrefire='0'\n" +
  16572. " AND DT.DEFECTTYPENAME IN ('烧成','其他')\n" +
  16573. " and pd.CREATETIME >= :timebegin\n" +
  16574. " and pd.CREATETIME < :timeend\n" +
  16575. ////" -- 成检撞伤、炸坯、炸裂\n" +
  16576. //" and dd.defectid in (393, 180, 394, 395)\n" +
  16577. " and (dd.DEFECTUSERCODE LIKE 'CJ%')\n" +
  16578. " group by gt2.goodstypecode) t\n" +
  16579. " left join (select gt2.goodstypecode gtcode2\n" +
  16580. " ,count(*) outkcount\n" +
  16581. " from tp_pm_productiondata pd\n" +
  16582. " inner join tp_mst_goods g\n" +
  16583. " on pd.goodsid = g.goodsid\n" +
  16584. " inner join tp_mst_goodstype gt\n" +
  16585. " on gt.goodstypeid = g.goodstypeid\n" +
  16586. " inner join tp_mst_goodstype gt2\n" +
  16587. " on length(gt2.goodstypecode)=6 and gt2.accountid = gt.accountid and instr(gt.goodstypecode, gt2.goodstypecode)=1\n" +
  16588. // 恒洁三车间特殊处理(质量相关)
  16589. " where pd.accountid = :accountid\n" +
  16590. " AND ((pd.procedureid = 11 AND pd.valueflag = '1') OR (pd.procedureid = 104 AND pd.isrefire = '0' AND pd.checkflag = '1'))\n" +
  16591. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16592. //" and pd.procedureid = :p1ID\n" +
  16593. // end
  16594. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16595. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16596. " and pd.createtime >= :timebegin\n" +
  16597. " and pd.createtime < :timeend\n" +
  16598. " group by gt2.goodstypecode) outk\n" +
  16599. " on t.gtcode2 = outk.gtcode2\n" +
  16600. " inner join tp_mst_goodstype gt\n" +
  16601. " on gt.goodstypecode = t.gtcode2\n" +
  16602. " and gt.accountid = :accountid\n" +
  16603. " order by t.pcode, t.gtcode2";
  16604. OracleParameter[] oracleParameter = new OracleParameter[]
  16605. {
  16606. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16607. //new OracleParameter(":p1ID",OracleDbType.Int32, p1ID, ParameterDirection.Input),
  16608. //new OracleParameter(":p2ID",OracleDbType.Int32, p2ID, ParameterDirection.Input),
  16609. new OracleParameter(":timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  16610. new OracleParameter(":timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  16611. new OracleParameter(":gtcode2",OracleDbType.Varchar2, gtcode2, ParameterDirection.Input),
  16612. new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, GoodsIDS, ParameterDirection.Input),
  16613. new OracleParameter(":KilnID", OracleDbType.Int32, kid, ParameterDirection.Input),
  16614. };
  16615. ServiceResultEntity sre = new ServiceResultEntity();
  16616. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  16617. if (sre.Data != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0)
  16618. {
  16619. sre.Data.Tables[0].TableName = "S";
  16620. cre.Properties["pcode"] = sre.Data.Tables[0].Rows[0]["pcode"];
  16621. cre.Properties["pname"] = sre.Data.Tables[0].Rows[0]["pname"];
  16622. cre.Properties["gtcode2"] = sre.Data.Tables[0].Rows[0]["gtcode2"];
  16623. ServiceResultEntity sre1 = GetRPT040113DData(cre, sUserInfo);
  16624. if (sre1 != null && sre1.Data != null && sre1.Data.Tables.Count > 0)
  16625. {
  16626. sre1.Data.Tables[0].TableName = "D";
  16627. sre.Data.Merge(sre1.Data.Tables[0]);
  16628. }
  16629. }
  16630. sqlString =
  16631. "select t.gtcode2\n" +
  16632. " ,nvl(t.gtname2, '合计') gtname2\n" +
  16633. " ,sum(t.outk) outk\n" +
  16634. " ,sum(t.cipin) cipin\n" +
  16635. " ,sum(t.outk) - sum(t.cipin) hege\n" +
  16636. " ,decode(sum(t.outk), 0, to_number(null), round(1 - (sum(t.cipin) / sum(t.outk)),4)) hegep\n" +
  16637. " from (select gt2.goodstypecode gtcode2\n" +
  16638. " ,gt2.goodstypename gtname2\n" +
  16639. " ,nvl(sum(decode(pd.procedureid, 11, 1,104,1, 0)), 0) outk\n" +
  16640. " ,nvl(sum(case\n" +
  16641. " when pd.procedureid in (12,105) and\n" +
  16642. " pd.goodsleveltypeid in (6, 7) then\n" +
  16643. " 1\n" +
  16644. " else\n" +
  16645. " 0\n" +
  16646. " end)\n" +
  16647. " ,0) cipin\n" +
  16648. " from tp_pm_productiondata pd\n" +
  16649. " inner join tp_mst_goods g\n" +
  16650. " on pd.goodsid = g.goodsid\n" +
  16651. " inner join tp_mst_goodstype gt\n" +
  16652. " on g.goodstypeid = gt.goodstypeid\n" +
  16653. " inner join tp_mst_goodstype gt2\n" +
  16654. " on length(gt2.goodstypecode) = 6\n" +
  16655. " and gt2.accountid = gt.accountid\n" +
  16656. " and instr(gt.goodstypecode, gt2.goodstypecode) = 1\n" +
  16657. " where ((pd.procedureid <> 104 and pd.valueflag = '1') or (pd.procedureid = 104 and pd.checkflag = '1'))\n" +
  16658. " and pd.accountid = :accountid\n" +
  16659. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16660. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16661. " and (:gtcode2 = '[ALL]' or gt2.goodstypecode = :gtcode2)\n" +
  16662. // 恒洁三车间特殊处理(质量相关)
  16663. //" and (pd.procedureid = :p1ID or pd.procedureid = :p2ID)\n" +
  16664. " AND pd.isrefire = '0'\n" +
  16665. " AND pd.procedureid in (11,12,104,105)\n" +
  16666. // end
  16667. //" and pd.checktime > date '2018-01-01'\n" +
  16668. " and pd.createtime >= :timebegin\n" +
  16669. " and pd.createtime < :timeend\n" +
  16670. " group by gt2.goodstypecode, gt2.goodstypename) t\n" +
  16671. " group by grouping sets((t.gtcode2, t.gtname2),())";
  16672. oracleParameter = new OracleParameter[]
  16673. {
  16674. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16675. //new OracleParameter(":p1ID",OracleDbType.Int32, p1ID, ParameterDirection.Input),
  16676. //new OracleParameter(":p2ID",OracleDbType.Int32, p2ID, ParameterDirection.Input),
  16677. new OracleParameter(":timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  16678. new OracleParameter(":timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  16679. new OracleParameter(":gtcode2",OracleDbType.Varchar2, gtcode2, ParameterDirection.Input),
  16680. new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, GoodsIDS, ParameterDirection.Input),
  16681. new OracleParameter(":KilnID", OracleDbType.Int32, kid, ParameterDirection.Input),
  16682. };
  16683. DataTable alldata = oracleConn.GetSqlResultToDt(sqlString, oracleParameter);
  16684. alldata.TableName = "A";
  16685. DataTable data = sre.Data.Tables[0];
  16686. foreach (DataRow item in alldata.Rows)
  16687. {
  16688. data.Rows.Add(99, "总计", item["gtcode2"], item["cipin"], item["gtname2"], item["outk"], item["hege"], item["hegep"]);
  16689. }
  16690. return sre;
  16691. }
  16692. catch (Exception ex)
  16693. {
  16694. if (oracleConn.ConnState == ConnectionState.Open)
  16695. {
  16696. oracleConn.Close();
  16697. }
  16698. throw ex;
  16699. }
  16700. }
  16701. /// <summary>
  16702. /// 成品工艺质量表-缺陷明细-恒洁三水
  16703. /// </summary>
  16704. /// <param name="cre"></param>
  16705. /// <param name="sUserInfo"></param>
  16706. /// <returns></returns>
  16707. public static ServiceResultEntity GetRPT040113DData(ClientRequestEntity cre, SUserInfo sUserInfo)
  16708. {
  16709. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16710. try
  16711. {
  16712. //int p1ID = 11; // 成检交接工序
  16713. //int p2ID = 12; // 成检登记工序
  16714. int pcode = Convert.ToInt32(cre.Properties["pcode"]);
  16715. string GoodsIDS = cre.Properties["GoodsIDS"] + "";
  16716. string KilnID = cre.Properties["KilnID"] + "";
  16717. if (string.IsNullOrWhiteSpace(GoodsIDS))
  16718. {
  16719. GoodsIDS = "0";
  16720. }
  16721. int kid = 0;
  16722. if (!string.IsNullOrWhiteSpace(KilnID))
  16723. {
  16724. kid = Convert.ToInt32(KilnID);
  16725. }
  16726. string sqlString =
  16727. "select :pcode pcode\n" +
  16728. " ,:pname pname\n" +
  16729. " ,gt2.goodstypecode gtcode2\n" +
  16730. " ,gt2.goodstypename gtname2\n" +
  16731. " ,dd.defectcode\n" +
  16732. " ,dd.defectname\n" +
  16733. " ,count(*) defectcount\n" +
  16734. " from tp_pm_defect dd\n" +
  16735. //"--inner join tp_mst_defect md on md.defectid=dd.defectid\n" +
  16736. " inner join tp_mst_goods g\n" +
  16737. " on dd.goodsid = g.goodsid\n" +
  16738. " inner join tp_pm_productiondata pd\n" +
  16739. " on dd.productiondataid = pd.productiondataid\n" +
  16740. " inner join tp_mst_goodstype gt\n" +
  16741. " on gt.goodstypeid = g.goodstypeid\n" +
  16742. " inner join tp_mst_goodstype gt2\n" +
  16743. " on gt2.goodstypecode = substr(gt.goodstypecode, 1, 6)\n" +
  16744. " and gt2.accountid = :accountid\n" +
  16745. " LEFT JOIN TP_MST_Defect mstd\n" +
  16746. " ON dd.DefectID = mstd.DefectID\n" +
  16747. " LEFT JOIN TP_MST_DefectType DT\n" +
  16748. " ON mstd.DefectTypeID = DT.DefectTypeID\n" +
  16749. " where dd.valueflag = '1'\n" +
  16750. " and dd.accountid = :accountid\n" +
  16751. " and (:KilnID = 0 or pd.KilnID = :KilnID)\n" +
  16752. " AND (:GoodsIDS = '0' or instr(','||:GoodsIDS||',',','||pd.GoodsId||',')>0)\n" +
  16753. " and pd.goodsleveltypeid in (6,7)\n" + // 重烧和次品
  16754. " and dd.DEFECTDEDUCTIONNUM in (1,2,5)\n" + // 缺陷扣除数 1,2,5
  16755. // 恒洁三车间特殊处理(质量相关)
  16756. //" and dd.procedureid = :p2ID\n" +
  16757. " and (dd.procedureid = 12 or dd.procedureid = 105) \n" +
  16758. " and pd.isrefire='0' \n" +
  16759. // end
  16760. " and gt2.goodstypecode like CONCAT(:gtcode2,'%') \n" +
  16761. " and pd.createtime >= :timebegin\n" +
  16762. " and pd.createtime < :timeend\n";
  16763. switch (pcode)
  16764. {
  16765. case 10:
  16766. ////" -- 交坯、干补\n" +
  16767. //sqlString += " and dd.defectprocedureid in (1, 17, 18)\n";
  16768. sqlString +=
  16769. " AND (DT.DEFECTTYPENAME LIKE '成型%'\n" +
  16770. " and (dd.DEFECTUSERCODE LIKE 'F%' OR dd.DEFECTUSERCODE LIKE 'SGY%' OR dd.DEFECTUSERCODE LIKE 'SGB%' OR dd.DEFECTUSERCODE IN('244','245'))\n" +
  16771. " )\n";
  16772. break;
  16773. case 20:
  16774. sqlString +=
  16775. ////" -- 改洗、吹风\n" +
  16776. //" and dd.defectprocedureid in (2, 62)\n" +
  16777. ////" -- 除不平\n" +
  16778. //" and dd.defectid not in (91, 240)\n";
  16779. " and ((gt2.goodstypecode='001001' and dd.defectid in (91,94,144,113,145,114,183))\n" +
  16780. " or (gt2.goodstypecode='001002' and dd.defectid in (91,93,94,144,113,145,114))\n" +
  16781. " )\n";
  16782. break;
  16783. case 30:
  16784. sqlString +=
  16785. ////" -- 二检\n" +
  16786. //" and dd.defectprocedureid in (61)\n";
  16787. " and ((gt2.goodstypecode='001001' and dd.defectid in (89,91,92,93,94,106,115,163,159,133,166,164))\n" +
  16788. " or (gt2.goodstypecode='001002' and dd.defectid in (89,91,92,93,94,106,115,163,133,192,166,164))\n" +
  16789. " )\n";
  16790. break;
  16791. case 40:
  16792. sqlString +=
  16793. ////" -- 施釉\n" +
  16794. //" and dd.defectprocedureid in (3, 4)\n" +
  16795. ////" -- 除铁、铜脏\n" +
  16796. //" and dd.defectid not in (827, 829, 398, 399, 830, 400)\n";
  16797. " 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" +
  16798. " 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" +
  16799. " )\n";
  16800. break;
  16801. case 50:
  16802. sqlString +=
  16803. ////" -- 登窑、入窑、卸窑\n" +
  16804. //" and dd.defectprocedureid in (5, 9, 10)\n";
  16805. " 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" +
  16806. " 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" +
  16807. " )\n";
  16808. break;
  16809. case 60:
  16810. sqlString +=
  16811. ////" -- 惊风、毛针孔、烧裂、窑脏、釉泡\n" +
  16812. //" and dd.defectid in (385\n" +
  16813. //" ,203\n" +
  16814. //" ,836\n" +
  16815. //" ,234\n" +
  16816. //" ,384\n" +
  16817. //" ,202\n" +
  16818. //" ,835\n" +
  16819. //" ,390\n" +
  16820. //" ,818\n" +
  16821. //" ,389\n" +
  16822. //" ,204\n" +
  16823. //" ,814\n" +
  16824. //" ,837\n" +
  16825. //" ,387)\n";
  16826. " and dd.defectid in (234,385,386,387,388,389,390)\n";
  16827. break;
  16828. case 70:
  16829. sqlString +=
  16830. ////" -- 铁脏、铜脏、窑脏、釉脏\n" +
  16831. //" and dd.defectid in\n" +
  16832. //" (730, 818, 827, 829, 830, 389, 398, 399, 400, 170)\n";
  16833. " and dd.defectid in (170,389,398,399)\n";
  16834. break;
  16835. case 80:
  16836. sqlString +=
  16837. ////" -- 成检撞伤、炸坯、炸裂\n" +
  16838. //" and dd.defectid in (393, 180, 394, 395)\n";
  16839. " and ((gt2.goodstypecode='001001' and dd.defectid in (402,393,395,396,397))\n" +
  16840. " or (gt2.goodstypecode='001002' and dd.defectid in (402,394,393,395,396,397))\n" +
  16841. " )\n";
  16842. break;
  16843. default:
  16844. break;
  16845. }
  16846. sqlString +=
  16847. " group by gt2.goodstypecode\n" +
  16848. " ,gt2.goodstypename\n" +
  16849. " ,dd.defectcode\n" +
  16850. " ,dd.defectname\n" +
  16851. " order by dd.defectcode";
  16852. OracleParameter[] oracleParameter = new OracleParameter[]
  16853. {
  16854. new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16855. ////new OracleParameter("p1ID",OracleDbType.Int32, p1ID, ParameterDirection.Input),
  16856. //new OracleParameter("p2ID",OracleDbType.Int32, p2ID, ParameterDirection.Input),
  16857. new OracleParameter("pcode",OracleDbType.Int32, pcode, ParameterDirection.Input),
  16858. new OracleParameter("pname",OracleDbType.NVarchar2, cre.Properties["pname"], ParameterDirection.Input),
  16859. new OracleParameter("gtcode2",OracleDbType.Varchar2, cre.Properties["gtcode2"], ParameterDirection.Input),
  16860. new OracleParameter("timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  16861. new OracleParameter("timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  16862. new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, GoodsIDS, ParameterDirection.Input),
  16863. new OracleParameter(":KilnID", OracleDbType.Int32, kid, ParameterDirection.Input),
  16864. };
  16865. ServiceResultEntity sre = new ServiceResultEntity();
  16866. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  16867. return sre;
  16868. }
  16869. catch (Exception ex)
  16870. {
  16871. if (oracleConn.ConnState == ConnectionState.Open)
  16872. {
  16873. oracleConn.Close();
  16874. }
  16875. throw ex;
  16876. }
  16877. }
  16878. /// <summary>
  16879. /// 半成品工序质量表-恒洁三水
  16880. /// </summary>
  16881. /// <param name="cre"></param>
  16882. /// <param name="sUserInfo"></param>
  16883. /// <returns></returns>
  16884. public static ServiceResultEntity GetRPT040115Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  16885. {
  16886. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  16887. try
  16888. {
  16889. string gtcode = cre.Properties["gtcode"] + "";
  16890. string ProcedureIDS = cre.Properties["ProcedureIDS"] + "";
  16891. string GoodsIDS = cre.Properties["GoodsIDS"] + "";
  16892. string sqlString =
  16893. "SELECT NVL(PP.PROCEDUREID, -1) PROCEDUREID\n" +
  16894. " ,NVL(PP.PROCEDURENAME, '合计') PROCEDURENAME\n" +
  16895. " ,SUM(PP.PCOUNT) PCOUNT\n" +
  16896. " ,SUM(PP.PCOUNT) - SUM(PP.BUHEGE) - SUM(PP.FANGONG) HEGE\n" +
  16897. " ,SUM(PP.BUHEGE) BUHEGE\n" +
  16898. " ,SUM(PP.FANGONG) FANGONG\n" +
  16899. " ,decode(SUM(PP.PCOUNT),null,0,0,0, round((SUM(PP.PCOUNT) - SUM(PP.BUHEGE) - SUM(PP.FANGONG)) / SUM(PP.PCOUNT),4)) HEGELV\n" +
  16900. " FROM (\n" +
  16901. " -- 成型产量\n" +
  16902. " SELECT 0 PROCEDUREID\n" +
  16903. " ,'成型' PROCEDURENAME\n" +
  16904. " ,0 DISPLAYNO\n" +
  16905. " ,T.GOODSID\n" +
  16906. " ,1 PCOUNT\n" +
  16907. " ,0 BUHEGE\n" +
  16908. " ,0 FANGONG\n" +
  16909. " FROM TP_PM_GROUTINGDAILYDETAIL T\n" +
  16910. " WHERE T.VALUEFLAG = '1'\n" +
  16911. " AND T.GROUTINGFLAG = '1'\n" +
  16912. " AND T.CREATETIME >= :timebegin\n" +
  16913. " AND T.CREATETIME < :timeend\n" +
  16914. " UNION ALL\n" +
  16915. " -- 成型不合格-报损\n" +
  16916. " SELECT 0 PROCEDUREID\n" +
  16917. " ,'成型' PROCEDURENAME\n" +
  16918. " ,0 DISPLAYNO\n" +
  16919. " ,T.GOODSID\n" +
  16920. " ,0 PCOUNT\n" +
  16921. " ,1 BUHEGE\n" +
  16922. " ,0 FANGONG\n" +
  16923. " FROM TP_PM_GROUTINGDAILYDETAIL T\n" +
  16924. " WHERE T.VALUEFLAG = '1'\n" +
  16925. " AND T.GROUTINGFLAG = '1'\n" +
  16926. " AND T.SCRAPFLAG = '1'\n" +
  16927. " AND T.SCRAPTIME >= :timebegin\n" +
  16928. " AND T.SCRAPTIME < :timeend\n" +
  16929. " UNION ALL\n" +
  16930. " -- 工序产量\n" +
  16931. " SELECT T.PROCEDUREID\n" +
  16932. " ,TO_CHAR(P.PROCEDURENAME)\n" +
  16933. " ,P.DISPLAYNO\n" +
  16934. " ,T.GOODSID\n" +
  16935. " ,1 PCOUNT\n" +
  16936. " ,0 BUHEGE\n" +
  16937. " ,0 FANGONG\n" +
  16938. " FROM TP_PM_PRODUCTIONDATA T\n" +
  16939. " INNER JOIN TP_PC_PROCEDURE P\n" +
  16940. " ON T.PROCEDUREID = P.PROCEDUREID\n" +
  16941. " WHERE T.VALUEFLAG = '1'\n" +
  16942. " AND P.IS_BEFOREFIRE = '1'\n" +
  16943. " AND T.CREATETIME >= :timebegin\n" +
  16944. " AND T.CREATETIME < :timeend\n" +
  16945. " UNION ALL\n" +
  16946. " -- 工序不合格\n" +
  16947. " SELECT T.PROCEDUREID\n" +
  16948. " ,TO_CHAR(P.PROCEDURENAME)\n" +
  16949. " ,P.DISPLAYNO\n" +
  16950. " ,T.GOODSID\n" +
  16951. " ,0 PCOUNT\n" +
  16952. " ,1 BUHEGE\n" +
  16953. " ,0 FANGONG\n" +
  16954. " FROM TP_PM_SCRAPPRODUCT T\n" +
  16955. " INNER JOIN TP_PC_PROCEDURE P\n" +
  16956. " ON T.PROCEDUREID = P.PROCEDUREID\n" +
  16957. " WHERE T.VALUEFLAG = '1'\n" +
  16958. " AND P.IS_BEFOREFIRE = '1'\n" +
  16959. " AND T.AUDITSTATUS = '1'\n" +
  16960. " AND T.GOODSLEVELTYPEID IN (8, 9, 13, 14)\n" +
  16961. " AND T.AUDITDATE >= :timebegin\n" +
  16962. " AND T.AUDITDATE < :timeend\n" +
  16963. " UNION ALL\n" +
  16964. " -- 半检返工\n" +
  16965. " SELECT T.PROCEDUREID\n" +
  16966. " ,TO_CHAR(P.PROCEDURENAME)\n" +
  16967. " ,P.DISPLAYNO\n" +
  16968. " ,T.GOODSID\n" +
  16969. " ,0 PCOUNT\n" +
  16970. " ,0 BUHEGE\n" +
  16971. " ,1 FANGONG\n" +
  16972. " FROM TP_PM_SEMICHECK T\n" +
  16973. " INNER JOIN TP_PC_PROCEDURE P\n" +
  16974. " ON T.PROCEDUREID = P.PROCEDUREID\n" +
  16975. " WHERE T.VALUEFLAG = '1'\n" +
  16976. " AND P.IS_BEFOREFIRE = '1'\n" +
  16977. " AND T.SEMICHECKTYPE = 1\n" +
  16978. " AND T.CREATETIME >= :timebegin\n" +
  16979. " AND T.CREATETIME < :timeend) PP\n" +
  16980. " INNER JOIN TP_MST_GOODS G\n" +
  16981. " ON G.GOODSID = PP.GOODSID\n" +
  16982. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  16983. " ON GT.GOODSTYPEID = G.GOODSTYPEID\n" +
  16984. " WHERE \n" +
  16985. " (:gtcode is null or instr(GT.GOODSTYPECODE,:gtcode)=1)\n" +
  16986. " AND (:GoodsIDS is null or instr(','||:GoodsIDS||',',','||PP.GOODSID||',')>0)\n" +
  16987. " AND (:ProcedureIDS is null or instr(','||:ProcedureIDS||',',','||PP.PROCEDUREID||',')>0)\n" +
  16988. " GROUP BY GROUPING SETS((PP.PROCEDUREID, PP.PROCEDURENAME, PP.DISPLAYNO), ())\n" +
  16989. " ORDER BY PP.DISPLAYNO\n" +
  16990. " ,PP.PROCEDURENAME";
  16991. OracleParameter[] oracleParameter = new OracleParameter[]
  16992. {
  16993. //new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  16994. new OracleParameter(":timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  16995. new OracleParameter(":timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  16996. new OracleParameter(":gtcode",OracleDbType.Varchar2, gtcode, ParameterDirection.Input),
  16997. new OracleParameter(":GoodsIDS", OracleDbType.Varchar2, GoodsIDS, ParameterDirection.Input),
  16998. new OracleParameter(":ProcedureIDS",OracleDbType.Varchar2, ProcedureIDS, ParameterDirection.Input),
  16999. };
  17000. ServiceResultEntity sre = new ServiceResultEntity();
  17001. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  17002. if (sre.Data != null && sre.Data.Tables.Count > 0 && sre.Data.Tables[0].Rows.Count > 0)
  17003. {
  17004. sre.Data.Tables[0].TableName = "S";
  17005. int PROCEDUREID = Convert.ToInt32(sre.Data.Tables[0].Rows[0]["PROCEDUREID"]);
  17006. if (PROCEDUREID != 0)
  17007. {
  17008. cre.Properties["PROCEDUREID"] = sre.Data.Tables[0].Rows[0]["PROCEDUREID"];
  17009. ServiceResultEntity sre1 = GetRPT040115DData(cre, sUserInfo);
  17010. if (sre1 != null && sre1.Data != null && sre1.Data.Tables.Count > 0)
  17011. {
  17012. sre1.Data.Tables[0].TableName = "D";
  17013. sre.Data.Merge(sre1.Data.Tables[0]);
  17014. }
  17015. }
  17016. }
  17017. return sre;
  17018. }
  17019. catch (Exception ex)
  17020. {
  17021. if (oracleConn.ConnState == ConnectionState.Open)
  17022. {
  17023. oracleConn.Close();
  17024. }
  17025. throw ex;
  17026. }
  17027. }
  17028. /// <summary>
  17029. /// 半成品工序质量表-缺陷明细-恒洁三水
  17030. /// </summary>
  17031. /// <param name="cre"></param>
  17032. /// <param name="sUserInfo"></param>
  17033. /// <returns></returns>
  17034. public static ServiceResultEntity GetRPT040115DData(ClientRequestEntity cre, SUserInfo sUserInfo)
  17035. {
  17036. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17037. try
  17038. {
  17039. string gtcode = cre.Properties["gtcode"] + "";
  17040. string ProcedureIDS = cre.Properties["ProcedureIDS"] + "";
  17041. string GoodsIDS = cre.Properties["GoodsIDS"] + "";
  17042. int PROCEDUREID = Convert.ToInt32(cre.Properties["PROCEDUREID"]);
  17043. string sqlString = "\n" +
  17044. "SELECT P.PROCEDURENAME\n" +
  17045. " ,SD.DEFECTNAME\n" +
  17046. " ,COUNT(SD.SEMICHECKDEFECTID) DCOUNT\n" +
  17047. " FROM TP_PM_SEMICHECK T\n" +
  17048. " INNER JOIN TP_PC_PROCEDURE P\n" +
  17049. " ON P.PROCEDUREID = T.PROCEDUREID\n" +
  17050. " INNER JOIN TP_PM_SEMICHECKDEFECT SD\n" +
  17051. " ON SD.SEMICHECKID = T.SEMICHECKID\n" +
  17052. " INNER JOIN TP_MST_GOODS G\n" +
  17053. " ON G.GOODSID = T.GOODSID\n" +
  17054. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  17055. " ON GT.GOODSTYPEID = G.GOODSTYPEID\n" +
  17056. " WHERE T.VALUEFLAG = '1'\n" +
  17057. //" AND T.PROCEDUREID = 65\n" +
  17058. " AND (:gtcode is null or instr(GT.GOODSTYPECODE,:gtcode)=1)\n" +
  17059. " AND (:GoodsIDS is null or instr(','||:GoodsIDS||',',','||G.GOODSID||',')>0)\n" +
  17060. " AND ((:PROCEDUREID = -1 and (:ProcedureIDS is null or instr(','||:ProcedureIDS||',',','||T.PROCEDUREID||',')>0)) or (:PROCEDUREID <> -1 and T.PROCEDUREID=:PROCEDUREID))\n" +
  17061. " AND T.CREATETIME >= :timebegin\n" +
  17062. " AND T.CREATETIME < :timeend\n" +
  17063. " AND SD.VALUEFLAG = '1'\n" +
  17064. " GROUP BY P.PROCEDURENAME\n" +
  17065. " ,SD.DEFECTNAME\n" +
  17066. "UNION ALL\n" +
  17067. "SELECT P.PROCEDURENAME\n" +
  17068. " ,SD.DEFECTNAME\n" +
  17069. " ,COUNT(SD.SEMICHECKDEFECTID) DCOUNT\n" +
  17070. " FROM TP_PM_SEMICHECK T\n" +
  17071. " INNER JOIN TP_PC_PROCEDURE P\n" +
  17072. " ON P.PROCEDUREID = T.PROCEDUREID\n" +
  17073. " INNER JOIN TP_PM_SEMICHECKDEFECT SD\n" +
  17074. " ON SD.SEMICHECKID = T.SEMICHECKID\n" +
  17075. " INNER JOIN TP_MST_GOODS G\n" +
  17076. " ON G.GOODSID = T.GOODSID\n" +
  17077. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  17078. " ON GT.GOODSTYPEID = G.GOODSTYPEID\n" +
  17079. " WHERE T.VALUEFLAG = '1'\n" +
  17080. " AND (:gtcode is null or instr(GT.GOODSTYPECODE,:gtcode)=1)\n" +
  17081. " AND (:GoodsIDS is null or instr(','||:GoodsIDS||',',','||G.GOODSID||',')>0)\n" +
  17082. " AND ((:PROCEDUREID = -1 and (:ProcedureIDS is null or instr(','||:ProcedureIDS||',',','||T.PROCEDUREID||',')>0)) or (:PROCEDUREID <> -1 and T.PROCEDUREID=:PROCEDUREID))\n" +
  17083. " AND t.SEMICHECKTYPE = 1 \n" +
  17084. " AND t.BARCODE IN ( \n" +
  17085. " SELECT DISTINCT a.BARCODE \n" +
  17086. " FROM TP_PM_SCRAPPRODUCT a \n" +
  17087. " WHERE a.GOODSLEVELTYPEID = 14 \n" +
  17088. " AND a.AUDITDATE >= :timebegin \n" +
  17089. " AND a.AUDITDATE < :timeend ) \n" +
  17090. " AND SD.VALUEFLAG = '1'\n" +
  17091. " GROUP BY P.PROCEDURENAME\n" +
  17092. " ,SD.DEFECTNAME\n" +
  17093. "UNION ALL\n" +
  17094. "SELECT P.PROCEDURENAME\n" +
  17095. " ,T.RREASON\n" +
  17096. " ,COUNT(T.SCRAPPRODUCTID) DCOUNT\n" +
  17097. " FROM TP_PM_SCRAPPRODUCT T\n" +
  17098. " INNER JOIN TP_PC_PROCEDURE P\n" +
  17099. " ON T.PROCEDUREID = P.PROCEDUREID\n" +
  17100. " INNER JOIN TP_MST_GOODS G\n" +
  17101. " ON G.GOODSID = T.GOODSID\n" +
  17102. " INNER JOIN TP_MST_GOODSTYPE GT\n" +
  17103. " ON GT.GOODSTYPEID = G.GOODSTYPEID\n" +
  17104. " WHERE T.VALUEFLAG = '1'\n" +
  17105. " AND P.IS_BEFOREFIRE = '1'\n" +
  17106. " AND T.AUDITSTATUS = '1'\n" +
  17107. //" AND T.PROCEDUREID = 65\n" +
  17108. " AND (:gtcode is null or instr(GT.GOODSTYPECODE,:gtcode)=1)\n" +
  17109. " AND (:GoodsIDS is null or instr(','||:GoodsIDS||',',','||G.GOODSID||',')>0)\n" +
  17110. " AND ((:PROCEDUREID = -1 and (:ProcedureIDS is null or instr(','||:ProcedureIDS||',',','||T.PROCEDUREID||',')>0)) or (:PROCEDUREID <> -1 and T.PROCEDUREID=:PROCEDUREID))\n" +
  17111. " AND T.GOODSLEVELTYPEID IN (8, 9)\n" +
  17112. " AND T.AUDITDATE >= :timebegin\n" +
  17113. " AND T.AUDITDATE < :timeend\n" +
  17114. " GROUP BY P.PROCEDURENAME\n" +
  17115. " ,T.RREASON";
  17116. OracleParameter[] oracleParameter = new OracleParameter[]
  17117. {
  17118. //new OracleParameter("accountid",OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  17119. new OracleParameter(":timebegin",OracleDbType.Date, cre.Properties["timebegin"], ParameterDirection.Input),
  17120. new OracleParameter(":timeend",OracleDbType.Date, cre.Properties["timeend"], ParameterDirection.Input),
  17121. new OracleParameter(":gtcode",OracleDbType.Varchar2, gtcode, ParameterDirection.Input),
  17122. new OracleParameter(":GoodsIDS", OracleDbType.Varchar2, GoodsIDS, ParameterDirection.Input),
  17123. new OracleParameter(":ProcedureIDS",OracleDbType.Varchar2, ProcedureIDS, ParameterDirection.Input),
  17124. new OracleParameter(":PROCEDUREID",OracleDbType.Int32, PROCEDUREID, ParameterDirection.Input),
  17125. };
  17126. ServiceResultEntity sre = new ServiceResultEntity();
  17127. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  17128. return sre;
  17129. }
  17130. catch (Exception ex)
  17131. {
  17132. if (oracleConn.ConnState == ConnectionState.Open)
  17133. {
  17134. oracleConn.Close();
  17135. }
  17136. throw ex;
  17137. }
  17138. }
  17139. /// <summary>
  17140. /// 综合合格率分析表-半成品报废率分析表
  17141. /// </summary>
  17142. /// <param name="cre"></param>
  17143. /// <param name="sUserInfo"></param>
  17144. /// <returns></returns>
  17145. public static ServiceResultEntity GetRPT040114_1Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17146. {
  17147. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17148. try
  17149. {
  17150. ServiceResultEntity sre = new ServiceResultEntity();
  17151. List<OracleParameter> oracleParameters = new List<OracleParameter>();
  17152. oracleParameters.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  17153. /*string sqlString = "select g.goodscode\n" +
  17154. " ,tt.d_num\n" +
  17155. " ,tt.b_num\n" +
  17156. " ,tt.f_num\n" +
  17157. " ,tt.s_num\n" +
  17158. " ,decode(tt.d_num\n" +
  17159. " ,0\n" +
  17160. " ,to_number(null)\n" +
  17161. " ,round((tt.b_num + tt.f_num + tt.s_num) / tt.d_num,4)) sp_r\n" +
  17162. " from (select t.goodsid\n" +
  17163. " ,nvl(sum(decode(t.numtype, 'A', t.id_num, 0)), 0) d_num -- 交坯\n" +
  17164. " ,nvl(sum(decode(t.numtype, '2', t.id_num, 0)), 0) b_num -- 半检不合格数\n" +
  17165. " ,nvl(sum(decode(t.numtype, '3', t.id_num, 0)), 0) f_num -- 复检不合格数\n" +
  17166. " ,nvl(sum(decode(t.numtype, '0', t.id_num, 0)), 0) s_num -- 损坯数\n" +
  17167. " from (select gdd.goodsid\n" +
  17168. " ,'A' numtype\n" +
  17169. " ,count(gdd.groutingdailydetailid) id_num\n" +
  17170. " from tp_pm_groutingdailydetail gdd\n" +
  17171. " where gdd.groutingflag = '1'\n" +
  17172. " and gdd.valueflag = '1'\n" +
  17173. " and gdd.accountid = :accountid\n" +
  17174. " and gdd.deliverflag = '1'\n" +
  17175. " and gdd.delivertime >= :datebegin\n" +
  17176. " and gdd.delivertime < :dateend\n" +
  17177. " group by gdd.goodsid\n" +
  17178. " union all\n" +
  17179. " -- 半检不合格数 复检不合格数 损坯数\n" +
  17180. " select sp.goodsid\n" +
  17181. " ,sp.SCRAPTYPE numtype\n" +
  17182. " ,count(sp.scrapproductid) id_num\n" +
  17183. " from tp_pm_scrapproduct sp\n" +
  17184. " where sp.valueflag = '1'\n" +
  17185. " and sp.accountid = :accountid\n" +
  17186. " and sp.auditstatus = 1\n" +
  17187. " and sp.KILNID is null\n" +
  17188. " and sp.SCRAPTYPE <> '1'\n" +
  17189. " and sp.AUDITDATE >= :datebegin\n" +
  17190. " and sp.AUDITDATE < :dateend\n" +
  17191. " group by sp.goodsid, sp.SCRAPTYPE) t\n" +
  17192. " group by t.goodsid) tt\n" +
  17193. " inner join tp_mst_goods g\n" +
  17194. " on tt.goodsid = g.goodsid\n" +
  17195. " order by g.goodscode";*/
  17196. //2021年11月12日08:40:51 by fy modify
  17197. //增加干补列。
  17198. //增加合格率。合格率= 1 – (半检不合格+复检不合格+损坯数–干补数) / 交坯数
  17199. //报废率改为=(半检不合格+复检不合格+损坯数–干补数) / 交坯数
  17200. //型号查询功能
  17201. ////*************************************************修改开始*******************************************************
  17202. string sqlString = "select g.goodscode ,g.GOODSNAME\n" +
  17203. " ,tt.d_num\n" +
  17204. " ,tt.b_num\n" +
  17205. " ,tt.f_num\n" +
  17206. " ,tt.s_num\n" +
  17207. " ,tt.g_num\n" +
  17208. " ,decode(tt.d_num\n" +
  17209. " ,0\n" +
  17210. " ,to_number(null)\n" +
  17211. " ,round(1-(tt.b_num + tt.f_num + tt.s_num - tt.g_num) / tt.d_num,4)) hg_r\n" +
  17212. " ,decode(tt.d_num\n" +
  17213. " ,0\n" +
  17214. " ,to_number(null)\n" +
  17215. " ,round((tt.b_num + tt.f_num + tt.s_num - tt.g_num) / tt.d_num,4)) sp_r\n" +
  17216. " from (select t.goodsid\n" +
  17217. " ,nvl(sum(decode(t.numtype, 'A', t.id_num, 0)), 0) d_num -- 交坯\n" +
  17218. " ,nvl(sum(decode(t.numtype, '2', t.id_num, 0)), 0) b_num -- 半检不合格数\n" +
  17219. " ,nvl(sum(decode(t.numtype, '3', t.id_num, 0)), 0) f_num -- 复检不合格数\n" +
  17220. " ,nvl(sum(decode(t.numtype, '0', t.id_num, 0)), 0) s_num -- 损坯数\n" +
  17221. " ,nvl(sum(decode(t.numtype, 'B', t.id_num, 0)), 0) g_num -- 干补数\n" +
  17222. " from (select gdd.goodsid\n" +
  17223. " ,'A' numtype\n" +
  17224. " ,count(gdd.groutingdailydetailid) id_num\n" +
  17225. " from tp_pm_groutingdailydetail gdd\n" +
  17226. " LEFT JOIN TP_PM_PRODUCTIONDATA tppd ON gdd.BARCODE = tppd.BARCODE\n" +
  17227. " where gdd.groutingflag = '1'\n" +
  17228. " and gdd.valueflag = '1'\n" +
  17229. " and gdd.accountid = :accountid\n" +
  17230. " and tppd.PROCEDUREID = 7\n" +
  17231. " and gdd.delivertime >= :datebegin\n" +
  17232. " and gdd.delivertime < :dateend\n" +
  17233. " group by gdd.goodsid\n" +
  17234. " union all\n" +
  17235. " -- 半检不合格数 复检不合格数 损坯数\n" +
  17236. " select sp.goodsid\n" +
  17237. " ,sp.SCRAPTYPE numtype\n" +
  17238. " ,count(sp.scrapproductid) id_num\n" +
  17239. " from tp_pm_scrapproduct sp\n" +
  17240. " where sp.valueflag = '1'\n" +
  17241. " and sp.accountid = :accountid\n" +
  17242. " and sp.auditstatus = 1\n" +
  17243. " and sp.KILNID is null\n" +
  17244. " and sp.SCRAPTYPE <> '1'\n" +
  17245. " and sp.AUDITDATE >= :datebegin\n" +
  17246. " and sp.AUDITDATE < :dateend\n" +
  17247. " group by sp.goodsid, sp.SCRAPTYPE" +
  17248. " union all\n" +
  17249. " -- 干补数\n" +
  17250. " select pd.goodsid\n" +
  17251. " ,'B' numtype\n" +
  17252. " ,count( pd.productiondataid ) id_num \n" +
  17253. " from tp_pm_productiondata pd \n" +
  17254. " where pd.valueflag = 1 \n" +
  17255. " and pd.accountid = :accountid \n" +
  17256. " and pd.procedureid = 18 \n" +
  17257. " and pd.specialrepairflag = 1\n" +
  17258. " and pd.createtime >= :datebegin \n" +
  17259. " and pd.createtime < :dateend \n" +
  17260. " group by pd.goodsid \n" +
  17261. ") t\n" +
  17262. " group by t.goodsid) tt\n" +
  17263. " inner join tp_mst_goods g\n" +
  17264. " on tt.goodsid = g.goodsid\n";
  17265. if (!string.IsNullOrWhiteSpace(cre.Properties["goodscode"] + ""))
  17266. {
  17267. sqlString += " where instr(g.goodscode, :goodscode) > 0 \n";
  17268. oracleParameters.Add(new OracleParameter(":goodscode", cre.Properties["goodscode"]));
  17269. }
  17270. sqlString += " order by g.goodscode";
  17271. //*************************************************修改结束*******************************************************
  17272. oracleParameters.Add(new OracleParameter(":datebegin", cre.Properties["datebegin"]));
  17273. oracleParameters.Add(new OracleParameter(":dateend", cre.Properties["dateend"]));
  17274. //// 产品编码 GOODSCODE
  17275. //if (!string.IsNullOrWhiteSpace(cre.Properties["GOODSCODE"] + ""))
  17276. //{
  17277. // sqlString += " and instr(sr.GOODSCODE,:GOODSCODE) > 0 \n";
  17278. // oracleParameters.Add(new OracleParameter(":GOODSCODE", cre.Properties["GOODSCODE"]));
  17279. //}
  17280. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameters.ToArray());
  17281. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  17282. {
  17283. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17284. return sre;
  17285. }
  17286. sre.Data = result;
  17287. return sre;
  17288. }
  17289. catch (Exception ex)
  17290. {
  17291. throw ex;
  17292. }
  17293. finally
  17294. {
  17295. oracleConn?.Close();
  17296. }
  17297. }
  17298. /// <summary>
  17299. /// 半成品检验判级明细表判定等级下拉框
  17300. /// </summary>
  17301. /// <param name="cre"></param>
  17302. /// <param name="sUserInfo"></param>
  17303. /// <returns></returns>
  17304. public static ServiceResultEntity GetRPT080110Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17305. {
  17306. IDBConnection conn = null;
  17307. try
  17308. {
  17309. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17310. List<OracleParameter> parameters = new List<OracleParameter>();
  17311. string sqlString = "SELECT GOODSLEVELTYPEID,GOODSLEVELTYPENAME FROM TP_SYS_GOODSLEVELTYPE WHERE GOODSLEVELTYPEID = 1 OR GOODSLEVELTYPEID = 2 OR GOODSLEVELTYPEID = 15";
  17312. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  17313. ServiceResultEntity sre = new ServiceResultEntity();
  17314. if (data == null || data.Rows.Count == 0)
  17315. {
  17316. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17317. return sre;
  17318. }
  17319. sre.Data = new DataSet();
  17320. sre.Data.Tables.Add(data);
  17321. return sre;
  17322. }
  17323. catch (Exception ex)
  17324. {
  17325. throw ex;
  17326. }
  17327. finally
  17328. {
  17329. if (conn != null &&
  17330. conn.ConnState == ConnectionState.Open)
  17331. {
  17332. conn.Close();
  17333. }
  17334. }
  17335. }
  17336. /// <summary>
  17337. /// 半成品检验判级明细表查询
  17338. /// </summary>
  17339. /// <param name="cre"></param>
  17340. /// <param name="sUserInfo"></param>
  17341. /// <returns></returns>
  17342. public static ServiceResultEntity GetRPT080110Data_Seach(ClientRequestEntity cre, SUserInfo sUserInfo)
  17343. {
  17344. IDBConnection conn = null;
  17345. try
  17346. {
  17347. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17348. List<OracleParameter> parameters = new List<OracleParameter>();
  17349. string sqlString =
  17350. @"SELECT
  17351. PD.BARCODE,
  17352. PD.GOODSCODE,
  17353. GT.GOODSTYPENAME,
  17354. PD.GROUTINGLINECODE,
  17355. P.PROCEDURENAME,
  17356. DECODE(PD.GOODSLEVELID, 1, '良品', 2, '返工', 15, '复检') as GOODSLEVELNAME,
  17357. DECODE(PD.VALUEFLAG, 1, '有效', 0, '历史') as VALUEFLAG,
  17358. PD.GROUTINGUSERCODE,
  17359. PD.CREATETIME,
  17360. PD.USERCODE
  17361. FROM
  17362. TP_PM_PRODUCTIONDATA PD
  17363. INNER JOIN TP_PC_PROCEDURE P ON PD.PROCEDUREID = P.PROCEDUREID
  17364. AND P.MODELTYPE = -3
  17365. INNER JOIN TP_MST_GOODS G ON PD.GOODSID = G.GOODSID
  17366. INNER JOIN TP_MST_GOODSTYPE GT ON G.GOODSTYPEID = GT.GOODSTYPEID
  17367. WHERE 1 = 1";
  17368. //产品类别
  17369. if (!string.IsNullOrEmpty(cre.Properties["GoodsTypeCode"].ToString()))
  17370. {
  17371. sqlString = sqlString + " AND gt.GOODSTYPENAME= :GoodsTypeCode ";
  17372. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, cre.Properties["GoodsTypeCode"], ParameterDirection.Input));
  17373. }
  17374. // 产品编码
  17375. if (!string.IsNullOrEmpty(cre.Properties["GoodsCode"].ToString()))
  17376. {
  17377. sqlString = sqlString + " AND g.GoodsCode like :GoodsCode";
  17378. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, "%" + cre.Properties["GoodsCode"] + "%", ParameterDirection.Input));
  17379. }
  17380. // 成型线编码
  17381. if (!string.IsNullOrEmpty(cre.Properties["GROUTINGLINECODE"].ToString()))
  17382. {
  17383. sqlString = sqlString + " AND PD.GROUTINGLINECODE like :GROUTINGLINECODE ";
  17384. parameters.Add(new OracleParameter(":GROUTINGLINECODE", OracleDbType.NVarchar2, "%" + cre.Properties["GROUTINGLINECODE"] + "%", ParameterDirection.Input));
  17385. }
  17386. //判定等级
  17387. if (!string.IsNullOrEmpty(cre.Properties["GOODSLEVELID"] + ""))
  17388. {
  17389. if (Convert.ToInt32(cre.Properties["GOODSLEVELID"]) == 0)
  17390. {
  17391. }
  17392. else
  17393. {
  17394. sqlString = sqlString + " AND PD.GOODSLEVELID = :GOODSLEVELID ";
  17395. parameters.Add(new OracleParameter(":GOODSLEVELID", OracleDbType.Int32, cre.Properties["GOODSLEVELID"], ParameterDirection.Input));
  17396. }
  17397. }
  17398. // 登记状态
  17399. if (!string.IsNullOrEmpty(cre.Properties["VALUEFLAG"].ToString()))
  17400. {
  17401. if (cre.Properties["VALUEFLAG"].ToString() == "2")
  17402. {
  17403. }
  17404. else
  17405. {
  17406. sqlString = sqlString + " AND PD.VALUEFLAG= :VALUEFLAG ";
  17407. parameters.Add(new OracleParameter(":VALUEFLAG", OracleDbType.NVarchar2, cre.Properties["VALUEFLAG"], ParameterDirection.Input));
  17408. }
  17409. }
  17410. //登记工序
  17411. if (!string.IsNullOrEmpty(cre.Properties["PROCEDUREID"].ToString() + ""))
  17412. {
  17413. if (Convert.ToInt32(cre.Properties["PROCEDUREID"]) == 0)
  17414. {
  17415. }
  17416. else
  17417. {
  17418. sqlString = sqlString + " AND P.PROCEDUREID = :PROCEDUREID ";
  17419. parameters.Add(new OracleParameter(":PROCEDUREID", OracleDbType.Int32, cre.Properties["PROCEDUREID"], ParameterDirection.Input));
  17420. }
  17421. }
  17422. //半检时间(起始时间)
  17423. if (!string.IsNullOrEmpty(cre.Properties["SemiCheckDateTimeStart"].ToString()))
  17424. {
  17425. sqlString = sqlString + " AND PD.CREATETIME >= :SemiCheckDateTimeStart ";
  17426. parameters.Add(new OracleParameter(":SemiCheckDateTimeStart", OracleDbType.Date, cre.Properties["SemiCheckDateTimeStart"], ParameterDirection.Input));
  17427. }
  17428. //半检时间(结束时间)
  17429. if (!string.IsNullOrEmpty(cre.Properties["SemiCheckDateTimeEnd"].ToString()))
  17430. {
  17431. sqlString = sqlString + " AND PD.CREATETIME < :SemiCheckDateTimeEnd ";
  17432. parameters.Add(new OracleParameter(":SemiCheckDateTimeEnd", OracleDbType.Date, cre.Properties["SemiCheckDateTimeEnd"], ParameterDirection.Input));
  17433. }
  17434. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  17435. ServiceResultEntity sre = new ServiceResultEntity();
  17436. if (data == null || data.Rows.Count == 0)
  17437. {
  17438. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17439. return sre;
  17440. }
  17441. sre.Data = new DataSet();
  17442. sre.Data.Tables.Add(data);
  17443. return sre;
  17444. }
  17445. catch (Exception ex)
  17446. {
  17447. throw ex;
  17448. }
  17449. finally
  17450. {
  17451. if (conn != null &&
  17452. conn.ConnState == ConnectionState.Open)
  17453. {
  17454. conn.Close();
  17455. }
  17456. }
  17457. }
  17458. /// <summary>
  17459. /// 半成品检验判级明细表登记工序下拉框
  17460. /// </summary>
  17461. /// <param name="cre"></param>
  17462. /// <param name="sUserInfo"></param>
  17463. /// <returns></returns>
  17464. public static ServiceResultEntity GetRPT080110_2Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17465. {
  17466. IDBConnection conn = null;
  17467. try
  17468. {
  17469. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17470. List<OracleParameter> parameters = new List<OracleParameter>();
  17471. string sqlString = "SELECT PROCEDUREID,PROCEDURENAME FROM TP_PC_PROCEDURE WHERE MODELTYPE = -3";
  17472. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  17473. ServiceResultEntity sre = new ServiceResultEntity();
  17474. if (data == null || data.Rows.Count == 0)
  17475. {
  17476. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17477. return sre;
  17478. }
  17479. sre.Data = new DataSet();
  17480. sre.Data.Tables.Add(data);
  17481. return sre;
  17482. }
  17483. catch (Exception ex)
  17484. {
  17485. throw ex;
  17486. }
  17487. finally
  17488. {
  17489. if (conn != null &&
  17490. conn.ConnState == ConnectionState.Open)
  17491. {
  17492. conn.Close();
  17493. }
  17494. }
  17495. }
  17496. /// <summary>
  17497. /// 综合合格率分析表-综合优等率分析表
  17498. /// </summary>
  17499. /// <param name="cre"></param>
  17500. /// <param name="sUserInfo"></param>
  17501. /// <returns></returns>
  17502. public static ServiceResultEntity GetRPT040114_2Data(ClientRequestEntity cre, SUserInfo sUserInfo)
  17503. {
  17504. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17505. try
  17506. {
  17507. ServiceResultEntity sre = new ServiceResultEntity();
  17508. List<OracleParameter> oracleParameters = new List<OracleParameter>();
  17509. oracleParameters.Add(new OracleParameter(":accountid", sUserInfo.AccountID));
  17510. string sqlString = "\n" +
  17511. "select g.goodscode ,g.GOODSNAME\n" +
  17512. " ,pp.b_out_num\n" +
  17513. " ,(pp.b_out_num - pp.b_bad_num) b_h_num\n" +
  17514. " ,(pp.c_out_num - pp.c_bad_num) c_h_num\n" +
  17515. " ,decode(pp.b_out_num\n" +
  17516. " ,0\n" +
  17517. " ,to_number(null)\n" +
  17518. " ,round((pp.b_out_num - pp.b_bad_num + pp.c_out_num - pp.c_bad_num) /\n" +
  17519. " pp.b_out_num,4)) zh_r\n" +
  17520. " from (select p.goodsid\n" +
  17521. // 恒洁三车间特殊处理(质量相关)
  17522. //" ,nvl(sum(decode(p.procedureid, 11, 1, 0)), 0) b_out_num -- 本烧出窑数\n" +
  17523. //" ,nvl(sum(decode(p.procedureid, 12, 1, 0)), 0) b_bad_num -- 本烧不合格数\n" +
  17524. //" ,nvl(sum(decode(p.procedureid, 58, 1, 0)), 0) c_out_num -- 重烧出窑数\n" +
  17525. //" ,nvl(sum(decode(p.procedureid, 59, 1, 0)), 0) c_bad_num -- 重烧不合格数\n" +
  17526. " ,nvl(sum(case when p.procedureid in (14,56) and p.isrefire='0' then 1 else 0 end), 0) b_out_num -- 本烧出窑数\n" +
  17527. " ,nvl(sum(case when p.GOODSLEVELID in (5,6,7,16) and p.isrefire='0' then 1 else 0 end), 0) b_bad_num -- 本烧不合格数\n" +
  17528. " ,nvl(sum(case when p.procedureid in (26) and p.isrefire='6' then 1 else 0 end), 0) c_out_num -- 重烧出窑数\n" +
  17529. " ,nvl(sum(case when p.GOODSLEVELID in (5,6,7,16) and p.isrefire='6' then 1 else 0 end), 0) c_bad_num -- 重烧不合格数\n" +
  17530. // end
  17531. " from tp_pm_productiondata p\n" +
  17532. " where p.valueflag = '1'\n" +
  17533. " and p.accountid = :accountid\n" +
  17534. " and p.createtime >= :datebegin\n" +
  17535. " and p.createtime < :dateend\n";
  17536. // 产品编码条件修正 fenglinyong modify 2022-05-10
  17537. if (!string.IsNullOrWhiteSpace(cre.Properties["goodscode"] + ""))
  17538. {
  17539. sqlString += " and instr(p.goodscode,:GOODSCODE) > 0 \n";
  17540. oracleParameters.Add(new OracleParameter(":GOODSCODE", cre.Properties["goodscode"]));
  17541. }
  17542. sqlString += " group by p.goodsid) pp\n" +
  17543. " inner join tp_mst_goods g\n" +
  17544. " on g.goodsid = pp.goodsid\n" +
  17545. " WHERE pp.b_out_num != 0\n" +
  17546. " order by g.goodscode";
  17547. oracleParameters.Add(new OracleParameter(":datebegin", cre.Properties["datebegin"]));
  17548. oracleParameters.Add(new OracleParameter(":dateend", cre.Properties["dateend"]));
  17549. DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameters.ToArray());
  17550. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  17551. {
  17552. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17553. return sre;
  17554. }
  17555. sre.Data = result;
  17556. return sre;
  17557. }
  17558. catch (Exception ex)
  17559. {
  17560. throw ex;
  17561. }
  17562. finally
  17563. {
  17564. oracleConn?.Close();
  17565. }
  17566. }
  17567. #region 产成品交接撤销汇总表
  17568. /// <summary>
  17569. /// 取得F_RPT_030117画面(产成品交接撤销汇总表)
  17570. /// </summary>
  17571. /// <param name="user">登录用户信息</param>
  17572. /// <param name="se">查询条件</param>
  17573. /// <returns>查询结果</returns>
  17574. public static ServiceResultEntity GetF_RPT_030117SearchTotalData(SearchFinishedProductEntity orderEntity, SUserInfo user)
  17575. {
  17576. IDBConnection conn = null;
  17577. try
  17578. {
  17579. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17580. string sqlString = "SELECT TS.GID,\n" +
  17581. " DECODE(TS.GID, '3', '合计', DECODE(TS.GID, '1', '小计[' || CREATETIME || ']', CREATETIME)) AS CREATETIME,\n" +
  17582. " DECODE(TS.GID, '1', '--', GOODSMODEL) AS GOODSMODEL,\n" +
  17583. " GOODSCOUNT\n" +
  17584. " FROM (SELECT GROUPING_ID(TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE) AS GID,\n" +
  17585. " DECODE(GROUPING(TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')), 1, '--', TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')) AS CREATETIME,\n" +
  17586. " DECODE(GROUPING(G.GOODSCODE), 1, '--', G.GOODSCODE) AS GOODSMODEL,\n" +
  17587. " COUNT(G.GOODSCODE) AS GOODSCOUNT\n" +
  17588. " FROM TP_PM_FHUNDO F\n" +
  17589. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  17590. " ON F.GROUTINGDAILYDETAILID = GDD.GROUTINGDAILYDETAILID\n" +
  17591. " LEFT JOIN TP_MST_GOODS G\n" +
  17592. " ON G.GOODSID = GDD.GOODSID\n" +
  17593. " WHERE F.ACCOUNTID = :AccountID\n";
  17594. List<OracleParameter> parameters = new List<OracleParameter>();
  17595. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  17596. // 撤销时间
  17597. if (orderEntity.UndoTimeStart != null)
  17598. {
  17599. sqlString = sqlString + " AND F.CREATETIME BETWEEN :UndoTimeStart AND :UndoTimeEnd \n";
  17600. parameters.Add(new OracleParameter(":UndoTimeStart", OracleDbType.Date, orderEntity.UndoTimeStart, ParameterDirection.Input));
  17601. parameters.Add(new OracleParameter(":UndoTimeEnd", OracleDbType.Date, orderEntity.UndoTimeEnd, ParameterDirection.Input));
  17602. }
  17603. // 产品型号
  17604. if (!string.IsNullOrEmpty(orderEntity.GoodsModel))
  17605. {
  17606. sqlString = sqlString + " AND INSTR(g.GoodsCode,:GoodsCode)>0 \n";
  17607. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, orderEntity.GoodsModel, ParameterDirection.Input));
  17608. }
  17609. sqlString += " GROUP BY GROUPING SETS((TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE),\n" +
  17610. " (TO_CHAR(F.CREATETIME, 'yyyy-mm-dd')),())\n" +
  17611. " ORDER BY TO_CHAR(F.CREATETIME, 'yyyy-mm-dd'), G.GOODSCODE) TS";
  17612. ServiceResultEntity sre = new ServiceResultEntity();
  17613. DataSet result = conn.GetSqlResultToDs(sqlString, parameters.ToArray());
  17614. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  17615. {
  17616. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17617. }
  17618. sre.Data = result;
  17619. return sre;
  17620. }
  17621. catch (Exception ex)
  17622. {
  17623. throw ex;
  17624. }
  17625. finally
  17626. {
  17627. if (conn != null &&
  17628. conn.ConnState == ConnectionState.Open)
  17629. {
  17630. conn.Close();
  17631. }
  17632. }
  17633. }
  17634. /// <summary>
  17635. /// 取得F_RPT_030112画面(产成品交接汇总表)的明细信息查询数据
  17636. /// </summary>
  17637. /// <param name="user">登录用户信息</param>
  17638. /// <param name="se">查询条件</param>
  17639. /// <returns>查询结果</returns>
  17640. public static ServiceResultEntity GetF_RPT_030117SearchDetailSData(SearchFinishedProductEntity orderEntity, SUserInfo user)
  17641. {
  17642. IDBConnection conn = null;
  17643. try
  17644. {
  17645. conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  17646. string sqlString = "SELECT O.ORDERNO,\n" +
  17647. " F.FHTIME,\n" +
  17648. " F.FHUSERCODE,\n" +
  17649. " GDD.BARCODE,\n" +
  17650. " GOODS.GOODSCODE,\n" +
  17651. " L.LOGONAME,\n" +
  17652. " GDD.USERCODE AS GROUTINGUSERCODE,\n" +
  17653. " GDD.GROUTINGLINECODE,\n" +
  17654. " GDD.GROUTINGMOULDCODE,\n" +
  17655. " GDD.GROUTINGDATE,\n" +
  17656. " TO_CHAR(GDD.DELIVERTIME, 'yyyy-mm-dd') AS DELIVERTIME,\n" +
  17657. //" (GOODS.MATERIALCODE || L.TAGCODE || GDD.ONLYCODE) AS FINISHEDBARCODE,\n" +
  17658. " 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" +
  17659. " TO_CHAR(F.CREATETIME, 'yyyy-mm-dd HH24:mi:ss') AS UNDOTIME,\n" +
  17660. " UNDOUSER.USERCODE AS UNDOUSERCODE\n" +
  17661. " FROM TP_PM_FHUNDO F\n" +
  17662. " LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  17663. " ON F.GROUTINGDAILYDETAILID = GDD.GROUTINGDAILYDETAILID\n" +
  17664. " LEFT JOIN TP_PM_ORDER O\n" +
  17665. " ON F.FHORDERID = O.ORDERID\n" +
  17666. " LEFT JOIN TP_MST_LOGO L\n" +
  17667. " ON GDD.LOGOID = L.LOGOID\n" +
  17668. " LEFT JOIN TP_MST_GOODS GOODS\n" +
  17669. " ON GDD.GOODSID = GOODS.GOODSID\n" +
  17670. " LEFT JOIN TP_MST_USER UNDOUSER\n" +
  17671. " ON UNDOUSER.USERID = F.CREATEUSERID\n" +
  17672. " WHERE F.ACCOUNTID = :AccountID";
  17673. List<OracleParameter> parameters = new List<OracleParameter>();
  17674. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  17675. // 撤销时间
  17676. if (orderEntity.UndoTimeStart != null)
  17677. {
  17678. sqlString = sqlString + " AND F.CREATETIME BETWEEN :UndoTimeStart AND :UndoTimeEnd \n";
  17679. parameters.Add(new OracleParameter(":UndoTimeStart", OracleDbType.Date, orderEntity.UndoTimeStart, ParameterDirection.Input));
  17680. parameters.Add(new OracleParameter(":UndoTimeEnd", OracleDbType.Date, orderEntity.UndoTimeEnd, ParameterDirection.Input));
  17681. }
  17682. // 产品型号
  17683. if (!string.IsNullOrEmpty(orderEntity.GoodsModel))
  17684. {
  17685. sqlString = sqlString + " AND INSTR(GOODS.GoodsCode,:GoodsCode) > 0 \n";
  17686. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, orderEntity.GoodsModel, ParameterDirection.Input));
  17687. }
  17688. ServiceResultEntity sre = new ServiceResultEntity();
  17689. DataSet result = conn.GetSqlResultToDs(sqlString, parameters.ToArray());
  17690. if (result == null || result.Tables.Count == 0 || result.Tables[0].Rows.Count == 0)
  17691. {
  17692. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  17693. }
  17694. sre.Data = result;
  17695. return sre;
  17696. }
  17697. catch (Exception ex)
  17698. {
  17699. throw ex;
  17700. }
  17701. finally
  17702. {
  17703. if (conn != null &&
  17704. conn.ConnState == ConnectionState.Open)
  17705. {
  17706. conn.Close();
  17707. }
  17708. }
  17709. }
  17710. #endregion
  17711. }
  17712. }