PDAModuleLogic.cs 370 KB

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