PMModuleLogic.cs 510 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PMModuleLogic.cs
  5. * 2.功能描述:生产管理服务端业务逻辑
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2015/03/21 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Text;
  14. using Curtain.DataAccess;
  15. using Dongke.IBOSS.PRD.Basics.BaseResources;
  16. using Dongke.IBOSS.PRD.Basics.DataAccess;
  17. using Dongke.IBOSS.PRD.Service.CMNModuleService;
  18. using Dongke.IBOSS.PRD.Service.DataModels;
  19. using Dongke.IBOSS.PRD.WCF.DataModels;
  20. using Dongke.WinForm.Utilities;
  21. using Oracle.ManagedDataAccess.Client;
  22. using DataBaseType = Curtain.DataAccess.DataBaseType;
  23. using System.Threading;
  24. using System.Data.SqlTypes;
  25. namespace Dongke.IBOSS.PRD.Service.PMModuleService
  26. {
  27. /// <summary>
  28. /// 生产管理服务端业务逻辑
  29. /// </summary>
  30. public static class PMModuleLogic
  31. {
  32. #region 注浆管理
  33. #region 注浆登记一览
  34. /// <summary>
  35. /// 取得FPM0101画面(注浆登记)的初始化数据
  36. /// </summary>
  37. /// <param name="user">登录用户信息</param>
  38. /// <returns>初始化数据</returns>
  39. public static ServiceResultEntity GetFPM0101IData(SUserInfo user)
  40. {
  41. IDBConnection conn = null;
  42. try
  43. {
  44. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  45. DataTable dataTable = CMNModuleLogic.GetTP_MST_GMouldType(conn, user, Constant.ValueFlag.Effective);
  46. ServiceResultEntity sre = new ServiceResultEntity();
  47. sre.Data = new DataSet();
  48. sre.Data.Tables.Add(dataTable);
  49. return sre;
  50. }
  51. catch (Exception ex)
  52. {
  53. throw ex;
  54. }
  55. finally
  56. {
  57. if (conn != null &&
  58. conn.ConnState == ConnectionState.Open)
  59. {
  60. conn.Close();
  61. }
  62. }
  63. }
  64. /// <summary>
  65. /// 取得FPM0101画面(注浆登记)的查询数据
  66. /// </summary>
  67. /// <param name="user">登录用户信息</param>
  68. /// <param name="ids">多个注浆id(用[,]分开)</param>
  69. /// <returns>查询结果</returns>
  70. public static ServiceResultEntity GetFPM0101SData(SUserInfo user, string ids)
  71. {
  72. IDBConnection conn = null;
  73. try
  74. {
  75. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  76. List<OracleParameter> parameters = new List<OracleParameter>();
  77. StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0101SSQL());
  78. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  79. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  80. //if (!string.IsNullOrWhiteSpace(ids))
  81. {
  82. ids = "," + ids + ",";
  83. sql.Append(" AND INSTR(:GroutingDailyIDs, ',' || GD.GroutingDailyID || ',') > 0");
  84. parameters.Add(new OracleParameter(":GroutingDailyIDs", OracleDbType.Varchar2, ids, ParameterDirection.Input));
  85. }
  86. sql.Append(" ORDER BY GDD.GroutingLineCode, GDD.GroutingDate, GDD.GroutingDailyID, GDD.GroutingMouldCode");
  87. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  88. ServiceResultEntity sre = new ServiceResultEntity();
  89. if (data == null || data.Rows.Count == 0)
  90. {
  91. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  92. return sre;
  93. }
  94. sre.Data = new DataSet();
  95. sre.Data.Tables.Add(data);
  96. return sre;
  97. }
  98. catch (Exception ex)
  99. {
  100. throw ex;
  101. }
  102. finally
  103. {
  104. if (conn != null &&
  105. conn.ConnState == ConnectionState.Open)
  106. {
  107. conn.Close();
  108. }
  109. }
  110. }
  111. /// <summary>
  112. /// 取得FPM0101画面(注浆登记)的查询数据
  113. /// </summary>
  114. /// <param name="user">登录用户信息</param>
  115. /// <param name="se">查询条件</param>
  116. /// <returns>查询结果</returns>
  117. public static ServiceResultEntity GetFPM0101SData(SUserInfo user, FPM0101_SE se)
  118. {
  119. IDBConnection conn = null;
  120. try
  121. {
  122. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  123. List<OracleParameter> paras = new List<OracleParameter>();
  124. if (se != null)
  125. {
  126. // 成型线编码
  127. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  128. {
  129. paras.Add(new OracleParameter("in_GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  130. }
  131. else {
  132. paras.Add(new OracleParameter("in_GroutingLineCode", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  133. }
  134. // 成型线名称
  135. if (!string.IsNullOrEmpty(se.GroutingLineName))
  136. {
  137. paras.Add(new OracleParameter("in_GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  138. }
  139. else
  140. {
  141. paras.Add(new OracleParameter("in_GroutingLineName", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  142. }
  143. // 成型线类别
  144. if (se.GMouldTypeID.HasValue)
  145. {
  146. paras.Add(new OracleParameter("in_GMouldTypeID", OracleDbType.NVarchar2, se.GMouldTypeID, ParameterDirection.Input));
  147. }
  148. else
  149. {
  150. paras.Add(new OracleParameter("in_GMouldTypeID", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  151. }
  152. // 注浆批次
  153. if (se.GroutingBatchNo.HasValue)
  154. {
  155. paras.Add(new OracleParameter("in_GroutingBatchNo", OracleDbType.NVarchar2, se.GroutingBatchNo, ParameterDirection.Input));
  156. }
  157. else
  158. {
  159. paras.Add(new OracleParameter("in_GroutingBatchNo", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  160. }
  161. // 注浆模具编号
  162. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  163. {
  164. paras.Add(new OracleParameter("in_GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  165. }
  166. else
  167. {
  168. paras.Add(new OracleParameter("in_GroutingMouldCode", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  169. }
  170. // 产品编号
  171. if (!string.IsNullOrEmpty(se.GoodsCode))
  172. {
  173. paras.Add(new OracleParameter("in_GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  174. }
  175. else
  176. {
  177. paras.Add(new OracleParameter("in_GoodsCode", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  178. }
  179. // 产品名称
  180. if (!string.IsNullOrEmpty(se.GoodsName))
  181. {
  182. paras.Add(new OracleParameter("in_GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
  183. }
  184. else
  185. {
  186. paras.Add(new OracleParameter("in_GoodsName", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  187. }
  188. // 备注
  189. if (!string.IsNullOrEmpty(se.Remarks))
  190. {
  191. paras.Add(new OracleParameter("in_Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  192. }
  193. else
  194. {
  195. paras.Add(new OracleParameter("in_Remarks", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  196. }
  197. // 注浆标识
  198. if (!string.IsNullOrEmpty(se.GroutingFlag))
  199. {
  200. paras.Add(new OracleParameter("in_GroutingFlag", OracleDbType.NVarchar2, se.GroutingFlag, ParameterDirection.Input));
  201. }
  202. else
  203. {
  204. paras.Add(new OracleParameter("in_GroutingFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  205. }
  206. // 损坯标识
  207. if (!string.IsNullOrEmpty(se.ScrapFlag))
  208. {
  209. paras.Add(new OracleParameter("in_ScrapFlag", OracleDbType.NVarchar2, se.ScrapFlag, ParameterDirection.Input));
  210. }
  211. else
  212. {
  213. paras.Add(new OracleParameter("in_ScrapFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  214. }
  215. // 成型工号
  216. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  217. {
  218. paras.Add(new OracleParameter("in_GroutingUser", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  219. }
  220. else
  221. {
  222. paras.Add(new OracleParameter("in_GroutingUser", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  223. }
  224. // 条码
  225. if (!string.IsNullOrEmpty(se.BarCode))
  226. {
  227. paras.Add(new OracleParameter("in_BARCODE", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  228. }
  229. else
  230. {
  231. paras.Add(new OracleParameter("in_BARCODE", OracleDbType.NVarchar2,DBNull.Value, ParameterDirection.Input));
  232. }
  233. // 绑定条码
  234. if (!string.IsNullOrEmpty(se.BarCodeFlag))
  235. {
  236. paras.Add(new OracleParameter("in_BarCodeFlag", OracleDbType.NVarchar2, se.BarCodeFlag, ParameterDirection.Input));
  237. }
  238. else {
  239. paras.Add(new OracleParameter("in_BarCodeFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  240. }
  241. // 交坯标识
  242. if (!string.IsNullOrEmpty(se.DeliverFlag))
  243. {
  244. paras.Add(new OracleParameter("in_DeliverFlag", OracleDbType.NVarchar2, se.DeliverFlag, ParameterDirection.Input));
  245. }
  246. else
  247. {
  248. paras.Add(new OracleParameter("in_DeliverFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  249. }
  250. // 试验标识
  251. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  252. {
  253. paras.Add(new OracleParameter("in_TestMouldFlag", OracleDbType.NVarchar2, se.TestMouldFlag, ParameterDirection.Input));
  254. }
  255. else
  256. {
  257. paras.Add(new OracleParameter("in_TestMouldFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  258. }
  259. }
  260. paras.Add(new OracleParameter("in_GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
  261. paras.Add(new OracleParameter("in_GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  262. paras.Add(new OracleParameter("in_DeliverTimeBegin", OracleDbType.Date, se.DeliverTimeBegin==null? SqlDateTime.MinValue.Value: se.DeliverTimeBegin.Value, ParameterDirection.Input));
  263. paras.Add(new OracleParameter("in_DeliverTimeEnd", OracleDbType.Date, se.DeliverTimeEnd == null ? SqlDateTime.MaxValue.Value : se.DeliverTimeEnd.Value.AddDays(1), ParameterDirection.Input));
  264. paras.Add(new OracleParameter("in_AccountID", OracleDbType.NVarchar2, user.AccountID, ParameterDirection.Input));
  265. paras.Add(new OracleParameter("in_UPUserId", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  266. paras.Add(new OracleParameter("out_result", OracleDbType.RefCursor, null, ParameterDirection.Output));
  267. DataSet ds = conn.ExecStoredProcedure("PRO_RPT_F_PM_0101", paras.ToArray());
  268. ServiceResultEntity sre = new ServiceResultEntity();
  269. if (ds == null || ds.Tables.Count == 0)
  270. {
  271. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  272. return sre;
  273. }
  274. sre.Data = ds;
  275. return sre;
  276. }
  277. catch (Exception ex)
  278. {
  279. throw ex;
  280. }
  281. finally
  282. {
  283. if (conn != null &&
  284. conn.ConnState == ConnectionState.Open)
  285. {
  286. conn.Close();
  287. }
  288. }
  289. }
  290. /// <summary>
  291. /// 获取查询sql
  292. /// </summary>
  293. /// <returns>sql</returns>
  294. private static string GetFPM0101SSQL()
  295. {
  296. string selSql = @"SELECT
  297. GROUPING_ID (TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd'),GDD.GroutingLineCode,GDD.GoodsCode) GID,
  298. COUNT(1) AS NUMS,
  299. CASE
  300. WHEN GDD.GroutingDailyDetailID IS NULL AND GROUPING_ID(TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd'),GDD.GroutingLineCode,GDD.GoodsCode) =0 THEN '小计:'||TO_CHAR(GDD.GroutingLineCode)
  301. WHEN GDD.GroutingDailyDetailID IS NULL AND GROUPING_ID(TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd'),GDD.GroutingLineCode,GDD.GoodsCode) =5 THEN '合计:'||TO_CHAR(GDD.GroutingLineCode)
  302. WHEN GDD.GroutingDailyDetailID IS NULL AND GROUPING_ID(TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd'),GDD.GroutingLineCode,GDD.GoodsCode) =7 THEN '总计'
  303. ELSE TO_CHAR(GDD.GroutingLineCode) end GroutingLineCode,
  304. GDD.GroutingDailyDetailID,
  305. GDD.GroutingDailyID,
  306. GDD.GroutingLineDetailID,
  307. GDD.GroutingLineID,
  308. GDD.GroutingLineName,
  309. TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd') AS GroutingDate,
  310. GDD.GroutingBatchNo,
  311. GDD.UserCode,
  312. GDD.GoodsCode,
  313. GDD.GoodsName,
  314. GDD.SLURRY_WEIGHT,
  315. GDD.GroutingMouldCode,
  316. GMS.GMouldStatusName,
  317. GDD.GroutingFlag,
  318. decode( ML.LogoID, NULL, NULL, to_char( ML.LogoName || '[' || ML.LogoCode || ']' ) ) LogoNameCode,
  319. DD.DictionaryValue AS NoGroutingRreason,
  320. GDD.GroutingCount,
  321. GDD.ScrapFlag,
  322. GDD.Remarks,
  323. GMT.GMouldTypeName,
  324. GDD.BarCode,
  325. PRO.PROCEDURENAME,
  326. GDD.DeliverTime,
  327. GDD.DeliverFlag,
  328. MU.UserName AS MONITORName,
  329. GDD.CreateTime,
  330. U.UserName AS Createuser,
  331. GDD.TestFlag,
  332. GDD.TestMouldFlag,
  333. CASE
  334. WHEN GDD.TestFlag = 1 THEN
  335. '试验线'
  336. WHEN GDD.TestFlag = 0 THEN
  337. '普通线'
  338. END TestFlagName,
  339. STAFF.STAFFNAME
  340. FROM
  341. TP_PM_GroutingDaily GD
  342. INNER JOIN TP_PM_GroutingDailyDetail GDD ON GD.GroutingDailyID = GDD.GroutingDailyID
  343. LEFT JOIN TP_PM_INPRODUCTION IP ON IP.GroutingDailyDetailID = gdd.GroutingDailyDetailID
  344. LEFT JOIN TP_PC_PROCEDURE PRO ON PRO.PROCEDUREID = IP.PROCEDUREID
  345. INNER JOIN TP_MST_GMouldType GMT ON GD.GMouldTypeID = GMT.GMouldTypeID
  346. INNER JOIN TP_SYS_GMouldStatus GMS ON GMS.GMouldStatusID = GDD.GMouldStatus
  347. INNER JOIN TP_MST_User U ON U.UserID = GDD.CreateUserID
  348. LEFT JOIN tp_pc_groutingline gl ON gl.groutinglineid = GDD.GroutingLineID
  349. LEFT JOIN tp_mst_user mu ON mu.userid = gl.MONITORID
  350. LEFT JOIN TP_MST_DataDictionary DD ON DD.DictionaryID = GDD.NoGroutingRreason
  351. LEFT JOIN TP_MST_Logo ML ON ML.LogoID = GDD.LogoID
  352. LEFT JOIN (
  353. SELECT
  354. D.CLASSESSETTINGID,LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  355. FROM
  356. ( SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D
  357. GROUP BY D.CLASSESSETTINGID ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  358. WHERE
  359. GD.AccountID =1
  360. AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
  361. selSql += @"AND EXISTS(
  362. SELECT
  363. UP.PurviewID
  364. FROM
  365. TP_MST_UserPurview UP
  366. WHERE
  367. UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'";
  368. selSql +=@"AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)
  369. AND UP.UserId = :UPUserId )";
  370. return selSql;
  371. }
  372. #endregion 注浆登记一览
  373. #region 注浆登记
  374. /// <summary>
  375. /// 取得FPM0102画面(注浆登记)的初始化数据
  376. /// </summary>
  377. /// <param name="user">登录用户信息</param>
  378. /// <param name="groutingDailyID">注浆日报ID</param>
  379. /// <returns>
  380. /// 初始化数据
  381. /// 注浆数据
  382. /// OtherStatus = 1:没有可编辑的注浆信息
  383. /// OtherStatus = 2:没有可编辑的注浆明细信息
  384. /// </returns>
  385. public static ServiceResultEntity GetFPM0102IData(SUserInfo user, int groutingDailyID)
  386. {
  387. IDBConnection conn = null;
  388. try
  389. {
  390. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  391. ServiceResultEntity sre = new ServiceResultEntity();
  392. DataTable dataTable = CMNModuleLogic.GetTP_MST_DataDictionary(conn, user, Constant.DictionaryType.TPC004, Constant.ValueFlag.Effective);
  393. // 账务日期
  394. object date = CMNModuleLogic.GetAccountDate(conn, user);
  395. if (date == null || date == DBNull.Value)
  396. {
  397. // 服务器时间错误
  398. //throw new Exception("SystemDateTimeError");
  399. sre.Status = Constant.ServiceResultStatus.AccountDateError;
  400. return sre;
  401. }
  402. sre.Data = new DataSet();
  403. dataTable.TableName = Constant.DictionaryType.TPC004.ToString();
  404. sre.Data.Tables.Add(dataTable);
  405. sre.Result = date;
  406. // 编辑时,取得注浆日报信息
  407. if (groutingDailyID > 0)
  408. {
  409. StringBuilder sql = new StringBuilder();
  410. List<OracleParameter> parameters = new List<OracleParameter>();
  411. string gdSql =
  412. "SELECT GD.GroutingDailyID," +
  413. " GD.GroutingLineID," +
  414. " GD.GroutingLineCode," +
  415. " GD.GroutingLineName," +
  416. " GD.MouldQuantity," +
  417. " GD.GroutingDate," +
  418. " GD.OPTimeStamp" +
  419. " FROM TP_PM_GroutingDaily GD" +
  420. " WHERE GD.AccountID = :AccountID" +
  421. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  422. // 成型线操作权限
  423. " AND EXISTS (SELECT UP.PurviewID" +
  424. " FROM TP_MST_UserPurview UP" +
  425. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  426. " AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
  427. " AND UP.UserId = :UPUserId)" +
  428. " AND GD.GroutingDailyID = :GroutingDailyID";
  429. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  430. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  431. parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
  432. DataTable gdData = conn.GetSqlResultToDt(gdSql, parameters.ToArray());
  433. if (gdData == null || gdData.Rows.Count == 0)
  434. {
  435. // 没有可编辑的注浆信息
  436. sre.Status = Constant.ServiceResultStatus.Other;
  437. sre.OtherStatus = 1;
  438. sre.Message = "没有可编辑的注浆信息";
  439. return sre;
  440. }
  441. gdData.TableName = "TP_PM_GroutingDaily";
  442. sre.Data.Tables.Add(gdData);
  443. string gddSql =
  444. "SELECT GDD.GroutingDailyID," +
  445. " GDD.GroutingDailyDetailID," +
  446. " GDD.GroutingLineID," +
  447. " GDD.GroutingLineDetailID," +
  448. " GDD.GroutingLineCode," +
  449. " GDD.GroutingLineName," +
  450. " GDD.GroutingDate," +
  451. " GDD.GroutingBatchNo," +
  452. " GDD.GroutingMouldCode," +
  453. //" GDD.MouldCode," +
  454. //" GDD.UserID as GroutingUserID," +
  455. " GDD.UserCode as GroutingUserCode," +
  456. " Gl.MONITORID," +
  457. " DECODE(MU.USERID,NULL,'', MU.USERNAME || '[' || MU.USERCODE || ']') MONITORCODE," +
  458. " GDD.GoodsCode," +
  459. " GDD.GoodsName," +
  460. //" GDD.GMouldStatus," +
  461. " GMS.GMouldStatusName," +
  462. " GDD.GroutingFlag," +
  463. " GDD.NoGroutingRreason," +
  464. " GDD.Remarks," +
  465. " GDD.ScrapFlag," +
  466. " GDD.LogoID," +
  467. " GDD.DeliverFlag," +
  468. " GDD.BarCode" +
  469. " ,STAFF.STAFFNAME" +
  470. " FROM TP_PM_GroutingDailyDetail GDD" +
  471. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  472. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  473. " INNER JOIN TP_PM_GROUTINGDAILY GL ON GL.GROUTINGDAILYID = GDD.GROUTINGDAILYID" +
  474. " LEFT JOIN TP_MST_USER MU ON MU.USERID = GL.MONITORID" +
  475. // fenglinyong add 添加员工姓名 2022-08-31
  476. " LEFT JOIN (" +
  477. " SELECT" +
  478. " D.CLASSESSETTINGID," +
  479. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME " +
  480. " FROM" +
  481. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D" +
  482. " GROUP BY" +
  483. " D.CLASSESSETTINGID" +
  484. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID" +
  485. // fenglinyong add 添加员工姓名 2022-08-31
  486. //" INNER JOIN TP_MST_Goods MG" +
  487. //" ON MG.Goodsid = GLD.GoodsID" +
  488. //" INNER JOIN TP_MST_User U" +
  489. //" ON U.Userid = GDD.Userid" +
  490. " WHERE GDD.AccountID = :AccountID" +
  491. " AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  492. " AND GDD.GroutingDailyID = :GroutingDailyID" +
  493. " ORDER BY GDD.GroutingMouldCode";
  494. parameters.Clear();
  495. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  496. parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
  497. DataTable gddData = conn.GetSqlResultToDt(gddSql, parameters.ToArray());
  498. if (gddData == null || gddData.Rows.Count == 0)
  499. {
  500. // 没有可注浆的模具
  501. sre.Status = Constant.ServiceResultStatus.Other;
  502. sre.OtherStatus = 2;
  503. sre.Message = "没有可编辑的注浆明细信息";
  504. return sre;
  505. }
  506. gddData.TableName = "TP_PM_GroutingDailyDetail";
  507. sre.Data.Tables.Add(gddData);
  508. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 begin
  509. sre.Result = 1;
  510. string spm022 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_022' and ss.AccountID = " + user.AccountID);
  511. int spm022Value = 0;
  512. if (!string.IsNullOrWhiteSpace(spm022) && int.TryParse(spm022, out spm022Value) && spm022Value > 0)
  513. {
  514. DateTime tDate = DateTime.Now.Date;
  515. DateTime lastDate = tDate.AddDays(1 - spm022Value);
  516. DateTime gData = (DateTime)gdData.Rows[0]["GroutingDate"];
  517. if (gData < lastDate || gData > tDate)
  518. {
  519. sre.Result = 0;
  520. sre.Message = string.Format("允许注浆编辑的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  521. }
  522. }
  523. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 end
  524. }
  525. return sre;
  526. }
  527. catch (Exception ex)
  528. {
  529. throw ex;
  530. }
  531. finally
  532. {
  533. if (conn != null &&
  534. conn.ConnState == ConnectionState.Open)
  535. {
  536. conn.Close();
  537. }
  538. }
  539. }
  540. /// <summary>
  541. /// 取得FPM0102画面(注浆登记)的成型线数据
  542. /// </summary>
  543. /// <param name="user">登录用户信息</param>
  544. /// <param name="groutingDate">注浆日期</param>
  545. /// <param name="groutingIDs">成型线ID(多个用【,】隔开)</param>
  546. /// <returns>
  547. /// 成型线数据
  548. /// OtherStatus = 1:注浆日期大于账务日期
  549. /// OtherStatus = 2:没有可注浆的成型线
  550. /// OtherStatus = 3:没有可注浆的模具
  551. /// </returns>
  552. public static ServiceResultEntity GetFPM0102_GroutingLine(SUserInfo user, DateTime? groutingDate, string groutingIDs)
  553. {
  554. IDBConnection conn = null;
  555. try
  556. {
  557. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  558. ServiceResultEntity sre = new ServiceResultEntity();
  559. // 账务日期
  560. object date = CMNModuleLogic.GetAccountDate(conn, user);
  561. if (date == null || date == DBNull.Value)
  562. {
  563. // 服务器时间错误
  564. //throw new Exception("SystemDateTimeError");
  565. sre.Status = Constant.ServiceResultStatus.AccountDateError;
  566. return sre;
  567. }
  568. DateTime accountDate = Convert.ToDateTime(date);
  569. // 成型线变更 ver41 by chenxy begin
  570. /* 注浆日期大于此成型线最后一次注浆日期
  571. if (groutingDate.HasValue && groutingDate > accountDate)
  572. {
  573. // 注浆日期大于账务日期
  574. sre.Status = Constant.ServiceResultStatus.Other;
  575. sre.OtherStatus = 1;
  576. sre.Message = string.Format("注浆日期({0})大于账务日期({1})",
  577. groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD),
  578. accountDate.ToString(Constant.S_DATE_YYYY_MM_DD));
  579. return sre;
  580. }
  581. */
  582. // 成型线变更 ver41 by chenxy end
  583. if (!groutingDate.HasValue)
  584. {
  585. groutingDate = accountDate;
  586. }
  587. sre.Result = groutingDate;
  588. // 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 begin
  589. string spm021 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_021' and ss.AccountID = " + user.AccountID);
  590. int spm021Value = 0;
  591. if (!string.IsNullOrWhiteSpace(spm021) && int.TryParse(spm021, out spm021Value) && spm021Value > 0)
  592. {
  593. DateTime tDate = DateTime.Now.Date;
  594. DateTime lastDate = tDate.AddDays(1 - spm021Value);
  595. if (groutingDate < lastDate || groutingDate > tDate)
  596. {
  597. sre.Status = Constant.ServiceResultStatus.Other;
  598. sre.OtherStatus = 1;
  599. sre.Message = string.Format("允许注浆登记的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  600. return sre;
  601. }
  602. }
  603. // 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 end
  604. StringBuilder sql = new StringBuilder();
  605. List<OracleParameter> parameters = new List<OracleParameter>();
  606. string glSql =
  607. "SELECT GL.GroutingLineID," +
  608. " GL.GroutingLineCode," +
  609. " GL.GroutingLineName," +
  610. " GL.MouldQuantity," +
  611. " GL.UserID," +
  612. " U.UserCode," +
  613. " GL.monitorid," +
  614. " mu.usercode monitorcode," +
  615. //" mu.username || '[' || mu.usercode || ']' monitorcode," +
  616. // 成型线变更 ver41 by chenxy begin
  617. /*
  618. " GL.UserCount," +
  619. " decode((GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
  620. " decode((GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
  621. //" GL.LastGroutingDate," +
  622. " GL.LastGroutingBatchNo," +
  623. " decode((GMT.CanManyTimes, '1', NULL, 1) GroutingNum," +
  624. " GMT.CanManyTimes," +
  625. */
  626. " decode(GMT.CanManyTimes, '1', decode(GL.LastGroutingDate, null, 1, :GroutingDate, NVL(GL.LastGroutingBatchNo, 1) + 1, 1), 1) GroutingBatchNo," +
  627. " GMT.CanManyTimes," +
  628. " GMT.GMouldTypeID," +
  629. " GMT.GMouldTypeName," +
  630. // 成型线变更 ver41 by chenxy end
  631. " GL.OPTimeStamp" +
  632. " FROM TP_PC_GroutingLine GL" +
  633. " INNER JOIN TP_MST_User U" +
  634. " ON U.UserID = GL.UserID " +
  635. " left JOIN TP_MST_User mU" +
  636. " ON mU.UserID = GL.monitorid" +
  637. " LEFT JOIN TP_MST_GMouldType GMT" +
  638. " ON GMT.GMouldTypeID = GL.GMouldTypeID " +
  639. //// 成型线操作权限
  640. //" INNER JOIN (SELECT UP.PurviewID" +
  641. //" FROM TP_MST_UserPurview UP" +
  642. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  643. //" AND UP.UserId = :UPUserId) UP" +
  644. //" ON UP.PurviewID = GL.GroutingLineID" +
  645. " WHERE GL.AccountID = :AccountID" +
  646. " AND GL.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  647. " AND GL.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
  648. // 成型线操作权限
  649. " AND EXISTS (SELECT UP.PurviewID" +
  650. " FROM TP_MST_UserPurview UP" +
  651. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  652. " AND (UP.PurviewID = -1 OR UP.PurviewID = GL.GroutingLineID)" +
  653. " AND UP.UserId = :UPUserId)" +
  654. // 未注浆
  655. // 成型线变更 ver41 by chenxy begin
  656. /*
  657. " AND NOT EXISTS (SELECT GD.GroutingDailyID" +
  658. " FROM TP_PM_GroutingDaily GD" +
  659. " WHERE GD.GroutingLineID = GL.GroutingLineID" +
  660. " AND GD.GroutingDate = :GroutingDate)"
  661. */
  662. // 注浆日期必须小于等于账务日期
  663. " AND :GroutingDate <= FUN_CMN_GetAccountDate(:AccountID)" +
  664. " AND (GL.LastGroutingDate IS NULL OR (GMT.CanManyTimes = '1' AND GL.LastGroutingDate <= :GroutingDate) OR (GMT.CanManyTimes <> '1' AND GL.LastGroutingDate < :GroutingDate))"
  665. // 成型线变更 ver41 by chenxy end
  666. // 有正常状态的模具
  667. + " AND EXISTS (SELECT 1 FROM TP_PC_GroutingLineDetail GLD WHERE GL.GroutingLineID = GLD.GroutingLineID AND GLD.ValueFlag = '1' AND GLD.GMouldStatus=1)"
  668. ;
  669. sql.Append(glSql);
  670. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  671. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  672. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value.Date, ParameterDirection.Input));
  673. if (!string.IsNullOrWhiteSpace(groutingIDs))
  674. {
  675. groutingIDs = "," + groutingIDs + ",";
  676. sql.Append(" AND INSTR(:GroutingLineIDs, ',' || GL.GroutingLineID || ',') > 0");
  677. parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
  678. }
  679. else
  680. {
  681. sql.Append(" AND GL.UserCount = 1");
  682. }
  683. sql.Append(" ORDER BY GroutingLineCode");
  684. DataTable glData = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  685. if (glData == null || glData.Rows.Count == 0)
  686. {
  687. // 没有可注浆的成型线
  688. sre.Status = Constant.ServiceResultStatus.Other;
  689. sre.OtherStatus = 2;
  690. sre.Message = string.Format("注浆日期({0})没有可注浆的成型线",
  691. groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
  692. return sre;
  693. }
  694. sre.Data = new DataSet();
  695. glData.TableName = "TP_PC_GroutingLine";
  696. sre.Data.Tables.Add(glData);
  697. groutingIDs = ",";
  698. foreach (DataRow row in glData.Rows)
  699. {
  700. groutingIDs += row["GroutingLineID"] + ",";
  701. }
  702. string gldSql =
  703. "SELECT GLD.GroutingLineID," +
  704. " GL.GroutingLineCode," +
  705. " GL.GroutingLineName," +
  706. " GLD.GroutingLineDetailID," +
  707. " GLD.GroutingMouldCode," +
  708. // 成型线变更 ver41 by chenxy begin
  709. //" GL.UserID," +
  710. //" U.UserCode," +
  711. //" GL.UserCount," +
  712. " decode(GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
  713. " decode(GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
  714. " decode(GMT.CanManyTimes, '1', decode(GL.LastGroutingDate, null, 1, :GroutingDate, NVL(GL.LastGroutingBatchNo, 1) + 1, 1), 1) GroutingBatchNo," +
  715. //" GMT.CanManyTimes," +
  716. " GL.monitorid," +
  717. " decode(mu.userid,null,'', mu.username || '[' || mu.usercode || ']') monitorcode," +
  718. " GMT.GMouldTypeID," +
  719. " GMT.GMouldTypeName," +
  720. // 成型线变更 ver41 by chenxy end
  721. " MG.GoodsCode," +
  722. " MG.GoodsName," +
  723. " MG.LogoID," +
  724. " GLD.GMouldStatus," +
  725. " GMS.GMouldStatusName," +
  726. " CASE WHEN GLD.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "' THEN '" + (int)Constant.GroutingFlag.Yes + "'" +
  727. " ELSE '" + (int)Constant.GroutingFlag.No + "'" +
  728. " END AS GroutingFlag" +
  729. " FROM TP_PC_GroutingLine GL" +
  730. " left JOIN TP_MST_User mU" +
  731. " ON mU.UserID = GL.monitorid" +
  732. " INNER JOIN TP_PC_GroutingLineDetail GLD" +
  733. " ON GL.GroutingLineID = GLD.GroutingLineID" +
  734. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  735. " ON GMS.GMouldStatusID = GLD.GMouldStatus" +
  736. " INNER JOIN TP_MST_Goods MG" +
  737. " ON MG.Goodsid = GLD.GoodsID" +
  738. " INNER JOIN TP_MST_User U" +
  739. " ON U.Userid = GL.Userid" +
  740. " LEFT JOIN TP_MST_GMouldType GMT" +
  741. " ON GMT.GMouldTypeID = GL.GMouldTypeID " +
  742. " WHERE GL.AccountID = :AccountID" +
  743. " AND GLD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  744. " AND GLD.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
  745. " AND INSTR(:GroutingLineIDs, ',' || GL.GroutingLineID || ',') > 0" +
  746. " ORDER BY GL.GroutingLineCode, GLD.GroutingMouldCode";
  747. parameters.Clear();
  748. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  749. parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
  750. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value.Date, ParameterDirection.Input));
  751. DataTable gldData = conn.GetSqlResultToDt(gldSql, parameters.ToArray());
  752. if (gldData == null || gldData.Rows.Count == 0)
  753. {
  754. // 没有可注浆的模具
  755. sre.Status = Constant.ServiceResultStatus.Other;
  756. sre.OtherStatus = 3;
  757. sre.Message = string.Format("注浆日期({0})没有可注浆的模具",
  758. groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
  759. return sre;
  760. }
  761. gldData.TableName = "TP_PC_GroutingLineDetail";
  762. sre.Data.Tables.Add(gldData);
  763. return sre;
  764. }
  765. catch (Exception ex)
  766. {
  767. throw ex;
  768. }
  769. finally
  770. {
  771. if (conn != null &&
  772. conn.ConnState == ConnectionState.Open)
  773. {
  774. conn.Close();
  775. }
  776. }
  777. }
  778. /// <summary>
  779. /// 取得FPM0104画面(选择成型线)的查询数据
  780. /// </summary>
  781. /// <param name="user">登录用户信息</param>
  782. /// <param name="se">查询条件</param>
  783. /// <returns>查询结果</returns>
  784. public static ServiceResultEntity GetFPM0104SData(SUserInfo user, FPM0104_SE se)
  785. {
  786. IDBConnection conn = null;
  787. try
  788. {
  789. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  790. ServiceResultEntity sre = new ServiceResultEntity();
  791. // 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 begin
  792. string spm021 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_021' and ss.AccountID = " + user.AccountID);
  793. int spm021Value = 0;
  794. if (!string.IsNullOrWhiteSpace(spm021) && int.TryParse(spm021, out spm021Value) && spm021Value > 0)
  795. {
  796. DateTime tDate = DateTime.Now.Date;
  797. DateTime lastDate = tDate.AddDays(1-spm021Value);
  798. if (se.GroutingDate < lastDate || se.GroutingDate > tDate)
  799. {
  800. sre.Status = Constant.ServiceResultStatus.Other;
  801. sre.OtherStatus = -1;
  802. sre.Message = string.Format("允许注浆登记的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  803. return sre;
  804. }
  805. }
  806. // 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 end
  807. string sqlString =
  808. "SELECT " +
  809. " GL.GroutingLineID," +
  810. " GL.GroutingLineCode," +
  811. " GL.GroutingLineName," +
  812. " GMS.GMouldStatusName," +
  813. " GMT.GMouldTypeName," +
  814. " GL.MouldQuantity," +
  815. // 成型线变更 ver41 by chenxy begin
  816. //" U.UserCode AS GroutingUserCode," +
  817. //" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(GS.GoodsCode)) AS GoodsCode" +
  818. " (select listagg ( gs.goodscode, ',') WITHIN GROUP (ORDER BY gs.goodscode) as GoodsCode" +
  819. " from tp_pc_groutinglinedetail gld" +
  820. " left join tp_mst_goods gs" +
  821. " on gs.goodsid = gld.goodsid" +
  822. " where gld.groutinglineid = gl.groutinglineid" +
  823. " AND gld.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  824. " AND gld.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "') GoodsCode," +
  825. //" GL.UserID," +
  826. //" U.UserCode," +
  827. " GL.UserCount," +
  828. " decode(GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
  829. " decode(GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
  830. " GL.LastGroutingDate," +
  831. " GL.LastGroutingBatchNo," +
  832. " GL.monitorid," +
  833. //" mu.usercode monitorcode," +
  834. " decode(mu.userid,null,'', mu.username || '[' || mu.usercode || ']') monitorcode," +
  835. " decode(GMT.CanManyTimes, '1', NULL, 1) GroutingNum," +
  836. " GMT.CanManyTimes" +
  837. // 成型线变更 ver41 by chenxy end
  838. " FROM TP_PC_GroutingLine GL" +
  839. // 成型线变更 ver41 by chenxy begin
  840. //" INNER JOIN TP_PC_GroutingLineDetail GLD" +
  841. //" ON GLD.GroutingLineID = GL.GroutingLineID" +
  842. // 成型线变更 ver41 by chenxy end
  843. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  844. " ON GMS.GMouldStatusID = GL.GMouldStatus" +
  845. " INNER JOIN TP_MST_GMouldType GMT" +
  846. " ON GMT.GMouldTypeID = GL.GMouldTypeID" +
  847. // 成型线变更 ver41 by chenxy begin
  848. //" INNER JOIN TP_MST_Goods GS" +
  849. //" ON GS.GoodsID = GLD.GoodsID" +
  850. // 成型线变更 ver41 by chenxy end
  851. " INNER JOIN TP_MST_User U" +
  852. " ON U.UserID = GL.UserID" +
  853. " left JOIN TP_MST_User mU" +
  854. " ON mU.UserID = GL.monitorid" +
  855. " WHERE GL.AccountID = :AccountID" +
  856. " AND GL.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  857. " AND GL.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
  858. //// 成型线操作权限
  859. " AND EXISTS (SELECT UP.PurviewID" +
  860. " FROM TP_MST_UserPurview UP" +
  861. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  862. " AND (UP.PurviewID = -1 OR UP.PurviewID = GL.GroutingLineID)" +
  863. " AND UP.UserId = :UPUserId)" +
  864. // 未注浆
  865. // 成型线变更 ver41 by chenxy begin
  866. //" AND NOT EXISTS (SELECT GD.GroutingDailyID" +
  867. //" FROM TP_PM_GroutingDaily GD" +
  868. //" WHERE GD.GroutingLineID = GL.GroutingLineID" +
  869. //" AND GD.GroutingDate = :GroutingDate)" +
  870. // 注浆日期必须小于等于账务日期
  871. " AND :GroutingDate <= FUN_CMN_GetAccountDate(:AccountID)" +
  872. " AND (GL.LastGroutingDate IS NULL OR (GMT.CanManyTimes = '1' AND GL.LastGroutingDate <= :GroutingDate) OR (GMT.CanManyTimes <> '1' AND GL.LastGroutingDate < :GroutingDate))"
  873. // 成型线变更 ver41 by chenxy end
  874. // 有正常状态的模具
  875. + " AND EXISTS (SELECT 1 FROM TP_PC_GroutingLineDetail GLD WHERE GL.GroutingLineID = GLD.GroutingLineID AND GLD.ValueFlag = '1' AND GLD.GMouldStatus=1)"
  876. ;
  877. StringBuilder sql = new StringBuilder(sqlString);
  878. List<OracleParameter> parameters = new List<OracleParameter>();
  879. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  880. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  881. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate, ParameterDirection.Input));
  882. if (se != null)
  883. {
  884. // 成型线编码
  885. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  886. {
  887. sql.Append(" AND INSTR(GL.GroutingLineCode, :GroutingLineCode) > 0");
  888. parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  889. }
  890. // 成型线名称
  891. if (!string.IsNullOrEmpty(se.GroutingLineName))
  892. {
  893. sql.Append(" AND INSTR(GL.GroutingLineName, :GroutingLineName) > 0");
  894. parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  895. }
  896. // 成型工号
  897. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  898. {
  899. sql.Append(" AND INSTR(U.UserCode, :GroutingUserCode) > 0");
  900. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  901. }
  902. // 成型班长
  903. if (!string.IsNullOrEmpty(se.Monitorcode))
  904. {
  905. sql.Append(" AND INSTR(mu.UserCode, :Monitorcode) > 0");
  906. parameters.Add(new OracleParameter(":Monitorcode", OracleDbType.NVarchar2, se.Monitorcode, ParameterDirection.Input));
  907. }
  908. // 成型线类别
  909. if (se.GMouldTypeID.HasValue)
  910. {
  911. sql.Append(" AND GL.GMouldTypeID = :GMouldTypeID");
  912. parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
  913. }
  914. // 备注
  915. if (!string.IsNullOrEmpty(se.Remarks))
  916. {
  917. sql.Append(" AND INSTR(GL.Remarks, :Remarks) > 0");
  918. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  919. }
  920. }
  921. sqlString = sql.ToString() +
  922. // 成型线变更 ver41 by chenxy begin
  923. //" GROUP BY" +
  924. //" GL.GroutingLineID," +
  925. //" GL.GroutingLineCode," +
  926. //" GL.GroutingLineName," +
  927. //" GMS.GMouldStatusName," +
  928. //" GMT.GMouldTypeName," +
  929. //" GL.MouldQuantity," +
  930. //" U.UserCode" +
  931. // 成型线变更 ver41 by chenxy end
  932. " ORDER BY GL.GroutingLineCode";
  933. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  934. if (data == null || data.Rows.Count == 0)
  935. {
  936. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  937. return sre;
  938. }
  939. sre.Data = new DataSet();
  940. sre.Data.Tables.Add(data);
  941. // 成型线变更 ver41 by chenxy begin
  942. string groutingIDs = ",";
  943. foreach (DataRow row in data.Rows)
  944. {
  945. groutingIDs += row["GroutingLineID"] + ",";
  946. }
  947. string guSql = "select gu.groutinglineid, gu.remarks, u.userid groutinguserid, u.usercode groutingusercode" +
  948. " from TP_PC_GroutingUser gu" +
  949. " left join tp_mst_user u" +
  950. " on u.userid = gu.userid where INSTR(:GroutingLineIDs, ',' || gu.GroutingLineID || ',') > 0";
  951. parameters.Clear();
  952. parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
  953. DataTable guData = conn.GetSqlResultToDt(guSql, parameters.ToArray());
  954. //if (guData == null || guData.Rows.Count == 0)
  955. //{
  956. // // 没有可注浆的模具
  957. // sre.Status = Constant.ServiceResultStatus.Other;
  958. // sre.OtherStatus = 3;
  959. // sre.Message = string.Format("注浆日期({0})没有可注浆的模具",
  960. // groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
  961. // return sre;
  962. //}
  963. guData.TableName = "TP_PC_GroutingUser";
  964. sre.Data.Tables.Add(guData);
  965. // 成型线变更 ver41 by chenxy end
  966. return sre;
  967. }
  968. catch (Exception ex)
  969. {
  970. throw ex;
  971. }
  972. finally
  973. {
  974. if (conn != null &&
  975. conn.ConnState == ConnectionState.Open)
  976. {
  977. conn.Close();
  978. }
  979. }
  980. }
  981. /// <summary>
  982. /// 返回班次配置信息
  983. /// </summary>
  984. /// <param name="sUserInfo"></param>
  985. /// <returns></returns>
  986. private static int? getClassesSettingID(IDBTransaction oracleTrConn, int userID, DateTime accountDate)
  987. {
  988. #region 将班次配置表中的数据插入生产者表中
  989. string sql = "select max(ClassesSettingID) as ClassesSettingID"
  990. + " from TP_PC_ClassesSetting"
  991. + " where ValueFlag = 1 and AccountDate=:accountDate"
  992. + " and UserID = :userID";
  993. OracleParameter[] paras = new OracleParameter[] {
  994. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  995. new OracleParameter(":userID",OracleDbType.Int32,userID,ParameterDirection.Input),
  996. };
  997. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  998. if (ds != null && ds.Tables[0].Rows.Count > 0)
  999. {
  1000. return Convert.ToInt32(ds.Tables[0].Rows[0]["ClassesSettingID"]);
  1001. }
  1002. return null;
  1003. #endregion
  1004. }
  1005. /// <summary>
  1006. /// 保存FPM0102画面(注浆登记)的注浆数据
  1007. /// </summary>
  1008. /// <param name="user">登录用户信息</param>
  1009. /// <param name="groutingDate">注浆日期(null:编辑;非null:新建)</param>
  1010. /// <param name="groutingInfo">注浆数据</param>
  1011. /// <returns>保存结果
  1012. /// OtherStatus = 1: 没有以下成型线的操作权限
  1013. /// OtherStatus = 2: 以下成型线已做过注浆
  1014. /// OtherStatus = 3: 以下成型工号已被停用
  1015. /// OtherStatus = 4: 补注浆,成型工号没有班次配置
  1016. /// OtherStatus = 5: 以下成型工号没有配置员工关联
  1017. /// </returns>
  1018. public static ServiceResultEntity SetFPM0102Data(SUserInfo user, DateTime? groutingDate, DataSet groutingInfo)
  1019. {
  1020. IDBTransaction tran = null;
  1021. try
  1022. {
  1023. ServiceResultEntity sre = new ServiceResultEntity();
  1024. if (groutingInfo == null ||
  1025. groutingInfo.Tables.Count != 2 ||
  1026. groutingInfo.Tables[0].Rows.Count < 1 ||
  1027. groutingInfo.Tables[1].Rows.Count < 1)
  1028. {
  1029. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1030. return sre;
  1031. }
  1032. tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  1033. int executeResult = 0;
  1034. DataTable dtGroutingLine = groutingInfo.Tables[0];
  1035. DataTable dtGroutingDetail = groutingInfo.Tables[1];
  1036. // 新建注浆登记
  1037. if (groutingDate.HasValue)
  1038. {
  1039. #region 新建注浆登记
  1040. groutingDate = groutingDate.Value.Date;
  1041. #region 取得账务日期
  1042. // 账务日期
  1043. object date = CMNModuleLogic.GetAccountDate(tran, user);
  1044. if (date == null || date == DBNull.Value)
  1045. {
  1046. // 服务器时间错误
  1047. //throw new Exception("SystemDateTimeError");
  1048. sre.Status = Constant.ServiceResultStatus.AccountDateError;
  1049. return sre;
  1050. }
  1051. DateTime accountDate = Convert.ToDateTime(date).Date;
  1052. // 注浆日期不能大于账务日期
  1053. if (groutingDate > accountDate)
  1054. {
  1055. sre.Status = Constant.ServiceResultStatus.Other;
  1056. sre.OtherStatus = 1;
  1057. sre.Message = string.Format("注浆日期({0})不能大于账务日期({1})",
  1058. groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD),
  1059. accountDate.ToString(Constant.S_DATE_YYYY_MM_DD));
  1060. return sre;
  1061. }
  1062. #endregion 取得账务日期
  1063. #region 验证成型线时间戳
  1064. StringBuilder checkGLSql = new StringBuilder("select GroutingLineCode from TP_PC_GroutingLine where valueflag = '1' and (");
  1065. int index = 0;
  1066. foreach (DataRow item in dtGroutingLine.Rows)
  1067. {
  1068. if (index > 0)
  1069. {
  1070. checkGLSql.AppendLine(" or ");
  1071. }
  1072. checkGLSql.AppendFormat(" (GroutingLineID = {0} and OPTimeStamp <> to_timestamp('{1}','yyyy-mm-dd hh24:mi:ss.ff'))", item["GroutingLineID"], ((System.DateTime)item["OPTimeStamp"]).ToString("yyyy-MM-dd HH:mm:ss.ffffff"));
  1073. index++;
  1074. }
  1075. checkGLSql.AppendLine(")");
  1076. DataTable checkGLDataTable = tran.GetSqlResultToDt(checkGLSql.ToString());
  1077. if (checkGLDataTable != null && checkGLDataTable.Rows.Count > 0)
  1078. {
  1079. string code = null;
  1080. foreach (DataRow item in checkGLDataTable.Rows)
  1081. {
  1082. if (code == null)
  1083. {
  1084. code = item["GroutingLineCode"].ToString();
  1085. }
  1086. else
  1087. {
  1088. code += "," + item["GroutingLineCode"].ToString();
  1089. }
  1090. }
  1091. // 成型线信息被修改
  1092. sre.Status = Constant.ServiceResultStatus.Other;
  1093. sre.OtherStatus = 1;
  1094. sre.Message = "以下成形线数据已被修改,请重新选择成型线。" + System.Environment.NewLine + code;
  1095. return sre;
  1096. }
  1097. #endregion 验证成型线时间戳
  1098. #region 数据校验 插入班次配置
  1099. // 成型工ID
  1100. List<string> userIDs = new List<string>();
  1101. List<string> userCodes = new List<string>();
  1102. // 成型线ID
  1103. List<string> lineIDs = new List<string>();
  1104. List<string> lineCodes = new List<string>();
  1105. foreach (DataRow gdd in dtGroutingDetail.Rows)
  1106. {
  1107. string userID = gdd["GroutingUserID"].ToString();
  1108. if (!userIDs.Contains(userID))
  1109. {
  1110. userIDs.Add(userID);
  1111. userCodes.Add(gdd["GroutingUserCode"].ToString());
  1112. }
  1113. string lineID = gdd["GroutingLineID"].ToString();
  1114. if (!lineIDs.Contains(lineID))
  1115. {
  1116. lineIDs.Add(lineID);
  1117. lineCodes.Add(gdd["GroutingLineCode"].ToString());
  1118. }
  1119. }
  1120. #region 成型线校验
  1121. string strLineIDs = "," + string.Join(",", lineIDs) + ",";
  1122. string strNoLineCodes = null;
  1123. // 校验成型线操作权限
  1124. string checkPurviewSql =
  1125. "SELECT UP.PurviewID" +
  1126. " FROM TP_MST_UserPurview UP" +
  1127. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  1128. " AND (UP.PurviewID = -1 OR INSTR(:GroutingLineIDs, ',' || UP.PurviewID || ',') > 0)" +
  1129. " AND UP.UserId = :UPUserId Order by UP.PurviewID";
  1130. OracleParameter[] checkPurviewParas = new OracleParameter[]
  1131. {
  1132. new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, strLineIDs, ParameterDirection.Input),
  1133. new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1134. };
  1135. DataTable purviewData = tran.GetSqlResultToDt(checkPurviewSql, checkPurviewParas);
  1136. if (purviewData == null || purviewData.Rows.Count == 0)
  1137. {
  1138. strNoLineCodes = string.Join(",", lineCodes);
  1139. }
  1140. else if ("-1" == purviewData.Rows[0][0].ToString())
  1141. {
  1142. strNoLineCodes = null;
  1143. }
  1144. else if (lineIDs.Count != purviewData.Rows.Count)
  1145. {
  1146. for (int i = 0; i < lineIDs.Count; i++)
  1147. {
  1148. DataRow[] drs = purviewData.Select("PurviewID = " + lineIDs[i]);
  1149. if (drs == null || drs.Length == 0)
  1150. {
  1151. if (strNoLineCodes != null)
  1152. {
  1153. strNoLineCodes += "," + lineCodes[i];
  1154. }
  1155. else
  1156. {
  1157. strNoLineCodes += lineCodes[i];
  1158. }
  1159. }
  1160. }
  1161. }
  1162. if (strNoLineCodes != null)
  1163. {
  1164. sre.Status = Constant.ServiceResultStatus.Other;
  1165. sre.OtherStatus = 1;
  1166. sre.Message = "当前用户没有以下成型线的操作权限。"
  1167. + System.Environment.NewLine + strNoLineCodes;
  1168. return sre;
  1169. }
  1170. /* 已验证成型线时间戳,注浆时会修改成型线的最后注浆日期,时间戳会变。
  1171. // 校验成型线是否已注浆
  1172. string checkGroutingDailySql =
  1173. "SELECT GD.GroutingLineCode" +
  1174. " FROM TP_PM_GroutingDaily GD" +
  1175. " WHERE GD.AccountID = :AccountID" +
  1176. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  1177. " AND GD.GroutingDate = :GroutingDate" +
  1178. " AND INSTR(:GroutingLineIDs, ',' || GD.GroutingLineID || ',') > 0";
  1179. OracleParameter[] checkGroutingDailyParas = new OracleParameter[]
  1180. {
  1181. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1182. new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1183. new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, strLineIDs, ParameterDirection.Input),
  1184. };
  1185. DataTable groutingDailyData = tran.GetSqlResultToDt(checkGroutingDailySql, checkGroutingDailyParas);
  1186. strNoLineCodes = null;
  1187. if (groutingDailyData != null && groutingDailyData.Rows.Count > 0)
  1188. {
  1189. foreach (DataRow item in groutingDailyData.Rows)
  1190. {
  1191. if (strNoLineCodes != null)
  1192. {
  1193. strNoLineCodes += "," + item["GroutingLineCode"];
  1194. }
  1195. else
  1196. {
  1197. strNoLineCodes += item["GroutingLineCode"];
  1198. }
  1199. }
  1200. }
  1201. if (strNoLineCodes != null)
  1202. {
  1203. sre.Status = Constant.ServiceResultStatus.Other;
  1204. sre.OtherStatus = 2;
  1205. sre.Message = groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD)
  1206. + ",以下成型线已做过注浆登记。"
  1207. + System.Environment.NewLine + strNoLineCodes;
  1208. return sre;
  1209. }
  1210. */
  1211. #endregion 成型线校验
  1212. string strNoUserCodes = null;
  1213. #region 校验成型工号是否有效
  1214. // 校验成型工号是否有效
  1215. string checkUserSql =
  1216. "SELECT UserID" +
  1217. " FROM TP_MST_User" +
  1218. " WHERE AccountID = :AccountID" +
  1219. " AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  1220. " AND INSTR(:UserIDs, ',' || UserID || ',') > 0";
  1221. string strUserIDs = "," + string.Join(",", userIDs) + ",";
  1222. OracleParameter[] checkUserParas = new OracleParameter[]
  1223. {
  1224. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1225. new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
  1226. };
  1227. DataTable userData = tran.GetSqlResultToDt(checkUserSql, checkUserParas);
  1228. strNoUserCodes = null;
  1229. if (userData == null || userData.Rows.Count == 0)
  1230. {
  1231. strNoUserCodes = string.Join(",", userCodes);
  1232. }
  1233. else if (userIDs.Count != userData.Rows.Count)
  1234. {
  1235. for (int i = 0; i < userIDs.Count; i++)
  1236. {
  1237. DataRow[] drs = userData.Select("UserID = " + userIDs[i]);
  1238. if (drs == null || drs.Length == 0)
  1239. {
  1240. if (strNoUserCodes != null)
  1241. {
  1242. strNoUserCodes += "," + userCodes[i];
  1243. }
  1244. else
  1245. {
  1246. strNoUserCodes += userCodes[i];
  1247. }
  1248. }
  1249. }
  1250. }
  1251. if (strNoUserCodes != null)
  1252. {
  1253. sre.Status = Constant.ServiceResultStatus.Other;
  1254. sre.OtherStatus = 3;
  1255. sre.Message = "以下成型工号已被停用,不能注浆。"
  1256. + System.Environment.NewLine + strNoUserCodes;
  1257. return sre;
  1258. }
  1259. #endregion 校验成型工号是否有效
  1260. #region 校验成型工是否有班次配置
  1261. // 校验成型工是否有班次配置
  1262. string checkClassesSettingSql =
  1263. "SELECT UserID, Max(ClassesSettingID) as ClassesSettingID" +
  1264. " FROM TP_PC_ClassesSetting CS " +
  1265. " WHERE CS.AccountID = :AccountID" +
  1266. " AND CS.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  1267. " AND CS.AccountDate = :AccountDate" +
  1268. " AND INSTR(:UserIDs, ',' || CS.UserID || ',') > 0 group by UserID";
  1269. OracleParameter[] checkClassesSettingParas = new OracleParameter[]
  1270. {
  1271. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1272. new OracleParameter(":AccountDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1273. new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
  1274. };
  1275. DataTable classesSettingData = tran.GetSqlResultToDt(checkClassesSettingSql, checkClassesSettingParas);
  1276. Dictionary<string, string> userClassID = new Dictionary<string, string>();
  1277. // 补注浆日报
  1278. if (groutingDate.Value < accountDate)
  1279. {
  1280. #region 补注浆日报,校验班次配置
  1281. strNoUserCodes = null;
  1282. if (classesSettingData == null || classesSettingData.Rows.Count == 0)
  1283. {
  1284. strNoUserCodes = string.Join(",", userCodes);
  1285. }
  1286. else if (userIDs.Count != classesSettingData.Rows.Count)
  1287. {
  1288. for (int i = 0; i < userIDs.Count; i++)
  1289. {
  1290. DataRow[] drs = classesSettingData.Select("UserID = " + userIDs[i]);
  1291. if (drs == null || drs.Length == 0)
  1292. {
  1293. if (strNoUserCodes != null)
  1294. {
  1295. strNoUserCodes += "," + userCodes[i];
  1296. }
  1297. else
  1298. {
  1299. strNoUserCodes += userCodes[i];
  1300. }
  1301. }
  1302. }
  1303. }
  1304. else
  1305. {
  1306. foreach (DataRow item in classesSettingData.Rows)
  1307. {
  1308. userClassID.Add(item["UserID"].ToString(), item["ClassesSettingID"].ToString());
  1309. }
  1310. }
  1311. if (strNoUserCodes != null)
  1312. {
  1313. sre.Status = Constant.ServiceResultStatus.Other;
  1314. sre.OtherStatus = 4;
  1315. sre.Message = string.Format("以下成型工号在日期【{0}】没有配置班次,请确认后再注浆。", groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD))
  1316. + System.Environment.NewLine + strNoUserCodes;
  1317. return sre;
  1318. }
  1319. #endregion 补注浆日报,校验班次配置
  1320. }
  1321. else
  1322. {
  1323. // 无班次配置的成型工ID
  1324. List<string> userStaffIDs = new List<string>();
  1325. List<string> userStaffCodes = new List<string>();
  1326. strUserIDs = null;
  1327. if (classesSettingData != null && userIDs.Count != classesSettingData.Rows.Count)
  1328. {
  1329. //strUserIDs = null;
  1330. for (int i = 0; i < userIDs.Count; i++)
  1331. {
  1332. DataRow[] drs = classesSettingData.Select("UserID = " + userIDs[i]);
  1333. if (drs == null || drs.Length == 0)
  1334. {
  1335. strUserIDs += "," + userIDs[i];
  1336. userStaffIDs.Add(userIDs[i]);
  1337. userStaffCodes.Add(userCodes[i]);
  1338. }
  1339. else
  1340. {
  1341. userClassID.Add(drs[0]["UserID"].ToString(), drs[0]["ClassesSettingID"].ToString());
  1342. }
  1343. }
  1344. if (strUserIDs != null)
  1345. {
  1346. strUserIDs += ",";
  1347. }
  1348. }
  1349. if (strUserIDs != null)
  1350. {
  1351. #region 无班次配置的工号,校验员工关联(成型工号是否有员工)
  1352. // 无班次配置的工号,校验员工关联(成型工号是否有员工)
  1353. string checkUserStaffSql =
  1354. "SELECT DISTINCT U.UserID, U.UserCode, U.OrganizationID" +
  1355. " FROM TP_MST_User U " +
  1356. " INNER JOIN TP_MST_UserStaff US" +
  1357. " ON U.UserID = US.UserID " +
  1358. " WHERE U.AccountID = :AccountID" +
  1359. " AND INSTR(:UserIDs, ',' || U.UserID || ',') > 0";
  1360. OracleParameter[] checkUserStaffParas = new OracleParameter[]
  1361. {
  1362. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1363. new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
  1364. };
  1365. DataTable userStaffData = tran.GetSqlResultToDt(checkUserStaffSql, checkUserStaffParas);
  1366. strNoUserCodes = null;
  1367. if (userStaffData == null || userStaffData.Rows.Count == 0)
  1368. {
  1369. strNoUserCodes = string.Join(",", userStaffCodes);
  1370. }
  1371. else
  1372. {
  1373. //for (int i = 0; i < userIDs.Count; i++)
  1374. for (int i = 0; i < userStaffIDs.Count; i++)
  1375. {
  1376. DataRow[] drs = userStaffData.Select("UserID = " + userStaffIDs[i]);
  1377. if (drs == null || drs.Length == 0)
  1378. {
  1379. if (strNoUserCodes != null)
  1380. {
  1381. strNoUserCodes += "," + userStaffCodes[i];
  1382. }
  1383. else
  1384. {
  1385. strNoUserCodes += userStaffCodes[i];
  1386. }
  1387. }
  1388. }
  1389. }
  1390. if (strNoUserCodes != null)
  1391. {
  1392. sre.Status = Constant.ServiceResultStatus.Other;
  1393. sre.OtherStatus = 5;
  1394. sre.Message = "以下成型工号没有配置员工关联,请确认后再注浆。"
  1395. + System.Environment.NewLine + strNoUserCodes;
  1396. return sre;
  1397. }
  1398. #endregion 无班次配置的工号,校验员工关联(成型工号是否有员工)
  1399. #region 插入班次配置
  1400. #region SQL
  1401. string seqClassesSettingSql = "SELECT SEQ_PC_ClassesSetting_ID.Nextval FROM DUAL";
  1402. string insertClassesSettingSql =
  1403. "INSERT INTO TP_PC_ClassesSetting" +
  1404. " (ClassesSettingID, AccountDate, UserID, UserCode, OrganizationID, AccountID, CreateUserID, UpdateUserID)" +
  1405. " VALUES" +
  1406. " (:ClassesSettingID, :AccountDate, :UserID, :UserCode, :OrganizationID, :AccountID, :CUserID, :CUserID)";
  1407. string insertClassesDetailSql =
  1408. "INSERT INTO TP_PC_ClassesDetail" +
  1409. " (ClassesSettingID, AccountDate, UserID, UserCode, UOrganizationID, UJobsID, StaffID, SOrganizationID, SJobsID, StaffStatus, AccountID, CreateUserID, UpdateUserID)" +
  1410. " SELECT :ClassesSettingID, :AccountDate, :UserID, :UserCode, :UOrganizationID, US.UJobsID, S.StaffID, S.OrganizationID, S.Jobs, S.StaffStatus, :AccountID, :CUserID, :CUserID" +
  1411. " FROM TP_MST_UserStaff US" +
  1412. " INNER JOIN TP_HR_Staff S" +
  1413. " ON S.StaffID = US.StaffID" +
  1414. " WHERE US.UserID = :UserID";
  1415. #endregion SQL
  1416. // 插入班次配置
  1417. foreach (DataRow userStaffRow in userStaffData.Rows)
  1418. {
  1419. object csSeq = tran.GetSqlResultToObj(seqClassesSettingSql);
  1420. // 插入班次配置
  1421. OracleParameter[] insertClassesSettingParas = new OracleParameter[]
  1422. {
  1423. new OracleParameter(":ClassesSettingID", OracleDbType.Int32, csSeq, ParameterDirection.Input),
  1424. new OracleParameter(":AccountDate", OracleDbType.Date, accountDate, ParameterDirection.Input),
  1425. new OracleParameter(":UserID", OracleDbType.Int32, userStaffRow["UserID"], ParameterDirection.Input),
  1426. new OracleParameter(":UserCode", OracleDbType.NVarchar2, userStaffRow["UserCode"], ParameterDirection.Input),
  1427. new OracleParameter(":OrganizationID", OracleDbType.Int32, userStaffRow["OrganizationID"], ParameterDirection.Input),
  1428. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1429. new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1430. };
  1431. executeResult = tran.ExecuteNonQuery(insertClassesSettingSql, insertClassesSettingParas);
  1432. if (executeResult <= 0)
  1433. {
  1434. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1435. return sre;
  1436. }
  1437. // 插入班次配置明细
  1438. OracleParameter[] insertClassesDetailParas = new OracleParameter[]
  1439. {
  1440. new OracleParameter(":ClassesSettingID", OracleDbType.Int32, csSeq, ParameterDirection.Input),
  1441. new OracleParameter(":AccountDate", OracleDbType.Date, accountDate, ParameterDirection.Input),
  1442. new OracleParameter(":UserID", OracleDbType.Int32, userStaffRow["UserID"], ParameterDirection.Input),
  1443. new OracleParameter(":UserCode", OracleDbType.NVarchar2, userStaffRow["UserCode"], ParameterDirection.Input),
  1444. new OracleParameter(":UOrganizationID", OracleDbType.Int32, userStaffRow["OrganizationID"], ParameterDirection.Input),
  1445. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1446. new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1447. };
  1448. executeResult = tran.ExecuteNonQuery(insertClassesDetailSql, insertClassesDetailParas);
  1449. if (executeResult <= 0)
  1450. {
  1451. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1452. return sre;
  1453. }
  1454. userClassID.Add(userStaffRow["UserID"].ToString(), csSeq.ToString());
  1455. }
  1456. #endregion 插入班次配置
  1457. }
  1458. else
  1459. {
  1460. foreach (DataRow item in classesSettingData.Rows)
  1461. {
  1462. userClassID.Add(item["UserID"].ToString(), item["ClassesSettingID"].ToString());
  1463. }
  1464. }
  1465. }
  1466. #endregion 校验成型工是否有班次配置
  1467. #endregion 数据校验
  1468. #region 取得默认商标
  1469. string logoSql = "select t.LogoID from TP_MST_Logo t where t.AccountID = :AccountID and t.ValueFlag ='1'" +
  1470. " order by t.IsDefault desc, t.DISPLAYNO";
  1471. OracleParameter[] logoParas = new OracleParameter[]
  1472. {
  1473. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input)
  1474. };
  1475. DataTable logoDataTable = tran.GetSqlResultToDt(logoSql, logoParas);
  1476. object logoID = null;
  1477. if (logoDataTable != null && logoDataTable.Rows.Count > 0)
  1478. {
  1479. logoID = logoDataTable.Rows[0]["LogoID"];
  1480. }
  1481. #endregion 取得默认商标
  1482. // 插入注浆日报
  1483. #region SQL
  1484. string seqGroutingDailySql = "SELECT SEQ_PM_GroutingDaily_ID.Nextval FROM DUAL";
  1485. string insertGroutingDailySql =
  1486. "INSERT INTO TP_PM_GroutingDaily " +
  1487. " (GroutingDailyID, " +
  1488. " GroutingLineID, " +
  1489. " GroutingLineCode, " +
  1490. " GroutingLineName, " +
  1491. " GroutingDate, " +
  1492. " UserID, " +
  1493. " UserCode, " +
  1494. " monitorid, " +
  1495. " monitorcode, " +
  1496. " MouldQuantity, " +
  1497. " GMouldTypeID, " +
  1498. " GMouldStatus, " +
  1499. " CanManyTimes, " +
  1500. " HighPressureFlag, " + //xuwei add 2019-11-14 高压注浆标识
  1501. " AccountID, " +
  1502. " ClassesSettingID, " +
  1503. " GroutingBatchNo, " +
  1504. " CreateUserID, " +
  1505. " UpdateUserID) " +
  1506. " SELECT :GroutingDailyID, " +
  1507. " :GroutingLineID, " +
  1508. " GL.GroutingLineCode, " +
  1509. " GL.GroutingLineName, " +
  1510. " :GroutingDate, " +
  1511. " :UserID, " +
  1512. " :UserCode, " +
  1513. " :monitorid, " +
  1514. " :monitorcode, " +
  1515. " GL.MouldQuantity, " +
  1516. " GL.GMouldTypeID, " +
  1517. " GL.GMouldStatus, " +
  1518. " :CanManyTimes, " +
  1519. " GL.HighPressureFlag, " + //xuwei add 2019-11-14 高压注浆标识
  1520. " :AccountID, " +
  1521. " :ClassesSettingID, " +
  1522. " :GroutingBatchNo, " +
  1523. " :CUserID, " +
  1524. " :CUserID " +
  1525. " FROM TP_PC_GroutingLine GL " +
  1526. " INNER JOIN TP_MST_GMouldType GMT " +
  1527. " ON GMT.GMouldTypeID = GL.GMouldTypeID " +
  1528. " WHERE GL.GroutingLineID = :GroutingLineID";
  1529. #endregion SQL
  1530. #region DetailSQL
  1531. string insertGroutingDailyDetailSql =
  1532. "INSERT INTO TP_PM_GroutingDailyDetail " +
  1533. " (GroutingDailyID, " +
  1534. " GroutingLineID, " +
  1535. " GroutingLineCode, " +
  1536. " GroutingLineName, " +
  1537. " GroutingLineDetailID, " +
  1538. " GroutingDate, " +
  1539. " GroutingMouldCode, " +
  1540. " MouldID, " +
  1541. " MouldCode, " +
  1542. " UserID, " +
  1543. " UserCode, " +
  1544. //" monitorid, " +
  1545. //" monitorcode, " +
  1546. " GoodsID, " +
  1547. " GoodsCode, " +
  1548. " GoodsName, " +
  1549. " GMouldStatus, " +
  1550. " GroutingCount, " +
  1551. " GroutingFlag, " +
  1552. //" BarCode, " +
  1553. " NoGroutingRreason, " +
  1554. " ScrapFlag, " +
  1555. " Remarks, " +
  1556. " AccountID, " +
  1557. " ClassesSettingID, " +
  1558. " GroutingBatchNo, " +
  1559. " LogoID, " +
  1560. " glazetypeid, " +
  1561. " CreateUserID, " +
  1562. " GMouldTypeID, " +
  1563. " CanManyTimes, " +
  1564. " UpdateUserID, " +
  1565. //2022年3月25日 21:10:07 by feiy 试验线
  1566. " TestFlag, " +
  1567. " TESTMOULDFLAG, " + // add 模具试验标识 by fubin 2022-6-6
  1568. " LUSTERWAREWEIGHT) " +
  1569. " SELECT :GroutingDailyID, " +
  1570. " :GroutingLineID, " +
  1571. " GL.GroutingLineCode, " +
  1572. " GL.GroutingLineName, " +
  1573. " :GroutingLineDetailID, " +
  1574. " :GroutingDate, " +
  1575. " GLD.GroutingMouldCode, " +
  1576. " GLD.MouldID, " +
  1577. " GLD.MouldCode, " +
  1578. " :UserID, " +
  1579. " :UserCode, " +
  1580. //" :monitorid, " +
  1581. //" :monitorcode, " +
  1582. " GLD.GoodsID, " +
  1583. " G.GoodsCode, " +
  1584. " G.GoodsName, " +
  1585. " GLD.GMouldStatus, " +
  1586. " CASE WHEN :GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
  1587. " THEN GLD.GroutingCount + 1 " +
  1588. " ELSE GLD.GroutingCount END," +
  1589. " :GroutingFlag, " +
  1590. " :NoGroutingRreason, " +
  1591. " :ScrapFlag, " +
  1592. " :Remarks, " +
  1593. " :AccountID, " +
  1594. //" (select max(ClassesSettingID) from TP_PC_ClassesSetting where AccountDate=:GroutingDate and UserID = :UserID ), " +
  1595. " :ClassesSettingID, " +
  1596. " :GroutingBatchNo, " +
  1597. " :LogoID, " +
  1598. " g.glazetypeid, " +
  1599. " :CUserID, " +
  1600. " :GMouldTypeID, " +
  1601. " :CanManyTimes, " +
  1602. " :CUserID, " +
  1603. //2022年3月25日 21:10:07 by feiy 试验线
  1604. " GL.TestFlag, " +
  1605. " NVL(MOULD.TESTMOULDFLAG,'0'), " + // add 模具试验标识 by fubin 2022-6-6
  1606. " NVL(g.LUSTERWAREWEIGHT,0) " +
  1607. " FROM TP_PC_GroutingLine GL " +
  1608. " INNER JOIN TP_PC_GroutingLineDetail GLD " +
  1609. " ON GL.GroutingLineID = :GroutingLineID " +
  1610. " AND GLD.GroutingLineID = :GroutingLineID " +
  1611. " AND GLD.GroutingLineDetailID = :GroutingLineDetailID " +
  1612. " INNER JOIN TP_MST_Goods G " +
  1613. " ON G.GoodsID = GLD.GoodsID" +
  1614. " LEFT JOIN TP_PC_MOULD MOULD " +
  1615. " ON MOULD.MouldID = GLD.MouldID ";
  1616. #endregion DetailSQL
  1617. #region LineDetailSQL
  1618. string updateGroutingLineDetailSql =
  1619. "UPDATE TP_PC_GroutingLineDetail" +
  1620. " SET GroutingCount = GroutingCount + 1," +
  1621. " UpdateUserID = :UpdateUserID" +
  1622. " WHERE GroutingLineDetailID = :GroutingLineDetailID";
  1623. #endregion LineDetailSQL
  1624. #region LineSQL
  1625. string updateGroutingLineSql =
  1626. "UPDATE TP_PC_GroutingLine" +
  1627. " SET LastGroutingDate = :LastGroutingDate," +
  1628. " LastGroutingBatchNo = :LastGroutingBatchNo," +
  1629. " H_BatchIndex = H_BatchIndex+1," +
  1630. " UpdateUserID = :UpdateUserID" +
  1631. " WHERE GroutingLineID = :GroutingLineID";
  1632. #endregion LineSQL
  1633. #region ProducerSQL
  1634. //string insertGroutingProducerSql =
  1635. // "INSERT INTO TP_PM_GroutingProducer " +
  1636. // " (GroutingDailyID, " +
  1637. // " StaffID, " +
  1638. // " StaffCode, " +
  1639. // " StaffStatus, " +
  1640. // " UserID, " +
  1641. // " UserCode, " +
  1642. // " UJobsID, " +
  1643. // " SJobsID, " +
  1644. // " ClassesSettingID) " +
  1645. // //" AccountID, " +
  1646. // //" CreateUserID, " +
  1647. // //" UpdateUserID) " +
  1648. // " SELECT :GroutingDailyID, " +
  1649. // " CD.StaffID, " +
  1650. // " HS.StaffCode, " +
  1651. // " CD.StaffStatus, " +
  1652. // " :UserID, " +
  1653. // " CD.UserCode, " +
  1654. // " CD.UJobsID, " +
  1655. // " CD.SJobsID, " +
  1656. // " CD.ClassesSettingID " +
  1657. // //" :AccountID, " +
  1658. // //" :CUserID, " +
  1659. // //" :CUserID " +
  1660. // " FROM TP_PC_ClassesDetail CD " +
  1661. // " INNER JOIN TP_HR_Staff HS" +
  1662. // " ON HS.StaffID = CD.StaffID" +
  1663. // " WHERE CD.ClassesSettingID = " +
  1664. // " (SELECT MAX(ClassesSettingID) " +
  1665. // " FROM TP_PC_ClassesSetting " +
  1666. // " WHERE UserID = :UserID " +
  1667. // " AND AccountDate = :GroutingDate)";
  1668. #endregion ProducerSQL
  1669. string groutingDailyIDs = null;
  1670. foreach (DataRow lineRow in dtGroutingLine.Rows)
  1671. {
  1672. #region 插入注浆日报
  1673. // 插入注浆日报
  1674. object gdSeq = tran.GetSqlResultToObj(seqGroutingDailySql);
  1675. if (groutingDailyIDs == null)
  1676. {
  1677. groutingDailyIDs = gdSeq.ToString();
  1678. }
  1679. else
  1680. {
  1681. groutingDailyIDs += "," + gdSeq.ToString();
  1682. }
  1683. //int? ClassesSettingID = null;
  1684. //ClassesSettingID = getClassesSettingID(tran, Convert.ToInt32(lineRow["UserID"]), groutingDate.Value);
  1685. int ClassesSettingID = Convert.ToInt32(userClassID[lineRow["UserID"].ToString()]);
  1686. OracleParameter[] insertGroutingDailyParas = new OracleParameter[]
  1687. {
  1688. new OracleParameter(":ClassesSettingID", OracleDbType.Int32, ClassesSettingID, ParameterDirection.Input),
  1689. new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, lineRow["GroutingBatchNo"], ParameterDirection.Input),
  1690. new OracleParameter(":CanManyTimes", OracleDbType.Char, lineRow["CanManyTimes"], ParameterDirection.Input),
  1691. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
  1692. new OracleParameter(":GroutingLineID", OracleDbType.Int32, lineRow["GroutingLineID"], ParameterDirection.Input),
  1693. new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1694. new OracleParameter(":UserID", OracleDbType.Int32, lineRow["UserID"], ParameterDirection.Input),
  1695. new OracleParameter(":UserCode", OracleDbType.NVarchar2, lineRow["UserCode"], ParameterDirection.Input),
  1696. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1697. new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1698. new OracleParameter(":monitorid", OracleDbType.Int32, lineRow["monitorid"], ParameterDirection.Input),
  1699. new OracleParameter(":monitorcode", OracleDbType.NVarchar2, lineRow["monitorcode"], ParameterDirection.Input),
  1700. };
  1701. executeResult = tran.ExecuteNonQuery(insertGroutingDailySql, insertGroutingDailyParas);
  1702. if (executeResult <= 0)
  1703. {
  1704. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1705. return sre;
  1706. }
  1707. #endregion 插入注浆日报
  1708. #region 更新成型线注浆日期
  1709. OracleParameter[] updateGroutingLineParas = new OracleParameter[]
  1710. {
  1711. new OracleParameter(":LastGroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1712. new OracleParameter(":LastGroutingBatchNo", OracleDbType.Int32, lineRow["GroutingBatchNo"], ParameterDirection.Input),
  1713. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1714. new OracleParameter(":GroutingLineID", OracleDbType.Int32, lineRow["GroutingLineID"], ParameterDirection.Input),
  1715. };
  1716. executeResult = tran.ExecuteNonQuery(updateGroutingLineSql, updateGroutingLineParas);
  1717. if (executeResult <= 0)
  1718. {
  1719. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1720. return sre;
  1721. }
  1722. #endregion 更新成型线注浆日期
  1723. // 插入注浆日报明细
  1724. DataRow[] groutingLineDetailRows = dtGroutingDetail.Select("GroutingLineID = " + lineRow["GroutingLineID"].ToString()
  1725. + " and GroutingBatchNo = " + lineRow["GroutingBatchNo"].ToString());
  1726. foreach (DataRow detailDataRow in groutingLineDetailRows)
  1727. {
  1728. object drLogoID = detailDataRow["logoID"];
  1729. if (drLogoID == null || drLogoID == DBNull.Value)
  1730. {
  1731. drLogoID = logoID;
  1732. }
  1733. #region 插入注浆日报明细
  1734. OracleParameter[] insertGroutingDailyDetailParas = new OracleParameter[]
  1735. {
  1736. new OracleParameter(":ClassesSettingID", OracleDbType.Int32, ClassesSettingID, ParameterDirection.Input),
  1737. new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, detailDataRow["GroutingBatchNo"], ParameterDirection.Input),
  1738. //new OracleParameter(":LogoID", OracleDbType.Int32, logoID, ParameterDirection.Input),
  1739. new OracleParameter(":LogoID", OracleDbType.Int32, drLogoID, ParameterDirection.Input),
  1740. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
  1741. new OracleParameter(":GroutingLineID", OracleDbType.Int32, detailDataRow["GroutingLineID"], ParameterDirection.Input),
  1742. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
  1743. new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1744. new OracleParameter(":UserID", OracleDbType.Int32, detailDataRow["GroutingUserID"], ParameterDirection.Input),
  1745. new OracleParameter(":UserCode", OracleDbType.NVarchar2, detailDataRow["GroutingUserCode"], ParameterDirection.Input),
  1746. //new OracleParameter(":monitorid", OracleDbType.Int32, detailDataRow["monitorid"], ParameterDirection.Input),
  1747. //new OracleParameter(":monitorcode", OracleDbType.NVarchar2, detailDataRow["monitorcode"], ParameterDirection.Input),
  1748. new OracleParameter(":GroutingFlag", OracleDbType.Char, detailDataRow["GroutingFlag"], ParameterDirection.Input),
  1749. new OracleParameter(":NoGroutingRreason", OracleDbType.Int32, detailDataRow["NoGroutingRreason"], ParameterDirection.Input),
  1750. new OracleParameter(":ScrapFlag", OracleDbType.Char, (int)Constant.GroutingScrapFlag.No, ParameterDirection.Input),
  1751. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  1752. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1753. new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1754. new OracleParameter(":GMouldTypeID", OracleDbType.Int32, detailDataRow["GMouldTypeID"], ParameterDirection.Input),
  1755. new OracleParameter(":CanManyTimes", OracleDbType.Char, lineRow["CanManyTimes"], ParameterDirection.Input),
  1756. };
  1757. executeResult = tran.ExecuteNonQuery(insertGroutingDailyDetailSql, insertGroutingDailyDetailParas);
  1758. if (executeResult <= 0)
  1759. {
  1760. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1761. return sre;
  1762. }
  1763. #endregion 插入注浆日报明细
  1764. #region 更新成型线明细注浆次数
  1765. if (((int)Constant.GroutingFlag.Yes).ToString() == detailDataRow["GroutingFlag"].ToString())
  1766. {
  1767. OracleParameter[] updateGroutingLineDetailParas = new OracleParameter[]
  1768. {
  1769. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
  1770. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1771. };
  1772. executeResult = tran.ExecuteNonQuery(updateGroutingLineDetailSql, updateGroutingLineDetailParas);
  1773. if (executeResult <= 0)
  1774. {
  1775. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1776. return sre;
  1777. }
  1778. }
  1779. #endregion 更新成型线明细注浆次数
  1780. }
  1781. #region 插入注浆者
  1782. //// 插入注浆者
  1783. //OracleParameter[] InsertGroutingProducerParas = new OracleParameter[]
  1784. //{
  1785. // new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
  1786. // new OracleParameter(":UserID", OracleDbType.Int32, lineRow["UserID"], ParameterDirection.Input),
  1787. // //new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1788. // //new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1789. // new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1790. //};
  1791. //executeResult = tran.ExecuteNonQuery(insertGroutingProducerSql, InsertGroutingProducerParas);
  1792. //if (executeResult <= 0)
  1793. //{
  1794. // sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1795. // return sre;
  1796. //}
  1797. #endregion 插入注浆者
  1798. }
  1799. // TODO 补录注浆日报时,是否更新大于注浆日期的注浆日报明细和生产数据中的注浆次数?
  1800. sre.Result = groutingDailyIDs;
  1801. #endregion 新建注浆登记
  1802. }
  1803. // 编辑注浆日报
  1804. else
  1805. {
  1806. #region 编辑注浆日报
  1807. #region 校验时间戳
  1808. // 校验时间戳
  1809. DataRow gdDataRow = dtGroutingLine.Rows[0];
  1810. string checkSql = "SELECT GroutingDailyID" +
  1811. " FROM TP_PM_GroutingDaily" +
  1812. " WHERE GroutingDailyID = :GroutingDailyID" +
  1813. " AND OPTimeStamp = :OPTimeStamp" +
  1814. " AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
  1815. OracleParameter[] checkParas = new OracleParameter[]
  1816. {
  1817. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  1818. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
  1819. };
  1820. object checkResult = tran.GetSqlResultToObj(checkSql, checkParas);
  1821. if (checkResult == null)
  1822. {
  1823. sre.Status = Constant.ServiceResultStatus.DataChanged;
  1824. return sre;
  1825. }
  1826. #endregion 校验时间戳
  1827. // 更新注浆日报表
  1828. string upgdSql = "UPDATE TP_PM_GroutingDaily SET UpdateUserID = :UpdateUserID WHERE GroutingDailyID = :GroutingDailyID";
  1829. OracleParameter[] upgdParas = new OracleParameter[]
  1830. {
  1831. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  1832. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1833. };
  1834. executeResult = tran.ExecuteNonQuery(upgdSql, upgdParas);
  1835. if (executeResult <= 0)
  1836. {
  1837. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1838. return sre;
  1839. }
  1840. #region SQL
  1841. string updateGroutingDailyDetailSql =
  1842. "UPDATE TP_PM_GroutingDailyDetail" +
  1843. " SET GroutingCount = CASE" +
  1844. " WHEN GroutingFlag <> :GroutingFlag AND GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
  1845. " THEN GroutingCount - 1" +
  1846. " WHEN GroutingFlag <> :GroutingFlag AND GroutingFlag = '" + (int)Constant.GroutingFlag.No + "'" +
  1847. " THEN GroutingCount + 1" +
  1848. " ELSE GroutingCount END," +
  1849. " GroutingFlag = :GroutingFlag," +
  1850. " NoGroutingRreason = :NoGroutingRreason," +
  1851. " Remarks = :Remarks," +
  1852. " LogoID = :LogoID," +
  1853. " UpdateUserID = :UpdateUserID" +
  1854. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  1855. string updateGroutingDailyDetailLogoSql =
  1856. "UPDATE TP_PM_GroutingDailyDetail" +
  1857. " SET Remarks = :Remarks," +
  1858. " LogoID = :LogoID," +
  1859. " UpdateUserID = :UpdateUserID" +
  1860. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  1861. string updateGroutingDailyDetailRemarksSql =
  1862. "UPDATE TP_PM_GroutingDailyDetail" +
  1863. " SET Remarks = :Remarks," +
  1864. " UpdateUserID = :UpdateUserID" +
  1865. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  1866. string updateGroutingLineDetailSql =
  1867. "UPDATE TP_PC_GroutingLineDetail" +
  1868. " SET GroutingCount = CASE" +
  1869. " WHEN :cGroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
  1870. " THEN GroutingCount + 1" +
  1871. " WHEN :cGroutingFlag = '" + (int)Constant.GroutingFlag.No + "'" +
  1872. " THEN GroutingCount - 1" +
  1873. " ELSE GroutingCount END," +
  1874. " UpdateUserID = :UpdateUserID" +
  1875. " WHERE GroutingLineDetailID = :GroutingLineDetailID /*AND :oGroutingFlag <> :cGroutingFlag*/";
  1876. #endregion SQL
  1877. // 更新注浆日报明细表
  1878. foreach (DataRow detailDataRow in dtGroutingDetail.Rows)
  1879. {
  1880. if (detailDataRow.RowState != DataRowState.Modified)
  1881. {
  1882. continue;
  1883. }
  1884. // 已交坯,不能修改注浆信息
  1885. if ("1" == detailDataRow["DeliverFlag"].ToString())
  1886. {
  1887. OracleParameter[] updateGroutingDailyDetailRemarksParas = new OracleParameter[]
  1888. {
  1889. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  1890. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  1891. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1892. };
  1893. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailRemarksSql, updateGroutingDailyDetailRemarksParas);
  1894. if (executeResult <= 0)
  1895. {
  1896. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1897. return sre;
  1898. }
  1899. continue;
  1900. }
  1901. // 已绑定条码、损坯,不能修改注浆信息,可以修改商标
  1902. if ((detailDataRow["BarCode"] != DBNull.Value && !string.IsNullOrWhiteSpace(detailDataRow["BarCode"].ToString())) ||
  1903. ((int)Constant.GroutingScrapFlag.Yes).ToString() == detailDataRow["ScrapFlag"].ToString())
  1904. {
  1905. OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
  1906. {
  1907. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  1908. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  1909. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  1910. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1911. };
  1912. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
  1913. if (executeResult <= 0)
  1914. {
  1915. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1916. return sre;
  1917. }
  1918. continue;
  1919. }
  1920. OracleParameter[] updateGroutingDailyDetailParas = new OracleParameter[]
  1921. {
  1922. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  1923. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  1924. new OracleParameter(":GroutingFlag", OracleDbType.Char, detailDataRow["GroutingFlag"], ParameterDirection.Input),
  1925. new OracleParameter(":NoGroutingRreason", OracleDbType.Int32, detailDataRow["NoGroutingRreason"], ParameterDirection.Input),
  1926. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  1927. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1928. };
  1929. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailSql, updateGroutingDailyDetailParas);
  1930. if (executeResult <= 0)
  1931. {
  1932. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1933. return sre;
  1934. }
  1935. // 更新成型线明细的注浆次数
  1936. string oGroutingFlag = detailDataRow["GroutingFlag", DataRowVersion.Original].ToString();
  1937. string cGroutingFlag = detailDataRow["GroutingFlag", DataRowVersion.Current].ToString();
  1938. if (oGroutingFlag != cGroutingFlag)
  1939. {
  1940. OracleParameter[] updateGroutingLineDetailParas = new OracleParameter[]
  1941. {
  1942. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
  1943. new OracleParameter(":cGroutingFlag", OracleDbType.Char, cGroutingFlag, ParameterDirection.Input),
  1944. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1945. };
  1946. executeResult = tran.ExecuteNonQuery(updateGroutingLineDetailSql, updateGroutingLineDetailParas);
  1947. if (executeResult <= 0)
  1948. {
  1949. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1950. return sre;
  1951. }
  1952. }
  1953. // TODO 修改以前记录时,是否更新大于注浆日期的注浆日报明细和生产数据中的注浆次数?
  1954. }
  1955. #endregion 编辑注浆日报
  1956. }
  1957. tran.Commit();
  1958. return sre;
  1959. }
  1960. catch (Exception ex)
  1961. {
  1962. if (tran != null &&
  1963. tran.ConnState == ConnectionState.Open)
  1964. {
  1965. tran.Rollback();
  1966. }
  1967. throw ex;
  1968. }
  1969. finally
  1970. {
  1971. if (tran != null &&
  1972. tran.ConnState == ConnectionState.Open)
  1973. {
  1974. tran.Disconnect();
  1975. }
  1976. }
  1977. }
  1978. #endregion 注浆登记
  1979. #region 条码绑定
  1980. /// <summary>
  1981. /// 取得FPM0105画面(选择能绑定条码的注浆登记)的查询数据
  1982. /// </summary>
  1983. /// <param name="user">登录用户信息</param>
  1984. /// <param name="se">查询条件</param>
  1985. /// <returns>查询结果</returns>
  1986. public static ServiceResultEntity GetFPM0105SData(SUserInfo user, FPM0104_SE se)
  1987. {
  1988. IDBConnection conn = null;
  1989. try
  1990. {
  1991. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  1992. ServiceResultEntity sre = new ServiceResultEntity();
  1993. // 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 begin
  1994. string spm023 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_023' and ss.AccountID = " + user.AccountID);
  1995. int spm023Value = 0;
  1996. if (!string.IsNullOrWhiteSpace(spm023) && int.TryParse(spm023, out spm023Value) && spm023Value > 0)
  1997. {
  1998. DateTime tDate = DateTime.Now.Date;
  1999. DateTime lastDate = tDate.AddDays(1 - spm023Value);
  2000. if (se.GroutingDate < lastDate || se.GroutingDate > tDate)
  2001. {
  2002. sre.Status = Constant.ServiceResultStatus.Other;
  2003. sre.OtherStatus = -1;
  2004. sre.Message = string.Format("允许注浆绑码的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  2005. return sre;
  2006. }
  2007. }
  2008. // 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 end
  2009. string sqlString =
  2010. "SELECT " +
  2011. " GD.GroutingDailyID," +
  2012. " GD.GroutingLineCode," +
  2013. " GD.GroutingLineName," +
  2014. " GMS.GMouldStatusName," +
  2015. " GMT.GMouldTypeName," +
  2016. " GD.MouldQuantity," +
  2017. " GD.GroutingBatchNo," +
  2018. " GD.UserCode AS GroutingUserCode," +
  2019. " LISTAGG (DISTINCT GDD.GoodsCode, ',') WITHIN GROUP(ORDER BY GDD.GoodsCode ) AS GoodsCode" +
  2020. " ,STAFF.STAFFNAME" +
  2021. " FROM TP_PM_GroutingDaily GD" +
  2022. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  2023. " ON GDD.GroutingDailyID = GD.GroutingDailyID" +
  2024. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  2025. " ON GMS.GMouldStatusID = GD.GMouldStatus" +
  2026. " INNER JOIN TP_MST_GMouldType GMT" +
  2027. " ON GMT.GMouldTypeID = GD.GMouldTypeID" +
  2028. // fenglinyong add 添加员工姓名 2022-08-31
  2029. " LEFT JOIN (" +
  2030. " SELECT" +
  2031. " D.CLASSESSETTINGID," +
  2032. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME" +
  2033. " FROM" +
  2034. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D " +
  2035. " GROUP BY" +
  2036. " D.CLASSESSETTINGID" +
  2037. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID" +
  2038. // fenglinyong add 添加员工姓名 2022-08-31
  2039. " WHERE GD.AccountID = :AccountID" +
  2040. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  2041. // 成型线操作权限
  2042. " AND EXISTS (SELECT UP.PurviewID" +
  2043. " FROM TP_MST_UserPurview UP" +
  2044. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  2045. " AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
  2046. " AND UP.UserId = :UPUserId)" +
  2047. // 注浆,未绑定条码
  2048. " AND GD.GroutingDate = :GroutingDate" +
  2049. " AND GDD.GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'";
  2050. if (se.ScrapFlag != 1)
  2051. {
  2052. sqlString += "AND GDD.ScrapFlag = '" + (int)Constant.GroutingScrapFlag.No + "'";
  2053. }
  2054. // 周兴 2018-4-2 增加
  2055. if (!se.IsBarCodeScrapReasonUseFlag)
  2056. {
  2057. sqlString += " AND (GDD.BARCODE IS NULL OR LENGTH(GDD.BARCODE) = 0)";
  2058. }
  2059. //" AND (GDD.BARCODE IS NULL OR GDD.BARCODE = '')"
  2060. sqlString += " AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'"
  2061. ;
  2062. StringBuilder sql = new StringBuilder(sqlString);
  2063. List<OracleParameter> parameters = new List<OracleParameter>();
  2064. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2065. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  2066. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate, ParameterDirection.Input));
  2067. if (se != null)
  2068. {
  2069. // 成型线编码
  2070. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  2071. {
  2072. sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
  2073. parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  2074. }
  2075. // 成型线名称
  2076. if (!string.IsNullOrEmpty(se.GroutingLineName))
  2077. {
  2078. sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
  2079. parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  2080. }
  2081. // 成型工号
  2082. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  2083. {
  2084. sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
  2085. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  2086. }
  2087. // 注浆批次
  2088. if (se.GroutingBatchNo.HasValue)
  2089. {
  2090. sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
  2091. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
  2092. }
  2093. // 成型线类别
  2094. if (se.GMouldTypeID.HasValue)
  2095. {
  2096. sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
  2097. parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
  2098. }
  2099. // 备注
  2100. if (!string.IsNullOrEmpty(se.Remarks))
  2101. {
  2102. sql.Append(" AND INSTR(GDD.Remarks, :Remarks) > 0");
  2103. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  2104. }
  2105. }
  2106. sqlString = sql.ToString() +
  2107. " GROUP BY " +
  2108. " GD.GroutingDailyID," +
  2109. " GD.GroutingLineCode," +
  2110. " GD.GroutingLineName," +
  2111. " GMS.GMouldStatusName," +
  2112. " GMT.GMouldTypeName," +
  2113. " GD.MouldQuantity," +
  2114. " GD.GroutingBatchNo," +
  2115. " GD.UserCode" +
  2116. " ,STAFF.STAFFNAME" +
  2117. " ORDER BY GD.GroutingLineCode";
  2118. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2119. if (data == null || data.Rows.Count == 0)
  2120. {
  2121. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2122. return sre;
  2123. }
  2124. sre.Data = new DataSet();
  2125. sre.Data.Tables.Add(data);
  2126. return sre;
  2127. }
  2128. catch (Exception ex)
  2129. {
  2130. throw ex;
  2131. }
  2132. finally
  2133. {
  2134. if (conn != null &&
  2135. conn.ConnState == ConnectionState.Open)
  2136. {
  2137. conn.Close();
  2138. }
  2139. }
  2140. }
  2141. /// <summary>
  2142. /// 取得FPM0103画面(绑定条码)的注浆数据
  2143. /// </summary>
  2144. /// <param name="user">登录用户信息</param>
  2145. /// <param name="groutingDailyID">注浆日报ID</param>
  2146. /// <returns>
  2147. /// 注浆数据
  2148. /// OtherStatus = 1:没有可编辑的注浆信息
  2149. /// OtherStatus = 2:没有可编辑的注浆明细信息
  2150. /// </returns>
  2151. public static ServiceResultEntity GetFPM0103Data(SUserInfo user, int groutingDailyID)
  2152. {
  2153. ServiceResultEntity sre = new ServiceResultEntity();
  2154. if (groutingDailyID < 1)
  2155. {
  2156. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2157. return sre;
  2158. }
  2159. IDBConnection conn = null;
  2160. try
  2161. {
  2162. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2163. StringBuilder sql = new StringBuilder();
  2164. List<OracleParameter> parameters = new List<OracleParameter>();
  2165. string gdSql =
  2166. "SELECT GD.GroutingDailyID," +
  2167. " GD.GroutingLineID," +
  2168. " GD.GroutingLineCode," +
  2169. " GD.GroutingLineName," +
  2170. " GD.MouldQuantity," +
  2171. " GD.GroutingDate," +
  2172. //" GD.GroutingBatchNo," +
  2173. " GD.OPTimeStamp" +
  2174. " FROM TP_PM_GroutingDaily GD" +
  2175. // 成型线操作权限
  2176. //" INNER JOIN (SELECT UP.PurviewID" +
  2177. //" FROM TP_MST_UserPurview UP" +
  2178. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  2179. //" AND UP.UserId = :UPUserId) UP" +
  2180. //" ON UP.PurviewID = GD.GroutingLineID" +
  2181. " WHERE GD.AccountID = :AccountID" +
  2182. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  2183. // 成型线操作权限
  2184. " AND EXISTS (SELECT UP.PurviewID" +
  2185. " FROM TP_MST_UserPurview UP" +
  2186. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  2187. " AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
  2188. " AND UP.UserId = :UPUserId)" +
  2189. " AND GD.GroutingDailyID = :GroutingDailyID";
  2190. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2191. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  2192. parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
  2193. DataTable gdData = conn.GetSqlResultToDt(gdSql, parameters.ToArray());
  2194. if (gdData == null || gdData.Rows.Count == 0)
  2195. {
  2196. // 没有可编辑的注浆信息
  2197. sre.Status = Constant.ServiceResultStatus.Other;
  2198. sre.OtherStatus = 1;
  2199. sre.Message = "没有可编辑的注浆信息";
  2200. return sre;
  2201. }
  2202. gdData.TableName = "TP_PM_GroutingDaily";
  2203. sre.Data = new DataSet();
  2204. sre.Data.Tables.Add(gdData);
  2205. string gddSql =
  2206. "SELECT GDD.GroutingDailyID," +
  2207. " GDD.GroutingDailyDetailID," +
  2208. " GDD.GroutingLineID," +
  2209. " GDD.GroutingLineDetailID," +
  2210. " GDD.GroutingLineCode," +
  2211. " GDD.GroutingLineName," +
  2212. " GDD.GroutingDate," +
  2213. " GDD.GroutingBatchNo," +
  2214. " GDD.GroutingMouldCode," +
  2215. " GDD.UserCode," +
  2216. " GDD.GoodsCode," +
  2217. " GDD.GoodsName," +
  2218. " GMS.GMouldStatusName," +
  2219. " GDD.GroutingFlag," +
  2220. " GDD.LogoID," +
  2221. //" GDD.NoGroutingRreason," +
  2222. " DD.DictionaryValue AS NoGroutingRreason," +
  2223. " GDD.Remarks," +
  2224. " GDD.ScrapFlag," +
  2225. " GDD.DeliverFlag," +
  2226. //" GP.BarCode," +
  2227. //" GP.BarCode AS OBarCode," +
  2228. " GDD.SReasonID," +
  2229. " GDD.SReasonID ScrapReasonID," +
  2230. " SR.ScrapReason SReason," +
  2231. " GDD.BarCode," +
  2232. " GDD.BarCode AS OBarCode," +
  2233. " GDD.ScrapFlag AS OScrapFlag" +
  2234. " ,STAFF.STAFFNAME" +
  2235. " FROM TP_PM_GroutingDailyDetail GDD" +
  2236. " LEFT JOIN TP_MST_ScrapReason SR " +
  2237. " ON GDD.SReasonID = SR.ScrapReasonID " +
  2238. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  2239. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  2240. " LEFT JOIN TP_MST_DataDictionary DD" +
  2241. " ON DD.DictionaryID = GDD.NoGroutingRreason" +
  2242. //" LEFT JOIN TP_PM_GroutingProduct GP" +
  2243. //" ON GP.GroutingDailyDetailID = GDD.GroutingDailyDetailID" +
  2244. // fenglinyong add 添加员工姓名 2022-08-31
  2245. " LEFT JOIN (" +
  2246. " SELECT" +
  2247. " D.CLASSESSETTINGID," +
  2248. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME" +
  2249. " FROM" +
  2250. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D " +
  2251. " GROUP BY " +
  2252. " D.CLASSESSETTINGID " +
  2253. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID " +
  2254. // fenglinyong add 添加员工姓名 2022-08-31
  2255. " WHERE GDD.AccountID = :AccountID" +
  2256. " AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  2257. " AND GDD.GroutingDailyID = :GroutingDailyID" +
  2258. " ORDER BY GDD.GroutingMouldCode";
  2259. parameters.Clear();
  2260. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2261. parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
  2262. DataTable gddData = conn.GetSqlResultToDt(gddSql, parameters.ToArray());
  2263. if (gddData == null || gddData.Rows.Count == 0)
  2264. {
  2265. // 没有可注浆的模具
  2266. sre.Status = Constant.ServiceResultStatus.Other;
  2267. sre.OtherStatus = 2;
  2268. sre.Message = "没有可编辑的注浆明细信息";
  2269. return sre;
  2270. }
  2271. gddData.TableName = "TP_PM_GroutingDailyDetail";
  2272. sre.Data.Tables.Add(gddData);
  2273. // 获取成型报损原因
  2274. string sqlString = "SELECT ScrapReasonID,ScrapReason,DisplayNo,ScrapType,Remarks,ValueFlag FROM TP_MST_ScrapReason "
  2275. + " WHERE AccountID = :AccountID AND ScrapType ='0' Order By DisplayNo";
  2276. parameters.Clear();
  2277. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2278. DataTable returnTable = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2279. if (returnTable == null || returnTable.Rows.Count == 0)
  2280. {
  2281. // 没有可注浆的模具
  2282. sre.Status = Constant.ServiceResultStatus.Other;
  2283. sre.OtherStatus = 3;
  2284. sre.Message = "没有获取到成型报损原因";
  2285. return sre;
  2286. }
  2287. // 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 begin
  2288. sre.Result = 1;
  2289. string spm023 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_023' and ss.AccountID = " + user.AccountID);
  2290. int spm023Value = 0;
  2291. if (!string.IsNullOrWhiteSpace(spm023) && int.TryParse(spm023, out spm023Value) && spm023Value > 0)
  2292. {
  2293. DateTime tDate = DateTime.Now.Date;
  2294. DateTime lastDate = tDate.AddDays(1 - spm023Value);
  2295. DateTime gData = (DateTime)gdData.Rows[0]["GroutingDate"];
  2296. if (gData < lastDate || gData > tDate)
  2297. {
  2298. sre.Result = 0;
  2299. sre.Message = string.Format("允许注浆绑码的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  2300. }
  2301. }
  2302. // 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 end
  2303. returnTable.TableName = "TP_MST_ScrapReason";
  2304. sre.Data.Tables.Add(returnTable);
  2305. return sre;
  2306. }
  2307. catch (Exception ex)
  2308. {
  2309. throw ex;
  2310. }
  2311. finally
  2312. {
  2313. if (conn != null &&
  2314. conn.ConnState == ConnectionState.Open)
  2315. {
  2316. conn.Close();
  2317. }
  2318. }
  2319. }
  2320. /// <summary>
  2321. /// 保存FPM0103画面(绑定条码)的注浆数据
  2322. /// </summary>
  2323. /// <param name="user">登录用户信息</param>
  2324. /// <param name="groutingInfo">注浆数据</param>
  2325. /// <returns>保存结果
  2326. /// OtherStatus = 1: 没有以下成型线的操作权限
  2327. /// </returns>
  2328. public static ServiceResultEntity SetFPM0103Data(SUserInfo user, DataSet groutingInfo)
  2329. {
  2330. IDBTransaction tran = null;
  2331. try
  2332. {
  2333. ServiceResultEntity sre = new ServiceResultEntity();
  2334. if (groutingInfo == null ||
  2335. groutingInfo.Tables.Count < 2 ||
  2336. groutingInfo.Tables[0].Rows.Count < 1 ||
  2337. groutingInfo.Tables[1].Rows.Count < 1)
  2338. {
  2339. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2340. return sre;
  2341. }
  2342. tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2343. int executeResult = 0;
  2344. // 绑定条码
  2345. #region 校验时间戳
  2346. // 校验时间戳
  2347. DataRow gdDataRow = groutingInfo.Tables[0].Rows[0];
  2348. string checkSql =
  2349. "SELECT GroutingDailyID" +
  2350. " FROM TP_PM_GroutingDaily" +
  2351. " WHERE GroutingDailyID = :GroutingDailyID" +
  2352. " AND OPTimeStamp = :OPTimeStamp" +
  2353. " AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
  2354. OracleParameter[] checkParas = new OracleParameter[]
  2355. {
  2356. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  2357. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
  2358. };
  2359. object checkResult = tran.GetSqlResultToObj(checkSql, checkParas);
  2360. if (checkResult == null)
  2361. {
  2362. sre.Status = Constant.ServiceResultStatus.DataChanged;
  2363. return sre;
  2364. }
  2365. #endregion 校验时间戳
  2366. #region 校验条码
  2367. StringBuilder barcodes = new StringBuilder(",");
  2368. foreach (DataRow row in groutingInfo.Tables[1].Rows)
  2369. {
  2370. if ((row["OBarCode"] == null || row["OBarCode"] == DBNull.Value) &&
  2371. (row["BarCode"] != null && row["BarCode"] != DBNull.Value))
  2372. {
  2373. barcodes.Append(row["BarCode"].ToString() + ",");
  2374. }
  2375. }
  2376. // todo 条码状态表
  2377. string checkBarcodeSql =
  2378. "SELECT UBC.BarCode FROM TP_PM_UsedBarCode UBC " +
  2379. " WHERE INSTR(:BarCodes, ',' || UBC.BarCode || ',') > 0";
  2380. OracleParameter[] checkBarcodeParas = new OracleParameter[]
  2381. {
  2382. new OracleParameter(":BarCodes", OracleDbType.NVarchar2, barcodes.ToString(), ParameterDirection.Input),
  2383. };
  2384. DataTable barCodeDataTable = tran.GetSqlResultToDt(checkBarcodeSql, checkBarcodeParas);
  2385. if (barCodeDataTable != null && barCodeDataTable.Rows.Count > 0)
  2386. {
  2387. barcodes.Clear();
  2388. //foreach (DataRow row in groutingInfo.Tables[1].Rows)
  2389. foreach (DataRow row in barCodeDataTable.Rows)
  2390. {
  2391. if (barcodes.Length > 0)
  2392. {
  2393. barcodes.Append(",");
  2394. }
  2395. barcodes.Append(row["BarCode"].ToString());
  2396. }
  2397. sre.Status = Constant.ServiceResultStatus.Other;
  2398. sre.OtherStatus = 1;
  2399. //sre.Message = string.Format("条码({0})已被使用", barcode);
  2400. sre.Message = "以下条码已被使用" + System.Environment.NewLine + barcodes.ToString();
  2401. return sre;
  2402. }
  2403. #endregion 校验条码
  2404. #region 更新注浆日报表
  2405. string upgdSql = "UPDATE TP_PM_GroutingDaily SET UpdateUserID = :UpdateUserID WHERE GroutingDailyID = :GroutingDailyID";
  2406. OracleParameter[] upgdParas = new OracleParameter[]
  2407. {
  2408. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  2409. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2410. };
  2411. executeResult = tran.ExecuteNonQuery(upgdSql, upgdParas);
  2412. if (executeResult <= 0)
  2413. {
  2414. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2415. return sre;
  2416. }
  2417. #endregion 更新注浆日报表
  2418. #region 更新注浆日报明细表
  2419. #region SQL
  2420. string updateGroutingDailyDetailLogoSql =
  2421. "UPDATE TP_PM_GroutingDailyDetail" +
  2422. " SET Remarks = :Remarks," +
  2423. " UpdateUserID = :UpdateUserID, LogoID = :LogoID" +
  2424. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  2425. string updateGroutingDailyDetailRemarksSql =
  2426. "UPDATE TP_PM_GroutingDailyDetail" +
  2427. " SET ScrapFlag = :ScrapFlag, Remarks = :Remarks, " +
  2428. " ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
  2429. " ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
  2430. " UpdateUserID = :UpdateUserID, LogoID = :LogoID" +
  2431. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  2432. string updateGroutingDailyDetailScrapFlagSql =
  2433. "UPDATE TP_PM_GroutingDailyDetail" +
  2434. " SET ScrapFlag = :ScrapFlag, " +
  2435. " ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
  2436. " ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
  2437. " Remarks = :Remarks," +
  2438. " LogoID = :LogoID," +
  2439. " UpdateUserID = :UpdateUserID" +
  2440. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  2441. string updateGroutingDailyDetailSql =
  2442. "UPDATE TP_PM_GroutingDailyDetail" +
  2443. " SET BarCode = :BarCode, " +
  2444. " ScrapFlag = '" + (int)Constant.GroutingScrapFlag.No + "'," +
  2445. " Remarks = :Remarks," +
  2446. " LogoID = :LogoID," +
  2447. " UpdateUserID = :UpdateUserID" +
  2448. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  2449. #endregion SQL
  2450. foreach (DataRow detailDataRow in groutingInfo.Tables[1].Rows)
  2451. {
  2452. if (detailDataRow.RowState != DataRowState.Modified)
  2453. {
  2454. continue;
  2455. }
  2456. // 未注浆不用更新
  2457. if (((int)Constant.GroutingFlag.Yes).ToString() != detailDataRow["GroutingFlag"].ToString())
  2458. {
  2459. //OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
  2460. //{
  2461. // new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2462. // new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2463. // new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2464. // new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2465. //};
  2466. //executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
  2467. //if (executeResult <= 0)
  2468. //{
  2469. // sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2470. // return sre;
  2471. //}
  2472. continue;
  2473. }
  2474. // 已交坯不用更新
  2475. if ("1" == detailDataRow["DeliverFlag"].ToString())
  2476. {
  2477. //OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
  2478. //{
  2479. // new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2480. // new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2481. // new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2482. // new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2483. //};
  2484. //executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
  2485. //if (executeResult <= 0)
  2486. //{
  2487. // sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2488. // return sre;
  2489. //}
  2490. continue;
  2491. }
  2492. // 已绑定条码,不能修改条码,绑定条码后损坯
  2493. string oBarcode = detailDataRow["OBarcode"].ToString();
  2494. if (!string.IsNullOrEmpty(oBarcode))
  2495. {
  2496. OracleParameter[] updateGroutingDailyDetailRemarksParas = new OracleParameter[]
  2497. {
  2498. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2499. new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
  2500. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2501. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2502. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2503. };
  2504. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailRemarksSql, updateGroutingDailyDetailRemarksParas);
  2505. if (executeResult <= 0)
  2506. {
  2507. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2508. return sre;
  2509. }
  2510. //更新使用条码 2015/7/14
  2511. string sqlUpdateUsedBarCode = "update TP_PM_UsedBarCode set BarCodeStatus=:BarCodeStatus where barcode=:barcode";
  2512. OracleParameter[] UpdateUsedBarCodeParas = new OracleParameter[]
  2513. {
  2514. new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
  2515. new OracleParameter(":barcode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
  2516. };
  2517. executeResult = tran.ExecuteNonQuery(sqlUpdateUsedBarCode, UpdateUsedBarCodeParas);
  2518. if (executeResult <= 0)
  2519. {
  2520. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2521. return sre;
  2522. }
  2523. //更新使用条码 2015/7/14 end
  2524. continue;
  2525. }
  2526. // 损坯
  2527. string barcode = detailDataRow["Barcode"].ToString();
  2528. if (((int)Constant.GroutingScrapFlag.Yes).ToString() == detailDataRow["ScrapFlag"].ToString() ||
  2529. string.IsNullOrWhiteSpace(barcode))
  2530. {
  2531. OracleParameter[] updateGroutingDailyDetailScrapFlagParas = new OracleParameter[]
  2532. {
  2533. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2534. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2535. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2536. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2537. new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
  2538. };
  2539. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailScrapFlagSql, updateGroutingDailyDetailScrapFlagParas);
  2540. if (executeResult <= 0)
  2541. {
  2542. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2543. return sre;
  2544. }
  2545. //更新使用条码 2015/7/14
  2546. if (!string.IsNullOrEmpty(detailDataRow["BarCode"].ToString()))
  2547. {
  2548. string sqlUpdateUsedBarCode = "update TP_PM_UsedBarCode set BarCodeStatus=:BarCodeStatus where barcode=:barcode";
  2549. OracleParameter[] UpdateUsedBarCodeParas = new OracleParameter[]
  2550. {
  2551. new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
  2552. new OracleParameter(":barcode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
  2553. };
  2554. executeResult = tran.ExecuteNonQuery(sqlUpdateUsedBarCode, UpdateUsedBarCodeParas);
  2555. if (executeResult <= 0)
  2556. {
  2557. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2558. return sre;
  2559. }
  2560. }
  2561. //更新使用条码 2015/7/14 end
  2562. continue;
  2563. }
  2564. // 验证条码
  2565. // todo 条码状态表
  2566. //string checkBarcodeSql =
  2567. // "SELECT 1 FROM TP_PM_UsedBarCode WHERE BarCode = :BarCode";
  2568. //OracleParameter[] checkBarcodeParas = new OracleParameter[]
  2569. //{
  2570. // new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
  2571. //};
  2572. //object result = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas);
  2573. //if (result != null)
  2574. //{
  2575. // sre.Status = Constant.ServiceResultStatus.Other;
  2576. // sre.OtherStatus = 1;
  2577. // sre.Message = string.Format("条码({0})已被使用", barcode);
  2578. // return sre;
  2579. //}
  2580. string insertBarcodeSql =
  2581. "INSERT INTO TP_PM_UsedBarCode " +
  2582. " (BarCode, AccountID, CreateTime, CreateUserID,GroutingDailyDetailID,BarCodeStatus)" +
  2583. "VALUES " +
  2584. " (:BarCode, :AccountID, sysdate, :CreateUserID,:GroutingDailyDetailID,:BarCodeStatus)";
  2585. OracleParameter[] insertBarcodeParas = new OracleParameter[]
  2586. {
  2587. new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
  2588. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  2589. new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2590. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2591. new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
  2592. };
  2593. executeResult = tran.ExecuteNonQuery(insertBarcodeSql, insertBarcodeParas);
  2594. if (executeResult <= 0)
  2595. {
  2596. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2597. return sre;
  2598. }
  2599. // 绑定条码
  2600. OracleParameter[] updateGroutingDailyDetailParas = new OracleParameter[]
  2601. {
  2602. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2603. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2604. new OracleParameter(":BarCode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
  2605. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2606. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2607. };
  2608. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailSql, updateGroutingDailyDetailParas);
  2609. if (executeResult <= 0)
  2610. {
  2611. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2612. return sre;
  2613. }
  2614. }
  2615. #endregion 更新注浆日报明细表
  2616. tran.Commit();
  2617. return sre;
  2618. }
  2619. catch (Exception ex)
  2620. {
  2621. if (tran != null &&
  2622. tran.ConnState == ConnectionState.Open)
  2623. {
  2624. tran.Rollback();
  2625. }
  2626. throw ex;
  2627. }
  2628. finally
  2629. {
  2630. if (tran != null &&
  2631. tran.ConnState == ConnectionState.Open)
  2632. {
  2633. tran.Disconnect();
  2634. }
  2635. }
  2636. }
  2637. #endregion 条码绑定
  2638. #region 取消最后注浆
  2639. /// <summary>
  2640. /// 验证成型线编码是否能取消最后注浆
  2641. /// </summary>
  2642. /// <param name="user"></param>
  2643. /// <param name="glcode"></param>
  2644. /// <returns></returns>
  2645. public static ServiceResultEntity CheckFPM0106GLCode(SUserInfo user, string glcode)
  2646. {
  2647. ServiceResultEntity sre = new ServiceResultEntity();
  2648. if (string.IsNullOrWhiteSpace(glcode))
  2649. {
  2650. sre.Status = Constant.ServiceResultStatus.Other;
  2651. sre.OtherStatus = 1;
  2652. sre.Message = $"成型线【{glcode}】不存在";
  2653. return sre;
  2654. }
  2655. IDBConnection conn = null;
  2656. try
  2657. {
  2658. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2659. //输入成型线号,1.验证是否存在、2.最后注浆日期、批次是否存在,3.是否有报损、是否绑定条码。 返回【最后注浆日期、批次】。
  2660. string sqlString = "select GL.GroutingLineID\n" +
  2661. " ,gl.GroutingLineCode\n" +
  2662. " ,gl.GroutingLineName\n" +
  2663. " ,GL.LastGroutingDate\n" +
  2664. " ,GL.LastGroutingBatchNo\n" +
  2665. " ,gd.usercode\n" +
  2666. " ,gd.GroutingDailyID\n" +
  2667. " from TP_PC_GroutingLine gl\n" +
  2668. " left join TP_PM_GroutingDaily gd\n" +
  2669. " on gd.GroutingLineID = gl.GroutingLineID\n" +
  2670. " and gd.GroutingDate = GL.LastGroutingDate\n" +
  2671. " and gd.GroutingBatchNo = gl.LastGroutingBatchNo\n" +
  2672. " and gd.valueflag = '1'\n" +
  2673. " where gl.valueflag = '1'\n" +
  2674. " and gl.GroutingLineCode = :glcode";
  2675. OracleParameter[] ps = new OracleParameter[]
  2676. {
  2677. new OracleParameter(":glcode", glcode),
  2678. };
  2679. DataTable data = conn.GetSqlResultToDt(sqlString, ps);
  2680. if (data == null || data.Rows.Count == 0)
  2681. {
  2682. sre.Status = Constant.ServiceResultStatus.Other;
  2683. sre.OtherStatus = 1;
  2684. sre.Message = $"成型线【{glcode}】不存在";
  2685. return sre;
  2686. }
  2687. sre.Data = new DataSet();
  2688. sre.Data.Tables.Add(data);
  2689. object objgdid = data.Rows[0]["GroutingDailyID"];
  2690. if (objgdid == null || objgdid == DBNull.Value)
  2691. {
  2692. sre.Status = Constant.ServiceResultStatus.Other;
  2693. sre.OtherStatus = 2;
  2694. sre.Message = $"成型线【{glcode}】未注浆";
  2695. return sre;
  2696. }
  2697. int gdid = Convert.ToInt32(objgdid);
  2698. sqlString = "select count(gdd.GroutingDailyDetailID) dc\n" +
  2699. " from TP_PM_GroutingDailyDetail gdd\n" +
  2700. " where gdd.valueflag = '1'\n" +
  2701. " and gdd.GroutingDailyID = :gdid\n" +
  2702. " and (gdd.ScrapFlag <> '0' or gdd.barcode is not null)";
  2703. ps = new OracleParameter[]
  2704. {
  2705. new OracleParameter(":gdid", gdid),
  2706. };
  2707. int dcount = Convert.ToInt32(conn.GetSqlResultToObj(sqlString, ps));
  2708. if (dcount > 0)
  2709. {
  2710. sre.Status = Constant.ServiceResultStatus.Other;
  2711. sre.OtherStatus = 3;
  2712. sre.Message = $"成型线【{glcode}】最后注浆登记中有已报损或绑定条码的注浆明细";
  2713. return sre;
  2714. }
  2715. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 begin
  2716. sre.Result = 1;
  2717. string spm022 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_022' and ss.AccountID = " + user.AccountID);
  2718. int spm022Value = 0;
  2719. if (!string.IsNullOrWhiteSpace(spm022) && int.TryParse(spm022, out spm022Value) && spm022Value > 0)
  2720. {
  2721. DateTime tDate = DateTime.Now.Date;
  2722. DateTime lastDate = tDate.AddDays(1 - spm022Value);
  2723. DateTime gData = (DateTime)data.Rows[0]["LastGroutingDate"];
  2724. if (gData < lastDate || gData > tDate)
  2725. {
  2726. sre.Status = Constant.ServiceResultStatus.Other;
  2727. sre.OtherStatus = 9;
  2728. sre.Message = string.Format("允许注浆编辑的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  2729. return sre;
  2730. }
  2731. }
  2732. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 end
  2733. return sre;
  2734. }
  2735. catch (Exception ex)
  2736. {
  2737. throw ex;
  2738. }
  2739. finally
  2740. {
  2741. if (conn != null &&
  2742. conn.ConnState == ConnectionState.Open)
  2743. {
  2744. conn.Close();
  2745. }
  2746. }
  2747. }
  2748. /// <summary>
  2749. /// 验证成型线编码是否能取消最后注浆
  2750. /// </summary>
  2751. /// <param name="user"></param>
  2752. /// <param name="glcode"></param>
  2753. /// <returns></returns>
  2754. public static ServiceResultEntity SetFPM0106GLCode(SUserInfo user, ClientRequestEntity cre)
  2755. {
  2756. string glcode = cre.Data.Tables[0].Rows[0]["GroutingLineCode"] + "";
  2757. int glID = Convert.ToInt32(cre.Data.Tables[0].Rows[0]["GroutingLineID"]);
  2758. int gdID = Convert.ToInt32(cre.Data.Tables[0].Rows[0]["GroutingDailyID"]);
  2759. ServiceResultEntity sre = new ServiceResultEntity();
  2760. if (string.IsNullOrWhiteSpace(glcode))
  2761. {
  2762. sre.Status = Constant.ServiceResultStatus.Other;
  2763. sre.OtherStatus = 1;
  2764. sre.Message = $"成型线【{glcode}】不存在";
  2765. return sre;
  2766. }
  2767. IDBTransaction conn = null;
  2768. try
  2769. {
  2770. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2771. //输入成型线号,1.验证是否存在、2.最后注浆日期、批次是否存在,3.是否有报损、是否绑定条码。 返回【最后注浆日期、批次】。
  2772. string sqlString = "select GL.GroutingLineID\n" +
  2773. //" ,gl.GroutingLineCode\n" +
  2774. //" ,gl.GroutingLineName\n" +
  2775. //" ,nvl(GL.LastGroutingDate, to_date('1900-01-01','yyyy-mm-dd')) LastGroutingDate\n" +
  2776. //" ,nvl(GL.LastGroutingBatchNo,0) LastGroutingBatchNo\n" +
  2777. //" ,gd.usercode\n" +
  2778. " ,gd.GroutingDailyID\n" +
  2779. " from TP_PC_GroutingLine gl\n" +
  2780. " inner join TP_PM_GroutingDaily gd\n" +
  2781. " on gd.GroutingLineID = gl.GroutingLineID\n" +
  2782. " and gd.GroutingDate = GL.LastGroutingDate\n" +
  2783. " and gd.GroutingBatchNo = gl.LastGroutingBatchNo\n" +
  2784. " and gd.valueflag = '1'\n" +
  2785. " where gl.valueflag = '1'\n" +
  2786. " and gl.GroutingLineID = :glID\n" +
  2787. " for update";
  2788. OracleParameter[] ps = new OracleParameter[]
  2789. {
  2790. new OracleParameter(":glID", glID),
  2791. };
  2792. DataTable data = conn.GetSqlResultToDt(sqlString, ps);
  2793. if (data == null || data.Rows.Count == 0)
  2794. {
  2795. sre.Status = Constant.ServiceResultStatus.Other;
  2796. sre.OtherStatus = 1;
  2797. sre.Message = $"成型线【{glcode}】不存在";
  2798. return sre;
  2799. }
  2800. //sre.Data = new DataSet();
  2801. //sre.Data.Tables.Add(data);
  2802. //DateTime lgd = Convert.ToDateTime(data.Rows[0]["LastGroutingDate"]);
  2803. //int lgb = Convert.ToInt32(data.Rows[0]["LastGroutingBatchNo"]);
  2804. //if (lgd != Convert.ToDateTime(cre.Data.Tables[0].Rows[0]["LastGroutingDate"]) ||
  2805. // lgb != Convert.ToInt32(cre.Data.Tables[0].Rows[0]["LastGroutingBatchNo"]))
  2806. //{
  2807. // sre.Status = Constant.ServiceResultStatus.Other;
  2808. // sre.OtherStatus = 2;
  2809. // sre.Message = $"成型线【{glcode}】最后注浆日期和批次已变更";
  2810. // return sre;
  2811. //}
  2812. int lgdid = Convert.ToInt32(data.Rows[0]["GroutingDailyID"]);
  2813. if (lgdid != gdID)
  2814. {
  2815. sre.Status = Constant.ServiceResultStatus.Other;
  2816. sre.OtherStatus = 2;
  2817. sre.Message = $"成型线【{glcode}】最后注浆日期和批次已变更";
  2818. return sre;
  2819. }
  2820. sqlString = "select count(gdd.GroutingDailyDetailID) dc\n" +
  2821. " from TP_PM_GroutingDailyDetail gdd\n" +
  2822. " where gdd.valueflag = '1'\n" +
  2823. " and gdd.GroutingDailyID = :gdid\n" +
  2824. " and (gdd.ScrapFlag <> '0' or gdd.barcode is not null)";
  2825. ps = new OracleParameter[]
  2826. {
  2827. new OracleParameter(":gdid", gdID),
  2828. };
  2829. int dcount = Convert.ToInt32(conn.GetSqlResultToObj(sqlString, ps));
  2830. if (dcount > 0)
  2831. {
  2832. sre.Status = Constant.ServiceResultStatus.Other;
  2833. sre.OtherStatus = 3;
  2834. sre.Message = $"成型线【{glcode}】最后注浆登记中有已报损或绑定条码的注浆明细";
  2835. return sre;
  2836. }
  2837. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 begin
  2838. //sre.Result = 1;
  2839. //string spm022 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_022' and ss.AccountID = " + user.AccountID);
  2840. //int spm022Value = 0;
  2841. //if (!string.IsNullOrWhiteSpace(spm022) && int.TryParse(spm022, out spm022Value) && spm022Value > 0)
  2842. //{
  2843. // DateTime tDate = DateTime.Now.Date;
  2844. // DateTime lastDate = tDate.AddDays(1 - spm022Value);
  2845. // DateTime gData = (DateTime)data.Rows[0]["LastGroutingDate"];
  2846. // if (gData < lastDate || gData > tDate)
  2847. // {
  2848. // sre.Status = Constant.ServiceResultStatus.Other;
  2849. // sre.OtherStatus = 9;
  2850. // sre.Message = string.Format("允许注浆编辑的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  2851. // return sre;
  2852. // }
  2853. //}
  2854. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 end
  2855. //2.然后取消注浆,3.并valueflag=0。4.修改成型线的最后注浆日期、批次。
  2856. int r = 0;
  2857. string sql = null;
  2858. sql =
  2859. "UPDATE TP_PM_GroutingDailyDetail" +
  2860. " SET GroutingCount = CASE" +
  2861. " WHEN GroutingFlag = '1'" +
  2862. " THEN GroutingCount - 1" +
  2863. " ELSE GroutingCount END," +
  2864. " GroutingFlag = '0'," +
  2865. " UpdateUserID = :UpdateUserID" +
  2866. " WHERE GroutingDailyID = :gdid";
  2867. ps = new OracleParameter[]
  2868. {
  2869. new OracleParameter(":UpdateUserID", user.UserID),
  2870. new OracleParameter(":gdid", gdID),
  2871. };
  2872. r = conn.ExecuteNonQuery(sql, ps);
  2873. sql = "UPDATE tp_pc_groutinglinedetail gld\n" +
  2874. " SET gld.groutingcount =\n" +
  2875. " (SELECT gdds.groutingcount\n" +
  2876. " FROM tp_pm_groutingdailydetail gdds\n" +
  2877. " WHERE gdds.groutingdailyid = :gdid\n" +
  2878. " AND gdds.groutinglinedetailid = gld.groutinglinedetailid\n" +
  2879. " AND gdds.valueflag = '1')\n" +
  2880. " ,gld.updateuserid = :UpdateUserID\n" +
  2881. " WHERE gld.groutinglinedetailid IN\n" +
  2882. " (SELECT gdd.groutinglinedetailid\n" +
  2883. " FROM tp_pm_groutingdailydetail gdd\n" +
  2884. " WHERE gdd.groutingdailyid = :gdid\n" +
  2885. " AND gdd.valueflag = '1')";
  2886. r = conn.ExecuteNonQuery(sql, ps);
  2887. sql =
  2888. "UPDATE TP_PM_GroutingDailyDetail" +
  2889. " SET valueflag = '0'," +
  2890. " UpdateUserID = :UpdateUserID" +
  2891. " WHERE GroutingDailyID = :gdid";
  2892. r = conn.ExecuteNonQuery(sql, ps);
  2893. sql = "update TP_PM_GroutingDaily gd set gd.valueflag='0', updateuserid = :UpdateUserID where gd.GroutingDailyID = :gdid";
  2894. r = conn.ExecuteNonQuery(sql, ps);
  2895. sql = "update TP_PC_GroutingLine gl\n" +
  2896. " set (gl.LastGroutingDate, gl.LastGroutingBatchNo) =\n" +
  2897. " (select gd.GroutingDate, gd.GroutingBatchNo\n" +
  2898. " from TP_PM_GroutingDaily gd\n" +
  2899. " where gd.GroutingDailyID =\n" +
  2900. " (select max(gm.GroutingDailyID)\n" +
  2901. " from TP_PM_GroutingDaily gm\n" +
  2902. " where gm.GroutingLineID = :glid\n" +
  2903. " and gm.valueflag = '1'))\n" +
  2904. " ,gl.UpdateUserID = :UpdateUserID\n" +
  2905. " where gl.GroutingLineID = :glid";
  2906. ps = new OracleParameter[]
  2907. {
  2908. new OracleParameter(":UpdateUserID", user.UserID),
  2909. new OracleParameter(":glid", glID),
  2910. };
  2911. r = conn.ExecuteNonQuery(sql, ps);
  2912. conn.Commit();
  2913. return sre;
  2914. }
  2915. catch (Exception ex)
  2916. {
  2917. throw ex;
  2918. }
  2919. finally
  2920. {
  2921. if (conn != null &&
  2922. conn.ConnState == ConnectionState.Open)
  2923. {
  2924. conn.Disconnect();
  2925. }
  2926. }
  2927. }
  2928. #endregion
  2929. #endregion 注浆管理
  2930. #region 条码管理
  2931. #region 条码校验
  2932. /*
  2933. /// <summary>
  2934. /// 条码()无效
  2935. /// </summary>
  2936. private const string MSG_CHECK_BARCODE_1 = "条码({0})无效";
  2937. /// <summary>
  2938. /// 系统中不存在条码()
  2939. /// </summary>
  2940. private const string MSG_CHECK_BARCODE_2 = "系统中不存在条码({0})";
  2941. /// <summary>
  2942. /// 条码()属于其他账套
  2943. /// </summary>
  2944. private const string MSG_CHECK_BARCODE_3 = "条码({0})属于其他账套";
  2945. /// <summary>
  2946. /// 条码()未被使用
  2947. /// </summary>
  2948. private const string MSG_CHECK_BARCODE_4 = "条码({0})未被使用";
  2949. /// <summary>
  2950. /// 条码()已被使用
  2951. /// </summary>
  2952. private const string MSG_CHECK_BARCODE_5 = "条码({0})已被使用";
  2953. /// <summary>
  2954. /// 条码()已被更换为()
  2955. /// </summary>
  2956. private const string MSG_CHECK_BARCODE_6 = "条码({0})已被更换为({1})";
  2957. /// <summary>
  2958. /// 校验更换条码
  2959. /// </summary>
  2960. /// <param name="user"></param>
  2961. /// <param name="barcodes"></param>
  2962. /// <returns></returns>
  2963. private static bool CheckBarcode2(IDBTransaction tran, SUserInfo user,
  2964. string barcode, string newBarcode, out string messages)
  2965. {
  2966. messages = null;
  2967. if (string.IsNullOrWhiteSpace(barcode))
  2968. {
  2969. // 无效条码
  2970. messages = string.Format(MSG_CHECK_BARCODE_1, barcode);
  2971. return false;
  2972. }
  2973. if (string.IsNullOrWhiteSpace(newBarcode))
  2974. {
  2975. // 无效条码
  2976. messages = string.Format(MSG_CHECK_BARCODE_1, newBarcode);
  2977. return false;
  2978. }
  2979. string checkBarCodeSql =
  2980. "SELECT BC.BarCode, BC.BarCodeStatus, BC.AccountID" +
  2981. " FROM TP_PM_BarCode BC" +
  2982. " WHERE BarCode = :BarCode OR BarCode = :NewBarCode";
  2983. OracleParameter[] checkBarCodeParas = new OracleParameter[]
  2984. {
  2985. new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  2986. new OracleParameter(":NewBarCode", OracleDbType.Varchar2, newBarcode, ParameterDirection.Input),
  2987. };
  2988. DataTable barcodeData = tran.GetSqlResultToDt(checkBarCodeSql, checkBarCodeParas);
  2989. if (barcodeData == null || barcodeData.Rows.Count == 0)
  2990. {
  2991. // 系统中不存在条码
  2992. messages = string.Format(MSG_CHECK_BARCODE_2, barcode);
  2993. return false;
  2994. }
  2995. DataRow[] drs = barcodeData.Select("BarCode = '" + barcode + "'");
  2996. if (drs == null || drs.Length == 0)
  2997. {
  2998. // 系统中不存在条码
  2999. messages = string.Format(MSG_CHECK_BARCODE_2, barcode);
  3000. return false;
  3001. }
  3002. if (user.AccountID.ToString() != drs[0]["AccountID"].ToString())
  3003. {
  3004. // 条码属于其他账套
  3005. messages = string.Format(MSG_CHECK_BARCODE_3, barcode);
  3006. return false;
  3007. }
  3008. if (((int)Constant.BarcodeStatus.Unused).ToString() == drs[0]["BarCodeStatus"].ToString())
  3009. {
  3010. // 条码未被使用
  3011. messages = string.Format(MSG_CHECK_BARCODE_4, barcode);
  3012. return false;
  3013. }
  3014. if (((int)Constant.BarcodeStatus.Replaced).ToString() == drs[0]["BarCodeStatus"].ToString())
  3015. {
  3016. string sql = "SELECT FinalBarCode FROM TP_PM_BarCodeRecord WHERE BarCode = :BarCode";
  3017. OracleParameter[] paras = new OracleParameter[]
  3018. {
  3019. new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  3020. };
  3021. object finalBarCode = tran.GetSqlResultToObj(sql, paras);
  3022. if (finalBarCode != null)
  3023. {
  3024. // 条码已被更换
  3025. messages = string.Format(MSG_CHECK_BARCODE_6, barcode, finalBarCode);
  3026. return false;
  3027. }
  3028. }
  3029. drs = barcodeData.Select("BarCode = '" + newBarcode + "'");
  3030. if (drs == null || drs.Length == 0)
  3031. {
  3032. return true;
  3033. }
  3034. if (user.AccountID.ToString() != drs[0]["AccountID"].ToString())
  3035. {
  3036. // 条码属于其他账套
  3037. messages = string.Format(MSG_CHECK_BARCODE_3, newBarcode);
  3038. return false;
  3039. }
  3040. if (((int)Constant.BarcodeStatus.Unused).ToString() != drs[0]["BarCodeStatus"].ToString())
  3041. {
  3042. // 条码已被使用
  3043. messages = string.Format(MSG_CHECK_BARCODE_5, newBarcode);
  3044. return false;
  3045. }
  3046. return true;
  3047. }
  3048. /// <summary>
  3049. /// 校验注浆绑定条码
  3050. /// </summary>
  3051. /// <param name="user"></param>
  3052. /// <param name="barcodes"></param>
  3053. /// <returns></returns>
  3054. private static bool CheckBarcode1(IDBTransaction tran, SUserInfo user, string barcodes,
  3055. out DataTable invalid, out DataTable effective)
  3056. {
  3057. // 无效条码
  3058. invalid = null;
  3059. // 有效条码
  3060. effective = null;
  3061. if (string.IsNullOrWhiteSpace(barcodes))
  3062. {
  3063. // 无效条码
  3064. return false;
  3065. }
  3066. string checkBarCodeSql =
  3067. "SELECT BC.BarCodeStatus, BC.AccountID" +
  3068. " FROM TP_PM_BarCode BC" +
  3069. //" WHERE BarCode = :BarCode;";
  3070. " WHERE INSTR(:BarCodes, ',' || BC.BarCode || ',') > 0";
  3071. OracleParameter[] checkBarCodeParas = new OracleParameter[]
  3072. {
  3073. new OracleParameter(":BarCodes", OracleDbType.Varchar2, checkBarCodeSql, ParameterDirection.Input),
  3074. };
  3075. DataTable barcodeData = tran.GetSqlResultToDt(checkBarCodeSql, checkBarCodeParas);
  3076. if (barcodeData == null || barcodeData.Rows.Count == 0)
  3077. {
  3078. // 通过校验
  3079. return true;
  3080. }
  3081. foreach (DataRow barcode in barcodeData.Rows)
  3082. {
  3083. if (user.AccountID.ToString() != barcode["AccountID"].ToString())
  3084. {
  3085. // 不在同一个账套
  3086. }
  3087. if (((int)Constant.BarcodeStatus.Unused).ToString() != barcode["BarCodeStatus"].ToString())
  3088. {
  3089. }
  3090. }
  3091. return true;
  3092. }
  3093. */
  3094. #endregion 条码校验
  3095. #region 条码变更
  3096. /// <summary>
  3097. /// 取得FPM0202画面(条码变更用条码查询)的查询数据
  3098. /// </summary>
  3099. /// <param name="user">登录用户信息</param>
  3100. /// <param name="se">查询条件</param>
  3101. /// <returns>查询结果</returns>
  3102. public static ServiceResultEntity GetFPM0202SData(SUserInfo user, FPM0202_SE se)
  3103. {
  3104. IDBConnection conn = null;
  3105. try
  3106. {
  3107. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3108. // 改为权限控制 modify by fubin 2020-10-12 begin
  3109. // 'S_PM_024', '未交坯可否替换条码' add by chenxy 2019-05-07 begin
  3110. //string spm024 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_024' and ss.AccountID = " + user.AccountID);
  3111. //if (spm024 != "1")
  3112. //{
  3113. // spm024 = "0";
  3114. //}
  3115. // 'S_PM_024', '未交坯可否替换条码' add by chenxy 2019-05-07 end
  3116. object isExists = conn.GetSqlResultToObj(
  3117. @"SELECT 1
  3118. FROM tp_mst_userright t
  3119. WHERE (t.functioncode = '06020201' OR t.functioncode = '[ALL]')
  3120. AND t.userid = " + user.UserID);
  3121. // 改为权限控制 modify by fubin 2020-10-12 end
  3122. List<OracleParameter> parameters = new List<OracleParameter>();
  3123. StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0202SSQL());
  3124. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3125. //parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  3126. if (se != null)
  3127. {
  3128. if (isExists == null)
  3129. {
  3130. sql.Append(" AND GDD.deliverflag = '1'");
  3131. }
  3132. // 成型线编码
  3133. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  3134. {
  3135. sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
  3136. parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  3137. }
  3138. // 成型线名称
  3139. if (!string.IsNullOrEmpty(se.GroutingLineName))
  3140. {
  3141. sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
  3142. parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  3143. }
  3144. // 成型线类别
  3145. if (se.GMouldTypeID.HasValue)
  3146. {
  3147. sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
  3148. parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
  3149. }
  3150. // 注浆日期-开始
  3151. if (se.GroutingDateBegin.HasValue)
  3152. {
  3153. sql.Append(" AND GD.GroutingDate >= :GroutingDateBegin");
  3154. parameters.Add(new OracleParameter(":GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
  3155. }
  3156. // 注浆日期-结束
  3157. if (se.GroutingDateEnd.HasValue)
  3158. {
  3159. sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
  3160. parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  3161. }
  3162. // 注浆批次
  3163. if (se.GroutingBatchNo.HasValue)
  3164. {
  3165. sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
  3166. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
  3167. }
  3168. //PDA 注浆日期-开始与结束
  3169. if (!string.IsNullOrEmpty(se.GroutingDateBeginPDA))
  3170. {
  3171. sql.Append(" AND GD.GroutingDate >= TO_DATE(:GroutingDateBeginPDA, 'yyyy-mm-dd hh24:mi:ss')");
  3172. parameters.Add(new OracleParameter(":GroutingDateBeginPDA", OracleDbType.Varchar2, se.GroutingDateBeginPDA, ParameterDirection.Input));
  3173. }
  3174. if (!string.IsNullOrEmpty(se.GroutingDateEndPDA))
  3175. {
  3176. sql.Append(" AND GD.GroutingDate <= TO_DATE(:GroutingDateEndPDA, 'yyyy-mm-dd hh24:mi:ss')");
  3177. parameters.Add(new OracleParameter(":GroutingDateEndPDA", OracleDbType.Varchar2, se.GroutingDateEndPDA, ParameterDirection.Input));
  3178. }
  3179. // 注浆模具编号
  3180. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  3181. {
  3182. sql.Append(" AND INSTR(GDD.GroutingMouldCode, :GroutingMouldCode) > 0");
  3183. parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  3184. }
  3185. // 产品编号
  3186. if (!string.IsNullOrEmpty(se.GoodsCode))
  3187. {
  3188. sql.Append(" AND INSTR(GDD.GoodsCode, :GoodsCode) > 0");
  3189. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  3190. }
  3191. // 产品名称
  3192. if (!string.IsNullOrEmpty(se.GoodsName))
  3193. {
  3194. sql.Append(" AND INSTR(GDD.GoodsName, :GoodsName) > 0");
  3195. parameters.Add(new OracleParameter(":GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
  3196. }
  3197. // 备注
  3198. if (!string.IsNullOrEmpty(se.Remarks))
  3199. {
  3200. sql.Append(" AND INSTR(GDD.Remarks, :Remarks) > 0");
  3201. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  3202. }
  3203. // 成型工号
  3204. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  3205. {
  3206. // 成型工号不要模糊查询
  3207. //sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
  3208. sql.Append(" AND GDD.UserCode = :GroutingUserCode");
  3209. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  3210. }
  3211. // 条码
  3212. if (!string.IsNullOrEmpty(se.BarCode))
  3213. {
  3214. sql.Append(" AND INSTR(GDD.BarCode, :BarCode) > 0");
  3215. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  3216. }
  3217. // 交坯时间-开始
  3218. if (se.DeliverMudDateBegin.HasValue)
  3219. {
  3220. sql.Append(" AND GDD.DeliverTime >= :DMCreateTimeBegin");
  3221. parameters.Add(new OracleParameter(":DMCreateTimeBegin", OracleDbType.Date, se.DeliverMudDateBegin.Value, ParameterDirection.Input));
  3222. }
  3223. // 交坯时间-结束
  3224. if (se.DeliverMudDateEnd.HasValue)
  3225. {
  3226. sql.Append(" AND GDD.DeliverTime < :DMCreateTimeEnd");
  3227. parameters.Add(new OracleParameter(":DMCreateTimeEnd", OracleDbType.Date, se.DeliverMudDateEnd.Value.AddDays(1), ParameterDirection.Input));
  3228. }
  3229. //PDA 交坯时间-开始与结束
  3230. if (!string.IsNullOrEmpty(se.DeliverMudDateBeginPDA))
  3231. {
  3232. sql.Append(" AND GDD.DeliverTime >= TO_DATE(:DeliverMudDateBeginPDA, 'yyyy-mm-dd hh24:mi:ss')");
  3233. parameters.Add(new OracleParameter(":DeliverMudDateBeginPDA", OracleDbType.Varchar2, se.DeliverMudDateBeginPDA, ParameterDirection.Input));
  3234. }
  3235. if (!string.IsNullOrEmpty(se.DeliverMudDateEndPDA))
  3236. {
  3237. sql.Append(" AND GDD.DeliverTime < TO_DATE(:DeliverMudDateEndPDA, 'yyyy-mm-dd hh24:mi:ss')");
  3238. parameters.Add(new OracleParameter(":DeliverMudDateEndPDA", OracleDbType.Varchar2, se.DeliverMudDateEndPDA, ParameterDirection.Input));
  3239. }
  3240. }
  3241. sql.Append(" GROUP BY GDD.GroutingLineCode, GDD.GroutingLineName, GDD.GroutingDate, GDD.GroutingBatchNo,GDD.DeliverTime, GDD.UserCode, " +
  3242. " GDD.GoodsCode, GDD.GoodsName, GDD.GroutingMouldCode, GMS.GMouldStatusName, GDD.GroutingCount, mu.username," +
  3243. " GDD.Remarks, GMT.GMouldTypeName, GDD.BarCode, P.ProcedureName, IP.ProcedureTime, GDD.IsPublicBody,STAFF.STAFFNAME");
  3244. sql.Append(" ) ");
  3245. // 生产工号
  3246. if (se != null && !string.IsNullOrEmpty(se.WorkUserCode))
  3247. {
  3248. //sql.Append(" AND EXISTS (SELECT 1");
  3249. //sql.Append(" FROM TP_PM_PRODUCTIONDATA PPD");
  3250. //sql.Append(" WHERE PPD.AccountID = :AccountID");
  3251. //sql.Append(" AND PPD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'");
  3252. //sql.Append(" AND PPD.BarCode = GDD.BarCode");
  3253. //sql.Append(" AND INSTR(PPD.UserCode, :WorkUserCode) > 0");
  3254. //sql.Append(" )");
  3255. //sql.Append(" AND INSTR(PDW.UserCode, :WorkUserCode) > 0");
  3256. sql.Append(" WHERE INSTR(WorkUserCodes, :WorkUserCode) > 0");
  3257. parameters.Add(new OracleParameter(":WorkUserCode", OracleDbType.NVarchar2, se.WorkUserCode, ParameterDirection.Input));
  3258. }
  3259. //sql.Append(" ORDER BY GDD.GroutingDate, GDD.GroutingLineCode, GDD.GroutingMouldCode");
  3260. sql.Append(" ORDER BY GroutingDate, GroutingLineCode, GroutingBatchNo, GroutingMouldCode");
  3261. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  3262. ServiceResultEntity sre = new ServiceResultEntity();
  3263. if (data == null || data.Rows.Count == 0)
  3264. {
  3265. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3266. return sre;
  3267. }
  3268. sre.Data = new DataSet();
  3269. sre.Data.Tables.Add(data);
  3270. return sre;
  3271. }
  3272. catch (Exception ex)
  3273. {
  3274. throw ex;
  3275. }
  3276. finally
  3277. {
  3278. if (conn != null &&
  3279. conn.ConnState == ConnectionState.Open)
  3280. {
  3281. conn.Close();
  3282. }
  3283. }
  3284. }
  3285. /// <summary>
  3286. /// 获取查询sql
  3287. /// </summary>
  3288. /// <returns>sql</returns>
  3289. private static string GetFPM0202SSQL()
  3290. {
  3291. string selSql =
  3292. "SELECT GroutingLineCode, GroutingLineName, GroutingDate,GroutingBatchNo, UserCode, " +
  3293. " GoodsCode, GoodsName, GroutingMouldCode, GMouldStatusName," +
  3294. " GroutingCount, Remarks, GMouldTypeName, BarCode, ProcedureName, ProcedureTime," +
  3295. " IsPublicBody," +
  3296. " DMCreateTime,MONITORName," +
  3297. " WorkUserCodes,BarCodeRecord,STAFFNAME" +
  3298. " FROM (" +
  3299. //"SELECT GDD.GroutingDailyDetailID," +
  3300. //" GDD.GroutingDailyID," +
  3301. "SELECT " +
  3302. // 成型线编码
  3303. " GDD.GroutingLineCode," +
  3304. // 成型线名称
  3305. " GDD.GroutingLineName," +
  3306. // 注浆日期
  3307. " GDD.GroutingDate," +
  3308. // 注浆批次
  3309. " GDD.GroutingBatchNo," +
  3310. // 成型工号
  3311. " GDD.UserCode," +
  3312. // 产品编码
  3313. " GDD.GoodsCode," +
  3314. // 产品名称
  3315. " GDD.GoodsName," +
  3316. // 注浆线模具编码
  3317. " GDD.GroutingMouldCode," +
  3318. // 模具状态
  3319. " GMS.GMouldStatusName," +
  3320. // 注浆次数
  3321. " GDD.GroutingCount," +
  3322. // 备注
  3323. " GDD.Remarks," +
  3324. // 成型线类型
  3325. " GMT.GMouldTypeName," +
  3326. // 成型班长
  3327. " mu.username as MONITORName," +
  3328. // 绑定条码
  3329. " GDD.BarCode," +
  3330. // 当前工序名称
  3331. " P.ProcedureName," +
  3332. // 当前工序完成时间
  3333. " IP.ProcedureTime," +
  3334. // 公坯标识
  3335. " GDD.IsPublicBody," +
  3336. // 交坯时间
  3337. " GDD.DeliverTime AS DMCreateTime," +
  3338. //" GDD.deliverflag," +
  3339. // 生产工号
  3340. //" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(PDW.UserCode)) AS WorkUserCodes," +
  3341. //" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(BCR.BarCode)) AS BarCodeRecord" +
  3342. " listagg(to_char(PDW.UserCode), ',') within GROUP(ORDER BY PDW.ProductionDataID) AS WorkUserCodes," +
  3343. " listagg(to_char(BCR.BarCode), ',') within GROUP(ORDER BY BCR.CREATETIME) AS BarCodeRecord" +
  3344. " ,STAFF.STAFFNAME" +
  3345. // 注浆日报
  3346. " FROM TP_PM_GroutingDaily GD" +
  3347. // 注浆日报明细表
  3348. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  3349. " ON GD.GroutingDailyID = GDD.GroutingDailyID" +
  3350. // 成型线类型
  3351. " INNER JOIN TP_MST_GMouldType GMT" +
  3352. " ON GD.GMouldTypeID = GMT.GMouldTypeID" +
  3353. // 模具状态
  3354. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  3355. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  3356. // 成型线
  3357. " LEFT JOIN tp_pc_groutingline gl" +
  3358. " ON gl.groutinglineid = GDD.GroutingLineID" +
  3359. // 成型班长
  3360. " LEFT JOIN tp_mst_user mu" +
  3361. " ON mu.userid = gl.MONITORID" +
  3362. // 历史条码
  3363. " LEFT JOIN TP_PM_BarCodeRecord BCR" +
  3364. " ON BCR.FinalBarCode = GDD.BarCode" +
  3365. // 当前工序
  3366. " LEFT JOIN TP_PM_InProduction IP" +
  3367. " ON IP.BarCode = GDD.BarCode" +
  3368. // 当前工序名
  3369. " LEFT JOIN TP_PC_Procedure P" +
  3370. " ON P.ProcedureID = IP.ProcedureID" +
  3371. // 生产工号
  3372. " LEFT JOIN TP_PM_ProductionData PDW" +
  3373. " ON PDW.BarCode = GDD.BarCode" +
  3374. " AND PDW.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  3375. // fenglinyong add 添加员工姓名 2022-08-31
  3376. " LEFT JOIN (" +
  3377. " SELECT" +
  3378. " D.CLASSESSETTINGID," +
  3379. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME " +
  3380. " FROM" +
  3381. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D" +
  3382. " GROUP BY" +
  3383. " D.CLASSESSETTINGID" +
  3384. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID" +
  3385. // fenglinyong add 添加员工姓名 2022-08-31
  3386. // 账套
  3387. " WHERE GD.AccountID = :AccountID" +
  3388. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  3389. " AND LENGTH(GDD.BarCode) > 0";
  3390. //// 成型线操作权限
  3391. //" AND EXISTS (SELECT UP.PurviewID" +
  3392. //" FROM TP_MST_UserPurview UP" +
  3393. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  3394. //" AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
  3395. //" AND UP.UserId = :UPUserId)";
  3396. return selSql;
  3397. }
  3398. /// <summary>
  3399. /// 更换条码
  3400. /// </summary>
  3401. /// <param name="user">登录用户信息</param>
  3402. /// <param name="barcode">原条码</param>
  3403. /// <param name="newBarcode">新条码</param>
  3404. /// <param name="remarks">备注</param>
  3405. /// <returns>操作结果</returns>
  3406. public static ServiceResultEntity SetFPM0201Data(SUserInfo user, string barcode, string newBarcode, string remarks, string groutingUserCode, string goodsCode)
  3407. {
  3408. IDBTransaction tran = null;
  3409. try
  3410. {
  3411. ServiceResultEntity sre = new ServiceResultEntity();
  3412. if (string.IsNullOrWhiteSpace(barcode) ||
  3413. string.IsNullOrWhiteSpace(newBarcode) ||
  3414. barcode == newBarcode)
  3415. {
  3416. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  3417. return sre;
  3418. }
  3419. tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3420. #region 校验条码
  3421. /*
  3422. //string message = null;
  3423. //bool check = PMModuleLogic.CheckBarcode2(tran, user, barcode, newBarcode, out message);
  3424. //if (!check)
  3425. //{
  3426. // sre.Status = Constant.ServiceResultStatus.Other;
  3427. // sre.Message = message;
  3428. // return sre;
  3429. //}
  3430. // todo 条码状态表
  3431. string checkBarcodeSql =
  3432. "SELECT UBC.BarCode FROM TP_PM_UsedBarCode UBC " +
  3433. " WHERE UBC.BarCode = :BarCode";
  3434. OracleParameter[] checkBarcodeParas = new OracleParameter[]
  3435. {
  3436. new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
  3437. };
  3438. object objBarCode = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas);
  3439. if (objBarCode == null || objBarCode.ToString().Length == 0)
  3440. {
  3441. sre.Status = Constant.ServiceResultStatus.Other;
  3442. sre.OtherStatus = 1;
  3443. sre.Message = string.Format("原条码({0})不存在", barcode);
  3444. return sre;
  3445. }
  3446. OracleParameter[] checkBarcodeParas1 = new OracleParameter[]
  3447. {
  3448. new OracleParameter(":BarCode", OracleDbType.NVarchar2, newBarcode, ParameterDirection.Input),
  3449. };
  3450. objBarCode = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas1);
  3451. if (objBarCode != null && objBarCode.ToString().Length > 0)
  3452. {
  3453. sre.Status = Constant.ServiceResultStatus.Other;
  3454. sre.OtherStatus = 2;
  3455. sre.Message = string.Format("新条码({0})已被使用", newBarcode);
  3456. return sre;
  3457. }
  3458. */
  3459. #endregion 校验条码
  3460. OracleParameter[] paras = new OracleParameter[]
  3461. {
  3462. new OracleParameter("in_BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
  3463. new OracleParameter("in_NewBarCode", OracleDbType.NVarchar2, newBarcode, ParameterDirection.Input),
  3464. new OracleParameter("in_Remarks", OracleDbType.NVarchar2, remarks, ParameterDirection.Input),
  3465. new OracleParameter("in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  3466. new OracleParameter("in_CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  3467. new OracleParameter("out_Result", OracleDbType.Varchar2, 10, null, ParameterDirection.Output),
  3468. new OracleParameter("out_Barcode", OracleDbType.NVarchar2, 50, null, ParameterDirection.Output),
  3469. new OracleParameter("in_GroutingUserCode", OracleDbType.Varchar2, groutingUserCode, ParameterDirection.Input),
  3470. new OracleParameter("in_GoodsCode", OracleDbType.Varchar2, goodsCode, ParameterDirection.Input),
  3471. };
  3472. DataSet ds = tran.ExecStoredProcedure("PRO_PM_ReplacedBarCode", paras);
  3473. //-- 1.1 原条码不存在
  3474. //-- 1.2 原条码属于其他账套
  3475. //-- 1.3 原条码已被替换
  3476. //-- 1.4 产品已登窑
  3477. //-- 1.5 产品已包装
  3478. //-- 1.6 产品已成型报损
  3479. //-- 1.7 未交坯不可替换
  3480. //-- 2.1 新条码属于其他账套
  3481. //-- 2.2 新条码已被使用
  3482. //-- 2.3 新条码已被替换
  3483. //-- 3.1 条码对应成型工号不正确
  3484. //-- 3.2 替换工号没有操作成型线权限
  3485. //-- 3.3 无注浆信息
  3486. //-- 3.4 产品编码与条码不一致
  3487. //-- 3.5 产品不是在产产品
  3488. string out_Result = paras[5].Value.ToString();
  3489. if (out_Result != "0")
  3490. {
  3491. sre.Status = Constant.ServiceResultStatus.Other;
  3492. switch (out_Result)
  3493. {
  3494. case "1.1":
  3495. sre.OtherStatus = 1;
  3496. sre.Message = "原产品条码不存在";
  3497. break;
  3498. case "1.2":
  3499. sre.OtherStatus = 2;
  3500. sre.Message = "原产品条码属于其他账套";
  3501. break;
  3502. case "1.3":
  3503. sre.OtherStatus = 3;
  3504. sre.Message = "原产品条码已被替换为(" + paras[6].Value.ToString() + ")";
  3505. break;
  3506. case "1.4":
  3507. sre.OtherStatus = 7;
  3508. sre.Message = "产品已经过工序(" + paras[6].Value.ToString() + ")";
  3509. break;
  3510. case "1.5":
  3511. sre.OtherStatus = 13;
  3512. sre.Message = "产品已完成生产流程,不能替换";
  3513. break;
  3514. case "1.6":
  3515. sre.OtherStatus = 14;
  3516. sre.Message = "产品已成型报损,不能替换";
  3517. break;
  3518. case "1.7":
  3519. sre.OtherStatus = 15;
  3520. sre.Message = "产品未交坯,不能替换";
  3521. break;
  3522. case "2.1":
  3523. sre.OtherStatus = 4;
  3524. sre.Message = "新产品条码属于其他账套";
  3525. break;
  3526. case "2.2":
  3527. sre.OtherStatus = 5;
  3528. sre.Message = "新产品条码已被使用";
  3529. break;
  3530. case "2.3":
  3531. sre.OtherStatus = 6;
  3532. sre.Message = "新产品条码已被替换为(" + paras[6].Value.ToString() + ")";
  3533. break;
  3534. case "3.1":
  3535. sre.OtherStatus = 8;
  3536. sre.Message = "条码对应成型工号不正确";
  3537. break;
  3538. case "3.2":
  3539. sre.OtherStatus = 9;
  3540. sre.Message = "替换工号没有操作成型线权限";
  3541. break;
  3542. case "3.3":
  3543. sre.OtherStatus = 10;
  3544. sre.Message = "无注浆信息";
  3545. break;
  3546. case "3.4":
  3547. sre.OtherStatus = 11;
  3548. sre.Message = "产品编码与条码不一致";
  3549. break;
  3550. case "3.5":
  3551. sre.OtherStatus = 12;
  3552. sre.Message = "产品不是在产产品";
  3553. break;
  3554. default:
  3555. break;
  3556. }
  3557. }
  3558. tran.Commit();
  3559. return sre;
  3560. }
  3561. catch (Exception ex)
  3562. {
  3563. if (tran != null &&
  3564. tran.ConnState == ConnectionState.Open)
  3565. {
  3566. tran.Rollback();
  3567. }
  3568. throw ex;
  3569. }
  3570. finally
  3571. {
  3572. if (tran != null &&
  3573. tran.ConnState == ConnectionState.Open)
  3574. {
  3575. tran.Disconnect();
  3576. }
  3577. }
  3578. }
  3579. /// <summary>
  3580. /// 取得FPM0203画面(条码变更)的查询数据
  3581. /// </summary>
  3582. /// <param name="user">登录用户信息</param>
  3583. /// <param name="se">查询条件</param>
  3584. /// <returns>查询结果</returns>
  3585. public static ServiceResultEntity GetFPM0203SData(SUserInfo user, FPM0203_SE se)
  3586. {
  3587. IDBConnection conn = null;
  3588. try
  3589. {
  3590. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3591. List<OracleParameter> parameters = new List<OracleParameter>();
  3592. StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0203SSQL());
  3593. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3594. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  3595. if (se != null)
  3596. {
  3597. // 变更日期-开始
  3598. if (se.DateBegin.HasValue)
  3599. {
  3600. sql.Append(" AND BCR.CreateTime >= :DateBegin");
  3601. parameters.Add(new OracleParameter(":DateBegin", OracleDbType.Date, se.DateBegin.Value, ParameterDirection.Input));
  3602. }
  3603. // 变更日期-结束
  3604. if (se.DateEnd.HasValue)
  3605. {
  3606. sql.Append(" AND BCR.CreateTime <= :DateEnd");
  3607. parameters.Add(new OracleParameter(":DateEnd", OracleDbType.Date, se.DateEnd.Value.AddDays(1), ParameterDirection.Input));
  3608. }
  3609. // 成型线编码
  3610. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  3611. {
  3612. sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
  3613. parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  3614. }
  3615. // 成型线名称
  3616. if (!string.IsNullOrEmpty(se.GroutingLineName))
  3617. {
  3618. sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
  3619. parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  3620. }
  3621. // 成型线类别
  3622. if (se.GMouldTypeID.HasValue)
  3623. {
  3624. sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
  3625. parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
  3626. }
  3627. // 注浆日期-开始
  3628. if (se.GroutingDateBegin.HasValue)
  3629. {
  3630. sql.Append(" AND GD.GroutingDate >= :GroutingDateBegin");
  3631. parameters.Add(new OracleParameter(":GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
  3632. }
  3633. // 注浆日期-结束
  3634. if (se.GroutingDateEnd.HasValue)
  3635. {
  3636. sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
  3637. parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  3638. }
  3639. // 注浆批次
  3640. if (se.GroutingBatchNo.HasValue)
  3641. {
  3642. sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
  3643. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
  3644. }
  3645. // 注浆模具编号
  3646. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  3647. {
  3648. sql.Append(" AND INSTR(GDD.GroutingMouldCode, :GroutingMouldCode) > 0");
  3649. parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  3650. }
  3651. // 产品编号
  3652. if (!string.IsNullOrEmpty(se.GoodsCode))
  3653. {
  3654. sql.Append(" AND INSTR(GDD.GoodsCode, :GoodsCode) > 0");
  3655. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  3656. }
  3657. // 产品名称
  3658. if (!string.IsNullOrEmpty(se.GoodsName))
  3659. {
  3660. sql.Append(" AND INSTR(GDD.GoodsName, :GoodsName) > 0");
  3661. parameters.Add(new OracleParameter(":GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
  3662. }
  3663. // 备注
  3664. if (!string.IsNullOrEmpty(se.Remarks))
  3665. {
  3666. sql.Append(" AND INSTR(BCR.Remarks, :Remarks) > 0");
  3667. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  3668. }
  3669. // 成型工号
  3670. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  3671. {
  3672. // 成型工号不要模糊查询
  3673. sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
  3674. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  3675. }
  3676. }
  3677. sql.Append(" ORDER BY BCR.CreateTime, BCR.BarCode");
  3678. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  3679. ServiceResultEntity sre = new ServiceResultEntity();
  3680. if (data == null || data.Rows.Count == 0)
  3681. {
  3682. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3683. return sre;
  3684. }
  3685. sre.Data = new DataSet();
  3686. sre.Data.Tables.Add(data);
  3687. return sre;
  3688. }
  3689. catch (Exception ex)
  3690. {
  3691. throw ex;
  3692. }
  3693. finally
  3694. {
  3695. if (conn != null &&
  3696. conn.ConnState == ConnectionState.Open)
  3697. {
  3698. conn.Close();
  3699. }
  3700. }
  3701. }
  3702. /// <summary>
  3703. /// 取得FPM0203画面(条码变更)的查询数据
  3704. /// </summary>
  3705. /// <param name="user">登录用户信息</param>
  3706. /// <param name="barcode">条码</param>
  3707. /// <returns>查询结果</returns>
  3708. public static ServiceResultEntity GetFPM0203SData(SUserInfo user, string barcode)
  3709. {
  3710. IDBConnection conn = null;
  3711. try
  3712. {
  3713. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3714. List<OracleParameter> parameters = new List<OracleParameter>();
  3715. StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0203SSQL());
  3716. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3717. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  3718. //if (!string.IsNullOrWhiteSpace(barcode))
  3719. {
  3720. sql.Append(" AND BCR.BarCode = :BarCode");
  3721. parameters.Add(new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input));
  3722. }
  3723. sql.Append(" ORDER BY BCR.CreateTime, BCR.BarCode");
  3724. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  3725. ServiceResultEntity sre = new ServiceResultEntity();
  3726. if (data == null || data.Rows.Count == 0)
  3727. {
  3728. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3729. return sre;
  3730. }
  3731. sre.Data = new DataSet();
  3732. sre.Data.Tables.Add(data);
  3733. return sre;
  3734. }
  3735. catch (Exception ex)
  3736. {
  3737. throw ex;
  3738. }
  3739. finally
  3740. {
  3741. if (conn != null &&
  3742. conn.ConnState == ConnectionState.Open)
  3743. {
  3744. conn.Close();
  3745. }
  3746. }
  3747. }
  3748. /// <summary>
  3749. /// 获取查询sql
  3750. /// </summary>
  3751. /// <returns>sql</returns>
  3752. private static string GetFPM0203SSQL()
  3753. {
  3754. string selSql =
  3755. "SELECT BCR.BarCode," +
  3756. " BCR.NewBarCode," +
  3757. // 创建时间
  3758. " BCR.CreateTime," +
  3759. // 创建工号
  3760. " U.UserName AS CreateUser," +
  3761. // 备注
  3762. " BCR.Remarks," +
  3763. // 工序
  3764. " P.ProcedureCode," +
  3765. " P.ProcedureName," +
  3766. // 成型线编码
  3767. " GDD.GroutingLineCode," +
  3768. // 成型线名称
  3769. " GDD.GroutingLineName," +
  3770. // 注浆日期
  3771. " GDD.GroutingDate," +
  3772. // 注浆批次
  3773. " GDD.GroutingBatchNo," +
  3774. // 成型工号
  3775. " GDD.UserCode," +
  3776. // 产品编码
  3777. " GDD.GoodsCode," +
  3778. // 产品名称
  3779. " GDD.GoodsName," +
  3780. // 注浆线模具编码
  3781. " GDD.GroutingMouldCode," +
  3782. // 模具状态
  3783. " GMS.GMouldStatusName," +
  3784. // 注浆次数
  3785. " GDD.GroutingCount," +
  3786. // 成型班长
  3787. " mu.username as MONITORName," +
  3788. // 成型线类型
  3789. " GMT.GMouldTypeName " +
  3790. //员工姓名
  3791. " ,STAFF.STAFFNAME " +
  3792. " FROM TP_PM_BarCodeRecord BCR" +
  3793. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  3794. " ON GDD.BarCode = BCR.FinalBarCode" +
  3795. " INNER JOIN TP_PM_GroutingDaily GD" +
  3796. " ON GD.GroutingDailyID = GDD.GroutingDailyID" +
  3797. " INNER JOIN TP_MST_User U" +
  3798. " ON U.UserID = BCR.CreateUserID" +
  3799. // 成型线类型
  3800. " INNER JOIN TP_MST_GMouldType GMT" +
  3801. " ON GD.GMouldTypeID = GMT.GMouldTypeID" +
  3802. // 模具状态
  3803. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  3804. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  3805. // 成型线
  3806. " LEFT JOIN tp_pc_groutingline gl" +
  3807. " ON gl.groutinglineid = GDD.GroutingLineID" +
  3808. // 成型班长
  3809. " LEFT JOIN tp_mst_user mu" +
  3810. " ON mu.userid = gl.MONITORID" +
  3811. // 工序
  3812. " LEFT JOIN TP_PC_Procedure P" +
  3813. " ON P.ProcedureID = BCR.ProcedureID" +
  3814. // fenglinyong add 添加员工姓名 2022-08-31
  3815. " LEFT JOIN (" +
  3816. " SELECT" +
  3817. " D.CLASSESSETTINGID," +
  3818. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME " +
  3819. " FROM" +
  3820. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D" +
  3821. " GROUP BY" +
  3822. " D.CLASSESSETTINGID" +
  3823. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID" +
  3824. // fenglinyong add 添加员工姓名 2022-08-31
  3825. // 账套
  3826. " WHERE BCR.AccountID = :AccountID" +
  3827. " AND (BCR.CreateUserID = :CreateUserID OR " +
  3828. " EXISTS (SELECT UP.PurviewID" +
  3829. " FROM TP_MST_UserPurview UP" +
  3830. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateUser + "'" +
  3831. " AND (UP.PurviewID = -1 OR UP.PurviewID = BCR.CreateUserID)" +
  3832. " AND UP.UserId = :CreateUserID))";
  3833. return selSql;
  3834. }
  3835. #endregion 条码变更
  3836. #region 开模报损
  3837. /// <summary>
  3838. /// 保存开模报损信息
  3839. /// </summary>
  3840. /// <param name="user"></param>
  3841. /// <param name="groutingInfo"></param>
  3842. /// <returns></returns>
  3843. public static ServiceResultEntity SaveScrapKm(ClientRequestEntity cre, SUserInfo userInfo)
  3844. {
  3845. IDBTransaction tran = null;
  3846. string sqlString = string.Empty;
  3847. DataSet groutingInfo = cre.Data;
  3848. try
  3849. {
  3850. ServiceResultEntity sre = new ServiceResultEntity();
  3851. if (groutingInfo == null ||
  3852. groutingInfo.Tables.Count < 2 ||
  3853. groutingInfo.Tables[0].Rows.Count < 1 ||
  3854. groutingInfo.Tables[1].Rows.Count < 1)
  3855. {
  3856. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  3857. return sre;
  3858. }
  3859. tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3860. int executeResult = 0;
  3861. #region 校验时间戳
  3862. // 校验时间戳
  3863. DataRow gdDataRow = groutingInfo.Tables[0].Rows[0];
  3864. sqlString =
  3865. "SELECT GroutingDailyID" +
  3866. " FROM TP_PM_GroutingDaily" +
  3867. " WHERE GroutingDailyID = :GroutingDailyID" +
  3868. " AND OPTimeStamp = :OPTimeStamp" +
  3869. " AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
  3870. OracleParameter[] checkParas = new OracleParameter[]
  3871. {
  3872. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  3873. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
  3874. };
  3875. object checkResult = tran.GetSqlResultToObj(sqlString, checkParas);
  3876. if (checkResult == null)
  3877. {
  3878. sre.Status = Constant.ServiceResultStatus.DataChanged;
  3879. return sre;
  3880. }
  3881. #endregion 校验时间戳
  3882. #region 更新注浆日报明细表
  3883. string errorMsg = string.Empty;
  3884. foreach (DataRow detailDataRow in groutingInfo.Tables[1].Rows)
  3885. {
  3886. if (detailDataRow.RowState != DataRowState.Modified)
  3887. {
  3888. continue;
  3889. }
  3890. #region 1、判断是否符合报损条件(未注浆,交坯之后不允许报损,是否进行过了报损)
  3891. sqlString = "SELECT GroutingFlag,DeliverFlag,ScrapFlag,GroutingMouldCode\n" +
  3892. " FROM TP_PM_GroutingDailyDetail \n" +
  3893. " WHERE AccountID = :AccountID\n" +
  3894. " AND GroutingDailyDetailID = :GroutingDailyDetailID\n";
  3895. OracleParameter[] paras = new OracleParameter[] {
  3896. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  3897. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  3898. };
  3899. DataTable returnTable = tran.GetSqlResultToDt(sqlString, paras);
  3900. // 编码不存在
  3901. if (returnTable.Rows.Count == 0)
  3902. {
  3903. sre.Status = Constant.ServiceResultStatus.Other;
  3904. sre.Result = -99;
  3905. return sre;
  3906. }
  3907. // 未注浆
  3908. if ("0".Equals(returnTable.Rows[0]["GroutingFlag"]))
  3909. {
  3910. sre.Result = -100;
  3911. errorMsg += "模具:" + returnTable.Rows[0]["GroutingMouldCode"] + "未注浆";
  3912. continue;
  3913. }
  3914. // 已经交坯
  3915. if ("1".Equals(returnTable.Rows[0]["DeliverFlag"]))
  3916. {
  3917. sre.Result = -101;
  3918. errorMsg += "模具:" + returnTable.Rows[0]["GroutingMouldCode"] + "已经交坯";
  3919. continue;
  3920. }
  3921. #endregion
  3922. sqlString = "UPDATE TP_PM_GroutingDailyDetail" +
  3923. " SET ScrapFlag = :ScrapFlag, " +
  3924. " ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
  3925. " ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
  3926. " ScrapType = :ScrapType, " +
  3927. " SReasonID = :SReasonID, " +
  3928. " Remarks = :Remarks," +
  3929. " UpdateUserID = :UpdateUserID" +
  3930. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  3931. OracleParameter[] oracleParameters = new OracleParameter[]
  3932. {
  3933. new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
  3934. new OracleParameter(":ScrapType", OracleDbType.Char, "0", ParameterDirection.Input), // 开模报损
  3935. new OracleParameter(":SReasonID", OracleDbType.Int32, detailDataRow["SReasonID"], ParameterDirection.Input),
  3936. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  3937. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  3938. new OracleParameter(":UpdateUserID", OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  3939. };
  3940. executeResult = tran.ExecuteNonQuery(sqlString, oracleParameters);
  3941. if (executeResult <= 0)
  3942. {
  3943. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  3944. return sre;
  3945. }
  3946. }
  3947. #endregion 更新注浆日报明细表
  3948. if (!string.IsNullOrWhiteSpace(errorMsg))
  3949. {
  3950. sre.Message = errorMsg;
  3951. }
  3952. tran.Commit();
  3953. return sre;
  3954. }
  3955. catch (Exception ex)
  3956. {
  3957. if (tran != null &&
  3958. tran.ConnState == ConnectionState.Open)
  3959. {
  3960. tran.Rollback();
  3961. }
  3962. throw ex;
  3963. }
  3964. finally
  3965. {
  3966. if (tran != null &&
  3967. tran.ConnState == ConnectionState.Open)
  3968. {
  3969. tran.Disconnect();
  3970. }
  3971. }
  3972. }
  3973. #endregion
  3974. #endregion 条码管理
  3975. #region 生产数据查询
  3976. #region 生产数据查询(干补)
  3977. /// <summary>
  3978. /// 取得FPM0202画面(条码变更用条码查询)的查询数据
  3979. /// </summary>
  3980. /// <param name="user">登录用户信息</param>
  3981. /// <param name="se">查询条件</param>
  3982. /// <returns>查询结果</returns>
  3983. public static ServiceResultEntity GetProductionData8(SUserInfo user, ClientRequestEntity cre)
  3984. {
  3985. IDBConnection conn = null;
  3986. try
  3987. {
  3988. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3989. conn.Open();
  3990. //SearchProductionDataEntity searchEntity = cre.Request as SearchProductionDataEntity;
  3991. //if (searchEntity == null)
  3992. //{
  3993. // return null;
  3994. //}
  3995. string sqlString = "SELECT pd.CreateTime\n" +
  3996. " ,pd.UpdateTime\n" +
  3997. " ,pd.ProductionDataID\n" +
  3998. " ,pd.ProductionLineCode\n" +
  3999. " ,pd.BarCode\n" +
  4000. " ,pd.GoodsCode\n" +
  4001. " ,pd.GoodsName\n" +
  4002. " ,pd.UserCode\n" +
  4003. " ,pd.IsPublicBody\n" +
  4004. " ,decode(pd.ProcedureModel, '1', '计数模型', '检验模型') AS ProcedureModel\n" +
  4005. " ,pmt.ProcedureModelTypeName\n" +
  4006. //" ,decode(pd.PieceType, '1', '不计件', '同工种策略') AS PieceType\n" +
  4007. //" ,pd.IsReworked\n" +
  4008. //" ,gl.GoodsLevelName AS GoodsGrade\n" +
  4009. " ,org.OrganizationName\n" +
  4010. //" ,pd.Remarks\n" +
  4011. //" ,pd.KilnID\n" +
  4012. //" ,pd.KilnCode\n" +
  4013. //" ,pd.KilnName\n" +
  4014. //" ,pd.KilnCarID\n" +
  4015. //" ,pd.KilnCarCode\n" +
  4016. //" ,pd.KilnCarName\n" +
  4017. //" ,pd.KilnCarPosition\n" +
  4018. //" ,dd.DictionaryValue KilnCarPositionName\n" +
  4019. " ,gt.GoodsTypeName\n" +
  4020. " ,u.usercode AS barusercode\n" +
  4021. " ,pd.GroutingUserCode\n" +
  4022. " ,pd.GroutingMouldCode\n" +
  4023. " ,pd.GroutingDate\n" +
  4024. " ,pd.GroutingNum\n" +
  4025. " ,u.username AS barusername\n" +
  4026. //" ,decode(pd.Goodsleveltypeid,\n" +
  4027. //" '4',\n" +
  4028. //" '正品',\n" +
  4029. //" '5',\n" +
  4030. //" '副品',\n" +
  4031. //" '6',\n" +
  4032. //" '重烧',\n" +
  4033. //" '7',\n" +
  4034. //" '次品',\n" +
  4035. //" '') AS Goodsleveltype\n" +
  4036. " ,REPLACE((l.Logoname || '[' || l.Logocode || ']'), '[]', '') AS LogoCodeName\n" +
  4037. " ,pd.SpecialRepairFlag\n" +
  4038. " ,pcp.procedurename inprocedurename\n" +
  4039. " ,(SELECT pp.procedurename\n" +
  4040. " FROM tp_pc_procedure pp\n" +
  4041. " WHERE pp.procedureid =\n" +
  4042. " fun_rpt_getprevprocedureidall(pd.productiondataid, pd.barcode)) procedurename\n" +
  4043. " FROM TP_PM_ProductionData pd\n" +
  4044. " LEFT JOIN tp_pm_inproduction inp\n" +
  4045. " ON inp.barcode = pd.barcode\n" +
  4046. " LEFT JOIN tp_pc_procedure pcp\n" +
  4047. " ON pcp.procedureid = inp.procedureid\n" +
  4048. " LEFT JOIN TP_SYS_ProcedureModelType pmt\n" +
  4049. " ON pd.ModelType = pmt.PROCEDUREMODELTYPEID\n" +
  4050. " LEFT JOIN TP_MST_ORGANIZATION org\n" +
  4051. " ON pd.OrganizationID = org.OrganizationID\n" +
  4052. //" LEFT JOIN TP_MST_DataDictionary dd\n" +
  4053. //" ON pd.KilnCarPosition = dd.DictionaryID\n" +
  4054. //" LEFT JOIN TP_MST_GoodsLevel gl\n" +
  4055. //" ON pd.Goodslevelid = gl.Goodslevelid\n" +
  4056. " LEFT JOIN TP_MST_Goods g\n" +
  4057. " ON pd.GoodsID = g.GoodsID\n" +
  4058. " LEFT JOIN TP_MST_GoodsType gt\n" +
  4059. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  4060. " LEFT JOIN TP_MST_USER u\n" +
  4061. " ON pd.Createuserid = u.userid\n" +
  4062. " LEFT JOIN TP_MST_Logo l\n" +
  4063. " ON pd.logoid = l.logoid\n" +
  4064. " WHERE pd.accountID = :accountID and pd.ValueFlag = '1'\n" +
  4065. " AND pd.ProcedureID = :procedureID\n" +
  4066. " AND (:barCode IS NULL OR :barCode IS NULL OR\n" +
  4067. " instr(pd.BarCode, :barCode) > 0)\n" +
  4068. " AND (:goodsCode IS NULL OR :goodsCode IS NULL OR\n" +
  4069. " instr(pd.goodsCode, :goodsCode) > 0)\n" +
  4070. " AND (:goodsName IS NULL OR :goodsName IS NULL OR\n" +
  4071. " instr(pd.goodsName, :goodsName) > 0)\n" +
  4072. " AND (:userCode IS NULL OR :userCode IS NULL OR\n" +
  4073. " instr(pd.userCode, :userCode) > 0)\n" +
  4074. " AND (:organizationID = 0 OR :organizationID IS NULL OR\n" +
  4075. " pd.organizationID = :organizationID)\n" +
  4076. " AND (pd.CreateTime >= :begindate AND pd.CreateTime < :enddate)\n" +
  4077. //" AND (:isReworked IS NULL OR :isReworked IS NULL OR\n" +
  4078. //" (instr(:isReworked, pd.isReworked) > 0))\n" +
  4079. //" AND (:pKilnCode IS NULL OR :pKilnCode IS NULL OR\n" +
  4080. //" pd.KilnCode = :pKilnCode)\n" +
  4081. //" AND (:pKilnCarCode IS NULL OR :pKilnCarCode IS NULL OR\n" +
  4082. //" instr(pd.KilnCarCode, :KilnCarCode) > 0)\n" +
  4083. //" AND (:pKilnCarPosition IS NULL OR :pKilnCarPosition IS NULL OR\n" +
  4084. //" pd.KilnCarPosition = :pKilnCarPosition)\n" +
  4085. " AND (pd.CreateUserID = :currentUserID OR EXISTS\n" +
  4086. " (SELECT 1\n" +
  4087. " FROM TP_MST_UserPurview up\n" +
  4088. " WHERE up.PurviewType = 4\n" +
  4089. " AND (up.PurviewID = -1 OR up.PurviewID = pd.CreateUserID)\n" +
  4090. " AND up.UserId = :currentUserID))\n" +
  4091. //" AND (:remarks IS NULL OR :remarks IS NULL OR\n" +
  4092. //" instr(pd.remarks, :remarks) > 0)\n" +
  4093. " AND (:goodstypecode IS NULL OR :goodstypecode IS NULL OR\n" +
  4094. " instr(gt.goodstypecode, :goodstypecode) > 0)";
  4095. //IDataParameter[] paras = new OracleParameter[]
  4096. //{
  4097. // new OracleParameter(":procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input),
  4098. // new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  4099. // new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  4100. // new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  4101. // new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  4102. // new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  4103. // new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  4104. // new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  4105. // new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  4106. // new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  4107. // new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  4108. // new OracleParameter(":userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4109. // new OracleParameter(":kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  4110. // new OracleParameter(":kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  4111. // new OracleParameter(":kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  4112. // new OracleParameter(":currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4113. // new OracleParameter(":goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  4114. //};
  4115. IDataParameter[] paras = new OracleParameter[]
  4116. {
  4117. new OracleParameter(":procedureID",OracleDbType.Int32, cre.Properties["ProcedureID"], ParameterDirection.Input),
  4118. new OracleParameter(":barCode", OracleDbType.Varchar2,cre.Properties["BarCode"], ParameterDirection.Input),
  4119. new OracleParameter(":goodsCode", OracleDbType.Varchar2,cre.Properties["GoodsCode"], ParameterDirection.Input),
  4120. new OracleParameter(":goodsName", OracleDbType.Varchar2,cre.Properties["GoodsName"], ParameterDirection.Input),
  4121. new OracleParameter(":userCode", OracleDbType.Varchar2,cre.Properties["UserCode"], ParameterDirection.Input),
  4122. new OracleParameter(":organizationID", OracleDbType.Int32,cre.Properties["OrganizationID"], ParameterDirection.Input),
  4123. //new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  4124. //new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  4125. new OracleParameter(":begindate", OracleDbType.Date,cre.Properties["BeginDate"], ParameterDirection.Input),
  4126. new OracleParameter(":enddate", OracleDbType.Date,cre.Properties["EndDate"], ParameterDirection.Input),
  4127. new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  4128. //new OracleParameter(":userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4129. //new OracleParameter(":kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  4130. //new OracleParameter(":kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  4131. //new OracleParameter(":kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  4132. new OracleParameter(":currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4133. new OracleParameter(":goodstypecode", OracleDbType.Varchar2,cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  4134. };
  4135. DataTable data = conn.GetSqlResultToDt(sqlString, paras);
  4136. ServiceResultEntity sre = new ServiceResultEntity();
  4137. sre.Data = new DataSet();
  4138. sre.Data.Tables.Add(data);
  4139. if (data == null || data.Rows.Count == 0)
  4140. {
  4141. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4142. return sre;
  4143. }
  4144. return sre;
  4145. }
  4146. catch (Exception ex)
  4147. {
  4148. throw ex;
  4149. }
  4150. finally
  4151. {
  4152. if (conn != null &&
  4153. conn.ConnState == ConnectionState.Open)
  4154. {
  4155. conn.Close();
  4156. }
  4157. }
  4158. }
  4159. #endregion
  4160. #endregion
  4161. #region 注浆盘点
  4162. /// <summary>
  4163. /// 获取盘点单列表(searchbox用)
  4164. /// </summary>
  4165. /// <param name="sUserInfo"></param>
  4166. /// <returns></returns>
  4167. public static ServiceResultEntity GetGBCheckedList(SUserInfo sUserInfo, ClientRequestEntity cre)
  4168. {
  4169. ServiceResultEntity sre = new ServiceResultEntity();
  4170. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4171. try
  4172. {
  4173. con.Open();
  4174. string sqlString = @"select GBCheckedID inCheckedID,GBCheckedNo inCheckedNo,AccountDate,Remarks from TP_PM_GroutingChecked where accountid=:accountid and ValueFlag=1 order by GBCheckedID desc";
  4175. List<OracleParameter> parameters = new List<OracleParameter>();
  4176. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  4177. sre.Data = con.GetSqlResultToDs(sqlString, parameters.ToArray());
  4178. return sre;
  4179. }
  4180. catch (Exception ex)
  4181. {
  4182. throw ex;
  4183. }
  4184. finally
  4185. {
  4186. if (con.ConnState == ConnectionState.Open)
  4187. {
  4188. con.Close();
  4189. }
  4190. }
  4191. }
  4192. /// <summary>
  4193. /// 获取盘点单列表(一览用)
  4194. /// </summary>
  4195. /// <param name="sUserInfo"></param>
  4196. /// <returns></returns>
  4197. public static ServiceResultEntity GetAllGBCheckList(SUserInfo sUserInfo, ClientRequestEntity cre)
  4198. {
  4199. ServiceResultEntity sre = new ServiceResultEntity();
  4200. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4201. try
  4202. {
  4203. con.Open();
  4204. string sqlString = "SELECT gbc.gbcheckedid\n" +
  4205. " ,gbc.gbcheckedno\n" +
  4206. " ,gbc.gbcheckname\n" +
  4207. " ,gbc.remarks\n" +
  4208. " ,gbc.createtime\n" +
  4209. " ,u.usercode CreateUserCode\n" +
  4210. " ,u.username CreateUserName\n" +
  4211. " FROM TP_PM_GroutingChecked gbc\n" +
  4212. " LEFT JOIN tp_mst_user u\n" +
  4213. " ON u.userid = gbc.createuserid\n" +
  4214. " WHERE gbc.valueflag = '1'\n" +
  4215. " AND gbc.accountid = :accountid\n" +
  4216. " AND (:datebegin IS NULL OR gbc.createtime >= :datebegin)\n" +
  4217. " AND (:dateend IS NULL OR gbc.createtime <= :dateend)\n" +
  4218. " AND (:gbcheckedno IS NULL OR instr(gbc.gbcheckedno, :gbcheckedno) > 0)\n" +
  4219. " AND (:gbcheckname IS NULL OR instr(gbc.gbcheckname, :gbcheckname) > 0)\n" +
  4220. " AND (:remarks IS NULL OR instr(gbc.remarks, :remarks) > 0)" +
  4221. " ORDER BY gbcheckedid desc";
  4222. OracleParameter[] parameters = new OracleParameter[] {
  4223. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  4224. new OracleParameter(":datebegin", OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  4225. new OracleParameter(":dateend", OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  4226. new OracleParameter(":gbcheckedno", OracleDbType.NVarchar2, cre.Properties["gbcheckedno"], ParameterDirection.Input),
  4227. new OracleParameter(":gbcheckname", OracleDbType.NVarchar2, cre.Properties["gbcheckname"], ParameterDirection.Input),
  4228. new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input),
  4229. };
  4230. sre.Data = con.GetSqlResultToDs(sqlString, parameters);
  4231. return sre;
  4232. }
  4233. catch (Exception ex)
  4234. {
  4235. throw ex;
  4236. }
  4237. finally
  4238. {
  4239. if (con.ConnState == ConnectionState.Open)
  4240. {
  4241. con.Close();
  4242. }
  4243. }
  4244. }
  4245. /// <summary>
  4246. /// 获取盘点单明细(一览用)
  4247. /// </summary>
  4248. /// <param name="sUserInfo"></param>
  4249. /// <returns></returns>
  4250. public static ServiceResultEntity GetAllGBCheckDetail(SUserInfo sUserInfo, ClientRequestEntity cre)
  4251. {
  4252. ServiceResultEntity sre = new ServiceResultEntity();
  4253. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4254. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4255. try
  4256. {
  4257. sre.Data = new DataSet();
  4258. con.Open();
  4259. string sqlString = "SELECT gbu.gbcheckedid, u.userid, u.usercode, u.username\n" +
  4260. " FROM Tp_Pm_Gbcheckeduser gbu\n" +
  4261. " LEFT JOIN tp_mst_user u\n" +
  4262. " ON u.userid = gbu.userid\n" +
  4263. " WHERE gbu.gbcheckedid = :gbcheckedid";
  4264. OracleParameter[] parameters = new OracleParameter[] {
  4265. new OracleParameter(":gbcheckedid", OracleDbType.Int32, checkedID, ParameterDirection.Input),
  4266. };
  4267. DataTable userTable = con.GetSqlResultToDt(sqlString, parameters);
  4268. userTable.TableName = "UserTable";
  4269. sre.Data.Tables.Add(userTable);
  4270. sqlString = "SELECT 0 sel\n" +
  4271. " ,gbcd.GBCheckedID -- 盘点单ID\n" +
  4272. " ,gbcd.BarCode -- 产品条码\n" +
  4273. " ,gbcd.GBCheckedNo -- 盘点单号\n" +
  4274. " ,gbcd.GroutingLineCode -- 成型生产线编码\n" +
  4275. " ,gbcd.GroutingLineName -- 成型生产线名称\n" +
  4276. " ,gbcd.GroutingDate -- 注浆日期\n" +
  4277. " ,gbcd.GroutingMouldCode -- 注浆模具编号\n" +
  4278. " ,gbcd.GroutingBatchNo -- 注浆批次\n" +
  4279. " ,gbcd.UserCode -- 注浆工号编码\n" +
  4280. " ,gbcd.GoodsCode -- 产品编码\n" +
  4281. " ,gbcd.GoodsName -- 产品名称\n" +
  4282. " ,gbcd.GroutingCount -- 注浆次数\n" +
  4283. " ,gbcd.ScrapFlag -- 损坯标识\n" +
  4284. " ,gbcd.ScrapTime -- 损坯时间\n" +
  4285. " ,SUser.usercode ScrapUsercode -- 损坯工号\n" +
  4286. " ,gbcd.IsPublicBody -- 公坯标识\n" +
  4287. " ,gbcd.DeliverFlag -- 交坯标识\n" +
  4288. " ,gbcd.DeliverTime -- 交坯时间\n" +
  4289. " ,gbcd.DeliverUserCode -- 交坯工号\n" +
  4290. " ,gbcd.Remarks -- 备注\n" +
  4291. " ,gbcd.GBCheckedFlag -- 盘点标识\n" +
  4292. " ,gbcd.CheckedDate -- 盘点时间\n" +
  4293. " ,CUser.usercode CheckedUserCode -- 盘点工号\n" +
  4294. " ,case when gdd.scrapflag = '1' then '成型损坯'" +
  4295. " when inp.barcode is not null then to_char(p.procedurename) " +
  4296. " when sp.barcode is not null then to_char(glt.goodsleveltypename) " +
  4297. " when fp.barcode is not null then '生产完成' else '' end procedurename -- 当前工序\n" +
  4298. " ,case when gdd.scrapflag = '1' then gdd.scraptime " +
  4299. " when inp.barcode is not null then inp.PROCEDURETIME " +
  4300. " when sp.barcode is not null then sp.auditdate " +
  4301. " when fp.barcode is not null then fp.createtime else null end PROCEDURETIME -- 当前工序时间\n" +
  4302. //" ,p.procedurename procedurename -- 当前工序\n" +
  4303. //" ,inp.PROCEDURETIME PROCEDURETIME -- 当前工序时间\n" +
  4304. " FROM tp_pm_gbcheckeddetail gbcd\n" +
  4305. // 当前注浆信息
  4306. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  4307. " ON gdd.groutingdailydetailid = gbcd.groutingdailydetailid\n" +
  4308. " LEFT JOIN tp_mst_user SUser\n" +
  4309. " ON SUser.userid = gbcd.ScrapUser\n" +
  4310. " LEFT JOIN tp_mst_user CUser\n" +
  4311. " ON CUser.userid = gbcd.CheckedUserID\n" +
  4312. // 在产工序
  4313. " LEFT JOIN tp_pm_inproduction inp \n" +
  4314. " ON inp.barcode = gdd.barcode\n" +
  4315. // 完成
  4316. " LEFT JOIN tp_pm_finishedproduct fp \n" +
  4317. " ON inp.barcode is null and fp.barcode = gdd.barcode\n" +
  4318. // 损坯
  4319. " LEFT JOIN tp_pm_scrapproduct sp \n" +
  4320. " ON inp.barcode is null and fp.barcode is null and sp.barcode = gdd.barcode\n" +
  4321. " AND sp.valueflag = '1'\n" +
  4322. " AND sp.auditstatus = 1\n" +
  4323. " AND sp.goodsleveltypeid <> 9\n" +
  4324. " AND sp.RECYCLINGFLAG = '0'\n" +
  4325. " LEFT JOIN tp_sys_goodsleveltype glt \n" +
  4326. " ON glt.goodsleveltypeid = sp.goodsleveltypeid\n" +
  4327. " LEFT JOIN tp_pc_procedure p \n" +
  4328. " ON p.procedureid = inp.procedureid\n" +
  4329. " WHERE gbcd.gbcheckedid = :gbcheckedid\n" +
  4330. " AND gbcd.gbcheckedflag = :gbcheckedflag";
  4331. OracleParameter[] paras = new OracleParameter[]{
  4332. new OracleParameter(":gbcheckedflag",OracleDbType.Int32,(int)Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  4333. new OracleParameter(":gbcheckedid",OracleDbType.Int32,checkedID,ParameterDirection.Input),
  4334. };
  4335. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
  4336. paras[0].Value = (int)Constant.InCheckedFlag.InCheckeded;
  4337. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
  4338. paras[0].Value = (int)Constant.InCheckedFlag.InCheckedWin;
  4339. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
  4340. paras[0].Value = (int)Constant.InCheckedFlag.Loss;
  4341. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
  4342. return sre;
  4343. }
  4344. catch (Exception ex)
  4345. {
  4346. throw ex;
  4347. }
  4348. finally
  4349. {
  4350. if (con.ConnState == ConnectionState.Open)
  4351. {
  4352. con.Close();
  4353. }
  4354. }
  4355. }
  4356. /// <summary>
  4357. /// 获取盘点单信息(编辑用)
  4358. /// </summary>
  4359. /// <param name="sUserInfo"></param>
  4360. /// <returns></returns>
  4361. public static ServiceResultEntity GetGBCheckedInfoForUpdate(SUserInfo sUserInfo, ClientRequestEntity cre)
  4362. {
  4363. ServiceResultEntity sre = new ServiceResultEntity();
  4364. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4365. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4366. try
  4367. {
  4368. con.Open();
  4369. string sqlString =
  4370. "SELECT gbc.gbcheckedid, gbc.gbcheckedno, gbc.gbcheckname, gbc.remarks\n" +
  4371. " FROM TP_PM_GroutingChecked gbc\n" +
  4372. " WHERE gbc.gbcheckedid = :gbcheckedid";
  4373. OracleParameter[] parameters = new OracleParameter[] {
  4374. new OracleParameter(":gbcheckedid", OracleDbType.Int32, checkedID, ParameterDirection.Input)
  4375. };
  4376. sre.Data = con.GetSqlResultToDs(sqlString, parameters);
  4377. sqlString =
  4378. "SELECT u.userid, u.usercode, u.username\n" +
  4379. " FROM Tp_Pm_Gbcheckeduser gbu\n" +
  4380. " INNER JOIN tp_mst_user u\n" +
  4381. " ON u.userid = gbu.userid\n" +
  4382. " WHERE gbu.gbcheckedid = :gbcheckedid" +
  4383. " ORDER BY u.usercode";
  4384. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, parameters));
  4385. return sre;
  4386. }
  4387. catch (Exception ex)
  4388. {
  4389. throw ex;
  4390. }
  4391. finally
  4392. {
  4393. if (con.ConnState == ConnectionState.Open)
  4394. {
  4395. con.Close();
  4396. }
  4397. }
  4398. }
  4399. /// <summary>
  4400. /// 保存盘点单
  4401. /// </summary>
  4402. /// <param name="sUserInfo">用户基本信息</param>
  4403. /// <returns></returns>
  4404. public static ServiceResultEntity SaveGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
  4405. {
  4406. ServiceResultEntity sre = new ServiceResultEntity();
  4407. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4408. string checkedName = cre.Properties["CheckedName"].ToString();
  4409. string remarks = cre.Properties["Remarks"].ToString();
  4410. int returnRows = 0;
  4411. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4412. try
  4413. {
  4414. string sql = null;
  4415. OracleParameter[] paras = null;
  4416. if (checkedID > 0)
  4417. {
  4418. // 编辑
  4419. sql = "UPDATE TP_PM_GroutingChecked gbc\n" +
  4420. " SET gbc.gbcheckname = :gbcheckname\n" +
  4421. " ,gbc.remarks = :remarks\n" +
  4422. " ,gbc.updateuserid = :updateuserid\n" +
  4423. " WHERE gbc.gbcheckedid = :gbcheckedid";
  4424. paras = new OracleParameter[] {
  4425. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4426. checkedID,ParameterDirection.Input),
  4427. new OracleParameter(":gbcheckname",OracleDbType.NVarchar2,
  4428. checkedName,ParameterDirection.Input),
  4429. new OracleParameter(":remarks",OracleDbType.NVarchar2,
  4430. remarks,ParameterDirection.Input),
  4431. new OracleParameter(":updateuserid",OracleDbType.Int32,
  4432. sUserInfo.UserID,ParameterDirection.Input)
  4433. };
  4434. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4435. sql = "DELETE FROM Tp_Pm_Gbcheckeduser gbu\n" +
  4436. " WHERE gbu.gbcheckedid = :gbcheckedid";
  4437. paras = new OracleParameter[] {
  4438. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4439. checkedID,ParameterDirection.Input),
  4440. };
  4441. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4442. if (cre.Data != null && cre.Data.Tables.Count > 0)
  4443. {
  4444. sql = "INSERT INTO Tp_Pm_Gbcheckeduser gbu\n" +
  4445. " (gbcheckedid, userid, usercode)\n" +
  4446. "VALUES\n" +
  4447. " (:gbcheckedid, :userid, :usercode)";
  4448. foreach (DataRow item in cre.Data.Tables[0].Rows)
  4449. {
  4450. if (item["UserID"] == DBNull.Value)
  4451. {
  4452. continue;
  4453. }
  4454. paras = new OracleParameter[] {
  4455. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4456. checkedID,ParameterDirection.Input),
  4457. new OracleParameter(":userid",OracleDbType.Int32,
  4458. item["UserID"],ParameterDirection.Input),
  4459. new OracleParameter(":usercode",OracleDbType.NVarchar2,
  4460. item["UserCode"],ParameterDirection.Input),
  4461. };
  4462. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4463. }
  4464. }
  4465. }
  4466. else
  4467. {
  4468. // 新建
  4469. //盘点单号
  4470. string checkedNo = string.Format("GBC{0}", DateTime.Now.ToString("yyyyMMddHHmmss"));
  4471. //获得账务日期
  4472. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  4473. //盘点单ID
  4474. sql = "select SEQ_PM_GBChecked_ID.nextval from dual";
  4475. checkedID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  4476. //2022年2月18日10:32:49 add by feiy
  4477. //因为新建成型盘点单缓慢,设置断点后快,所以暂时在此处停顿1秒
  4478. Thread.Sleep(1000);
  4479. #region 插入盘点单主表信息
  4480. sql = @"insert into TP_PM_GroutingChecked
  4481. (
  4482. GBCheckedID,
  4483. GBCheckedNo,
  4484. AccountDate,
  4485. Remarks,
  4486. AccountID,
  4487. CreateUserID,
  4488. UpdateUserID,
  4489. GBCHECKNAME
  4490. ) values
  4491. ( :GBCheckedID,
  4492. :GBCheckedNo,
  4493. :AccountDate,
  4494. :Remarks,
  4495. :AccountID,
  4496. :CreateUserID,
  4497. :CreateUserID,
  4498. :GBCHECKNAME
  4499. )";
  4500. OracleParameter[] Paras = new OracleParameter[] {
  4501. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4502. checkedID,ParameterDirection.Input),
  4503. new OracleParameter(":GBCheckedNo",OracleDbType.NVarchar2,
  4504. checkedNo,ParameterDirection.Input),
  4505. new OracleParameter(":AccountDate",OracleDbType.Date,
  4506. accountDate,ParameterDirection.Input),
  4507. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  4508. remarks,ParameterDirection.Input),
  4509. new OracleParameter(":AccountID",OracleDbType.Int32,
  4510. sUserInfo.AccountID,ParameterDirection.Input),
  4511. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4512. sUserInfo.UserID,ParameterDirection.Input),
  4513. new OracleParameter(":GBCHECKNAME",OracleDbType.NVarchar2,
  4514. checkedName,ParameterDirection.Input),
  4515. };
  4516. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  4517. #endregion
  4518. #region 盘点工号
  4519. if (cre.Data != null && cre.Data.Tables.Count > 0)
  4520. {
  4521. sql = "INSERT INTO Tp_Pm_Gbcheckeduser gbu\n" +
  4522. " (gbcheckedid, userid, usercode)\n" +
  4523. "VALUES\n" +
  4524. " (:gbcheckedid, :userid, :usercode)";
  4525. foreach (DataRow item in cre.Data.Tables[0].Rows)
  4526. {
  4527. if (item["UserID"] == DBNull.Value)
  4528. {
  4529. continue;
  4530. }
  4531. paras = new OracleParameter[] {
  4532. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4533. checkedID,ParameterDirection.Input),
  4534. new OracleParameter(":userid",OracleDbType.Int32,
  4535. item["UserID"],ParameterDirection.Input),
  4536. new OracleParameter(":usercode",OracleDbType.NVarchar2,
  4537. item["UserCode"],ParameterDirection.Input),
  4538. };
  4539. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4540. }
  4541. }
  4542. #endregion
  4543. #region 盘点信息
  4544. string lineWhere = null;
  4545. if (cre.Properties["BUILDINGNO"] + "" != "")
  4546. {
  4547. lineWhere = " instr('," + cre.Properties["BUILDINGNO"] + ",', ',' || gl.buildingno || ',') > 0\n";
  4548. }
  4549. if (cre.Properties["FLOORNO"] + "" != "")
  4550. {
  4551. if (lineWhere != null)
  4552. {
  4553. lineWhere += " AND";
  4554. }
  4555. lineWhere += " to_number(gl.floorno) IN (" + cre.Properties["FLOORNO"] + ")\n";
  4556. }
  4557. if (lineWhere != null)
  4558. {
  4559. lineWhere = "INNER JOIN (SELECT gl.groutinglineid\n" +
  4560. " FROM tp_pc_groutingline gl\n" +
  4561. " WHERE " + lineWhere + ") gll\n" +
  4562. " ON gll.groutinglineid = gdd.groutinglineid\n";
  4563. }
  4564. sql =
  4565. "INSERT INTO TP_PM_GBCHECKEDDETAIL\n" +
  4566. " (GBCHECKEDID\n" +
  4567. " ,BARCODE\n" +
  4568. " ,GBCHECKEDNO\n" +
  4569. " ,GROUTINGDAILYDETAILID\n" +
  4570. " ,GROUTINGDAILYID\n" +
  4571. " ,GROUTINGLINEID\n" +
  4572. " ,GROUTINGLINECODE\n" +
  4573. " ,GROUTINGLINENAME\n" +
  4574. " ,GROUTINGLINEDETAILID\n" +
  4575. " ,GROUTINGDATE\n" +
  4576. " ,GROUTINGMOULDCODE\n" +
  4577. " ,MOULDCODE\n" +
  4578. " ,GMOULDTYPEID\n" +
  4579. " ,CANMANYTIMES\n" +
  4580. " ,GROUTINGBATCHNO\n" +
  4581. " ,USERID\n" +
  4582. " ,USERCODE\n" +
  4583. " ,CLASSESSETTINGID\n" +
  4584. " ,GOODSID\n" +
  4585. " ,GOODSCODE\n" +
  4586. " ,GOODSNAME\n" +
  4587. " ,GMOULDSTATUS\n" +
  4588. " ,GROUTINGCOUNT\n" +
  4589. " ,GROUTINGFLAG\n" +
  4590. " ,ONLYCODE\n" +
  4591. " ,NOGROUTINGRREASON\n" +
  4592. " ,SPECIALREPAIRFLAG\n" +
  4593. " ,SCRAPFLAG\n" +
  4594. " ,SCRAPTIME\n" +
  4595. " ,SCRAPUSER\n" +
  4596. " ,ISPUBLICBODY\n" +
  4597. " ,DELIVERFLAG\n" +
  4598. " ,DELIVERTIME\n" +
  4599. " ,DELIVERUSERID\n" +
  4600. " ,DELIVERUSERCODE\n" +
  4601. " ,LOGOID\n" +
  4602. " ,REMARKS\n" +
  4603. " ,ACCOUNTID\n" +
  4604. " ,VALUEFLAG\n" +
  4605. " ,CREATEUSERID\n" +
  4606. " ,UPDATEUSERID)\n" +
  4607. " SELECT :GBCHECKEDID\n" +
  4608. " ,gdd.BARCODE\n" +
  4609. " ,:GBCHECKEDNO\n" +
  4610. " ,gdd.GROUTINGDAILYDETAILID\n" +
  4611. " ,gdd.GROUTINGDAILYID\n" +
  4612. " ,gdd.GROUTINGLINEID\n" +
  4613. " ,gdd.GROUTINGLINECODE\n" +
  4614. " ,gdd.GROUTINGLINENAME\n" +
  4615. " ,gdd.GROUTINGLINEDETAILID\n" +
  4616. " ,gdd.GROUTINGDATE\n" +
  4617. " ,gdd.GROUTINGMOULDCODE\n" +
  4618. " ,gdd.MOULDCODE\n" +
  4619. " ,gdd.GMOULDTYPEID\n" +
  4620. " ,gdd.CANMANYTIMES\n" +
  4621. " ,gdd.GROUTINGBATCHNO\n" +
  4622. " ,gdd.USERID\n" +
  4623. " ,gdd.USERCODE\n" +
  4624. " ,gdd.CLASSESSETTINGID\n" +
  4625. " ,gdd.GOODSID\n" +
  4626. " ,gdd.GOODSCODE\n" +
  4627. " ,gdd.GOODSNAME\n" +
  4628. " ,gdd.GMOULDSTATUS\n" +
  4629. " ,gdd.GROUTINGCOUNT\n" +
  4630. " ,gdd.GROUTINGFLAG\n" +
  4631. " ,gdd.ONLYCODE\n" +
  4632. " ,gdd.NOGROUTINGRREASON\n" +
  4633. " ,gdd.SPECIALREPAIRFLAG\n" +
  4634. " ,gdd.SCRAPFLAG\n" +
  4635. " ,gdd.SCRAPTIME\n" +
  4636. " ,gdd.SCRAPUSER\n" +
  4637. " ,gdd.ISPUBLICBODY\n" +
  4638. " ,gdd.DELIVERFLAG\n" +
  4639. " ,gdd.DELIVERTIME\n" +
  4640. " ,gdd.DELIVERUSERID\n" +
  4641. " ,gdd.DELIVERUSERCODE\n" +
  4642. " ,gdd.LOGOID\n" +
  4643. " ,gdd.REMARKS\n" +
  4644. " ,gdd.ACCOUNTID\n" +
  4645. " ,'1'\n" +
  4646. " ,:CHECKEDUSERID\n" +
  4647. " ,:CHECKEDUSERID\n" +
  4648. " FROM tp_pm_groutingdailydetail gdd\n" +
  4649. " LEFT JOIN tp_mst_goods g\n" +
  4650. " ON g.goodsid = gdd.goodsid\n" +
  4651. " LEFT JOIN tp_mst_goodsType gt\n" +
  4652. " ON gt.goodstypeid = g.goodstypeid\n" + lineWhere +
  4653. "WHERE gdd.valueflag = '1'\n" +
  4654. " AND gdd.accountid = :accountid\n" +
  4655. " AND gdd.barcode IS NOT NULL\n" +
  4656. //2021-05-15 xuwei add
  4657. " AND gdd.BEGINNINGFLAG = '0' \n" +
  4658. " AND gdd.deliverflag = '0'\n" +
  4659. " AND gdd.scrapflag = '0'\n" +
  4660. " AND (:DateBegin IS NULL OR gdd.groutingdate >= :DateBegin)\n" +
  4661. " AND (:DateEnd IS NULL OR gdd.groutingdate <= :DateEnd)\n" +
  4662. " AND (:GoodsIDS IS NULL OR\n" +
  4663. " instr(',' || :GoodsIDS || ',', ',' || gdd.GoodsID || ',') > 0)\n" +
  4664. " AND (:GoodsTypeCode IS NULL OR\n" +
  4665. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)";
  4666. paras = new OracleParameter[] {
  4667. new OracleParameter(":accountid",OracleDbType.Int32,
  4668. sUserInfo.AccountID,ParameterDirection.Input),
  4669. new OracleParameter(":GBCHECKEDID",OracleDbType.Int32,
  4670. checkedID,ParameterDirection.Input),
  4671. new OracleParameter(":GBCHECKEDNO",OracleDbType.NVarchar2,
  4672. checkedNo,ParameterDirection.Input),
  4673. new OracleParameter(":CHECKEDUSERID",OracleDbType.Int32,
  4674. sUserInfo.UserID,ParameterDirection.Input),
  4675. new OracleParameter(":DateBegin",OracleDbType.Date,
  4676. cre.Properties["DateBegin"],ParameterDirection.Input),
  4677. new OracleParameter(":DateEnd",OracleDbType.Date,
  4678. cre.Properties["DateEnd"],ParameterDirection.Input),
  4679. new OracleParameter(":GoodsIDS",OracleDbType.NVarchar2,
  4680. cre.Properties["GoodsCodeList"],ParameterDirection.Input),
  4681. new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2,
  4682. cre.Properties["GoodsTypeCode"],ParameterDirection.Input),
  4683. };
  4684. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4685. #endregion
  4686. }
  4687. oracleTrConn.Commit();
  4688. }
  4689. catch (Exception ex)
  4690. {
  4691. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4692. {
  4693. oracleTrConn.Rollback();
  4694. oracleTrConn.Disconnect();
  4695. }
  4696. throw ex;
  4697. }
  4698. finally
  4699. {
  4700. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4701. {
  4702. oracleTrConn.Disconnect();
  4703. }
  4704. }
  4705. return sre;
  4706. }
  4707. /// <summary>
  4708. /// 停用盘点单
  4709. /// </summary>
  4710. /// <param name="sUserInfo">用户基本信息</param>
  4711. /// <returns></returns>
  4712. public static ServiceResultEntity DisableGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
  4713. {
  4714. ServiceResultEntity sre = new ServiceResultEntity();
  4715. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4716. int returnRows = 0;
  4717. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4718. try
  4719. {
  4720. string sql = "update TP_PM_GroutingChecked set valueflag='0', updateuserid=:updateuserid where GBCheckedID=:GBCheckedID and valueflag='1'";
  4721. OracleParameter[] Paras = new OracleParameter[] {
  4722. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4723. checkedID,ParameterDirection.Input),
  4724. new OracleParameter(":updateuserid",OracleDbType.Int32,
  4725. sUserInfo.UserID,ParameterDirection.Input)
  4726. };
  4727. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  4728. if (returnRows > 0)
  4729. {
  4730. sre.Status = Constant.ServiceResultStatus.Success;
  4731. }
  4732. else
  4733. {
  4734. sre.Status = Constant.ServiceResultStatus.Other;
  4735. }
  4736. oracleTrConn.Commit();
  4737. oracleTrConn.Disconnect();
  4738. }
  4739. catch (Exception ex)
  4740. {
  4741. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4742. {
  4743. oracleTrConn.Rollback();
  4744. oracleTrConn.Disconnect();
  4745. }
  4746. throw ex;
  4747. }
  4748. finally
  4749. {
  4750. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4751. {
  4752. oracleTrConn.Disconnect();
  4753. }
  4754. }
  4755. return sre;
  4756. }
  4757. /// <summary>
  4758. /// 更新盘点单(条码盘点)
  4759. /// </summary>
  4760. /// <param name="InCheckedID">盘点单号</param>
  4761. /// <param name="BarCode">产品条码</param>
  4762. /// <param name="sUserInfo">用户基本信息</param>
  4763. /// <returns></returns>
  4764. public static ServiceResultEntity UpdateGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
  4765. {
  4766. ServiceResultEntity sre = new ServiceResultEntity();
  4767. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4768. string barcode = cre.Properties["Barcode"].ToString();
  4769. int returnRows = 0;
  4770. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4771. try
  4772. {
  4773. string sql = null;
  4774. OracleParameter[] paras = null;
  4775. DataSet ds = null;
  4776. sql = @"select GBCheckedFlag,CHECKEDUSERID from TP_PM_GBCheckedDetail where GBCheckedID=:GBCheckedID and BarCode=:BarCode and Valueflag=1";
  4777. paras = new OracleParameter[] {
  4778. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4779. checkedID,ParameterDirection.Input),
  4780. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  4781. barcode,ParameterDirection.Input)
  4782. };
  4783. ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  4784. // 不在盘点单中
  4785. if (ds != null && ds.Tables[0].Rows.Count == 0)
  4786. {
  4787. sql = @"select GBCheckedNo from tp_pm_groutingchecked where GBCheckedID=:GBCheckedID";
  4788. paras = new OracleParameter[] {
  4789. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4790. checkedID,ParameterDirection.Input),
  4791. };
  4792. ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  4793. if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  4794. {
  4795. sre.Status = Constant.ServiceResultStatus.Other;
  4796. sre.OtherStatus = -1;
  4797. sre.Message = "盘点单不存在";
  4798. return sre;
  4799. }
  4800. string checkedNo = ds.Tables[0].Rows[0]["GBCheckedNo"].ToString();
  4801. // 条码是否在注浆日报中
  4802. sql = "SELECT gdd.groutingdailydetailid\n" +
  4803. " FROM tp_pm_groutingdailydetail gdd\n" +
  4804. " WHERE gdd.barcode = :BarCode";
  4805. paras = new OracleParameter[] {
  4806. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  4807. barcode,ParameterDirection.Input)
  4808. };
  4809. DataTable dt = oracleTrConn.GetSqlResultToDt(sql, paras);
  4810. if (dt == null || dt.Rows.Count == 0)
  4811. {
  4812. // 无效条码
  4813. sre.Status = Constant.ServiceResultStatus.Other;
  4814. sre.OtherStatus = -1;
  4815. sre.Message = "条码【" + barcode + "】为无效条码";
  4816. return sre;
  4817. }
  4818. sql =
  4819. "INSERT INTO TP_PM_GBCHECKEDDETAIL\n" +
  4820. " (GBCHECKEDID\n" +
  4821. " ,BARCODE\n" +
  4822. " ,GBCHECKEDNO\n" +
  4823. " ,GROUTINGDAILYDETAILID\n" +
  4824. " ,GROUTINGDAILYID\n" +
  4825. " ,GROUTINGLINEID\n" +
  4826. " ,GROUTINGLINECODE\n" +
  4827. " ,GROUTINGLINENAME\n" +
  4828. " ,GROUTINGLINEDETAILID\n" +
  4829. " ,GROUTINGDATE\n" +
  4830. " ,GROUTINGMOULDCODE\n" +
  4831. " ,MOULDCODE\n" +
  4832. " ,GMOULDTYPEID\n" +
  4833. " ,CANMANYTIMES\n" +
  4834. " ,GROUTINGBATCHNO\n" +
  4835. " ,USERID\n" +
  4836. " ,USERCODE\n" +
  4837. " ,CLASSESSETTINGID\n" +
  4838. " ,GOODSID\n" +
  4839. " ,GOODSCODE\n" +
  4840. " ,GOODSNAME\n" +
  4841. " ,GMOULDSTATUS\n" +
  4842. " ,GROUTINGCOUNT\n" +
  4843. " ,GROUTINGFLAG\n" +
  4844. " ,ONLYCODE\n" +
  4845. " ,NOGROUTINGRREASON\n" +
  4846. " ,SPECIALREPAIRFLAG\n" +
  4847. " ,SCRAPFLAG\n" +
  4848. " ,SCRAPTIME\n" +
  4849. " ,SCRAPUSER\n" +
  4850. " ,ISPUBLICBODY\n" +
  4851. " ,DELIVERFLAG\n" +
  4852. " ,DELIVERTIME\n" +
  4853. " ,DELIVERUSERID\n" +
  4854. " ,DELIVERUSERCODE\n" +
  4855. " ,LOGOID\n" +
  4856. " ,REMARKS\n" +
  4857. " ,GBCHECKEDFLAG\n" +
  4858. " ,CHECKEDDATE\n" +
  4859. " ,CHECKEDUSERID\n" +
  4860. " ,ACCOUNTID\n" +
  4861. " ,VALUEFLAG\n" +
  4862. " ,CREATEUSERID\n" +
  4863. " ,UPDATEUSERID)\n" +
  4864. " SELECT :GBCHECKEDID\n" +
  4865. " ,BARCODE\n" +
  4866. " ,:GBCHECKEDNO\n" +
  4867. " ,GROUTINGDAILYDETAILID\n" +
  4868. " ,GROUTINGDAILYID\n" +
  4869. " ,GROUTINGLINEID\n" +
  4870. " ,GROUTINGLINECODE\n" +
  4871. " ,GROUTINGLINENAME\n" +
  4872. " ,GROUTINGLINEDETAILID\n" +
  4873. " ,GROUTINGDATE\n" +
  4874. " ,GROUTINGMOULDCODE\n" +
  4875. " ,MOULDCODE\n" +
  4876. " ,GMOULDTYPEID\n" +
  4877. " ,CANMANYTIMES\n" +
  4878. " ,GROUTINGBATCHNO\n" +
  4879. " ,USERID\n" +
  4880. " ,USERCODE\n" +
  4881. " ,CLASSESSETTINGID\n" +
  4882. " ,GOODSID\n" +
  4883. " ,GOODSCODE\n" +
  4884. " ,GOODSNAME\n" +
  4885. " ,GMOULDSTATUS\n" +
  4886. " ,GROUTINGCOUNT\n" +
  4887. " ,GROUTINGFLAG\n" +
  4888. " ,ONLYCODE\n" +
  4889. " ,NOGROUTINGRREASON\n" +
  4890. " ,SPECIALREPAIRFLAG\n" +
  4891. " ,SCRAPFLAG\n" +
  4892. " ,SCRAPTIME\n" +
  4893. " ,SCRAPUSER\n" +
  4894. " ,ISPUBLICBODY\n" +
  4895. " ,DELIVERFLAG\n" +
  4896. " ,DELIVERTIME\n" +
  4897. " ,DELIVERUSERID\n" +
  4898. " ,DELIVERUSERCODE\n" +
  4899. " ,LOGOID\n" +
  4900. " ,REMARKS\n" +
  4901. " ,'2'\n" +
  4902. " ,SYSDATE\n" +
  4903. " ,:CHECKEDUSERID\n" +
  4904. " ,ACCOUNTID\n" +
  4905. " ,'1'\n" +
  4906. " ,:CHECKEDUSERID\n" +
  4907. " ,:CHECKEDUSERID\n" +
  4908. " FROM tp_pm_groutingdailydetail\n" +
  4909. " WHERE GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID";
  4910. paras = new OracleParameter[] {
  4911. new OracleParameter(":GBCHECKEDID",OracleDbType.Int32,
  4912. checkedID,ParameterDirection.Input),
  4913. new OracleParameter(":GBCHECKEDNO",OracleDbType.NVarchar2,
  4914. checkedNo,ParameterDirection.Input),
  4915. new OracleParameter(":CHECKEDUSERID",OracleDbType.Int32,
  4916. sUserInfo.UserID,ParameterDirection.Input),
  4917. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
  4918. dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  4919. };
  4920. returnRows = oracleTrConn.ExecuteNonQuery(sql, paras);
  4921. //returnRows = 10;
  4922. }
  4923. else
  4924. {
  4925. string checkedFlag = ds.Tables[0].Rows[0]["GBCheckedFlag"].ToString();
  4926. if (checkedFlag == "1")
  4927. {
  4928. //if (Convert.ToInt32(ds.Tables[0].Rows[0]["CHECKEDUSERID"]) != sUserInfo.UserID)
  4929. //{
  4930. // returnRows = -22;//己被其他工号盘点
  4931. //}
  4932. //else
  4933. //{
  4934. // returnRows = -24;//己被自己工号盘点
  4935. //}
  4936. //return returnRows;
  4937. sre.Status = Constant.ServiceResultStatus.Other;
  4938. sre.OtherStatus = -1;
  4939. sre.Message = "条码【" + barcode + "】已被盘点";
  4940. return sre;
  4941. }
  4942. else if (checkedFlag == "2")
  4943. {
  4944. //if (Convert.ToInt32(ds.Tables[0].Rows[0]["CHECKEDUSERID"]) != sUserInfo.UserID)
  4945. //{
  4946. // returnRows = -23;//己被其他工号盘盈
  4947. //}
  4948. //else
  4949. //{
  4950. // returnRows = -25;//己被自己工号盘盈
  4951. //}
  4952. //return returnRows;
  4953. sre.Status = Constant.ServiceResultStatus.Other;
  4954. sre.OtherStatus = -1;
  4955. sre.Message = "条码【" + barcode + "】已被盘盈";
  4956. return sre;
  4957. }
  4958. sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:CheckedID and BarCode=:BarCode and GBCheckedFlag=:whereGBCheckedFlag";
  4959. paras = new OracleParameter[] {
  4960. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  4961. sUserInfo.UserID,ParameterDirection.Input),
  4962. new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
  4963. (int)Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  4964. new OracleParameter(":CheckedID",OracleDbType.Int32,
  4965. checkedID,ParameterDirection.Input),
  4966. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  4967. barcode,ParameterDirection.Input),
  4968. new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
  4969. (int)Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  4970. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4971. sUserInfo.UserID,ParameterDirection.Input),
  4972. };
  4973. returnRows = oracleTrConn.ExecuteNonQuery(sql, paras);
  4974. //returnRows = 1;
  4975. }
  4976. if (returnRows == 0)
  4977. {
  4978. oracleTrConn.Rollback();
  4979. oracleTrConn.Disconnect();
  4980. }
  4981. else
  4982. {
  4983. oracleTrConn.Commit();
  4984. oracleTrConn.Disconnect();
  4985. }
  4986. }
  4987. catch (Exception ex)
  4988. {
  4989. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4990. {
  4991. oracleTrConn.Rollback();
  4992. oracleTrConn.Disconnect();
  4993. }
  4994. throw ex;
  4995. }
  4996. finally
  4997. {
  4998. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4999. {
  5000. oracleTrConn.Disconnect();
  5001. }
  5002. }
  5003. return sre;
  5004. }
  5005. /// <summary>
  5006. /// 报损未盘点
  5007. /// </summary>
  5008. /// <param name="sUserInfo">用户基本信息</param>
  5009. /// <returns></returns>
  5010. public static ServiceResultEntity SaveClearGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
  5011. {
  5012. ServiceResultEntity sre = new ServiceResultEntity();
  5013. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  5014. string barcodes = null;
  5015. if (cre.Properties["Barcodes"] != null)
  5016. {
  5017. barcodes = cre.Properties["Barcodes"].ToString();
  5018. }
  5019. int returnRows = 0;
  5020. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5021. string sql = null;
  5022. OracleParameter[] paras = null;
  5023. try
  5024. {
  5025. if (barcodes == null)
  5026. {
  5027. sql =
  5028. "UPDATE tp_pm_groutingdailydetail gdd\n" +
  5029. " SET gdd.scrapflag = '1'\n" +
  5030. " ,gdd.scraptime = SYSDATE\n" +
  5031. " ,gdd.scrapuser = :UserID\n" +
  5032. " ,gdd.scrapreasonid = -2\n" +
  5033. " ,gdd.scrapreason = '盘亏报损'\n" +
  5034. " ,gdd.ScrapType = 2\n" +
  5035. " WHERE gdd.scrapflag = '0'\n" +
  5036. " AND gdd.deliverflag = '0'\n" +
  5037. //" AND instr(:barcodes, gdd.barcode) > 0";
  5038. " AND exists (select 1 from tp_pm_gbcheckeddetail gbcd where gbcd.GBCheckedID = :CheckedID and gbcd.gbcheckedflag = '0' and gbcd.barcode = gdd.barcode)";
  5039. paras = new OracleParameter[] {
  5040. new OracleParameter(":CheckedID",OracleDbType.Int32,
  5041. checkedID,ParameterDirection.Input),
  5042. new OracleParameter(":UserID",OracleDbType.Int32,
  5043. sUserInfo.UserID,ParameterDirection.Input),
  5044. };
  5045. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5046. sql = "UPDATE tp_pm_gbcheckeddetail gdd\n" +
  5047. " SET gdd.gbcheckedflag = '3'\n" +
  5048. " ,gdd.CheckedDate = SYSDATE\n" +
  5049. " ,gdd.CheckedUserID = :UserID\n" +
  5050. " ,gdd.UpdateUserID = :UserID\n" +
  5051. " WHERE gdd.gbcheckedflag = '0'\n" +
  5052. " AND gdd.GBCheckedID = :CheckedID";
  5053. paras = new OracleParameter[] {
  5054. new OracleParameter(":UserID",OracleDbType.Int32,
  5055. sUserInfo.UserID,ParameterDirection.Input),
  5056. new OracleParameter(":CheckedID",OracleDbType.Int32,
  5057. checkedID,ParameterDirection.Input),
  5058. };
  5059. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5060. }
  5061. else
  5062. {
  5063. string[] barcodelist = barcodes.Split(',');
  5064. foreach (string barcode in barcodelist)
  5065. {
  5066. sql =
  5067. "UPDATE tp_pm_groutingdailydetail gdd\n" +
  5068. " SET gdd.scrapflag = '1'\n" +
  5069. " ,gdd.scraptime = SYSDATE\n" +
  5070. " ,gdd.scrapuser = :UserID\n" +
  5071. " ,gdd.scrapreasonid = -2\n" +
  5072. " ,gdd.scrapreason = '盘亏报损'\n" +
  5073. " ,gdd.ScrapType = 2\n" +
  5074. " WHERE gdd.scrapflag = '0'\n" +
  5075. " AND gdd.deliverflag = '0'\n" +
  5076. //" AND instr(:barcodes, gdd.barcode) > 0";
  5077. " AND gdd.barcode = :barcode";
  5078. paras = new OracleParameter[] {
  5079. //new OracleParameter(":barcodes",OracleDbType.NVarchar2,
  5080. // barcodes,ParameterDirection.Input),
  5081. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  5082. barcode,ParameterDirection.Input),
  5083. new OracleParameter(":UserID",OracleDbType.Int32,
  5084. sUserInfo.UserID,ParameterDirection.Input),
  5085. };
  5086. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5087. sql = "UPDATE tp_pm_gbcheckeddetail gdd\n" +
  5088. " SET gdd.gbcheckedflag = '3'\n" +
  5089. " ,gdd.CheckedDate = SYSDATE\n" +
  5090. " ,gdd.CheckedUserID = :UserID\n" +
  5091. " ,gdd.UpdateUserID = :UserID\n" +
  5092. " WHERE gdd.gbcheckedflag = '0'\n" +
  5093. " AND gdd.GBCheckedID = :CheckedID" +
  5094. //" AND instr(:barcodes, gdd.barcode) > 0";
  5095. " AND gdd.barcode = :barcode";
  5096. paras = new OracleParameter[] {
  5097. //new OracleParameter(":barcodes",OracleDbType.NVarchar2,
  5098. // barcodes,ParameterDirection.Input),
  5099. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  5100. barcode,ParameterDirection.Input),
  5101. new OracleParameter(":UserID",OracleDbType.Int32,
  5102. sUserInfo.UserID,ParameterDirection.Input),
  5103. new OracleParameter(":CheckedID",OracleDbType.Int32,
  5104. checkedID,ParameterDirection.Input),
  5105. };
  5106. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5107. }
  5108. }
  5109. oracleTrConn.Commit();
  5110. }
  5111. catch (Exception ex)
  5112. {
  5113. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5114. {
  5115. oracleTrConn.Rollback();
  5116. oracleTrConn.Disconnect();
  5117. }
  5118. throw ex;
  5119. }
  5120. finally
  5121. {
  5122. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5123. {
  5124. oracleTrConn.Disconnect();
  5125. }
  5126. }
  5127. return sre;
  5128. }
  5129. /// <summary>
  5130. /// 获取盘点单明细
  5131. /// </summary>
  5132. /// <param name="procedureID">工序ID</param>
  5133. /// <returns>DataSet</returns>
  5134. public static DataSet GetUpdateGBCheckedInfo(int checkedID, SUserInfo sUserInfo)
  5135. {
  5136. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5137. try
  5138. {
  5139. con.Open();
  5140. string sqlString = @"SELECT to_char(checked.UserCheckedCount) || '/' ||
  5141. to_char(checked.CheckedCount) CheckedCount
  5142. ,to_char(checked.UserOverageCount) || '/' ||
  5143. to_char(checked.OverageCount) OverageCount
  5144. ,to_char(checked.UserCheckedCount + checked.UserOverageCount) || '/' ||
  5145. to_char(checked.CheckedCount + checked.OverageCount) || '/' ||
  5146. to_char(TCount) TCount
  5147. FROM (SELECT icd.GBcheckedid
  5148. , SUM(CASE
  5149. WHEN icd.checkeduserid = :userid AND icd.GBCheckedFlag = '1' THEN
  5150. 1
  5151. ELSE
  5152. 0
  5153. END) UserCheckedCount
  5154. , SUM(CASE
  5155. WHEN icd.checkeduserid = :userid AND icd.GBCheckedFlag = '2' THEN
  5156. 1
  5157. ELSE
  5158. 0
  5159. END) UserOverageCount
  5160. , SUM(CASE
  5161. WHEN icd.GBCheckedFlag = '1' THEN
  5162. 1
  5163. ELSE
  5164. 0
  5165. END) CheckedCount
  5166. , SUM(CASE
  5167. WHEN icd.GBCheckedFlag = '2' THEN
  5168. 1
  5169. ELSE
  5170. 0
  5171. END) OverageCount
  5172. ,COUNT(icd.GBcheckedid) TCount
  5173. FROM tp_pm_GBcheckeddetail icd
  5174. WHERE icd.GBcheckedid = :GBcheckedid
  5175. AND icd.valueflag = '1' group by icd.GBcheckedid) checked";
  5176. OracleParameter[] paras = new OracleParameter[]{
  5177. new OracleParameter(":GBcheckedid",OracleDbType.Int32, checkedID, ParameterDirection.Input),
  5178. new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  5179. };
  5180. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  5181. ds.Tables[0].TableName = "Table1";
  5182. sqlString = @"SELECT icd.goodscode, COUNT(icd.goodscode) goodscount
  5183. FROM tp_pm_GBcheckeddetail icd
  5184. WHERE icd.GBcheckedid = :GBcheckedid
  5185. AND icd.checkeduserid = :userid
  5186. AND icd.GBCheckedFlag = '1'
  5187. AND icd.valueflag = '1'
  5188. GROUP BY icd.goodscode";
  5189. DataTable dt = con.GetSqlResultToDt(sqlString, paras);
  5190. dt.TableName = "Table2";
  5191. ds.Tables.Add(dt);
  5192. return ds;
  5193. }
  5194. catch (Exception ex)
  5195. {
  5196. throw ex;
  5197. }
  5198. finally
  5199. {
  5200. if (con.ConnState == ConnectionState.Open)
  5201. {
  5202. con.Close();
  5203. }
  5204. }
  5205. }
  5206. /// <summary>
  5207. /// 成型盘点-盘点选择条码
  5208. /// </summary>
  5209. /// <param name="sUserInfo">用户基本信息</param>
  5210. /// <returns></returns>
  5211. public static ServiceResultEntity GBCheckBarcodes(SUserInfo sUserInfo, ClientRequestEntity cre)
  5212. {
  5213. ServiceResultEntity sre = new ServiceResultEntity();
  5214. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  5215. string barcodes = null;
  5216. if (cre.Properties["Barcodes"] != null)
  5217. {
  5218. barcodes = cre.Properties["Barcodes"].ToString();
  5219. }
  5220. int returnRows = 0;
  5221. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5222. try
  5223. {
  5224. string sql = null;
  5225. OracleParameter[] paras = null;
  5226. if (barcodes == null)
  5227. {
  5228. sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:GBCheckedID and GBCheckedFlag=:whereGBCheckedFlag";
  5229. paras = new OracleParameter[] {
  5230. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5231. sUserInfo.UserID,ParameterDirection.Input),
  5232. new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
  5233. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5234. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  5235. checkedID,ParameterDirection.Input),
  5236. new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
  5237. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5238. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5239. sUserInfo.UserID,ParameterDirection.Input),
  5240. };
  5241. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5242. }
  5243. else
  5244. {
  5245. string[] barcode = barcodes.Split(',');
  5246. foreach (string item in barcode)
  5247. {
  5248. sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:GBCheckedID and BarCode=:BarCode and GBCheckedFlag=:whereGBCheckedFlag";
  5249. paras = new OracleParameter[] {
  5250. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5251. sUserInfo.UserID,ParameterDirection.Input),
  5252. new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
  5253. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5254. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  5255. checkedID,ParameterDirection.Input),
  5256. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  5257. item,ParameterDirection.Input),
  5258. new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
  5259. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5260. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5261. sUserInfo.UserID,ParameterDirection.Input),
  5262. };
  5263. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5264. }
  5265. }
  5266. oracleTrConn.Commit();
  5267. }
  5268. catch (Exception ex)
  5269. {
  5270. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5271. {
  5272. oracleTrConn.Rollback();
  5273. oracleTrConn.Disconnect();
  5274. }
  5275. throw ex;
  5276. }
  5277. finally
  5278. {
  5279. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5280. {
  5281. oracleTrConn.Disconnect();
  5282. }
  5283. }
  5284. return sre;
  5285. }
  5286. /// <summary>
  5287. /// 在产盘点-盘点选择条码
  5288. /// </summary>
  5289. /// <param name="sUserInfo">用户基本信息</param>
  5290. /// <returns></returns>
  5291. public static ServiceResultEntity CheckBarcodes(SUserInfo sUserInfo, ClientRequestEntity cre)
  5292. {
  5293. ServiceResultEntity sre = new ServiceResultEntity();
  5294. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  5295. string barcodes = null;
  5296. if (cre.Properties["Barcodes"] != null)
  5297. {
  5298. barcodes = cre.Properties["Barcodes"].ToString();
  5299. }
  5300. int returnRows = 0;
  5301. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5302. try
  5303. {
  5304. string sql = null;
  5305. OracleParameter[] paras = null;
  5306. if (barcodes == null)
  5307. {
  5308. sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and InCheckedFlag=:whereInCheckedFlag";
  5309. paras = new OracleParameter[] {
  5310. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5311. sUserInfo.UserID,ParameterDirection.Input),
  5312. new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
  5313. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5314. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  5315. checkedID,ParameterDirection.Input),
  5316. new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
  5317. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5318. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5319. sUserInfo.UserID,ParameterDirection.Input),
  5320. };
  5321. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5322. }
  5323. else
  5324. {
  5325. string[] barcode = barcodes.Split(',');
  5326. foreach (string item in barcode)
  5327. {
  5328. sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and BarCode=:BarCode and InCheckedFlag=:whereInCheckedFlag";
  5329. paras = new OracleParameter[] {
  5330. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5331. sUserInfo.UserID,ParameterDirection.Input),
  5332. new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
  5333. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5334. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  5335. checkedID,ParameterDirection.Input),
  5336. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  5337. item,ParameterDirection.Input),
  5338. new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
  5339. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5340. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5341. sUserInfo.UserID,ParameterDirection.Input),
  5342. };
  5343. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5344. }
  5345. }
  5346. oracleTrConn.Commit();
  5347. }
  5348. catch (Exception ex)
  5349. {
  5350. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5351. {
  5352. oracleTrConn.Rollback();
  5353. oracleTrConn.Disconnect();
  5354. }
  5355. throw ex;
  5356. }
  5357. finally
  5358. {
  5359. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5360. {
  5361. oracleTrConn.Disconnect();
  5362. }
  5363. }
  5364. return sre;
  5365. }
  5366. #endregion
  5367. #region 集中采集的结束工序(包装装板)验证参数(商标、型号、数量)
  5368. /// <summary>
  5369. /// 集中采集的结束工序(包装装板)验证参数(商标、型号、数量)
  5370. /// </summary>
  5371. /// <param name="user">登录用户信息</param>
  5372. /// <param name="se">查询条件</param>
  5373. /// <returns>查询结果</returns>
  5374. public static ServiceResultEntity GetFinishedLoadingCarSetting(SUserInfo user, ClientRequestEntity cre)
  5375. {
  5376. IDBConnection conn = null;
  5377. try
  5378. {
  5379. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5380. conn.Open();
  5381. //// 列表中产品数量
  5382. //int listCount = (int)cre.Properties["ListCount"];
  5383. //// 第一产品时,获取系统参数
  5384. //if (listCount == 0)
  5385. //{
  5386. string sqlString = "SELECT sss.settingcode, sss.settingvalue\n" +
  5387. " FROM tp_mst_systemsetting sss\n" +
  5388. " WHERE sss.accountid = " + user.AccountID + "\n" +
  5389. " AND sss.settingcode IN ('S_PM_011', 'S_PM_012', 'S_PM_013')";
  5390. IDataParameter[] paras = new OracleParameter[]
  5391. {
  5392. new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  5393. };
  5394. DataTable data = conn.GetSqlResultToDt(sqlString, paras);
  5395. //foreach (DataRow item in data.Rows)
  5396. //{
  5397. // if (item["settingcode"].ToString() == "S_PM_011")
  5398. // {
  5399. // cre.Properties["S_PM_011"] = item["settingvalue"];
  5400. // }
  5401. // else if (item["settingcode"].ToString() == "S_PM_012")
  5402. // {
  5403. // cre.Properties["S_PM_012"] = item["settingvalue"];
  5404. // }
  5405. // else if (item["settingcode"].ToString() == "S_PM_013")
  5406. // {
  5407. // cre.Properties["S_PM_013"] = item["settingvalue"];
  5408. // }
  5409. //}
  5410. //xuwei modify 2021-11-23 装板数量按商标和产品取值
  5411. //===============================================================
  5412. //sqlString = "SELECT G.PLATELIMITNUM FROM TP_MST_GOODS G WHERE G.GOODSID = " + cre.Properties["GoodsID"];
  5413. if(string.IsNullOrEmpty(cre.Properties["logoID"] + ""))
  5414. {
  5415. //兼容原方法,只从产品档案取值
  5416. sqlString = "SELECT G.PLATELIMITNUM FROM TP_MST_GOODS G WHERE G.GOODSID = " + cre.Properties["GoodsID"];
  5417. }
  5418. else
  5419. {
  5420. //新方法,从产品档案和SAP配置表取值
  5421. sqlString = @"
  5422. SELECT
  5423. PLATELIMITNUM
  5424. FROM
  5425. (
  5426. SELECT
  5427. G.GOODSID,
  5428. G.LOGOID,
  5429. G.GOODSCODE,
  5430. G.MATERIALCODE,
  5431. G.PLATELIMITNUM
  5432. FROM
  5433. TP_MST_GOODS G
  5434. WHERE
  5435. GOODSID = {GOODSID}
  5436. AND LOGOID = {LOGOID}
  5437. UNION
  5438. SELECT
  5439. SAP.GOODSID,
  5440. SAP.LOGOID,
  5441. SAP.GOODSCODE,
  5442. SAP.MATERIALCODE,
  5443. SAP.PLATELIMITNUM
  5444. FROM
  5445. TP_MST_GOODSLOGOSAP SAP
  5446. WHERE
  5447. GOODSID = {GOODSID}
  5448. AND LOGOID = {LOGOID}
  5449. ORDER BY
  5450. GOODSCODE,
  5451. LOGOID,
  5452. PLATELIMITNUM DESC
  5453. )
  5454. WHERE
  5455. ROWNUM < 2
  5456. "
  5457. .Replace("{GOODSID}", cre.Properties["GoodsID"].ToString())
  5458. .Replace("{LOGOID}", cre.Properties["logoID"].ToString());
  5459. }
  5460. //==========================================================
  5461. //cre.Properties["PLATELIMITNUM"] = conn.GetSqlResultToObj(sqlString);
  5462. //}
  5463. ServiceResultEntity sre = new ServiceResultEntity();
  5464. sre.Data = new DataSet();
  5465. sre.Data.Tables.Add(data);
  5466. //sre.Result = cre.Properties["PLATELIMITNUM"];
  5467. sre.Result = conn.GetSqlResultToObj(sqlString);
  5468. return sre;
  5469. }
  5470. catch (Exception ex)
  5471. {
  5472. throw ex;
  5473. }
  5474. finally
  5475. {
  5476. if (conn != null &&
  5477. conn.ConnState == ConnectionState.Open)
  5478. {
  5479. conn.Close();
  5480. }
  5481. }
  5482. }
  5483. #endregion
  5484. #region 成型报损
  5485. /// <summary>
  5486. /// 根据页面条件获取成型报损一览
  5487. /// </summary>
  5488. /// <param name="selectProEntity">成型报损</param>
  5489. /// <param name="userInfo">用户基本信息</param>
  5490. /// <returns>DataSet</returns>
  5491. public static ServiceResultEntity GetGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
  5492. {
  5493. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5494. try
  5495. {
  5496. ServiceResultEntity result = new ServiceResultEntity();
  5497. con.Open();
  5498. string sqlString = @" SELECT
  5499. GROUPING_ID (STAFFNAME,Goodscode,车间) GID,
  5500. CASE when Groutinglinecode is null AND GROUPING_ID (STAFFNAME,Goodscode,车间)=1 THEN '小计'
  5501. WHEN Groutinglinecode is null AND GROUPING_ID (STAFFNAME,Goodscode,车间)=5 THEN '合计'
  5502. WHEN Groutinglinecode is null AND GROUPING_ID (STAFFNAME,Goodscode,车间)=6 THEN TO_CHAR(车间)
  5503. WHEN Groutinglinecode is null AND GROUPING_ID (STAFFNAME,Goodscode,车间)=7 THEN '总计'
  5504. END AS 统计方式, TO_CHAR(Groutinglinecode),ScrapProductID,车间,
  5505. BARCODE,ResponUserCode,ResponUserName,STAFFNAME,
  5506. SUM(CASE WHEN BARCODE IS NOT NULL THEN 1 ELSE 0 END) AS NUMS,
  5507. GoodsID,Goodscode,Goodsname,GroutingDailyID,Groutingdailydetailid,
  5508. GroutingDate,GroutingLineID,Groutinglinename,GMouldTypeID,
  5509. Groutingmouldcode,Mouldcode,Groutinguserid,Groutingusercode,Groutingnum,Scraptype,
  5510. ScrapTypeName,ResponType,ScrapDate,ScrapRreasonID,ScrapReason,UName,UCode,
  5511. AuditStatusName,createuser,ResponUserID,
  5512. BackOutFlag,BackOutTime,BackOutUserID,BackOutUserCode,BackOutUserName,
  5513. Remarks,AuditStatus,AuditDate,Auditopinion,Accountdate,OPTimeStamp
  5514. FROM(
  5515. SELECT sp.BarCode
  5516. ,sp.ScrapProductID
  5517. ,sp.GoodsID
  5518. ,sp.Goodscode
  5519. ,sp.Goodsname
  5520. ,sp.GroutingDailyID
  5521. ,sp.Groutingdailydetailid
  5522. ,sp.GroutingDate
  5523. ,sp.GroutingLineID
  5524. ,sp.Groutinglinecode
  5525. ,CASE WHEN gl.HIGHPRESSUREFLAG=1 THEN '高压车间'
  5526. ELSE TO_CHAR(SUBSTR(gl.GROUTINGLINECODE, 2, 1)||'车间')END 车间
  5527. ,sp.Groutinglinename
  5528. ,sp.GMouldTypeID
  5529. ,sp.Groutingmouldcode
  5530. ,sp.Mouldcode
  5531. ,sp.Groutinguserid
  5532. ,sp.Groutingusercode
  5533. ,sp.Groutingnum
  5534. ,sp.Scraptype
  5535. ,CASE
  5536. WHEN sp.ScrapType = '0' THEN
  5537. '开模报损'
  5538. WHEN sp.ScrapType = '1' THEN
  5539. '普通报损'
  5540. WHEN sp.ScrapType = '2' THEN
  5541. '盘点报损'
  5542. ELSE
  5543. '自动报损'
  5544. END ScrapTypeName
  5545. ,sp.ResponType
  5546. ,sp.ScrapDate
  5547. ,sp.ScrapRreasonID
  5548. ,msr.ScrapReason
  5549. ,userInfo.UserName AS UName
  5550. ,userInfo.UserCode AS UCode
  5551. ,status.AuditStatusName
  5552. ,createuser.usercode AS createuser
  5553. ,responUser.UserName AS ResponUserName
  5554. ,sp.ResponUserCode
  5555. ,sp.ResponUserID
  5556. ,sp.BackOutFlag
  5557. ,sp.BackOutTime
  5558. ,sp.BackOutUserID
  5559. ,sp.BackOutUserCode
  5560. ,backOutUser.UserName AS BackOutUserName
  5561. ,sp.Remarks
  5562. ,sp.AuditStatus
  5563. ,sp.AuditDate
  5564. ,sp.Auditopinion
  5565. ,sp.Accountdate
  5566. ,sp.OPTimeStamp
  5567. ,STAFF.STAFFNAME
  5568. FROM TP_PM_GroutingScrapProduct sp
  5569. INNER JOIN TP_SYS_AuditStatus status ON sp.AuditStatus = status.AuditStatusID
  5570. LEFT JOIN TP_MST_USER userInfo ON sp.Auditor = userInfo.UserId
  5571. LEFT JOIN TP_MST_USER createuser ON sp.createuserid = createuser.UserId
  5572. LEFT JOIN TP_MST_USER responUser ON sp.ResponUserID = responUser.UserId
  5573. LEFT JOIN TP_MST_ScrapReason msr ON sp.ScrapRreasonID = msr.ScrapReasonID
  5574. LEFT JOIN TP_MST_USER backOutUser ON sp.BackOutUserID = backOutUser.UserId
  5575. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  5576. LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINECODE=gdd.GROUTINGLINECODE
  5577. LEFT JOIN (
  5578. SELECT
  5579. D.CLASSESSETTINGID,
  5580. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  5581. FROM
  5582. (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D
  5583. GROUP BY
  5584. D.CLASSESSETTINGID
  5585. ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  5586. WHERE sp.ValueFlag = 1
  5587. AND sp.AccountID = :in_AccountID ";
  5588. List<OracleParameter> paraList = new List<OracleParameter>();
  5589. paraList.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
  5590. // 成型报损ID
  5591. if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapProductID"] + ""))
  5592. {
  5593. sqlString += " AND sp.ScrapProductID = :in_ScrapProductID";
  5594. paraList.Add(new OracleParameter(":in_ScrapProductID", OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input));
  5595. }
  5596. // 产品编码
  5597. if (!string.IsNullOrWhiteSpace(cre.Properties["GoodsCode"] + ""))
  5598. {
  5599. sqlString += " AND INSTR(sp.GoodsCode, :in_GoodsCode) > 0";
  5600. paraList.Add(new OracleParameter(":in_GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"] + "", ParameterDirection.Input));
  5601. }
  5602. // 产品名称
  5603. if (!string.IsNullOrWhiteSpace(cre.Properties["GoodsName"] + ""))
  5604. {
  5605. sqlString += " AND INSTR(sp.GoodsName, :in_GoodsName) > 0";
  5606. paraList.Add(new OracleParameter(":in_GoodsName", OracleDbType.NVarchar2, cre.Properties["GoodsName"] + "", ParameterDirection.Input));
  5607. }
  5608. // 产品条码
  5609. if (!string.IsNullOrWhiteSpace(cre.Properties["BarCode"] + ""))
  5610. {
  5611. sqlString += " AND INSTR(sp.BarCode, :in_BarCode) > 0";
  5612. paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.NVarchar2, cre.Properties["BarCode"] + "", ParameterDirection.Input));
  5613. }
  5614. // 成型工号
  5615. if (!string.IsNullOrWhiteSpace(cre.Properties["GroutingUserCode"] + ""))
  5616. {
  5617. sqlString += " AND INSTR(sp.GroutingUserCode, :in_GroutingUserCode) > 0";
  5618. paraList.Add(new OracleParameter(":in_GroutingUserCode", OracleDbType.NVarchar2, cre.Properties["GroutingUserCode"] + "", ParameterDirection.Input));
  5619. }
  5620. // 责任工号
  5621. if (!string.IsNullOrWhiteSpace(cre.Properties["ResponUserCode"] + ""))
  5622. {
  5623. sqlString += " AND INSTR(sp.ResponUserCode, :in_ResponUserCode) > 0";
  5624. paraList.Add(new OracleParameter(":in_ResponUserCode", OracleDbType.NVarchar2, cre.Properties["ResponUserCode"] + "", ParameterDirection.Input));
  5625. }
  5626. // 损坯原因
  5627. if (!string.IsNullOrWhiteSpace(cre.Properties["Rreason"] + ""))
  5628. {
  5629. sqlString += " AND INSTR(msr.ScrapReason, :in_ScrapRreason) > 0";
  5630. paraList.Add(new OracleParameter(":in_ScrapRreason", OracleDbType.NVarchar2, cre.Properties["Rreason"] + "", ParameterDirection.Input));
  5631. }
  5632. // 备注
  5633. if (!string.IsNullOrWhiteSpace(cre.Properties["Remarks"] + ""))
  5634. {
  5635. sqlString += " AND INSTR(sp.Remarks, :in_Remarks) > 0";
  5636. paraList.Add(new OracleParameter(":in_Remarks", OracleDbType.NVarchar2, cre.Properties["Remarks"] + "", ParameterDirection.Input));
  5637. }
  5638. // 审核状态
  5639. if (!string.IsNullOrWhiteSpace(cre.Properties["AuditStatus"] + ""))
  5640. {
  5641. sqlString += " AND sp.AuditStatus = :in_AuditStatus";
  5642. paraList.Add(new OracleParameter(":in_AuditStatus", OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input));
  5643. }
  5644. // 报损开始日期
  5645. if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapDateStart"] + ""))
  5646. {
  5647. sqlString += " AND sp.ScrapDate >= :in_ScrapDateStart";
  5648. paraList.Add(new OracleParameter(":in_ScrapDateStart", OracleDbType.Date, Convert.ToDateTime(cre.Properties["ScrapDateStart"]), ParameterDirection.Input));
  5649. }
  5650. // 报损结束日期
  5651. if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapDateEnd"] + ""))
  5652. {
  5653. sqlString += " AND sp.ScrapDate <= :in_ScrapDateEnd";
  5654. paraList.Add(new OracleParameter(":in_ScrapDateEnd", OracleDbType.Date, Convert.ToDateTime(cre.Properties["ScrapDateEnd"]), ParameterDirection.Input));
  5655. }
  5656. //注浆开始日期
  5657. if (!string.IsNullOrWhiteSpace(cre.Properties["GroutingDateStart"] + ""))
  5658. {
  5659. sqlString += " AND sp.GroutingDate >= :in_GroutingDateStart";
  5660. paraList.Add(new OracleParameter(":in_GroutingDateStart", OracleDbType.Date, Convert.ToDateTime(cre.Properties["GroutingDateStart"]), ParameterDirection.Input));
  5661. }
  5662. //注浆结束日期
  5663. if (!string.IsNullOrWhiteSpace(cre.Properties["GroutingDateEnd"] + ""))
  5664. {
  5665. sqlString += " AND sp.GroutingDate <= :in_GroutingDateEnd";
  5666. paraList.Add(new OracleParameter(":in_GroutingDateEnd", OracleDbType.Date, Convert.ToDateTime(cre.Properties["GroutingDateEnd"]), ParameterDirection.Input));
  5667. }
  5668. sqlString += @" ) GROUP BY GROUPING SETS ( (BARCODE,ScrapProductID,
  5669. GoodsID,Goodscode,Goodsname,GroutingDailyID,Groutingdailydetailid,
  5670. GroutingDate,GroutingLineID,Groutinglinecode,Groutinglinename,GMouldTypeID,
  5671. Groutingmouldcode,Mouldcode,Groutinguserid,Groutingusercode,Groutingnum,Scraptype,
  5672. ScrapTypeName,ResponType,ScrapDate,ScrapRreasonID,ScrapReason,UName,UCode,
  5673. AuditStatusName,createuser,ResponUserName,ResponUserCode,ResponUserID,
  5674. BackOutFlag,BackOutTime,BackOutUserID,BackOutUserCode,BackOutUserName,
  5675. Remarks,AuditStatus,AuditDate,Auditopinion,Accountdate,OPTimeStamp,STAFFNAME),(Goodscode,Goodsname,Groutingusercode,STAFFNAME),(GOODSCODE,GOODSNAME),(车间),() )
  5676. ORDER BY DECODE(GROUPING_ID (STAFFNAME,Goodscode,车间), 7, 1),GOODSCODE,BARCODE,STAFFNAME,车间";
  5677. DataSet dsReturn = con.GetSqlResultToDs(sqlString, paraList.ToArray());
  5678. // 是否查责任员工
  5679. if (!string.IsNullOrWhiteSpace(cre.Properties["IsSearchStaff"] + ""))
  5680. {
  5681. string detailString = "SELECT Mu.userid\n" +
  5682. " ,Staff.Staffid\n" +
  5683. " ,Staff.Staffname\n" +
  5684. " ,Staff.Organizationid\n" +
  5685. " ,Staff.Jobs\n" +
  5686. " ,Staff.Staffstatus\n" +
  5687. " ,Staff.Staffcode\n" +
  5688. " ,Jobs.Jobsname\n" +
  5689. " ,Mu.UserCode\n" +
  5690. " ,TUserJobs.Jobsname AS UJobsName\n" +
  5691. " ,TUserJobs.JobsId AS UJobsId\n" +
  5692. " , CASE\n" +
  5693. " WHEN PPG.ResponsibleID IS NULL THEN\n" +
  5694. " 0\n" +
  5695. " ELSE\n" +
  5696. " 1\n" +
  5697. " END UserSelected\n" +
  5698. " FROM TP_PM_GroutingScrapProduct PGS\n" +
  5699. " INNER JOIN TP_MST_User Mu\n" +
  5700. " ON PGS.ResponUserID = Mu.Userid\n" +
  5701. " INNER JOIN TP_MST_UserStaff Mus\n" +
  5702. " ON Mu.Userid = Mus.Userid\n" +
  5703. " INNER JOIN TP_HR_Staff Staff\n" +
  5704. " ON Mus.StaffID = Staff.Staffid\n" +
  5705. " LEFT JOIN TP_MST_Jobs Jobs\n" +
  5706. " ON Staff.Jobs = Jobs.Jobsid\n" +
  5707. " LEFT JOIN TP_MST_Jobs TUserJobs\n" +
  5708. " ON TUserJobs.Jobsid = Mus.Ujobsid\n" +
  5709. " LEFT JOIN TP_PM_GroutingScrapResponsible PPG\n" +
  5710. " ON Staff.Staffid = PPG.Staffid\n" +
  5711. " AND PPG.ScrapProductID = :in_ScrapProductID\n" +
  5712. " WHERE PGS.ScrapProductID = :in_ScrapProductID";
  5713. OracleParameter[] dparas = new OracleParameter[] {
  5714. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32,
  5715. cre.Properties["ScrapProductID"],ParameterDirection.Input),
  5716. };
  5717. DataTable returnTable = con.GetSqlResultToDt(detailString, dparas);
  5718. if (dsReturn != null)
  5719. {
  5720. dsReturn.Tables.Add(returnTable);
  5721. }
  5722. }
  5723. result.Data = dsReturn;
  5724. return result;
  5725. }
  5726. catch (Exception ex)
  5727. {
  5728. throw ex;
  5729. }
  5730. finally
  5731. {
  5732. if (con.ConnState == ConnectionState.Open)
  5733. {
  5734. con.Close();
  5735. }
  5736. }
  5737. }
  5738. /// <summary>
  5739. /// 获取成型报损信息 用于撤销使用 支持 浆日报直接报损
  5740. /// </summary>
  5741. /// <param name="cre"></param>
  5742. /// <param name="userInfo"></param>
  5743. /// <returns></returns>
  5744. public static ServiceResultEntity GetGroutingScrap(ClientRequestEntity cre, SUserInfo userInfo)
  5745. {
  5746. IDBConnection conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5747. try
  5748. {
  5749. ServiceResultEntity result = new ServiceResultEntity();
  5750. conn.Open();
  5751. //先从成型报损查询
  5752. string sqlString = @"
  5753. SELECT
  5754. S.BARCODE,
  5755. U.USERCODE,
  5756. S.GOODSCODE,
  5757. S.GROUTINGMOULDCODE,
  5758. S.GROUTINGDATE
  5759. FROM
  5760. TP_PM_GROUTINGSCRAPPRODUCT S
  5761. LEFT JOIN TP_MST_USER U ON S.AUDITOR = U.USERID
  5762. WHERE
  5763. S.VALUEFLAG = '1'
  5764. AND S.BARCODE = :in_BarCode
  5765. ";
  5766. List<OracleParameter> paraList = new List<OracleParameter>();
  5767. paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.Varchar2, cre.Properties["BarCode"], ParameterDirection.Input));
  5768. DataSet dtScrap = conn.GetSqlResultToDs(sqlString, paraList.ToArray());
  5769. //如果没有再从注浆日报损坯标记查询
  5770. if(dtScrap.Tables[0].Rows.Count==0)
  5771. {
  5772. sqlString = @"
  5773. SELECT
  5774. S.BARCODE,
  5775. S.USERCODE,
  5776. S.GOODSCODE,
  5777. S.GROUTINGMOULDCODE,
  5778. S.GROUTINGDATE
  5779. FROM
  5780. TP_PM_GROUTINGDAILYDETAIL S
  5781. WHERE
  5782. S.VALUEFLAG = '1'
  5783. AND S.SCRAPFLAG = '1'
  5784. AND S.BARCODE = :in_BarCode
  5785. ";
  5786. dtScrap = conn.GetSqlResultToDs(sqlString, paraList.ToArray());
  5787. if (dtScrap.Tables[0].Rows.Count == 0)
  5788. {
  5789. result.Message = "没查询到报损数据!";
  5790. result.Status = Constant.ServiceResultStatus.NoSearchResults;
  5791. }
  5792. else
  5793. {
  5794. result.Message = "这是注浆日报报损数据!";
  5795. result.Status = Constant.ServiceResultStatus.Success;
  5796. }
  5797. }
  5798. else
  5799. {
  5800. result.Message = "这是成型报损数据!";
  5801. result.Status = Constant.ServiceResultStatus.Success;
  5802. }
  5803. result.Data = dtScrap;
  5804. return result;
  5805. }
  5806. catch (Exception ex)
  5807. {
  5808. throw ex;
  5809. }
  5810. finally
  5811. {
  5812. if (conn.ConnState == ConnectionState.Open)
  5813. {
  5814. conn.Close();
  5815. }
  5816. }
  5817. }
  5818. /// <summary>
  5819. /// 保存成型报损数据
  5820. /// </summary>
  5821. /// <param name="cre"></param>
  5822. /// <param name="userInfo"></param>
  5823. /// <returns></returns>
  5824. public static ServiceResultEntity SaveGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
  5825. {
  5826. ServiceResultEntity result = new ServiceResultEntity();
  5827. result.Status = Constant.ServiceResultStatus.Success;
  5828. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5829. string sqlString = string.Empty;
  5830. int returnRow = Constant.INT_IS_ZERO;
  5831. try
  5832. {
  5833. oracleTrConn.Connect();
  5834. int scrapProductID = Convert.ToInt32(cre.Properties["ScrapProductID"]);
  5835. #region 1、判断是否符合报损条件(未注浆,交坯之后不允许报损,是否进行过了报损)
  5836. sqlString = "SELECT GroutingFlag,DeliverFlag,ScrapFlag,beginningflag\n" +
  5837. " FROM TP_PM_GroutingDailyDetail \n" +
  5838. " WHERE AccountID = :AccountID\n" +
  5839. " AND BarCode = :BarCode\n";
  5840. OracleParameter[] paras = new OracleParameter[] {
  5841. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  5842. new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  5843. };
  5844. DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  5845. // 编码不存在
  5846. if (returnTable.Rows.Count == 0)
  5847. {
  5848. result.Result = -99;
  5849. result.Status = Constant.ServiceResultStatus.SystemError;
  5850. result.Message = "未查询到该产品信息,请确认该产品是否已经进行注浆";
  5851. return result;
  5852. }
  5853. // 未注浆
  5854. if ("0".Equals(returnTable.Rows[0]["GroutingFlag"]))
  5855. {
  5856. result.Result = -100;
  5857. result.Status = Constant.ServiceResultStatus.SystemError;
  5858. result.Message = "该产品还未进行注浆";
  5859. return result;
  5860. }
  5861. // 已经交坯
  5862. if ("1".Equals(returnTable.Rows[0]["DeliverFlag"]))
  5863. {
  5864. result.Result = -101;
  5865. result.Status = Constant.ServiceResultStatus.SystemError;
  5866. result.Message = "该产品已经交坯";
  5867. return result;
  5868. }
  5869. // 已经报损(新建才行进行判断)
  5870. if ("1".Equals(returnTable.Rows[0]["ScrapFlag"]) && scrapProductID == 0)
  5871. {
  5872. result.Result = -102;
  5873. result.Status = Constant.ServiceResultStatus.SystemError;
  5874. result.Message = "该产品已经报损";
  5875. return result;
  5876. }
  5877. // 该产品已进入生产工序
  5878. if ("1".Equals(returnTable.Rows[0]["beginningflag"]))
  5879. {
  5880. result.Result = -102;
  5881. result.Status = Constant.ServiceResultStatus.SystemError;
  5882. result.Message = "该产品已进入生产工序";
  5883. return result;
  5884. }
  5885. #endregion
  5886. #region 2、保存报损信息
  5887. int? auditor = null;
  5888. DateTime? auditDate = null;
  5889. if (!Constant.AuditStatus.Pending.GetHashCode().Equals(cre.Properties["AuditStatus"]))
  5890. {
  5891. auditor = userInfo.UserID;
  5892. auditDate = DateTime.Now;
  5893. }
  5894. #region 新建
  5895. if (scrapProductID == 0)
  5896. {
  5897. #region 报损总表
  5898. sqlString = "SELECT SEQ_PM_GroutingScrapProduct_ID.nextval FROM DUAL";
  5899. scrapProductID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sqlString));
  5900. sqlString = "INSERT INTO TP_PM_GroutingScrapProduct\n" +
  5901. " (ScrapProductID\n" +
  5902. " ,BarCode\n" +
  5903. " ,GoodsID\n" +
  5904. " ,GoodsCode\n" +
  5905. " ,GoodsName\n" +
  5906. " ,GroutingDailyID\n" +
  5907. " ,GroutingDailyDetailID\n" +
  5908. " ,GroutingDate\n" +
  5909. " ,GroutingLineID\n" +
  5910. " ,GroutingLineCode\n" +
  5911. " ,GroutingLineName\n" +
  5912. " ,GMouldTypeID\n" +
  5913. " ,GroutingLineDetailID\n" +
  5914. " ,GroutingMouldCode\n" +
  5915. " ,MouldCode\n" +
  5916. " ,GroutingUserID\n" +
  5917. " ,GroutingUserCode\n" +
  5918. " ,GroutingNum\n" +
  5919. " ,ScrapType\n" +
  5920. " ,ResponType\n" +
  5921. " ,ScrapDate\n" +
  5922. " ,ScrapRreasonID\n" +
  5923. " ,ResponUserID\n" +
  5924. " ,ResponUserCode\n" +
  5925. " ,Remarks\n" +
  5926. " ,AuditStatus\n" +
  5927. " ,Auditor\n" +
  5928. " ,AuditDate\n" +
  5929. " ,AccountDate\n" +
  5930. " ,AccountID\n" +
  5931. " ,CreateUserID\n" +
  5932. " ,UpdateUserID)\n" +
  5933. "VALUES\n" +
  5934. " (:ScrapProductID\n" +
  5935. " ,:BarCode\n" +
  5936. " ,:GoodsID\n" +
  5937. " ,:GoodsCode\n" +
  5938. " ,:GoodsName\n" +
  5939. " ,:GroutingDailyID\n" +
  5940. " ,:GroutingDailyDetailID\n" +
  5941. " ,:GroutingDate\n" +
  5942. " ,:GroutingLineID\n" +
  5943. " ,:GroutingLineCode\n" +
  5944. " ,:GroutingLineName\n" +
  5945. " ,:GMouldTypeID\n" +
  5946. " ,:GroutingLineDetailID\n" +
  5947. " ,:GroutingMouldCode\n" +
  5948. " ,:MouldCode\n" +
  5949. " ,:GroutingUserID\n" +
  5950. " ,:GroutingUserCode\n" +
  5951. " ,:GroutingNum\n" +
  5952. " ,:ScrapType\n" +
  5953. " ,:ResponType\n" +
  5954. " ,:ScrapDate\n" +
  5955. " ,:ScrapRreasonID\n" +
  5956. " ,:ResponUserID\n" +
  5957. " ,:ResponUserCode\n" +
  5958. " ,:Remarks\n" +
  5959. " ,:AuditStatus\n" +
  5960. " ,:Auditor\n" +
  5961. " ,:AuditDate\n" +
  5962. " ,sysdate\n" +
  5963. " ,:AccountID\n" +
  5964. " ,:CreateUserID\n" +
  5965. " ,:UpdateUserID)";
  5966. paras = new OracleParameter[] {
  5967. new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  5968. new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  5969. new OracleParameter(":GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
  5970. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  5971. new OracleParameter(":GoodsName",OracleDbType.NVarchar2, cre.Properties["GoodsName"], ParameterDirection.Input),
  5972. new OracleParameter(":GroutingDailyID",OracleDbType.Int32, cre.Properties["GroutingDailyID"], ParameterDirection.Input),
  5973. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  5974. cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
  5975. new OracleParameter(":GroutingDate",OracleDbType.Date,
  5976. Convert.ToDateTime(cre.Properties["GroutingDate"]), ParameterDirection.Input),
  5977. new OracleParameter(":GroutingLineID",OracleDbType.Int32, cre.Properties["GroutingLineID"], ParameterDirection.Input),
  5978. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2, cre.Properties["GroutingLineCode"], ParameterDirection.Input),
  5979. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2, cre.Properties["GroutingLineName"], ParameterDirection.Input),
  5980. new OracleParameter(":GMouldTypeID",OracleDbType.Int32, cre.Properties["GMouldTypeID"], ParameterDirection.Input),
  5981. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32, cre.Properties["GroutingLineDetailID"], ParameterDirection.Input),
  5982. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2, cre.Properties["GroutingMouldCode"], ParameterDirection.Input),
  5983. new OracleParameter(":MouldCode",OracleDbType.NVarchar2, cre.Properties["MouldCode"], ParameterDirection.Input),
  5984. new OracleParameter(":GroutingUserID",OracleDbType.Int32, cre.Properties["GroutingUserID"], ParameterDirection.Input),
  5985. new OracleParameter(":GroutingUserCode",OracleDbType.NVarchar2, cre.Properties["GroutingUserCode"], ParameterDirection.Input),
  5986. new OracleParameter(":GroutingNum",OracleDbType.Decimal, cre.Properties["GroutingNum"], ParameterDirection.Input),
  5987. new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
  5988. new OracleParameter(":ResponType",OracleDbType.Char, Constant.ScrapResponType.Person.GetHashCode(),
  5989. ParameterDirection.Input),
  5990. new OracleParameter(":ScrapDate",OracleDbType.Date,
  5991. Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
  5992. new OracleParameter(":ScrapRreasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
  5993. new OracleParameter(":ResponUserID",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
  5994. new OracleParameter(":ResponUserCode",OracleDbType.NVarchar2, cre.Properties["ResponUserCode"], ParameterDirection.Input),
  5995. new OracleParameter(":Remarks",OracleDbType.NVarchar2, cre.Properties["Remarks"], ParameterDirection.Input),
  5996. new OracleParameter(":AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
  5997. new OracleParameter(":Auditor",OracleDbType.Int32, auditor, ParameterDirection.Input),
  5998. new OracleParameter(":AuditDate",OracleDbType.Date, auditDate, ParameterDirection.Input),
  5999. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  6000. new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6001. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6002. };
  6003. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6004. #endregion
  6005. #region 报损责任者
  6006. if (cre.Data != null && cre.Data.Tables.Count > 0
  6007. && cre.Data.Tables[0].Rows.Count > 0)
  6008. {
  6009. foreach (DataRow row in cre.Data.Tables[0].Rows)
  6010. {
  6011. sqlString = "INSERT INTO TP_PM_GroutingScrapResponsible\n" +
  6012. " (\n" +
  6013. " ScrapProductID\n" +
  6014. " ,BarCode\n" +
  6015. " ,StaffID\n" +
  6016. " ,StaffStatus\n" +
  6017. " ,UserID\n" +
  6018. " ,UserCode\n" +
  6019. " ,UJobsID\n" +
  6020. " ,SJobsID\n" +
  6021. " ,AccountID\n" +
  6022. " ,CreateUserID\n" +
  6023. " ,UpdateUserID)\n" +
  6024. "VALUES\n" +
  6025. " (\n" +
  6026. " :ScrapProductID\n" +
  6027. " ,:BarCode\n" +
  6028. " ,:StaffID\n" +
  6029. " ,:StaffStatus\n" +
  6030. " ,:UserID\n" +
  6031. " ,:UserCode\n" +
  6032. " ,:UJobsID\n" +
  6033. " ,:SJobsID\n" +
  6034. " ,:AccountID\n" +
  6035. " ,:CreateUserID\n" +
  6036. " ,:UpdateUserID)";
  6037. paras = new OracleParameter[] {
  6038. new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6039. new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6040. new OracleParameter(":StaffID",OracleDbType.Int32, row["StaffID"], ParameterDirection.Input),
  6041. new OracleParameter(":StaffStatus",OracleDbType.Int32, row["StaffStatus"], ParameterDirection.Input),
  6042. new OracleParameter(":UserID",OracleDbType.Int32, row["UserID"], ParameterDirection.Input),
  6043. new OracleParameter(":UserCode",OracleDbType.NVarchar2, row["UserCode"], ParameterDirection.Input),
  6044. new OracleParameter(":UJobsID",OracleDbType.Int32, row["UJobsId"], ParameterDirection.Input),
  6045. new OracleParameter(":SJobsID",OracleDbType.Int32, row["Jobs"], ParameterDirection.Input),
  6046. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  6047. new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6048. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6049. };
  6050. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6051. }
  6052. }
  6053. #endregion
  6054. #region 更新注浆日报明细表
  6055. sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
  6056. " SET ScrapFlag = :ScrapFlag\n" +
  6057. " ,SReasonID = :SReasonID\n" +
  6058. " ,ScrapType = :ScrapType\n" +
  6059. " ,ScrapTime = sysdate\n" +
  6060. " ,ScrapUser = :ScrapUser\n" +
  6061. " ,UpdateUserID = :UpdateUserID\n" +
  6062. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  6063. paras = new OracleParameter[] {
  6064. new OracleParameter(":ScrapFlag",OracleDbType.Char, 1, ParameterDirection.Input),
  6065. new OracleParameter(":SReasonID",OracleDbType.NVarchar2, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
  6066. new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
  6067. //new OracleParameter(":ScrapTime",OracleDbType.Date,
  6068. // Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
  6069. new OracleParameter(":ScrapUser",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
  6070. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6071. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  6072. cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
  6073. };
  6074. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6075. #endregion
  6076. }
  6077. #endregion
  6078. #region 编辑
  6079. else
  6080. {
  6081. #region 报损总表
  6082. sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
  6083. " SET ScrapType = :in_ScrapType\n" +
  6084. " ,ResponType = :in_ResponType\n" +
  6085. " ,ScrapDate = :in_ScrapDate\n" +
  6086. " ,ScrapRreasonID = :in_ScrapRreasonID\n" +
  6087. " ,ResponUserID = :in_ResponUserID\n" +
  6088. " ,ResponUserCode = :in_ResponUserCode\n" +
  6089. " ,Remarks = :in_Remarks\n" +
  6090. " ,AuditStatus = :in_AuditStatus\n" +
  6091. " ,Auditor = :in_Auditor\n" +
  6092. " ,AuditDate = :in_AuditDate\n" +
  6093. " ,UpdateUserID = :in_UpdateUserID\n" +
  6094. " WHERE ScrapProductID = :in_ScrapProductID";
  6095. paras = new OracleParameter[] {
  6096. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6097. new OracleParameter(":in_ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
  6098. new OracleParameter(":in_ResponType",OracleDbType.Char, Constant.ScrapResponType.Person.GetHashCode(),
  6099. ParameterDirection.Input),
  6100. new OracleParameter(":in_ScrapDate",OracleDbType.Date,
  6101. Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
  6102. new OracleParameter(":in_ScrapRreasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
  6103. new OracleParameter(":in_ResponUserID",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
  6104. new OracleParameter(":in_ResponUserCode",OracleDbType.NVarchar2, cre.Properties["ResponUserCode"], ParameterDirection.Input),
  6105. new OracleParameter(":in_Remarks",OracleDbType.NVarchar2, cre.Properties["Remarks"], ParameterDirection.Input),
  6106. new OracleParameter(":in_AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
  6107. new OracleParameter(":in_Auditor",OracleDbType.Int32, auditor, ParameterDirection.Input),
  6108. new OracleParameter(":in_AuditDate",OracleDbType.Date, auditDate, ParameterDirection.Input),
  6109. new OracleParameter(":in_UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6110. };
  6111. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6112. #endregion
  6113. #region 报损责任者
  6114. if (cre.Data != null && cre.Data.Tables.Count > 0
  6115. && cre.Data.Tables[0].Rows.Count > 0)
  6116. {
  6117. // 先删除 后插入
  6118. sqlString = "DELETE TP_PM_GroutingScrapResponsible\n" +
  6119. " WHERE ScrapProductID = :in_ScrapProductID";
  6120. paras = new OracleParameter[] {
  6121. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6122. };
  6123. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6124. foreach (DataRow row in cre.Data.Tables[0].Rows)
  6125. {
  6126. sqlString = "INSERT INTO TP_PM_GroutingScrapResponsible\n" +
  6127. " (\n" +
  6128. " ScrapProductID\n" +
  6129. " ,BarCode\n" +
  6130. " ,StaffID\n" +
  6131. " ,StaffStatus\n" +
  6132. " ,UserID\n" +
  6133. " ,UserCode\n" +
  6134. " ,UJobsID\n" +
  6135. " ,SJobsID\n" +
  6136. " ,AccountID\n" +
  6137. " ,CreateUserID\n" +
  6138. " ,UpdateUserID)\n" +
  6139. "VALUES\n" +
  6140. " (\n" +
  6141. " :ScrapProductID\n" +
  6142. " ,:BarCode\n" +
  6143. " ,:StaffID\n" +
  6144. " ,:StaffStatus\n" +
  6145. " ,:UserID\n" +
  6146. " ,:UserCode\n" +
  6147. " ,:UJobsID\n" +
  6148. " ,:SJobsID\n" +
  6149. " ,:AccountID\n" +
  6150. " ,:CreateUserID\n" +
  6151. " ,:UpdateUserID)";
  6152. paras = new OracleParameter[] {
  6153. new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6154. new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6155. new OracleParameter(":StaffID",OracleDbType.Int32, row["StaffID"], ParameterDirection.Input),
  6156. new OracleParameter(":StaffStatus",OracleDbType.Int32, row["StaffStatus"], ParameterDirection.Input),
  6157. new OracleParameter(":UserID",OracleDbType.Int32, row["UserID"], ParameterDirection.Input),
  6158. new OracleParameter(":UserCode",OracleDbType.NVarchar2, row["UserCode"], ParameterDirection.Input),
  6159. new OracleParameter(":UJobsID",OracleDbType.Int32, row["UJobsId"], ParameterDirection.Input),
  6160. new OracleParameter(":SJobsID",OracleDbType.Int32, row["Jobs"], ParameterDirection.Input),
  6161. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  6162. new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6163. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6164. };
  6165. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6166. }
  6167. }
  6168. #endregion
  6169. #region 更新注浆日报明细表
  6170. sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
  6171. " SET SReasonID = :SReasonID\n" +
  6172. " ,ScrapType = :ScrapType\n" +
  6173. " ,ScrapTime = sysdate\n" +
  6174. " ,ScrapUser = :ScrapUser\n" +
  6175. " ,UpdateUserID = :UpdateUserID\n" +
  6176. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  6177. paras = new OracleParameter[] {
  6178. new OracleParameter(":SReasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
  6179. new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
  6180. //new OracleParameter(":ScrapTime",OracleDbType.Date,
  6181. // Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
  6182. new OracleParameter(":ScrapUser",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
  6183. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6184. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  6185. cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
  6186. };
  6187. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6188. #endregion
  6189. }
  6190. #endregion
  6191. #endregion
  6192. oracleTrConn.Commit();
  6193. }
  6194. catch (Exception ex)
  6195. {
  6196. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6197. {
  6198. oracleTrConn.Rollback();
  6199. oracleTrConn.Disconnect();
  6200. }
  6201. result.Result = -999;
  6202. result.Status = Constant.ServiceResultStatus.SystemError;
  6203. result.Message = "成型报损保存失败";
  6204. throw ex;
  6205. }
  6206. finally
  6207. {
  6208. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6209. {
  6210. oracleTrConn.Disconnect();
  6211. }
  6212. }
  6213. result.Result = returnRow;
  6214. return result;
  6215. }
  6216. /// <summary>
  6217. /// 审核成型报损
  6218. /// </summary>
  6219. /// <param name="cre"></param>
  6220. /// <param name="userInfo"></param>
  6221. /// <returns></returns>
  6222. public static ServiceResultEntity AuditGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
  6223. {
  6224. ServiceResultEntity result = new ServiceResultEntity();
  6225. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6226. string sqlString = string.Empty;
  6227. int returnRow = Constant.INT_IS_ZERO;
  6228. try
  6229. {
  6230. oracleTrConn.Connect();
  6231. #region 1、校验该成型报损是否是待审状态
  6232. sqlString = "SELECT 1\n" +
  6233. " FROM TP_PM_GroutingScrapProduct \n" +
  6234. " WHERE ScrapProductID = :in_ScrapProductID\n" +
  6235. " AND AuditStatus = 0";
  6236. OracleParameter[] paras = new OracleParameter[] {
  6237. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input),
  6238. };
  6239. DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  6240. // 审核状态不是待审
  6241. if (returnTable.Rows.Count == 0)
  6242. {
  6243. result.Result = -99;
  6244. return result;
  6245. }
  6246. #endregion
  6247. #region 2、审核
  6248. sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
  6249. " SET AuditStatus = :in_AuditStatus\n" +
  6250. " ,Auditor = :in_Auditor\n" +
  6251. " ,AuditDate = :in_AuditDate\n" +
  6252. " ,AuditOpinion = :in_AuditOpinion\n" +
  6253. " WHERE ScrapProductID = :in_ScrapProductID";
  6254. paras = new OracleParameter[] {
  6255. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input),
  6256. new OracleParameter(":in_AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
  6257. new OracleParameter(":in_Auditor",OracleDbType.Int32, cre.Properties["Auditor"], ParameterDirection.Input),
  6258. new OracleParameter(":in_AuditDate",OracleDbType.Date, DateTime.Now, ParameterDirection.Input),
  6259. new OracleParameter(":in_AuditOpinion",OracleDbType.NVarchar2, cre.Properties["AuditOpinion"], ParameterDirection.Input),
  6260. };
  6261. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6262. #endregion
  6263. oracleTrConn.Commit();
  6264. }
  6265. catch (Exception ex)
  6266. {
  6267. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6268. {
  6269. oracleTrConn.Rollback();
  6270. oracleTrConn.Disconnect();
  6271. }
  6272. throw ex;
  6273. }
  6274. finally
  6275. {
  6276. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6277. {
  6278. oracleTrConn.Disconnect();
  6279. }
  6280. }
  6281. result.Result = returnRow;
  6282. return result;
  6283. }
  6284. /// <summary>
  6285. /// 撤销成型报损
  6286. /// </summary>
  6287. /// <param name="cre"></param>
  6288. /// <param name="userInfo"></param>
  6289. /// <returns></returns>
  6290. public static ServiceResultEntity ReverseGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
  6291. {
  6292. ServiceResultEntity result = new ServiceResultEntity();
  6293. result.Status = Constant.ServiceResultStatus.Success;
  6294. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6295. string sqlString = string.Empty;
  6296. int returnRow = Constant.INT_IS_ZERO;
  6297. try
  6298. {
  6299. oracleTrConn.Connect();
  6300. #region 1、校验该成型报损是否是待审状态
  6301. sqlString = "SELECT SCRAPPRODUCTID\n" +
  6302. " FROM TP_PM_GroutingScrapProduct \n" +
  6303. " WHERE BackOutFlag = '0'\n" +
  6304. " AND BarCode = :in_BarCode\n";
  6305. OracleParameter[] paras = new OracleParameter[] {
  6306. new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6307. };
  6308. DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  6309. DataTable groutingTable = null;
  6310. // 该产品没有做成型报损
  6311. if (returnTable.Rows.Count == 0)
  6312. {
  6313. //xuwei add 2020-03-23 再次从注浆表查询报损状态
  6314. sqlString = @"
  6315. SELECT
  6316. GROUTINGDAILYDETAILID
  6317. FROM
  6318. TP_PM_GROUTINGDAILYDETAIL
  6319. WHERE
  6320. SCRAPFLAG = '1'
  6321. AND VALUEFLAG = '1'
  6322. AND BARCODE = :in_BarCode
  6323. ";
  6324. groutingTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  6325. if(groutingTable.Rows.Count==0)
  6326. {
  6327. result.Result = -99;
  6328. result.Status = Constant.ServiceResultStatus.SystemError;
  6329. result.Message = "此产品没有损坯或已被撤销,不能撤销";
  6330. return result;
  6331. }
  6332. }
  6333. //// 该产品已经做了撤销了
  6334. //if ("1".Equals(returnTable.Rows[0]["BackOutFlag"]))
  6335. //{
  6336. // result.Result = -100;
  6337. // result.Status = Constant.ServiceResultStatus.SystemError;
  6338. // result.Message = "此产品已经撤销";
  6339. // return result;
  6340. //}
  6341. #endregion
  6342. #region 2、撤销
  6343. //xuwei fix 2020-03-23 如果成型报损才更新
  6344. if(returnTable.Rows.Count>0)
  6345. {
  6346. sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
  6347. " SET BackOutFlag = :in_BackOutFlag\n" +
  6348. " ,BackOutTime = :in_BackOutTime\n" +
  6349. " ,BackOutUserID = :in_BackOutUserID\n" +
  6350. " ,BackOutUserCode = :in_BackOutUserCode\n" +
  6351. " WHERE SCRAPPRODUCTID = :in_ScrapProductID";
  6352. paras = new OracleParameter[] {
  6353. new OracleParameter(":in_ScrapProductID",OracleDbType.NVarchar2, returnTable.Rows[0]["SCRAPPRODUCTID"].ToString(), ParameterDirection.Input),
  6354. new OracleParameter(":in_BackOutFlag",OracleDbType.Int32, Constant.INT_IS_ONE, ParameterDirection.Input),
  6355. new OracleParameter(":in_BackOutTime",OracleDbType.Date, DateTime.Now, ParameterDirection.Input),
  6356. new OracleParameter(":in_BackOutUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6357. new OracleParameter(":in_BackOutUserCode",OracleDbType.NVarchar2, userInfo.UserCode , ParameterDirection.Input),
  6358. };
  6359. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6360. }
  6361. sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
  6362. " SET ScrapFlag = :in_ScrapFlag\n" +
  6363. " ,SReasonID = NULL\n" +
  6364. " ,ScrapType = NULL\n" +
  6365. " ,ScrapTime = NULL\n" +
  6366. " ,ScrapUser = NULL\n" +
  6367. " WHERE BarCode = :in_BarCode";
  6368. paras = new OracleParameter[] {
  6369. new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6370. new OracleParameter(":in_ScrapFlag",OracleDbType.Char, "0" , ParameterDirection.Input),
  6371. };
  6372. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6373. #endregion
  6374. oracleTrConn.Commit();
  6375. }
  6376. catch (Exception ex)
  6377. {
  6378. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6379. {
  6380. oracleTrConn.Rollback();
  6381. oracleTrConn.Disconnect();
  6382. }
  6383. result.Status = Constant.ServiceResultStatus.SystemError;
  6384. result.Message = "撤销成型报损失败";
  6385. throw ex;
  6386. }
  6387. finally
  6388. {
  6389. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6390. {
  6391. oracleTrConn.Disconnect();
  6392. }
  6393. }
  6394. result.Result = returnRow;
  6395. return result;
  6396. }
  6397. /// <summary>
  6398. /// 获取注浆日报明细表
  6399. /// </summary>
  6400. /// <param name="cre"></param>
  6401. /// <param name="userInfo"></param>
  6402. /// <returns></returns>
  6403. public static ServiceResultEntity GetGroutingDailyDetail(ClientRequestEntity cre, SUserInfo userInfo)
  6404. {
  6405. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6406. try
  6407. {
  6408. ServiceResultEntity result = new ServiceResultEntity();
  6409. con.Open();
  6410. string sqlString = "SELECT PGD.GroutingDailyDetailID\n" +
  6411. " ,PGD.GroutingDailyID\n" +
  6412. " ,PGD.GroutingLineID\n" +
  6413. " ,PGD.GroutingLineCode\n" +
  6414. " ,PGD.GroutingLineName\n" +
  6415. " ,PGD.GroutingLineDetailID\n" +
  6416. " ,PGD.GroutingDate\n" +
  6417. " ,PGD.GroutingMouldCode\n" +
  6418. " ,PGD.MouldCode\n" +
  6419. " ,PGD.GMouldTypeID\n" +
  6420. " ,PGD.CanManyTimes\n" +
  6421. " ,PGD.GroutingBatchNo\n" +
  6422. " ,PGD.UserID GroutingUserID\n" +
  6423. " ,PGD.UserCode GroutingUserCode\n" +
  6424. " ,PGD.ClassesSettingID\n" +
  6425. " ,PGD.GoodsID\n" +
  6426. " ,PGD.GoodsCode\n" +
  6427. " ,PGD.GoodsName\n" +
  6428. " ,PGD.GMouldStatus\n" +
  6429. " ,PGD.GroutingCount GroutingNum\n" +
  6430. " ,PGD.GroutingFlag\n" +
  6431. " ,PGD.BarCode\n" +
  6432. " ,PGD.OnlyCode\n" +
  6433. //" ,PGD.PrintTime\n" +
  6434. " ,PGD.NoGroutingRreason\n" +
  6435. " ,PGD.SpecialRepairFlag\n" +
  6436. " ,PGD.ScrapFlag\n" +
  6437. " ,PGD.SReasonID\n" +
  6438. " ,PGD.ScrapType\n" +
  6439. " ,PGD.ScrapTime\n" +
  6440. " ,PGD.ScrapUser\n" +
  6441. " ,PGD.IsPublicBody\n" +
  6442. " ,PGD.DeliverFlag\n" +
  6443. " ,PGD.beginningflag\n" +
  6444. " FROM TP_PM_GroutingDailyDetail PGD\n" +
  6445. " WHERE PGD.AccountID = :in_AccountID";
  6446. List<OracleParameter> paraList = new List<OracleParameter>();
  6447. paraList.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
  6448. // 产品条码
  6449. if (!string.IsNullOrWhiteSpace(cre.Properties["BarCode"] + ""))
  6450. {
  6451. sqlString += " AND PGD.BarCode = :in_BarCode ";
  6452. paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.NVarchar2, cre.Properties["BarCode"] + "", ParameterDirection.Input));
  6453. }
  6454. DataSet dsReturn = con.GetSqlResultToDs(sqlString, paraList.ToArray());
  6455. result.Data = dsReturn;
  6456. return result;
  6457. }
  6458. catch (Exception ex)
  6459. {
  6460. throw ex;
  6461. }
  6462. finally
  6463. {
  6464. if (con.ConnState == ConnectionState.Open)
  6465. {
  6466. con.Close();
  6467. }
  6468. }
  6469. }
  6470. #endregion
  6471. #region 产品挂起
  6472. /// <summary>
  6473. /// 获取可以挂起的工序(干补、装车、入窑、出窑)工序不能挂起
  6474. /// </summary>
  6475. /// <param name="user">登录用户信息</param>
  6476. /// <param name="se">查询条件</param>
  6477. /// <returns>查询结果</returns>
  6478. public static ServiceResultEntity GetSuspendProcedure(SUserInfo user)
  6479. {
  6480. IDBConnection conn = null;
  6481. try
  6482. {
  6483. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6484. conn.Open();
  6485. string sqlString = "SELECT p.procedureid, p.procedurename\n" +
  6486. " FROM tp_pc_procedure p\n" +
  6487. " INNER JOIN tp_pc_productionline line\n" +
  6488. " ON line.productionlineid = p.productionlineid\n" +
  6489. " WHERE line.valueflag = '1'\n" +
  6490. " AND p.valueflag = '1'\n" +
  6491. " AND p.NODETYPE <> '3'\n" +
  6492. //" AND p.modeltype IN (-1, 0, 4, 5, 9)\n" +
  6493. " AND p.modeltype IN (0, 4, 5, 9)\n" +
  6494. " AND p.PROCEDUREMODEL = '1'\n" +
  6495. " AND p.accountid = :accountid\n" +
  6496. " AND line.accountid = :accountid\n" +
  6497. " ORDER BY line.productionlineid, p.displayno";
  6498. IDataParameter[] paras = new OracleParameter[]
  6499. {
  6500. new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  6501. };
  6502. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  6503. ServiceResultEntity sre = new ServiceResultEntity();
  6504. sre.Data = data;
  6505. return sre;
  6506. }
  6507. catch (Exception ex)
  6508. {
  6509. throw ex;
  6510. }
  6511. finally
  6512. {
  6513. if (conn != null &&
  6514. conn.ConnState == ConnectionState.Open)
  6515. {
  6516. conn.Close();
  6517. }
  6518. }
  6519. }
  6520. /// <summary>
  6521. /// 验证挂起条码
  6522. /// </summary>
  6523. /// <param name="user">登录用户信息</param>
  6524. /// <param name="se">查询条件</param>
  6525. /// <returns>查询结果</returns>
  6526. public static ServiceResultEntity CheckSuspendBarcode(SUserInfo user, string barcode)
  6527. {
  6528. IDBConnection conn = null;
  6529. try
  6530. {
  6531. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6532. conn.Open();
  6533. string sqlString = "SELECT 1 AS SEL, gdd.groutingdailydetailid\n" +
  6534. " ,gdd.barcode\n" +
  6535. " ,gdd.groutingmouldcode\n" +
  6536. " ,gdd.groutingdate\n" +
  6537. " ,gdd.goodscode\n" +
  6538. " ,gdd.usercode\n" +
  6539. " ,gdd.scrapflag\n" +
  6540. " ,gdd.deliverflag\n" +
  6541. " ,inp.procedureid\n" +
  6542. " ,p.procedurename\n" +
  6543. " FROM tp_pm_groutingdailydetail gdd\n" +
  6544. " LEFT JOIN tp_pm_inproduction inp\n" +
  6545. " ON inp.barcode = gdd.barcode\n" +
  6546. " LEFT JOIN tp_pc_procedure p\n" +
  6547. " ON p.procedureid = inp.procedureid\n" +
  6548. " WHERE gdd.accountid = :accountid\n" +
  6549. " AND gdd.barcode = :barcode";
  6550. IDataParameter[] paras = new OracleParameter[]
  6551. {
  6552. new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  6553. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  6554. };
  6555. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  6556. ServiceResultEntity sre = new ServiceResultEntity();
  6557. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  6558. {
  6559. sre.Status = Constant.ServiceResultStatus.Other;
  6560. sre.Message = "无效条码";
  6561. return sre;
  6562. }
  6563. DataRow row = data.Tables[0].Rows[0];
  6564. if (row["scrapflag"] + "" == "1" || (row["deliverflag"] + "" == "1" && row["procedureid"] + "" == ""))
  6565. {
  6566. sre.Status = Constant.ServiceResultStatus.Other;
  6567. sre.Message = "此条码不是在产产品";
  6568. return sre;
  6569. }
  6570. sre.Data = data;
  6571. return sre;
  6572. }
  6573. catch (Exception ex)
  6574. {
  6575. throw ex;
  6576. }
  6577. finally
  6578. {
  6579. if (conn != null &&
  6580. conn.ConnState == ConnectionState.Open)
  6581. {
  6582. conn.Close();
  6583. }
  6584. }
  6585. }
  6586. /// <summary>
  6587. /// 保存条码挂起
  6588. /// </summary>
  6589. /// <param name="user">登录用户信息</param>
  6590. /// <param name="se">查询条件</param>
  6591. /// <returns>查询结果</returns>
  6592. public static ServiceResultEntity SaveSuspendProduct(SUserInfo user, int[] procedureids, int[] groutingdailydetailids, string remarks)
  6593. {
  6594. IDBTransaction conn = null;
  6595. try
  6596. {
  6597. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6598. string suspendBatchNo = Guid.NewGuid().ToString().ToUpper();
  6599. string sqlDelete = "DELETE FROM TP_PM_ProductSuspend ps\n" +
  6600. " WHERE ps.groutingdailydetailid = :groutingdailydetailid\n" +
  6601. " AND ps.suspendprocedureid = :suspendprocedureid";
  6602. string sqlUpdateRecord = "update TP_PM_ProductSuspendRecord r set RevokeTime=sysdate, RevokeUserID=" + user.UserID +
  6603. " WHERE RevokeUserID is null and r.groutingdailydetailid = :groutingdailydetailid\n" +
  6604. " AND r.suspendprocedureid = :suspendprocedureid";
  6605. string sqlInsert = "INSERT INTO TP_PM_PRODUCTSUSPEND\n" +
  6606. " (GROUTINGDAILYDETAILID\n" +
  6607. " ,SUSPENDPROCEDUREID\n" +
  6608. " ,REMARKS\n" +
  6609. " ,SUSPENDBATCHNO\n" +
  6610. " ,ACCOUNTID\n" +
  6611. " ,CREATEUSERID)\n" +
  6612. "VALUES\n" +
  6613. " (:GROUTINGDAILYDETAILID\n" +
  6614. " ,:SUSPENDPROCEDUREID\n" +
  6615. " ,:REMARKS\n" +
  6616. " ,:SUSPENDBATCHNO\n" +
  6617. " ,:ACCOUNTID\n" +
  6618. " ,:CREATEUSERID)";
  6619. string sqlInsertRecord = "INSERT INTO TP_PM_PRODUCTSUSPENDRecord\n" +
  6620. " (GROUTINGDAILYDETAILID\n" +
  6621. " ,SUSPENDPROCEDUREID\n" +
  6622. " ,REMARKS\n" +
  6623. " ,SUSPENDBATCHNO\n" +
  6624. " ,ACCOUNTID\n" +
  6625. " ,CREATEUSERID)\n" +
  6626. "VALUES\n" +
  6627. " (:GROUTINGDAILYDETAILID\n" +
  6628. " ,:SUSPENDPROCEDUREID\n" +
  6629. " ,:REMARKS\n" +
  6630. " ,:SUSPENDBATCHNO\n" +
  6631. " ,:ACCOUNTID\n" +
  6632. " ,:CREATEUSERID)";
  6633. foreach (int procedureid in procedureids)
  6634. {
  6635. foreach (int groutingdailydetailid in groutingdailydetailids)
  6636. {
  6637. IDataParameter[] deleteParas = new OracleParameter[]
  6638. {
  6639. new OracleParameter(":groutingdailydetailid", OracleDbType.Int32,groutingdailydetailid, ParameterDirection.Input),
  6640. new OracleParameter(":suspendprocedureid", OracleDbType.Int32,procedureid, ParameterDirection.Input),
  6641. };
  6642. conn.ExecuteNonQuery(sqlDelete, deleteParas);
  6643. conn.ExecuteNonQuery(sqlUpdateRecord, deleteParas);
  6644. IDataParameter[] insertParas = new OracleParameter[]
  6645. {
  6646. new OracleParameter(":GROUTINGDAILYDETAILID", OracleDbType.Int32,groutingdailydetailid, ParameterDirection.Input),
  6647. new OracleParameter(":SUSPENDPROCEDUREID", OracleDbType.Int32,procedureid, ParameterDirection.Input),
  6648. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,remarks, ParameterDirection.Input),
  6649. new OracleParameter(":SUSPENDBATCHNO", OracleDbType.Varchar2,suspendBatchNo, ParameterDirection.Input),
  6650. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  6651. new OracleParameter(":CREATEUSERID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  6652. };
  6653. conn.ExecuteNonQuery(sqlInsert, insertParas);
  6654. conn.ExecuteNonQuery(sqlInsertRecord, insertParas);
  6655. }
  6656. }
  6657. conn.Commit();
  6658. conn.Disconnect();
  6659. return new ServiceResultEntity();
  6660. }
  6661. catch (Exception ex)
  6662. {
  6663. throw ex;
  6664. }
  6665. finally
  6666. {
  6667. if (conn != null &&
  6668. conn.ConnState == ConnectionState.Open)
  6669. {
  6670. conn.Disconnect();
  6671. }
  6672. }
  6673. }
  6674. /// <summary>
  6675. /// 查询挂起条码
  6676. /// </summary>
  6677. /// <param name="user">登录用户信息</param>
  6678. /// <param name="se">查询条件</param>
  6679. /// <returns>查询结果</returns>
  6680. public static ServiceResultEntity GetSuspendProduct(SUserInfo user, string barcode)
  6681. {
  6682. IDBConnection conn = null;
  6683. try
  6684. {
  6685. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6686. conn.Open();
  6687. string sqlString = "SELECT 0 AS SEL, gdd.barcode\n" +
  6688. " ,gdd.groutingmouldcode\n" +
  6689. " ,gdd.groutingdate\n" +
  6690. " ,gdd.goodscode\n" +
  6691. " ,gdd.usercode\n" +
  6692. " ,ps.groutingdailydetailid\n" +
  6693. " ,ps.suspendprocedureid\n" +
  6694. " ,sp.procedurename suspendprocedurename\n" +
  6695. " ,ps.remarks\n" +
  6696. " ,ps.Createtime\n" +
  6697. " ,u.usercode CREATEUSERCode\n" +
  6698. " ,case when gdd.scrapflag = '1' then '成型损坯'" +
  6699. " when gdd.deliverflag = '0' then '注浆' " +
  6700. " when inp.barcode is not null then to_char(p.procedurename) " +
  6701. " when spp.barcode is not null then to_char(glt.goodsleveltypename) " +
  6702. " when fp.barcode is not null then '生产完成' else '' end procedurename -- 当前工序\n" +
  6703. " FROM TP_PM_ProductSuspend ps\n" +
  6704. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  6705. " ON gdd.groutingdailydetailid = ps.groutingdailydetailid\n" +
  6706. " INNER JOIN tp_pc_procedure sp\n" +
  6707. " ON ps.suspendprocedureid = sp.procedureid\n" +
  6708. " INNER JOIN tp_mst_user u\n" +
  6709. " ON u.userid = ps.CREATEUSERID\n" +
  6710. // 在产工序
  6711. " LEFT JOIN tp_pm_inproduction inp \n" +
  6712. " ON gdd.deliverflag = '1' and inp.barcode = gdd.barcode\n" +
  6713. " LEFT JOIN tp_pc_procedure p \n" +
  6714. " ON p.procedureid = inp.procedureid\n" +
  6715. // 完成
  6716. " LEFT JOIN tp_pm_finishedproduct fp \n" +
  6717. " ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode = gdd.barcode\n" +
  6718. // 损坯
  6719. " LEFT JOIN tp_pm_scrapproduct spp \n" +
  6720. " ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode is null and spp.barcode = gdd.barcode\n" +
  6721. " AND spp.valueflag = '1'\n" +
  6722. " AND spp.auditstatus = 1\n" +
  6723. " AND spp.goodsleveltypeid <> 9\n" +
  6724. " AND spp.RECYCLINGFLAG = '0'\n" +
  6725. " LEFT JOIN tp_sys_goodsleveltype glt \n" +
  6726. " ON glt.goodsleveltypeid = spp.goodsleveltypeid\n" +
  6727. " WHERE gdd.barcode = :barcode\n" +
  6728. " ORDER BY sp.displayno";
  6729. IDataParameter[] paras = new OracleParameter[]
  6730. {
  6731. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  6732. };
  6733. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  6734. ServiceResultEntity sre = new ServiceResultEntity();
  6735. sre.Data = data;
  6736. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  6737. {
  6738. sre.Message = "此条码没有可撤销的挂起信息";
  6739. return sre;
  6740. }
  6741. return sre;
  6742. }
  6743. catch (Exception ex)
  6744. {
  6745. throw ex;
  6746. }
  6747. finally
  6748. {
  6749. if (conn != null &&
  6750. conn.ConnState == ConnectionState.Open)
  6751. {
  6752. conn.Close();
  6753. }
  6754. }
  6755. }
  6756. /// <summary>
  6757. /// 撤销条码挂起
  6758. /// </summary>
  6759. /// <param name="user">登录用户信息</param>
  6760. /// <param name="se">查询条件</param>
  6761. /// <returns>查询结果</returns>
  6762. public static ServiceResultEntity DeleteSuspendProduct(SUserInfo user, int[] procedureids, int[] groutingdailydetailids)
  6763. {
  6764. IDBTransaction conn = null;
  6765. try
  6766. {
  6767. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6768. string suspendBatchNo = Guid.NewGuid().ToString().ToUpper();
  6769. string sqlDelete = "DELETE FROM TP_PM_ProductSuspend ps\n" +
  6770. " WHERE ps.groutingdailydetailid = :groutingdailydetailid\n" +
  6771. " AND ps.suspendprocedureid = :suspendprocedureid";
  6772. string sqlUpdateRecord = "update TP_PM_ProductSuspendRecord r set RevokeTime=sysdate, RevokeUserID=" + user.UserID +
  6773. " WHERE RevokeUserID is null and r.groutingdailydetailid = :groutingdailydetailid\n" +
  6774. " AND r.suspendprocedureid = :suspendprocedureid";
  6775. for (int i = 0; i < procedureids.Length; i++)
  6776. {
  6777. IDataParameter[] deleteParas = new OracleParameter[]
  6778. {
  6779. new OracleParameter(":groutingdailydetailid", OracleDbType.Int32,groutingdailydetailids[i], ParameterDirection.Input),
  6780. new OracleParameter(":suspendprocedureid", OracleDbType.Int32,procedureids[i], ParameterDirection.Input),
  6781. };
  6782. conn.ExecuteNonQuery(sqlDelete, deleteParas);
  6783. conn.ExecuteNonQuery(sqlUpdateRecord, deleteParas);
  6784. }
  6785. conn.Commit();
  6786. conn.Disconnect();
  6787. return new ServiceResultEntity();
  6788. }
  6789. catch (Exception ex)
  6790. {
  6791. throw ex;
  6792. }
  6793. finally
  6794. {
  6795. if (conn != null &&
  6796. conn.ConnState == ConnectionState.Open)
  6797. {
  6798. conn.Disconnect();
  6799. }
  6800. }
  6801. }
  6802. /// <summary>
  6803. /// 查询挂起条码
  6804. /// </summary>
  6805. /// <param name="user">登录用户信息</param>
  6806. /// <param name="se">查询条件</param>
  6807. /// <returns>查询结果</returns>
  6808. public static ServiceResultEntity GetAllSuspendProduct(SUserInfo user, ClientRequestEntity cre)
  6809. {
  6810. IDBConnection conn = null;
  6811. try
  6812. {
  6813. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6814. conn.Open();
  6815. //string sqlString = "SELECT gdd.barcode\n" +
  6816. //" ,gdd.groutingmouldcode\n" +
  6817. //" ,gdd.groutingdate\n" +
  6818. //" ,gdd.goodscode\n" +
  6819. //" ,gdd.usercode GroutingUserCode\n" +
  6820. //" ,ps.groutingdailydetailid\n" +
  6821. //" ,ps.suspendprocedureid\n" +
  6822. //" ,sp.procedurename suspendprocedurename\n" +
  6823. //" ,ps.remarks\n" +
  6824. //" ,ps.Createtime\n" +
  6825. //" ,u.usercode CREATEUSERCode\n" +
  6826. //" ,case when gdd.scrapflag = '1' then '成型损坯'" +
  6827. //" when gdd.deliverflag = '0' then '注浆' " +
  6828. //" when inp.barcode is not null then to_char(p.procedurename) " +
  6829. //" when spp.barcode is not null then to_char(glt.goodsleveltypename) " +
  6830. //" when fp.barcode is not null then '生产完成' else '' end procedurename\n" + // 当前工序
  6831. //" FROM TP_PM_ProductSuspend ps\n" +
  6832. //" INNER JOIN tp_pc_procedure sp\n" +
  6833. //" ON ps.suspendprocedureid = sp.procedureid\n" +
  6834. //" INNER JOIN tp_mst_user u\n" +
  6835. //" ON u.userid = ps.CREATEUSERID\n" +
  6836. //" INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  6837. //" ON gdd.groutingdailydetailid = ps.groutingdailydetailid\n" +
  6838. //// 在产工序
  6839. //" LEFT JOIN tp_pm_inproduction inp \n" +
  6840. //" ON gdd.deliverflag = '1' and inp.barcode = gdd.barcode\n" +
  6841. //" LEFT JOIN tp_pc_procedure p \n" +
  6842. //" ON p.procedureid = inp.procedureid\n" +
  6843. // // 完成
  6844. //" LEFT JOIN tp_pm_finishedproduct fp \n" +
  6845. //" ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode = gdd.barcode\n" +
  6846. // // 损坯
  6847. //" LEFT JOIN tp_pm_scrapproduct spp \n" +
  6848. //" ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode is null and spp.barcode = gdd.barcode\n" +
  6849. //" AND spp.valueflag = '1'\n" +
  6850. //" AND spp.auditstatus = 1\n" +
  6851. //" AND spp.goodsleveltypeid <> 9\n" +
  6852. //" AND spp.RECYCLINGFLAG = '0'\n" +
  6853. //" LEFT JOIN tp_sys_goodsleveltype glt \n" +
  6854. //" ON glt.goodsleveltypeid = spp.goodsleveltypeid\n" +
  6855. //" WHERE (:barcode is null or instr(gdd.barcode, :barcode) > 0)\n" +
  6856. //" AND (:remarks is null or instr(ps.remarks, :remarks) > 0)\n" +
  6857. //" AND (:datefrom is null or ps.createtime >= :datefrom)\n" +
  6858. //" AND (:dateend is null or ps.createtime <= :dateend)\n" +
  6859. //" ORDER BY gdd.barcode, sp.displayno ";
  6860. string sqlString = "SELECT GDD.BARCODE,\n" +
  6861. " GDD.GROUTINGMOULDCODE,\n" +
  6862. " GDD.GROUTINGDATE,\n" +
  6863. " GDD.GOODSCODE,\n" +
  6864. " GDD.USERCODE GROUTINGUSERCODE,\n" +
  6865. " PSR.GROUTINGDAILYDETAILID,\n" +
  6866. " PSR.SUSPENDPROCEDUREID,\n" +
  6867. " SP.PROCEDURENAME SUSPENDPROCEDURENAME,\n" +
  6868. " PSR.REMARKS,\n" +
  6869. " PSR.CREATETIME,\n" +
  6870. " U.USERCODE CREATEUSERCODE,\n" +
  6871. " CASE\n" +
  6872. " WHEN GDD.SCRAPFLAG = '1' THEN\n" +
  6873. " '成型损坯'\n" +
  6874. " WHEN GDD.DELIVERFLAG = '0' THEN\n" +
  6875. " '注浆'\n" +
  6876. " WHEN INP.BARCODE IS NOT NULL THEN\n" +
  6877. " TO_CHAR(P.PROCEDURENAME)\n" +
  6878. " WHEN SPP.BARCODE IS NOT NULL THEN\n" +
  6879. " TO_CHAR(GLT.GOODSLEVELTYPENAME)\n" +
  6880. " WHEN FP.BARCODE IS NOT NULL THEN\n" +
  6881. " '生产完成'\n" +
  6882. " ELSE\n" +
  6883. " ''\n" +
  6884. " END PROCEDURENAME,\n" +
  6885. " TO_CHAR(PSR.REVOKETIME, 'yyyy-mm-dd hh24:mi:ss') AS REVOKETIME,\n" +
  6886. " REVOKEUSER.USERCODE REVOKEUSERCODE\n" +
  6887. " FROM TP_PM_PRODUCTSUSPENDRECORD PSR\n" +
  6888. " INNER JOIN TP_PC_PROCEDURE SP\n" +
  6889. " ON PSR.SUSPENDPROCEDUREID = SP.PROCEDUREID\n" +
  6890. " INNER JOIN TP_MST_USER U\n" +
  6891. " ON U.USERID = PSR.CREATEUSERID\n" +
  6892. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  6893. " ON GDD.GROUTINGDAILYDETAILID = PSR.GROUTINGDAILYDETAILID\n" +
  6894. " LEFT JOIN TP_PM_INPRODUCTION INP\n" +
  6895. " ON GDD.DELIVERFLAG = '1'\n" +
  6896. " AND INP.BARCODE = GDD.BARCODE\n" +
  6897. " LEFT JOIN TP_PC_PROCEDURE P\n" +
  6898. " ON P.PROCEDUREID = INP.PROCEDUREID\n" +
  6899. " LEFT JOIN TP_PM_FINISHEDPRODUCT FP\n" +
  6900. " ON GDD.DELIVERFLAG = '1'\n" +
  6901. " AND INP.BARCODE IS NULL\n" +
  6902. " AND FP.BARCODE = GDD.BARCODE\n" +
  6903. " LEFT JOIN TP_PM_SCRAPPRODUCT SPP\n" +
  6904. " ON GDD.DELIVERFLAG = '1'\n" +
  6905. " AND INP.BARCODE IS NULL\n" +
  6906. " AND FP.BARCODE IS NULL\n" +
  6907. " AND SPP.BARCODE = GDD.BARCODE\n" +
  6908. " AND SPP.VALUEFLAG = '1'\n" +
  6909. " AND SPP.AUDITSTATUS = 1\n" +
  6910. " AND SPP.GOODSLEVELTYPEID <> 9\n" +
  6911. " AND SPP.RECYCLINGFLAG = '0'\n" +
  6912. " LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT\n" +
  6913. " ON GLT.GOODSLEVELTYPEID = SPP.GOODSLEVELTYPEID\n" +
  6914. " LEFT JOIN TP_MST_USER REVOKEUSER\n" +
  6915. " ON PSR.REVOKEUSERID = REVOKEUSER.USERID\n" +
  6916. " WHERE (:barcode IS NULL OR INSTR(GDD.BARCODE, :barcode) > 0)\n" +
  6917. " AND (:remarks IS NULL OR INSTR(PSR.REMARKS, :remarks) > 0)\n" +
  6918. " AND (:datefrom IS NULL OR PSR.CREATETIME >= :datefrom)\n" +
  6919. " AND (:dateend is null or psr.createtime <= :dateend)\n" +
  6920. " ORDER BY GDD.BARCODE, SP.DISPLAYNO";
  6921. IDataParameter[] paras = new OracleParameter[]
  6922. {
  6923. new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input),
  6924. new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input),
  6925. new OracleParameter(":datefrom", OracleDbType.Date, cre.Properties["datefrom"], ParameterDirection.Input),
  6926. new OracleParameter(":dateend", OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  6927. };
  6928. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  6929. ServiceResultEntity sre = new ServiceResultEntity();
  6930. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  6931. {
  6932. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  6933. }
  6934. sre.Data = data;
  6935. return sre;
  6936. }
  6937. catch (Exception ex)
  6938. {
  6939. throw ex;
  6940. }
  6941. finally
  6942. {
  6943. if (conn != null &&
  6944. conn.ConnState == ConnectionState.Open)
  6945. {
  6946. conn.Close();
  6947. }
  6948. }
  6949. }
  6950. #endregion
  6951. #region 品保抽查
  6952. /// <summary>
  6953. /// 验证品保抽查条码
  6954. /// </summary>
  6955. /// <param name="user">登录用户信息</param>
  6956. /// <param name="se">查询条件</param>
  6957. /// <returns>查询结果</returns>
  6958. public static ServiceResultEntity CheckQASpotCheck(SUserInfo user, string barcode)
  6959. {
  6960. IDBConnection conn = null;
  6961. try
  6962. {
  6963. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6964. conn.Open();
  6965. string sqlString = "SELECT gdd.groutingdailydetailid\n" +
  6966. " ,gdd.barcode\n" +
  6967. " ,gdd.groutingmouldcode\n" +
  6968. " ,gdd.groutingdate\n" +
  6969. " ,gdd.goodscode\n" +
  6970. " ,gdd.usercode\n" +
  6971. //" ,gdd.scrapflag\n" +
  6972. //" ,gdd.deliverflag\n" +
  6973. // -1:未交坯 -2:生产完成 -3:成品交接 >0:在产工序ID
  6974. " ,case when gdd.deliverflag='0' then -1 \n" +
  6975. " when fp.FHUserID is not null then -3 \n" +
  6976. " when fp.barcode is not null then -2 \n" +
  6977. " when inp.barcode is null then -4 \n" +
  6978. " else inp.procedureid end procedureid \n" +
  6979. " ,case when gdd.deliverflag='0' then '未交坯' \n" +
  6980. " when fp.FHUserID is not null then '成品交接' \n" +
  6981. " when fp.barcode is not null then '生产完成' \n" +
  6982. " when inp.barcode is null then '损坯' \n" +
  6983. " else to_char(p.procedurename) end procedurename \n" +
  6984. " ,sysdate CheckTime \n" +
  6985. " FROM tp_pm_groutingdailydetail gdd\n" +
  6986. " LEFT JOIN tp_pm_inproduction inp\n" +
  6987. " ON inp.barcode = gdd.barcode\n" +
  6988. " LEFT JOIN tp_pc_procedure p\n" +
  6989. " ON p.procedureid = inp.procedureid\n" +
  6990. " LEFT JOIN TP_PM_FinishedProduct fp\n" +
  6991. " ON fp.barcode = gdd.barcode\n" +
  6992. " WHERE gdd.accountid = :accountid\n" +
  6993. " AND gdd.barcode = :barcode";
  6994. IDataParameter[] paras = new OracleParameter[]
  6995. {
  6996. new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  6997. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  6998. };
  6999. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7000. ServiceResultEntity sre = new ServiceResultEntity();
  7001. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7002. {
  7003. sre.Status = Constant.ServiceResultStatus.Other;
  7004. sre.Message = "此条码为无效条码";
  7005. return sre;
  7006. }
  7007. sre.Data = data;
  7008. return sre;
  7009. }
  7010. catch (Exception ex)
  7011. {
  7012. throw ex;
  7013. }
  7014. finally
  7015. {
  7016. if (conn != null &&
  7017. conn.ConnState == ConnectionState.Open)
  7018. {
  7019. conn.Close();
  7020. }
  7021. }
  7022. }
  7023. /// <summary>
  7024. /// 保存品保抽查
  7025. /// </summary>
  7026. /// <param name="user">登录用户信息</param>
  7027. /// <param name="se">查询条件</param>
  7028. /// <returns>查询结果</returns>
  7029. public static ServiceResultEntity SaveQASpotCheck(SUserInfo user, Dictionary<string, object> data)
  7030. {
  7031. if (data == null || data.Count == 0)
  7032. {
  7033. return new ServiceResultEntity();
  7034. }
  7035. IDBTransaction conn = null;
  7036. try
  7037. {
  7038. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7039. string sqlInsert = "INSERT INTO TP_PM_QASpotCheck\n" +
  7040. " (GroutingDailyDetailID\n" +
  7041. " ,Remarks\n" +
  7042. " ,ProcedureID\n" +
  7043. " ,ProcedureName\n" +
  7044. " ,CheckTime\n" +
  7045. " ,AccountID\n" +
  7046. " ,CreateUserID)\n" +
  7047. "VALUES\n" +
  7048. " (:GroutingDailyDetailID\n" +
  7049. " ,:Remarks\n" +
  7050. " ,:ProcedureID\n" +
  7051. " ,:ProcedureName\n" +
  7052. " ,:CheckTime\n" +
  7053. " ,:AccountID\n" +
  7054. " ,:CreateUserID)";
  7055. IDataParameter[] insertParas = new OracleParameter[]
  7056. {
  7057. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32,data["GroutingDailyDetailID"], ParameterDirection.Input),
  7058. new OracleParameter(":Remarks", OracleDbType.NVarchar2,data["Remarks"], ParameterDirection.Input),
  7059. new OracleParameter(":ProcedureID", OracleDbType.Int32,data["ProcedureID"], ParameterDirection.Input),
  7060. new OracleParameter(":ProcedureName", OracleDbType.NVarchar2,data["ProcedureName"], ParameterDirection.Input),
  7061. new OracleParameter(":CheckTime", OracleDbType.Date,data["CheckTime"], ParameterDirection.Input),
  7062. new OracleParameter(":AccountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7063. new OracleParameter(":CreateUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  7064. };
  7065. conn.ExecuteNonQuery(sqlInsert, insertParas);
  7066. conn.Commit();
  7067. return new ServiceResultEntity();
  7068. }
  7069. catch (Exception ex)
  7070. {
  7071. throw ex;
  7072. }
  7073. finally
  7074. {
  7075. if (conn != null &&
  7076. conn.ConnState == ConnectionState.Open)
  7077. {
  7078. conn.Disconnect();
  7079. }
  7080. }
  7081. }
  7082. /// <summary>
  7083. /// 自动保存品保抽查
  7084. /// </summary>
  7085. /// <param name="user"></param>
  7086. /// <param name="barcode"></param>
  7087. /// <param name="remarks"></param>
  7088. /// <returns></returns>
  7089. public static ServiceResultEntity AutoSaveQASpotCheck(SUserInfo user, string barcode, string remarks)
  7090. {
  7091. IDBTransaction conn = null;
  7092. try
  7093. {
  7094. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7095. string sqlString = "SELECT gdd.groutingdailydetailid\n" +
  7096. " ,gdd.barcode\n" +
  7097. " ,gdd.groutingmouldcode\n" +
  7098. " ,gdd.groutingdate\n" +
  7099. " ,gdd.goodscode\n" +
  7100. " ,gdd.usercode\n" +
  7101. //" ,gdd.scrapflag\n" +
  7102. //" ,gdd.deliverflag\n" +
  7103. // -1:未交坯 -2:生产完成 -3:成品交接 >0:在产工序ID
  7104. " ,case when gdd.deliverflag='0' then -1 \n" +
  7105. " when fp.FHUserID is not null then -3 \n" +
  7106. " when fp.barcode is not null then -2 \n" +
  7107. " when inp.barcode is null then -4 \n" +
  7108. " else inp.procedureid end procedureid \n" +
  7109. " ,case when gdd.deliverflag='0' then '未交坯' \n" +
  7110. " when fp.FHUserID is not null then '成品交接' \n" +
  7111. " when fp.barcode is not null then '生产完成' \n" +
  7112. " when inp.barcode is null then '损坯' \n" +
  7113. " else to_char(p.procedurename) end procedurename \n" +
  7114. " ,sysdate CheckTime \n" +
  7115. " FROM tp_pm_groutingdailydetail gdd\n" +
  7116. " LEFT JOIN tp_pm_inproduction inp\n" +
  7117. " ON inp.barcode = gdd.barcode\n" +
  7118. " LEFT JOIN tp_pc_procedure p\n" +
  7119. " ON p.procedureid = inp.procedureid\n" +
  7120. " LEFT JOIN TP_PM_FinishedProduct fp\n" +
  7121. " ON fp.barcode = gdd.barcode\n" +
  7122. " WHERE gdd.accountid = :accountid\n" +
  7123. " AND gdd.barcode = :barcode";
  7124. IDataParameter[] paras = new OracleParameter[]
  7125. {
  7126. new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7127. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  7128. };
  7129. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7130. ServiceResultEntity sre = new ServiceResultEntity();
  7131. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7132. {
  7133. sre.Status = Constant.ServiceResultStatus.Other;
  7134. sre.Message = "此条码为无效条码";
  7135. return sre;
  7136. }
  7137. string sqlInsert = "INSERT INTO TP_PM_QASpotCheck\n" +
  7138. " (GroutingDailyDetailID\n" +
  7139. " ,Remarks\n" +
  7140. " ,ProcedureID\n" +
  7141. " ,ProcedureName\n" +
  7142. " ,CheckTime\n" +
  7143. " ,AccountID\n" +
  7144. " ,CreateUserID)\n" +
  7145. "VALUES\n" +
  7146. " (:GroutingDailyDetailID\n" +
  7147. " ,:Remarks\n" +
  7148. " ,:ProcedureID\n" +
  7149. " ,:ProcedureName\n" +
  7150. " ,:CheckTime\n" +
  7151. " ,:AccountID\n" +
  7152. " ,:CreateUserID)";
  7153. IDataParameter[] insertParas = new OracleParameter[]
  7154. {
  7155. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32,data.Tables[0].Rows[0]["GroutingDailyDetailID"], ParameterDirection.Input),
  7156. new OracleParameter(":Remarks", OracleDbType.NVarchar2,remarks, ParameterDirection.Input),
  7157. new OracleParameter(":ProcedureID", OracleDbType.Int32,data.Tables[0].Rows[0]["ProcedureID"], ParameterDirection.Input),
  7158. new OracleParameter(":ProcedureName", OracleDbType.NVarchar2,data.Tables[0].Rows[0]["ProcedureName"], ParameterDirection.Input),
  7159. new OracleParameter(":CheckTime", OracleDbType.Date,data.Tables[0].Rows[0]["CheckTime"], ParameterDirection.Input),
  7160. new OracleParameter(":AccountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7161. new OracleParameter(":CreateUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  7162. };
  7163. conn.ExecuteNonQuery(sqlInsert, insertParas);
  7164. conn.Commit();
  7165. sre.Data = data;
  7166. return sre;
  7167. }
  7168. catch (Exception ex)
  7169. {
  7170. throw ex;
  7171. }
  7172. finally
  7173. {
  7174. if (conn != null &&
  7175. conn.ConnState == ConnectionState.Open)
  7176. {
  7177. conn.Disconnect();
  7178. }
  7179. }
  7180. }
  7181. /// <summary>
  7182. /// 查询品保抽查
  7183. /// </summary>
  7184. /// <param name="user">登录用户信息</param>
  7185. /// <param name="se">查询条件</param>
  7186. /// <returns>查询结果</returns>
  7187. public static ServiceResultEntity GetAllQASpotCheck(SUserInfo user, ClientRequestEntity cre)
  7188. {
  7189. IDBConnection conn = null;
  7190. try
  7191. {
  7192. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7193. conn.Open();
  7194. string sqlString = "select gdd.barcode\n" +
  7195. " ,gdd.goodscode\n" +
  7196. " ,gdd.GroutingDate\n" +
  7197. " ,gdd.usercode GroutingUserCode\n" +
  7198. " ,gdd.GroutingMouldCode\n" +
  7199. " ,u.usercode checkusercode\n" +
  7200. " ,qa.ProcedureName\n" +
  7201. " ,qa.checktime\n" +
  7202. " ,qa.remarks\n" +
  7203. " from TP_PM_QASPOTCHECK qa\n" +
  7204. " inner join tp_pm_groutingdailydetail gdd\n" +
  7205. " on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
  7206. " inner join tp_mst_user u\n" +
  7207. " on u.userid = qa.createuserid\n" +
  7208. " where qa.valueflag = '1'\n";
  7209. List<OracleParameter> paras = new List<OracleParameter>();
  7210. if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
  7211. {
  7212. sqlString += " and instr(gdd.barcode, :barcode) > 0\n";
  7213. paras.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input));
  7214. }
  7215. if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
  7216. {
  7217. sqlString += " and instr(gdd.goodscode, :goodscode) > 0\n";
  7218. paras.Add(new OracleParameter(":goodscode", OracleDbType.NVarchar2, cre.Properties["goodscode"], ParameterDirection.Input));
  7219. }
  7220. if (!string.IsNullOrEmpty(cre.Properties["usercode"] + ""))
  7221. {
  7222. sqlString += " and instr(u.usercode, :usercode) > 0\n";
  7223. paras.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, cre.Properties["usercode"], ParameterDirection.Input));
  7224. }
  7225. if (!string.IsNullOrEmpty(cre.Properties["remarks"] + ""))
  7226. {
  7227. sqlString += " and instr(qa.remarks, :remarks) > 0\n";
  7228. paras.Add(new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input));
  7229. }
  7230. if (cre.Properties["checktimebegin"] != null)
  7231. {
  7232. sqlString += " and qa.checktime >= :checktimebegin\n";
  7233. paras.Add(new OracleParameter(":checktimebegin", OracleDbType.Date, cre.Properties["checktimebegin"], ParameterDirection.Input));
  7234. }
  7235. if (cre.Properties["checktimeend"] != null)
  7236. {
  7237. sqlString += " and qa.checktime < :checktimeend\n";
  7238. paras.Add(new OracleParameter(":checktimeend", OracleDbType.Date, cre.Properties["checktimeend"], ParameterDirection.Input));
  7239. }
  7240. sqlString += " ORDER BY gdd.barcode, qa.checktime ";
  7241. DataSet data = conn.GetSqlResultToDs(sqlString, paras.ToArray());
  7242. ServiceResultEntity sre = new ServiceResultEntity();
  7243. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7244. {
  7245. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7246. }
  7247. sre.Data = data;
  7248. return sre;
  7249. }
  7250. catch (Exception ex)
  7251. {
  7252. throw ex;
  7253. }
  7254. finally
  7255. {
  7256. if (conn != null &&
  7257. conn.ConnState == ConnectionState.Open)
  7258. {
  7259. conn.Close();
  7260. }
  7261. }
  7262. }
  7263. /// <summary>
  7264. /// 查询品保抽查
  7265. /// </summary>
  7266. /// <param name="user">登录用户信息</param>
  7267. /// <param name="se">查询条件</param>
  7268. /// <returns>查询结果</returns>
  7269. public static ServiceResultEntity GetAllQASpotCheckForPC(SUserInfo user, ClientRequestEntity cre)
  7270. {
  7271. IDBConnection conn = null;
  7272. try
  7273. {
  7274. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7275. conn.Open();
  7276. //string sqlString = "select gdd.barcode,\n" +
  7277. //" gdd.goodscode,\n" +
  7278. //" gdd.GroutingDate,\n" +
  7279. //" gdd.usercode GroutingUserCode,\n" +
  7280. //" gdd.GroutingMouldCode,\n" +
  7281. //" u.usercode checkusercode,\n" +
  7282. //" qa.ProcedureName,\n" +
  7283. //" qa.checktime,\n" +
  7284. //" qa.remarks,\n" +
  7285. //" inpp.procedurename currprocedurename,\n" +
  7286. //" listagg(decode(d.productiondefectid,\n" +
  7287. //" null,\n" +
  7288. //" null,\n" +
  7289. //" '[' || to_char(d.defectcode) || ']' ||\n" +
  7290. //" to_char(d.defectname)),\n" +
  7291. //" ',') WITHIN GROUP(ORDER BY d.productiondefectid) defectcodes,\n" +
  7292. //" (select listagg('[' || to_char(dd.defectcode) || ']' ||\n" +
  7293. //" to_char(dd.defectname),\n" +
  7294. //" ',') WITHIN GROUP(ORDER BY dd.productiondefectid)\n" +
  7295. //" from tp_pm_defect dd\n" +
  7296. //" where dd.valueflag = '1'\n" +
  7297. //" and dd.barcode = gdd.barcode) ddefectcode\n" +
  7298. //" from TP_PM_QASPOTCHECK qa\n" +
  7299. //" inner join tp_mst_user u\n" +
  7300. //" on u.userid = qa.createuserid\n" +
  7301. //" inner join tp_pm_groutingdailydetail gdd\n" +
  7302. //" on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
  7303. //" left join tp_pm_inproduction inp\n" +
  7304. //" on inp.barcode = gdd.barcode\n" +
  7305. //" left join tp_pc_procedure inpp\n" +
  7306. //" on inp.procedureid = inpp.procedureid\n" +
  7307. //" left join tp_pm_defect d\n" +
  7308. //" on d.barcode = gdd.barcode\n" +
  7309. //" and d.valueflag = '1'\n" +
  7310. //" where qa.valueflag = '1'\n" +
  7311. //" group by gdd.barcode,\n" +
  7312. //" gdd.goodscode,\n" +
  7313. //" gdd.GroutingDate,\n" +
  7314. //" gdd.usercode,\n" +
  7315. //" gdd.GroutingMouldCode,\n" +
  7316. //" u.usercode,\n" +
  7317. //" qa.ProcedureName,\n" +
  7318. //" qa.checktime,\n" +
  7319. //" qa.remarks,\n" +
  7320. //" inpp.procedurename";
  7321. string sqlString = "select gdd.barcode\n" +
  7322. " ,gdd.goodscode\n" +
  7323. " ,gdd.GroutingDate\n" +
  7324. " ,gdd.usercode GroutingUserCode\n" +
  7325. " ,gdd.GroutingMouldCode\n" +
  7326. " ,u.usercode checkusercode\n" +
  7327. " ,qa.ProcedureName\n" +
  7328. " ,qa.checktime\n" +
  7329. " ,qa.remarks\n" +
  7330. " ,inpp.procedurename currprocedurename\n" +
  7331. " ,(select listagg('[' || to_char(dd.defectcode) || ']' ||\n" +
  7332. " to_char(dd.defectname),\n" +
  7333. " ',') WITHIN GROUP(ORDER BY dd.productiondefectid)\n" +
  7334. " from tp_pm_defect dd\n" +
  7335. " where dd.valueflag = '1'\n" +
  7336. " and dd.barcode = gdd.barcode) ddefectcode\n" +
  7337. " from TP_PM_QASPOTCHECK qa\n" +
  7338. " inner join tp_pm_groutingdailydetail gdd\n" +
  7339. " on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
  7340. " inner join tp_mst_user u\n" +
  7341. " on u.userid = qa.createuserid\n" +
  7342. " left join tp_pm_inproduction inp\n" +
  7343. " on inp.barcode = gdd.barcode\n" +
  7344. " left join tp_pc_procedure inpp\n" +
  7345. " on inp.procedureid = inpp.procedureid\n" +
  7346. " where qa.valueflag = '1'\n";
  7347. List<OracleParameter> paras = new List<OracleParameter>();
  7348. if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
  7349. {
  7350. sqlString += " and instr(gdd.barcode, :barcode) > 0\n";
  7351. paras.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input));
  7352. }
  7353. if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
  7354. {
  7355. sqlString += " and instr(gdd.goodscode, :goodscode) > 0\n";
  7356. paras.Add(new OracleParameter(":goodscode", OracleDbType.NVarchar2, cre.Properties["goodscode"], ParameterDirection.Input));
  7357. }
  7358. if (!string.IsNullOrEmpty(cre.Properties["usercode"] + ""))
  7359. {
  7360. sqlString += " and instr(u.usercode, :usercode) > 0\n";
  7361. paras.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, cre.Properties["usercode"], ParameterDirection.Input));
  7362. }
  7363. if (!string.IsNullOrEmpty(cre.Properties["remarks"] + ""))
  7364. {
  7365. sqlString += " and instr(qa.remarks, :remarks) > 0\n";
  7366. paras.Add(new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input));
  7367. }
  7368. if (cre.Properties["checktimebegin"] != null)
  7369. {
  7370. sqlString += " and qa.checktime >= :checktimebegin\n";
  7371. paras.Add(new OracleParameter(":checktimebegin", OracleDbType.Date, cre.Properties["checktimebegin"], ParameterDirection.Input));
  7372. }
  7373. if (cre.Properties["checktimeend"] != null)
  7374. {
  7375. sqlString += " and qa.checktime < :checktimeend\n";
  7376. paras.Add(new OracleParameter(":checktimeend", OracleDbType.Date, cre.Properties["checktimeend"], ParameterDirection.Input));
  7377. }
  7378. sqlString += " ORDER BY gdd.barcode, qa.checktime ";
  7379. DataSet data = conn.GetSqlResultToDs(sqlString, paras.ToArray());
  7380. ServiceResultEntity sre = new ServiceResultEntity();
  7381. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7382. {
  7383. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7384. }
  7385. sre.Data = data;
  7386. return sre;
  7387. }
  7388. catch (Exception ex)
  7389. {
  7390. throw ex;
  7391. }
  7392. finally
  7393. {
  7394. if (conn != null &&
  7395. conn.ConnState == ConnectionState.Open)
  7396. {
  7397. conn.Close();
  7398. }
  7399. }
  7400. }
  7401. #endregion
  7402. #region 成品装车(潮州需求【废弃】)
  7403. /*
  7404. /// <summary>
  7405. /// 获取当天装车号
  7406. /// </summary>
  7407. /// <param name="user"></param>
  7408. /// <returns></returns>
  7409. public static int GetMaxLoadingNo(SUserInfo user)
  7410. {
  7411. IDBConnection conn = null;
  7412. try
  7413. {
  7414. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7415. conn.Open();
  7416. string sqlString = "select nvl(max(fl.loadingno), 0) + 1\n" +
  7417. " from TP_PM_FINISHEDLOADING fl\n" +
  7418. " where fl.loadingdate = :loadingdate\n" +
  7419. " and fl.valueflag = '1'\n" +
  7420. " and fl.accountid = :accountid";
  7421. IDataParameter[] paras = new OracleParameter[]
  7422. {
  7423. new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7424. new OracleParameter(":loadingdate", OracleDbType.Date, DateTime.Now.Date, ParameterDirection.Input),
  7425. };
  7426. object maxno = conn.GetSqlResultToObj(sqlString, paras);
  7427. if (maxno == null || maxno == DBNull.Value)
  7428. {
  7429. return 1;
  7430. }
  7431. else
  7432. {
  7433. return Convert.ToInt32(maxno);
  7434. }
  7435. }
  7436. catch (Exception ex)
  7437. {
  7438. throw ex;
  7439. }
  7440. finally
  7441. {
  7442. if (conn != null &&
  7443. conn.ConnState == ConnectionState.Open)
  7444. {
  7445. conn.Close();
  7446. }
  7447. }
  7448. }
  7449. /// <summary>
  7450. /// 产成品装车条码验证
  7451. /// </summary>
  7452. /// <param name="barcode"></param>
  7453. /// <param name="sUserInfo"></param>
  7454. /// <returns></returns>
  7455. public static ServiceResultEntity CheckFinishedLaodingBarcode(SUserInfo sUserInfo, string barcode)
  7456. {
  7457. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7458. try
  7459. {
  7460. oracleConn.Open();
  7461. ServiceResultEntity resultEntity = new ServiceResultEntity();
  7462. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  7463. OracleParameter[] paras1 = new OracleParameter[]{
  7464. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  7465. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  7466. };
  7467. string gbarcode = oracleConn.GetSqlResultToObj(sqlString, paras1) + "";
  7468. if (string.IsNullOrWhiteSpace(gbarcode))
  7469. {
  7470. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7471. resultEntity.OtherStatus = -1;
  7472. resultEntity.Message = "此条码不存在";
  7473. return resultEntity;
  7474. }
  7475. // 1.判断产品是否在产成品表中
  7476. sqlString = @"select f.FINISHEDLOADBATCHNO from TP_PM_FinishedProduct f where f.BarCode=:BarCode";
  7477. OracleParameter[] paras = new OracleParameter[]{
  7478. new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
  7479. };
  7480. DataTable dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7481. string FINISHEDLOADBATCHNO = null;
  7482. if (dtResult != null && dtResult.Rows.Count > 0)
  7483. {
  7484. FINISHEDLOADBATCHNO = dtResult.Rows[0]["FINISHEDLOADBATCHNO"].ToString();
  7485. }
  7486. else
  7487. {
  7488. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7489. resultEntity.OtherStatus = -1;
  7490. resultEntity.Message = "此产品没有交接";
  7491. return resultEntity;
  7492. }
  7493. sqlString = "select 1\n" +
  7494. " from TP_PM_FPLoadingDetail fpld\n" +
  7495. " where fpld.finishedloadbatchno = :fbatchno\n" +
  7496. " and rownum = 1";
  7497. paras = new OracleParameter[]{
  7498. new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
  7499. };
  7500. string exists = oracleConn.GetSqlResultToObj(sqlString, paras)+"";
  7501. if (!string.IsNullOrEmpty(exists))
  7502. {
  7503. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7504. resultEntity.OtherStatus = -1;
  7505. resultEntity.Message = "此产品已装车";
  7506. return resultEntity;
  7507. }
  7508. #region 查询产品相关信息
  7509. sqlString = "select ss.settingvalue\n" +
  7510. " from tp_mst_systemsetting ss\n" +
  7511. " where ss.settingcode = 'S_PM_025'\n" +
  7512. " and ss.accountid = :accountid";
  7513. paras = new OracleParameter[]{
  7514. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  7515. };
  7516. exists = oracleConn.GetSqlResultToObj(sqlString, paras) + "";
  7517. if (string.IsNullOrWhiteSpace(exists))
  7518. {
  7519. exists = "0";
  7520. }
  7521. sqlString = "select "+ exists + " limitnum, :barcode barcode, :fbatchno fbatchno, to_char(sum(cc)) sumcount\n" +
  7522. " ,listagg(to_char(t.goodscode) || '[' || to_char(cc) || ']', ', ') within group(order by t.goodscode) dd\n" +
  7523. " from (select count(*) cc, fp.goodscode\n" +
  7524. " from tp_pm_finishedproduct fp\n" +
  7525. " where fp.finishedloadbatchno =:fbatchno\n" +
  7526. " group by fp.finishedloadbatchno, fp.goodscode) t";
  7527. paras = new OracleParameter[]{
  7528. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  7529. new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
  7530. };
  7531. dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7532. if (dtResult != null && dtResult.Rows.Count > 0)
  7533. {
  7534. resultEntity.Data = new DataSet("ds");
  7535. resultEntity.Data.Tables.Add(dtResult);
  7536. sqlString = "select fp.barcode, fp.groutingdailydetailid, :fbatchno fbatchno\n" +
  7537. " from tp_pm_finishedproduct fp\n" +
  7538. " where fp.finishedloadbatchno = :fbatchno";
  7539. paras = new OracleParameter[]{
  7540. new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
  7541. };
  7542. dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7543. resultEntity.Data.Tables.Add(dtResult);
  7544. }
  7545. else
  7546. {
  7547. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7548. resultEntity.OtherStatus = -1;
  7549. resultEntity.Message = "此条码不存在";
  7550. return resultEntity;
  7551. }
  7552. #endregion
  7553. return resultEntity;
  7554. }
  7555. catch (Exception ex)
  7556. {
  7557. throw ex;
  7558. }
  7559. finally
  7560. {
  7561. if (oracleConn.ConnState == ConnectionState.Open)
  7562. {
  7563. oracleConn.Close();
  7564. }
  7565. }
  7566. }
  7567. /// <summary>
  7568. /// 产成品装车-保存
  7569. /// </summary>
  7570. /// <param name="barcode"></param>
  7571. /// <param name="sUserInfo"></param>
  7572. /// <returns></returns>
  7573. public static ServiceResultEntity SaveFinishedLoading(SUserInfo sUserInfo, int loadingNo,
  7574. string carLicense, int palletNum, int goodsNum, string remarks, Dictionary<string, object>[] details)
  7575. {
  7576. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7577. try
  7578. {
  7579. oracleConn.Connect();
  7580. ServiceResultEntity resultEntity = new ServiceResultEntity();
  7581. DateTime date = DateTime.Now.Date;
  7582. // 1 验证 LoadingNo
  7583. string sqlString = "select 1\n" +
  7584. " from TP_PM_FinishedLoading fl\n" +
  7585. " where fl.loadingdate = :loadingdate\n" +
  7586. " and fl.loadingno = :loadingno\n" +
  7587. " and fl.AccountID = :AccountID\n" +
  7588. " and rownum = 1";
  7589. OracleParameter[] paras = new OracleParameter[]{
  7590. new OracleParameter(":loadingdate",OracleDbType.Date, date,ParameterDirection.Input),
  7591. new OracleParameter(":loadingno",OracleDbType.Int32, loadingNo,ParameterDirection.Input),
  7592. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  7593. };
  7594. string exists = oracleConn.GetSqlResultToObj(sqlString, paras) + "";
  7595. if (!string.IsNullOrEmpty(exists))
  7596. {
  7597. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7598. resultEntity.OtherStatus = -1;
  7599. resultEntity.Message = "今天此装车序号已存在";
  7600. return resultEntity;
  7601. }
  7602. // 2 保存
  7603. sqlString = @"select SEQ_PM_FinishedLoading_ID.Nextval From DUAL";
  7604. int loadingID = Convert.ToInt32(oracleConn.GetSqlResultToObj(sqlString));
  7605. sqlString = "insert into TP_PM_FinishedLoading\n" +
  7606. " (LOADINGID\n" +
  7607. " ,LOADINGDATE\n" +
  7608. " ,LOADINGNO\n" +
  7609. " ,CARLICENSE\n" +
  7610. " ,PALLETNUM\n" +
  7611. " ,GOODSNUM\n" +
  7612. " ,REMARKS\n" +
  7613. " ,ACCOUNTID\n" +
  7614. " ,CREATEUSERID)\n" +
  7615. "values\n" +
  7616. " (:LOADINGID\n" +
  7617. " ,:LOADINGDATE\n" +
  7618. " ,:LOADINGNO\n" +
  7619. " ,:CARLICENSE\n" +
  7620. " ,:PALLETNUM\n" +
  7621. " ,:GOODSNUM\n" +
  7622. " ,:REMARKS\n" +
  7623. " ,:ACCOUNTID\n" +
  7624. " ,:CREATEUSERID)";
  7625. paras = new OracleParameter[]{
  7626. new OracleParameter(":LOADINGID",OracleDbType.Int32, loadingID,ParameterDirection.Input),
  7627. new OracleParameter(":LOADINGDATE",OracleDbType.Date, date,ParameterDirection.Input),
  7628. new OracleParameter(":LOADINGNO",OracleDbType.Int32, loadingNo,ParameterDirection.Input),
  7629. new OracleParameter(":CARLICENSE",OracleDbType.Varchar2, carLicense,ParameterDirection.Input),
  7630. new OracleParameter(":PALLETNUM",OracleDbType.Int32, palletNum,ParameterDirection.Input),
  7631. new OracleParameter(":GOODSNUM",OracleDbType.Int32, goodsNum,ParameterDirection.Input),
  7632. new OracleParameter(":REMARKS",OracleDbType.NVarchar2, remarks,ParameterDirection.Input),
  7633. new OracleParameter(":ACCOUNTID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  7634. new OracleParameter(":CREATEUSERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  7635. };
  7636. int r = oracleConn.ExecuteNonQuery(sqlString, paras);
  7637. sqlString = "insert into TP_PM_FPLoadingDetail\n" +
  7638. " (LOADINGID, GROUTINGDAILYDETAILID, FINISHEDLOADBATCHNO)\n" +
  7639. "values\n" +
  7640. " (:LOADINGID, :GROUTINGDAILYDETAILID, :FINISHEDLOADBATCHNO)";
  7641. foreach (Dictionary<string, object> item in details)
  7642. {
  7643. paras = new OracleParameter[]{
  7644. new OracleParameter(":LOADINGID",OracleDbType.Int32, loadingID,ParameterDirection.Input),
  7645. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32, item["groutingdailydetailid"],ParameterDirection.Input),
  7646. new OracleParameter(":FINISHEDLOADBATCHNO",OracleDbType.Varchar2, item["fbatchno"],ParameterDirection.Input),
  7647. };
  7648. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  7649. }
  7650. oracleConn.Commit();
  7651. return resultEntity;
  7652. }
  7653. catch (Exception ex)
  7654. {
  7655. throw ex;
  7656. }
  7657. finally
  7658. {
  7659. if (oracleConn.ConnState == ConnectionState.Open)
  7660. {
  7661. oracleConn.Disconnect();
  7662. }
  7663. }
  7664. }
  7665. */
  7666. #endregion
  7667. #region 半检返修登记
  7668. /// <summary>
  7669. /// 获取半检返修登记列表
  7670. /// </summary>
  7671. /// <returns></returns>
  7672. public static ServiceResultEntity GetSemiRework(ClientRequestEntity cre, SUserInfo userInfo)
  7673. {
  7674. IDBConnection conn = null;
  7675. try
  7676. {
  7677. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7678. conn.Open();
  7679. string sqlString = "select sr.SemiReworkID\n" +
  7680. " ,sr.BarCode\n" +
  7681. " ,sr.ProductionLineID\n" +
  7682. " ,sr.ProcedureID\n" +
  7683. " ,p.procedurename\n" +
  7684. " ,sr.ProcedureTime\n" +
  7685. " ,sr.GoodsID\n" +
  7686. " ,sr.GoodsCode\n" +
  7687. " ,sr.UserID --完成工号ID\n" +
  7688. " ,sr.UserCode\n" +
  7689. " ,sr.ProductionDataID\n" +
  7690. " ,sr.GroutingDailyID\n" +
  7691. " ,sr.GroutingDailyDetailID\n" +
  7692. " ,sr.GroutingLineID\n" +
  7693. " ,sr.GroutingLineCode\n" +
  7694. " ,sr.GroutingLineDetailID\n" +
  7695. " ,sr.GroutingDate\n" +
  7696. " ,sr.GroutingMouldCode\n" +
  7697. " ,sr.GroutingUserID\n" +
  7698. " ,sr.GroutingUserCode\n" +
  7699. " ,sr.SemiReworkUserID\n" +
  7700. " ,sr.SemiReworkUserCode\n" +
  7701. " ,sr.SemiReworkTime\n" +
  7702. " ,sr.ReworkProcedureID\n" +
  7703. " ,rp.procedurename ReworkProcedurename\n" +
  7704. " ,sr.BackOutFlag\n" +
  7705. " ,sr.BackOutTime\n" +
  7706. " ,sr.BackOutUserID\n" +
  7707. " ,sr.BackOutUserCode\n" +
  7708. " ,sr.Remarks\n" +
  7709. " from TP_PM_SemiRework sr\n" +
  7710. " inner join tp_pc_procedure p\n" +
  7711. " on p.procedureid = sr.procedureid\n" +
  7712. " inner join tp_pc_procedure rp\n" +
  7713. " on rp.procedureid = sr.reworkprocedureid" +
  7714. " where sr.accountID = :accountID" +
  7715. " and sr.valueflag = '1'" +
  7716. // todo 其他查询条件
  7717. " order by sr.SemiReworkID desc";
  7718. IDataParameter[] paras = new OracleParameter[]
  7719. {
  7720. new OracleParameter(":accountID", OracleDbType.Int32,userInfo.AccountID, ParameterDirection.Input),
  7721. };
  7722. ServiceResultEntity sre = new ServiceResultEntity();
  7723. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7724. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7725. {
  7726. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7727. return sre;
  7728. }
  7729. data.Tables[0].TableName = "SemiRework";
  7730. sre.Data = data;
  7731. int semiReworkID = Convert.ToInt32(data.Tables[0].Rows[0]["SemiReworkID"]);
  7732. ServiceResultEntity sre1 = GetSemiReworkDefect(semiReworkID, userInfo, conn);
  7733. if (sre1.Data == null || sre1.Data.Tables.Count == 0 || sre1.Data.Tables[0].Rows.Count == 0)
  7734. {
  7735. return sre;
  7736. }
  7737. sre1.Data.Tables[0].TableName = "SemiReworkDefect";
  7738. sre.Data.Merge(sre1.Data.Tables[0]);
  7739. return sre;
  7740. }
  7741. catch (Exception ex)
  7742. {
  7743. throw ex;
  7744. }
  7745. finally
  7746. {
  7747. if (conn != null &&
  7748. conn.ConnState == ConnectionState.Open)
  7749. {
  7750. conn.Close();
  7751. }
  7752. }
  7753. }
  7754. /// <summary>
  7755. /// 获取半检返修登记列表
  7756. /// </summary>
  7757. /// <returns></returns>
  7758. public static ServiceResultEntity GetSemiReworkDefect(int semiReworkID, SUserInfo userInfo, IDBConnection conn = null)
  7759. {
  7760. try
  7761. {
  7762. if (conn == null)
  7763. {
  7764. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7765. conn.Open();
  7766. }
  7767. string sqlString = "select srd.SemiReworkDefectID\n" +
  7768. " ,srd.SemiReworkID\n" +
  7769. " ,srd.DefectID\n" +
  7770. " ,srd.DefectCode\n" +
  7771. " ,srd.DefectName\n" +
  7772. " ,srd.DefectPositionID\n" +
  7773. " ,srd.DefectPositionCode\n" +
  7774. " ,srd.DefectPositionName\n" +
  7775. " ,srd.ScrapResponFlag\n" +
  7776. " ,srd.DefectProductionDataID\n" +
  7777. " ,srd.DefectProcedureID\n" +
  7778. " ,p.procedurename DefectProcedureName\n" +
  7779. " ,srd.DefectUserID\n" +
  7780. " ,srd.DefectUserCode\n" +
  7781. " ,srd.Remarks\n" +
  7782. " from TP_PM_SemiReworkDefect srd\n" +
  7783. " inner join tp_pc_procedure p\n" +
  7784. " on p.procedureid = srd.DefectProcedureID\n" +
  7785. " where srd.accountID = :accountID" +
  7786. " and srd.valueflag = '1'" +
  7787. " and srd.SemiReworkID = :SemiReworkID" +
  7788. " order by srd.DefectID";
  7789. IDataParameter[] paras = new OracleParameter[]
  7790. {
  7791. new OracleParameter(":accountID", OracleDbType.Int32,userInfo.AccountID, ParameterDirection.Input),
  7792. new OracleParameter(":SemiReworkID", OracleDbType.Int32,semiReworkID, ParameterDirection.Input),
  7793. };
  7794. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7795. ServiceResultEntity sre = new ServiceResultEntity();
  7796. sre.Data = data;
  7797. return sre;
  7798. }
  7799. catch (Exception ex)
  7800. {
  7801. throw ex;
  7802. }
  7803. finally
  7804. {
  7805. if (conn != null &&
  7806. conn.ConnState == ConnectionState.Open)
  7807. {
  7808. conn.Close();
  7809. }
  7810. }
  7811. }
  7812. /// <summary>
  7813. /// 获取登陆帐户有无修改半检返修权限
  7814. /// </summary>
  7815. /// <returns></returns>
  7816. public static int GetSemiReworkEditFuntion(SUserInfo userInfo)
  7817. {
  7818. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7819. try
  7820. {
  7821. con.Open();
  7822. string strSql = "";
  7823. strSql = @"SELECT r.FunctionCode FROM TP_MST_UserRight R WHERE r.FunctionCode='06200104' AND R.UserID = " + userInfo.UserID;
  7824. DataSet ds = con.GetSqlResultToDs(strSql);
  7825. if (ds != null && ds.Tables[0].Rows.Count > 0)
  7826. {
  7827. return 1;
  7828. }
  7829. return 0;
  7830. }
  7831. catch (Exception ex)
  7832. {
  7833. throw ex;
  7834. }
  7835. finally
  7836. {
  7837. if (con.ConnState == ConnectionState.Open)
  7838. {
  7839. con.Close();
  7840. }
  7841. }
  7842. }
  7843. /// <summary>
  7844. /// 验证半检返修条码
  7845. /// </summary>
  7846. /// <param name="barcode">产品条码</param>
  7847. /// <returns></returns>
  7848. public static ServiceResultEntity CheckSemiReworkBarcode(string barcode)
  7849. {
  7850. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7851. try
  7852. {
  7853. oracleConn.Open();
  7854. ServiceResultEntity resultEntity = new ServiceResultEntity();
  7855. // 1.判断产品是否在产
  7856. string sql = @"select
  7857. InScrapFlag,
  7858. KilnCarID,
  7859. KilnCarName,
  7860. IsReworkFlag,
  7861. SemiCheckID
  7862. from TP_PM_InProduction
  7863. where BarCode=:BarCode";
  7864. OracleParameter[] paras = new OracleParameter[]{
  7865. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  7866. };
  7867. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  7868. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  7869. {
  7870. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  7871. {
  7872. resultEntity.Result = -2; //报损待审批
  7873. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  7874. return resultEntity;
  7875. }
  7876. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  7877. {
  7878. resultEntity.Result = -3; //登窑车后不允许半成品检测
  7879. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]";
  7880. return resultEntity;
  7881. }
  7882. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  7883. {
  7884. resultEntity.Result = -4; //半检返工
  7885. resultEntity.Message = "条码[" + barcode + "]已半检返工";
  7886. return resultEntity;
  7887. }
  7888. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  7889. {
  7890. resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);//编辑状态
  7891. resultEntity.Message = "返修";
  7892. }
  7893. else
  7894. {
  7895. resultEntity.Result = "0";//新建状态
  7896. }
  7897. }
  7898. else
  7899. {
  7900. resultEntity.Result = -1;// 不在在产表中
  7901. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  7902. }
  7903. return resultEntity;
  7904. }
  7905. catch (Exception ex)
  7906. {
  7907. throw ex;
  7908. }
  7909. finally
  7910. {
  7911. if (oracleConn.ConnState == ConnectionState.Open)
  7912. {
  7913. oracleConn.Close();
  7914. }
  7915. }
  7916. }
  7917. /// <summary>
  7918. /// 根据半成品检验数据ID,显示半成品数据信息
  7919. /// </summary>
  7920. /// <param name="semiCheckID">半成品数据ID</param>
  7921. /// <returns>DataSet</returns>
  7922. public static ServiceResultEntity GetSemiReworkByID(int semiReworkID,string userCode = "")
  7923. {
  7924. IDBConnection conn = null;
  7925. try
  7926. {
  7927. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7928. conn.Open();
  7929. string sqlString = "select sr.SemiReworkID\n" +
  7930. " ,sr.BarCode\n" +
  7931. " ,sr.ProductionLineID\n" +
  7932. " ,sr.ProcedureID\n" +
  7933. " ,p.procedurename\n" +
  7934. " ,sr.ProcedureTime\n" +
  7935. " ,sr.GoodsID\n" +
  7936. " ,sr.GoodsCode\n" +
  7937. " ,sr.UserID --完成工号ID\n" +
  7938. " ,sr.UserCode\n" +
  7939. " ,sr.ProductionDataID\n" +
  7940. " ,sr.GroutingDailyID\n" +
  7941. " ,sr.GroutingDailyDetailID\n" +
  7942. " ,sr.GroutingLineID\n" +
  7943. " ,sr.GroutingLineCode\n" +
  7944. " ,sr.GroutingLineDetailID\n" +
  7945. " ,sr.GroutingDate\n" +
  7946. " ,sr.GroutingMouldCode\n" +
  7947. " ,sr.GroutingUserID\n" +
  7948. " ,sr.GroutingUserCode\n" +
  7949. " ,sr.SemiReworkUserID\n" +
  7950. " ,sr.SemiReworkUserCode\n" +
  7951. " ,sr.SemiReworkTime\n" +
  7952. " ,sr.ReworkProcedureID\n" +
  7953. " ,rp.procedurename ReworkProcedurename\n" +
  7954. " ,sr.BackOutFlag\n" +
  7955. " ,sr.BackOutTime\n" +
  7956. " ,sr.BackOutUserID\n" +
  7957. " ,sr.BackOutUserCode\n" +
  7958. " ,sr.Remarks\n" +
  7959. " from TP_PM_SemiRework sr\n" +
  7960. " inner join tp_pc_procedure p\n" +
  7961. " on p.procedureid = sr.procedureid\n" +
  7962. " left join tp_pc_procedure rp\n" +
  7963. " on rp.procedureid = sr.reworkprocedureid" +
  7964. " where sr.SemiReworkID = :SemiReworkID";
  7965. string sqlString1 = "select srd.SemiReworkDefectID\n" +
  7966. " ,srd.SemiReworkID\n" +
  7967. " ,srd.DefectID\n" +
  7968. " ,srd.DefectCode\n" +
  7969. " ,srd.DefectName\n" +
  7970. " ,srd.DefectPositionID\n" +
  7971. " ,srd.DefectPositionCode\n" +
  7972. " ,srd.DefectPositionName\n" +
  7973. " ,srd.ScrapResponFlag\n" +
  7974. " ,srd.DefectProductionDataID\n" +
  7975. " ,srd.DefectProcedureID\n" +
  7976. " ,p.procedurecode DefectProcedureCode\n" +
  7977. " ,p.procedurename DefectProcedureName\n" +
  7978. " ,srd.DefectUserID\n" +
  7979. " ,du.username DefectUserName\n" +
  7980. " ,srd.DefectUserCode\n" +
  7981. " ,srd.Remarks\n" +
  7982. " ,srd.ValueFlag\n" + //xuwei add 2019-11-14 为 1 时可编辑 为 0 时不可编辑
  7983. " from TP_PM_SemiReworkDefect srd\n" +
  7984. " left join tp_pc_procedure p\n" +
  7985. " on p.procedureid = srd.DefectProcedureID\n" +
  7986. " inner join tp_mst_user du\n" +
  7987. " on du.userid = srd.DefectUserID\n" +
  7988. " where srd.SemiReworkID = :SemiReworkID" +
  7989. " order by srd.SemiReworkDefectID";
  7990. string sqlString2 = "select t.SemiReworkDefectID\n" +
  7991. " ,t.StaffID\n" +
  7992. " ,t.SemiReworkID\n" +
  7993. " ,t.UserID\n" +
  7994. " ,t.UserCode\n" +
  7995. " ,t.UJobsID\n" +
  7996. " ,t.SJobsID\n" +
  7997. " ,s.staffcode\n" +
  7998. " ,s.staffname\n" +
  7999. " from TP_PM_SemiReworkRPS t\n" +
  8000. " inner join tp_hr_staff s\n" +
  8001. " on s.staffid = t.staffid\n" +
  8002. " where t.valueflag = '1'" +
  8003. " and t.SemiReworkID = :SemiReworkID" +
  8004. " order by t.semireworkdefectid, s.staffcode";
  8005. IDataParameter[] paras = new OracleParameter[]
  8006. {
  8007. new OracleParameter(":SemiReworkID", OracleDbType.Int32,semiReworkID, ParameterDirection.Input),
  8008. };
  8009. ServiceResultEntity sre = new ServiceResultEntity();
  8010. DataTable data = conn.GetSqlResultToDt(sqlString, paras);
  8011. data.TableName = "SemiRework";
  8012. DataTable data1 = conn.GetSqlResultToDt(sqlString1, paras);
  8013. data1.TableName = "SemiReworkDefect";
  8014. DataTable data2 = conn.GetSqlResultToDt(sqlString2, paras);
  8015. data2.TableName = "SemiReworkRPS";
  8016. //xuwei add 2019-11-14 验证并重置valueflag,确定是否可编辑
  8017. if(userCode!="")
  8018. {
  8019. for(int i=0;i<data1.Rows.Count;i++)
  8020. {
  8021. //半检工号等于当前工号 并且 有效标识为1的 将 valueflag 置 1 是可编辑记录
  8022. if (data.Rows[0]["SemiReworkUserCode"].ToString() == userCode
  8023. && data1.Rows[i]["ValueFlag"].ToString() == "1")
  8024. data1.Rows[i]["ValueFlag"] = '1';
  8025. else
  8026. data1.Rows[i]["ValueFlag"] = '0';
  8027. }
  8028. }
  8029. else
  8030. {
  8031. for (int i = 0; i < data1.Rows.Count; i++)
  8032. {
  8033. //缺省半检工号 全部将 valueflag 置 0 不可编辑
  8034. data1.Rows[i]["ValueFlag"] = '0';
  8035. }
  8036. }
  8037. //xuwei end
  8038. sre.Data = new DataSet();
  8039. sre.Data.Tables.Add(data);
  8040. sre.Data.Tables.Add(data1);
  8041. sre.Data.Tables.Add(data2);
  8042. return sre;
  8043. }
  8044. catch (Exception ex)
  8045. {
  8046. throw ex;
  8047. }
  8048. finally
  8049. {
  8050. if (conn.ConnState == ConnectionState.Open)
  8051. {
  8052. conn.Close();
  8053. }
  8054. }
  8055. }
  8056. /// <summary>
  8057. /// 可以返修的工序
  8058. /// </summary>
  8059. /// <param name="barcode"></param>
  8060. /// <param name="userInfo"></param>
  8061. /// <returns></returns>
  8062. public static ServiceResultEntity GetSemiReworkProcedure(string barcode, SUserInfo userInfo)
  8063. {
  8064. IDBConnection conn = null;
  8065. try
  8066. {
  8067. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8068. conn.Open();
  8069. string sqlString = "select p.procedureid, p.procedurecode, p.procedurename\n" +
  8070. " from tp_pm_inproduction t\n" +
  8071. " inner join tp_pc_procedure p\n" +
  8072. " on p.productionlineid = t.productionlineid\n" +
  8073. " and p.ISSEMIREWORK = '1'\n" +
  8074. " where t.barcode = :barcode";
  8075. IDataParameter[] paras = new OracleParameter[]
  8076. {
  8077. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  8078. };
  8079. ServiceResultEntity sre = new ServiceResultEntity();
  8080. sre.Data = conn.GetSqlResultToDs(sqlString, paras);
  8081. return sre;
  8082. }
  8083. catch (Exception ex)
  8084. {
  8085. throw ex;
  8086. }
  8087. finally
  8088. {
  8089. if (conn.ConnState == ConnectionState.Open)
  8090. {
  8091. conn.Close();
  8092. }
  8093. }
  8094. }
  8095. /// <summary>
  8096. /// 根据条码获取经过的工序,用于责任工序
  8097. /// </summary>
  8098. /// <param name="barcode">产品条码</param>
  8099. /// <returns>DataSet</returns>
  8100. public static ServiceResultEntity GetSemiReworkPassProcedure(string barcode)
  8101. {
  8102. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8103. try
  8104. {
  8105. con.Open();
  8106. string sqlString = "select pin.Barcode\n" +
  8107. " ,pin.UserID\n" +
  8108. " ,pin.UserCode\n" +
  8109. " ,pin.UserName\n" +
  8110. " ,pin.ProcedureID\n" +
  8111. " ,pin.ProcedureCode\n" +
  8112. " ,pin.ProcedureName\n" +
  8113. " ,pin.ProductionDataID\n" +
  8114. " from TP_PM_ProductionDataIn pin\n" +
  8115. " where pin.valueflag = '1'\n" +
  8116. " and pin.barcode = :BarCode\n" +
  8117. " order by pin.ProductionDataID";
  8118. // 干补后 半检 不能选成型责任
  8119. OracleParameter[] paras = new OracleParameter[]{
  8120. new OracleParameter(":BarCode",OracleDbType.NVarchar2, barcode,ParameterDirection.Input),
  8121. };
  8122. ServiceResultEntity sre = new ServiceResultEntity();
  8123. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  8124. return sre;
  8125. }
  8126. catch (Exception ex)
  8127. {
  8128. throw ex;
  8129. }
  8130. finally
  8131. {
  8132. if (con.ConnState == ConnectionState.Open)
  8133. {
  8134. con.Close();
  8135. }
  8136. }
  8137. }
  8138. /// <summary>
  8139. /// 根据所选生产工序(生产数据ID)查询责任员工
  8140. /// </summary>
  8141. /// <param name="productionDataID"></param>
  8142. /// <returns></returns>
  8143. public static ServiceResultEntity GetSemiReworkDefectStaffByProductionDataID(int productionDataID)
  8144. {
  8145. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8146. try
  8147. {
  8148. con.Open();
  8149. string sqlString = "select cd.StaffID\n" +
  8150. " ,s.StaffCode\n" +
  8151. " ,s.staffname\n" +
  8152. " ,cd.staffstatus\n" +
  8153. " ,cd.UJobsID\n" +
  8154. " ,cd.SJobsID\n" +
  8155. " from tp_pm_productiondatain pd\n" +
  8156. //"--inner join tp_pc_classessetting c on c.classessettingid = pd.classessettingid\n" +
  8157. " inner join tp_pc_classesdetail cd\n" +
  8158. " on cd.classessettingid = pd.classessettingid\n" +
  8159. " inner join TP_HR_Staff s\n" +
  8160. " on s.staffid = cd.staffid\n" +
  8161. " where pd.productiondataid = :productionDataID\n" +
  8162. " order by s.StaffCode";
  8163. OracleParameter[] paras = new OracleParameter[]{
  8164. new OracleParameter(":productionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  8165. };
  8166. ServiceResultEntity se = new ServiceResultEntity();
  8167. se.Data = con.GetSqlResultToDs(sqlString, paras);
  8168. return se;
  8169. }
  8170. catch (Exception ex)
  8171. {
  8172. throw ex;
  8173. }
  8174. finally
  8175. {
  8176. if (con.ConnState == ConnectionState.Open)
  8177. {
  8178. con.Close();
  8179. }
  8180. }
  8181. }
  8182. /// <summary>
  8183. /// 根据所选工号,查出缺陷责任员工
  8184. /// </summary>
  8185. /// <param name="userid">用户ID</param>
  8186. /// <returns>DataSet</returns>
  8187. public static ServiceResultEntity GetSemiReworkDefectStaffByUserID(int userid)
  8188. {
  8189. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8190. try
  8191. {
  8192. con.Open();
  8193. string sqlString = "select s.StaffID\n" +
  8194. " ,s.StaffCode\n" +
  8195. " ,s.StaffName\n" +
  8196. " ,s.StaffStatus\n" +
  8197. " ,us.UJobsID\n" +
  8198. " ,s.jobs SJobsID\n" +
  8199. " from TP_MST_UserStaff us\n" +
  8200. " inner join TP_HR_Staff s\n" +
  8201. " on us.Staffid = s.Staffid\n" +
  8202. " where us.Userid = :userid";
  8203. OracleParameter[] paras = new OracleParameter[]{
  8204. new OracleParameter(":userid",OracleDbType.Int32, userid,ParameterDirection.Input),
  8205. };
  8206. ServiceResultEntity se = new ServiceResultEntity();
  8207. se.Data = con.GetSqlResultToDs(sqlString, paras);
  8208. return se;
  8209. }
  8210. catch (Exception ex)
  8211. {
  8212. throw ex;
  8213. }
  8214. finally
  8215. {
  8216. if (con.ConnState == ConnectionState.Open)
  8217. {
  8218. con.Close();
  8219. }
  8220. }
  8221. }
  8222. /// <summary>
  8223. /// 保存半检返修
  8224. /// </summary>
  8225. /// <param name="entity">半检实体类</param>
  8226. /// <param name="sUserInfo">用户基本信息</param>
  8227. /// <returns>ServiceResultEntity</returns>
  8228. /// <remarks>
  8229. /// 王鑫 2016.06.27 新建
  8230. /// </remarks>
  8231. public static ServiceResultEntity AddSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
  8232. {
  8233. IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8234. try
  8235. {
  8236. ServiceResultEntity resultEntity = new ServiceResultEntity();
  8237. resultEntity.Result = 1;
  8238. if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) ||
  8239. entityobj.SemiReworkDefects == null || entityobj.SemiReworkDefects.Count == 0)
  8240. {
  8241. resultEntity.Result = -1;
  8242. resultEntity.Message = "数据错误";
  8243. return resultEntity;
  8244. }
  8245. con.Connect();
  8246. string barcode = entityobj.BarCode;
  8247. #region 验证条码
  8248. // 1.判断产品是否在产
  8249. string sql = @"select p.*,u.usercode from TP_PM_InProduction p inner join tp_mst_user u on u.userid=p.userid where p.BarCode=:BarCode for update";
  8250. OracleParameter[] paras = new OracleParameter[]{
  8251. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8252. };
  8253. DataTable dsResult = con.GetSqlResultToDt(sql, paras);
  8254. if (dsResult == null || dsResult.Rows.Count == 0)
  8255. {
  8256. resultEntity.Result = -1;// 不在在产表中
  8257. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  8258. return resultEntity;
  8259. }
  8260. DataRow dataRow = dsResult.Rows[0];
  8261. if (dataRow["InScrapFlag"].ToString() == "1")
  8262. {
  8263. resultEntity.Result = -2; //报损待审批
  8264. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  8265. return resultEntity;
  8266. }
  8267. if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
  8268. {
  8269. resultEntity.Result = -3; //登窑车后不允许半成品检测
  8270. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
  8271. return resultEntity;
  8272. }
  8273. if (dataRow["IsReworkFlag"].ToString() == "1")
  8274. {
  8275. resultEntity.Result = -4; //半检返工
  8276. resultEntity.Message = "条码[" + barcode + "]已半检返工";
  8277. return resultEntity;
  8278. }
  8279. //xuwei modify 2019-11-14 允许多次半检
  8280. //if (dataRow["IsReworkFlag"].ToString() == "2")
  8281. //{
  8282. // resultEntity.Result = -5; //半检返修
  8283. // resultEntity.Message = "条码[" + barcode + "]已半检返修";
  8284. // return resultEntity;
  8285. //}
  8286. //xuwei end
  8287. #endregion
  8288. #region 保存数据
  8289. sql = "select SEQ_PM_SemiRework_ID.nextval from dual";
  8290. object srID = con.GetSqlResultToObj(sql);
  8291. // 返修
  8292. string sqlString = "insert into tp_pm_semirework\n" +
  8293. " (SEMIREWORKID\n" +
  8294. " ,BARCODE\n" +
  8295. " ,PRODUCTIONLINEID\n" +
  8296. " ,PROCEDUREID\n" +
  8297. " ,PROCEDURETIME\n" +
  8298. " ,GOODSID\n" +
  8299. " ,GOODSCODE\n" +
  8300. " ,USERID\n" +
  8301. " ,USERCODE\n" +
  8302. " ,PRODUCTIONDATAID\n" +
  8303. " ,GROUTINGDAILYID\n" +
  8304. " ,GROUTINGDAILYDETAILID\n" +
  8305. " ,GROUTINGLINEID\n" +
  8306. " ,GROUTINGLINECODE\n" +
  8307. " ,GROUTINGLINEDETAILID\n" +
  8308. " ,GROUTINGDATE\n" +
  8309. " ,GROUTINGMOULDCODE\n" +
  8310. " ,GROUTINGUSERID\n" +
  8311. " ,GROUTINGUSERCODE\n" +
  8312. " ,SEMIREWORKUSERID\n" +
  8313. " ,SEMIREWORKUSERCODE\n" +
  8314. " ,SEMIREWORKTIME\n" +
  8315. " ,REWORKPROCEDUREID\n" +
  8316. " ,REMARKS\n" +
  8317. " ,ACCOUNTID\n" +
  8318. " ,VALUEFLAG\n" +
  8319. " ,CREATEUSERID\n" +
  8320. " ,UPDATEUSERID)\n" +
  8321. "values\n" +
  8322. " (:SEMIREWORKID\n" +
  8323. " ,:BARCODE\n" +
  8324. " ,:PRODUCTIONLINEID\n" +
  8325. " ,:PROCEDUREID\n" +
  8326. " ,:PROCEDURETIME\n" +
  8327. " ,:GOODSID\n" +
  8328. " ,:GOODSCODE\n" +
  8329. " ,:USERID\n" +
  8330. " ,:USERCODE\n" +
  8331. " ,:PRODUCTIONDATAID\n" +
  8332. " ,:GROUTINGDAILYID\n" +
  8333. " ,:GROUTINGDAILYDETAILID\n" +
  8334. " ,:GROUTINGLINEID\n" +
  8335. " ,:GROUTINGLINECODE\n" +
  8336. " ,:GROUTINGLINEDETAILID\n" +
  8337. " ,:GROUTINGDATE\n" +
  8338. " ,:GROUTINGMOULDCODE\n" +
  8339. " ,:GROUTINGUSERID\n" +
  8340. " ,:GROUTINGUSERCODE\n" +
  8341. " ,:SEMIREWORKUSERID\n" +
  8342. " ,:SEMIREWORKUSERCODE\n" +
  8343. " ,sysdate\n" +
  8344. " ,:REWORKPROCEDUREID\n" +
  8345. " ,:REMARKS\n" +
  8346. " ,:ACCOUNTID\n" +
  8347. " ,'1'\n" +
  8348. " ,:CREATEUSERID\n" +
  8349. " ,:UPDATEUSERID)\n";
  8350. paras = new OracleParameter[]{
  8351. new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
  8352. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8353. new OracleParameter(":PRODUCTIONLINEID",OracleDbType.Int32,dataRow["PRODUCTIONLINEID"],ParameterDirection.Input),
  8354. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,dataRow["PROCEDUREID"],ParameterDirection.Input),
  8355. new OracleParameter(":PROCEDURETIME",OracleDbType.Date,dataRow["PROCEDURETIME"],ParameterDirection.Input),
  8356. new OracleParameter(":GOODSID",OracleDbType.Int32,dataRow["GOODSID"],ParameterDirection.Input),
  8357. new OracleParameter(":GOODSCODE",OracleDbType.NVarchar2,dataRow["GOODSCODE"],ParameterDirection.Input),
  8358. new OracleParameter(":USERID",OracleDbType.Int32,dataRow["USERID"],ParameterDirection.Input),
  8359. new OracleParameter(":USERCODE",OracleDbType.NVarchar2,dataRow["USERCODE"],ParameterDirection.Input),
  8360. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,dataRow["PRODUCTIONDATAID"],ParameterDirection.Input),
  8361. new OracleParameter(":GROUTINGDAILYID",OracleDbType.Int32,dataRow["GROUTINGDAILYID"],ParameterDirection.Input),
  8362. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,dataRow["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  8363. new OracleParameter(":GROUTINGLINEID",OracleDbType.Int32,dataRow["GROUTINGLINEID"],ParameterDirection.Input),
  8364. new OracleParameter(":GROUTINGLINECODE",OracleDbType.NVarchar2,dataRow["GROUTINGLINECODE"],ParameterDirection.Input),
  8365. new OracleParameter(":GROUTINGLINEDETAILID",OracleDbType.Int32,dataRow["GROUTINGLINEDETAILID"],ParameterDirection.Input),
  8366. new OracleParameter(":GROUTINGDATE",OracleDbType.Date,dataRow["GROUTINGDATE"],ParameterDirection.Input),
  8367. new OracleParameter(":GROUTINGMOULDCODE",OracleDbType.NVarchar2,dataRow["GROUTINGMOULDCODE"],ParameterDirection.Input),
  8368. new OracleParameter(":GROUTINGUSERID",OracleDbType.Int32,dataRow["GROUTINGUSERID"],ParameterDirection.Input),
  8369. new OracleParameter(":GROUTINGUSERCODE",OracleDbType.NVarchar2,dataRow["GROUTINGUSERCODE"],ParameterDirection.Input),
  8370. new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8371. new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
  8372. new OracleParameter(":REWORKPROCEDUREID",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
  8373. new OracleParameter(":REMARKS",OracleDbType.NVarchar2,entityobj.Remarks,ParameterDirection.Input),
  8374. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8375. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8376. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8377. };
  8378. con.ExecuteNonQuery(sqlString, paras);
  8379. // 缺陷
  8380. string sqlStringDefect =
  8381. "insert into TP_PM_SemiReworkDefect\n" +
  8382. " (SEMIREWORKDEFECTID\n" +
  8383. " ,SEMIREWORKID\n" +
  8384. " ,DEFECTID\n" +
  8385. " ,DEFECTCODE\n" +
  8386. " ,DEFECTNAME\n" +
  8387. " ,DEFECTPOSITIONID\n" +
  8388. " ,DEFECTPOSITIONCODE\n" +
  8389. " ,DEFECTPOSITIONNAME\n" +
  8390. " ,SCRAPRESPONFLAG\n" +
  8391. " ,DEFECTPRODUCTIONDATAID\n" +
  8392. " ,DEFECTPROCEDUREID\n" +
  8393. " ,DEFECTUSERID\n" +
  8394. " ,DEFECTUSERCODE\n" +
  8395. " ,REMARKS\n" +
  8396. " ,ACCOUNTID\n" +
  8397. " ,VALUEFLAG\n" +
  8398. " ,CREATEUSERID\n" +
  8399. " ,UPDATEUSERID)\n" +
  8400. "values\n" +
  8401. " (:SEMIREWORKDEFECTID\n" +
  8402. " ,:SEMIREWORKID\n" +
  8403. " ,:DEFECTID\n" +
  8404. " ,:DEFECTCODE\n" +
  8405. " ,:DEFECTNAME\n" +
  8406. " ,:DEFECTPOSITIONID\n" +
  8407. " ,:DEFECTPOSITIONCODE\n" +
  8408. " ,:DEFECTPOSITIONNAME\n" +
  8409. " ,:SCRAPRESPONFLAG\n" +
  8410. " ,:DEFECTPRODUCTIONDATAID\n" +
  8411. " ,:DEFECTPROCEDUREID\n" +
  8412. " ,:DEFECTUSERID\n" +
  8413. " ,:DEFECTUSERCODE\n" +
  8414. " ,:REMARKS\n" +
  8415. " ,:ACCOUNTID\n" +
  8416. " ,:VALUEFLAG\n" +
  8417. " ,:CREATEUSERID\n" +
  8418. " ,:UPDATEUSERID)";
  8419. string sqlStringRPS =
  8420. "insert into TP_PM_SemiReworkRPS\n" +
  8421. " (semireworkdefectid\n" +
  8422. " ,staffid\n" +
  8423. " ,semireworkid\n" +
  8424. " ,userid\n" +
  8425. " ,usercode\n" +
  8426. " ,ujobsid\n" +
  8427. " ,sjobsid\n" +
  8428. " ,accountid\n" +
  8429. " ,valueflag\n" +
  8430. " ,createuserid\n" +
  8431. " ,updateuserid)\n" +
  8432. "values\n" +
  8433. " (:semireworkdefectid\n" +
  8434. " ,:staffid\n" +
  8435. " ,:semireworkid\n" +
  8436. " ,:userid\n" +
  8437. " ,:usercode\n" +
  8438. " ,:ujobsid\n" +
  8439. " ,:sjobsid\n" +
  8440. " ,:accountid\n" +
  8441. " ,'1'\n" +
  8442. " ,:createuserid\n" +
  8443. " ,:updateuserid)";
  8444. foreach (SemiReworkDefectEntity defect in entityobj.SemiReworkDefects)
  8445. {
  8446. sql = "select SEQ_PM_SEMIREWORKDEFECT_ID.nextval from dual";
  8447. object srdefectID = con.GetSqlResultToObj(sql);
  8448. paras = new OracleParameter[]{
  8449. new OracleParameter(":SEMIREWORKDEFECTID",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
  8450. new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
  8451. new OracleParameter(":DEFECTID",OracleDbType.Int32,defect.DefectID,ParameterDirection.Input),
  8452. new OracleParameter(":DEFECTCODE",OracleDbType.NVarchar2,defect.DefectCode,ParameterDirection.Input),
  8453. new OracleParameter(":DEFECTNAME",OracleDbType.NVarchar2,defect.DefectName,ParameterDirection.Input),
  8454. new OracleParameter(":DEFECTPOSITIONID",OracleDbType.Int32,defect.DefectPositionID,ParameterDirection.Input),
  8455. new OracleParameter(":DEFECTPOSITIONCODE",OracleDbType.NVarchar2,defect.DefectPositionCode,ParameterDirection.Input),
  8456. new OracleParameter(":DEFECTPOSITIONNAME",OracleDbType.NVarchar2,defect.DefectPositionName,ParameterDirection.Input),
  8457. new OracleParameter(":SCRAPRESPONFLAG",OracleDbType.NVarchar2,defect.ScrapResponFlag,ParameterDirection.Input),
  8458. new OracleParameter(":DEFECTPRODUCTIONDATAID",OracleDbType.Int32,defect.DefectProductionDataID,ParameterDirection.Input),
  8459. new OracleParameter(":DEFECTPROCEDUREID",OracleDbType.Int32,defect.DefectProcedureID,ParameterDirection.Input),
  8460. new OracleParameter(":DEFECTUSERID",OracleDbType.Int32,defect.DefectUserID,ParameterDirection.Input),
  8461. new OracleParameter(":DEFECTUSERCODE",OracleDbType.NVarchar2,defect.DefectUserCode,ParameterDirection.Input),
  8462. new OracleParameter(":REMARKS",OracleDbType.NVarchar2,defect.Remarks,ParameterDirection.Input),
  8463. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8464. //xuwei add 2019-11-14
  8465. new OracleParameter(":VALUEFLAG",OracleDbType.Char,defect.ValueFlag,ParameterDirection.Input),
  8466. //xuwei end
  8467. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8468. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8469. };
  8470. con.ExecuteNonQuery(sqlStringDefect, paras);
  8471. foreach (SemiReworkRPSEntity item in defect.DefectResponsibles)
  8472. {
  8473. paras = new OracleParameter[]{
  8474. new OracleParameter(":semireworkdefectid",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
  8475. new OracleParameter(":staffid",OracleDbType.Int32,item.StaffID,ParameterDirection.Input),
  8476. new OracleParameter(":semireworkid",OracleDbType.Int32,srID,ParameterDirection.Input),
  8477. new OracleParameter(":userid",OracleDbType.Int32,item.UserID,ParameterDirection.Input),
  8478. new OracleParameter(":usercode",OracleDbType.NVarchar2,item.UserCode,ParameterDirection.Input),
  8479. new OracleParameter(":ujobsid",OracleDbType.Int32,item.UJobsID,ParameterDirection.Input),
  8480. new OracleParameter(":sjobsid",OracleDbType.Int32,item.SJobsID,ParameterDirection.Input),
  8481. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8482. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8483. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8484. };
  8485. con.ExecuteNonQuery(sqlStringRPS, paras);
  8486. }
  8487. }
  8488. #endregion
  8489. #region 更新在产数据
  8490. string sqlStringInp = "update tp_pm_inproduction inp\n" +
  8491. " set inp.reworkprocedureid = :pid\n" +
  8492. " ,inp.isreworkflag = '2'\n" +
  8493. " ,inp.semicheckid = :srid\n" +
  8494. " where inp.barcode = :barcode";
  8495. paras = new OracleParameter[]{
  8496. new OracleParameter(":pid",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
  8497. new OracleParameter(":srid",OracleDbType.Int32,srID,ParameterDirection.Input),
  8498. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8499. };
  8500. con.ExecuteNonQuery(sqlStringInp, paras);
  8501. #endregion
  8502. con.Commit();
  8503. return resultEntity;
  8504. }
  8505. catch (Exception ex)
  8506. {
  8507. throw ex;
  8508. }
  8509. finally
  8510. {
  8511. if (con.ConnState == ConnectionState.Open)
  8512. {
  8513. con.Disconnect();
  8514. }
  8515. }
  8516. }
  8517. /// <summary>
  8518. /// 编辑半检返修
  8519. /// </summary>
  8520. /// <param name="entityobj"></param>
  8521. /// <param name="sUserInfo"></param>
  8522. /// <returns></returns>
  8523. public static ServiceResultEntity EditSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
  8524. {
  8525. IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8526. try
  8527. {
  8528. ServiceResultEntity resultEntity = new ServiceResultEntity();
  8529. resultEntity.Result = 1;
  8530. if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) ||
  8531. entityobj.SemiReworkDefects == null || entityobj.SemiReworkDefects.Count == 0)
  8532. {
  8533. resultEntity.Result = -1;
  8534. resultEntity.Message = "数据错误";
  8535. return resultEntity;
  8536. }
  8537. con.Connect();
  8538. string barcode = entityobj.BarCode;
  8539. #region 验证条码
  8540. // 1.判断产品是否在产
  8541. string sql = @"select p.*,u.usercode from TP_PM_InProduction p inner join tp_mst_user u on u.userid=p.userid where p.BarCode=:BarCode for update";
  8542. OracleParameter[] paras = new OracleParameter[]{
  8543. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8544. };
  8545. DataTable dsResult = con.GetSqlResultToDt(sql, paras);
  8546. if (dsResult == null || dsResult.Rows.Count == 0)
  8547. {
  8548. resultEntity.Result = -1;// 不在在产表中
  8549. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  8550. return resultEntity;
  8551. }
  8552. DataRow dataRow = dsResult.Rows[0];
  8553. if (dataRow["InScrapFlag"].ToString() == "1")
  8554. {
  8555. resultEntity.Result = -2; //报损待审批
  8556. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  8557. return resultEntity;
  8558. }
  8559. if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
  8560. {
  8561. resultEntity.Result = -3; //登窑车后不允许半成品检测
  8562. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
  8563. return resultEntity;
  8564. }
  8565. if (dataRow["IsReworkFlag"].ToString() == "1")
  8566. {
  8567. resultEntity.Result = -4; //半检返工
  8568. resultEntity.Message = "条码[" + barcode + "]已半检返工";
  8569. return resultEntity;
  8570. }
  8571. if (dataRow["IsReworkFlag"].ToString() != "2")
  8572. {
  8573. resultEntity.Result = -5; //半检返修
  8574. resultEntity.Message = "条码[" + barcode + "]未半检返修";
  8575. return resultEntity;
  8576. }
  8577. if (Convert.ToInt32(dataRow["SemiCheckID"]) != entityobj.SemiReworkID)
  8578. {
  8579. resultEntity.Result = -6; //半检返修
  8580. resultEntity.Message = "条码[" + barcode + "]已重新登记半检返修";
  8581. return resultEntity;
  8582. }
  8583. #endregion
  8584. #region 停用数据
  8585. //xuwei modify 2019-11-18 如果半检工号不同 跳过停用数据
  8586. //通过 SEMIREWORKUSERCODE 半检工号 与 当前操作工号 判定识别
  8587. string isSameUser = con.GetSqlResultToStr($@"
  8588. SELECT
  8589. count( SEMIREWORKID )
  8590. FROM
  8591. TP_PM_SEMIREWORK
  8592. WHERE
  8593. SEMIREWORKID = {entityobj.SemiReworkID}
  8594. AND SEMIREWORKUSERCODE = '{sUserInfo.UserCode}'
  8595. ");
  8596. //xuwei modify 2019-11-18 如果半检工号不同 跳过停用数据
  8597. if(isSameUser == "1")
  8598. {
  8599. paras = new OracleParameter[]{
  8600. new OracleParameter(":userid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8601. new OracleParameter(":SemiReworkID",OracleDbType.Int32,entityobj.SemiReworkID,ParameterDirection.Input),
  8602. };
  8603. string sqldelete = "update TP_PM_SemiReworkRPS\n" +
  8604. " set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
  8605. " where SemiReworkID = :SemiReworkID";
  8606. con.ExecuteNonQuery(sqldelete, paras);
  8607. sqldelete = "update TP_PM_SemiReworkDefect\n" +
  8608. " set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
  8609. " where SemiReworkID = :SemiReworkID";
  8610. con.ExecuteNonQuery(sqldelete, paras);
  8611. sqldelete = " update TP_PM_SemiRework\n" +
  8612. " set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
  8613. " where SemiReworkID = :SemiReworkID";
  8614. con.ExecuteNonQuery(sqldelete, paras);
  8615. }
  8616. #endregion
  8617. #region 保存数据
  8618. sql = "select SEQ_PM_SemiRework_ID.nextval from dual";
  8619. object srID = con.GetSqlResultToObj(sql);
  8620. // 返修
  8621. string sqlString = "insert into tp_pm_semirework\n" +
  8622. " (SEMIREWORKID\n" +
  8623. " ,BARCODE\n" +
  8624. " ,PRODUCTIONLINEID\n" +
  8625. " ,PROCEDUREID\n" +
  8626. " ,PROCEDURETIME\n" +
  8627. " ,GOODSID\n" +
  8628. " ,GOODSCODE\n" +
  8629. " ,USERID\n" +
  8630. " ,USERCODE\n" +
  8631. " ,PRODUCTIONDATAID\n" +
  8632. " ,GROUTINGDAILYID\n" +
  8633. " ,GROUTINGDAILYDETAILID\n" +
  8634. " ,GROUTINGLINEID\n" +
  8635. " ,GROUTINGLINECODE\n" +
  8636. " ,GROUTINGLINEDETAILID\n" +
  8637. " ,GROUTINGDATE\n" +
  8638. " ,GROUTINGMOULDCODE\n" +
  8639. " ,GROUTINGUSERID\n" +
  8640. " ,GROUTINGUSERCODE\n" +
  8641. " ,SEMIREWORKUSERID\n" +
  8642. " ,SEMIREWORKUSERCODE\n" +
  8643. " ,SEMIREWORKTIME\n" +
  8644. " ,REWORKPROCEDUREID\n" +
  8645. " ,REMARKS\n" +
  8646. " ,ACCOUNTID\n" +
  8647. " ,VALUEFLAG\n" +
  8648. " ,CREATEUSERID\n" +
  8649. " ,UPDATEUSERID)\n" +
  8650. "values\n" +
  8651. " (:SEMIREWORKID\n" +
  8652. " ,:BARCODE\n" +
  8653. " ,:PRODUCTIONLINEID\n" +
  8654. " ,:PROCEDUREID\n" +
  8655. " ,:PROCEDURETIME\n" +
  8656. " ,:GOODSID\n" +
  8657. " ,:GOODSCODE\n" +
  8658. " ,:USERID\n" +
  8659. " ,:USERCODE\n" +
  8660. " ,:PRODUCTIONDATAID\n" +
  8661. " ,:GROUTINGDAILYID\n" +
  8662. " ,:GROUTINGDAILYDETAILID\n" +
  8663. " ,:GROUTINGLINEID\n" +
  8664. " ,:GROUTINGLINECODE\n" +
  8665. " ,:GROUTINGLINEDETAILID\n" +
  8666. " ,:GROUTINGDATE\n" +
  8667. " ,:GROUTINGMOULDCODE\n" +
  8668. " ,:GROUTINGUSERID\n" +
  8669. " ,:GROUTINGUSERCODE\n" +
  8670. " ,:SEMIREWORKUSERID\n" +
  8671. " ,:SEMIREWORKUSERCODE\n" +
  8672. //" ,:SEMIREWORKTIME\n" +
  8673. " ,sysdate\n" +
  8674. " ,:REWORKPROCEDUREID\n" +
  8675. " ,:REMARKS\n" +
  8676. " ,:ACCOUNTID\n" +
  8677. " ,'1'\n" +
  8678. " ,:CREATEUSERID\n" +
  8679. " ,:UPDATEUSERID)\n";
  8680. paras = new OracleParameter[]{
  8681. new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
  8682. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8683. new OracleParameter(":PRODUCTIONLINEID",OracleDbType.Int32,dataRow["PRODUCTIONLINEID"],ParameterDirection.Input),
  8684. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,dataRow["PROCEDUREID"],ParameterDirection.Input),
  8685. new OracleParameter(":PROCEDURETIME",OracleDbType.Date,dataRow["PROCEDURETIME"],ParameterDirection.Input),
  8686. new OracleParameter(":GOODSID",OracleDbType.Int32,dataRow["GOODSID"],ParameterDirection.Input),
  8687. new OracleParameter(":GOODSCODE",OracleDbType.NVarchar2,dataRow["GOODSCODE"],ParameterDirection.Input),
  8688. new OracleParameter(":USERID",OracleDbType.Int32,dataRow["USERID"],ParameterDirection.Input),
  8689. new OracleParameter(":USERCODE",OracleDbType.NVarchar2,dataRow["USERCODE"],ParameterDirection.Input),
  8690. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,dataRow["PRODUCTIONDATAID"],ParameterDirection.Input),
  8691. new OracleParameter(":GROUTINGDAILYID",OracleDbType.Int32,dataRow["GROUTINGDAILYID"],ParameterDirection.Input),
  8692. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,dataRow["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  8693. new OracleParameter(":GROUTINGLINEID",OracleDbType.Int32,dataRow["GROUTINGLINEID"],ParameterDirection.Input),
  8694. new OracleParameter(":GROUTINGLINECODE",OracleDbType.NVarchar2,dataRow["GROUTINGLINECODE"],ParameterDirection.Input),
  8695. new OracleParameter(":GROUTINGLINEDETAILID",OracleDbType.Int32,dataRow["GROUTINGLINEDETAILID"],ParameterDirection.Input),
  8696. new OracleParameter(":GROUTINGDATE",OracleDbType.Date,dataRow["GROUTINGDATE"],ParameterDirection.Input),
  8697. new OracleParameter(":GROUTINGMOULDCODE",OracleDbType.NVarchar2,dataRow["GROUTINGMOULDCODE"],ParameterDirection.Input),
  8698. new OracleParameter(":GROUTINGUSERID",OracleDbType.Int32,dataRow["GROUTINGUSERID"],ParameterDirection.Input),
  8699. new OracleParameter(":GROUTINGUSERCODE",OracleDbType.NVarchar2,dataRow["GROUTINGUSERCODE"],ParameterDirection.Input),
  8700. //new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,entityobj.SEMIREWORKUSERID,ParameterDirection.Input),
  8701. //new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,entityobj.UserCode,ParameterDirection.Input),
  8702. //new OracleParameter(":SEMIREWORKTIME",OracleDbType.Date,sUserInfo.entityobj,ParameterDirection.Input),
  8703. new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8704. new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
  8705. new OracleParameter(":REWORKPROCEDUREID",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
  8706. new OracleParameter(":REMARKS",OracleDbType.NVarchar2,entityobj.Remarks,ParameterDirection.Input),
  8707. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8708. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8709. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8710. };
  8711. con.ExecuteNonQuery(sqlString, paras);
  8712. // 缺陷
  8713. string sqlStringDefect =
  8714. "insert into TP_PM_SemiReworkDefect\n" +
  8715. " (SEMIREWORKDEFECTID\n" +
  8716. " ,SEMIREWORKID\n" +
  8717. " ,DEFECTID\n" +
  8718. " ,DEFECTCODE\n" +
  8719. " ,DEFECTNAME\n" +
  8720. " ,DEFECTPOSITIONID\n" +
  8721. " ,DEFECTPOSITIONCODE\n" +
  8722. " ,DEFECTPOSITIONNAME\n" +
  8723. " ,SCRAPRESPONFLAG\n" +
  8724. " ,DEFECTPRODUCTIONDATAID\n" +
  8725. " ,DEFECTPROCEDUREID\n" +
  8726. " ,DEFECTUSERID\n" +
  8727. " ,DEFECTUSERCODE\n" +
  8728. " ,REMARKS\n" +
  8729. " ,ACCOUNTID\n" +
  8730. " ,VALUEFLAG\n" +
  8731. " ,CREATEUSERID\n" +
  8732. " ,UPDATEUSERID)\n" +
  8733. "values\n" +
  8734. " (:SEMIREWORKDEFECTID\n" +
  8735. " ,:SEMIREWORKID\n" +
  8736. " ,:DEFECTID\n" +
  8737. " ,:DEFECTCODE\n" +
  8738. " ,:DEFECTNAME\n" +
  8739. " ,:DEFECTPOSITIONID\n" +
  8740. " ,:DEFECTPOSITIONCODE\n" +
  8741. " ,:DEFECTPOSITIONNAME\n" +
  8742. " ,:SCRAPRESPONFLAG\n" +
  8743. " ,:DEFECTPRODUCTIONDATAID\n" +
  8744. " ,:DEFECTPROCEDUREID\n" +
  8745. " ,:DEFECTUSERID\n" +
  8746. " ,:DEFECTUSERCODE\n" +
  8747. " ,:REMARKS\n" +
  8748. " ,:ACCOUNTID\n" +
  8749. " ,:VALUEFLAG\n" + //xuwei add 2019-11-14
  8750. " ,:CREATEUSERID\n" +
  8751. " ,:UPDATEUSERID)";
  8752. string sqlStringRPS =
  8753. "insert into TP_PM_SemiReworkRPS\n" +
  8754. " (semireworkdefectid\n" +
  8755. " ,staffid\n" +
  8756. " ,semireworkid\n" +
  8757. " ,userid\n" +
  8758. " ,usercode\n" +
  8759. " ,ujobsid\n" +
  8760. " ,sjobsid\n" +
  8761. " ,accountid\n" +
  8762. " ,valueflag\n" +
  8763. " ,createuserid\n" +
  8764. " ,updateuserid)\n" +
  8765. "values\n" +
  8766. " (:semireworkdefectid\n" +
  8767. " ,:staffid\n" +
  8768. " ,:semireworkid\n" +
  8769. " ,:userid\n" +
  8770. " ,:usercode\n" +
  8771. " ,:ujobsid\n" +
  8772. " ,:sjobsid\n" +
  8773. " ,:accountid\n" +
  8774. " ,'1'\n" +
  8775. " ,:createuserid\n" +
  8776. " ,:updateuserid)";
  8777. foreach (SemiReworkDefectEntity defect in entityobj.SemiReworkDefects)
  8778. {
  8779. sql = "select SEQ_PM_SEMIREWORKDEFECT_ID.nextval from dual";
  8780. object srdefectID = con.GetSqlResultToObj(sql);
  8781. paras = new OracleParameter[]{
  8782. new OracleParameter(":SEMIREWORKDEFECTID",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
  8783. new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
  8784. new OracleParameter(":DEFECTID",OracleDbType.Int32,defect.DefectID,ParameterDirection.Input),
  8785. new OracleParameter(":DEFECTCODE",OracleDbType.NVarchar2,defect.DefectCode,ParameterDirection.Input),
  8786. new OracleParameter(":DEFECTNAME",OracleDbType.NVarchar2,defect.DefectName,ParameterDirection.Input),
  8787. new OracleParameter(":DEFECTPOSITIONID",OracleDbType.Int32,defect.DefectPositionID,ParameterDirection.Input),
  8788. new OracleParameter(":DEFECTPOSITIONCODE",OracleDbType.NVarchar2,defect.DefectPositionCode,ParameterDirection.Input),
  8789. new OracleParameter(":DEFECTPOSITIONNAME",OracleDbType.NVarchar2,defect.DefectPositionName,ParameterDirection.Input),
  8790. new OracleParameter(":SCRAPRESPONFLAG",OracleDbType.NVarchar2,defect.ScrapResponFlag,ParameterDirection.Input),
  8791. new OracleParameter(":DEFECTPRODUCTIONDATAID",OracleDbType.Int32,defect.DefectProductionDataID,ParameterDirection.Input),
  8792. new OracleParameter(":DEFECTPROCEDUREID",OracleDbType.Int32,defect.DefectProcedureID,ParameterDirection.Input),
  8793. new OracleParameter(":DEFECTUSERID",OracleDbType.Int32,defect.DefectUserID,ParameterDirection.Input),
  8794. new OracleParameter(":DEFECTUSERCODE",OracleDbType.NVarchar2,defect.DefectUserCode,ParameterDirection.Input),
  8795. new OracleParameter(":REMARKS",OracleDbType.NVarchar2,defect.Remarks,ParameterDirection.Input),
  8796. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8797. //xuwei add 2019-11-14
  8798. new OracleParameter(":VALUEFLAG",OracleDbType.Char,defect.ValueFlag,ParameterDirection.Input),
  8799. //xuwei end
  8800. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8801. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8802. };
  8803. con.ExecuteNonQuery(sqlStringDefect, paras);
  8804. foreach (SemiReworkRPSEntity item in defect.DefectResponsibles)
  8805. {
  8806. paras = new OracleParameter[]{
  8807. new OracleParameter(":semireworkdefectid",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
  8808. new OracleParameter(":staffid",OracleDbType.Int32,item.StaffID,ParameterDirection.Input),
  8809. new OracleParameter(":semireworkid",OracleDbType.Int32,srID,ParameterDirection.Input),
  8810. new OracleParameter(":userid",OracleDbType.Int32,item.UserID,ParameterDirection.Input),
  8811. new OracleParameter(":usercode",OracleDbType.NVarchar2,item.UserCode,ParameterDirection.Input),
  8812. new OracleParameter(":ujobsid",OracleDbType.Int32,item.UJobsID,ParameterDirection.Input),
  8813. new OracleParameter(":sjobsid",OracleDbType.Int32,item.SJobsID,ParameterDirection.Input),
  8814. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8815. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8816. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8817. };
  8818. con.ExecuteNonQuery(sqlStringRPS, paras);
  8819. }
  8820. }
  8821. #endregion
  8822. #region 更新在产数据
  8823. string sqlStringInp = "update tp_pm_inproduction inp\n" +
  8824. " set inp.reworkprocedureid = :pid\n" +
  8825. " ,inp.isreworkflag = '2'\n" +
  8826. " ,inp.semicheckid = :srid\n" +
  8827. " where inp.barcode = :barcode";
  8828. paras = new OracleParameter[]{
  8829. new OracleParameter(":pid",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
  8830. new OracleParameter(":srid",OracleDbType.Int32,srID,ParameterDirection.Input),
  8831. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8832. };
  8833. con.ExecuteNonQuery(sqlStringInp, paras);
  8834. #endregion
  8835. con.Commit();
  8836. return resultEntity;
  8837. }
  8838. catch (Exception ex)
  8839. {
  8840. throw ex;
  8841. }
  8842. finally
  8843. {
  8844. if (con.ConnState == ConnectionState.Open)
  8845. {
  8846. con.Disconnect();
  8847. }
  8848. }
  8849. }
  8850. /// <summary>
  8851. /// 撤销半检返修
  8852. /// </summary>
  8853. /// <param name="entityobj"></param>
  8854. /// <param name="sUserInfo"></param>
  8855. /// <returns></returns>
  8856. public static ServiceResultEntity CancelSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
  8857. {
  8858. IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8859. try
  8860. {
  8861. ServiceResultEntity resultEntity = new ServiceResultEntity();
  8862. resultEntity.Result = 1;
  8863. if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) || entityobj.SemiReworkID < 1)
  8864. {
  8865. resultEntity.Result = -1;
  8866. resultEntity.Message = "数据错误";
  8867. return resultEntity;
  8868. }
  8869. con.Connect();
  8870. string barcode = entityobj.BarCode;
  8871. #region 验证条码
  8872. // 1.判断产品是否在产
  8873. string sql = @"select * from TP_PM_InProduction where BarCode=:BarCode for update";
  8874. OracleParameter[] paras = new OracleParameter[]{
  8875. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8876. };
  8877. DataTable dsResult = con.GetSqlResultToDt(sql, paras);
  8878. if (dsResult == null || dsResult.Rows.Count == 0)
  8879. {
  8880. resultEntity.Result = -1;// 不在在产表中
  8881. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  8882. return resultEntity;
  8883. }
  8884. DataRow dataRow = dsResult.Rows[0];
  8885. if (dataRow["InScrapFlag"].ToString() == "1")
  8886. {
  8887. resultEntity.Result = -2; //报损待审批
  8888. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  8889. return resultEntity;
  8890. }
  8891. if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
  8892. {
  8893. resultEntity.Result = -3; //登窑车后不允许半成品检测
  8894. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
  8895. return resultEntity;
  8896. }
  8897. if (dataRow["IsReworkFlag"].ToString() == "1")
  8898. {
  8899. resultEntity.Result = -4; //半检返工
  8900. resultEntity.Message = "条码[" + barcode + "]已半检返工";
  8901. return resultEntity;
  8902. }
  8903. if (dataRow["IsReworkFlag"].ToString() != "2")
  8904. {
  8905. resultEntity.Result = -5; //半检返修
  8906. resultEntity.Message = "条码[" + barcode + "]未半检返修";
  8907. return resultEntity;
  8908. }
  8909. if (Convert.ToInt32(dataRow["SemiCheckID"]) != entityobj.SemiReworkID)
  8910. {
  8911. resultEntity.Result = -6; //半检返修
  8912. resultEntity.Message = "条码[" + barcode + "]已重新登记半检返修";
  8913. return resultEntity;
  8914. }
  8915. #endregion
  8916. #region 停用数据
  8917. paras = new OracleParameter[]{
  8918. new OracleParameter(":userid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8919. new OracleParameter(":usercode",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
  8920. new OracleParameter(":SemiReworkID",OracleDbType.Int32,entityobj.SemiReworkID,ParameterDirection.Input),
  8921. };
  8922. //string sqldelete = "update TP_PM_SemiReworkRPS\n" +
  8923. //" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
  8924. //" where SemiReworkID = :SemiReworkID";
  8925. //con.ExecuteNonQuery(sqldelete, paras);
  8926. //sqldelete = "update TP_PM_SemiReworkDefect\n" +
  8927. //" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
  8928. //" where SemiReworkID = :SemiReworkID";
  8929. //con.ExecuteNonQuery(sqldelete, paras);
  8930. //sqldelete = " update TP_PM_SemiRework\n" +
  8931. //" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
  8932. //" where SemiReworkID = :SemiReworkID";
  8933. //con.ExecuteNonQuery(sqldelete, paras);
  8934. string sqlString = "update TP_PM_SemiRework\n" +
  8935. " set BackOutFlag = '1'\n" +
  8936. " ,BackOutTime = sysdate\n" +
  8937. " ,BackOutUserID = :userid\n" +
  8938. " ,BackOutUserCode = :usercode\n" +
  8939. " ,UpdateTime = sysdate\n" +
  8940. " ,UpdateUserID = :userid\n" +
  8941. " where SemiReworkID = :SemiReworkID";
  8942. con.ExecuteNonQuery(sqlString, paras);
  8943. #endregion
  8944. #region 更新在产数据
  8945. string sqlStringInp = "update tp_pm_inproduction inp\n" +
  8946. " set inp.reworkprocedureid = null\n" +
  8947. " ,inp.isreworkflag = '0'\n" +
  8948. " ,inp.semicheckid = null\n" +
  8949. " where inp.barcode = :barcode";
  8950. paras = new OracleParameter[]{
  8951. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8952. };
  8953. con.ExecuteNonQuery(sqlStringInp, paras);
  8954. #endregion
  8955. con.Commit();
  8956. return resultEntity;
  8957. }
  8958. catch (Exception ex)
  8959. {
  8960. throw ex;
  8961. }
  8962. finally
  8963. {
  8964. if (con.ConnState == ConnectionState.Open)
  8965. {
  8966. con.Disconnect();
  8967. }
  8968. }
  8969. }
  8970. public static ServiceResultEntity GetSemiReworkForPDAEdit(int semiReworkID, SUserInfo sUserInfo)
  8971. {
  8972. return null;
  8973. }
  8974. #endregion
  8975. #region 窑车漏扫补件
  8976. /// <summary>
  8977. /// 验证窑车是否存在
  8978. /// </summary>
  8979. /// <param name="cre"></param>
  8980. /// <param name="userInfo"></param>
  8981. /// <returns></returns>
  8982. public static ServiceResultEntity CheckKilnCar(ClientRequestEntity cre, SUserInfo userInfo)
  8983. {
  8984. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  8985. try
  8986. {
  8987. string sqlString = "select kc.kilncarid,kc.kilnid\n" +
  8988. " from tp_mst_kilncar kc\n" +
  8989. " where kc.valueflag = '1'\n" +
  8990. " and kc.accountid = @accountID@\n" +
  8991. " and kc.kilncarcode = @kilncarcode@";
  8992. CDAParameter[] paras = new CDAParameter[]
  8993. {
  8994. new CDAParameter("accountID", userInfo.AccountID),
  8995. new CDAParameter("kilncarcode", cre.Properties["kilncarcode"]),
  8996. };
  8997. ServiceResultEntity sre = new ServiceResultEntity();
  8998. DataTable data = dataAccess.ExecuteDatatable(sqlString, paras);
  8999. if (data == null || data.Rows.Count == 0)
  9000. {
  9001. sre.Status = Constant.ServiceResultStatus.Other;
  9002. sre.OtherStatus = 1;
  9003. sre.Message = "此窑车不存在";
  9004. return sre;
  9005. }
  9006. sre.Result = data.Rows[0]["kilncarid"];
  9007. sqlString = "Select procedureID From tp_pc_procedureKiln t where t.KilnID = @KilnID@ and t.procedureID = @procedureID@";
  9008. paras = new CDAParameter[]
  9009. {
  9010. new CDAParameter("KilnID", data.Rows[0]["kilnid"]),
  9011. new CDAParameter("procedureID", cre.Properties["procedureID"]),
  9012. };
  9013. data = dataAccess.ExecuteDatatable(sqlString, paras);
  9014. if (data == null || data.Rows.Count == 0)
  9015. {
  9016. sre.Status = Constant.ServiceResultStatus.Other;
  9017. sre.OtherStatus = 2;
  9018. sre.Message = "此窑车不不允许经过此工序";
  9019. return sre;
  9020. }
  9021. return sre;
  9022. }
  9023. catch (Exception ex)
  9024. {
  9025. throw ex;
  9026. }
  9027. finally
  9028. {
  9029. dataAccess?.Dispose();
  9030. }
  9031. }
  9032. /// <summary>
  9033. /// 验证窑车烧成批次号是否存在 和 是否能补漏扫
  9034. /// </summary>
  9035. /// <param name="cre"></param>
  9036. /// <param name="userInfo"></param>
  9037. /// <returns></returns>
  9038. public static ServiceResultEntity CheckKilnCarBatchNo(ClientRequestEntity cre, SUserInfo userInfo)
  9039. {
  9040. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9041. try
  9042. {
  9043. string sqlString = "select t.kilncardataid, t.modelType, t.procedureid\n" +
  9044. " from tp_pm_kilncardata t\n" +
  9045. " where t.kilnid = @kilnid@\n" +
  9046. " and t.kilncarid = @kilncarid@\n" +
  9047. " and t.valueflag = '1'\n" +
  9048. " and t.kilncarbatchno = @kilncarbatchno@";
  9049. CDAParameter[] paras = new CDAParameter[]
  9050. {
  9051. new CDAParameter("kilnid", cre.Properties["KilnID"]),
  9052. new CDAParameter("kilncarid", cre.Properties["KilnCarID"]),
  9053. new CDAParameter("kilncarbatchno", cre.Properties["KilnCarBatchNo"]),
  9054. };
  9055. ServiceResultEntity sre = new ServiceResultEntity();
  9056. DataTable data = dataAccess.ExecuteDatatable(sqlString, paras);
  9057. if (data == null || data.Rows.Count == 0)
  9058. {
  9059. sre.Status = Constant.ServiceResultStatus.Other;
  9060. sre.OtherStatus = 1;
  9061. sre.Message = "此烧成批次号不存在";
  9062. return sre;
  9063. }
  9064. int carProcedureid = Convert.ToInt32(data.Rows[0]["procedureid"]);
  9065. string modelType = data.Rows[data.Rows.Count-1]["modelType"] + "";
  9066. if (modelType != "4")
  9067. {
  9068. sre.Status = Constant.ServiceResultStatus.Other;
  9069. sre.OtherStatus = 2;
  9070. sre.Message = "此窑车还未卸窑不能补件";
  9071. return sre;
  9072. }
  9073. if (carProcedureid != Convert.ToInt32(cre.Properties["ProcedureID"]))
  9074. {
  9075. sre.Status = Constant.ServiceResultStatus.Other;
  9076. sre.OtherStatus = 3;
  9077. sre.Message = "此窑车烧成批次不是在当前工序登窑";
  9078. return sre;
  9079. }
  9080. return sre;
  9081. }
  9082. catch (Exception ex)
  9083. {
  9084. throw ex;
  9085. }
  9086. finally
  9087. {
  9088. dataAccess?.Dispose();
  9089. }
  9090. }
  9091. /// <summary>
  9092. /// 窑车漏扫补件
  9093. /// </summary>
  9094. /// <param name="cre"></param>
  9095. /// <param name="userInfo"></param>
  9096. /// <returns></returns>
  9097. public static ServiceResultEntity SetKilnCarMissing(ClientRequestEntity cre, SUserInfo userInfo)
  9098. {
  9099. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9100. try
  9101. {
  9102. ServiceResultEntity sre = new ServiceResultEntity();
  9103. dataAccess.Open(true);
  9104. DataTable data = cre.Data.Tables[0];
  9105. string CENTRALIZEDBATCHNO = System.Guid.NewGuid().ToString().ToUpper();
  9106. string sqlString = "\n" +
  9107. "insert into tp_pm_productiondatain\n" +
  9108. " (BARCODE\n" +
  9109. " ,CENTRALIZEDBATCHNO\n" +
  9110. " ,PRODUCTIONLINEID\n" +
  9111. " ,PRODUCTIONLINECODE\n" +
  9112. " ,PRODUCTIONLINENAME\n" +
  9113. " ,PROCEDUREID\n" +
  9114. " ,PROCEDURECODE\n" +
  9115. " ,PROCEDURENAME\n" +
  9116. " ,PROCEDUREMODEL\n" +
  9117. " ,MODELTYPE\n" +
  9118. " ,PIECETYPE\n" +
  9119. " ,ISREWORKED\n" +
  9120. " ,NODETYPE\n" +
  9121. " ,ISPUBLICBODY\n" +
  9122. " ,ISREFIRE\n" +
  9123. " ,ORGANIZATIONID\n" +
  9124. " ,GOODSID\n" +
  9125. " ,GOODSCODE\n" +
  9126. " ,GOODSNAME\n" +
  9127. " ,USERID\n" +
  9128. " ,USERCODE\n" +
  9129. " ,USERNAME\n" +
  9130. " ,KILNID\n" +
  9131. " ,KILNCODE\n" +
  9132. " ,KILNNAME\n" +
  9133. " ,KILNCARID\n" +
  9134. " ,KILNCARCODE\n" +
  9135. " ,KILNCARNAME\n" +
  9136. " ,KILNCARBATCHNO\n" +
  9137. " ,KILNCARPOSITION\n" +
  9138. " ,REMARKS\n" +
  9139. " ,ACCOUNTDATE\n" +
  9140. " ,ACCOUNTID\n" +
  9141. " ,VALUEFLAG\n" +
  9142. " ,CREATEUSERID\n" +
  9143. " ,UPDATEUSERID\n" +
  9144. " ,GROUTINGDATE\n" +
  9145. " ,GROUTINGMOULDCODE\n" +
  9146. " ,MOULDCODE\n" +
  9147. " ,GROUTINGUSERID\n" +
  9148. " ,GROUTINGUSERCODE\n" +
  9149. " ,GROUTINGNUM\n" +
  9150. " ,GROUTINGDAILYID\n" +
  9151. " ,GROUTINGDAILYDETAILID\n" +
  9152. " ,GROUTINGLINEID\n" +
  9153. " ,GROUTINGLINECODE\n" +
  9154. " ,GROUTINGLINENAME\n" +
  9155. " ,GMOULDTYPEID\n" +
  9156. " ,CANMANYTIMES\n" +
  9157. " ,GROUTINGLINEDETAILID\n" +
  9158. " ,SPECIALREPAIRFLAG\n" +
  9159. " ,CLASSESSETTINGID\n" +
  9160. " ,LOGOID\n" +
  9161. " ,CHECKTIME)\n" +
  9162. " select inp.barcode\n" +
  9163. " ,@CENTRALIZEDBATCHNO@\n" +
  9164. " ,kd.productionlineid\n" +
  9165. " ,pline.PRODUCTIONLINECODE\n" +
  9166. " ,pline.PRODUCTIONLINENAME\n" +
  9167. " ,kd.procedureid\n" +
  9168. " ,pcp.PROCEDURECODE\n" +
  9169. " ,pcp.PROCEDURENAME\n" +
  9170. " ,pcp.proceduremodel\n" +
  9171. " ,pcp.modeltype\n" +
  9172. " ,pcp.piecetype\n" +
  9173. " ,'0'\n" +
  9174. " ,pcp.nodetype\n" +
  9175. " ,inp.ispublicbody\n" +
  9176. " ,inp.isrefire\n" +
  9177. " ,pcp.organizationid\n" +
  9178. " ,inp.goodsid\n" +
  9179. " ,inp.goodscode\n" +
  9180. " ,inp.goodsname\n" +
  9181. //" ,kd.USERID\n" +
  9182. //" ,kd.USERCODE\n" +
  9183. //" ,kd.USERNAME\n" +
  9184. " ,@USERID@\n" +
  9185. " ,@USERCODE@\n" +
  9186. " ,@USERNAME@\n" +
  9187. " ,kd.KILNID\n" +
  9188. " ,k.KILNCODE\n" +
  9189. " ,k.KILNNAME\n" +
  9190. " ,kc.KILNCARID\n" +
  9191. " ,kc.KILNCARCODE\n" +
  9192. " ,kc.KILNCARNAME\n" +
  9193. " ,kd.KILNCARBATCHNO\n" +
  9194. " ,@KILNCARPOSITION@\n" +
  9195. " ,'窑车漏扫补件'\n" +
  9196. " ,trunc(sysdate)\n" +
  9197. " ,@ACCOUNTID@\n" +
  9198. " ,'1'\n" +
  9199. " ,@CREATEUSERID@\n" +
  9200. " ,@CREATEUSERID@\n" +
  9201. " ,inp.GROUTINGDATE\n" +
  9202. " ,inp.GROUTINGMOULDCODE\n" +
  9203. " ,inp.MOULDCODE\n" +
  9204. " ,inp.GROUTINGUSERID\n" +
  9205. " ,inp.GROUTINGUSERCODE\n" +
  9206. " ,inp.GROUTINGNUM\n" +
  9207. " ,inp.GROUTINGDAILYID\n" +
  9208. " ,inp.GROUTINGDAILYDETAILID\n" +
  9209. " ,inp.GROUTINGLINEID\n" +
  9210. " ,inp.GROUTINGLINECODE\n" +
  9211. " ,inp.GROUTINGLINENAME\n" +
  9212. " ,inp.GMOULDTYPEID\n" +
  9213. " ,inp.CANMANYTIMES\n" +
  9214. " ,inp.GROUTINGLINEDETAILID\n" +
  9215. " ,inp.SPECIALREPAIRFLAG\n" +
  9216. " ,kd.CLASSESSETTINGID\n" +
  9217. " ,inp.LOGOID\n" +
  9218. " ,kd.CREATETIME\n" +
  9219. " from tp_pm_inproduction inp\n" +
  9220. " inner join tp_pm_kilncardata kd\n" +
  9221. " on kd.kilncarbatchno = @kilncarbatchno@\n" +
  9222. " and kd.valueflag = '1'\n" +
  9223. " inner join tp_pc_productionline pline\n" +
  9224. " on pline.productionlineid = kd.productionlineid\n" +
  9225. " inner join tp_pc_procedure pcp\n" +
  9226. " on pcp.procedureid = kd.procedureid\n" +
  9227. " inner join tp_mst_kiln k\n" +
  9228. " on kd.kilnid = k.kilnid\n" +
  9229. " inner join tp_mst_kilncar kc\n" +
  9230. " on kc.kilncarid = kd.kilncarid\n" +
  9231. " where inp.barcode = @barcode@\n" +
  9232. " order by kd.kilncardataid";
  9233. string sqlUpdate = "update tp_pm_inproduction t\n" +
  9234. " set (t.KILNID\n" +
  9235. " ,t.KILNCODE\n" +
  9236. " ,t.KILNNAME\n" +
  9237. " ,t.KILNCARID\n" +
  9238. " ,t.KILNCARCODE\n" +
  9239. " ,t.KILNCARNAME\n" +
  9240. " ,t.KILNCARBATCHNO\n" +
  9241. " ,t.KILNCARPOSITION\n" +
  9242. " ,t.PROCEDUREMODEL\n" +
  9243. " ,t.MODELTYPE\n" +
  9244. " ,t.FLOWPROCEDUREID\n" +
  9245. " ,t.FLOWPROCEDURETIME\n" +
  9246. " ,t.PROCEDUREID\n" +
  9247. " ,t.PROCEDURETIME\n" +
  9248. " ,t.USERID\n" +
  9249. " ,t.PRODUCTIONDATAID) =\n" +
  9250. " (select pin.KILNID\n" +
  9251. " ,pin.KILNCODE\n" +
  9252. " ,pin.KILNNAME\n" +
  9253. " ,pin.KILNCARID\n" +
  9254. " ,pin.KILNCARCODE\n" +
  9255. " ,pin.KILNCARNAME\n" +
  9256. " ,pin.KILNCARBATCHNO\n" +
  9257. " ,pin.KILNCARPOSITION\n" +
  9258. " ,pin.PROCEDUREMODEL\n" +
  9259. " ,pin.MODELTYPE\n" +
  9260. " ,pin.PROCEDUREID\n" +
  9261. " ,sysdate\n" +
  9262. " ,pin.PROCEDUREID\n" +
  9263. " ,sysdate\n" +
  9264. " ,@USERID@\n" +
  9265. " ,pin.PRODUCTIONDATAID\n" +
  9266. " from tp_pm_productiondatain pin\n" +
  9267. " where pin.productiondataid =\n" +
  9268. " (select max(productiondataid)\n" +
  9269. " from tp_pm_productiondatain ppin\n" +
  9270. " where ppin.barcode = t.barcode))\n" +
  9271. " where t.barcode = @barcode@";
  9272. foreach (DataRow item in data.Rows)
  9273. {
  9274. CDAParameter[] paras = new CDAParameter[]
  9275. {
  9276. new CDAParameter("CENTRALIZEDBATCHNO", CENTRALIZEDBATCHNO),
  9277. new CDAParameter("ACCOUNTID", userInfo.AccountID),
  9278. new CDAParameter("CREATEUSERID", userInfo.UserID),
  9279. new CDAParameter("kilncarbatchno", cre.Properties["KilnCarBatchNo"]),
  9280. new CDAParameter("barcode", item["barcode"]),
  9281. new CDAParameter("KILNCARPOSITION", item["KILNCARPOSITION"]),
  9282. new CDAParameter("USERID", userInfo.UserID),
  9283. new CDAParameter("USERCODE", userInfo.UserCode),
  9284. new CDAParameter("USERNAME", userInfo.UserName),
  9285. };
  9286. // 插入生产数据
  9287. dataAccess.ExecuteNonQuery(sqlString, paras);
  9288. // 更新在产数据
  9289. dataAccess.ExecuteNonQuery(sqlUpdate,
  9290. new CDAParameter("barcode", item["barcode"]),
  9291. new CDAParameter("USERID", userInfo.UserID));
  9292. }
  9293. dataAccess.Commit();
  9294. return sre;
  9295. }
  9296. catch (Exception ex)
  9297. {
  9298. throw ex;
  9299. }
  9300. finally
  9301. {
  9302. dataAccess?.Dispose();
  9303. }
  9304. }
  9305. #endregion
  9306. #region 梭式窑入窑计件
  9307. /// <summary>
  9308. /// 梭式窑入窑计件
  9309. /// </summary>
  9310. /// <param name="cre"></param>
  9311. /// <param name="userInfo"></param>
  9312. /// <returns></returns>
  9313. public static ServiceResultEntity SaveSKBatchNo(ClientRequestEntity cre, SUserInfo userInfo)
  9314. {
  9315. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9316. try
  9317. {
  9318. ServiceResultEntity sre = new ServiceResultEntity();
  9319. string sqlString = string.Empty;
  9320. dataAccess.Open(true);
  9321. #region 校验、获取数据
  9322. sqlString = "SELECT k.kilnid\n" +
  9323. " ,k.kilncode\n" +
  9324. " ,k.sk_date\n" +
  9325. " ,k.sk_batchno\n" +
  9326. " FROM tp_mst_kiln k\n" +
  9327. " WHERE k.valueflag = '1'\n" +
  9328. " AND k.accountid = @accountid@\n" +
  9329. " AND k.kilncode = @kilncode@\n" +
  9330. " FOR UPDATE";
  9331. CDAParameter[] paras = new CDAParameter[]
  9332. {
  9333. new CDAParameter("accountid", userInfo.AccountID),
  9334. new CDAParameter("kilncode", cre.Properties["KilnCode"])
  9335. };
  9336. DataTable dtKiln = dataAccess.ExecuteDatatable(sqlString, paras);
  9337. if (dtKiln == null || dtKiln.Rows.Count == 0)
  9338. {
  9339. sre.Message = "当前窑炉编号不存在";
  9340. sre.OtherStatus = Constant.INT_IS_NEGATIE_ONE;
  9341. return sre;
  9342. }
  9343. DataRow drKiln = dtKiln.Rows[0];
  9344. int sk_Date = 0;
  9345. int.TryParse(drKiln["SK_Date"] + "", out sk_Date);
  9346. int sk_DateNow = sk_Date;
  9347. int sk_BatchNo = 0;
  9348. int.TryParse(drKiln["SK_BatchNo"] + "", out sk_BatchNo);
  9349. if (sk_DateNow == 0)
  9350. {
  9351. sk_Date = DateTime.Now.Year;
  9352. }
  9353. else if (sk_DateNow + 1 < DateTime.Now.Year)
  9354. {
  9355. sk_Date = DateTime.Now.Year;
  9356. sk_BatchNo = 1;
  9357. }
  9358. //xuwei fix 2021-04-22 批次号不足3位补0
  9359. string sk_FULLBatchNo = drKiln["kilncode"] + "$" + sk_Date + "$" + sk_BatchNo.ToString().PadLeft(3, '0');
  9360. string newID = dataAccess.ExecuteScalar("SELECT seq_pm_kilndata_id.nextval FROM dual") + "";
  9361. #endregion
  9362. #region 插入窑炉生产数据
  9363. sqlString = "INSERT INTO tp_pm_kilndata\n" +
  9364. " (kilndataid\n" +
  9365. " ,sk_date\n" +
  9366. " ,sk_batchno\n" +
  9367. " ,kilnid\n" +
  9368. " ,sk_fullbatchno\n" +
  9369. " ,remarks\n" +
  9370. " ,accountid\n" +
  9371. " ,createuserid\n" +
  9372. " ,updateuserid)\n" +
  9373. "VALUES\n" +
  9374. " (@kilndataid@\n" +
  9375. " ,@sk_date@\n" +
  9376. " ,@sk_batchno@\n" +
  9377. " ,@kilnid@\n" +
  9378. " ,@sk_fullbatchno@\n" +
  9379. " ,@remarks@\n" +
  9380. " ,@accountid@\n" +
  9381. " ,@userid@\n" +
  9382. " ,@userid@)";
  9383. paras = new CDAParameter[]
  9384. {
  9385. new CDAParameter("kilndataid", newID),
  9386. new CDAParameter("sk_date", sk_Date),
  9387. new CDAParameter("sk_batchno", sk_BatchNo),
  9388. new CDAParameter("kilnid", drKiln["kilnid"]),
  9389. new CDAParameter("sk_fullbatchno", sk_FULLBatchNo),
  9390. new CDAParameter("remarks", cre.Properties["Remarks"]),
  9391. new CDAParameter("accountid", userInfo.AccountID),
  9392. new CDAParameter("userid", userInfo.UserID)
  9393. };
  9394. sre.OtherStatus += dataAccess.ExecuteNonQuery(sqlString, paras);
  9395. #endregion
  9396. #region 更新窑炉信息
  9397. sqlString = "UPDATE tp_mst_kiln k\n" +
  9398. " SET k.sk_date = @sk_date@\n" +
  9399. " ,k.sk_batchno = @sk_batchno@\n" +
  9400. " ,k.updateuserid = @userid@\n" +
  9401. " WHERE k.accountid = @accountid@\n" +
  9402. " AND k.kilnid = @kilnid@";
  9403. paras = new CDAParameter[]
  9404. {
  9405. new CDAParameter("sk_date",sk_Date),
  9406. new CDAParameter("sk_batchno",sk_BatchNo + 1),
  9407. new CDAParameter("userid", userInfo.UserID),
  9408. new CDAParameter("accountid", userInfo.AccountID),
  9409. new CDAParameter("kilnid", drKiln["kilnid"])
  9410. };
  9411. sre.OtherStatus += dataAccess.ExecuteNonQuery(sqlString, paras);
  9412. #endregion
  9413. #region 更新其他窑炉财年和窑号
  9414. // 如果未设置财年或者财年跨一年未更新,则更新其他窑炉财年和窑号
  9415. if (sk_DateNow == 0 || sk_DateNow + 1 < DateTime.Now.Year)
  9416. {
  9417. sqlString = "UPDATE tp_mst_kiln k\n" +
  9418. " SET k.sk_date = @sk_date@\n" +
  9419. " ,k.sk_batchno = 1\n" +
  9420. " ,k.updateuserid = @userid@\n" +
  9421. " WHERE k.accountid = @accountid@\n" +
  9422. " AND k.kilnid <> @kilnid@";
  9423. paras = new CDAParameter[]
  9424. {
  9425. new CDAParameter("sk_date",sk_Date),
  9426. new CDAParameter("userid", userInfo.UserID),
  9427. new CDAParameter("accountid", userInfo.AccountID),
  9428. new CDAParameter("kilnid", drKiln["kilnid"])
  9429. };
  9430. sre.OtherStatus += dataAccess.ExecuteNonQuery(sqlString, paras);
  9431. }
  9432. #endregion
  9433. dataAccess.Commit();
  9434. return sre;
  9435. }
  9436. catch (Exception ex)
  9437. {
  9438. throw ex;
  9439. }
  9440. finally
  9441. {
  9442. dataAccess?.Dispose();
  9443. }
  9444. }
  9445. #endregion
  9446. #region 重启3#高压注浆
  9447. /// <summary>
  9448. /// 查询3#高压注浆线
  9449. /// </summary>
  9450. /// <param name="cre"></param>
  9451. /// <param name="userInfo"></param>
  9452. /// <returns></returns>
  9453. public static ServiceResultEntity GetGroutingLine3(SUserInfo userInfo)
  9454. {
  9455. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9456. try
  9457. {
  9458. ServiceResultEntity sre = new ServiceResultEntity();
  9459. string sqlString = string.Empty;
  9460. dataAccess.Open();
  9461. sqlString = "SELECT gl.groutinglineid\n" +
  9462. " ,gl.buildingno\n" +
  9463. " ,gl.floorno\n" +
  9464. " ,gl.groutinglineno\n" +
  9465. " ,gl.groutinglinecode\n" +
  9466. " ,gl.groutinglinename\n" +
  9467. " ,gl.mouldquantity\n" +
  9468. " ,gl.gmouldtypeid\n" +
  9469. " ,gl.beginuseddate\n" +
  9470. " ,gl.enduseddate\n" +
  9471. " ,gl.remarks\n" +
  9472. " ,gl.h_linecode\n" +
  9473. " ,gl.h_batchno\n" +
  9474. " ,gs.gmouldstatusname\n" +
  9475. " ,gt.gmouldtypename\n" +
  9476. " ,gu.usercode\n" +
  9477. " ,mu.usercode AS monitorcode\n" +
  9478. " FROM tp_pc_groutingline gl\n" +
  9479. " LEFT JOIN tp_mst_gmouldtype gt\n" +
  9480. " ON gl.gmouldtypeid = gt.gmouldtypeid\n" +
  9481. " LEFT JOIN tp_sys_gmouldstatus gs\n" +
  9482. " ON gl.gmouldstatus = gs.gmouldstatusid\n" +
  9483. " LEFT JOIN tp_mst_user gu\n" +
  9484. " ON gl.userid = gu.userid\n" +
  9485. " LEFT JOIN tp_mst_user mu\n" +
  9486. " ON mu.userid = gl.monitorid\n" +
  9487. " WHERE gl.valueflag = '1'\n" +
  9488. " AND gl.h_linecode IS NOT NULL\n" +
  9489. " AND gl.h_lineindex = 1\n" +
  9490. " AND gl.accountid = @accountid@\n" +
  9491. " AND EXISTS (SELECT purviewid\n" +
  9492. " FROM tp_mst_userpurview\n" +
  9493. " WHERE purviewtype = @purviewtype@\n" +
  9494. " AND userid = @userid@\n" +
  9495. " AND (purviewid = -1 OR purviewid = gl.groutinglineid))\n" +
  9496. " ORDER BY gl.groutinglinecode";
  9497. CDAParameter[] paras = new CDAParameter[]
  9498. {
  9499. new CDAParameter("accountid", userInfo.AccountID),
  9500. new CDAParameter("purviewtype", (int)Constant.PurviewType.OperateGroutingLine),
  9501. new CDAParameter("userid", userInfo.UserID)
  9502. };
  9503. sre.Data = dataAccess.ExecuteDataset(sqlString, paras);
  9504. return sre;
  9505. }
  9506. catch (Exception ex)
  9507. {
  9508. throw ex;
  9509. }
  9510. finally
  9511. {
  9512. dataAccess?.Dispose();
  9513. }
  9514. }
  9515. /// <summary>
  9516. /// 重启3#高压注浆
  9517. /// </summary>
  9518. /// <param name="cre"></param>
  9519. /// <param name="userInfo"></param>
  9520. /// <returns></returns>
  9521. public static ServiceResultEntity SaveGroutingLine3(ClientRequestEntity cre, SUserInfo userInfo)
  9522. {
  9523. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9524. try
  9525. {
  9526. ServiceResultEntity sre = new ServiceResultEntity();
  9527. int h_batchnoNow = Convert.ToInt32(cre.Properties["H_BatchNo"]);
  9528. string sqlString = string.Empty;
  9529. dataAccess.Open(true);
  9530. #region 校验并发、获取数据
  9531. sqlString = "SELECT t.h_linecode\n" +
  9532. " FROM tp_pc_groutingline t\n" +
  9533. " WHERE t.groutinglineid = @groutinglineid@\n" +
  9534. " AND t.h_batchno = @h_batchno@\n" +
  9535. " FOR UPDATE";
  9536. CDAParameter[] paras = new CDAParameter[]
  9537. {
  9538. new CDAParameter("groutinglineid", cre.Properties["GroutingLineID"]),
  9539. new CDAParameter("h_batchno", h_batchnoNow)
  9540. };
  9541. string h_linecode = dataAccess.ExecuteScalar(sqlString, paras) + "";
  9542. if (string.IsNullOrEmpty(h_linecode))
  9543. {
  9544. sre.Message = "当前数据发生变化,请刷新重试";
  9545. sre.OtherStatus = Constant.INT_IS_NEGATIE_ONE;
  9546. return sre;
  9547. }
  9548. #endregion
  9549. #region 更新成型线信息
  9550. sqlString = "UPDATE tp_pc_groutingline gl\n" +
  9551. " SET gl.h_batchindex = 0\n" +
  9552. " ,gl.h_batchno = @h_batchno@\n" +
  9553. " ,gl.updateuserid = @userid@\n" +
  9554. " WHERE gl.accountid = @accountid@\n" +
  9555. " AND gl.h_linecode = @h_linecode@";
  9556. paras = new CDAParameter[]
  9557. {
  9558. new CDAParameter("h_batchno",h_batchnoNow + 1),
  9559. new CDAParameter("userid", userInfo.UserID),
  9560. new CDAParameter("accountid", userInfo.AccountID),
  9561. new CDAParameter("h_linecode",h_linecode),
  9562. };
  9563. sre.OtherStatus += dataAccess.ExecuteNonQuery(sqlString, paras);
  9564. #endregion
  9565. dataAccess.Commit();
  9566. return sre;
  9567. }
  9568. catch (Exception ex)
  9569. {
  9570. throw ex;
  9571. }
  9572. finally
  9573. {
  9574. dataAccess?.Dispose();
  9575. }
  9576. }
  9577. #endregion
  9578. }
  9579. }