PDAModuleLogic.cs 396 KB

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