PCModuleLogicDALPartial.cs 418 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PCModuleLogicDAL.cs
  5. * 2.功能描述:生产配置数据库访问类(插入、修改、删除)
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 庄天威 2014/09/16 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Text;
  14. using Dongke.IBOSS.PRD.Basics.BaseResources;
  15. using Dongke.IBOSS.PRD.Basics.DataAccess;
  16. using Dongke.IBOSS.PRD.Service.DataModels;
  17. using Dongke.IBOSS.PRD.WCF.DataModels;
  18. using Oracle.ManagedDataAccess.Client;
  19. namespace Dongke.IBOSS.PRD.Service.PCModuleLogic
  20. {
  21. /// <summary>
  22. /// 生产配置数据库访问类(插入、修改、删除)
  23. /// </summary>
  24. public partial class PCModuleLogicDAL
  25. {
  26. #region 成型线配置
  27. /// <summary>
  28. /// 新建成型线信息
  29. /// </summary>
  30. /// <param name="groutingLineEntity">成型线实体</param>
  31. /// <param name="detailList">明细实体集合</param>
  32. /// <param name="user">用户基本信息</param>
  33. /// <returns>返回受影响行数</returns>
  34. /// <remarks>
  35. /// 庄天威 2014.09.10 新建
  36. /// </remarks>
  37. public static int AddGroutingLine(GroutingLineEntity groutingLineEntity,
  38. List<GroutingLineDetailEntity> detailList, SUserInfo user)
  39. {
  40. int returnRows = 0;
  41. int detailReturn = 0;
  42. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  43. try
  44. {
  45. oracleTrConn.Connect();
  46. if (GroutingLineCodeIsRepeat(groutingLineEntity.GROUTINGLINECODE, user.AccountID) == false)
  47. {
  48. oracleTrConn.Rollback();
  49. oracleTrConn.Disconnect();
  50. return -50;
  51. }
  52. // 获得账务日期
  53. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  54. //获取成型线ID索引
  55. StringBuilder sbSql = new StringBuilder();
  56. sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
  57. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  58. sbSql.Clear();
  59. //添加成型线信息
  60. sbSql.Append("Insert into TP_PC_GroutingLine");
  61. sbSql.Append("(GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,");
  62. sbSql.Append("GroutingLineName,MouldQuantity,GMouldTypeID,UserID,");
  63. sbSql.Append("BeginUsedDate,GMouldStatus,Remarks,AccountID,ValueFlag,CreateTime,");
  64. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  65. sbSql.Append("values(:GroutingLineID,:BuildingNo,:FloorNo,:GroutingLineNo,:GroutingLineCode,");
  66. sbSql.Append(":GroutingLineName,:MouldQuantity,:GMouldTypeID,:UserID,");
  67. sbSql.Append(":BeginUsedDate,:GMouldStatus,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
  68. sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  69. OracleParameter[] Paras = new OracleParameter[] {
  70. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  71. id,ParameterDirection.Input),
  72. new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
  73. groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
  74. new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
  75. groutingLineEntity.FLOORNO,ParameterDirection.Input),
  76. new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
  77. groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
  78. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  79. groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
  80. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  81. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  82. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  83. groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
  84. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  85. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  86. new OracleParameter(":UserID",OracleDbType.Int32,
  87. groutingLineEntity.USERID,ParameterDirection.Input),
  88. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  89. accountDate,ParameterDirection.Input),
  90. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  91. groutingLineEntity.MouldStatus,ParameterDirection.Input),
  92. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  93. groutingLineEntity.REMARKS,ParameterDirection.Input),
  94. new OracleParameter(":AccountID",OracleDbType.Int32,
  95. user.AccountID,ParameterDirection.Input),
  96. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  97. groutingLineEntity.VALUEFLAG,ParameterDirection.Input),
  98. new OracleParameter(":CreateTime",OracleDbType.Date,
  99. DateTime.Now,ParameterDirection.Input),
  100. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  101. user.UserID,ParameterDirection.Input),
  102. new OracleParameter(":UpdateTime",OracleDbType.Date,
  103. DateTime.Now,ParameterDirection.Input),
  104. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  105. user.UserID,ParameterDirection.Input),
  106. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  107. DateTime.Now,ParameterDirection.Input)
  108. };
  109. //执行插入成型线SQL语句
  110. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  111. //此处添加明细信息(循环)
  112. foreach (GroutingLineDetailEntity detailInfo in detailList)
  113. {
  114. //查看该成型线明细编号是否存在
  115. if (GroutingLineDetailCodeIsRepeat(detailInfo.GROUTINGMOULDCODE, user.AccountID) == false)
  116. {
  117. oracleTrConn.Rollback();
  118. oracleTrConn.Disconnect();
  119. return -2;
  120. }
  121. //获取成型线明细索引
  122. sbSql.Clear();
  123. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  124. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  125. sbSql.Clear();
  126. //插入成型线明细信息
  127. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  128. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
  129. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
  130. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  131. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
  132. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
  133. sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  134. OracleParameter[] DetailParas = new OracleParameter[] {
  135. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  136. detailId,ParameterDirection.Input),
  137. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  138. id,ParameterDirection.Input),
  139. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  140. detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
  141. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  142. detailInfo.MOULDCODE,ParameterDirection.Input),
  143. new OracleParameter(":GoodsID",OracleDbType.Int32,
  144. detailInfo.GOODSID,ParameterDirection.Input),
  145. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  146. detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
  147. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  148. detailInfo.MOULDSTATUS,ParameterDirection.Input),
  149. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  150. accountDate,ParameterDirection.Input),
  151. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  152. detailInfo.REMARKS,ParameterDirection.Input),
  153. new OracleParameter(":AccountID",OracleDbType.Int32,
  154. user.AccountID,ParameterDirection.Input),
  155. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  156. detailInfo.VALUEFLAG,ParameterDirection.Input),
  157. new OracleParameter(":CreateTime",OracleDbType.Date,
  158. DateTime.Now,ParameterDirection.Input),
  159. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  160. user.UserID,ParameterDirection.Input),
  161. new OracleParameter(":UpdateTime",OracleDbType.Date,
  162. DateTime.Now,ParameterDirection.Input),
  163. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  164. user.UserID,ParameterDirection.Input),
  165. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  166. DateTime.Now,ParameterDirection.Input)
  167. };
  168. //执行插入语句并累加成功插入次数
  169. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  170. }
  171. //如果有插入不成功的情况,回滚事务,否则提交
  172. if (returnRows == 0 || detailReturn == 0)
  173. {
  174. oracleTrConn.Rollback();
  175. oracleTrConn.Disconnect();
  176. }
  177. else
  178. {
  179. oracleTrConn.Commit();
  180. oracleTrConn.Disconnect();
  181. }
  182. }
  183. catch (Exception ex)
  184. {
  185. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  186. {
  187. oracleTrConn.Rollback();
  188. oracleTrConn.Disconnect();
  189. }
  190. throw ex;
  191. }
  192. finally
  193. {
  194. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  195. {
  196. oracleTrConn.Disconnect();
  197. }
  198. }
  199. return returnRows;
  200. }
  201. /// <summary>
  202. /// 修改成型线信息
  203. /// </summary>
  204. /// <param name="groutingLineEntity">成型线实体</param>
  205. /// <param name="detailList">明细实体集合</param>
  206. /// <param name="user">用户基本信息</param>
  207. /// <returns>int返回受影响行数</returns>
  208. /// <remarks>
  209. /// 庄天威 2014.09.10 新建
  210. /// </remarks>
  211. public static int UpdateGroutingLine(GroutingLineEntity groutingLineEntity,
  212. List<GroutingLineDetailEntity> detailList, SUserInfo user)
  213. {
  214. int returnRows = 0;
  215. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  216. try
  217. {
  218. oracleTrConn.Connect();
  219. // 获得账务日期
  220. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  221. //修改成型线信息
  222. StringBuilder sbSql = new StringBuilder();
  223. sbSql.Append("update TP_PC_GroutingLine");
  224. sbSql.Append(" set BuildingNo=:BuildingNo,");
  225. sbSql.Append("FloorNo=:FloorNo,");
  226. sbSql.Append("GroutingLineNo=:GroutingLineNo,");
  227. sbSql.Append("GroutingLineCode=:GroutingLineCode,");
  228. sbSql.Append("GroutingLineName=:GroutingLineName,");
  229. sbSql.Append("MouldQuantity=:MouldQuantity,");
  230. sbSql.Append("GMouldTypeID=:GMouldTypeID,");
  231. sbSql.Append("UserID=:UserID,");
  232. sbSql.Append("BeginUsedDate=:BeginUsedDate,");
  233. sbSql.Append("EndUsedDate=:EndUsedDate,");
  234. sbSql.Append("GMouldStatus=:GMouldStatus,");
  235. sbSql.Append("Remarks=:Remarks,");
  236. sbSql.Append("AccountID=:AccountID,");
  237. sbSql.Append("ValueFlag=:ValueFlag,");
  238. sbSql.Append("UpdateTime=:UpdateTime,");
  239. sbSql.Append("UpdateUserID=:UpdateUserID");
  240. sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp");
  241. if (groutingLineEntity.VALUEFLAG == 0)
  242. {
  243. groutingLineEntity.ENDUSEDDATE = DateTime.Now;
  244. }
  245. else
  246. {
  247. groutingLineEntity.ENDUSEDDATE = null;
  248. }
  249. OracleParameter[] Paras = new OracleParameter[] {
  250. new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
  251. groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
  252. new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
  253. groutingLineEntity.FLOORNO,ParameterDirection.Input),
  254. new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
  255. groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
  256. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  257. groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
  258. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  259. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  260. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  261. groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
  262. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  263. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  264. new OracleParameter(":UserID",OracleDbType.Int32,
  265. groutingLineEntity.USERID,ParameterDirection.Input),
  266. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  267. groutingLineEntity.BEGINUSEDDATE,ParameterDirection.Input),
  268. new OracleParameter(":EndUsedDate",OracleDbType.Date,
  269. groutingLineEntity.ENDUSEDDATE,ParameterDirection.Input),
  270. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  271. groutingLineEntity.MouldStatus,ParameterDirection.Input),
  272. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  273. groutingLineEntity.REMARKS,ParameterDirection.Input),
  274. new OracleParameter(":AccountID",OracleDbType.Int32,
  275. groutingLineEntity.ACCOUNTID,ParameterDirection.Input),
  276. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  277. groutingLineEntity.VALUEFLAG,ParameterDirection.Input),
  278. new OracleParameter(":UpdateTime",OracleDbType.Date,
  279. DateTime.Now,ParameterDirection.Input),
  280. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  281. user.UserID,ParameterDirection.Input),
  282. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  283. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  284. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  285. groutingLineEntity.OPTIMESTAMP,ParameterDirection.Input)
  286. };
  287. //执行修改语句
  288. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  289. //时间戳无法匹配
  290. if (returnRows == 0)
  291. {
  292. oracleTrConn.Rollback();
  293. oracleTrConn.Disconnect();
  294. return -500;
  295. }
  296. //添加修改时新建的模具信息
  297. foreach (GroutingLineDetailEntity detailInfo in detailList)
  298. {
  299. //模具明细编号唯一
  300. if (GroutingLineDetailCodeIsRepeat(detailInfo.GROUTINGMOULDCODE, user.AccountID) == false)
  301. {
  302. oracleTrConn.Rollback();
  303. oracleTrConn.Disconnect();
  304. return -2;
  305. }
  306. //获取模具明细索引
  307. int detailReturn = 0;
  308. sbSql.Clear();
  309. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  310. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  311. sbSql.Clear();
  312. //插入新增的模具信息
  313. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  314. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
  315. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
  316. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  317. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
  318. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
  319. sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  320. OracleParameter[] DetailParas = new OracleParameter[] {
  321. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  322. detailId,ParameterDirection.Input),
  323. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  324. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  325. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  326. detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
  327. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  328. detailInfo.MOULDCODE,ParameterDirection.Input),
  329. new OracleParameter(":GoodsID",OracleDbType.Int32,
  330. detailInfo.GOODSID,ParameterDirection.Input),
  331. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  332. detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
  333. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  334. detailInfo.MOULDSTATUS,ParameterDirection.Input),
  335. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  336. accountDate,ParameterDirection.Input),
  337. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  338. detailInfo.REMARKS,ParameterDirection.Input),
  339. new OracleParameter(":AccountID",OracleDbType.Int32,
  340. user.AccountID,ParameterDirection.Input),
  341. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  342. detailInfo.VALUEFLAG,ParameterDirection.Input),
  343. new OracleParameter(":CreateTime",OracleDbType.Date,
  344. DateTime.Now,ParameterDirection.Input),
  345. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  346. user.UserID,ParameterDirection.Input),
  347. new OracleParameter(":UpdateTime",OracleDbType.Date,
  348. DateTime.Now,ParameterDirection.Input),
  349. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  350. user.UserID,ParameterDirection.Input),
  351. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  352. DateTime.Now,ParameterDirection.Input)
  353. };
  354. //执行
  355. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  356. }
  357. //提交事务
  358. oracleTrConn.Commit();
  359. oracleTrConn.Disconnect();
  360. }
  361. catch (Exception ex)
  362. {
  363. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  364. {
  365. oracleTrConn.Rollback();
  366. oracleTrConn.Disconnect();
  367. }
  368. throw ex;
  369. }
  370. finally
  371. {
  372. if (oracleTrConn.ConnState == ConnectionState.Open)
  373. {
  374. oracleTrConn.Disconnect();
  375. }
  376. }
  377. return returnRows;
  378. }
  379. /// <summary>
  380. /// 修改成型线明细
  381. /// </summary>
  382. /// <param name="detailInfo">成型线明细实体</param>
  383. /// <param name="oracleTrConn">数据库事务</param>
  384. /// <param name="user">用户基本信息</param>
  385. /// <returns>int受影响行数</returns>
  386. /// <remarks>
  387. /// 庄天威 2014.09.11 新建
  388. /// </remarks>
  389. public static int UpdateGroutingLineDetail(GroutingLineDetailEntity detailInfo, IDBTransaction oracleTrConn, SUserInfo user)
  390. {
  391. int detailReturn = 0;
  392. StringBuilder sbSql = new StringBuilder();
  393. sbSql.Append("update TP_PC_GroutingLineDetail");
  394. sbSql.Append(" set GroutingLineID =:GroutingLineID,");
  395. sbSql.Append("GroutingMouldCode =:GroutingMouldCode,");
  396. sbSql.Append("MouldCode=:MouldCode,");
  397. sbSql.Append("GoodsID =:GoodsID,");
  398. sbSql.Append("GroutingCount =:GroutingCount,");
  399. sbSql.Append("GMouldStatus =:GMouldStatus,");
  400. sbSql.Append("BeginUsedDate =:BeginUsedDate,");
  401. sbSql.Append("Remarks =:Remarks,");
  402. sbSql.Append("AccountID =:AccountID,");
  403. sbSql.Append("ValueFlag=:ValueFlag,");
  404. sbSql.Append("CreateTime =:CreateTime,");
  405. sbSql.Append("CreateUserID =:CreateUserID,");
  406. sbSql.Append("UpdateTime =:UpdateTime,");
  407. sbSql.Append("UpdateUserID =:UpdateUserID");
  408. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
  409. OracleParameter[] DetailParas = new OracleParameter[] {
  410. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  411. detailInfo.GROUTINGLINEID,ParameterDirection.Input),
  412. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  413. detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
  414. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  415. detailInfo.MOULDCODE,ParameterDirection.Input),
  416. new OracleParameter(":GoodsID",OracleDbType.Int32,
  417. detailInfo.GOODSID,ParameterDirection.Input),
  418. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  419. detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
  420. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  421. detailInfo.MOULDSTATUS,ParameterDirection.Input),
  422. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  423. detailInfo.BEGINUSEDDATE,ParameterDirection.Input),
  424. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  425. detailInfo.REMARKS,ParameterDirection.Input),
  426. new OracleParameter(":AccountID",OracleDbType.Int32,
  427. detailInfo.ACCOUNTID,ParameterDirection.Input),
  428. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  429. detailInfo.VALUEFLAG,ParameterDirection.Input),
  430. new OracleParameter(":CreateTime",OracleDbType.Date,
  431. detailInfo.CREATETIME,ParameterDirection.Input),
  432. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  433. detailInfo.CREATEUSERID,ParameterDirection.Input),
  434. new OracleParameter(":UpdateTime",OracleDbType.Date,
  435. DateTime.Now,ParameterDirection.Input),
  436. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  437. user.UserID,ParameterDirection.Input),
  438. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  439. detailInfo.GROUTINGLINEDETAILID,ParameterDirection.Input)
  440. };
  441. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  442. return detailReturn;
  443. }
  444. /// <summary>
  445. /// 新建注浆模具换修履历
  446. /// </summary>
  447. /// <param name="recordEntity">换修履历实体</param>
  448. /// <param name="oracleTrConn">数据库事务</param>
  449. /// <param name="user">用户基本信息</param>
  450. /// <returns>int受影响行数</returns>
  451. /// <remarks>
  452. /// 庄天威 2014.09.11 新建
  453. /// </remarks>
  454. public static int AddMouldRecord(GMouldRecordEntity recordEntity, IDBTransaction oracleTrConn, SUserInfo user)
  455. {
  456. StringBuilder sbSql = new StringBuilder();
  457. int MyReturn = 0;
  458. sbSql.Clear();
  459. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  460. int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  461. sbSql.Clear();
  462. sbSql.Append("Insert into TP_PC_GMouldRecord");
  463. sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  464. sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  465. sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,GroutingMouldCode,:MouldCode,:GroutingCount,");
  466. sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  467. OracleParameter[] Paras = new OracleParameter[] {
  468. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  469. Id,ParameterDirection.Input),
  470. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  471. recordEntity.GROUTINGLINEID,ParameterDirection.Input),
  472. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  473. recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  474. new OracleParameter(":GoodsID",OracleDbType.Int32,
  475. recordEntity.GOODSID,ParameterDirection.Input),
  476. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  477. recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  478. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  479. recordEntity.MouldCode,ParameterDirection.Input),
  480. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  481. recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
  482. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  483. recordEntity.RESUMETYPE,ParameterDirection.Input),
  484. new OracleParameter(":BeginDate",OracleDbType.Date,
  485. DateTime.Now,ParameterDirection.Input),
  486. new OracleParameter(":EndDate",OracleDbType.Date,
  487. DBNull.Value,ParameterDirection.Input),
  488. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  489. recordEntity.RREASON,ParameterDirection.Input),
  490. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  491. recordEntity.REMARKS,ParameterDirection.Input),
  492. new OracleParameter(":AccountID",OracleDbType.Int32,
  493. user.AccountID,ParameterDirection.Input),
  494. new OracleParameter(":CreateTime",OracleDbType.Date,
  495. DateTime.Now,ParameterDirection.Input),
  496. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  497. user.UserID,ParameterDirection.Input),
  498. new OracleParameter(":UpdateTime",OracleDbType.Date,
  499. DateTime.Now,ParameterDirection.Input),
  500. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  501. user.UserID,ParameterDirection.Input),
  502. new OracleParameter(":OPTimeStamp",OracleDbType.Date,
  503. DateTime.Now,ParameterDirection.Input)
  504. };
  505. MyReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  506. return MyReturn;
  507. }
  508. /// <summary>
  509. /// 补完注浆模具换修履历的结束时间
  510. /// </summary>
  511. /// <param name="recordEntity">换修履历实体</param>
  512. /// <param name="user">用户基本信息</param>
  513. /// <returns>int受影响行数</returns>
  514. /// <remarks>
  515. /// 庄天威 2014.09.11 新建
  516. /// </remarks>
  517. public static int UpdateMouldRecordEndTime(GMouldRecordEntity recordEntity, SUserInfo user)
  518. {
  519. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  520. StringBuilder sbSql = new StringBuilder();
  521. int MyReturn = 0;
  522. int MouldResumeId = 0;
  523. //ID为倒序的第一个数据就是符合条件的
  524. //IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  525. try
  526. {
  527. //con.Open();
  528. oracleTrConn.Connect();
  529. sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord where ");
  530. sbSql.Append(" GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  531. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  532. OracleParameter[] Paras = new OracleParameter[] {
  533. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  534. recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  535. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  536. recordEntity.GROUTINGLINEID,ParameterDirection.Input),
  537. new OracleParameter(":AccountId",OracleDbType.Int32,
  538. user.AccountID,ParameterDirection.Input)
  539. };
  540. DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  541. MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  542. //con.Close();
  543. //}
  544. //catch (Exception ex)
  545. //{
  546. // if (con.ConnState == ConnectionState.Open)
  547. // {
  548. // con.Close();
  549. // }
  550. // throw ex;
  551. //}
  552. //try
  553. //{
  554. //oracleTrConn.Connect();
  555. //根据获取到的ID,修改结束时间
  556. sbSql.Clear();
  557. sbSql.Append("update TP_PC_GMouldRecord");
  558. sbSql.Append(" set ENDDATE = :ENDDATE");
  559. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  560. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  561. OracleParameter[] UpParas = new OracleParameter[] {
  562. new OracleParameter(":ENDDATE",OracleDbType.Date,
  563. DateTime.Now,ParameterDirection.Input),
  564. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  565. MouldResumeId,ParameterDirection.Input),
  566. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  567. user.AccountID,ParameterDirection.Input)
  568. };
  569. MyReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  570. oracleTrConn.Commit();
  571. oracleTrConn.Disconnect();
  572. }
  573. catch (Exception ex)
  574. {
  575. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  576. {
  577. oracleTrConn.Rollback();
  578. oracleTrConn.Disconnect();
  579. }
  580. throw ex;
  581. }
  582. finally
  583. {
  584. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  585. {
  586. oracleTrConn.Disconnect();
  587. }
  588. }
  589. return MyReturn;
  590. }
  591. /// <summary>
  592. /// 新建注浆模具履历
  593. /// </summary>
  594. /// <param name="historyEntity">履历实体</param>
  595. /// <param name="oracleTrConn">数据库事务</param>
  596. /// <param name="user">用户基本信息</param>
  597. /// <returns>int受影响行数</returns>
  598. /// <remarks>
  599. /// 庄天威 2014.09.11 新建
  600. /// </remarks>
  601. public static int AddMouldHistory(GMouldHistoryEntity historyEntity,
  602. IDBTransaction oracleTrConn, SUserInfo user)
  603. {
  604. StringBuilder sbSql = new StringBuilder();
  605. int MyReturn = 0;
  606. sbSql.Clear();
  607. sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
  608. int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  609. sbSql.Clear();
  610. sbSql.Append("Insert into TP_PC_GMouldHistory");
  611. sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  612. sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
  613. sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  614. sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
  615. OracleParameter[] Paras = new OracleParameter[] {
  616. new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
  617. Id,ParameterDirection.Input),
  618. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  619. historyEntity.GROUTINGLINEID,ParameterDirection.Input),
  620. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  621. historyEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  622. new OracleParameter(":GoodsID",OracleDbType.Int32,
  623. historyEntity.GOODSID,ParameterDirection.Input),
  624. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  625. historyEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  626. new OracleParameter(":MOULDCODE",OracleDbType.NVarchar2,
  627. historyEntity.MouldCode,ParameterDirection.Input),
  628. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  629. historyEntity.GROUTINGCOUNT,ParameterDirection.Input),
  630. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  631. historyEntity.BEGINUSEDDATE,ParameterDirection.Input),
  632. new OracleParameter(":EndUsedDate",OracleDbType.Date,
  633. historyEntity.ENDUSEDDATE,ParameterDirection.Input),
  634. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  635. historyEntity.REMARKS,ParameterDirection.Input),
  636. new OracleParameter(":AccountID",OracleDbType.Int32,
  637. user.AccountID,ParameterDirection.Input),
  638. new OracleParameter(":CreateTime",OracleDbType.Date,
  639. DateTime.Now,ParameterDirection.Input),
  640. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  641. user.UserID,ParameterDirection.Input)
  642. };
  643. MyReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  644. return MyReturn;
  645. }
  646. /// <summary>
  647. /// 修理模具
  648. /// </summary>
  649. /// <param name="detailEntity">明细实体</param>
  650. /// <param name="recordEntity">换修履历实体</param>
  651. /// <param name="user">用户基本信息</param>
  652. /// <returns>int受影响行数</returns>
  653. /// <remarks>
  654. /// 庄天威 2014.09.11 新建
  655. /// </remarks>
  656. public static int RepAirDetail(GroutingLineDetailEntity detailEntity,
  657. GMouldRecordEntity recordEntity, SUserInfo user)
  658. {
  659. int returnRows = 0;
  660. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  661. try
  662. {
  663. oracleTrConn.Connect();
  664. // 获得账务日期
  665. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  666. //更新明细信息
  667. StringBuilder sbSql = new StringBuilder();
  668. sbSql.Append("update TP_PC_GroutingLineDetail");
  669. sbSql.Append(" set GroutingLineID =:GroutingLineID,");
  670. sbSql.Append("GroutingMouldCode =:GroutingMouldCode,");
  671. sbSql.Append("GoodsID =:GoodsID,");
  672. sbSql.Append("GroutingCount =:GroutingCount,");
  673. sbSql.Append("GMouldStatus =:GMouldStatus,");
  674. sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
  675. sbSql.Append("Remarks =:Remarks,");
  676. sbSql.Append("AccountID =:AccountID,");
  677. sbSql.Append("CreateTime =to_date(:CreateTime,'yyyy-mm-dd hh24:mi:ss'),");
  678. sbSql.Append("CreateUserID =:CreateUserID,");
  679. sbSql.Append("UpdateTime =to_date(:UpdateTime,'yyyy-mm-dd hh24:mi:ss'),");
  680. sbSql.Append("UpdateUserID =:UpdateUserID");
  681. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID And OPTimeStamp=:OPTimeStamp");
  682. OracleParameter[] Paras = new OracleParameter[] {
  683. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  684. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  685. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  686. detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  687. new OracleParameter(":GoodsID",OracleDbType.Int32,
  688. detailEntity.GOODSID,ParameterDirection.Input),
  689. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  690. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  691. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  692. detailEntity.MOULDSTATUS,ParameterDirection.Input),
  693. new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
  694. detailEntity.BEGINUSEDDATE.ToString(),ParameterDirection.Input),
  695. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  696. detailEntity.REMARKS,ParameterDirection.Input),
  697. new OracleParameter(":AccountID",OracleDbType.Int32,
  698. detailEntity.ACCOUNTID,ParameterDirection.Input),
  699. new OracleParameter(":CreateTime",OracleDbType.NVarchar2,
  700. detailEntity.CREATETIME.ToString(),ParameterDirection.Input),
  701. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  702. detailEntity.CREATEUSERID,ParameterDirection.Input),
  703. new OracleParameter(":UpdateTime",OracleDbType.NVarchar2,
  704. DateTime.Now.ToString(),ParameterDirection.Input),
  705. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  706. user.UserID,ParameterDirection.Input),
  707. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  708. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  709. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  710. detailEntity.OPTIMESTAMP,ParameterDirection.Input)
  711. };
  712. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  713. if (returnRows == 0)
  714. {
  715. oracleTrConn.Rollback();
  716. oracleTrConn.Disconnect();
  717. return -500;
  718. }
  719. //添加换修履历
  720. int MyReturn = 0;
  721. sbSql.Clear();
  722. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  723. int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  724. sbSql.Clear();
  725. //插入换修履历信息
  726. sbSql.Append("Insert into TP_PC_GMouldRecord");
  727. sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  728. sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  729. sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  730. sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  731. OracleParameter[] RParas = new OracleParameter[] {
  732. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  733. Id,ParameterDirection.Input),
  734. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  735. recordEntity.GROUTINGLINEID,ParameterDirection.Input),
  736. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  737. recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  738. new OracleParameter(":GoodsID",OracleDbType.Int32,
  739. recordEntity.GOODSID,ParameterDirection.Input),
  740. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  741. recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  742. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  743. recordEntity.MouldCode,ParameterDirection.Input),
  744. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  745. recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
  746. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  747. recordEntity.RESUMETYPE,ParameterDirection.Input),
  748. new OracleParameter(":BeginDate",OracleDbType.Date,
  749. recordEntity.BEGINDATE,ParameterDirection.Input),
  750. new OracleParameter(":EndDate",OracleDbType.Date,
  751. DBNull.Value,ParameterDirection.Input),
  752. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  753. recordEntity.RREASON,ParameterDirection.Input),
  754. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  755. recordEntity.REMARKS,ParameterDirection.Input),
  756. new OracleParameter(":AccountID",OracleDbType.Int32,
  757. user.AccountID,ParameterDirection.Input),
  758. new OracleParameter(":CreateTime",OracleDbType.Date,
  759. DateTime.Now,ParameterDirection.Input),
  760. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  761. user.UserID,ParameterDirection.Input),
  762. new OracleParameter(":UpdateTime",OracleDbType.Date,
  763. DateTime.Now,ParameterDirection.Input),
  764. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  765. user.UserID,ParameterDirection.Input),
  766. new OracleParameter(":OPTimeStamp",OracleDbType.Date,
  767. DateTime.Now,ParameterDirection.Input)
  768. };
  769. MyReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
  770. //插入不成功回滚事务
  771. if (returnRows == 0)
  772. {
  773. oracleTrConn.Rollback();
  774. oracleTrConn.Disconnect();
  775. return returnRows;
  776. }
  777. oracleTrConn.Commit();
  778. oracleTrConn.Disconnect();
  779. }
  780. catch (Exception ex)
  781. {
  782. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  783. {
  784. oracleTrConn.Rollback();
  785. oracleTrConn.Disconnect();
  786. }
  787. throw ex;
  788. }
  789. finally
  790. {
  791. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  792. {
  793. oracleTrConn.Disconnect();
  794. }
  795. }
  796. return returnRows;
  797. }
  798. /// <summary>
  799. /// 修理完成
  800. /// </summary>
  801. /// <param name="detailEntity">明细实体</param>
  802. /// <param name="EndTime">结束日期</param>
  803. /// <param name="Remarks">备注</param>
  804. /// <param name="user">用户基本信息</param>
  805. /// <returns>int受影响行数</returns>
  806. /// <remarks>
  807. /// 庄天威 2014.09.11 新建
  808. /// </remarks>
  809. public static int RepAirDetailEnd(GroutingLineDetailEntity detailEntity, DateTime? EndTime, String Remarks, SUserInfo user)
  810. {
  811. int returnRows = 0;
  812. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  813. StringBuilder sbSql = new StringBuilder();
  814. int MouldResumeId = 0;
  815. try
  816. {
  817. //获取之前修理的履历的ID
  818. oracleTrConn.Connect();
  819. sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
  820. sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  821. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  822. OracleParameter[] Paras = new OracleParameter[] {
  823. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  824. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  825. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  826. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  827. new OracleParameter(":AccountId",OracleDbType.Int32,
  828. user.AccountID,ParameterDirection.Input)
  829. };
  830. DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  831. MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  832. // 获得账务日期
  833. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  834. //更新明细信息
  835. sbSql.Clear();
  836. sbSql.Append("update TP_PC_GroutingLineDetail");
  837. sbSql.Append(" set GroutingLineID =:GroutingLineID,");
  838. sbSql.Append("GroutingMouldCode =:GroutingMouldCode,");
  839. sbSql.Append("GoodsID =:GoodsID,");
  840. sbSql.Append("GroutingCount =:GroutingCount,");
  841. sbSql.Append("GMouldStatus =:GMouldStatus,");
  842. sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
  843. sbSql.Append("Remarks =:Remarks,");
  844. sbSql.Append("AccountID =:AccountID,");
  845. sbSql.Append("CreateTime =to_date(:CreateTime,'yyyy-mm-dd hh24:mi:ss'),");
  846. sbSql.Append("CreateUserID =:CreateUserID,");
  847. sbSql.Append("UpdateTime =to_date(:UpdateTime,'yyyy-mm-dd hh24:mi:ss'),");
  848. sbSql.Append("UpdateUserID =:UpdateUserID");
  849. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
  850. OracleParameter[] Paras1 = new OracleParameter[] {
  851. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  852. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  853. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  854. detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  855. new OracleParameter(":GoodsID",OracleDbType.Int32,
  856. detailEntity.GOODSID,ParameterDirection.Input),
  857. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  858. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  859. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  860. detailEntity.MOULDSTATUS,ParameterDirection.Input),
  861. new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
  862. detailEntity.BEGINUSEDDATE.ToString(),ParameterDirection.Input),
  863. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  864. detailEntity.REMARKS,ParameterDirection.Input),
  865. new OracleParameter(":AccountID",OracleDbType.Int32,
  866. detailEntity.ACCOUNTID,ParameterDirection.Input),
  867. new OracleParameter(":CreateTime",OracleDbType.NVarchar2,
  868. detailEntity.CREATETIME.ToString(),ParameterDirection.Input),
  869. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  870. detailEntity.CREATEUSERID,ParameterDirection.Input),
  871. new OracleParameter(":UpdateTime",OracleDbType.NVarchar2,
  872. DateTime.Now.ToString(),ParameterDirection.Input),
  873. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  874. user.UserID,ParameterDirection.Input),
  875. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  876. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  877. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  878. detailEntity.OPTIMESTAMP,ParameterDirection.Input)
  879. };
  880. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras1);
  881. //时间戳不同
  882. if (returnRows == 0)
  883. {
  884. oracleTrConn.Rollback();
  885. oracleTrConn.Disconnect();
  886. return -500;
  887. }
  888. //根据前面取得的ID更新换修履历
  889. sbSql.Clear();
  890. sbSql.Append("update TP_PC_GMouldRecord");
  891. sbSql.Append(" set ENDDATE = :ENDDATE");
  892. sbSql.Append(",Remarks = :Remarks");
  893. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  894. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  895. DateTime? RecordEndTime = accountDate;
  896. if (EndTime != null)
  897. {
  898. RecordEndTime = EndTime;
  899. }
  900. OracleParameter[] UpParas = new OracleParameter[] {
  901. new OracleParameter(":ENDDATE",OracleDbType.Date,
  902. RecordEndTime,ParameterDirection.Input),
  903. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  904. Remarks,ParameterDirection.Input),
  905. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  906. MouldResumeId,ParameterDirection.Input),
  907. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  908. user.AccountID,ParameterDirection.Input)
  909. };
  910. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  911. if (returnRows == 0)
  912. {
  913. oracleTrConn.Rollback();
  914. oracleTrConn.Disconnect();
  915. return returnRows;
  916. }
  917. oracleTrConn.Commit();
  918. oracleTrConn.Disconnect();
  919. }
  920. catch (Exception ex)
  921. {
  922. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  923. {
  924. oracleTrConn.Rollback();
  925. oracleTrConn.Disconnect();
  926. }
  927. throw ex;
  928. }
  929. finally
  930. {
  931. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  932. {
  933. oracleTrConn.Disconnect();
  934. }
  935. }
  936. return returnRows;
  937. }
  938. /// <summary>
  939. /// 更换模具(先插入模具履历以及重置次数及开始时间)
  940. /// </summary>
  941. /// <param name="detailEntity">明细实体</param>
  942. /// <param name="recordEntity">换修履历实体</param>
  943. /// <param name="historyEntity">履历实体</param>
  944. /// <param name="user">用户基本信息</param>
  945. /// <returns>int受影响行数</returns>
  946. /// <remarks>
  947. /// 庄天威 2014.09.11 新建
  948. /// </remarks>
  949. public static int ChangeDetail(GroutingLineDetailEntity detailEntity, GMouldRecordEntity recordEntity, GMouldHistoryEntity historyEntity, SUserInfo user)
  950. {
  951. int returnRows = 0;
  952. int UpReturn = 0;
  953. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  954. try
  955. {
  956. oracleTrConn.Connect();
  957. // 获得账务日期
  958. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  959. //更新明细信息
  960. StringBuilder sbSql = new StringBuilder();
  961. sbSql.Append("update TP_PC_GroutingLineDetail set ");
  962. sbSql.Append("remarks =:remarks,");
  963. sbSql.Append("MouldCode =:MouldCode,");
  964. sbSql.Append("GroutingCount =:GroutingCount,");
  965. sbSql.Append("GMouldStatus =:GMouldStatus,");
  966. sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
  967. sbSql.Append("UpdateUserID =:UpdateUserID");
  968. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
  969. OracleParameter[] Paras = new OracleParameter[] {
  970. new OracleParameter(":remarks",OracleDbType.NVarchar2,
  971. detailEntity.REMARKS,ParameterDirection.Input),
  972. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  973. detailEntity.MOULDCODE,ParameterDirection.Input),
  974. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  975. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  976. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  977. detailEntity.MOULDSTATUS,ParameterDirection.Input),
  978. new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
  979. detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
  980. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  981. user.UserID,ParameterDirection.Input),
  982. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  983. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  984. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  985. detailEntity.OPTIMESTAMP,ParameterDirection.Input)
  986. };
  987. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  988. //时间戳不匹配
  989. if (returnRows == 0)
  990. {
  991. oracleTrConn.Rollback();
  992. oracleTrConn.Disconnect();
  993. return -500;
  994. }
  995. //如果是维修转换模
  996. if (recordEntity.RESUMETYPE == Convert.ToInt32(Constant.GMouldRecordType.RepairToReplac))
  997. {
  998. int MouldResumeId = 0;
  999. //把上一条维修信息的结束时间添加上
  1000. //ID为倒序的第一个数据就是符合条件的
  1001. //IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1002. //try
  1003. //{
  1004. // con.Open();
  1005. sbSql.Clear();
  1006. sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord where ");
  1007. sbSql.Append(" GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  1008. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  1009. OracleParameter[] QParas = new OracleParameter[] {
  1010. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1011. recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1012. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1013. recordEntity.GROUTINGLINEID,ParameterDirection.Input),
  1014. new OracleParameter(":AccountId",OracleDbType.Int32,
  1015. user.AccountID,ParameterDirection.Input)
  1016. };
  1017. //DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), QParas);
  1018. DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), QParas);
  1019. MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  1020. //con.Close();
  1021. //根据获取的ID补录结束时间
  1022. sbSql.Clear();
  1023. sbSql.Append("update TP_PC_GMouldRecord");
  1024. sbSql.Append(" set ENDDATE = :ENDDATE");
  1025. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  1026. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  1027. OracleParameter[] UpParas = new OracleParameter[] {
  1028. new OracleParameter(":ENDDATE",OracleDbType.Date,
  1029. detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
  1030. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1031. MouldResumeId,ParameterDirection.Input),
  1032. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  1033. user.AccountID,ParameterDirection.Input)
  1034. };
  1035. UpReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  1036. //}
  1037. //catch (Exception ex)
  1038. //{
  1039. // if (con.ConnState == ConnectionState.Open)
  1040. // {
  1041. // con.Close();
  1042. // }
  1043. // throw ex;
  1044. //}
  1045. }
  1046. //添加换修履历
  1047. int RecordReturn = 0;
  1048. sbSql.Clear();
  1049. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  1050. int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1051. sbSql.Clear();
  1052. sbSql.Append("Insert into TP_PC_GMouldRecord");
  1053. sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  1054. sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  1055. sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  1056. sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  1057. OracleParameter[] RParas = new OracleParameter[] {
  1058. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1059. Id,ParameterDirection.Input),
  1060. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1061. recordEntity.GROUTINGLINEID,ParameterDirection.Input),
  1062. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1063. recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1064. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1065. recordEntity.GOODSID,ParameterDirection.Input),
  1066. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1067. recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  1068. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1069. recordEntity.MouldCode,ParameterDirection.Input),
  1070. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1071. recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1072. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  1073. recordEntity.RESUMETYPE,ParameterDirection.Input),
  1074. new OracleParameter(":BeginDate",OracleDbType.Date,
  1075. recordEntity.BEGINDATE,ParameterDirection.Input),
  1076. new OracleParameter(":EndDate",OracleDbType.Date,
  1077. DBNull.Value,ParameterDirection.Input),
  1078. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1079. recordEntity.RREASON,ParameterDirection.Input),
  1080. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1081. recordEntity.REMARKS,ParameterDirection.Input),
  1082. new OracleParameter(":AccountID",OracleDbType.Int32,
  1083. user.AccountID,ParameterDirection.Input),
  1084. new OracleParameter(":CreateTime",OracleDbType.Date,
  1085. DateTime.Now,ParameterDirection.Input),
  1086. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1087. user.UserID,ParameterDirection.Input),
  1088. new OracleParameter(":UpdateTime",OracleDbType.Date,
  1089. DateTime.Now,ParameterDirection.Input),
  1090. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1091. user.UserID,ParameterDirection.Input),
  1092. new OracleParameter(":OPTimeStamp",OracleDbType.Date,
  1093. DateTime.Now,ParameterDirection.Input)
  1094. };
  1095. RecordReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
  1096. //添加履历
  1097. int HistoryReturn = 0;
  1098. sbSql.Clear();
  1099. sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
  1100. int HistoryId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1101. sbSql.Clear();
  1102. sbSql.Append("Insert into TP_PC_GMouldHistory");
  1103. sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  1104. sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
  1105. sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  1106. sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
  1107. OracleParameter[] HParas = new OracleParameter[] {
  1108. new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
  1109. HistoryId,ParameterDirection.Input),
  1110. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1111. historyEntity.GROUTINGLINEID,ParameterDirection.Input),
  1112. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1113. historyEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1114. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1115. historyEntity.GOODSID,ParameterDirection.Input),
  1116. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1117. historyEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  1118. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1119. historyEntity.MouldCode,ParameterDirection.Input),
  1120. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1121. historyEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1122. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  1123. historyEntity.BEGINUSEDDATE,ParameterDirection.Input),
  1124. new OracleParameter(":EndUsedDate",OracleDbType.Date,
  1125. historyEntity.ENDUSEDDATE,ParameterDirection.Input),
  1126. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1127. historyEntity.REMARKS,ParameterDirection.Input),
  1128. new OracleParameter(":AccountID",OracleDbType.Int32,
  1129. user.AccountID,ParameterDirection.Input),
  1130. new OracleParameter(":CreateTime",OracleDbType.Date,
  1131. DateTime.Now,ParameterDirection.Input),
  1132. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1133. user.UserID,ParameterDirection.Input)
  1134. };
  1135. HistoryReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HParas);
  1136. if (returnRows == 0)
  1137. {
  1138. oracleTrConn.Rollback();
  1139. oracleTrConn.Disconnect();
  1140. return returnRows;
  1141. }
  1142. oracleTrConn.Commit();
  1143. oracleTrConn.Disconnect();
  1144. }
  1145. catch (Exception ex)
  1146. {
  1147. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1148. {
  1149. oracleTrConn.Rollback();
  1150. oracleTrConn.Disconnect();
  1151. }
  1152. throw ex;
  1153. }
  1154. return returnRows;
  1155. }
  1156. /// <summary>
  1157. /// 更换模具(只插入换修履历,并只更新成型线明细的状态)
  1158. /// </summary>
  1159. /// <param name="detailEntity">明细实体</param>
  1160. /// <param name="recordEntity">换修履历实体</param>
  1161. /// <param name="user">用户基本信息</param>
  1162. /// <returns>int受影响行数</returns>
  1163. /// <remarks>
  1164. /// 庄天威 2014.09.11 新建
  1165. /// </remarks>
  1166. public static int ChangeDetail(GroutingLineDetailEntity detailEntity, GMouldRecordEntity recordEntity, SUserInfo user)
  1167. {
  1168. int returnRows = 0;
  1169. int UpReturn = 0;
  1170. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1171. try
  1172. {
  1173. oracleTrConn.Connect();
  1174. // 获得账务日期
  1175. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  1176. //更新明细信息
  1177. StringBuilder sbSql = new StringBuilder();
  1178. sbSql.Append("update TP_PC_GroutingLineDetail");
  1179. sbSql.Append(" set GMouldStatus =:GMouldStatus");
  1180. sbSql.Append(" UpdateUserID =:UpdateUserID");
  1181. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
  1182. OracleParameter[] Paras = new OracleParameter[] {
  1183. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  1184. detailEntity.MOULDSTATUS,ParameterDirection.Input),
  1185. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1186. user.UserID,ParameterDirection.Input),
  1187. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1188. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1189. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  1190. detailEntity.OPTIMESTAMP,ParameterDirection.Input)
  1191. };
  1192. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1193. if (returnRows == 0)
  1194. {
  1195. oracleTrConn.Rollback();
  1196. oracleTrConn.Disconnect();
  1197. return -500;
  1198. }
  1199. //如果是维修转换模
  1200. if (recordEntity.RESUMETYPE == Convert.ToInt32(Constant.GMouldRecordType.RepairToReplac))
  1201. {
  1202. int MouldResumeId = 0;
  1203. //把上一条维修信息的结束时间添加上
  1204. //ID为倒序的第一个数据就是符合条件的
  1205. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  1206. try
  1207. {
  1208. con.Open();
  1209. sbSql.Clear();
  1210. sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord where ");
  1211. sbSql.Append(" GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  1212. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  1213. OracleParameter[] QParas = new OracleParameter[] {
  1214. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1215. recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1216. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1217. recordEntity.GROUTINGLINEID,ParameterDirection.Input),
  1218. new OracleParameter(":AccountId",OracleDbType.Int32,
  1219. user.AccountID,ParameterDirection.Input)
  1220. };
  1221. DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), QParas);
  1222. MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  1223. con.Close();
  1224. //根据ID补录结束时间
  1225. sbSql.Clear();
  1226. sbSql.Append("update TP_PC_GMouldRecord");
  1227. sbSql.Append(" set ENDDATE = :ENDDATE");
  1228. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  1229. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  1230. OracleParameter[] UpParas = new OracleParameter[] {
  1231. new OracleParameter(":ENDDATE",OracleDbType.Date,
  1232. recordEntity.BEGINDATE,ParameterDirection.Input),
  1233. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1234. MouldResumeId,ParameterDirection.Input),
  1235. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  1236. user.AccountID,ParameterDirection.Input)
  1237. };
  1238. UpReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  1239. }
  1240. catch (Exception ex)
  1241. {
  1242. if (con.ConnState == ConnectionState.Open)
  1243. {
  1244. con.Close();
  1245. }
  1246. throw ex;
  1247. }
  1248. }
  1249. //添加换修履历
  1250. int RecordReturn = 0;
  1251. sbSql.Clear();
  1252. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  1253. int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1254. sbSql.Clear();
  1255. sbSql.Append("Insert into TP_PC_GMouldRecord");
  1256. sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  1257. sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  1258. sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  1259. sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  1260. OracleParameter[] RParas = new OracleParameter[] {
  1261. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1262. Id,ParameterDirection.Input),
  1263. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1264. recordEntity.GROUTINGLINEID,ParameterDirection.Input),
  1265. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1266. recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1267. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1268. recordEntity.GOODSID,ParameterDirection.Input),
  1269. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1270. recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  1271. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1272. recordEntity.MouldCode,ParameterDirection.Input),
  1273. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1274. recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1275. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  1276. recordEntity.RESUMETYPE,ParameterDirection.Input),
  1277. new OracleParameter(":BeginDate",OracleDbType.Date,
  1278. recordEntity.BEGINDATE,ParameterDirection.Input),
  1279. new OracleParameter(":EndDate",OracleDbType.Date,
  1280. DBNull.Value,ParameterDirection.Input),
  1281. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1282. recordEntity.RREASON,ParameterDirection.Input),
  1283. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1284. recordEntity.REMARKS,ParameterDirection.Input),
  1285. new OracleParameter(":AccountID",OracleDbType.Int32,
  1286. user.AccountID,ParameterDirection.Input),
  1287. new OracleParameter(":CreateTime",OracleDbType.Date,
  1288. DateTime.Now,ParameterDirection.Input),
  1289. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1290. user.UserID,ParameterDirection.Input),
  1291. new OracleParameter(":UpdateTime",OracleDbType.Date,
  1292. DateTime.Now,ParameterDirection.Input),
  1293. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1294. user.UserID,ParameterDirection.Input),
  1295. new OracleParameter(":OPTimeStamp",OracleDbType.Date,
  1296. DateTime.Now,ParameterDirection.Input)
  1297. };
  1298. RecordReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
  1299. if (returnRows == 0)
  1300. {
  1301. oracleTrConn.Rollback();
  1302. oracleTrConn.Disconnect();
  1303. return returnRows;
  1304. }
  1305. oracleTrConn.Commit();
  1306. oracleTrConn.Disconnect();
  1307. }
  1308. catch (Exception ex)
  1309. {
  1310. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1311. {
  1312. oracleTrConn.Rollback();
  1313. oracleTrConn.Disconnect();
  1314. }
  1315. throw ex;
  1316. }
  1317. finally
  1318. {
  1319. if (oracleTrConn.ConnState == ConnectionState.Open)
  1320. {
  1321. oracleTrConn.Disconnect();
  1322. }
  1323. }
  1324. return returnRows;
  1325. }
  1326. /// <summary>
  1327. /// 更换完成(只修改明细状态)
  1328. /// </summary>
  1329. /// <param name="detailEntity">明细实体</param>
  1330. /// <param name="EndTime">结束日期</param>
  1331. /// <param name="Remarks">备注</param>
  1332. /// <param name="user">用户基本信息</param>
  1333. /// <returns>int受影响行数</returns>
  1334. /// <remarks>
  1335. /// 庄天威 2014.09.11 新建
  1336. /// </remarks>
  1337. public static int ChangeDetailEnd(GroutingLineDetailEntity detailEntity, DateTime? EndTime, String Remarks, SUserInfo user)
  1338. {
  1339. int returnRows = 0;
  1340. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1341. StringBuilder sbSql = new StringBuilder();
  1342. int MouldResumeId = 0;
  1343. string remarks = "";
  1344. try
  1345. {
  1346. //首先获取换修履历的ID
  1347. oracleTrConn.Connect();
  1348. //sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
  1349. sbSql.Append("Select GMouldRecordID,RREASON from TP_PC_GMouldRecord");
  1350. sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  1351. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  1352. OracleParameter[] Paras = new OracleParameter[] {
  1353. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1354. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1355. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1356. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  1357. new OracleParameter(":AccountId",OracleDbType.Int32,
  1358. user.AccountID,ParameterDirection.Input)
  1359. };
  1360. DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  1361. MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  1362. remarks = ds.Tables[0].Rows[0]["RREASON"].ToString();
  1363. // 获得账务日期
  1364. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  1365. //更新明细信息
  1366. sbSql.Clear();
  1367. sbSql.Append("update TP_PC_GroutingLineDetail set ");
  1368. sbSql.Append("Remarks =:Remarks,");//新添加的
  1369. sbSql.Append("GMouldStatus =:GMouldStatus,");
  1370. sbSql.Append("UpdateUserID =:UpdateUserID");
  1371. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
  1372. OracleParameter[] Paras1 = new OracleParameter[] {
  1373. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  1374. detailEntity.MOULDSTATUS,ParameterDirection.Input),
  1375. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1376. user.UserID,ParameterDirection.Input),
  1377. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1378. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1379. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  1380. detailEntity.OPTIMESTAMP,ParameterDirection.Input),
  1381. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  1382. remarks+"->"+ detailEntity.REMARKS,ParameterDirection.Input),
  1383. };
  1384. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras1);
  1385. if (returnRows == 0)
  1386. {
  1387. oracleTrConn.Rollback();
  1388. oracleTrConn.Disconnect();
  1389. return -500;
  1390. }
  1391. //更新换修履历的结束时间
  1392. sbSql.Clear();
  1393. sbSql.Append("update TP_PC_GMouldRecord");
  1394. sbSql.Append(" set ENDDATE = :ENDDATE");
  1395. sbSql.Append(",Remarks = :Remarks");
  1396. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  1397. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  1398. DateTime? recordEndTime = accountDate;
  1399. if (EndTime != null)
  1400. {
  1401. recordEndTime = EndTime;
  1402. }
  1403. OracleParameter[] UpParas = new OracleParameter[] {
  1404. new OracleParameter(":ENDDATE",OracleDbType.Date,
  1405. recordEndTime,ParameterDirection.Input),
  1406. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1407. Remarks,ParameterDirection.Input),
  1408. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1409. MouldResumeId,ParameterDirection.Input),
  1410. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  1411. user.AccountID,ParameterDirection.Input)
  1412. };
  1413. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  1414. if (returnRows == 0)
  1415. {
  1416. oracleTrConn.Rollback();
  1417. oracleTrConn.Disconnect();
  1418. return returnRows;
  1419. }
  1420. oracleTrConn.Commit();
  1421. oracleTrConn.Disconnect();
  1422. }
  1423. catch (Exception ex)
  1424. {
  1425. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1426. {
  1427. oracleTrConn.Rollback();
  1428. oracleTrConn.Disconnect();
  1429. }
  1430. throw ex;
  1431. }
  1432. finally
  1433. {
  1434. if (oracleTrConn.ConnState == ConnectionState.Open)
  1435. {
  1436. oracleTrConn.Disconnect();
  1437. }
  1438. }
  1439. return returnRows;
  1440. }
  1441. /// <summary>
  1442. /// 更换完成(修改明细状态,重置模具编号,注浆次数,开始使用时间,并插入模具履历)
  1443. /// </summary>
  1444. /// <param name="detailEntity">明细实体</param>
  1445. /// <param name="historyEntity">模具履历实体</param>
  1446. /// <param name="user">用户基本信息</param>
  1447. /// <returns>int受影响行数</returns>
  1448. /// <remarks>
  1449. /// 庄天威 2014.09.11 新建
  1450. /// </remarks>
  1451. public static int ChangeDetailEnd(GroutingLineDetailEntity detailEntity, GMouldHistoryEntity historyEntity, SUserInfo user)
  1452. {
  1453. int returnRows = 0;
  1454. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1455. StringBuilder sbSql = new StringBuilder();
  1456. int MouldResumeId = 0;
  1457. try
  1458. {
  1459. //首先获取换修履历的ID
  1460. oracleTrConn.Connect();
  1461. sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
  1462. sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  1463. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  1464. OracleParameter[] Paras = new OracleParameter[] {
  1465. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1466. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1467. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1468. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  1469. new OracleParameter(":AccountId",OracleDbType.Int32,
  1470. user.AccountID,ParameterDirection.Input)
  1471. };
  1472. DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  1473. MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  1474. // 获得账务日期
  1475. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  1476. //更新明细信息
  1477. sbSql.Clear();
  1478. sbSql.Append("update TP_PC_GroutingLineDetail set ");
  1479. sbSql.Append("MouldCode =:MouldCode,");
  1480. sbSql.Append("GroutingCount =:GroutingCount,");
  1481. sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
  1482. sbSql.Append("UpdateUserID =:UpdateUserID");
  1483. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
  1484. OracleParameter[] Paras1 = new OracleParameter[] {
  1485. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1486. detailEntity.MOULDCODE,ParameterDirection.Input),
  1487. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1488. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1489. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  1490. detailEntity.MOULDSTATUS,ParameterDirection.Input),
  1491. new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
  1492. detailEntity.BEGINUSEDDATE.ToString("yyyy-MM-dd"),ParameterDirection.Input),
  1493. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1494. user.UserID,ParameterDirection.Input),
  1495. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1496. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1497. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  1498. detailEntity.OPTIMESTAMP,ParameterDirection.Input)
  1499. };
  1500. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras1);
  1501. //时间戳不匹配
  1502. if (returnRows == 0)
  1503. {
  1504. oracleTrConn.Rollback();
  1505. oracleTrConn.Disconnect();
  1506. return -500;
  1507. }
  1508. //添加履历
  1509. int HistoryReturn = 0;
  1510. sbSql.Clear();
  1511. sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
  1512. int HistoryId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1513. sbSql.Clear();
  1514. sbSql.Append("Insert into TP_PC_GMouldHistory");
  1515. sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  1516. sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
  1517. sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  1518. sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
  1519. OracleParameter[] HParas = new OracleParameter[] {
  1520. new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
  1521. HistoryId,ParameterDirection.Input),
  1522. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1523. historyEntity.GROUTINGLINEID,ParameterDirection.Input),
  1524. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1525. historyEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1526. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1527. historyEntity.GOODSID,ParameterDirection.Input),
  1528. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1529. historyEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  1530. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1531. historyEntity.MouldCode,ParameterDirection.Input),
  1532. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1533. historyEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1534. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  1535. historyEntity.BEGINUSEDDATE,ParameterDirection.Input),
  1536. new OracleParameter(":EndUsedDate",OracleDbType.Date,
  1537. historyEntity.ENDUSEDDATE,ParameterDirection.Input),
  1538. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1539. historyEntity.REMARKS,ParameterDirection.Input),
  1540. new OracleParameter(":AccountID",OracleDbType.Int32,
  1541. user.AccountID,ParameterDirection.Input),
  1542. new OracleParameter(":CreateTime",OracleDbType.Date,
  1543. DateTime.Now,ParameterDirection.Input),
  1544. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1545. user.UserID,ParameterDirection.Input)
  1546. };
  1547. HistoryReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HParas);
  1548. //更新换修履历
  1549. sbSql.Clear();
  1550. sbSql.Append("update TP_PC_GMouldRecord");
  1551. sbSql.Append(" set ENDDATE = :ENDDATE");
  1552. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  1553. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  1554. OracleParameter[] UpParas = new OracleParameter[] {
  1555. new OracleParameter(":ENDDATE",OracleDbType.Date,
  1556. detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
  1557. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1558. MouldResumeId,ParameterDirection.Input),
  1559. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  1560. user.AccountID,ParameterDirection.Input)
  1561. };
  1562. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  1563. if (returnRows == 0)
  1564. {
  1565. oracleTrConn.Rollback();
  1566. oracleTrConn.Disconnect();
  1567. return returnRows;
  1568. }
  1569. oracleTrConn.Commit();
  1570. oracleTrConn.Disconnect();
  1571. }
  1572. catch (Exception ex)
  1573. {
  1574. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1575. {
  1576. oracleTrConn.Rollback();
  1577. oracleTrConn.Disconnect();
  1578. }
  1579. throw ex;
  1580. }
  1581. finally
  1582. {
  1583. if (oracleTrConn.ConnState == ConnectionState.Open)
  1584. {
  1585. oracleTrConn.Disconnect();
  1586. }
  1587. }
  1588. return returnRows;
  1589. }
  1590. /// <summary>
  1591. /// 停用成型线明细
  1592. /// </summary>
  1593. /// <param name="detailEntity">明细实体</param>
  1594. /// <param name="recordEntity">换修履历实体</param>
  1595. /// <param name="user">用户基本信息</param>
  1596. /// <returns>int受影响行数</returns>
  1597. /// <remarks>
  1598. /// 庄天威 2014.09.12 新建
  1599. /// </remarks>
  1600. public static int StopDetail(GroutingLineDetailEntity detailEntity, GMouldRecordEntity recordEntity, SUserInfo user)
  1601. {
  1602. int returnRows = 0;
  1603. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1604. try
  1605. {
  1606. oracleTrConn.Connect();
  1607. //更新明细信息
  1608. StringBuilder sbSql = new StringBuilder();
  1609. sbSql.Append("update TP_PC_GroutingLineDetail");
  1610. sbSql.Append(" set GroutingLineID =:GroutingLineID,");
  1611. sbSql.Append("GroutingMouldCode =:GroutingMouldCode,");
  1612. sbSql.Append("GoodsID =:GoodsID,");
  1613. sbSql.Append("GroutingCount =:GroutingCount,");
  1614. sbSql.Append("GMouldStatus =:GMouldStatus,");
  1615. sbSql.Append("BeginUsedDate =to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
  1616. sbSql.Append("Remarks =:Remarks,");
  1617. sbSql.Append("AccountID =:AccountID,");
  1618. sbSql.Append("CreateTime =to_date(:CreateTime,'yyyy-mm-dd hh24:mi:ss'),");
  1619. sbSql.Append("CreateUserID =:CreateUserID,");
  1620. sbSql.Append("UpdateTime =to_date(:UpdateTime,'yyyy-mm-dd hh24:mi:ss'),");
  1621. sbSql.Append("UpdateUserID =:UpdateUserID");
  1622. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
  1623. OracleParameter[] Paras = new OracleParameter[] {
  1624. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1625. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  1626. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1627. detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  1628. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1629. detailEntity.GOODSID,ParameterDirection.Input),
  1630. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1631. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1632. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  1633. detailEntity.MOULDSTATUS,ParameterDirection.Input),
  1634. new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
  1635. detailEntity.BEGINUSEDDATE.ToString(),ParameterDirection.Input),
  1636. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1637. detailEntity.REMARKS,ParameterDirection.Input),
  1638. new OracleParameter(":AccountID",OracleDbType.Int32,
  1639. detailEntity.ACCOUNTID,ParameterDirection.Input),
  1640. new OracleParameter(":CreateTime",OracleDbType.NVarchar2,
  1641. detailEntity.CREATETIME.ToString(),ParameterDirection.Input),
  1642. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1643. detailEntity.CREATEUSERID,ParameterDirection.Input),
  1644. new OracleParameter(":UpdateTime",OracleDbType.NVarchar2,
  1645. DateTime.Now.ToString(),ParameterDirection.Input),
  1646. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1647. user.UserID,ParameterDirection.Input),
  1648. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1649. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1650. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  1651. detailEntity.OPTIMESTAMP,ParameterDirection.Input)
  1652. };
  1653. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1654. if (returnRows == 0)
  1655. {
  1656. oracleTrConn.Rollback();
  1657. oracleTrConn.Disconnect();
  1658. return -500;
  1659. }
  1660. //添加换修履历
  1661. int RecordReturn = 0;
  1662. sbSql.Clear();
  1663. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  1664. int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1665. sbSql.Clear();
  1666. sbSql.Append("Insert into TP_PC_GMouldRecord");
  1667. sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  1668. sbSql.Append("GMouldRecordType,BeginDate,EndDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  1669. sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  1670. sbSql.Append(":GMouldRecordType,:BeginDate,:EndDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  1671. OracleParameter[] RParas = new OracleParameter[] {
  1672. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1673. Id,ParameterDirection.Input),
  1674. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1675. recordEntity.GROUTINGLINEID,ParameterDirection.Input),
  1676. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1677. recordEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1678. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1679. recordEntity.GOODSID,ParameterDirection.Input),
  1680. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1681. recordEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  1682. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1683. recordEntity.MouldCode,ParameterDirection.Input),
  1684. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1685. recordEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1686. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  1687. recordEntity.RESUMETYPE,ParameterDirection.Input),
  1688. new OracleParameter(":BeginDate",OracleDbType.Date,
  1689. recordEntity.BEGINDATE,ParameterDirection.Input),
  1690. new OracleParameter(":EndDate",OracleDbType.Date,
  1691. DBNull.Value,ParameterDirection.Input),
  1692. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1693. recordEntity.RREASON,ParameterDirection.Input),
  1694. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1695. recordEntity.REMARKS,ParameterDirection.Input),
  1696. new OracleParameter(":AccountID",OracleDbType.Int32,
  1697. user.AccountID,ParameterDirection.Input),
  1698. new OracleParameter(":CreateTime",OracleDbType.Date,
  1699. DateTime.Now,ParameterDirection.Input),
  1700. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1701. user.UserID,ParameterDirection.Input),
  1702. new OracleParameter(":UpdateTime",OracleDbType.Date,
  1703. DateTime.Now,ParameterDirection.Input),
  1704. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1705. user.UserID,ParameterDirection.Input),
  1706. new OracleParameter(":OPTimeStamp",OracleDbType.Date,
  1707. DateTime.Now,ParameterDirection.Input)
  1708. };
  1709. RecordReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
  1710. oracleTrConn.Commit();
  1711. oracleTrConn.Disconnect();
  1712. }
  1713. catch (Exception ex)
  1714. {
  1715. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1716. {
  1717. oracleTrConn.Rollback();
  1718. oracleTrConn.Disconnect();
  1719. }
  1720. throw ex;
  1721. }
  1722. finally
  1723. {
  1724. if (oracleTrConn.ConnState == ConnectionState.Open)
  1725. {
  1726. oracleTrConn.Disconnect();
  1727. }
  1728. }
  1729. return returnRows;
  1730. }
  1731. /// <summary>
  1732. /// 启用成型线明细
  1733. /// </summary>
  1734. /// <param name="GroutingLineDetailID"></param>
  1735. /// <param name="user"></param>
  1736. /// <returns></returns>
  1737. public static int StartDetail(int GroutingLineDetailID, SUserInfo user)
  1738. {
  1739. int returnRows = 0;
  1740. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1741. try
  1742. {
  1743. oracleTrConn.Connect();
  1744. //更新明细信息
  1745. StringBuilder sbSql = new StringBuilder();
  1746. sbSql.Append("update TP_PC_GroutingLineDetail");
  1747. sbSql.Append(" set GMouldStatus =1");
  1748. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
  1749. OracleParameter[] Paras = new OracleParameter[] {
  1750. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1751. GroutingLineDetailID,ParameterDirection.Input),
  1752. };
  1753. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1754. if (returnRows == 0)
  1755. {
  1756. oracleTrConn.Rollback();
  1757. oracleTrConn.Disconnect();
  1758. }
  1759. else
  1760. {
  1761. oracleTrConn.Commit();
  1762. oracleTrConn.Disconnect();
  1763. }
  1764. return returnRows;
  1765. }
  1766. catch (Exception ex)
  1767. {
  1768. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1769. {
  1770. oracleTrConn.Rollback();
  1771. oracleTrConn.Disconnect();
  1772. }
  1773. throw ex;
  1774. }
  1775. finally
  1776. {
  1777. if (oracleTrConn.ConnState == ConnectionState.Open)
  1778. {
  1779. oracleTrConn.Disconnect();
  1780. }
  1781. }
  1782. }
  1783. /// <summary>
  1784. /// 整线换模(插入模具履历,并更新明细的各字段(模具编号,注浆次数,开始使用日期,模具状态))
  1785. /// </summary>
  1786. /// <param name="groutingLineEntity">成型线实体</param>
  1787. /// <param name="detailList">明细集合</param>
  1788. /// <param name="StartTime">起始日期</param>
  1789. /// <param name="Rreason">原因</param>
  1790. /// <param name="user">用户基本信息</param>
  1791. /// <returns>int受影响行数</returns>
  1792. /// <remarks>
  1793. /// 庄天威 2014.09.12 新建
  1794. /// </remarks>
  1795. public static int ChangeAllLine(GroutingLineEntity groutingLineEntity, List<GroutingLineDetailEntity> detailList, DateTime? StartTime, String Rreason, SUserInfo user)
  1796. {
  1797. int returnRows = 0;
  1798. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1799. try
  1800. {
  1801. oracleTrConn.Connect();
  1802. // 获得账务日期
  1803. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  1804. if (StartTime != null)
  1805. {
  1806. accountDate = Convert.ToDateTime(StartTime);
  1807. }
  1808. //修改成型线整体状态
  1809. StringBuilder sbSql = new StringBuilder();
  1810. sbSql.Append("update TP_PC_GroutingLine");
  1811. sbSql.Append(" set GMouldStatus=3,");
  1812. sbSql.Append("UpdateTime=:UpdateTime,");
  1813. sbSql.Append("UpdateUserID=:UpdateUserID");
  1814. sbSql.Append(" where GroutingLineID=:GroutingLineID");
  1815. OracleParameter[] Paras = new OracleParameter[] {
  1816. new OracleParameter(":UpdateTime",OracleDbType.Date,
  1817. DateTime.Now,ParameterDirection.Input),
  1818. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1819. user.UserID,ParameterDirection.Input),
  1820. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1821. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  1822. };
  1823. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1824. //遍历该成型线的每一个模具信息(明细)
  1825. foreach (GroutingLineDetailEntity detailEntity in detailList)
  1826. {
  1827. //判断该模具的状态
  1828. //正常或维修状态可以转为换模状态,并更新模具编号,注浆次数,开始使用日期,模具状态
  1829. if (detailEntity.MOULDSTATUS != 0) //只要不是停用的,就要进行修改
  1830. {
  1831. string newMouldCode = Guid.NewGuid().ToString().ToUpper();
  1832. //更新明细信息
  1833. sbSql.Clear();
  1834. sbSql.Append("update TP_PC_GroutingLineDetail");
  1835. sbSql.Append(" set GMouldStatus =3,");
  1836. sbSql.Append("remarks=:remarks,");//后添加的
  1837. sbSql.Append(" GroutingCount=0,");
  1838. sbSql.Append(" BeginUsedDate = to_date(:BeginUsedDate,'yyyy-mm-dd hh24:mi:ss'),");
  1839. sbSql.Append(" MouldCode =:MouldCode,");
  1840. sbSql.Append(" UpdateUserID =:UpdateUserID");
  1841. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
  1842. OracleParameter[] DParas = new OracleParameter[] {
  1843. new OracleParameter(":remarks",OracleDbType.Varchar2,
  1844. Rreason,ParameterDirection.Input),
  1845. new OracleParameter(":BeginUsedDate",OracleDbType.NVarchar2,
  1846. accountDate,ParameterDirection.Input),
  1847. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1848. Guid.NewGuid().ToString().ToUpper(),ParameterDirection.Input),
  1849. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1850. user.UserID,ParameterDirection.Input),
  1851. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1852. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1853. };
  1854. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DParas);
  1855. //添加换修履历
  1856. int RecordReturn = 0;
  1857. sbSql.Clear();
  1858. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  1859. int RecordId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1860. sbSql.Clear();
  1861. sbSql.Append("Insert into TP_PC_GMouldRecord");
  1862. sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  1863. sbSql.Append("GMouldRecordType,BeginDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  1864. sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  1865. sbSql.Append(":GMouldRecordType,:BeginDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  1866. string rreasonStr = "整线换模";
  1867. if (Rreason != "")
  1868. {
  1869. rreasonStr = Rreason;
  1870. }
  1871. OracleParameter[] RParas = new OracleParameter[] {
  1872. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1873. RecordId,ParameterDirection.Input),
  1874. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1875. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  1876. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1877. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1878. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1879. detailEntity.GOODSID,ParameterDirection.Input),
  1880. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1881. detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  1882. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1883. detailEntity.MOULDCODE,ParameterDirection.Input),
  1884. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1885. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1886. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  1887. 4,ParameterDirection.Input),
  1888. new OracleParameter(":BeginDate",OracleDbType.Date,
  1889. accountDate,ParameterDirection.Input),
  1890. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1891. rreasonStr,ParameterDirection.Input),
  1892. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1893. String.Empty,ParameterDirection.Input),
  1894. new OracleParameter(":AccountID",OracleDbType.Int32,
  1895. user.AccountID,ParameterDirection.Input),
  1896. new OracleParameter(":CreateTime",OracleDbType.Date,
  1897. DateTime.Now,ParameterDirection.Input),
  1898. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1899. user.UserID,ParameterDirection.Input),
  1900. new OracleParameter(":UpdateTime",OracleDbType.Date,
  1901. DateTime.Now,ParameterDirection.Input),
  1902. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1903. user.UserID,ParameterDirection.Input),
  1904. new OracleParameter(":OPTimeStamp",OracleDbType.Date,
  1905. DateTime.Now,ParameterDirection.Input),
  1906. };
  1907. RecordReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RParas);
  1908. //如果是正常换模或维修转换模,要进行模具履历的添加,如果最开始先换了,那么就不添加这条履历。
  1909. if (detailEntity.MOULDSTATUS != 2)
  1910. {
  1911. int HistoryReturn = 0;
  1912. sbSql.Clear();
  1913. sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
  1914. int HistoryId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1915. sbSql.Clear();
  1916. sbSql.Append("Insert into TP_PC_GMouldHistory");
  1917. sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  1918. sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
  1919. sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  1920. sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
  1921. OracleParameter[] HParas = new OracleParameter[] {
  1922. new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
  1923. HistoryId,ParameterDirection.Input),
  1924. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1925. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  1926. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1927. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1928. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1929. detailEntity.GOODSID,ParameterDirection.Input),
  1930. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1931. detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  1932. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1933. detailEntity.MOULDCODE,ParameterDirection.Input),
  1934. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  1935. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  1936. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  1937. detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
  1938. new OracleParameter(":EndUsedDate",OracleDbType.Date,
  1939. accountDate,ParameterDirection.Input),
  1940. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1941. detailEntity.REMARKS,ParameterDirection.Input),
  1942. new OracleParameter(":AccountID",OracleDbType.Int32,
  1943. user.AccountID,ParameterDirection.Input),
  1944. new OracleParameter(":CreateTime",OracleDbType.Date,
  1945. DateTime.Now,ParameterDirection.Input),
  1946. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1947. user.UserID,ParameterDirection.Input)
  1948. };
  1949. HistoryReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HParas);
  1950. }
  1951. //把之前的换修履历的结束时间添加上。
  1952. int MouldResumdId = 0;
  1953. if (detailEntity.MOULDSTATUS != 1) //如果是维修或者换模状态,那么之前会有一条履历,正常状态则没有
  1954. {
  1955. //ID为倒序的第一个数据就是符合条件的
  1956. sbSql.Clear();
  1957. sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord where ");
  1958. sbSql.Append(" GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  1959. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  1960. OracleParameter[] TParas = new OracleParameter[] {
  1961. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1962. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  1963. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1964. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  1965. new OracleParameter(":AccountId",OracleDbType.Int32,
  1966. user.AccountID,ParameterDirection.Input)
  1967. };
  1968. DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), TParas);
  1969. MouldResumdId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  1970. sbSql.Clear();
  1971. sbSql.Append("update TP_PC_GMouldRecord");
  1972. sbSql.Append(" set ENDDATE = :ENDDATE");
  1973. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  1974. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  1975. OracleParameter[] UpParas = new OracleParameter[] {
  1976. new OracleParameter(":ENDDATE",OracleDbType.Date,
  1977. accountDate,ParameterDirection.Input),
  1978. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  1979. MouldResumdId,ParameterDirection.Input),
  1980. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  1981. user.AccountID,ParameterDirection.Input)
  1982. };
  1983. int UpdateTimeReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  1984. }
  1985. }
  1986. }
  1987. oracleTrConn.Commit();
  1988. oracleTrConn.Disconnect();
  1989. }
  1990. catch (Exception ex)
  1991. {
  1992. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1993. {
  1994. oracleTrConn.Rollback();
  1995. oracleTrConn.Disconnect();
  1996. }
  1997. throw ex;
  1998. }
  1999. finally
  2000. {
  2001. if (oracleTrConn.ConnState == ConnectionState.Open)
  2002. {
  2003. oracleTrConn.Disconnect();
  2004. }
  2005. }
  2006. return returnRows;
  2007. }
  2008. /// <summary>
  2009. /// 整线换模完毕(更新明细状态即可)
  2010. /// </summary>
  2011. /// <param name="groutingLineEntity">成型线实体</param>
  2012. /// <param name="detailList">明细集合</param>
  2013. /// <param name="endTime">结束日期</param>
  2014. /// <param name="remarks">备注</param>
  2015. /// <param name="user">用户信息</param>
  2016. /// <returns>int受影响行数</returns>
  2017. /// <remarks>
  2018. /// 庄天威 2014.09.12 新建
  2019. /// </remarks>
  2020. public static int ChangeAllLineEnd(GroutingLineEntity groutingLineEntity, List<GroutingLineDetailEntity> detailList, DateTime? endTime, string remarks, SUserInfo user)
  2021. {
  2022. int returnRows = 0;
  2023. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2024. int MouldResumeId = 0;
  2025. try
  2026. {
  2027. oracleTrConn.Connect();
  2028. // 获得账务日期
  2029. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  2030. if (endTime != null)
  2031. {
  2032. accountDate = Convert.ToDateTime(endTime);
  2033. }
  2034. //修改成型线整体状态
  2035. StringBuilder sbSql = new StringBuilder();
  2036. sbSql.Append("update TP_PC_GroutingLine");
  2037. sbSql.Append(" set GMouldStatus=1,");
  2038. sbSql.Append("UpdateTime=:UpdateTime,");
  2039. sbSql.Append("UpdateUserID=:UpdateUserID");
  2040. sbSql.Append(" where GroutingLineID=:GroutingLineID");
  2041. OracleParameter[] Paras = new OracleParameter[] {
  2042. new OracleParameter(":UpdateTime",OracleDbType.Date,
  2043. DateTime.Now,ParameterDirection.Input),
  2044. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2045. user.UserID,ParameterDirection.Input),
  2046. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2047. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  2048. };
  2049. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  2050. string remark2 = "";
  2051. if (detailList.Count > 0)
  2052. {
  2053. string sql = "select remarks from TP_PC_GroutingLineDetail where GroutingLineDetailID=" + detailList[0].GROUTINGLINEDETAILID;
  2054. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  2055. if (ds != null && ds.Tables[0].Rows.Count > 0)
  2056. {
  2057. remark2 = ds.Tables[0].Rows[0]["remarks"].ToString();
  2058. }
  2059. }
  2060. //将该成型线所属模具的状态改为正常
  2061. foreach (GroutingLineDetailEntity detailEntity in detailList)
  2062. {
  2063. if (detailEntity.MOULDSTATUS != 0) //停用的略过
  2064. {
  2065. //更新明细信息
  2066. sbSql.Clear();
  2067. sbSql.Append("update TP_PC_GroutingLineDetail");
  2068. sbSql.Append(" set GMouldStatus =:GMouldStatus,");
  2069. sbSql.Append("remarks =:remarks,");//后添加的
  2070. sbSql.Append("UpdateUserID =:UpdateUserID");
  2071. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
  2072. OracleParameter[] DParas = new OracleParameter[] {
  2073. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  2074. 1,ParameterDirection.Input),
  2075. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2076. user.UserID,ParameterDirection.Input),
  2077. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2078. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  2079. new OracleParameter(":remarks",OracleDbType.Varchar2,
  2080. remark2+"->"+remarks,ParameterDirection.Input),
  2081. };
  2082. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DParas);
  2083. //更新换修履历
  2084. //首先查询到该模具的最新换修履历
  2085. sbSql.Clear();
  2086. sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
  2087. sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  2088. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  2089. OracleParameter[] SParas = new OracleParameter[] {
  2090. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2091. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  2092. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2093. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  2094. new OracleParameter(":AccountId",OracleDbType.Int32,
  2095. user.AccountID,ParameterDirection.Input)
  2096. };
  2097. DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), SParas);
  2098. if (ds.Tables[0].Rows.Count > 0)
  2099. {
  2100. MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  2101. }
  2102. if (MouldResumeId != 0)
  2103. {
  2104. //把结束时间添加上
  2105. sbSql.Clear();
  2106. sbSql.Append("update TP_PC_GMouldRecord");
  2107. sbSql.Append(" set ENDDATE = :ENDDATE");
  2108. sbSql.Append(",Remarks = :Remarks");
  2109. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  2110. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  2111. OracleParameter[] UpParas = new OracleParameter[] {
  2112. new OracleParameter(":ENDDATE",OracleDbType.Date,
  2113. accountDate,ParameterDirection.Input),
  2114. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2115. remarks,ParameterDirection.Input),
  2116. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  2117. MouldResumeId,ParameterDirection.Input),
  2118. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  2119. user.AccountID,ParameterDirection.Input)
  2120. };
  2121. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  2122. }
  2123. }
  2124. }
  2125. oracleTrConn.Commit();
  2126. oracleTrConn.Disconnect();
  2127. }
  2128. catch (Exception ex)
  2129. {
  2130. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2131. {
  2132. oracleTrConn.Rollback();
  2133. oracleTrConn.Disconnect();
  2134. }
  2135. throw ex;
  2136. }
  2137. finally
  2138. {
  2139. if (oracleTrConn.ConnState == ConnectionState.Open)
  2140. {
  2141. oracleTrConn.Disconnect();
  2142. }
  2143. }
  2144. return returnRows;
  2145. }
  2146. /// <summary>
  2147. /// 判断成型线编号是否存在
  2148. /// </summary>
  2149. /// <param name="GroutingLineCode">成型线编码</param>
  2150. /// <param name="AccountID">帐套ID</param>
  2151. /// <returns>bool是否可插入数据</returns>
  2152. /// <remarks>
  2153. /// 庄天威 2014.09.12 新建
  2154. /// </remarks>
  2155. private static bool GroutingLineCodeIsRepeat(string GroutingLineCode, int AccountID)
  2156. {
  2157. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2158. StringBuilder sbSql = new StringBuilder();
  2159. try
  2160. {
  2161. con.Open();
  2162. sbSql.Append("Select GroutingLineID from TP_PC_GroutingLine");
  2163. sbSql.Append(" where AccountId=:AccountId and GroutingLineCode=:GroutingLineCode");
  2164. OracleParameter[] Paras = new OracleParameter[] {
  2165. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  2166. GroutingLineCode,ParameterDirection.Input),
  2167. new OracleParameter(":AccountId",OracleDbType.Int32,
  2168. AccountID,ParameterDirection.Input)
  2169. };
  2170. DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), Paras);
  2171. con.Close();
  2172. if (ds.Tables[0].Rows.Count > 0)
  2173. {
  2174. return false;
  2175. }
  2176. else
  2177. {
  2178. return true;
  2179. }
  2180. }
  2181. catch (Exception ex)
  2182. {
  2183. if (con.ConnState == ConnectionState.Open)
  2184. {
  2185. con.Close();
  2186. }
  2187. throw ex;
  2188. }
  2189. finally
  2190. {
  2191. if (con.ConnState == ConnectionState.Open)
  2192. {
  2193. con.Close();
  2194. }
  2195. }
  2196. }
  2197. /// <summary>
  2198. /// 判断成型线编号是否存在(外用)
  2199. /// </summary>
  2200. /// <param name="GroutingLineCode">成型线编码</param>
  2201. /// <param name="user">用户基本信息</param>
  2202. /// <returns>bool是否可插入数据</returns>
  2203. /// <remarks>
  2204. /// 庄天威 2014.09.12 新建
  2205. /// </remarks>
  2206. public static bool GroutingLineCodeIsRepeat(string GroutingLineCode, SUserInfo user)
  2207. {
  2208. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2209. StringBuilder sbSql = new StringBuilder();
  2210. try
  2211. {
  2212. con.Open();
  2213. sbSql.Append("Select GroutingLineID from TP_PC_GroutingLine");
  2214. sbSql.Append(" where AccountId=:AccountId and GroutingLineCode=:GroutingLineCode");
  2215. OracleParameter[] Paras = new OracleParameter[] {
  2216. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  2217. GroutingLineCode,ParameterDirection.Input),
  2218. new OracleParameter(":AccountId",OracleDbType.Int32,
  2219. user.AccountID,ParameterDirection.Input)
  2220. };
  2221. DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), Paras);
  2222. con.Close();
  2223. if (ds.Tables[0].Rows.Count > 0)
  2224. {
  2225. return false;
  2226. }
  2227. else
  2228. {
  2229. return true;
  2230. }
  2231. }
  2232. catch (Exception ex)
  2233. {
  2234. if (con.ConnState == ConnectionState.Open)
  2235. {
  2236. con.Close();
  2237. }
  2238. throw ex;
  2239. }
  2240. finally
  2241. {
  2242. if (con.ConnState == ConnectionState.Open)
  2243. {
  2244. con.Close();
  2245. }
  2246. }
  2247. }
  2248. /// <summary>
  2249. /// 判断成型线明细编号是否存在
  2250. /// </summary>
  2251. /// <param name="GroutingLineDetailCode">成型线明细编码</param>
  2252. /// <param name="AccountID">帐套ID</param>
  2253. /// <returns>bool是否可插入数据</returns>
  2254. /// <remarks>
  2255. /// 庄天威 2014.09.12 新建
  2256. /// </remarks>
  2257. private static bool GroutingLineDetailCodeIsRepeat(string GroutingLineDetailCode, int AccountID)
  2258. {
  2259. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  2260. StringBuilder sbSql = new StringBuilder();
  2261. try
  2262. {
  2263. con.Open();
  2264. sbSql.Append("Select GroutingLineDetailID from TP_PC_GroutingLineDetail gld");
  2265. sbSql.Append(" inner join TP_PC_GroutingLine gl on gld.GroutingLineID = gl.GroutingLineID");
  2266. sbSql.Append(" where gld.AccountId=:AccountId and gld.GroutingMouldCode=:GroutingMouldCode and gld.valueflag = '1' and gl.valueflag='1'");
  2267. OracleParameter[] Paras = new OracleParameter[] {
  2268. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  2269. GroutingLineDetailCode,ParameterDirection.Input),
  2270. new OracleParameter(":AccountId",OracleDbType.Int32,
  2271. AccountID,ParameterDirection.Input)
  2272. };
  2273. DataSet ds = con.GetSqlResultToDs(sbSql.ToString(), Paras);
  2274. con.Close();
  2275. if (ds.Tables[0].Rows.Count > 0)
  2276. {
  2277. return false;
  2278. }
  2279. else
  2280. {
  2281. return true;
  2282. }
  2283. }
  2284. catch (Exception ex)
  2285. {
  2286. if (con.ConnState == ConnectionState.Open)
  2287. {
  2288. con.Close();
  2289. }
  2290. throw ex;
  2291. }
  2292. finally
  2293. {
  2294. if (con.ConnState == ConnectionState.Open)
  2295. {
  2296. con.Close();
  2297. }
  2298. }
  2299. }
  2300. /// <summary>
  2301. /// 成性线变产
  2302. /// </summary>
  2303. /// <param name="groutingLineEntity">成型线实体</param>
  2304. /// <param name="detailList">明细集合</param>
  2305. /// <param name="user">用户基本信息</param>
  2306. /// <returns>int受影响行数</returns>
  2307. /// <remarks>
  2308. /// 庄天威 2014.09.12 新建
  2309. /// </remarks>
  2310. public static int UpdateLine(GroutingLineEntity groutingLineEntity, List<GroutingLineDetailEntity> detailList, SUserInfo user)
  2311. {
  2312. int returnRows = 0;
  2313. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2314. try
  2315. {
  2316. oracleTrConn.Connect();
  2317. // 获得账务日期
  2318. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  2319. //修改成型线整体状态(4为变产)
  2320. StringBuilder sbSql = new StringBuilder();
  2321. sbSql.Append("update TP_PC_GroutingLine");
  2322. sbSql.Append(" set GMouldStatus=4,");
  2323. sbSql.Append("UpdateTime=:UpdateTime,");
  2324. sbSql.Append("UpdateUserID=:UpdateUserID");
  2325. sbSql.Append(" where GroutingLineID=:GroutingLineID");
  2326. OracleParameter[] Paras = new OracleParameter[] {
  2327. new OracleParameter(":UpdateTime",OracleDbType.Date,
  2328. DateTime.Now,ParameterDirection.Input),
  2329. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2330. user.UserID,ParameterDirection.Input),
  2331. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2332. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  2333. };
  2334. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  2335. //遍历该成型线的每一个模具信息(明细)
  2336. foreach (GroutingLineDetailEntity detailEntity in detailList)
  2337. {
  2338. //更新成性线明细的各模具状态
  2339. if (detailEntity.MOULDSTATUS != 0) //只要不是停用的,就要进行修改
  2340. {
  2341. //更新明细信息
  2342. sbSql.Clear();
  2343. sbSql.Append("update TP_PC_GroutingLineDetail");
  2344. sbSql.Append(" set GMouldStatus =4,");
  2345. // modify wangx 2015/06/23 新添加
  2346. sbSql.Append(" Remarks =:Remarks,");
  2347. // modify wangx 2015/06/23 新添加 end
  2348. sbSql.Append(" UpdateUserID =:UpdateUserID");
  2349. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
  2350. OracleParameter[] DParas = new OracleParameter[] {
  2351. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2352. user.UserID,ParameterDirection.Input),
  2353. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2354. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  2355. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2356. groutingLineEntity.REMARKS,ParameterDirection.Input)
  2357. };
  2358. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DParas);
  2359. //插入变产履历
  2360. sbSql.Clear();
  2361. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  2362. int Id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2363. sbSql.Clear();
  2364. sbSql.Append("Insert into TP_PC_GMouldRecord");
  2365. sbSql.Append("(GMouldRecordID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  2366. sbSql.Append("GMouldRecordType,BeginDate,Rreason,Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  2367. sbSql.Append("VALUES(:GMouldRecordID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  2368. sbSql.Append(":GMouldRecordType,:BeginDate,:Rreason,:Remarks,:AccountID,:CreateTime,:CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  2369. OracleParameter[] GRParas = new OracleParameter[] {
  2370. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  2371. Id,ParameterDirection.Input),
  2372. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2373. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  2374. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2375. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  2376. new OracleParameter(":GoodsID",OracleDbType.Int32,
  2377. detailEntity.GOODSID,ParameterDirection.Input),
  2378. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  2379. detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  2380. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  2381. detailEntity.MOULDCODE,ParameterDirection.Input),
  2382. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  2383. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  2384. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  2385. Constant.GMouldRecordType.Update,ParameterDirection.Input),
  2386. new OracleParameter(":BeginDate",OracleDbType.Date,
  2387. accountDate,ParameterDirection.Input),
  2388. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  2389. groutingLineEntity.REMARKS,ParameterDirection.Input),
  2390. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2391. groutingLineEntity.REMARKS,ParameterDirection.Input),
  2392. new OracleParameter(":AccountID",OracleDbType.Int32,
  2393. user.AccountID,ParameterDirection.Input),
  2394. new OracleParameter(":CreateTime",OracleDbType.Date,
  2395. DateTime.Now,ParameterDirection.Input),
  2396. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2397. user.UserID,ParameterDirection.Input),
  2398. new OracleParameter(":UpdateTime",OracleDbType.Date,
  2399. DateTime.Now,ParameterDirection.Input),
  2400. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2401. user.UserID,ParameterDirection.Input),
  2402. new OracleParameter(":OPTimeStamp",OracleDbType.Date,
  2403. DateTime.Now,ParameterDirection.Input)
  2404. };
  2405. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), GRParas);
  2406. }
  2407. }
  2408. oracleTrConn.Commit();
  2409. oracleTrConn.Disconnect();
  2410. return returnRows;
  2411. }
  2412. catch (Exception ex)
  2413. {
  2414. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2415. {
  2416. oracleTrConn.Rollback();
  2417. oracleTrConn.Disconnect();
  2418. }
  2419. throw ex;
  2420. }
  2421. finally
  2422. {
  2423. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2424. {
  2425. oracleTrConn.Disconnect();
  2426. }
  2427. }
  2428. }
  2429. /// <summary>
  2430. /// 成型线变产完毕
  2431. /// </summary>
  2432. /// <param name="groutingLineEntity">成型线实体</param>
  2433. /// <param name="detailList">成型线明细集合</param>
  2434. /// <param name="detailNewGoodsId">新模具生产产品ID</param>
  2435. /// <param name="user">当前用户</param>
  2436. /// <returns>影响行数</returns>
  2437. public static int UpdateLineEnd(GroutingLineEntity groutingLineEntity, List<GroutingLineDetailEntity> detailList, int detailNewGoodsId, SUserInfo user)
  2438. {
  2439. int returnRows = 0;
  2440. int detailReturn = 0;
  2441. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2442. try
  2443. {
  2444. oracleTrConn.Connect();
  2445. // 获得账务日期
  2446. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  2447. //变产成功后,首先停用原成性线及其明细
  2448. StringBuilder sbSql = new StringBuilder();
  2449. sbSql.Append("update TP_PC_GroutingLine");
  2450. sbSql.Append(" set ValueFlag=0,");
  2451. //sbSql.Append("UpdateTime=:UpdateTime,");
  2452. sbSql.Append("UpdateUserID=:UpdateUserID");
  2453. sbSql.Append(" where GroutingLineID=:GroutingLineID");
  2454. OracleParameter[] Paras = new OracleParameter[] {
  2455. //new OracleParameter(":UpdateTime",OracleDbType.Date,
  2456. // DateTime.Now,ParameterDirection.Input),
  2457. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2458. user.UserID,ParameterDirection.Input),
  2459. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2460. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  2461. };
  2462. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  2463. // 查明细变产备注 modify wangx 20150623
  2464. string remarks = "";
  2465. if (detailList.Count > 0)
  2466. {
  2467. string sql = "select remarks from TP_PC_GroutingLineDetail where GroutingLineDetailID=" + detailList[0].GROUTINGLINEDETAILID;
  2468. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  2469. if (ds != null && ds.Tables[0].Rows.Count > 0)
  2470. {
  2471. remarks = ds.Tables[0].Rows[0]["remarks"].ToString();
  2472. }
  2473. }
  2474. // 查明细变产备注 modify wangx 20150623 end
  2475. // 遍历该成型线的每一个模具信息(明细),修改为停用状态
  2476. foreach (GroutingLineDetailEntity detailEntity in detailList)
  2477. {
  2478. // 更新成性线明细的各模具状态
  2479. //if (detailEntity.MOULDSTATUS != 0) //只要不是停用的,就要进行修改
  2480. {
  2481. // 更新明细信息
  2482. sbSql.Clear();
  2483. sbSql.Append("update TP_PC_GroutingLineDetail");
  2484. sbSql.Append(" set ValueFlag=0,");
  2485. sbSql.Append(" UpdateUserID =:UpdateUserID");
  2486. sbSql.Append(" where GroutingLineDetailID =:GroutingLineDetailID");
  2487. OracleParameter[] DParas = new OracleParameter[] {
  2488. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2489. user.UserID,ParameterDirection.Input),
  2490. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2491. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input)
  2492. };
  2493. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DParas);
  2494. }
  2495. }
  2496. //新建一条成性线,继承停用的成性线的一切属性,状态与是否停用均为正常属性。
  2497. //获取成型线ID索引
  2498. sbSql.Clear();
  2499. sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
  2500. int newLineId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2501. sbSql.Clear();
  2502. sbSql.Append(@"Insert into TP_PC_GroutingLine
  2503. (GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,GroutingLineName,MouldQuantity,GMouldTypeID,
  2504. UserID,BeginUsedDate,GMouldStatus,Remarks,AccountID,CreateUserID,UpdateUserID)
  2505. Select :NewGroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,GroutingLineName,MouldQuantity,GMouldTypeID,
  2506. UserID,:BeginUsedDate,1,Remarks,AccountID,:CreateUserID,:UpdateUserID from TP_PC_GroutingLine
  2507. Where GroutingLineID = :GroutingLineID");
  2508. OracleParameter[] AParas = new OracleParameter[] {
  2509. new OracleParameter(":NewGroutingLineID",OracleDbType.Int32,
  2510. newLineId,ParameterDirection.Input),
  2511. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  2512. accountDate,ParameterDirection.Input),
  2513. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2514. user.UserID,ParameterDirection.Input),
  2515. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2516. user.UserID,ParameterDirection.Input),
  2517. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2518. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input)
  2519. };
  2520. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), AParas);
  2521. //根据新成性线ID插入该成型线明细,
  2522. foreach (GroutingLineDetailEntity detailEntity in detailList)
  2523. {
  2524. //获取成型线明细索引
  2525. sbSql.Clear();
  2526. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  2527. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2528. sbSql.Clear();
  2529. //插入成型线明细信息
  2530. string NewMouldCode = Guid.NewGuid().ToString().ToUpper();
  2531. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  2532. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
  2533. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
  2534. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  2535. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
  2536. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
  2537. sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  2538. OracleParameter[] DetailParas = new OracleParameter[] {
  2539. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2540. detailId,ParameterDirection.Input),
  2541. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2542. newLineId,ParameterDirection.Input),
  2543. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  2544. detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  2545. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  2546. NewMouldCode,ParameterDirection.Input),
  2547. new OracleParameter(":GoodsID",OracleDbType.Int32,
  2548. detailNewGoodsId,ParameterDirection.Input),
  2549. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  2550. 0,ParameterDirection.Input),
  2551. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  2552. 1,ParameterDirection.Input),
  2553. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  2554. accountDate,ParameterDirection.Input),
  2555. //new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2556. // detailEntity.REMARKS,ParameterDirection.Input),
  2557. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2558. remarks+"->"+ groutingLineEntity.REMARKS,ParameterDirection.Input),
  2559. new OracleParameter(":AccountID",OracleDbType.Int32,
  2560. user.AccountID,ParameterDirection.Input),
  2561. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  2562. 1,ParameterDirection.Input),
  2563. new OracleParameter(":CreateTime",OracleDbType.Date,
  2564. DateTime.Now,ParameterDirection.Input),
  2565. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2566. user.UserID,ParameterDirection.Input),
  2567. new OracleParameter(":UpdateTime",OracleDbType.Date,
  2568. DateTime.Now,ParameterDirection.Input),
  2569. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2570. user.UserID,ParameterDirection.Input),
  2571. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  2572. DateTime.Now,ParameterDirection.Input)
  2573. };
  2574. //执行插入语句并累加成功插入次数
  2575. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  2576. //补全变产履历
  2577. //首先查询到该模具的最新换修履历
  2578. sbSql.Clear();
  2579. sbSql.Append("Select GMouldRecordID from TP_PC_GMouldRecord");
  2580. sbSql.Append(" where GroutingLineDetailID=:GroutingLineDetailID and GroutingLineID=:GroutingLineID");
  2581. sbSql.Append(" and AccountId=:AccountId Order by GMouldRecordID Desc");
  2582. OracleParameter[] SParas = new OracleParameter[] {
  2583. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2584. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  2585. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2586. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  2587. new OracleParameter(":AccountId",OracleDbType.Int32,
  2588. user.AccountID,ParameterDirection.Input)
  2589. };
  2590. int MouldResumeId = 0;
  2591. DataSet ds = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), SParas);
  2592. if (ds.Tables[0].Rows.Count > 0)
  2593. {
  2594. MouldResumeId = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
  2595. }
  2596. if (MouldResumeId != 0)
  2597. {
  2598. //把结束时间以及变产后信息添加上
  2599. sbSql.Clear();
  2600. sbSql.Append("update TP_PC_GMouldRecord");
  2601. sbSql.Append(" set ENDDATE = :ENDDATE");
  2602. sbSql.Append(",ChangedGoodsID = :ChangedGoodsID");
  2603. sbSql.Append(",ChangedMouldCode = :ChangedMouldCode");
  2604. sbSql.Append(",Remarks = :Remarks");
  2605. sbSql.Append(" where GMouldRecordID= :GMouldRecordID");
  2606. sbSql.Append(" and ACCOUNTID= :ACCOUNTID");
  2607. OracleParameter[] UpParas = new OracleParameter[] {
  2608. new OracleParameter(":ENDDATE",OracleDbType.Date,
  2609. accountDate,ParameterDirection.Input),
  2610. new OracleParameter(":ChangedGoodsID",OracleDbType.Int32,
  2611. detailNewGoodsId,ParameterDirection.Input),
  2612. new OracleParameter(":ChangedMouldCode",OracleDbType.NVarchar2,
  2613. NewMouldCode,ParameterDirection.Input),
  2614. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2615. groutingLineEntity.REMARKS,ParameterDirection.Input),
  2616. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  2617. MouldResumeId,ParameterDirection.Input),
  2618. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  2619. user.AccountID,ParameterDirection.Input)
  2620. };
  2621. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UpParas);
  2622. }
  2623. //插入换模履历
  2624. sbSql.Clear();
  2625. sbSql.Append("select SEQ_PC_GMouldHistory_ID.nextval from dual");
  2626. int HistoryId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2627. sbSql.Clear();
  2628. sbSql.Append("Insert into TP_PC_GMouldHistory");
  2629. sbSql.Append("(GMouldHistoryID,GroutingLineID,GroutingLineDetailID,GoodsID,GroutingMouldCode,MouldCode,GroutingCount,");
  2630. sbSql.Append("BeginUsedDate,EndUsedDate,Remarks,AccountID,CreateTime,CreateUserID)");
  2631. sbSql.Append(" Values(:GMouldHistoryID,:GroutingLineID,:GroutingLineDetailID,:GoodsID,:GroutingMouldCode,:MouldCode,:GroutingCount,");
  2632. sbSql.Append(":BeginUsedDate,:EndUsedDate,:Remarks,:AccountID,:CreateTime,:CreateUserID)");
  2633. OracleParameter[] HParas = new OracleParameter[] {
  2634. new OracleParameter(":GMouldHistoryID",OracleDbType.Int32,
  2635. HistoryId,ParameterDirection.Input),
  2636. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2637. detailEntity.GROUTINGLINEID,ParameterDirection.Input),
  2638. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2639. detailEntity.GROUTINGLINEDETAILID,ParameterDirection.Input),
  2640. new OracleParameter(":GoodsID",OracleDbType.Int32,
  2641. detailEntity.GOODSID,ParameterDirection.Input),
  2642. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  2643. detailEntity.GROUTINGMOULDCODE,ParameterDirection.Input),
  2644. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  2645. detailEntity.MOULDCODE,ParameterDirection.Input),
  2646. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  2647. detailEntity.GROUTINGCOUNT,ParameterDirection.Input),
  2648. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  2649. detailEntity.BEGINUSEDDATE,ParameterDirection.Input),
  2650. new OracleParameter(":EndUsedDate",OracleDbType.Date,
  2651. accountDate,ParameterDirection.Input),
  2652. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2653. groutingLineEntity.REMARKS,ParameterDirection.Input),
  2654. new OracleParameter(":AccountID",OracleDbType.Int32,
  2655. user.AccountID,ParameterDirection.Input),
  2656. new OracleParameter(":CreateTime",OracleDbType.Date,
  2657. DateTime.Now,ParameterDirection.Input),
  2658. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2659. user.UserID,ParameterDirection.Input)
  2660. };
  2661. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HParas);
  2662. }
  2663. //复制该线的所有范围权限,并移交到新线上,老线的权限全部删除
  2664. sbSql.Clear();
  2665. sbSql.Append(@" Insert into TP_MST_UserPurview (UserID,PurviewID,PurviewType,CreateUserID)
  2666. Select UserID,:PurviewID,PurviewType,:CreateUserID from TP_MST_UserPurview
  2667. Where PurviewID = :OldPurviewID and PurviewType in (5,6)");
  2668. OracleParameter[] UPParas = new OracleParameter[] {
  2669. new OracleParameter(":PurviewID",OracleDbType.Int32,
  2670. newLineId,ParameterDirection.Input),
  2671. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2672. user.UserID,ParameterDirection.Input),
  2673. new OracleParameter(":OldPurviewID",OracleDbType.Int32,
  2674. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input)
  2675. };
  2676. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), UPParas);
  2677. sbSql.Clear();
  2678. // 只删除操作权限
  2679. //sbSql.Append(@" Delete from TP_MST_UserPurview Where PurviewID = :OldPurviewID and PurviewType in (5,6)");
  2680. sbSql.Append(@" Delete from TP_MST_UserPurview Where PurviewID = :OldPurviewID and PurviewType = 6");
  2681. OracleParameter[] DPParas = new OracleParameter[] {
  2682. new OracleParameter(":OldPurviewID",OracleDbType.Int32,
  2683. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input)
  2684. };
  2685. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DPParas);
  2686. oracleTrConn.Commit();
  2687. oracleTrConn.Disconnect();
  2688. return newLineId;
  2689. }
  2690. catch (Exception ex)
  2691. {
  2692. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2693. {
  2694. oracleTrConn.Rollback();
  2695. oracleTrConn.Disconnect();
  2696. }
  2697. throw ex;
  2698. }
  2699. finally
  2700. {
  2701. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2702. {
  2703. oracleTrConn.Disconnect();
  2704. }
  2705. }
  2706. }
  2707. #endregion
  2708. #region 更新生产线信息
  2709. /// <summary>
  2710. /// 更新生产线
  2711. /// </summary>
  2712. /// <param name="productionLine">生产线实体</param>
  2713. /// <param name="sUserInfo">用户基本信息</param>
  2714. /// <returns></returns>
  2715. public static int UpdateProductionLine(ProductionLineEntity productionLine, SUserInfo sUserInfo)
  2716. {
  2717. int returnRows = 0;
  2718. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2719. try
  2720. {
  2721. string sqlText = " SELECT ProductionLineID "
  2722. + " FROM TP_PC_ProductionLine "
  2723. + " WHERE "
  2724. + " AccountID=:accountID "
  2725. + " AND ProductionLineCode=:productionLineCode"
  2726. + " AND ProductionLineID <> :productionLineID";
  2727. OracleParameter[] paras = new OracleParameter[]
  2728. {
  2729. new OracleParameter(":accountID",sUserInfo.AccountID),
  2730. new OracleParameter(":productionLineCode",productionLine.ProductionLineCode),
  2731. new OracleParameter(":productionLineID",productionLine.ProductionLineID),
  2732. };
  2733. string returnCode = oracleTrConn.GetSqlResultToStr(sqlText, paras);
  2734. if (!string.IsNullOrEmpty(returnCode))
  2735. {
  2736. return Constant.RETURN_IS_EXIST;//-3
  2737. }
  2738. #region 编辑生产线
  2739. sqlText = "UPDATE TP_PC_ProductionLine SET "
  2740. + "ProductionLineName=:productionLineName,"
  2741. + "ProductionLineCode=:productionLineCode,"
  2742. + "Remarks=:remarks,"
  2743. + "ValueFlag=:valueflag,"
  2744. + "UpdateTime=sysdate, "
  2745. + "UpdateUserID=:updateUserID "
  2746. + " WHERE ProductionLineID=:productionLineID";
  2747. paras = new OracleParameter[]
  2748. {
  2749. new OracleParameter(":productionLineName",productionLine.ProductionLineName),
  2750. new OracleParameter(":productionLineCode",productionLine.ProductionLineCode),
  2751. new OracleParameter(":remarks",productionLine.Remarks),
  2752. new OracleParameter(":valueflag",productionLine.ValueFlags[0]),
  2753. new OracleParameter(":updateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2754. new OracleParameter(":productionLineID", OracleDbType.Int32, productionLine.ProductionLineID,ParameterDirection.Input)
  2755. };
  2756. returnRows += oracleTrConn.ExecuteNonQuery(sqlText, paras);
  2757. #endregion
  2758. oracleTrConn.Commit();
  2759. }
  2760. catch (Exception ex)
  2761. {
  2762. oracleTrConn.Rollback();
  2763. throw ex;
  2764. }
  2765. finally
  2766. {
  2767. // 释放资源
  2768. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2769. {
  2770. oracleTrConn.Disconnect();
  2771. }
  2772. }
  2773. return returnRows;
  2774. }
  2775. #endregion
  2776. #region 成型线配置 20150916
  2777. /// <summary>
  2778. /// 更改成型线状态
  2779. /// </summary>
  2780. /// <param name="GroutingLineID"></param>
  2781. /// <param name="ValueFlag"></param>
  2782. /// <param name="sUserInfo"></param>
  2783. /// <returns></returns>
  2784. public static int SaveGroutingLineValueFlag(int GroutingLineID, int ValueFlag, SUserInfo sUserInfo)
  2785. {
  2786. int returnRows = 0;
  2787. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2788. try
  2789. {
  2790. oracleTrConn.Connect();
  2791. // 查询新插入的生产数据ID
  2792. string sqlText = "";
  2793. if (ValueFlag == 0)
  2794. {
  2795. sqlText = "update TP_PC_GroutingLine set GMouldStatus=:ValueFlag,updateUserID=:updateUserID,EndUsedDate=trunc(sysdate) where GroutingLineID=:GroutingLineID and GMouldStatus = 1";
  2796. }
  2797. else
  2798. {
  2799. sqlText = "update TP_PC_GroutingLine set GMouldStatus=:ValueFlag,updateUserID=:updateUserID,EndUsedDate=null where GroutingLineID=:GroutingLineID and GMouldStatus = 0";
  2800. }
  2801. OracleParameter[] parmeters1 = new OracleParameter[]
  2802. {
  2803. new OracleParameter(":GroutingLineID",OracleDbType.Int32,GroutingLineID,ParameterDirection.Input),
  2804. new OracleParameter(":ValueFlag",OracleDbType.Int32,ValueFlag,ParameterDirection.Input),
  2805. new OracleParameter(":updateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2806. };
  2807. returnRows = oracleTrConn.ExecuteNonQuery(sqlText, parmeters1);
  2808. oracleTrConn.Commit();
  2809. oracleTrConn.Disconnect();
  2810. return returnRows;
  2811. }
  2812. catch (Exception ex)
  2813. {
  2814. oracleTrConn.Rollback();
  2815. oracleTrConn.Disconnect();
  2816. throw ex;
  2817. }
  2818. finally
  2819. {
  2820. // 释放资源
  2821. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2822. {
  2823. oracleTrConn.Disconnect();
  2824. }
  2825. }
  2826. }
  2827. /// <summary>
  2828. /// 新建成型线信息
  2829. /// </summary>
  2830. /// <param name="groutingLineEntity">成型线实体</param>
  2831. /// <param name="detailList">明细实体集合</param>
  2832. /// <param name="user">用户基本信息</param>
  2833. /// <returns>返回受影响行数</returns>
  2834. /// <remarks>
  2835. /// 庄天威 2014.09.10 新建
  2836. /// </remarks>
  2837. public static int AddGroutingLine_New(GroutingLineEntity groutingLineEntity,
  2838. List<GroutingLineDetailEntity> detailList, List<GroutingLineUserEntity> detailUserList, SUserInfo user)
  2839. {
  2840. int returnRows = 0;
  2841. int detailReturn = 0;
  2842. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2843. try
  2844. {
  2845. oracleTrConn.Connect();
  2846. if (GroutingLineCodeIsRepeat(groutingLineEntity.GROUTINGLINECODE, user.AccountID) == false)
  2847. {
  2848. oracleTrConn.Rollback();
  2849. oracleTrConn.Disconnect();
  2850. return -50;
  2851. }
  2852. // 获得账务日期
  2853. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  2854. //获取成型线ID索引
  2855. StringBuilder sbSql = new StringBuilder();
  2856. sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
  2857. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2858. sbSql.Clear();
  2859. //添加成型线信息
  2860. sbSql.Append("Insert into TP_PC_GroutingLine");
  2861. sbSql.Append("(GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,");
  2862. sbSql.Append("GroutingLineName,MouldQuantity,GMouldTypeID,UserID,");
  2863. sbSql.Append("BeginUsedDate,GMouldStatus,Remarks,AccountID,ValueFlag,CreateTime,");
  2864. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp,UserCount)");
  2865. sbSql.Append("values(:GroutingLineID,:BuildingNo,:FloorNo,:GroutingLineNo,:GroutingLineCode,");
  2866. sbSql.Append(":GroutingLineName,:MouldQuantity,:GMouldTypeID,:UserID,");
  2867. sbSql.Append(":BeginUsedDate,:GMouldStatus,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
  2868. sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp,:UserCount)");
  2869. OracleParameter[] Paras = new OracleParameter[] {
  2870. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2871. id,ParameterDirection.Input),
  2872. new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
  2873. groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
  2874. new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
  2875. groutingLineEntity.FLOORNO,ParameterDirection.Input),
  2876. new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
  2877. groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
  2878. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  2879. groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
  2880. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  2881. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  2882. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  2883. groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
  2884. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  2885. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  2886. new OracleParameter(":UserID",OracleDbType.Int32,
  2887. groutingLineEntity.USERID,ParameterDirection.Input),
  2888. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  2889. accountDate,ParameterDirection.Input),
  2890. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  2891. groutingLineEntity.MouldStatus,ParameterDirection.Input),
  2892. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2893. groutingLineEntity.REMARKS,ParameterDirection.Input),
  2894. new OracleParameter(":AccountID",OracleDbType.Int32,
  2895. user.AccountID,ParameterDirection.Input),
  2896. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  2897. groutingLineEntity.VALUEFLAG,ParameterDirection.Input),
  2898. new OracleParameter(":CreateTime",OracleDbType.Date,
  2899. DateTime.Now,ParameterDirection.Input),
  2900. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2901. user.UserID,ParameterDirection.Input),
  2902. new OracleParameter(":UpdateTime",OracleDbType.Date,
  2903. DateTime.Now,ParameterDirection.Input),
  2904. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2905. user.UserID,ParameterDirection.Input),
  2906. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  2907. DateTime.Now,ParameterDirection.Input),
  2908. new OracleParameter(":UserCount",OracleDbType.Int32,
  2909. detailUserList.Count,ParameterDirection.Input),
  2910. };
  2911. //执行插入成型线SQL语句
  2912. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  2913. //此处添加明细信息(循环)
  2914. foreach (GroutingLineDetailEntity detailInfo in detailList)
  2915. {
  2916. //查看该成型线明细编号是否存在
  2917. if (GroutingLineDetailCodeIsRepeat(detailInfo.GROUTINGMOULDCODE, user.AccountID) == false)
  2918. {
  2919. oracleTrConn.Rollback();
  2920. oracleTrConn.Disconnect();
  2921. return -2;
  2922. }
  2923. //获取成型线明细索引
  2924. sbSql.Clear();
  2925. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  2926. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2927. sbSql.Clear();
  2928. //插入成型线明细信息
  2929. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  2930. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
  2931. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
  2932. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  2933. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
  2934. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
  2935. sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  2936. OracleParameter[] DetailParas = new OracleParameter[] {
  2937. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  2938. detailId,ParameterDirection.Input),
  2939. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2940. id,ParameterDirection.Input),
  2941. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  2942. detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
  2943. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  2944. detailInfo.MOULDCODE,ParameterDirection.Input),
  2945. new OracleParameter(":GoodsID",OracleDbType.Int32,
  2946. detailInfo.GOODSID,ParameterDirection.Input),
  2947. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  2948. detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
  2949. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  2950. detailInfo.MOULDSTATUS,ParameterDirection.Input),
  2951. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  2952. accountDate,ParameterDirection.Input),
  2953. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2954. detailInfo.REMARKS,ParameterDirection.Input),
  2955. new OracleParameter(":AccountID",OracleDbType.Int32,
  2956. user.AccountID,ParameterDirection.Input),
  2957. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  2958. detailInfo.VALUEFLAG,ParameterDirection.Input),
  2959. new OracleParameter(":CreateTime",OracleDbType.Date,
  2960. DateTime.Now,ParameterDirection.Input),
  2961. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2962. user.UserID,ParameterDirection.Input),
  2963. new OracleParameter(":UpdateTime",OracleDbType.Date,
  2964. DateTime.Now,ParameterDirection.Input),
  2965. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2966. user.UserID,ParameterDirection.Input),
  2967. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  2968. DateTime.Now,ParameterDirection.Input)
  2969. };
  2970. //执行插入语句并累加成功插入次数
  2971. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  2972. }
  2973. // 添加成型工号
  2974. foreach (GroutingLineUserEntity detailInfo in detailUserList)
  2975. {
  2976. //插入成型线明细信息
  2977. sbSql.Clear();
  2978. sbSql.Append("Insert into TP_PC_GroutingUser");
  2979. sbSql.Append("(GroutingLineID,UserID,Remarks)");
  2980. sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
  2981. OracleParameter[] DetailParas = new OracleParameter[] {
  2982. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  2983. id,ParameterDirection.Input),
  2984. new OracleParameter(":UserID",OracleDbType.Int32,
  2985. detailInfo.USERID,ParameterDirection.Input),
  2986. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2987. detailInfo.REMARK,ParameterDirection.Input),
  2988. };
  2989. //执行插入语句并累加成功插入次数
  2990. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  2991. }
  2992. //如果有插入不成功的情况,回滚事务,否则提交
  2993. if (returnRows == 0 || detailReturn == 0)
  2994. {
  2995. oracleTrConn.Rollback();
  2996. oracleTrConn.Disconnect();
  2997. }
  2998. else
  2999. {
  3000. oracleTrConn.Commit();
  3001. oracleTrConn.Disconnect();
  3002. }
  3003. }
  3004. catch (Exception ex)
  3005. {
  3006. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3007. {
  3008. oracleTrConn.Rollback();
  3009. oracleTrConn.Disconnect();
  3010. }
  3011. throw ex;
  3012. }
  3013. finally
  3014. {
  3015. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3016. {
  3017. oracleTrConn.Disconnect();
  3018. }
  3019. }
  3020. return returnRows;
  3021. }
  3022. /// <summary>
  3023. /// 修改成型线信息
  3024. /// </summary>
  3025. /// <param name="groutingLineEntity">成型线实体</param>
  3026. /// <param name="detailList">明细实体集合</param>
  3027. /// <param name="user">用户基本信息</param>
  3028. /// <returns>int返回受影响行数</returns>
  3029. /// <remarks>
  3030. /// 庄天威 2014.09.10 新建
  3031. /// </remarks>
  3032. public static int UpdateGroutingLine_New(GroutingLineEntity groutingLineEntity,
  3033. List<GroutingLineDetailEntity> detailList, List<GroutingLineUserEntity> detailUserList, List<GroutingLineDetailEntity> UpdatedetailList, SUserInfo user)
  3034. {
  3035. int returnRows = 0;
  3036. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3037. try
  3038. {
  3039. oracleTrConn.Connect();
  3040. // 获得账务日期
  3041. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  3042. //修改成型线信息
  3043. StringBuilder sbSql = new StringBuilder();
  3044. sbSql.Append("update TP_PC_GroutingLine");
  3045. sbSql.Append(" set BuildingNo=:BuildingNo,");
  3046. sbSql.Append("FloorNo=:FloorNo,");
  3047. sbSql.Append("GroutingLineNo=:GroutingLineNo,");
  3048. sbSql.Append("GroutingLineCode=:GroutingLineCode,");
  3049. sbSql.Append("GroutingLineName=:GroutingLineName,");
  3050. sbSql.Append("MouldQuantity=:MouldQuantity,");
  3051. sbSql.Append("GMouldTypeID=:GMouldTypeID,");
  3052. sbSql.Append("UserID=:UserID,");
  3053. sbSql.Append("BeginUsedDate=:BeginUsedDate,");
  3054. sbSql.Append("EndUsedDate=:EndUsedDate,");
  3055. sbSql.Append("GMouldStatus=:GMouldStatus,");
  3056. sbSql.Append("Remarks=:Remarks,");
  3057. sbSql.Append("AccountID=:AccountID,");
  3058. //sbSql.Append("ValueFlag=:ValueFlag,");
  3059. sbSql.Append("UpdateTime=:UpdateTime,");
  3060. sbSql.Append("UpdateUserID=:UpdateUserID,");
  3061. sbSql.Append("UserCount=:UserCount");
  3062. sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp");
  3063. if (groutingLineEntity.VALUEFLAG == 0)
  3064. {
  3065. groutingLineEntity.ENDUSEDDATE = DateTime.Now;
  3066. }
  3067. else
  3068. {
  3069. groutingLineEntity.ENDUSEDDATE = null;
  3070. }
  3071. OracleParameter[] Paras = new OracleParameter[] {
  3072. new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
  3073. groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
  3074. new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
  3075. groutingLineEntity.FLOORNO,ParameterDirection.Input),
  3076. new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
  3077. groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
  3078. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  3079. groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
  3080. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  3081. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  3082. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  3083. groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
  3084. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  3085. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  3086. new OracleParameter(":UserID",OracleDbType.Int32,
  3087. groutingLineEntity.USERID,ParameterDirection.Input),
  3088. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  3089. groutingLineEntity.BEGINUSEDDATE,ParameterDirection.Input),
  3090. new OracleParameter(":EndUsedDate",OracleDbType.Date,
  3091. groutingLineEntity.ENDUSEDDATE,ParameterDirection.Input),
  3092. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  3093. groutingLineEntity.MouldStatus,ParameterDirection.Input),
  3094. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3095. groutingLineEntity.REMARKS,ParameterDirection.Input),
  3096. new OracleParameter(":AccountID",OracleDbType.Int32,
  3097. groutingLineEntity.ACCOUNTID,ParameterDirection.Input),
  3098. //new OracleParameter(":ValueFlag",OracleDbType.Int32,
  3099. // groutingLineEntity.VALUEFLAG,ParameterDirection.Input),
  3100. new OracleParameter(":UpdateTime",OracleDbType.Date,
  3101. DateTime.Now,ParameterDirection.Input),
  3102. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3103. user.UserID,ParameterDirection.Input),
  3104. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  3105. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  3106. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3107. groutingLineEntity.OPTIMESTAMP,ParameterDirection.Input),
  3108. new OracleParameter(":UserCount",OracleDbType.Int32,
  3109. detailUserList.Count,ParameterDirection.Input),
  3110. };
  3111. //执行修改语句
  3112. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3113. //时间戳无法匹配
  3114. if (returnRows == 0)
  3115. {
  3116. oracleTrConn.Rollback();
  3117. oracleTrConn.Disconnect();
  3118. return -500;
  3119. }
  3120. int detailReturn = 0;
  3121. //添加修改时新建的模具信息
  3122. foreach (GroutingLineDetailEntity detailInfo in UpdatedetailList)
  3123. {
  3124. sbSql.Clear();
  3125. sbSql.Append("Update TP_PC_GroutingLineDetail set Remarks=:Remarks,UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID");
  3126. OracleParameter[] DetailParas = new OracleParameter[] {
  3127. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3128. detailInfo.GROUTINGLINEDETAILID,ParameterDirection.Input),
  3129. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3130. detailInfo.REMARKS,ParameterDirection.Input),
  3131. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3132. user.UserID,ParameterDirection.Input),
  3133. };
  3134. //执行
  3135. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  3136. }
  3137. //添加修改时新建的模具信息
  3138. foreach (GroutingLineDetailEntity detailInfo in detailList)
  3139. {
  3140. //模具明细编号唯一
  3141. if (GroutingLineDetailCodeIsRepeat(detailInfo.GROUTINGMOULDCODE, user.AccountID) == false)
  3142. {
  3143. oracleTrConn.Rollback();
  3144. oracleTrConn.Disconnect();
  3145. return -2;
  3146. }
  3147. //获取模具明细索引
  3148. sbSql.Clear();
  3149. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  3150. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  3151. sbSql.Clear();
  3152. //插入新增的模具信息
  3153. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  3154. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,MouldCode,GoodsID,GroutingCount,");
  3155. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,ValueFlag,CreateTime,");
  3156. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  3157. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:MouldCode,:GoodsID,:GroutingCount,");
  3158. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,:ValueFlag,:CreateTime,");
  3159. sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  3160. OracleParameter[] DetailParas = new OracleParameter[] {
  3161. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3162. detailId,ParameterDirection.Input),
  3163. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  3164. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  3165. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  3166. detailInfo.GROUTINGMOULDCODE,ParameterDirection.Input),
  3167. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  3168. detailInfo.MOULDCODE,ParameterDirection.Input),
  3169. new OracleParameter(":GoodsID",OracleDbType.Int32,
  3170. detailInfo.GOODSID,ParameterDirection.Input),
  3171. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  3172. detailInfo.GROUTINGCOUNT,ParameterDirection.Input),
  3173. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  3174. detailInfo.MOULDSTATUS,ParameterDirection.Input),
  3175. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  3176. accountDate,ParameterDirection.Input),
  3177. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3178. detailInfo.REMARKS,ParameterDirection.Input),
  3179. new OracleParameter(":AccountID",OracleDbType.Int32,
  3180. user.AccountID,ParameterDirection.Input),
  3181. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  3182. detailInfo.VALUEFLAG,ParameterDirection.Input),
  3183. new OracleParameter(":CreateTime",OracleDbType.Date,
  3184. DateTime.Now,ParameterDirection.Input),
  3185. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  3186. user.UserID,ParameterDirection.Input),
  3187. new OracleParameter(":UpdateTime",OracleDbType.Date,
  3188. DateTime.Now,ParameterDirection.Input),
  3189. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3190. user.UserID,ParameterDirection.Input),
  3191. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3192. DateTime.Now,ParameterDirection.Input)
  3193. };
  3194. //执行
  3195. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  3196. }
  3197. string sqlDelete = "delete from TP_PC_GroutingUser where GroutingLineID=" + groutingLineEntity.GROUTINGLINEID.ToString();
  3198. detailReturn += oracleTrConn.ExecuteNonQuery(sqlDelete);
  3199. // 添加成型工号
  3200. foreach (GroutingLineUserEntity detailInfo in detailUserList)
  3201. {
  3202. sbSql.Clear();
  3203. //插入成型线明细信息
  3204. sbSql.Append("Insert into TP_PC_GroutingUser");
  3205. sbSql.Append("(GroutingLineID,UserID,Remarks)");
  3206. sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
  3207. OracleParameter[] DetailParas = new OracleParameter[] {
  3208. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  3209. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  3210. new OracleParameter(":UserID",OracleDbType.Int32,
  3211. detailInfo.USERID,ParameterDirection.Input),
  3212. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3213. detailInfo.REMARK,ParameterDirection.Input),
  3214. };
  3215. //执行插入语句并累加成功插入次数
  3216. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  3217. }
  3218. //提交事务
  3219. oracleTrConn.Commit();
  3220. oracleTrConn.Disconnect();
  3221. }
  3222. catch (Exception ex)
  3223. {
  3224. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3225. {
  3226. oracleTrConn.Rollback();
  3227. oracleTrConn.Disconnect();
  3228. }
  3229. throw ex;
  3230. }
  3231. finally
  3232. {
  3233. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3234. {
  3235. oracleTrConn.Disconnect();
  3236. }
  3237. }
  3238. return returnRows;
  3239. }
  3240. #endregion
  3241. /// <summary>
  3242. /// 停用成型线明细
  3243. /// </summary>
  3244. /// <param name="dtGroutingLineDetail">明细实体</param>
  3245. /// <param name="user">用户基本信息</param>
  3246. /// <returns>int受影响行数</returns>
  3247. /// <remarks>
  3248. ///
  3249. /// </remarks>
  3250. public static int StopGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  3251. {
  3252. int returnRows = 0;
  3253. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3254. try
  3255. {
  3256. oracleTrConn.Connect();
  3257. OracleParameter[] Paras = null;
  3258. StringBuilder sbSql = new StringBuilder();
  3259. int GMouldRecordID = 0;
  3260. bool isError = false;
  3261. if (dtGroutingLineDetail.Rows.Count > 0)
  3262. {
  3263. // 更新成型线UpdateUserID
  3264. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  3265. Paras = new OracleParameter[] {
  3266. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3267. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  3268. };
  3269. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3270. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3271. if (row == 0)
  3272. {
  3273. oracleTrConn.Rollback();
  3274. oracleTrConn.Disconnect();
  3275. return returnRows = -500;
  3276. }
  3277. }
  3278. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  3279. {
  3280. sbSql.Clear();
  3281. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  3282. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
  3283. sbSql.Clear();
  3284. // 1.插入变更履历
  3285. sbSql.Append("insert into TP_PC_GMouldRecord");
  3286. sbSql.Append("(GMouldRecordID,");
  3287. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  3288. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  3289. sbSql.Append("GMouldRecordType,BeginDate,");
  3290. sbSql.Append("Remarks,AccountID,CreateTime,");
  3291. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  3292. sbSql.Append(")");
  3293. sbSql.Append("select :GMouldRecordID,");
  3294. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  3295. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  3296. sbSql.Append(":GMouldRecordType,trunc(sysdate),");
  3297. sbSql.Append(":Remarks,:AccountID,sysdate,");
  3298. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
  3299. sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
  3300. Paras = new OracleParameter[] {
  3301. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  3302. 0,ParameterDirection.Input),
  3303. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3304. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  3305. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3306. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  3307. new OracleParameter(":AccountID",OracleDbType.Int32,
  3308. user.AccountID,ParameterDirection.Input),
  3309. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  3310. user.UserID,ParameterDirection.Input),
  3311. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3312. user.UserID,ParameterDirection.Input),
  3313. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  3314. GMouldRecordID,ParameterDirection.Input)
  3315. };
  3316. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3317. //2.更新成型线模具状态
  3318. sbSql.Clear();
  3319. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=0,LastGMouldRecordID=:LastGMouldRecordID, ");
  3320. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  3321. Paras = new OracleParameter[] {
  3322. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  3323. GMouldRecordID,ParameterDirection.Input),
  3324. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3325. user.UserID,ParameterDirection.Input),
  3326. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3327. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  3328. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3329. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  3330. };
  3331. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3332. if (row == 0)
  3333. {
  3334. isError = true; //即更新了,也可以用这个判断时间戳
  3335. break;
  3336. }
  3337. returnRows += row;
  3338. }
  3339. //更新明细信息
  3340. if (isError)
  3341. {
  3342. returnRows = -500;
  3343. oracleTrConn.Rollback();
  3344. oracleTrConn.Disconnect();
  3345. }
  3346. else
  3347. {
  3348. oracleTrConn.Commit();
  3349. oracleTrConn.Disconnect();
  3350. }
  3351. }
  3352. catch (Exception ex)
  3353. {
  3354. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3355. {
  3356. oracleTrConn.Rollback();
  3357. oracleTrConn.Disconnect();
  3358. }
  3359. throw ex;
  3360. }
  3361. finally
  3362. {
  3363. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3364. {
  3365. oracleTrConn.Disconnect();
  3366. }
  3367. }
  3368. return returnRows;
  3369. }
  3370. /// <summary>
  3371. /// 启用成型线明细
  3372. /// </summary>
  3373. /// <param name="dtGroutingLineDetail">明细实体</param>
  3374. /// <param name="user">用户基本信息</param>
  3375. /// <returns>int受影响行数</returns>
  3376. /// <remarks>
  3377. ///
  3378. /// </remarks>
  3379. public static int StartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  3380. {
  3381. int returnRows = 0;
  3382. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3383. try
  3384. {
  3385. oracleTrConn.Connect();
  3386. OracleParameter[] Paras = null;
  3387. StringBuilder sbSql = new StringBuilder();
  3388. bool isError = false;
  3389. if (dtGroutingLineDetail.Rows.Count > 0)
  3390. {
  3391. //// 更新成型线UpdateUserID
  3392. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  3393. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3394. // 更新成型线UpdateUserID
  3395. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  3396. Paras = new OracleParameter[] {
  3397. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3398. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  3399. };
  3400. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3401. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3402. if (row == 0)
  3403. {
  3404. oracleTrConn.Rollback();
  3405. oracleTrConn.Disconnect();
  3406. return returnRows = -500;
  3407. }
  3408. }
  3409. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  3410. {
  3411. sbSql.Clear();
  3412. //1查出注浆明细最后变更履历ID,进行更新
  3413. sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  3414. Paras = new OracleParameter[] {
  3415. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3416. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
  3417. };
  3418. DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  3419. int? LastGMouldRecordID = null;
  3420. if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
  3421. {
  3422. LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
  3423. }
  3424. sbSql.Clear();
  3425. sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID where GMouldRecordID=:GMouldRecordID");
  3426. Paras = new OracleParameter[] {
  3427. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3428. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  3429. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3430. user.UserID,ParameterDirection.Input),
  3431. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  3432. LastGMouldRecordID,ParameterDirection.Input)
  3433. };
  3434. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3435. //2.更新成型线模具状态
  3436. sbSql.Clear();
  3437. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=1,EndUsedDate=null,");
  3438. sbSql.Append("UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=0");
  3439. Paras = new OracleParameter[] {
  3440. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3441. user.UserID,ParameterDirection.Input),
  3442. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3443. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  3444. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3445. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  3446. };
  3447. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3448. if (row == 0)
  3449. {
  3450. isError = true; //即更新了,也可以用这个判断时间戳
  3451. break;
  3452. }
  3453. returnRows += row;
  3454. }
  3455. //更新明细信息
  3456. if (isError)
  3457. {
  3458. returnRows = -500;
  3459. oracleTrConn.Rollback();
  3460. oracleTrConn.Disconnect();
  3461. }
  3462. else
  3463. {
  3464. oracleTrConn.Commit();
  3465. oracleTrConn.Disconnect();
  3466. }
  3467. }
  3468. catch (Exception ex)
  3469. {
  3470. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3471. {
  3472. oracleTrConn.Rollback();
  3473. oracleTrConn.Disconnect();
  3474. }
  3475. throw ex;
  3476. }
  3477. finally
  3478. {
  3479. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3480. {
  3481. oracleTrConn.Disconnect();
  3482. }
  3483. }
  3484. return returnRows;
  3485. }
  3486. /// <summary>
  3487. /// 维修开始
  3488. /// </summary>
  3489. /// <param name="dtGroutingLineDetail">明细实体</param>
  3490. /// <param name="user">用户基本信息</param>
  3491. /// <returns>int受影响行数</returns>
  3492. /// <remarks>
  3493. ///
  3494. /// </remarks>
  3495. public static int RepairStartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  3496. {
  3497. int returnRows = 0;
  3498. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3499. try
  3500. {
  3501. oracleTrConn.Connect();
  3502. OracleParameter[] Paras = null;
  3503. StringBuilder sbSql = new StringBuilder();
  3504. int GMouldRecordID = 0;
  3505. bool isError = false;
  3506. if (dtGroutingLineDetail.Rows.Count > 0)
  3507. {
  3508. // 更新成型线UpdateUserID
  3509. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  3510. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3511. // 更新成型线UpdateUserID
  3512. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  3513. Paras = new OracleParameter[] {
  3514. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3515. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  3516. };
  3517. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3518. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3519. if (row == 0)
  3520. {
  3521. oracleTrConn.Rollback();
  3522. oracleTrConn.Disconnect();
  3523. return returnRows = -500;
  3524. }
  3525. }
  3526. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  3527. List<int> mouldIDs = new List<int>();
  3528. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  3529. {
  3530. sbSql.Clear();
  3531. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  3532. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
  3533. sbSql.Clear();
  3534. // 1.插入变更履历
  3535. sbSql.Append("insert into TP_PC_GMouldRecord");
  3536. sbSql.Append("(GMouldRecordID,");
  3537. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  3538. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  3539. sbSql.Append("GMouldRecordType,BeginDate,");
  3540. sbSql.Append("Remarks,AccountID,CreateTime,");
  3541. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  3542. sbSql.Append(")");
  3543. sbSql.Append("select :GMouldRecordID,");
  3544. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  3545. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  3546. sbSql.Append(":GMouldRecordType,trunc(sysdate),");
  3547. sbSql.Append(":Remarks,:AccountID,sysdate,");
  3548. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
  3549. sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
  3550. Paras = new OracleParameter[] {
  3551. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  3552. 1,ParameterDirection.Input),
  3553. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3554. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  3555. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3556. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  3557. new OracleParameter(":AccountID",OracleDbType.Int32,
  3558. user.AccountID,ParameterDirection.Input),
  3559. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  3560. user.UserID,ParameterDirection.Input),
  3561. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3562. user.UserID,ParameterDirection.Input),
  3563. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  3564. GMouldRecordID,ParameterDirection.Input)
  3565. };
  3566. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3567. //2.更新成型线模具状态
  3568. sbSql.Clear();
  3569. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=2,LastGMouldRecordID=:LastGMouldRecordID, ");
  3570. //sbSql.Append("UpdateUserID=:UpdateUserID,BeginUsedDate=trunc(sysdate),EndUsedDate=null where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp");
  3571. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=null where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  3572. Paras = new OracleParameter[] {
  3573. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  3574. GMouldRecordID,ParameterDirection.Input),
  3575. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3576. user.UserID,ParameterDirection.Input),
  3577. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3578. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  3579. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3580. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  3581. };
  3582. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3583. if (row == 0)
  3584. {
  3585. isError = true; //即更新了,也可以用这个判断时间戳
  3586. break;
  3587. }
  3588. returnRows += row;
  3589. // 非条码模具
  3590. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  3591. {
  3592. continue;
  3593. }
  3594. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  3595. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  3596. if (mouldIDs.Contains(mID))
  3597. {
  3598. continue;
  3599. }
  3600. mouldIDs.Add(mID);
  3601. // 添加模具履历
  3602. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  3603. string sqlString =
  3604. "INSERT INTO tp_pc_mouldchangehistory\n" +
  3605. " (CHANGEID\n" +
  3606. " ,MOULDID\n" +
  3607. " ,MOULDCODE\n" +
  3608. " ,MOULDBARCODE\n" +
  3609. " ,GOODSID\n" +
  3610. " ,GOODSCODE\n" +
  3611. " ,OPERATIONTYPE\n" +
  3612. " ,GroutingLineDetailID\n" +
  3613. " ,MOULDSTATUS\n" +
  3614. " ,MOULDSTATUSAFTER\n" +
  3615. " ,GROUTINGNUM\n" +
  3616. " ,REMARKS\n" +
  3617. " ,CHANGEFLAG\n" +
  3618. " ,ACCOUNTID\n" +
  3619. " ,CREATEUSERID)\n" +
  3620. " SELECT :changeID\n" +
  3621. " ,:mouldid\n" +
  3622. " ,:MOULDCODE\n" +
  3623. " ,m.mouldbarcode\n" +
  3624. " ,m.goodsid\n" +
  3625. " ,m.goodscode\n" +
  3626. " ,-3 OPERATIONTYPE\n" +
  3627. " ,m.GroutingLineDetailID\n" +
  3628. " ,m.mouldstatus\n" +
  3629. " ,m.mouldstatus\n" +
  3630. " ,m.groutingnum\n" +
  3631. " ,:REMARKS\n" +
  3632. " ,'0' CHANGEFLAG\n" +
  3633. " ,:ACCOUNTID\n" +
  3634. " ,:USERID\n" +
  3635. " FROM tp_pc_mould m\n" +
  3636. " WHERE m.mouldid = :mouldid";
  3637. OracleParameter[] paras = new OracleParameter[]
  3638. {
  3639. new OracleParameter(":changeID", OracleDbType.Int32,
  3640. mouldHistoryID, ParameterDirection.Input),
  3641. new OracleParameter(":MouldID", OracleDbType.Int32,
  3642. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  3643. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  3644. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  3645. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  3646. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  3647. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  3648. user.AccountID, ParameterDirection.Input),
  3649. new OracleParameter(":USERID", OracleDbType.Int32,
  3650. user.UserID, ParameterDirection.Input),
  3651. };
  3652. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3653. // 修改模具状态
  3654. sqlString = "UPDATE tp_pc_mould m\n" +
  3655. " SET m.RepairFlag = '1'\n" +
  3656. " ,m.updateuserid = :userid\n" +
  3657. " ,m.lastchangehistoryid = :changeid\n" +
  3658. " WHERE m.mouldid = :mouldid";
  3659. paras = new OracleParameter[]
  3660. {
  3661. new OracleParameter(":changeid", OracleDbType.Int32,
  3662. mouldHistoryID, ParameterDirection.Input),
  3663. new OracleParameter(":userid", OracleDbType.Int32,
  3664. user.UserID, ParameterDirection.Input),
  3665. new OracleParameter(":mouldid", OracleDbType.Int32,
  3666. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  3667. };
  3668. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3669. }
  3670. //更新明细信息
  3671. if (isError)
  3672. {
  3673. returnRows = -500;
  3674. oracleTrConn.Rollback();
  3675. oracleTrConn.Disconnect();
  3676. }
  3677. else
  3678. {
  3679. oracleTrConn.Commit();
  3680. oracleTrConn.Disconnect();
  3681. }
  3682. }
  3683. catch (Exception ex)
  3684. {
  3685. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3686. {
  3687. oracleTrConn.Rollback();
  3688. oracleTrConn.Disconnect();
  3689. }
  3690. throw ex;
  3691. }
  3692. finally
  3693. {
  3694. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3695. {
  3696. oracleTrConn.Disconnect();
  3697. }
  3698. }
  3699. return returnRows;
  3700. }
  3701. /// <summary>
  3702. /// 维修结束
  3703. /// </summary>
  3704. /// <param name="dtGroutingLineDetail">明细实体</param>
  3705. /// <param name="user">用户基本信息</param>
  3706. /// <returns>int受影响行数</returns>
  3707. /// <remarks>
  3708. ///
  3709. /// </remarks>
  3710. public static int RepairEndGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  3711. {
  3712. int returnRows = 0;
  3713. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3714. try
  3715. {
  3716. oracleTrConn.Connect();
  3717. OracleParameter[] Paras = null;
  3718. StringBuilder sbSql = new StringBuilder();
  3719. bool isError = false;
  3720. if (dtGroutingLineDetail.Rows.Count > 0)
  3721. {
  3722. // 更新成型线UpdateUserID
  3723. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  3724. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3725. // 更新成型线UpdateUserID
  3726. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  3727. Paras = new OracleParameter[] {
  3728. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3729. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  3730. };
  3731. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3732. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3733. if (row == 0)
  3734. {
  3735. oracleTrConn.Rollback();
  3736. oracleTrConn.Disconnect();
  3737. return returnRows = -500;
  3738. }
  3739. }
  3740. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  3741. List<int> mouldIDs = new List<int>();
  3742. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  3743. {
  3744. sbSql.Clear();
  3745. //1查出注浆明细最后变更履历ID,进行更新
  3746. sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  3747. Paras = new OracleParameter[] {
  3748. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3749. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
  3750. };
  3751. DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  3752. int? LastGMouldRecordID = null;
  3753. if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
  3754. {
  3755. LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
  3756. }
  3757. sbSql.Clear();
  3758. sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID where GMouldRecordID=:GMouldRecordID");
  3759. Paras = new OracleParameter[] {
  3760. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3761. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  3762. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3763. user.UserID,ParameterDirection.Input),
  3764. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  3765. LastGMouldRecordID,ParameterDirection.Input)
  3766. };
  3767. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3768. //2.更新成型线模具状态
  3769. sbSql.Clear();
  3770. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=1,");
  3771. sbSql.Append("UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=2");
  3772. Paras = new OracleParameter[] {
  3773. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3774. user.UserID,ParameterDirection.Input),
  3775. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3776. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  3777. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3778. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  3779. };
  3780. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3781. if (row == 0)
  3782. {
  3783. isError = true; //即更新了,也可以用这个判断时间戳
  3784. break;
  3785. }
  3786. returnRows += row;
  3787. // 非条码模具
  3788. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  3789. {
  3790. continue;
  3791. }
  3792. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  3793. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  3794. if (mouldIDs.Contains(mID))
  3795. {
  3796. continue;
  3797. }
  3798. mouldIDs.Add(mID);
  3799. // 添加模具履历
  3800. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  3801. string sqlString =
  3802. "INSERT INTO tp_pc_mouldchangehistory\n" +
  3803. " (CHANGEID\n" +
  3804. " ,MOULDID\n" +
  3805. " ,MOULDCODE\n" +
  3806. " ,MOULDBARCODE\n" +
  3807. " ,GOODSID\n" +
  3808. " ,GOODSCODE\n" +
  3809. " ,OPERATIONTYPE\n" +
  3810. " ,GroutingLineDetailID\n" +
  3811. " ,MOULDSTATUS\n" +
  3812. " ,MOULDSTATUSAFTER\n" +
  3813. " ,GROUTINGNUM\n" +
  3814. " ,REMARKS\n" +
  3815. " ,CHANGEFLAG\n" +
  3816. " ,ACCOUNTID\n" +
  3817. " ,CREATEUSERID)\n" +
  3818. " SELECT :changeID\n" +
  3819. " ,:mouldid\n" +
  3820. " ,:MOULDCODE\n" +
  3821. " ,m.mouldbarcode\n" +
  3822. " ,m.goodsid\n" +
  3823. " ,m.goodscode\n" +
  3824. " ,-4 OPERATIONTYPE\n" +
  3825. " ,m.GroutingLineDetailID\n" +
  3826. " ,m.mouldstatus\n" +
  3827. " ,m.mouldstatus\n" +
  3828. " ,m.groutingnum\n" +
  3829. " ,:REMARKS\n" +
  3830. " ,'0' CHANGEFLAG\n" +
  3831. " ,:ACCOUNTID\n" +
  3832. " ,:USERID\n" +
  3833. " FROM tp_pc_mould m\n" +
  3834. " WHERE m.mouldid = :mouldid";
  3835. OracleParameter[] paras = new OracleParameter[]
  3836. {
  3837. new OracleParameter(":changeID", OracleDbType.Int32,
  3838. mouldHistoryID, ParameterDirection.Input),
  3839. new OracleParameter(":MouldID", OracleDbType.Int32,
  3840. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  3841. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  3842. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  3843. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  3844. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  3845. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  3846. user.AccountID, ParameterDirection.Input),
  3847. new OracleParameter(":USERID", OracleDbType.Int32,
  3848. user.UserID, ParameterDirection.Input),
  3849. };
  3850. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3851. // 修改模具状态
  3852. sqlString = "UPDATE tp_pc_mould m\n" +
  3853. " SET m.RepairFlag = '0'\n" +
  3854. " ,m.updateuserid = :userid\n" +
  3855. " ,m.lastchangehistoryid = :changeid\n" +
  3856. " WHERE m.mouldid = :mouldid";
  3857. paras = new OracleParameter[]
  3858. {
  3859. new OracleParameter(":changeid", OracleDbType.Int32,
  3860. mouldHistoryID, ParameterDirection.Input),
  3861. new OracleParameter(":userid", OracleDbType.Int32,
  3862. user.UserID, ParameterDirection.Input),
  3863. new OracleParameter(":mouldid", OracleDbType.Int32,
  3864. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  3865. };
  3866. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3867. }
  3868. //更新明细信息
  3869. if (isError)
  3870. {
  3871. returnRows = -500;
  3872. oracleTrConn.Rollback();
  3873. oracleTrConn.Disconnect();
  3874. }
  3875. else
  3876. {
  3877. oracleTrConn.Commit();
  3878. oracleTrConn.Disconnect();
  3879. }
  3880. }
  3881. catch (Exception ex)
  3882. {
  3883. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3884. {
  3885. oracleTrConn.Rollback();
  3886. oracleTrConn.Disconnect();
  3887. }
  3888. throw ex;
  3889. }
  3890. finally
  3891. {
  3892. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3893. {
  3894. oracleTrConn.Disconnect();
  3895. }
  3896. }
  3897. return returnRows;
  3898. }
  3899. /// <summary>
  3900. /// 换模开始
  3901. /// </summary>
  3902. /// <param name="dtGroutingLineDetail">明细实体</param>
  3903. /// <param name="user">用户基本信息</param>
  3904. /// <returns>int受影响行数</returns>
  3905. /// <remarks>
  3906. ///
  3907. /// </remarks>
  3908. public static int ChangeGMouldStartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  3909. {
  3910. int returnRows = 0;
  3911. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3912. try
  3913. {
  3914. oracleTrConn.Connect();
  3915. OracleParameter[] Paras = null;
  3916. StringBuilder sbSql = new StringBuilder();
  3917. int GMouldRecordID = 0;
  3918. bool isError = false;
  3919. if (dtGroutingLineDetail.Rows.Count > 0)
  3920. {
  3921. // 更新成型线UpdateUserID
  3922. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  3923. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3924. // 更新成型线UpdateUserID
  3925. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  3926. Paras = new OracleParameter[] {
  3927. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3928. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  3929. };
  3930. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  3931. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3932. if (row == 0)
  3933. {
  3934. oracleTrConn.Rollback();
  3935. oracleTrConn.Disconnect();
  3936. return returnRows = -500;
  3937. }
  3938. }
  3939. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  3940. List<int> mouldIDs = new List<int>();
  3941. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  3942. {
  3943. sbSql.Clear();
  3944. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  3945. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
  3946. sbSql.Clear();
  3947. // 1.插入变更履历
  3948. sbSql.Append("insert into TP_PC_GMouldRecord");
  3949. sbSql.Append("(GMouldRecordID,");
  3950. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  3951. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  3952. sbSql.Append("GMouldRecordType,BeginDate,");
  3953. sbSql.Append("Remarks,AccountID,CreateTime,");
  3954. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  3955. sbSql.Append(")");
  3956. sbSql.Append("select :GMouldRecordID,");
  3957. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  3958. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  3959. sbSql.Append(":GMouldRecordType,trunc(sysdate),");
  3960. sbSql.Append(":Remarks,:AccountID,sysdate,");
  3961. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
  3962. sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
  3963. Paras = new OracleParameter[] {
  3964. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  3965. 3,ParameterDirection.Input),
  3966. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3967. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  3968. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3969. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  3970. new OracleParameter(":AccountID",OracleDbType.Int32,
  3971. user.AccountID,ParameterDirection.Input),
  3972. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  3973. user.UserID,ParameterDirection.Input),
  3974. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3975. user.UserID,ParameterDirection.Input),
  3976. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  3977. GMouldRecordID,ParameterDirection.Input)
  3978. };
  3979. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3980. //2.更新成型线模具状态
  3981. sbSql.Clear();
  3982. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=3,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, ");
  3983. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  3984. Paras = new OracleParameter[] {
  3985. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  3986. GMouldRecordID,ParameterDirection.Input),
  3987. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3988. user.UserID,ParameterDirection.Input),
  3989. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  3990. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  3991. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  3992. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  3993. };
  3994. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3995. if (row == 0)
  3996. {
  3997. isError = true; //即更新了,也可以用这个判断时间戳
  3998. break;
  3999. }
  4000. returnRows += row;
  4001. // 非条码模具
  4002. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  4003. {
  4004. continue;
  4005. }
  4006. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  4007. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  4008. //object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  4009. //if (mOutputNo != null && mOutputNo != DBNull.Value)
  4010. //{
  4011. // string sql = "UPDATE tp_pc_mouldoutput m\n" +
  4012. // " SET m.GroutingLineDetailID = null\n" +
  4013. // " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  4014. // OracleParameter[] oparas = new OracleParameter[]
  4015. // {
  4016. // new OracleParameter(":OutputNo", OracleDbType.Int32,
  4017. // mOutputNo, ParameterDirection.Input),
  4018. // new OracleParameter(":mouldid", OracleDbType.Int32,
  4019. // mID, ParameterDirection.Input),
  4020. // };
  4021. // row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  4022. //}
  4023. if (mouldIDs.Contains(mID))
  4024. {
  4025. continue;
  4026. }
  4027. mouldIDs.Add(mID);
  4028. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  4029. if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
  4030. {
  4031. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  4032. " SET m.GroutingLineDetailID = null\n" +
  4033. " WHERE m.mouldid = :mouldid\n";
  4034. //" and m.OutputNo=:OutputNo";
  4035. OracleParameter[] oparas = new OracleParameter[]
  4036. {
  4037. //new OracleParameter(":OutputNo", OracleDbType.Int32,
  4038. // mOutputNo, ParameterDirection.Input),
  4039. new OracleParameter(":mouldid", OracleDbType.Int32,
  4040. mID, ParameterDirection.Input),
  4041. };
  4042. row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  4043. }
  4044. // 添加模具履历
  4045. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  4046. string sqlString =
  4047. "INSERT INTO tp_pc_mouldchangehistory\n" +
  4048. " (CHANGEID\n" +
  4049. " ,MOULDID\n" +
  4050. " ,MOULDCODE\n" +
  4051. " ,MOULDBARCODE\n" +
  4052. " ,GOODSID\n" +
  4053. " ,GOODSCODE\n" +
  4054. " ,OPERATIONTYPE\n" +
  4055. " ,GroutingLineDetailID\n" +
  4056. " ,MOULDSTATUS\n" +
  4057. " ,MOULDSTATUSAFTER\n" +
  4058. " ,GROUTINGNUM\n" +
  4059. " ,REMARKS\n" +
  4060. " ,CHANGEFLAG\n" +
  4061. " ,ScrapReason\n" +
  4062. " ,ScrapResponsibility\n" +
  4063. " ,ACCOUNTID\n" +
  4064. " ,CREATEUSERID)\n" +
  4065. " SELECT :changeID\n" +
  4066. " ,:MouldID\n" +
  4067. " ,:MOULDCODE\n" +
  4068. " ,m.mouldbarcode\n" +
  4069. " ,m.goodsid\n" +
  4070. " ,m.goodscode\n" +
  4071. " ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
  4072. " ,m.GroutingLineDetailID\n" +
  4073. " ,m.mouldstatus\n" +
  4074. " ,:mouldstatus\n" +
  4075. " ,m.groutingnum\n" +
  4076. " ,:REMARKS\n" +
  4077. " ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
  4078. " ,:ScrapReason\n" +
  4079. " ,:ScrapResponsibility\n" +
  4080. " ,:ACCOUNTID\n" +
  4081. " ,:USERID\n" +
  4082. " FROM tp_pc_mould m\n" +
  4083. " WHERE m.mouldid = :MouldID";
  4084. OracleParameter[] paras = new OracleParameter[]
  4085. {
  4086. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  4087. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  4088. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  4089. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  4090. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  4091. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  4092. new OracleParameter(":changeID", OracleDbType.Int32,
  4093. mouldHistoryID, ParameterDirection.Input),
  4094. new OracleParameter(":MouldID", OracleDbType.Int32,
  4095. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4096. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  4097. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  4098. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  4099. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  4100. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  4101. user.AccountID, ParameterDirection.Input),
  4102. new OracleParameter(":USERID", OracleDbType.Int32,
  4103. user.UserID, ParameterDirection.Input),
  4104. };
  4105. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4106. // 修改模具状态
  4107. sqlString = "UPDATE tp_pc_mould m\n" +
  4108. " SET m.premouldstatus = m.mouldstatus\n" +
  4109. " ,m.mouldstatus = :mouldstatus\n" +
  4110. " ,m.updateuserid = :userid\n" +
  4111. " ,m.lastchangehistoryid = :changeid\n" +
  4112. " ,m.GroutingLineDetailID = null\n" +
  4113. " ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
  4114. " ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
  4115. " ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
  4116. " ,m.ScrapReason = :ScrapReason\n" +
  4117. " ,m.ScrapResponsibility = :ScrapResponsibility\n" +
  4118. " WHERE m.mouldid = :mouldid";
  4119. paras = new OracleParameter[]
  4120. {
  4121. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  4122. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  4123. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  4124. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  4125. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  4126. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  4127. new OracleParameter(":changeid", OracleDbType.Int32,
  4128. mouldHistoryID, ParameterDirection.Input),
  4129. new OracleParameter(":userid", OracleDbType.Int32,
  4130. user.UserID, ParameterDirection.Input),
  4131. new OracleParameter(":usercode", OracleDbType.NVarchar2,
  4132. user.UserCode, ParameterDirection.Input),
  4133. new OracleParameter(":mouldid", OracleDbType.Int32,
  4134. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4135. };
  4136. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4137. }
  4138. //更新明细信息
  4139. if (isError)
  4140. {
  4141. returnRows = -500;
  4142. oracleTrConn.Rollback();
  4143. oracleTrConn.Disconnect();
  4144. }
  4145. else
  4146. {
  4147. oracleTrConn.Commit();
  4148. oracleTrConn.Disconnect();
  4149. }
  4150. }
  4151. catch (Exception ex)
  4152. {
  4153. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4154. {
  4155. oracleTrConn.Rollback();
  4156. oracleTrConn.Disconnect();
  4157. }
  4158. throw ex;
  4159. }
  4160. finally
  4161. {
  4162. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4163. {
  4164. oracleTrConn.Disconnect();
  4165. }
  4166. }
  4167. return returnRows;
  4168. }
  4169. /// <summary>
  4170. /// 换模结束
  4171. /// </summary>
  4172. /// <param name="dtGroutingLineDetail">明细实体</param>
  4173. /// <param name="user">用户基本信息</param>
  4174. /// <returns>int受影响行数</returns>
  4175. /// <remarks>
  4176. ///
  4177. /// </remarks>
  4178. public static ServiceResultEntity ChangeGMouldEndGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  4179. {
  4180. ServiceResultEntity sre = new ServiceResultEntity();
  4181. int returnRows = 0;
  4182. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4183. try
  4184. {
  4185. oracleTrConn.Connect();
  4186. // 验证模具条码
  4187. DataRow[] moulds = dtGroutingLineDetail.Select("MouldID is not null");
  4188. if (moulds != null && moulds.Length > 0)
  4189. {
  4190. List<string> ids = new List<string>();
  4191. foreach (DataRow item in moulds)
  4192. {
  4193. string id = item["MouldID"].ToString();
  4194. if (!ids.Contains(id))
  4195. {
  4196. ids.Add(id);
  4197. }
  4198. }
  4199. string idswhere = string.Join(",", ids);
  4200. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  4201. oracleTrConn.GetSqlResultToDt(sql);
  4202. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  4203. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  4204. if (dt != null && dt.Rows.Count > 0)
  4205. {
  4206. ids.Clear();
  4207. foreach (DataRow item in dt.Rows)
  4208. {
  4209. ids.Add(item["mouldbarcode"].ToString());
  4210. }
  4211. sre.Status = Constant.ServiceResultStatus.Other;
  4212. sre.OtherStatus = -100;
  4213. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  4214. + string.Join(",", ids);
  4215. return sre;
  4216. }
  4217. }
  4218. OracleParameter[] Paras = null;
  4219. StringBuilder sbSql = new StringBuilder();
  4220. bool isError = false;
  4221. if (dtGroutingLineDetail.Rows.Count > 0)
  4222. {
  4223. // 更新成型线UpdateUserID
  4224. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  4225. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4226. // 更新成型线UpdateUserID
  4227. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  4228. Paras = new OracleParameter[] {
  4229. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4230. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  4231. };
  4232. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4233. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4234. if (row == 0)
  4235. {
  4236. oracleTrConn.Rollback();
  4237. oracleTrConn.Disconnect();
  4238. sre.Status = Constant.ServiceResultStatus.Other;
  4239. sre.OtherStatus = -500;
  4240. return sre;
  4241. }
  4242. }
  4243. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  4244. List<int> mouldIDs = new List<int>();
  4245. int? GroutingLineDetailID = null;
  4246. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  4247. {
  4248. sbSql.Clear();
  4249. sbSql.Append("update TP_PC_GroutingLineDetail set valueflag='0', UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and valueflag = '1' and GMouldStatus=3");
  4250. Paras = new OracleParameter[] {
  4251. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4252. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4253. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4254. user.UserID,ParameterDirection.Input),
  4255. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4256. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  4257. };
  4258. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4259. if (row == 0)
  4260. {
  4261. isError = true; //即更新了,也可以用这个判断时间戳
  4262. break;
  4263. }
  4264. returnRows += row;
  4265. //1查出注浆明细最后变更履历ID,进行更新
  4266. sbSql.Clear();
  4267. sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  4268. Paras = new OracleParameter[] {
  4269. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4270. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
  4271. };
  4272. DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  4273. int? LastGMouldRecordID = null;
  4274. if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
  4275. {
  4276. LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
  4277. }
  4278. // 插入新明细
  4279. sbSql.Clear();
  4280. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  4281. GroutingLineDetailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  4282. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  4283. {
  4284. dtGroutingLineDetail.Rows[i]["MouldSource"] = "0";
  4285. dtGroutingLineDetail.Rows[i]["MouldCode"] = System.Guid.NewGuid().ToString().ToUpper();
  4286. }
  4287. object groutingCount = dtGroutingLineDetail.Rows[i]["GroutingCount"];
  4288. //string guid = System.Guid.NewGuid().ToString().ToUpper();
  4289. sbSql.Clear();
  4290. sbSql.Append("insert into TP_PC_GroutingLineDetail");
  4291. sbSql.Append("(");
  4292. sbSql.Append("GroutingLineDetailID");
  4293. sbSql.Append(",GroutingLineID");
  4294. sbSql.Append(",GroutingMouldCode");
  4295. sbSql.Append(",MouldSource");
  4296. sbSql.Append(",MouldID");
  4297. sbSql.Append(",MouldCode");
  4298. sbSql.Append(",MouldOutputNo");
  4299. sbSql.Append(",GoodsID");
  4300. sbSql.Append(",StandardGroutingCount");
  4301. sbSql.Append(",GroutingCount");
  4302. sbSql.Append(",GMouldStatus");
  4303. sbSql.Append(",BeginUsedDate");
  4304. sbSql.Append(",EndUsedDate");
  4305. sbSql.Append(",LastGMouldRecordID");
  4306. sbSql.Append(",Remarks");
  4307. sbSql.Append(",AccountID");
  4308. sbSql.Append(",ValueFlag");
  4309. sbSql.Append(",CreateUserID");
  4310. sbSql.Append(",UpdateUserID");
  4311. sbSql.Append(") ");
  4312. //sbSql.Append("select");
  4313. sbSql.Append("Values (");
  4314. sbSql.Append(" :GroutingLineDetailIDNew");
  4315. sbSql.Append(",:GroutingLineID");
  4316. sbSql.Append(",:GroutingMouldCode");
  4317. sbSql.Append(",:MouldSource");
  4318. sbSql.Append(",:MouldID");
  4319. sbSql.Append(",:MouldCode");
  4320. sbSql.Append(",:MouldOutputNo");
  4321. sbSql.Append(",:GoodsID");
  4322. sbSql.Append(",:StandardGroutingCount");
  4323. sbSql.Append(",:GroutingCount");
  4324. // 潮州 要求模具操作后(条码模具),状态为停用,生控启用后才能开始注浆
  4325. //sbSql.Append(",1");
  4326. sbSql.Append(",decode(:MouldID,null,1,0)");
  4327. sbSql.Append(",trunc(sysdate)");
  4328. sbSql.Append(",null");
  4329. sbSql.Append(",:LastGMouldRecordID");
  4330. sbSql.Append(",:Remarks");
  4331. sbSql.Append(",:AccountID");
  4332. sbSql.Append(",1");
  4333. sbSql.Append(",:CreateUserID");
  4334. sbSql.Append(",:UpdateUserID");
  4335. sbSql.Append(" )");
  4336. //sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  4337. Paras = new OracleParameter[] {
  4338. new OracleParameter(":GroutingLineDetailIDNew",OracleDbType.Int32,
  4339. GroutingLineDetailID,ParameterDirection.Input),
  4340. //new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4341. // dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4342. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  4343. dtGroutingLineDetail.Rows[i]["GroutingLineID"],ParameterDirection.Input),
  4344. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  4345. dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
  4346. new OracleParameter(":GoodsID",OracleDbType.Int32,
  4347. dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
  4348. new OracleParameter(":AccountID",OracleDbType.Int32,
  4349. user.AccountID,ParameterDirection.Input),
  4350. new OracleParameter(":MouldSource",OracleDbType.Char,
  4351. dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
  4352. new OracleParameter(":MouldID",OracleDbType.Int32,
  4353. dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
  4354. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  4355. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  4356. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  4357. dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
  4358. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  4359. dtGroutingLineDetail.Rows[i]["RreasonRemarks"],ParameterDirection.Input),
  4360. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4361. user.UserID,ParameterDirection.Input),
  4362. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4363. user.UserID,ParameterDirection.Input),
  4364. new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
  4365. dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
  4366. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  4367. ((groutingCount == null || groutingCount == DBNull.Value) ? 0 : groutingCount),ParameterDirection.Input),
  4368. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  4369. //dtGroutingLineDetail.Rows[i]["LastGMouldRecordID"],ParameterDirection.Input),
  4370. LastGMouldRecordID,ParameterDirection.Input),
  4371. };
  4372. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4373. sbSql.Clear();
  4374. sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID,ChangedMouldCode=:ChangedMouldCode, ChangedDetailID=:GroutingLineDetailID where GMouldRecordID=:GMouldRecordID");
  4375. Paras = new OracleParameter[] {
  4376. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  4377. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  4378. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4379. user.UserID,ParameterDirection.Input),
  4380. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  4381. LastGMouldRecordID,ParameterDirection.Input),
  4382. new OracleParameter(":ChangedMouldCode",OracleDbType.Varchar2,
  4383. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  4384. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4385. GroutingLineDetailID,ParameterDirection.Input)
  4386. };
  4387. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4388. // 非条码模具
  4389. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  4390. {
  4391. continue;
  4392. }
  4393. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  4394. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  4395. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  4396. if (mOutputNo != null && mOutputNo != DBNull.Value)
  4397. {
  4398. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  4399. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  4400. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  4401. OracleParameter[] oparas = new OracleParameter[]
  4402. {
  4403. new OracleParameter(":OutputNo", OracleDbType.Int32,
  4404. mOutputNo, ParameterDirection.Input),
  4405. new OracleParameter(":mouldid", OracleDbType.Int32,
  4406. mID, ParameterDirection.Input),
  4407. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  4408. GroutingLineDetailID, ParameterDirection.Input),
  4409. };
  4410. returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
  4411. }
  4412. if (mouldIDs.Contains(mID))
  4413. {
  4414. continue;
  4415. }
  4416. mouldIDs.Add(mID);
  4417. // 添加模具履历
  4418. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  4419. string sqlString =
  4420. "INSERT INTO tp_pc_mouldchangehistory\n" +
  4421. " (CHANGEID\n" +
  4422. " ,MOULDID\n" +
  4423. " ,MOULDCODE\n" +
  4424. " ,MOULDBARCODE\n" +
  4425. " ,GOODSID\n" +
  4426. " ,GOODSCODE\n" +
  4427. " ,OPERATIONTYPE\n" +
  4428. " ,GroutingLineDetailID\n" +
  4429. " ,MOULDSTATUS\n" +
  4430. " ,MOULDSTATUSAFTER\n" +
  4431. " ,GROUTINGNUM\n" +
  4432. " ,REMARKS\n" +
  4433. " ,CHANGEFLAG\n" +
  4434. " ,ACCOUNTID\n" +
  4435. " ,CREATEUSERID)\n" +
  4436. " SELECT :changeID\n" +
  4437. " ,:mouldid\n" +
  4438. " ,:MOULDCODE\n" +
  4439. " ,m.mouldbarcode\n" +
  4440. " ,m.goodsid\n" +
  4441. " ,m.goodscode\n" +
  4442. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  4443. " ,:GroutingLineDetailID\n" +
  4444. " ,m.mouldstatus\n" +
  4445. " ,2\n" +
  4446. " ,m.groutingnum\n" +
  4447. " ,:REMARKS\n" +
  4448. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  4449. " ,:ACCOUNTID\n" +
  4450. " ,:USERID\n" +
  4451. " FROM tp_pc_mould m\n" +
  4452. " WHERE m.mouldid = :mouldid";
  4453. OracleParameter[] paras = new OracleParameter[]
  4454. {
  4455. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  4456. GroutingLineDetailID, ParameterDirection.Input),
  4457. new OracleParameter(":changeID", OracleDbType.Int32,
  4458. mouldHistoryID, ParameterDirection.Input),
  4459. new OracleParameter(":MouldID", OracleDbType.Int32,
  4460. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4461. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  4462. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  4463. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  4464. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  4465. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  4466. user.AccountID, ParameterDirection.Input),
  4467. new OracleParameter(":USERID", OracleDbType.Int32,
  4468. user.UserID, ParameterDirection.Input),
  4469. };
  4470. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4471. // 修改模具状态
  4472. sqlString = "UPDATE tp_pc_mould m\n" +
  4473. " SET m.premouldstatus = m.mouldstatus\n" +
  4474. " ,m.mouldstatus = :mouldstatus\n" +
  4475. " ,m.updateuserid = :userid\n" +
  4476. " ,m.lastchangehistoryid = :changeid\n" +
  4477. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  4478. " WHERE m.mouldid = :mouldid";
  4479. paras = new OracleParameter[]
  4480. {
  4481. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  4482. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  4483. new OracleParameter(":changeid", OracleDbType.Int32,
  4484. mouldHistoryID, ParameterDirection.Input),
  4485. new OracleParameter(":userid", OracleDbType.Int32,
  4486. user.UserID, ParameterDirection.Input),
  4487. new OracleParameter(":mouldid", OracleDbType.Int32,
  4488. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4489. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  4490. GroutingLineDetailID, ParameterDirection.Input),
  4491. };
  4492. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4493. }
  4494. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  4495. string sqlUpdate ="update TP_PC_GROUTINGLINE l " +
  4496. " set l.beginuseddate =" +
  4497. " (select min(ld.beginuseddate)" +
  4498. " from TP_PC_GROUTINGLINEDETAIL ld" +
  4499. " where ld.groutinglineid = l.groutinglineid" +
  4500. " and ld.valueflag = '1')" +
  4501. " where l.groutinglineid = " + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
  4502. oracleTrConn.ExecuteNonQuery(sqlUpdate, null);
  4503. //更新明细信息
  4504. if (isError)
  4505. {
  4506. sre.Status = Constant.ServiceResultStatus.Other;
  4507. sre.OtherStatus = -500;
  4508. oracleTrConn.Rollback();
  4509. oracleTrConn.Disconnect();
  4510. }
  4511. else
  4512. {
  4513. oracleTrConn.Commit();
  4514. oracleTrConn.Disconnect();
  4515. }
  4516. }
  4517. catch (Exception ex)
  4518. {
  4519. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4520. {
  4521. oracleTrConn.Rollback();
  4522. oracleTrConn.Disconnect();
  4523. }
  4524. throw ex;
  4525. }
  4526. finally
  4527. {
  4528. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4529. {
  4530. oracleTrConn.Disconnect();
  4531. }
  4532. }
  4533. return sre;
  4534. }
  4535. /// <summary>
  4536. /// 变产开始
  4537. /// </summary>
  4538. /// <param name="dtGroutingLineDetail">明细实体</param>
  4539. /// <param name="user">用户基本信息</param>
  4540. /// <returns>int受影响行数</returns>
  4541. /// <remarks>
  4542. ///
  4543. /// </remarks>
  4544. public static int UpdateLineStartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  4545. {
  4546. int returnRows = 0;
  4547. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4548. try
  4549. {
  4550. oracleTrConn.Connect();
  4551. OracleParameter[] Paras = null;
  4552. StringBuilder sbSql = new StringBuilder();
  4553. int GMouldRecordID = 0;
  4554. bool isError = false;
  4555. if (dtGroutingLineDetail.Rows.Count > 0)
  4556. {
  4557. // 更新成型线UpdateUserID
  4558. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  4559. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4560. // 更新成型线UpdateUserID
  4561. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  4562. Paras = new OracleParameter[] {
  4563. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4564. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  4565. };
  4566. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4567. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4568. if (row == 0)
  4569. {
  4570. oracleTrConn.Rollback();
  4571. oracleTrConn.Disconnect();
  4572. return returnRows = -500;
  4573. }
  4574. }
  4575. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  4576. List<int> mouldIDs = new List<int>();
  4577. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  4578. {
  4579. sbSql.Clear();
  4580. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  4581. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
  4582. sbSql.Clear();
  4583. // 1.插入变更履历
  4584. sbSql.Append("insert into TP_PC_GMouldRecord");
  4585. sbSql.Append("(GMouldRecordID,");
  4586. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  4587. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  4588. sbSql.Append("GMouldRecordType,BeginDate,");
  4589. sbSql.Append("Remarks,AccountID,CreateTime,");
  4590. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  4591. sbSql.Append(")");
  4592. sbSql.Append("select :GMouldRecordID,");
  4593. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  4594. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  4595. sbSql.Append(":GMouldRecordType,trunc(sysdate),");
  4596. sbSql.Append(":Remarks,:AccountID,sysdate,");
  4597. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
  4598. sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
  4599. Paras = new OracleParameter[] {
  4600. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  4601. 5,ParameterDirection.Input),
  4602. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4603. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4604. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  4605. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  4606. new OracleParameter(":AccountID",OracleDbType.Int32,
  4607. user.AccountID,ParameterDirection.Input),
  4608. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4609. user.UserID,ParameterDirection.Input),
  4610. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4611. user.UserID,ParameterDirection.Input),
  4612. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  4613. GMouldRecordID,ParameterDirection.Input)
  4614. };
  4615. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4616. //2.更新成型线模具状态
  4617. sbSql.Clear();
  4618. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=4,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, ");
  4619. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  4620. Paras = new OracleParameter[] {
  4621. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  4622. GMouldRecordID,ParameterDirection.Input),
  4623. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4624. user.UserID,ParameterDirection.Input),
  4625. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4626. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4627. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4628. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  4629. };
  4630. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4631. if (row == 0)
  4632. {
  4633. isError = true; //即更新了,也可以用这个判断时间戳
  4634. break;
  4635. }
  4636. returnRows += row;
  4637. // 非条码模具
  4638. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  4639. {
  4640. continue;
  4641. }
  4642. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  4643. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  4644. //object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  4645. //if (mOutputNo != null && mOutputNo != DBNull.Value)
  4646. //{
  4647. // string sql = "UPDATE tp_pc_mouldoutput m\n" +
  4648. // " SET m.GroutingLineDetailID = null\n" +
  4649. // " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  4650. // OracleParameter[] oparas = new OracleParameter[]
  4651. // {
  4652. // new OracleParameter(":OutputNo", OracleDbType.Int32,
  4653. // mOutputNo, ParameterDirection.Input),
  4654. // new OracleParameter(":mouldid", OracleDbType.Int32,
  4655. // mID, ParameterDirection.Input),
  4656. // };
  4657. // row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  4658. //}
  4659. if (mouldIDs.Contains(mID))
  4660. {
  4661. continue;
  4662. }
  4663. mouldIDs.Add(mID);
  4664. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  4665. if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
  4666. {
  4667. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  4668. " SET m.GroutingLineDetailID = null\n" +
  4669. " WHERE m.mouldid = :mouldid\n";
  4670. //" and m.OutputNo=:OutputNo";
  4671. OracleParameter[] oparas = new OracleParameter[]
  4672. {
  4673. //new OracleParameter(":OutputNo", OracleDbType.Int32,
  4674. // mOutputNo, ParameterDirection.Input),
  4675. new OracleParameter(":mouldid", OracleDbType.Int32,
  4676. mID, ParameterDirection.Input),
  4677. };
  4678. row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  4679. }
  4680. // 添加模具履历
  4681. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  4682. string sqlString =
  4683. "INSERT INTO tp_pc_mouldchangehistory\n" +
  4684. " (CHANGEID\n" +
  4685. " ,MOULDID\n" +
  4686. " ,MOULDCODE\n" +
  4687. " ,MOULDBARCODE\n" +
  4688. " ,GOODSID\n" +
  4689. " ,GOODSCODE\n" +
  4690. " ,OPERATIONTYPE\n" +
  4691. " ,GroutingLineDetailID\n" +
  4692. " ,MOULDSTATUS\n" +
  4693. " ,MOULDSTATUSAFTER\n" +
  4694. " ,GROUTINGNUM\n" +
  4695. " ,REMARKS\n" +
  4696. " ,CHANGEFLAG\n" +
  4697. " ,ScrapReason\n" +
  4698. " ,ScrapResponsibility\n" +
  4699. " ,ACCOUNTID\n" +
  4700. " ,CREATEUSERID)\n" +
  4701. " SELECT :changeID\n" +
  4702. " ,:MouldID\n" +
  4703. " ,:MOULDCODE\n" +
  4704. " ,m.mouldbarcode\n" +
  4705. " ,m.goodsid\n" +
  4706. " ,m.goodscode\n" +
  4707. " ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
  4708. " ,m.GroutingLineDetailID\n" +
  4709. " ,m.mouldstatus\n" +
  4710. " ,:mouldstatus\n" +
  4711. " ,m.groutingnum\n" +
  4712. " ,:REMARKS\n" +
  4713. " ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
  4714. " ,:ScrapReason\n" +
  4715. " ,:ScrapResponsibility\n" +
  4716. " ,:ACCOUNTID\n" +
  4717. " ,:USERID\n" +
  4718. " FROM tp_pc_mould m\n" +
  4719. " WHERE m.mouldid = :MouldID";
  4720. OracleParameter[] paras = new OracleParameter[]
  4721. {
  4722. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  4723. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  4724. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  4725. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  4726. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  4727. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  4728. new OracleParameter(":changeID", OracleDbType.Int32,
  4729. mouldHistoryID, ParameterDirection.Input),
  4730. new OracleParameter(":MouldID", OracleDbType.Int32,
  4731. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4732. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  4733. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  4734. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  4735. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  4736. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  4737. user.AccountID, ParameterDirection.Input),
  4738. new OracleParameter(":USERID", OracleDbType.Int32,
  4739. user.UserID, ParameterDirection.Input),
  4740. };
  4741. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4742. // 修改模具状态
  4743. sqlString = "UPDATE tp_pc_mould m\n" +
  4744. " SET m.premouldstatus = m.mouldstatus\n" +
  4745. " ,m.mouldstatus = :mouldstatus\n" +
  4746. " ,m.updateuserid = :userid\n" +
  4747. " ,m.lastchangehistoryid = :changeid\n" +
  4748. " ,m.GroutingLineDetailID = null\n" +
  4749. " ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
  4750. " ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
  4751. " ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
  4752. " ,m.ScrapReason = :ScrapReason\n" +
  4753. " ,m.ScrapResponsibility = :ScrapResponsibility\n" +
  4754. " WHERE m.mouldid = :mouldid";
  4755. paras = new OracleParameter[]
  4756. {
  4757. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  4758. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  4759. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  4760. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  4761. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  4762. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  4763. new OracleParameter(":changeid", OracleDbType.Int32,
  4764. mouldHistoryID, ParameterDirection.Input),
  4765. new OracleParameter(":userid", OracleDbType.Int32,
  4766. user.UserID, ParameterDirection.Input),
  4767. new OracleParameter(":usercode", OracleDbType.NVarchar2,
  4768. user.UserCode, ParameterDirection.Input),
  4769. new OracleParameter(":mouldid", OracleDbType.Int32,
  4770. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4771. };
  4772. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4773. }
  4774. //更新明细信息
  4775. if (isError)
  4776. {
  4777. returnRows = -500;
  4778. oracleTrConn.Rollback();
  4779. oracleTrConn.Disconnect();
  4780. }
  4781. else
  4782. {
  4783. oracleTrConn.Commit();
  4784. oracleTrConn.Disconnect();
  4785. }
  4786. }
  4787. catch (Exception ex)
  4788. {
  4789. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4790. {
  4791. oracleTrConn.Rollback();
  4792. oracleTrConn.Disconnect();
  4793. }
  4794. throw ex;
  4795. }
  4796. finally
  4797. {
  4798. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4799. {
  4800. oracleTrConn.Disconnect();
  4801. }
  4802. }
  4803. return returnRows;
  4804. }
  4805. /// <summary>
  4806. /// 变产结束
  4807. /// </summary>
  4808. /// <param name="dtGroutingLineDetail">明细实体</param>
  4809. /// <param name="goodsID">变产产品ID</param>
  4810. /// <param name="user">用户基本信息</param>
  4811. /// <returns>int受影响行数</returns>
  4812. /// <remarks>
  4813. ///
  4814. /// </remarks>
  4815. public static ServiceResultEntity UpdateLineEndGroutingLineDetail(DataTable dtGroutingLineDetail, int goodsID, SUserInfo user)
  4816. {
  4817. ServiceResultEntity sre = new ServiceResultEntity();
  4818. int returnRows = 0;
  4819. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4820. try
  4821. {
  4822. oracleTrConn.Connect();
  4823. // 验证模具条码
  4824. DataRow[] moulds = dtGroutingLineDetail.Select("MouldID is not null");
  4825. if (moulds != null && moulds.Length > 0)
  4826. {
  4827. List<string> ids = new List<string>();
  4828. foreach (DataRow item in moulds)
  4829. {
  4830. string id = item["MouldID"].ToString();
  4831. if (!ids.Contains(id))
  4832. {
  4833. ids.Add(id);
  4834. }
  4835. }
  4836. string idswhere = string.Join(",", ids);
  4837. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  4838. oracleTrConn.GetSqlResultToDt(sql);
  4839. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  4840. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  4841. if (dt != null && dt.Rows.Count > 0)
  4842. {
  4843. ids.Clear();
  4844. foreach (DataRow item in dt.Rows)
  4845. {
  4846. ids.Add(item["mouldbarcode"].ToString());
  4847. }
  4848. sre.Status = Constant.ServiceResultStatus.Other;
  4849. sre.OtherStatus = -100;
  4850. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  4851. + string.Join(",", ids);
  4852. return sre;
  4853. }
  4854. }
  4855. OracleParameter[] Paras = null;
  4856. StringBuilder sbSql = new StringBuilder();
  4857. bool isError = false;
  4858. if (dtGroutingLineDetail.Rows.Count > 0)
  4859. {
  4860. // 更新成型线UpdateUserID
  4861. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  4862. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4863. // 更新成型线UpdateUserID
  4864. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  4865. Paras = new OracleParameter[] {
  4866. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4867. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  4868. };
  4869. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4870. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4871. if (row == 0)
  4872. {
  4873. oracleTrConn.Rollback();
  4874. oracleTrConn.Disconnect();
  4875. sre.Status = Constant.ServiceResultStatus.Other;
  4876. sre.OtherStatus = -500;
  4877. return sre;
  4878. }
  4879. }
  4880. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  4881. List<int> mouldIDs = new List<int>();
  4882. int? GroutingLineDetailID = null;
  4883. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  4884. {
  4885. sbSql.Clear();
  4886. sbSql.Append("update TP_PC_GroutingLineDetail set valueflag='0', UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and valueflag='1' and GMouldStatus=4");
  4887. Paras = new OracleParameter[] {
  4888. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4889. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4890. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4891. user.UserID,ParameterDirection.Input),
  4892. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4893. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  4894. };
  4895. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4896. if (row == 0)
  4897. {
  4898. isError = true; //即更新了,也可以用这个判断时间戳
  4899. break;
  4900. }
  4901. returnRows += row;
  4902. //1查出注浆明细最后变更履历ID,进行更新
  4903. sbSql.Clear();
  4904. sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  4905. Paras = new OracleParameter[] {
  4906. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4907. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
  4908. };
  4909. DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  4910. int? LastGMouldRecordID = null;
  4911. if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
  4912. {
  4913. LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
  4914. }
  4915. // 插入新明细
  4916. sbSql.Clear();
  4917. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  4918. GroutingLineDetailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  4919. if (dtGroutingLineDetail.Rows[i]["MouldCode"] + "" == "")
  4920. {
  4921. dtGroutingLineDetail.Rows[i]["MouldCode"] = System.Guid.NewGuid().ToString().ToUpper();
  4922. }
  4923. //string guid = System.Guid.NewGuid().ToString().ToUpper();
  4924. sbSql.Clear();
  4925. sbSql.Append("insert into TP_PC_GroutingLineDetail");
  4926. sbSql.Append("(");
  4927. sbSql.Append("GroutingLineDetailID");
  4928. sbSql.Append(",GroutingLineID");
  4929. sbSql.Append(",GroutingMouldCode");
  4930. sbSql.Append(",MouldSource");
  4931. sbSql.Append(",MouldID");
  4932. sbSql.Append(",MouldCode");
  4933. sbSql.Append(",MouldOutputNo");
  4934. sbSql.Append(",GoodsID");
  4935. sbSql.Append(",StandardGroutingCount");
  4936. sbSql.Append(",GroutingCount");
  4937. sbSql.Append(",GMouldStatus");
  4938. sbSql.Append(",BeginUsedDate");
  4939. sbSql.Append(",EndUsedDate");
  4940. sbSql.Append(",LastGMouldRecordID");
  4941. sbSql.Append(",Remarks");
  4942. sbSql.Append(",AccountID");
  4943. sbSql.Append(",ValueFlag");
  4944. sbSql.Append(",CreateUserID");
  4945. sbSql.Append(",UpdateUserID");
  4946. sbSql.Append(") ");
  4947. //sbSql.Append("select");
  4948. sbSql.Append("Values (");
  4949. sbSql.Append(" :GroutingLineDetailIDNew");
  4950. sbSql.Append(",:GroutingLineID");
  4951. sbSql.Append(",:GroutingMouldCode");
  4952. sbSql.Append(",:MouldSource");
  4953. sbSql.Append(",:MouldID");
  4954. sbSql.Append(",:MouldCode");
  4955. sbSql.Append(",:MouldOutputNo");
  4956. sbSql.Append(",:GoodsID");
  4957. sbSql.Append(",:StandardGroutingCount");
  4958. sbSql.Append(",:GroutingCount");
  4959. // 潮州 要求模具操作后(条码模具),状态为停用,生控启用后才能开始注浆
  4960. //sbSql.Append(",1");
  4961. sbSql.Append(",decode(:MouldID,null,1,0)");
  4962. sbSql.Append(",trunc(sysdate)");
  4963. sbSql.Append(",null");
  4964. sbSql.Append(",:LastGMouldRecordID");
  4965. sbSql.Append(",:Remarks");
  4966. sbSql.Append(",:AccountID");
  4967. sbSql.Append(",1");
  4968. sbSql.Append(",:CreateUserID");
  4969. sbSql.Append(",:UpdateUserID");
  4970. sbSql.Append(" )");
  4971. //sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  4972. Paras = new OracleParameter[] {
  4973. new OracleParameter(":GroutingLineDetailIDNew",OracleDbType.Int32,
  4974. GroutingLineDetailID,ParameterDirection.Input),
  4975. //new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4976. // dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4977. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  4978. dtGroutingLineDetail.Rows[i]["GroutingLineID"],ParameterDirection.Input),
  4979. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  4980. dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
  4981. //new OracleParameter(":GoodsID",OracleDbType.Int32,
  4982. // goodsID,ParameterDirection.Input),
  4983. new OracleParameter(":GoodsID",OracleDbType.Int32,
  4984. dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
  4985. new OracleParameter(":AccountID",OracleDbType.Int32,
  4986. user.AccountID,ParameterDirection.Input),
  4987. new OracleParameter(":MouldSource",OracleDbType.Char,
  4988. dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
  4989. new OracleParameter(":MouldID",OracleDbType.Int32,
  4990. dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
  4991. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  4992. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  4993. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  4994. dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
  4995. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  4996. dtGroutingLineDetail.Rows[i]["RREASONRemarks"],ParameterDirection.Input),
  4997. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4998. user.UserID,ParameterDirection.Input),
  4999. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5000. user.UserID,ParameterDirection.Input),
  5001. new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
  5002. dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
  5003. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  5004. dtGroutingLineDetail.Rows[i]["GroutingCount"],ParameterDirection.Input),
  5005. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  5006. //dtGroutingLineDetail.Rows[i]["LastGMouldRecordID"],ParameterDirection.Input),
  5007. LastGMouldRecordID,ParameterDirection.Input),
  5008. };
  5009. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5010. sbSql.Clear();
  5011. sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID,ChangedMouldCode=:ChangedMouldCode,ChangedGoodsID=:GoodsID,ChangedDetailID=:GroutingLineDetailID where GMouldRecordID=:GMouldRecordID");
  5012. Paras = new OracleParameter[] {
  5013. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  5014. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  5015. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5016. user.UserID,ParameterDirection.Input),
  5017. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  5018. LastGMouldRecordID,ParameterDirection.Input),
  5019. new OracleParameter(":ChangedMouldCode",OracleDbType.Varchar2,
  5020. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  5021. new OracleParameter(":GoodsID",OracleDbType.Int32,
  5022. dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
  5023. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5024. GroutingLineDetailID,ParameterDirection.Input),
  5025. };
  5026. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5027. // 非条码模具
  5028. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  5029. {
  5030. continue;
  5031. }
  5032. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  5033. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  5034. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5035. if (mOutputNo != null && mOutputNo != DBNull.Value)
  5036. {
  5037. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5038. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  5039. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  5040. OracleParameter[] oparas = new OracleParameter[]
  5041. {
  5042. new OracleParameter(":OutputNo", OracleDbType.Int32,
  5043. mOutputNo, ParameterDirection.Input),
  5044. new OracleParameter(":mouldid", OracleDbType.Int32,
  5045. mID, ParameterDirection.Input),
  5046. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5047. GroutingLineDetailID, ParameterDirection.Input),
  5048. };
  5049. returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5050. }
  5051. if (mouldIDs.Contains(mID))
  5052. {
  5053. continue;
  5054. }
  5055. mouldIDs.Add(mID);
  5056. // 添加模具履历
  5057. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  5058. string sqlString =
  5059. "INSERT INTO tp_pc_mouldchangehistory\n" +
  5060. " (CHANGEID\n" +
  5061. " ,MOULDID\n" +
  5062. " ,MOULDCODE\n" +
  5063. " ,MOULDBARCODE\n" +
  5064. " ,GOODSID\n" +
  5065. " ,GOODSCODE\n" +
  5066. " ,OPERATIONTYPE\n" +
  5067. " ,GroutingLineDetailID\n" +
  5068. " ,MOULDSTATUS\n" +
  5069. " ,MOULDSTATUSAFTER\n" +
  5070. " ,GROUTINGNUM\n" +
  5071. " ,REMARKS\n" +
  5072. " ,CHANGEFLAG\n" +
  5073. " ,ACCOUNTID\n" +
  5074. " ,CREATEUSERID)\n" +
  5075. " SELECT :changeID\n" +
  5076. " ,:mouldid\n" +
  5077. " ,:MOULDCODE\n" +
  5078. " ,m.mouldbarcode\n" +
  5079. " ,m.goodsid\n" +
  5080. " ,m.goodscode\n" +
  5081. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  5082. " ,:GroutingLineDetailID\n" +
  5083. " ,m.mouldstatus\n" +
  5084. " ,2\n" +
  5085. " ,m.groutingnum\n" +
  5086. " ,:REMARKS\n" +
  5087. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  5088. " ,:ACCOUNTID\n" +
  5089. " ,:USERID\n" +
  5090. " FROM tp_pc_mould m\n" +
  5091. " WHERE m.mouldid = :mouldid";
  5092. OracleParameter[] paras = new OracleParameter[]
  5093. {
  5094. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5095. GroutingLineDetailID, ParameterDirection.Input),
  5096. new OracleParameter(":changeID", OracleDbType.Int32,
  5097. mouldHistoryID, ParameterDirection.Input),
  5098. new OracleParameter(":MouldID", OracleDbType.Int32,
  5099. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5100. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  5101. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  5102. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  5103. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  5104. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  5105. user.AccountID, ParameterDirection.Input),
  5106. new OracleParameter(":USERID", OracleDbType.Int32,
  5107. user.UserID, ParameterDirection.Input),
  5108. };
  5109. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5110. // 修改模具状态
  5111. sqlString = "UPDATE tp_pc_mould m\n" +
  5112. " SET m.premouldstatus = m.mouldstatus\n" +
  5113. " ,m.mouldstatus = :mouldstatus\n" +
  5114. " ,m.updateuserid = :userid\n" +
  5115. " ,m.lastchangehistoryid = :changeid\n" +
  5116. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  5117. " WHERE m.mouldid = :mouldid";
  5118. paras = new OracleParameter[]
  5119. {
  5120. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5121. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  5122. new OracleParameter(":changeid", OracleDbType.Int32,
  5123. mouldHistoryID, ParameterDirection.Input),
  5124. new OracleParameter(":userid", OracleDbType.Int32,
  5125. user.UserID, ParameterDirection.Input),
  5126. new OracleParameter(":mouldid", OracleDbType.Int32,
  5127. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5128. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5129. GroutingLineDetailID, ParameterDirection.Input),
  5130. };
  5131. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5132. }
  5133. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  5134. string sqlUpdate = "update TP_PC_GROUTINGLINE l " +
  5135. " set l.beginuseddate =" +
  5136. " (select min(ld.beginuseddate)" +
  5137. " from TP_PC_GROUTINGLINEDETAIL ld" +
  5138. " where ld.groutinglineid = l.groutinglineid" +
  5139. " and ld.valueflag = '1')" +
  5140. " where l.groutinglineid = " + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
  5141. oracleTrConn.ExecuteNonQuery(sqlUpdate, null);
  5142. //更新明细信息
  5143. if (isError)
  5144. {
  5145. sre.Status = Constant.ServiceResultStatus.Other;
  5146. sre.OtherStatus = -500;
  5147. oracleTrConn.Rollback();
  5148. oracleTrConn.Disconnect();
  5149. }
  5150. else
  5151. {
  5152. oracleTrConn.Commit();
  5153. oracleTrConn.Disconnect();
  5154. }
  5155. }
  5156. catch (Exception ex)
  5157. {
  5158. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5159. {
  5160. oracleTrConn.Rollback();
  5161. oracleTrConn.Disconnect();
  5162. }
  5163. throw ex;
  5164. }
  5165. finally
  5166. {
  5167. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5168. {
  5169. oracleTrConn.Disconnect();
  5170. }
  5171. }
  5172. return sre;
  5173. }
  5174. /// <summary>
  5175. /// 整线变产开始
  5176. /// </summary>
  5177. /// <param name="dtGroutingLineDetail">明细实体</param>
  5178. /// <param name="user">用户基本信息</param>
  5179. /// <returns>int受影响行数</returns>
  5180. /// <remarks>
  5181. ///
  5182. /// </remarks>
  5183. public static int UpdateAllLineStartGroutingLineDetail(DataTable dtGroutingLineDetail,
  5184. int groutingLineID, DateTime lineOPTimeStamp, SUserInfo user)
  5185. {
  5186. int returnRows = 0;
  5187. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5188. try
  5189. {
  5190. oracleTrConn.Connect();
  5191. OracleParameter[] Paras = null;
  5192. StringBuilder sbSql = new StringBuilder();
  5193. int GMouldRecordID = 0;
  5194. bool isError = false;
  5195. // 更新成型线UpdateUserID
  5196. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + ",GMouldStatus=4 where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  5197. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  5198. // 更新成型线UpdateUserID
  5199. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + ",GMouldStatus=4,ENDUSEDDATE=trunc(sysdate) where GroutingLineID=" + groutingLineID + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  5200. Paras = new OracleParameter[] {
  5201. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5202. lineOPTimeStamp,ParameterDirection.Input)
  5203. };
  5204. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  5205. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5206. if (row == 0)
  5207. {
  5208. oracleTrConn.Rollback();
  5209. oracleTrConn.Disconnect();
  5210. return returnRows = -500;
  5211. }
  5212. sbSql.Clear();
  5213. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  5214. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
  5215. sbSql.Clear();
  5216. // 1.插入变更履历
  5217. sbSql.Append("insert into TP_PC_GMouldRecord");
  5218. sbSql.Append("(GMouldRecordID,");
  5219. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  5220. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  5221. sbSql.Append("GMouldRecordType,BeginDate,");
  5222. sbSql.Append("Remarks,AccountID,CreateTime,");
  5223. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  5224. sbSql.Append(")");
  5225. sbSql.Append(" values (:GMouldRecordID,");
  5226. sbSql.Append(":GroutingLineID,null,null,");
  5227. sbSql.Append("null,null,null,");
  5228. sbSql.Append(":GMouldRecordType,trunc(sysdate),");
  5229. sbSql.Append(":Remarks,:AccountID,sysdate,");
  5230. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID)");
  5231. // sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineID=:GroutingLineID ");
  5232. Paras = new OracleParameter[] {
  5233. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  5234. 6,ParameterDirection.Input),
  5235. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  5236. groutingLineID,ParameterDirection.Input),
  5237. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  5238. (dtGroutingLineDetail.Rows.Count > 0 ? dtGroutingLineDetail.Rows[0]["RecordRemarks"].ToString() : "[整线变产]")
  5239. ,ParameterDirection.Input),//0没有写i,是因为整体变产,只在第一行添加了操作备注
  5240. new OracleParameter(":AccountID",OracleDbType.Int32,
  5241. user.AccountID,ParameterDirection.Input),
  5242. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  5243. user.UserID,ParameterDirection.Input),
  5244. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5245. user.UserID,ParameterDirection.Input),
  5246. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  5247. GMouldRecordID,ParameterDirection.Input)
  5248. };
  5249. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5250. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  5251. List<int> mouldIDs = new List<int>();
  5252. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  5253. {
  5254. //2.更新成型线模具状态
  5255. sbSql.Clear();
  5256. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=4,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, ");
  5257. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus in (0,1)");
  5258. Paras = new OracleParameter[] {
  5259. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  5260. GMouldRecordID,ParameterDirection.Input),
  5261. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5262. user.UserID,ParameterDirection.Input),
  5263. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5264. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  5265. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5266. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  5267. };
  5268. row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5269. if (row == 0)
  5270. {
  5271. isError = true; //即更新了,也可以用这个判断时间戳
  5272. break;
  5273. }
  5274. returnRows += row;
  5275. // 非条码模具
  5276. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  5277. {
  5278. continue;
  5279. }
  5280. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  5281. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  5282. //object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5283. //if (mOutputNo != null && mOutputNo != DBNull.Value)
  5284. //{
  5285. // string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5286. // " SET m.GroutingLineDetailID = null\n" +
  5287. // " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  5288. // OracleParameter[] oparas = new OracleParameter[]
  5289. // {
  5290. // new OracleParameter(":OutputNo", OracleDbType.Int32,
  5291. // mOutputNo, ParameterDirection.Input),
  5292. // new OracleParameter(":mouldid", OracleDbType.Int32,
  5293. // mID, ParameterDirection.Input),
  5294. // };
  5295. // row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5296. //}
  5297. if (mouldIDs.Contains(mID))
  5298. {
  5299. continue;
  5300. }
  5301. mouldIDs.Add(mID);
  5302. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5303. if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
  5304. {
  5305. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5306. " SET m.GroutingLineDetailID = null\n" +
  5307. " WHERE m.mouldid = :mouldid\n";
  5308. //" and m.OutputNo=:OutputNo";
  5309. OracleParameter[] oparas = new OracleParameter[]
  5310. {
  5311. //new OracleParameter(":OutputNo", OracleDbType.Int32,
  5312. // mOutputNo, ParameterDirection.Input),
  5313. new OracleParameter(":mouldid", OracleDbType.Int32,
  5314. mID, ParameterDirection.Input),
  5315. };
  5316. row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5317. }
  5318. // 添加模具履历
  5319. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  5320. string sqlString =
  5321. "INSERT INTO tp_pc_mouldchangehistory\n" +
  5322. " (CHANGEID\n" +
  5323. " ,MOULDID\n" +
  5324. " ,MOULDCODE\n" +
  5325. " ,MOULDBARCODE\n" +
  5326. " ,GOODSID\n" +
  5327. " ,GOODSCODE\n" +
  5328. " ,OPERATIONTYPE\n" +
  5329. " ,GroutingLineDetailID\n" +
  5330. " ,MOULDSTATUS\n" +
  5331. " ,MOULDSTATUSAFTER\n" +
  5332. " ,GROUTINGNUM\n" +
  5333. " ,REMARKS\n" +
  5334. " ,CHANGEFLAG\n" +
  5335. " ,ScrapReason\n" +
  5336. " ,ScrapResponsibility\n" +
  5337. " ,ACCOUNTID\n" +
  5338. " ,CREATEUSERID)\n" +
  5339. " SELECT :changeID\n" +
  5340. " ,:MouldID\n" +
  5341. " ,:MOULDCODE\n" +
  5342. " ,m.mouldbarcode\n" +
  5343. " ,m.goodsid\n" +
  5344. " ,m.goodscode\n" +
  5345. " ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
  5346. " ,m.GroutingLineDetailID\n" +
  5347. " ,m.mouldstatus\n" +
  5348. " ,:mouldstatus\n" +
  5349. " ,m.groutingnum\n" +
  5350. " ,:REMARKS\n" +
  5351. " ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
  5352. " ,:ScrapReason\n" +
  5353. " ,:ScrapResponsibility\n" +
  5354. " ,:ACCOUNTID\n" +
  5355. " ,:USERID\n" +
  5356. " FROM tp_pc_mould m\n" +
  5357. " WHERE m.mouldid = :MouldID";
  5358. OracleParameter[] paras = new OracleParameter[]
  5359. {
  5360. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5361. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  5362. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  5363. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  5364. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  5365. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  5366. new OracleParameter(":changeID", OracleDbType.Int32,
  5367. mouldHistoryID, ParameterDirection.Input),
  5368. new OracleParameter(":MouldID", OracleDbType.Int32,
  5369. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5370. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  5371. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  5372. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  5373. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  5374. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  5375. user.AccountID, ParameterDirection.Input),
  5376. new OracleParameter(":USERID", OracleDbType.Int32,
  5377. user.UserID, ParameterDirection.Input),
  5378. };
  5379. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5380. // 修改模具状态
  5381. sqlString = "UPDATE tp_pc_mould m\n" +
  5382. " SET m.premouldstatus = m.mouldstatus\n" +
  5383. " ,m.mouldstatus = :mouldstatus\n" +
  5384. " ,m.updateuserid = :userid\n" +
  5385. " ,m.lastchangehistoryid = :changeid\n" +
  5386. " ,m.GroutingLineDetailID = null\n" +
  5387. " ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
  5388. " ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
  5389. " ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
  5390. " ,m.ScrapReason = :ScrapReason\n" +
  5391. " ,m.ScrapResponsibility = :ScrapResponsibility\n" +
  5392. " WHERE m.mouldid = :mouldid";
  5393. paras = new OracleParameter[]
  5394. {
  5395. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5396. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  5397. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  5398. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  5399. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  5400. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  5401. new OracleParameter(":changeid", OracleDbType.Int32,
  5402. mouldHistoryID, ParameterDirection.Input),
  5403. new OracleParameter(":userid", OracleDbType.Int32,
  5404. user.UserID, ParameterDirection.Input),
  5405. new OracleParameter(":usercode", OracleDbType.NVarchar2,
  5406. user.UserCode, ParameterDirection.Input),
  5407. new OracleParameter(":mouldid", OracleDbType.Int32,
  5408. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5409. };
  5410. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5411. }
  5412. //更新明细信息
  5413. if (isError)
  5414. {
  5415. returnRows = -500;
  5416. oracleTrConn.Rollback();
  5417. oracleTrConn.Disconnect();
  5418. }
  5419. else
  5420. {
  5421. oracleTrConn.Commit();
  5422. oracleTrConn.Disconnect();
  5423. }
  5424. }
  5425. catch (Exception ex)
  5426. {
  5427. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5428. {
  5429. oracleTrConn.Rollback();
  5430. oracleTrConn.Disconnect();
  5431. }
  5432. throw ex;
  5433. }
  5434. return returnRows;
  5435. }
  5436. /// <summary>
  5437. /// 整线变产结束
  5438. /// </summary>
  5439. /// <param name="dtGroutingLineDetail">明细实体</param>
  5440. /// <param name="goodsID">变产产品ID</param>
  5441. /// <param name="user">用户基本信息</param>
  5442. /// <returns>int受影响行数</returns>
  5443. /// <remarks>
  5444. ///
  5445. /// </remarks>
  5446. public static ServiceResultEntity UpdateAllLineEndGroutingLineDetail(DataTable dtGroutingLineDetail,
  5447. DataTable oldDetail, int groutingLineID, DateTime lineOPTimeStamp, SUserInfo user)
  5448. {
  5449. ServiceResultEntity sre = new ServiceResultEntity();
  5450. int returnRows = 0;
  5451. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5452. try
  5453. {
  5454. oracleTrConn.Connect();
  5455. int MouldQuantity = 0;
  5456. if (dtGroutingLineDetail != null)
  5457. {
  5458. MouldQuantity = dtGroutingLineDetail.Rows.Count;
  5459. // 验证模具条码
  5460. DataRow[] moulds = dtGroutingLineDetail.Select("MouldID is not null");
  5461. if (moulds != null && moulds.Length > 0)
  5462. {
  5463. List<string> ids = new List<string>();
  5464. foreach (DataRow item in moulds)
  5465. {
  5466. string id = item["MouldID"].ToString();
  5467. if (!ids.Contains(id))
  5468. {
  5469. ids.Add(id);
  5470. }
  5471. }
  5472. string idswhere = string.Join(",", ids);
  5473. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  5474. oracleTrConn.GetSqlResultToDt(sql);
  5475. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  5476. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  5477. if (dt != null && dt.Rows.Count > 0)
  5478. {
  5479. ids.Clear();
  5480. foreach (DataRow item in dt.Rows)
  5481. {
  5482. ids.Add(item["mouldbarcode"].ToString());
  5483. }
  5484. sre.Status = Constant.ServiceResultStatus.Other;
  5485. sre.OtherStatus = -100;
  5486. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  5487. + string.Join(",", ids);
  5488. return sre;
  5489. }
  5490. }
  5491. }
  5492. OracleParameter[] Paras = null;
  5493. StringBuilder sbSql = new StringBuilder();
  5494. bool isError = false;
  5495. //DataRow[] drMouldQuantity = dtGroutingLineDetail.Select("NewFlag=1");
  5496. //if(drMouldQuantity.Length>0)
  5497. //{
  5498. // MouldQuantity = drMouldQuantity.Length;
  5499. //}
  5500. // 更新成型线UpdateUserID
  5501. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + ",GMouldStatus=1,ENDUSEDDATE=null, MouldQuantity= " + MouldQuantity + " where GroutingLineID=" + groutingLineID + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=4");
  5502. Paras = new OracleParameter[] {
  5503. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5504. lineOPTimeStamp,ParameterDirection.Input)
  5505. };
  5506. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5507. if (row == 0)
  5508. {
  5509. oracleTrConn.Rollback();
  5510. oracleTrConn.Disconnect();
  5511. sre.Status = Constant.ServiceResultStatus.Other;
  5512. sre.OtherStatus = -500;
  5513. return sre;
  5514. }
  5515. //for (int i = 0; i < oldDetail.Rows.Count; i++)
  5516. //{
  5517. // sbSql.Clear();
  5518. // sbSql.Append("update TP_PC_GroutingLineDetail set valueflag=0, UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID");
  5519. // Paras = new OracleParameter[] {
  5520. // new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5521. // oldDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  5522. // new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5523. // user.UserID,ParameterDirection.Input)
  5524. // };
  5525. // returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5526. //}
  5527. sbSql.Clear();
  5528. sbSql.Append("update TP_PC_GroutingLineDetail set valueflag='0', UpdateUserID=:UpdateUserID where GroutingLineID=:GroutingLineID and valueflag='1' and GMouldStatus=4");
  5529. Paras = new OracleParameter[] {
  5530. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  5531. groutingLineID,ParameterDirection.Input),
  5532. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5533. user.UserID,ParameterDirection.Input)
  5534. };
  5535. row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5536. // 无模具明细,结束变产
  5537. //if (row == 0)
  5538. //{
  5539. // oracleTrConn.Rollback();
  5540. // oracleTrConn.Disconnect();
  5541. // sre.Status = Constant.ServiceResultStatus.Other;
  5542. // sre.OtherStatus = -500;
  5543. // return sre;
  5544. //}
  5545. //1查出注浆明细最后变更履历ID,进行更新
  5546. sbSql.Clear();
  5547. sbSql.Append("select nvl(max(GMouldRecordID),0) as LastGMouldRecordID from TP_PC_GMouldRecord where GroutingLineID=:GroutingLineID and GroutingLineDetailID is null");
  5548. Paras = new OracleParameter[] {
  5549. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  5550. groutingLineID,ParameterDirection.Input)
  5551. };
  5552. DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  5553. int? LastGMouldRecordID = null;
  5554. if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
  5555. {
  5556. LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
  5557. }
  5558. sbSql.Clear();
  5559. sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID where GMouldRecordID=:GMouldRecordID");
  5560. Paras = new OracleParameter[] {
  5561. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  5562. //"[结束整线变产]"
  5563. ((dtGroutingLineDetail != null && dtGroutingLineDetail.Rows.Count > 0) ? dtGroutingLineDetail.Rows[0]["RecordRemarks"].ToString() : "[结束整线变产]")
  5564. ,ParameterDirection.Input),
  5565. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5566. user.UserID,ParameterDirection.Input),
  5567. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  5568. LastGMouldRecordID,ParameterDirection.Input),
  5569. };
  5570. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5571. int? GroutingLineDetailID = null;
  5572. if (dtGroutingLineDetail != null)
  5573. {
  5574. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  5575. List<int> mouldIDs = new List<int>();
  5576. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  5577. {
  5578. // 插入新明细
  5579. sbSql.Clear();
  5580. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  5581. GroutingLineDetailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  5582. if (dtGroutingLineDetail.Rows[i]["MouldCode"] + "" == "")
  5583. {
  5584. dtGroutingLineDetail.Rows[i]["MouldCode"] = System.Guid.NewGuid().ToString().ToUpper();
  5585. }
  5586. //string guid = System.Guid.NewGuid().ToString().ToUpper();
  5587. sbSql.Clear();
  5588. sbSql.Append("insert into TP_PC_GroutingLineDetail");
  5589. sbSql.Append("(");
  5590. sbSql.Append("GroutingLineDetailID");
  5591. sbSql.Append(",GroutingLineID");
  5592. sbSql.Append(",GroutingMouldCode");
  5593. sbSql.Append(",MouldSource");
  5594. sbSql.Append(",MouldID");
  5595. sbSql.Append(",MouldCode");
  5596. sbSql.Append(",MouldOutputNo");
  5597. sbSql.Append(",GoodsID");
  5598. sbSql.Append(",StandardGroutingCount");
  5599. sbSql.Append(",GroutingCount");
  5600. sbSql.Append(",GMouldStatus");
  5601. sbSql.Append(",BeginUsedDate");
  5602. sbSql.Append(",EndUsedDate");
  5603. sbSql.Append(",LastGMouldRecordID");
  5604. sbSql.Append(",Remarks");
  5605. sbSql.Append(",AccountID");
  5606. sbSql.Append(",ValueFlag");
  5607. sbSql.Append(",CreateUserID");
  5608. sbSql.Append(",UpdateUserID");
  5609. sbSql.Append(") ");
  5610. sbSql.Append("values(");
  5611. sbSql.Append(" :GroutingLineDetailID");
  5612. sbSql.Append(",:GroutingLineID");
  5613. sbSql.Append(",:GroutingMouldCode");
  5614. sbSql.Append(",:MouldSource");
  5615. sbSql.Append(",:MouldID");
  5616. sbSql.Append(",:MouldCode");
  5617. sbSql.Append(",:MouldOutputNo");
  5618. sbSql.Append(",:GoodsID");
  5619. sbSql.Append(",:StandardGroutingCount");
  5620. sbSql.Append(",:GroutingCount");
  5621. // 潮州 要求模具操作后(条码模具),状态为停用,生控启用后才能开始注浆
  5622. //sbSql.Append(",1");
  5623. sbSql.Append(",decode(:MouldID,null,1,0)");
  5624. sbSql.Append(",trunc(sysdate)");
  5625. sbSql.Append(",null");
  5626. sbSql.Append(",:LastGMouldRecordID");
  5627. sbSql.Append(",:Remarks");
  5628. sbSql.Append(",:AccountID");
  5629. sbSql.Append(",1");
  5630. sbSql.Append(",:CreateUserID");
  5631. sbSql.Append(",:UpdateUserID");
  5632. sbSql.Append(" )");
  5633. Paras = new OracleParameter[] {
  5634. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5635. GroutingLineDetailID,ParameterDirection.Input),
  5636. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  5637. groutingLineID,ParameterDirection.Input),
  5638. new OracleParameter(":GroutingMouldCode",OracleDbType.Varchar2,
  5639. dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
  5640. new OracleParameter(":MouldSource",OracleDbType.Char,
  5641. dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
  5642. new OracleParameter(":MouldID",OracleDbType.Int32,
  5643. dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
  5644. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  5645. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  5646. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  5647. dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
  5648. new OracleParameter(":GoodsID",OracleDbType.Int32,
  5649. dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
  5650. new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
  5651. dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
  5652. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  5653. dtGroutingLineDetail.Rows[i]["GroutingCount"],ParameterDirection.Input),
  5654. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  5655. dtGroutingLineDetail.Rows[i]["Remarks"],ParameterDirection.Input),
  5656. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  5657. user.UserID,ParameterDirection.Input),
  5658. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5659. user.UserID,ParameterDirection.Input),
  5660. new OracleParameter(":AccountID",OracleDbType.Int32,
  5661. user.AccountID,ParameterDirection.Input),
  5662. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  5663. LastGMouldRecordID,ParameterDirection.Input),
  5664. };
  5665. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5666. // 非条码模具
  5667. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  5668. {
  5669. continue;
  5670. }
  5671. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  5672. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  5673. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5674. if (mOutputNo != null && mOutputNo != DBNull.Value)
  5675. {
  5676. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5677. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  5678. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  5679. OracleParameter[] oparas = new OracleParameter[]
  5680. {
  5681. new OracleParameter(":OutputNo", OracleDbType.Int32,
  5682. mOutputNo, ParameterDirection.Input),
  5683. new OracleParameter(":mouldid", OracleDbType.Int32,
  5684. mID, ParameterDirection.Input),
  5685. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5686. GroutingLineDetailID, ParameterDirection.Input),
  5687. };
  5688. returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5689. }
  5690. if (mouldIDs.Contains(mID))
  5691. {
  5692. continue;
  5693. }
  5694. mouldIDs.Add(mID);
  5695. // 添加模具履历
  5696. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  5697. string sqlString =
  5698. "INSERT INTO tp_pc_mouldchangehistory\n" +
  5699. " (CHANGEID\n" +
  5700. " ,MOULDID\n" +
  5701. " ,MOULDCODE\n" +
  5702. " ,MOULDBARCODE\n" +
  5703. " ,GOODSID\n" +
  5704. " ,GOODSCODE\n" +
  5705. " ,OPERATIONTYPE\n" +
  5706. " ,GroutingLineDetailID\n" +
  5707. " ,MOULDSTATUS\n" +
  5708. " ,MOULDSTATUSAFTER\n" +
  5709. " ,GROUTINGNUM\n" +
  5710. " ,REMARKS\n" +
  5711. " ,CHANGEFLAG\n" +
  5712. " ,ACCOUNTID\n" +
  5713. " ,CREATEUSERID)\n" +
  5714. " SELECT :changeID\n" +
  5715. " ,:mouldid\n" +
  5716. " ,:MOULDCODE\n" +
  5717. " ,m.mouldbarcode\n" +
  5718. " ,m.goodsid\n" +
  5719. " ,m.goodscode\n" +
  5720. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  5721. " ,:GroutingLineDetailID\n" +
  5722. " ,m.mouldstatus\n" +
  5723. " ,2\n" +
  5724. " ,m.groutingnum\n" +
  5725. " ,:REMARKS\n" +
  5726. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  5727. " ,:ACCOUNTID\n" +
  5728. " ,:USERID\n" +
  5729. " FROM tp_pc_mould m\n" +
  5730. " WHERE m.mouldid = :mouldid";
  5731. OracleParameter[] paras = new OracleParameter[]
  5732. {
  5733. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5734. GroutingLineDetailID, ParameterDirection.Input),
  5735. new OracleParameter(":changeID", OracleDbType.Int32,
  5736. mouldHistoryID, ParameterDirection.Input),
  5737. new OracleParameter(":MouldID", OracleDbType.Int32,
  5738. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5739. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  5740. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  5741. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  5742. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  5743. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  5744. user.AccountID, ParameterDirection.Input),
  5745. new OracleParameter(":USERID", OracleDbType.Int32,
  5746. user.UserID, ParameterDirection.Input),
  5747. };
  5748. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5749. // 修改模具状态
  5750. sqlString = "UPDATE tp_pc_mould m\n" +
  5751. " SET m.premouldstatus = m.mouldstatus\n" +
  5752. " ,m.mouldstatus = :mouldstatus\n" +
  5753. " ,m.updateuserid = :userid\n" +
  5754. " ,m.lastchangehistoryid = :changeid\n" +
  5755. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  5756. " WHERE m.mouldid = :mouldid";
  5757. paras = new OracleParameter[]
  5758. {
  5759. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5760. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  5761. new OracleParameter(":changeid", OracleDbType.Int32,
  5762. mouldHistoryID, ParameterDirection.Input),
  5763. new OracleParameter(":userid", OracleDbType.Int32,
  5764. user.UserID, ParameterDirection.Input),
  5765. new OracleParameter(":mouldid", OracleDbType.Int32,
  5766. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5767. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5768. GroutingLineDetailID, ParameterDirection.Input),
  5769. };
  5770. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5771. }
  5772. }
  5773. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  5774. string sqlupdate = "update TP_PC_GROUTINGLINE l " +
  5775. " set l.beginuseddate =" +
  5776. " nvl((select min(ld.beginuseddate)" +
  5777. " from TP_PC_GROUTINGLINEDETAIL ld" +
  5778. " where ld.groutinglineid = l.groutinglineid" +
  5779. " and ld.valueflag = '1'), l.beginuseddate)" +
  5780. " where l.groutinglineid = " + groutingLineID;
  5781. oracleTrConn.ExecuteNonQuery(sqlupdate, null);
  5782. //更新明细信息
  5783. if (isError)
  5784. {
  5785. sre.Status = Constant.ServiceResultStatus.Other;
  5786. sre.OtherStatus = -500;
  5787. oracleTrConn.Rollback();
  5788. oracleTrConn.Disconnect();
  5789. }
  5790. else
  5791. {
  5792. oracleTrConn.Commit();
  5793. oracleTrConn.Disconnect();
  5794. }
  5795. }
  5796. catch (Exception ex)
  5797. {
  5798. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5799. {
  5800. oracleTrConn.Rollback();
  5801. oracleTrConn.Disconnect();
  5802. }
  5803. throw ex;
  5804. }
  5805. finally
  5806. {
  5807. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5808. {
  5809. oracleTrConn.Disconnect();
  5810. }
  5811. }
  5812. return sre;
  5813. }
  5814. /// <summary>
  5815. /// 卸模
  5816. /// </summary>
  5817. /// <param name="dtGroutingLineDetail">明细实体</param>
  5818. /// <param name="user">用户基本信息</param>
  5819. /// <returns>int受影响行数</returns>
  5820. /// <remarks>
  5821. ///
  5822. /// </remarks>
  5823. public static int UnloadGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  5824. {
  5825. int returnRows = 0;
  5826. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5827. try
  5828. {
  5829. oracleTrConn.Connect();
  5830. OracleParameter[] Paras = null;
  5831. StringBuilder sbSql = new StringBuilder();
  5832. int GMouldRecordID = 0;
  5833. bool isError = false;
  5834. if (dtGroutingLineDetail.Rows.Count > 0)
  5835. {
  5836. // 更新成型线UpdateUserID
  5837. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  5838. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  5839. // 更新成型线UpdateUserID
  5840. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  5841. Paras = new OracleParameter[] {
  5842. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5843. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  5844. };
  5845. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  5846. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5847. if (row == 0)
  5848. {
  5849. oracleTrConn.Rollback();
  5850. oracleTrConn.Disconnect();
  5851. return returnRows = -500;
  5852. }
  5853. }
  5854. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  5855. List<int> mouldIDs = new List<int>();
  5856. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  5857. {
  5858. sbSql.Clear();
  5859. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  5860. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  5861. sbSql.Clear();
  5862. // 1.插入变更履历
  5863. sbSql.Append("insert into TP_PC_GMouldRecord");
  5864. sbSql.Append("(GMouldRecordID,");
  5865. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  5866. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  5867. sbSql.Append("GMouldRecordType,BeginDate,EndDate,");
  5868. sbSql.Append("Remarks,AccountID,CreateTime,");
  5869. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  5870. sbSql.Append(")");
  5871. sbSql.Append("select :GMouldRecordID,");
  5872. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  5873. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  5874. sbSql.Append(":GMouldRecordType,trunc(sysdate),trunc(sysdate),");
  5875. sbSql.Append(":Remarks,:AccountID,sysdate,");
  5876. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
  5877. sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
  5878. Paras = new OracleParameter[] {
  5879. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  5880. 7,ParameterDirection.Input),
  5881. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5882. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  5883. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  5884. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  5885. new OracleParameter(":AccountID",OracleDbType.Int32,
  5886. user.AccountID,ParameterDirection.Input),
  5887. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  5888. user.UserID,ParameterDirection.Input),
  5889. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5890. user.UserID,ParameterDirection.Input),
  5891. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  5892. GMouldRecordID,ParameterDirection.Input)
  5893. };
  5894. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5895. //2.更新成型线模具状态
  5896. sbSql.Clear();
  5897. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=6,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, Valueflag = '0', ");
  5898. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  5899. Paras = new OracleParameter[] {
  5900. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  5901. GMouldRecordID,ParameterDirection.Input),
  5902. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5903. user.UserID,ParameterDirection.Input),
  5904. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5905. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  5906. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5907. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  5908. };
  5909. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5910. if (row == 0)
  5911. {
  5912. isError = true; //即更新了,也可以用这个判断时间戳
  5913. break;
  5914. }
  5915. returnRows += row;
  5916. // 非条码模具
  5917. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  5918. {
  5919. continue;
  5920. }
  5921. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  5922. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  5923. //object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5924. //if (mOutputNo != null && mOutputNo != DBNull.Value)
  5925. //{
  5926. // string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5927. // " SET m.GroutingLineDetailID = null\n" +
  5928. // " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  5929. // OracleParameter[] oparas = new OracleParameter[]
  5930. // {
  5931. // new OracleParameter(":OutputNo", OracleDbType.Int32,
  5932. // mOutputNo, ParameterDirection.Input),
  5933. // new OracleParameter(":mouldid", OracleDbType.Int32,
  5934. // mID, ParameterDirection.Input),
  5935. // };
  5936. // row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5937. //}
  5938. if (mouldIDs.Contains(mID))
  5939. {
  5940. continue;
  5941. }
  5942. mouldIDs.Add(mID);
  5943. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5944. if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
  5945. {
  5946. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5947. " SET m.GroutingLineDetailID = null\n" +
  5948. " WHERE m.mouldid = :mouldid\n";
  5949. //" and m.OutputNo=:OutputNo";
  5950. OracleParameter[] oparas = new OracleParameter[]
  5951. {
  5952. //new OracleParameter(":OutputNo", OracleDbType.Int32,
  5953. // mOutputNo, ParameterDirection.Input),
  5954. new OracleParameter(":mouldid", OracleDbType.Int32,
  5955. mID, ParameterDirection.Input),
  5956. };
  5957. row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5958. }
  5959. // 添加模具履历
  5960. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  5961. string sqlString =
  5962. "INSERT INTO tp_pc_mouldchangehistory\n" +
  5963. " (CHANGEID\n" +
  5964. " ,MOULDID\n" +
  5965. " ,MOULDCODE\n" +
  5966. " ,MOULDBARCODE\n" +
  5967. " ,GOODSID\n" +
  5968. " ,GOODSCODE\n" +
  5969. " ,OPERATIONTYPE\n" +
  5970. " ,GroutingLineDetailID\n" +
  5971. " ,MOULDSTATUS\n" +
  5972. " ,MOULDSTATUSAFTER\n" +
  5973. " ,GROUTINGNUM\n" +
  5974. " ,REMARKS\n" +
  5975. " ,CHANGEFLAG\n" +
  5976. " ,ScrapReason\n" +
  5977. " ,ScrapResponsibility\n" +
  5978. " ,ACCOUNTID\n" +
  5979. " ,CREATEUSERID)\n" +
  5980. " SELECT :changeID\n" +
  5981. " ,:MouldID\n" +
  5982. " ,:MOULDCODE\n" +
  5983. " ,m.mouldbarcode\n" +
  5984. " ,m.goodsid\n" +
  5985. " ,m.goodscode\n" +
  5986. " ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
  5987. " ,m.GroutingLineDetailID\n" +
  5988. " ,m.mouldstatus\n" +
  5989. " ,:mouldstatus\n" +
  5990. " ,m.groutingnum\n" +
  5991. " ,:REMARKS\n" +
  5992. " ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
  5993. " ,:ScrapReason\n" +
  5994. " ,:ScrapResponsibility\n" +
  5995. " ,:ACCOUNTID\n" +
  5996. " ,:USERID\n" +
  5997. " FROM tp_pc_mould m\n" +
  5998. " WHERE m.mouldid = :MouldID";
  5999. OracleParameter[] paras = new OracleParameter[]
  6000. {
  6001. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  6002. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  6003. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  6004. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  6005. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  6006. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  6007. new OracleParameter(":changeID", OracleDbType.Int32,
  6008. mouldHistoryID, ParameterDirection.Input),
  6009. new OracleParameter(":MouldID", OracleDbType.Int32,
  6010. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  6011. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  6012. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  6013. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  6014. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  6015. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  6016. user.AccountID, ParameterDirection.Input),
  6017. new OracleParameter(":USERID", OracleDbType.Int32,
  6018. user.UserID, ParameterDirection.Input),
  6019. };
  6020. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6021. // 修改模具状态
  6022. sqlString = "UPDATE tp_pc_mould m\n" +
  6023. " SET m.premouldstatus = m.mouldstatus\n" +
  6024. " ,m.mouldstatus = :mouldstatus\n" +
  6025. " ,m.updateuserid = :userid\n" +
  6026. " ,m.lastchangehistoryid = :changeid\n" +
  6027. " ,m.GroutingLineDetailID = null\n" +
  6028. " ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
  6029. " ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
  6030. " ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
  6031. " ,m.ScrapReason = :ScrapReason\n" +
  6032. " ,m.ScrapResponsibility = :ScrapResponsibility\n" +
  6033. " WHERE m.mouldid = :mouldid";
  6034. paras = new OracleParameter[]
  6035. {
  6036. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  6037. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  6038. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  6039. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  6040. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  6041. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  6042. new OracleParameter(":changeid", OracleDbType.Int32,
  6043. mouldHistoryID, ParameterDirection.Input),
  6044. new OracleParameter(":userid", OracleDbType.Int32,
  6045. user.UserID, ParameterDirection.Input),
  6046. new OracleParameter(":usercode", OracleDbType.NVarchar2,
  6047. user.UserCode, ParameterDirection.Input),
  6048. new OracleParameter(":mouldid", OracleDbType.Int32,
  6049. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  6050. };
  6051. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6052. }
  6053. //更新明细信息
  6054. if (isError)
  6055. {
  6056. returnRows = -500;
  6057. oracleTrConn.Rollback();
  6058. oracleTrConn.Disconnect();
  6059. }
  6060. else
  6061. {
  6062. // 更新成型线模具个数
  6063. string sqlupdate = "update TP_PC_GroutingLine set MouldQuantity = MouldQuantity - "
  6064. + dtGroutingLineDetail.Rows.Count
  6065. + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
  6066. returnRows = oracleTrConn.ExecuteNonQuery(sqlupdate);
  6067. oracleTrConn.Commit();
  6068. oracleTrConn.Disconnect();
  6069. }
  6070. }
  6071. catch (Exception ex)
  6072. {
  6073. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6074. {
  6075. oracleTrConn.Rollback();
  6076. oracleTrConn.Disconnect();
  6077. }
  6078. throw ex;
  6079. }
  6080. finally
  6081. {
  6082. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6083. {
  6084. oracleTrConn.Disconnect();
  6085. }
  6086. }
  6087. return returnRows;
  6088. }
  6089. /// <summary>
  6090. /// 新建成型线信息
  6091. /// </summary>
  6092. /// <param name="groutingLineEntity">成型线实体</param>
  6093. /// <param name="detailList">明细实体集合</param>
  6094. /// <param name="user">用户基本信息</param>
  6095. /// <returns>返回受影响行数</returns>
  6096. /// <remarks>
  6097. /// 庄天威 2014.09.10 新建
  6098. /// </remarks>
  6099. public static ServiceResultEntity AddGroutingLine_NewLine(GroutingLineEntity groutingLineEntity,
  6100. DataTable detailList, DataTable detailUserList, SUserInfo user)
  6101. {
  6102. ServiceResultEntity sre = new ServiceResultEntity();
  6103. int returnRows = 0;
  6104. int detailReturn = 0;
  6105. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6106. try
  6107. {
  6108. if (GroutingLineCodeIsRepeat(groutingLineEntity.GROUTINGLINECODE, user.AccountID) == false)
  6109. {
  6110. sre.Status = Constant.ServiceResultStatus.Other;
  6111. sre.OtherStatus = -50;
  6112. return sre;
  6113. }
  6114. oracleTrConn.Connect();
  6115. // 验证模具条码
  6116. DataRow[] moulds = detailList.Select("MouldID is not null");
  6117. if (moulds != null && moulds.Length > 0)
  6118. {
  6119. List<string> ids = new List<string>();
  6120. foreach (DataRow item in moulds)
  6121. {
  6122. ids.Add(item["MouldID"].ToString());
  6123. }
  6124. string idswhere = string.Join(",", ids);
  6125. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  6126. oracleTrConn.GetSqlResultToDt(sql);
  6127. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  6128. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  6129. if (dt != null && dt.Rows.Count > 0)
  6130. {
  6131. ids.Clear();
  6132. foreach (DataRow item in dt.Rows)
  6133. {
  6134. ids.Add(item["mouldbarcode"].ToString());
  6135. }
  6136. sre.Status = Constant.ServiceResultStatus.Other;
  6137. sre.OtherStatus = -100;
  6138. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  6139. + string.Join(",", ids);
  6140. return sre;
  6141. }
  6142. }
  6143. // 获得账务日期
  6144. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  6145. //获取成型线ID索引
  6146. StringBuilder sbSql = new StringBuilder();
  6147. sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
  6148. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  6149. sbSql.Clear();
  6150. //添加成型线信息
  6151. sbSql.Append("Insert into TP_PC_GroutingLine");
  6152. sbSql.Append("(GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,");
  6153. //xuwei add 2019-11-13 高压注浆
  6154. sbSql.Append("HighPressureFlag,NON_SAP,");
  6155. //xuwei end
  6156. sbSql.Append("GroutingLineName,MouldQuantity,GMouldTypeID,UserID,MonitorID,");
  6157. sbSql.Append("BeginUsedDate,GMouldStatus,Remarks,AccountID,");
  6158. sbSql.Append("CreateUserID,UpdateUserID,UserCount)");
  6159. sbSql.Append("values(:GroutingLineID,:BuildingNo,:FloorNo,:GroutingLineNo,:GroutingLineCode,");
  6160. //xuwei add 2019-11-13 高压注浆
  6161. sbSql.Append(":HighPressureFlag,:NON_SAP,");
  6162. //xuwei end
  6163. sbSql.Append(":GroutingLineName,:MouldQuantity,:GMouldTypeID,:UserID,:MonitorID,");
  6164. sbSql.Append(":BeginUsedDate,:GMouldStatus,:Remarks,:AccountID,");
  6165. sbSql.Append(":CreateUserID,:UpdateUserID,:UserCount)");
  6166. OracleParameter[] Paras = new OracleParameter[] {
  6167. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6168. id,ParameterDirection.Input),
  6169. new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
  6170. groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
  6171. new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
  6172. groutingLineEntity.FLOORNO,ParameterDirection.Input),
  6173. new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
  6174. groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
  6175. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  6176. groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
  6177. //xuwei add 2019-11-13 高压注浆
  6178. new OracleParameter(":HighPressureFlag",OracleDbType.Char,
  6179. groutingLineEntity.HIGHPRESSUREFLAG,ParameterDirection.Input),
  6180. new OracleParameter(":NON_SAP",OracleDbType.Char,
  6181. groutingLineEntity.NON_SAP,ParameterDirection.Input),
  6182. //xuwei end
  6183. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  6184. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  6185. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  6186. groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
  6187. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  6188. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  6189. new OracleParameter(":UserID",OracleDbType.Int32,
  6190. groutingLineEntity.USERID,ParameterDirection.Input),
  6191. new OracleParameter(":MonitorID",OracleDbType.Int32,
  6192. groutingLineEntity.MonitorID,ParameterDirection.Input),
  6193. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  6194. accountDate,ParameterDirection.Input),
  6195. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  6196. groutingLineEntity.MouldStatus,ParameterDirection.Input),
  6197. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6198. groutingLineEntity.REMARKS,ParameterDirection.Input),
  6199. new OracleParameter(":AccountID",OracleDbType.Int32,
  6200. user.AccountID,ParameterDirection.Input),
  6201. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  6202. user.UserID,ParameterDirection.Input),
  6203. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6204. user.UserID,ParameterDirection.Input),
  6205. new OracleParameter(":UserCount",OracleDbType.Int32,
  6206. detailUserList.Rows.Count,ParameterDirection.Input),
  6207. };
  6208. //执行插入成型线SQL语句
  6209. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  6210. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  6211. List<int> mouldIDs = new List<int>();
  6212. //此处添加明细信息(循环)
  6213. foreach (DataRow detailInfo in detailList.Rows)
  6214. {
  6215. //查看该成型线明细编号是否存在
  6216. if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
  6217. {
  6218. oracleTrConn.Rollback();
  6219. oracleTrConn.Disconnect();
  6220. sre.Status = Constant.ServiceResultStatus.Other;
  6221. sre.OtherStatus = -2;
  6222. return sre;
  6223. }
  6224. //获取成型线明细索引
  6225. sbSql.Clear();
  6226. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  6227. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  6228. sbSql.Clear();
  6229. //插入成型线明细信息
  6230. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  6231. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,GroutingCount,StandardGroutingCount,");
  6232. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
  6233. sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
  6234. sbSql.Append("CreateUserID,UpdateUserID)");
  6235. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:GroutingCount,:StandardGroutingCount,");
  6236. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,");
  6237. sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
  6238. sbSql.Append(":CreateUserID,:UpdateUserID)");
  6239. OracleParameter[] DetailParas = new OracleParameter[] {
  6240. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6241. detailId,ParameterDirection.Input),
  6242. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6243. id,ParameterDirection.Input),
  6244. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  6245. detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
  6246. new OracleParameter(":GoodsID",OracleDbType.Int32,
  6247. detailInfo["GOODSID"],ParameterDirection.Input),
  6248. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  6249. detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
  6250. new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
  6251. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6252. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  6253. detailInfo["MOULDSTATUS"],ParameterDirection.Input),
  6254. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  6255. accountDate,ParameterDirection.Input),
  6256. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6257. detailInfo["REMARKS"],ParameterDirection.Input),
  6258. new OracleParameter(":AccountID",OracleDbType.Int32,
  6259. user.AccountID,ParameterDirection.Input),
  6260. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  6261. user.UserID,ParameterDirection.Input),
  6262. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6263. user.UserID,ParameterDirection.Input),
  6264. new OracleParameter(":MouldSource",OracleDbType.Char,
  6265. detailInfo["MouldSource"],ParameterDirection.Input),
  6266. new OracleParameter(":MouldID",OracleDbType.Int32,
  6267. detailInfo["MouldID"],ParameterDirection.Input),
  6268. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  6269. detailInfo["MouldCode"],ParameterDirection.Input),
  6270. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  6271. detailInfo["MouldOutputNo"],ParameterDirection.Input),
  6272. };
  6273. //执行插入语句并累加成功插入次数
  6274. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6275. // 非条码模具
  6276. if (detailInfo["MouldID"] + "" == "")
  6277. {
  6278. continue;
  6279. }
  6280. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  6281. int mID = Convert.ToInt32(detailInfo["MouldID"]);
  6282. object mOutputNo = detailInfo["MouldOutputNo"];
  6283. if (mOutputNo != null && mOutputNo != DBNull.Value)
  6284. {
  6285. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  6286. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6287. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  6288. OracleParameter[] oparas = new OracleParameter[]
  6289. {
  6290. new OracleParameter(":OutputNo", OracleDbType.Int32,
  6291. mOutputNo, ParameterDirection.Input),
  6292. new OracleParameter(":mouldid", OracleDbType.Int32,
  6293. mID, ParameterDirection.Input),
  6294. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6295. detailId, ParameterDirection.Input),
  6296. };
  6297. detailReturn += oracleTrConn.ExecuteNonQuery(sql, oparas);
  6298. }
  6299. if (mouldIDs.Contains(mID))
  6300. {
  6301. continue;
  6302. }
  6303. mouldIDs.Add(mID);
  6304. // 添加模具履历
  6305. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  6306. string sqlString =
  6307. "INSERT INTO tp_pc_mouldchangehistory\n" +
  6308. " (CHANGEID\n" +
  6309. " ,MOULDID\n" +
  6310. " ,MOULDCODE\n" +
  6311. " ,MOULDBARCODE\n" +
  6312. " ,GOODSID\n" +
  6313. " ,GOODSCODE\n" +
  6314. " ,OPERATIONTYPE\n" +
  6315. " ,GroutingLineDetailID\n" +
  6316. " ,MOULDSTATUS\n" +
  6317. " ,MOULDSTATUSAFTER\n" +
  6318. " ,GROUTINGNUM\n" +
  6319. " ,REMARKS\n" +
  6320. " ,CHANGEFLAG\n" +
  6321. " ,ACCOUNTID\n" +
  6322. " ,CREATEUSERID)\n" +
  6323. " SELECT :changeID\n" +
  6324. " ,:mouldid\n" +
  6325. " ,:MOULDCODE\n" +
  6326. " ,m.mouldbarcode\n" +
  6327. " ,m.goodsid\n" +
  6328. " ,m.goodscode\n" +
  6329. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  6330. " ,:GroutingLineDetailID\n" +
  6331. " ,m.mouldstatus\n" +
  6332. " ,2\n" +
  6333. " ,m.groutingnum\n" +
  6334. " ,:REMARKS\n" +
  6335. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  6336. " ,:ACCOUNTID\n" +
  6337. " ,:USERID\n" +
  6338. " FROM tp_pc_mould m\n" +
  6339. " WHERE m.mouldid = :mouldid";
  6340. OracleParameter[] paras = new OracleParameter[]
  6341. {
  6342. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6343. detailId, ParameterDirection.Input),
  6344. new OracleParameter(":changeID", OracleDbType.Int32,
  6345. mouldHistoryID, ParameterDirection.Input),
  6346. new OracleParameter(":MouldID", OracleDbType.Int32,
  6347. detailInfo["MouldID"], ParameterDirection.Input),
  6348. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  6349. detailInfo["MOULDCODE"], ParameterDirection.Input),
  6350. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  6351. detailInfo["Remarks"], ParameterDirection.Input),
  6352. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  6353. user.AccountID, ParameterDirection.Input),
  6354. new OracleParameter(":USERID", OracleDbType.Int32,
  6355. user.UserID, ParameterDirection.Input),
  6356. };
  6357. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6358. // 修改模具状态
  6359. sqlString = "UPDATE tp_pc_mould m\n" +
  6360. " SET m.premouldstatus = m.mouldstatus\n" +
  6361. " ,m.mouldstatus = :mouldstatus\n" +
  6362. " ,m.updateuserid = :userid\n" +
  6363. " ,m.lastchangehistoryid = :changeid\n" +
  6364. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6365. " WHERE m.mouldid = :mouldid";
  6366. paras = new OracleParameter[]
  6367. {
  6368. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  6369. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  6370. new OracleParameter(":changeid", OracleDbType.Int32,
  6371. mouldHistoryID, ParameterDirection.Input),
  6372. new OracleParameter(":userid", OracleDbType.Int32,
  6373. user.UserID, ParameterDirection.Input),
  6374. new OracleParameter(":mouldid", OracleDbType.Int32,
  6375. detailInfo["MouldID"], ParameterDirection.Input),
  6376. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6377. detailId, ParameterDirection.Input),
  6378. };
  6379. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6380. }
  6381. // 添加成型工号
  6382. foreach (DataRow detailInfo in detailUserList.Rows)
  6383. {
  6384. //插入成型线明细信息
  6385. sbSql.Clear();
  6386. sbSql.Append("Insert into TP_PC_GroutingUser");
  6387. sbSql.Append("(GroutingLineID,UserID,Remarks)");
  6388. sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
  6389. OracleParameter[] DetailParas = new OracleParameter[] {
  6390. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6391. id,ParameterDirection.Input),
  6392. new OracleParameter(":UserID",OracleDbType.Int32,
  6393. detailInfo["USERID"],ParameterDirection.Input),
  6394. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6395. detailInfo["REMARK"],ParameterDirection.Input),
  6396. };
  6397. //执行插入语句并累加成功插入次数
  6398. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6399. }
  6400. //如果有插入不成功的情况,回滚事务,否则提交
  6401. //if (returnRows == 0 || detailReturn == 0)
  6402. if (returnRows == 0)
  6403. {
  6404. oracleTrConn.Rollback();
  6405. oracleTrConn.Disconnect();
  6406. }
  6407. else
  6408. {
  6409. oracleTrConn.Commit();
  6410. oracleTrConn.Disconnect();
  6411. }
  6412. }
  6413. catch (Exception ex)
  6414. {
  6415. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6416. {
  6417. oracleTrConn.Rollback();
  6418. oracleTrConn.Disconnect();
  6419. }
  6420. throw ex;
  6421. }
  6422. finally
  6423. {
  6424. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6425. {
  6426. oracleTrConn.Disconnect();
  6427. }
  6428. }
  6429. return sre;
  6430. }
  6431. /// <summary>
  6432. /// 修改成型线信息
  6433. /// </summary>
  6434. /// <param name="groutingLineEntity">成型线实体</param>
  6435. /// <param name="detailList">明细实体集合</param>
  6436. /// <param name="user">用户基本信息</param>
  6437. /// <returns>int返回受影响行数</returns>
  6438. /// <remarks>
  6439. /// 庄天威 2014.09.10 新建
  6440. /// </remarks>
  6441. public static ServiceResultEntity UpdateGroutingLine_NewLine(GroutingLineEntity groutingLineEntity,
  6442. DataTable detailList, DataTable detailUserList, DataTable UpdatedetailList, SUserInfo user)
  6443. {
  6444. ServiceResultEntity sre = new ServiceResultEntity();
  6445. int returnRows = 0;
  6446. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6447. try
  6448. {
  6449. oracleTrConn.Connect();
  6450. // 获得账务日期
  6451. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  6452. //修改成型线信息
  6453. StringBuilder sbSql = new StringBuilder();
  6454. sbSql.Append("update TP_PC_GroutingLine SET ");
  6455. sbSql.Append("MouldQuantity=:MouldQuantity,");
  6456. sbSql.Append("GMouldTypeID=:GMouldTypeID,");
  6457. sbSql.Append("UserID=:UserID,");
  6458. sbSql.Append("GROUTINGLINENAME=:GROUTINGLINENAME,");
  6459. sbSql.Append("MonitorID=:MonitorID,");
  6460. //xuwei add 2019-11-13 高压注浆
  6461. sbSql.Append("HighPressureFlag=:HighPressureFlag,");
  6462. sbSql.Append("NON_SAP=:NON_SAP,");
  6463. //xuwei end
  6464. sbSql.Append("Remarks=:Remarks,");
  6465. sbSql.Append("AccountID=:AccountID,");
  6466. sbSql.Append("ValueFlag=:ValueFlag2,");
  6467. sbSql.Append("UpdateTime=:UpdateTime,");
  6468. sbSql.Append("UpdateUserID=:UpdateUserID,");
  6469. sbSql.Append("UserCount=:UserCount");
  6470. sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp ");
  6471. if (groutingLineEntity.VALUEFLAG == 0)
  6472. {
  6473. groutingLineEntity.ENDUSEDDATE = DateTime.Now;
  6474. }
  6475. else
  6476. {
  6477. groutingLineEntity.ENDUSEDDATE = null;
  6478. }
  6479. int MouldQuantity_temp = 0;
  6480. if (detailList != null)
  6481. {
  6482. // 验证模具条码
  6483. DataRow[] moulds = detailList.Select("MouldID is not null");
  6484. if (moulds != null && moulds.Length > 0)
  6485. {
  6486. List<string> ids = new List<string>();
  6487. foreach (DataRow item in moulds)
  6488. {
  6489. string id = item["MouldID"].ToString();
  6490. if (!ids.Contains(id))
  6491. {
  6492. ids.Add(id);
  6493. }
  6494. }
  6495. string idswhere = string.Join(",", ids);
  6496. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  6497. oracleTrConn.GetSqlResultToDt(sql);
  6498. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  6499. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  6500. if (dt != null && dt.Rows.Count > 0)
  6501. {
  6502. ids.Clear();
  6503. foreach (DataRow item in dt.Rows)
  6504. {
  6505. ids.Add(item["mouldbarcode"].ToString());
  6506. }
  6507. sre.Status = Constant.ServiceResultStatus.Other;
  6508. sre.OtherStatus = -100;
  6509. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  6510. + string.Join(",", ids);
  6511. return sre;
  6512. }
  6513. }
  6514. MouldQuantity_temp = detailList.Rows.Count;
  6515. }
  6516. if (UpdatedetailList != null)
  6517. {
  6518. MouldQuantity_temp += UpdatedetailList.Rows.Count;
  6519. }
  6520. OracleParameter[] Paras = new OracleParameter[] {
  6521. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  6522. MouldQuantity_temp,ParameterDirection.Input),
  6523. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  6524. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  6525. new OracleParameter(":UserID",OracleDbType.Int32,
  6526. //Convert.ToInt32(detailUserList.Rows[0]["userid"]),ParameterDirection.Input),
  6527. groutingLineEntity.USERID,ParameterDirection.Input),
  6528. new OracleParameter(":GROUTINGLINENAME",OracleDbType.NVarchar2,
  6529. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  6530. new OracleParameter(":MonitorID",OracleDbType.Int32,
  6531. groutingLineEntity.MonitorID,ParameterDirection.Input),
  6532. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6533. groutingLineEntity.REMARKS,ParameterDirection.Input),
  6534. new OracleParameter(":AccountID",OracleDbType.Int32,
  6535. groutingLineEntity.ACCOUNTID,ParameterDirection.Input),
  6536. new OracleParameter(":ValueFlag2",OracleDbType.Char,
  6537. groutingLineEntity.ValueFlag2,ParameterDirection.Input),
  6538. //xuwei add 2019-11-13 高压注浆
  6539. new OracleParameter(":HighPressureFlag",OracleDbType.Char,
  6540. groutingLineEntity.HIGHPRESSUREFLAG,ParameterDirection.Input),
  6541. new OracleParameter(":NON_SAP",OracleDbType.Char,
  6542. groutingLineEntity.NON_SAP,ParameterDirection.Input),
  6543. //xuwei end
  6544. new OracleParameter(":UpdateTime",OracleDbType.Date,
  6545. DateTime.Now,ParameterDirection.Input),
  6546. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6547. user.UserID,ParameterDirection.Input),
  6548. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6549. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  6550. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  6551. groutingLineEntity.OPTIMESTAMP,ParameterDirection.Input),
  6552. new OracleParameter(":UserCount",OracleDbType.Int32,
  6553. detailUserList.Rows.Count,ParameterDirection.Input),
  6554. };
  6555. //执行修改语句
  6556. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  6557. //时间戳无法匹配
  6558. if (returnRows == 0)
  6559. {
  6560. oracleTrConn.Rollback();
  6561. oracleTrConn.Disconnect();
  6562. sre.Status = Constant.ServiceResultStatus.Other;
  6563. sre.OtherStatus = -500;
  6564. return sre;
  6565. }
  6566. int detailReturn = 0;
  6567. if (UpdatedetailList != null)
  6568. {
  6569. //添加修改时新建的模具信息
  6570. foreach (DataRow detailInfo in UpdatedetailList.Rows)
  6571. {
  6572. sbSql.Clear();
  6573. sbSql.Append("Update TP_PC_GroutingLineDetail set Remarks=:Remarks,UpdateUserID=:UpdateUserID,StandardGroutingCount=:StandardGroutingCount where GroutingLineDetailID=:GroutingLineDetailID");
  6574. OracleParameter[] DetailParas = new OracleParameter[] {
  6575. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6576. detailInfo["GROUTINGLINEDETAILID"],ParameterDirection.Input),
  6577. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6578. detailInfo["REMARKS"],ParameterDirection.Input),
  6579. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6580. user.UserID,ParameterDirection.Input),
  6581. new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
  6582. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6583. };
  6584. //执行
  6585. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6586. }
  6587. }
  6588. if (detailList != null)
  6589. {
  6590. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  6591. List<int> mouldIDs = new List<int>();
  6592. //添加修改时新建的模具信息
  6593. foreach (DataRow detailInfo in detailList.Rows)
  6594. {
  6595. //模具明细编号唯一
  6596. if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
  6597. {
  6598. oracleTrConn.Rollback();
  6599. oracleTrConn.Disconnect();
  6600. sre.Status = Constant.ServiceResultStatus.Other;
  6601. sre.OtherStatus = -2;
  6602. return sre;
  6603. }
  6604. //获取模具明细索引
  6605. sbSql.Clear();
  6606. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  6607. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  6608. sbSql.Clear();
  6609. //插入新增的模具信息
  6610. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  6611. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,StandardGroutingCount,GroutingCount,");
  6612. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
  6613. sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
  6614. sbSql.Append("CreateUserID,UpdateUserID)");
  6615. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:StandardGroutingCount,:GroutingCount,");
  6616. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,");
  6617. sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
  6618. sbSql.Append(":CreateUserID,:UpdateUserID)");
  6619. OracleParameter[] DetailParas = new OracleParameter[] {
  6620. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6621. detailId,ParameterDirection.Input),
  6622. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6623. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  6624. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  6625. detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
  6626. new OracleParameter(":GoodsID",OracleDbType.Int32,
  6627. detailInfo["GOODSID"],ParameterDirection.Input),
  6628. new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
  6629. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6630. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  6631. detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
  6632. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  6633. 1, ParameterDirection.Input),
  6634. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  6635. accountDate,ParameterDirection.Input),
  6636. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6637. detailInfo["REMARKS"],ParameterDirection.Input),
  6638. new OracleParameter(":AccountID",OracleDbType.Int32,
  6639. user.AccountID,ParameterDirection.Input),
  6640. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  6641. user.UserID,ParameterDirection.Input),
  6642. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6643. user.UserID,ParameterDirection.Input),
  6644. new OracleParameter(":MouldSource",OracleDbType.Char,
  6645. detailInfo["MouldSource"],ParameterDirection.Input),
  6646. new OracleParameter(":MouldID",OracleDbType.Int32,
  6647. detailInfo["MouldID"],ParameterDirection.Input),
  6648. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  6649. detailInfo["MouldCode"],ParameterDirection.Input),
  6650. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  6651. detailInfo["MouldOutputNo"],ParameterDirection.Input),
  6652. };
  6653. //执行
  6654. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6655. // 非条码模具
  6656. if (detailInfo["MouldID"] + "" == "")
  6657. {
  6658. continue;
  6659. }
  6660. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  6661. int mID = Convert.ToInt32(detailInfo["MouldID"]);
  6662. object mOutputNo = detailInfo["MouldOutputNo"];
  6663. if (mOutputNo != null && mOutputNo != DBNull.Value)
  6664. {
  6665. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  6666. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6667. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  6668. OracleParameter[] oparas = new OracleParameter[]
  6669. {
  6670. new OracleParameter(":OutputNo", OracleDbType.Int32,
  6671. mOutputNo, ParameterDirection.Input),
  6672. new OracleParameter(":mouldid", OracleDbType.Int32,
  6673. mID, ParameterDirection.Input),
  6674. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6675. detailId, ParameterDirection.Input),
  6676. };
  6677. detailReturn += oracleTrConn.ExecuteNonQuery(sql, oparas);
  6678. }
  6679. if (mouldIDs.Contains(mID))
  6680. {
  6681. continue;
  6682. }
  6683. mouldIDs.Add(mID);
  6684. // 添加模具履历
  6685. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  6686. string sqlString =
  6687. "INSERT INTO tp_pc_mouldchangehistory\n" +
  6688. " (CHANGEID\n" +
  6689. " ,MOULDID\n" +
  6690. " ,MOULDCODE\n" +
  6691. " ,MOULDBARCODE\n" +
  6692. " ,GOODSID\n" +
  6693. " ,GOODSCODE\n" +
  6694. " ,OPERATIONTYPE\n" +
  6695. " ,GroutingLineDetailID\n" +
  6696. " ,MOULDSTATUS\n" +
  6697. " ,MOULDSTATUSAFTER\n" +
  6698. " ,GROUTINGNUM\n" +
  6699. " ,REMARKS\n" +
  6700. " ,CHANGEFLAG\n" +
  6701. " ,ACCOUNTID\n" +
  6702. " ,CREATEUSERID)\n" +
  6703. " SELECT :changeID\n" +
  6704. " ,:mouldid\n" +
  6705. " ,:MOULDCODE\n" +
  6706. " ,m.mouldbarcode\n" +
  6707. " ,m.goodsid\n" +
  6708. " ,m.goodscode\n" +
  6709. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  6710. " ,:GroutingLineDetailID\n" +
  6711. " ,m.mouldstatus\n" +
  6712. " ,2\n" +
  6713. " ,m.groutingnum\n" +
  6714. " ,:REMARKS\n" +
  6715. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  6716. " ,:ACCOUNTID\n" +
  6717. " ,:USERID\n" +
  6718. " FROM tp_pc_mould m\n" +
  6719. " WHERE m.mouldid = :mouldid";
  6720. OracleParameter[] paras = new OracleParameter[]
  6721. {
  6722. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6723. detailId, ParameterDirection.Input),
  6724. new OracleParameter(":changeID", OracleDbType.Int32,
  6725. mouldHistoryID, ParameterDirection.Input),
  6726. new OracleParameter(":MouldID", OracleDbType.Int32,
  6727. detailInfo["MouldID"], ParameterDirection.Input),
  6728. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  6729. detailInfo["MOULDCODE"], ParameterDirection.Input),
  6730. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  6731. detailInfo["Remarks"], ParameterDirection.Input),
  6732. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  6733. user.AccountID, ParameterDirection.Input),
  6734. new OracleParameter(":USERID", OracleDbType.Int32,
  6735. user.UserID, ParameterDirection.Input),
  6736. };
  6737. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6738. // 修改模具状态
  6739. sqlString = "UPDATE tp_pc_mould m\n" +
  6740. " SET m.premouldstatus = m.mouldstatus\n" +
  6741. " ,m.mouldstatus = :mouldstatus\n" +
  6742. " ,m.updateuserid = :userid\n" +
  6743. " ,m.lastchangehistoryid = :changeid\n" +
  6744. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6745. " WHERE m.mouldid = :mouldid";
  6746. paras = new OracleParameter[]
  6747. {
  6748. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  6749. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  6750. new OracleParameter(":changeid", OracleDbType.Int32,
  6751. mouldHistoryID, ParameterDirection.Input),
  6752. new OracleParameter(":userid", OracleDbType.Int32,
  6753. user.UserID, ParameterDirection.Input),
  6754. new OracleParameter(":mouldid", OracleDbType.Int32,
  6755. detailInfo["MouldID"], ParameterDirection.Input),
  6756. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6757. detailId, ParameterDirection.Input),
  6758. };
  6759. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6760. }
  6761. }
  6762. if (groutingLineEntity.GROUTINGLINEIDS == null)
  6763. {
  6764. string sqlDelete = "delete from TP_PC_GroutingUser where GroutingLineID=" + groutingLineEntity.GROUTINGLINEID.ToString();
  6765. detailReturn += oracleTrConn.ExecuteNonQuery(sqlDelete);
  6766. // 添加成型工号
  6767. foreach (DataRow detailInfo in detailUserList.Rows)
  6768. {
  6769. sbSql.Clear();
  6770. //插入成型线明细信息
  6771. sbSql.Append("Insert into TP_PC_GroutingUser");
  6772. sbSql.Append("(GroutingLineID,UserID,Remarks)");
  6773. sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
  6774. OracleParameter[] DetailParas = new OracleParameter[] {
  6775. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6776. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  6777. new OracleParameter(":UserID",OracleDbType.Int32,
  6778. detailInfo["USERID"],ParameterDirection.Input),
  6779. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6780. detailInfo["REMARK"],ParameterDirection.Input),
  6781. };
  6782. //执行插入语句并累加成功插入次数
  6783. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6784. }
  6785. }
  6786. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  6787. string sqlLine = "update TP_PC_GROUTINGLINE l " +
  6788. " set l.beginuseddate =" +
  6789. " nvl((select min(ld.beginuseddate)" +
  6790. " from TP_PC_GROUTINGLINEDETAIL ld" +
  6791. " where ld.groutinglineid = l.groutinglineid" +
  6792. " and ld.valueflag = '1'),l.beginuseddate)" +
  6793. " where l.groutinglineid = " + groutingLineEntity.GROUTINGLINEID;
  6794. oracleTrConn.ExecuteNonQuery(sqlLine, null);
  6795. //提交事务
  6796. oracleTrConn.Commit();
  6797. oracleTrConn.Disconnect();
  6798. }
  6799. catch (Exception ex)
  6800. {
  6801. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6802. {
  6803. oracleTrConn.Rollback();
  6804. oracleTrConn.Disconnect();
  6805. }
  6806. throw ex;
  6807. }
  6808. return sre;
  6809. }
  6810. /// <summary>
  6811. /// 上模
  6812. /// </summary>
  6813. public static ServiceResultEntity UpdateGroutingLine_AddMould(int groutingLineID, string groutingLineCode, DateTime lineTimeStamp,
  6814. DataTable detailList, SUserInfo user)
  6815. {
  6816. ServiceResultEntity sre = new ServiceResultEntity();
  6817. int returnRows = 0;
  6818. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6819. try
  6820. {
  6821. oracleTrConn.Connect();
  6822. if (detailList != null)
  6823. {
  6824. // 验证模具条码
  6825. DataRow[] moulds = detailList.Select("MouldID is not null and GroutingLineDetailID = 0");
  6826. if (moulds != null && moulds.Length > 0)
  6827. {
  6828. List<string> ids = new List<string>();
  6829. foreach (DataRow item in moulds)
  6830. {
  6831. //ids.Add(item["MouldID"].ToString());
  6832. string id = item["MouldID"].ToString();
  6833. if (!ids.Contains(id))
  6834. {
  6835. ids.Add(id);
  6836. }
  6837. }
  6838. string idswhere = string.Join(",", ids);
  6839. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  6840. oracleTrConn.GetSqlResultToDt(sql);
  6841. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  6842. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  6843. if (dt != null && dt.Rows.Count > 0)
  6844. {
  6845. ids.Clear();
  6846. foreach (DataRow item in dt.Rows)
  6847. {
  6848. ids.Add(item["mouldbarcode"].ToString());
  6849. }
  6850. sre.Status = Constant.ServiceResultStatus.Other;
  6851. sre.OtherStatus = -100;
  6852. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  6853. + string.Join(",", ids);
  6854. return sre;
  6855. }
  6856. }
  6857. }
  6858. //修改成型线信息
  6859. StringBuilder sbSql = new StringBuilder();
  6860. sbSql.Append("update TP_PC_GroutingLine SET ");
  6861. sbSql.Append("MouldQuantity=MouldQuantity+:MouldQuantity,");
  6862. sbSql.Append("UpdateUserID=:UpdateUserID");
  6863. sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp");
  6864. OracleParameter[] Paras = new OracleParameter[] {
  6865. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  6866. (detailList == null ? 0 : detailList.Rows.Count), ParameterDirection.Input),
  6867. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6868. user.UserID,ParameterDirection.Input),
  6869. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6870. groutingLineID,ParameterDirection.Input),
  6871. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  6872. lineTimeStamp,ParameterDirection.Input),
  6873. };
  6874. //执行修改语句
  6875. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  6876. //时间戳无法匹配
  6877. if (returnRows == 0)
  6878. {
  6879. oracleTrConn.Rollback();
  6880. oracleTrConn.Disconnect();
  6881. sre.Status = Constant.ServiceResultStatus.Other;
  6882. sre.OtherStatus = -500;
  6883. return sre;
  6884. }
  6885. int detailReturn = 0;
  6886. if (detailList != null && detailList.Rows.Count > 0)
  6887. {
  6888. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  6889. List<int> mouldIDs = new List<int>();
  6890. // 获得账务日期
  6891. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  6892. //添加修改时新建的模具信息
  6893. foreach (DataRow detailInfo in detailList.Rows)
  6894. {
  6895. int detailID = Convert.ToInt32(detailInfo["GroutingLineDetailID"]);
  6896. // 编辑
  6897. if (detailID > 0)
  6898. {
  6899. sbSql.Clear();
  6900. sbSql.Append("Update TP_PC_GroutingLineDetail set Remarks=:Remarks,UpdateUserID=:UpdateUserID,StandardGroutingCount=:StandardGroutingCount where GroutingLineDetailID=:GroutingLineDetailID");
  6901. OracleParameter[] DetailUpdateParas = new OracleParameter[] {
  6902. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6903. detailID,ParameterDirection.Input),
  6904. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6905. detailInfo["REMARKS"],ParameterDirection.Input),
  6906. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6907. user.UserID,ParameterDirection.Input),
  6908. new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
  6909. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6910. };
  6911. //执行
  6912. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailUpdateParas);
  6913. continue;
  6914. }
  6915. //模具明细编号唯一
  6916. if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
  6917. {
  6918. oracleTrConn.Rollback();
  6919. oracleTrConn.Disconnect();
  6920. sre.Status = Constant.ServiceResultStatus.Other;
  6921. sre.OtherStatus = -2;
  6922. sre.Message = "成型模具号【" + detailInfo["GROUTINGMOULDCODE"] + "】已存在,请确认。";
  6923. return sre;
  6924. }
  6925. //获取模具明细索引
  6926. sbSql.Clear();
  6927. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  6928. detailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  6929. if (detailInfo["MouldID"] + "" == "" && detailInfo["MouldCode"] + "" == "")
  6930. {
  6931. detailInfo["MouldCode"] = System.Guid.NewGuid().ToString().ToUpper();
  6932. }
  6933. sbSql.Clear();
  6934. //插入新增的模具信息
  6935. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  6936. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,StandardGroutingCount,GroutingCount,");
  6937. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
  6938. sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
  6939. sbSql.Append("CreateUserID,UpdateUserID)");
  6940. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:StandardGroutingCount,:GroutingCount,");
  6941. sbSql.Append("decode(:MouldID,null,1,0),trunc(sysdate),:Remarks,:AccountID,");
  6942. sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
  6943. sbSql.Append(":CreateUserID,:UpdateUserID)");
  6944. OracleParameter[] DetailParas = new OracleParameter[] {
  6945. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6946. detailID,ParameterDirection.Input),
  6947. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6948. groutingLineID,ParameterDirection.Input),
  6949. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  6950. detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
  6951. new OracleParameter(":GoodsID",OracleDbType.Int32,
  6952. detailInfo["GOODSID"],ParameterDirection.Input),
  6953. new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
  6954. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6955. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  6956. detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
  6957. // 潮州 要求模具操作后(条码模具),状态为停用,生控启用后才能开始注浆
  6958. //new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  6959. // 0, ParameterDirection.Input),
  6960. //new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  6961. // accountDate,ParameterDirection.Input),
  6962. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6963. detailInfo["REMARKS"],ParameterDirection.Input),
  6964. new OracleParameter(":AccountID",OracleDbType.Int32,
  6965. user.AccountID,ParameterDirection.Input),
  6966. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  6967. user.UserID,ParameterDirection.Input),
  6968. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6969. user.UserID,ParameterDirection.Input),
  6970. new OracleParameter(":MouldSource",OracleDbType.Char,
  6971. detailInfo["MouldSource"],ParameterDirection.Input),
  6972. new OracleParameter(":MouldID",OracleDbType.Int32,
  6973. detailInfo["MouldID"],ParameterDirection.Input),
  6974. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  6975. detailInfo["MouldCode"],ParameterDirection.Input),
  6976. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  6977. detailInfo["MouldOutputNo"],ParameterDirection.Input),
  6978. };
  6979. //执行
  6980. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6981. // 非条码模具
  6982. if (detailInfo["MouldID"] + "" == "")
  6983. {
  6984. continue;
  6985. }
  6986. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  6987. int mID = Convert.ToInt32(detailInfo["MouldID"]);
  6988. object mOutputNo = detailInfo["MouldOutputNo"];
  6989. if (mOutputNo != null && mOutputNo != DBNull.Value)
  6990. {
  6991. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  6992. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6993. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  6994. OracleParameter[] oparas = new OracleParameter[]
  6995. {
  6996. new OracleParameter(":OutputNo", OracleDbType.Int32,
  6997. mOutputNo, ParameterDirection.Input),
  6998. new OracleParameter(":mouldid", OracleDbType.Int32,
  6999. mID, ParameterDirection.Input),
  7000. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  7001. detailID, ParameterDirection.Input),
  7002. };
  7003. returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
  7004. }
  7005. if (mouldIDs.Contains(mID))
  7006. {
  7007. continue;
  7008. }
  7009. mouldIDs.Add(mID);
  7010. // 添加模具履历
  7011. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  7012. string sqlString =
  7013. "INSERT INTO tp_pc_mouldchangehistory\n" +
  7014. " (CHANGEID\n" +
  7015. " ,MOULDID\n" +
  7016. " ,MOULDCODE\n" +
  7017. " ,MOULDBARCODE\n" +
  7018. " ,GOODSID\n" +
  7019. " ,GOODSCODE\n" +
  7020. " ,OPERATIONTYPE\n" +
  7021. " ,GroutingLineDetailID\n" +
  7022. " ,MOULDSTATUS\n" +
  7023. " ,MOULDSTATUSAFTER\n" +
  7024. " ,GROUTINGNUM\n" +
  7025. " ,REMARKS\n" +
  7026. " ,CHANGEFLAG\n" +
  7027. " ,ACCOUNTID\n" +
  7028. " ,CREATEUSERID)\n" +
  7029. " SELECT :changeID\n" +
  7030. " ,:mouldid\n" +
  7031. " ,:MOULDCODE\n" +
  7032. " ,m.mouldbarcode\n" +
  7033. " ,m.goodsid\n" +
  7034. " ,m.goodscode\n" +
  7035. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  7036. " ,:GroutingLineDetailID\n" +
  7037. " ,m.mouldstatus\n" +
  7038. " ,2\n" +
  7039. " ,m.groutingnum\n" +
  7040. " ,:REMARKS\n" +
  7041. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  7042. " ,:ACCOUNTID\n" +
  7043. " ,:USERID\n" +
  7044. " FROM tp_pc_mould m\n" +
  7045. " WHERE m.mouldid = :mouldid";
  7046. OracleParameter[] paras = new OracleParameter[]
  7047. {
  7048. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  7049. detailID, ParameterDirection.Input),
  7050. new OracleParameter(":changeID", OracleDbType.Int32,
  7051. mouldHistoryID, ParameterDirection.Input),
  7052. new OracleParameter(":MouldID", OracleDbType.Int32,
  7053. detailInfo["MouldID"], ParameterDirection.Input),
  7054. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  7055. detailInfo["MOULDCODE"], ParameterDirection.Input),
  7056. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  7057. detailInfo["Remarks"], ParameterDirection.Input),
  7058. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  7059. user.AccountID, ParameterDirection.Input),
  7060. new OracleParameter(":USERID", OracleDbType.Int32,
  7061. user.UserID, ParameterDirection.Input),
  7062. };
  7063. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  7064. // 修改模具状态
  7065. sqlString = "UPDATE tp_pc_mould m\n" +
  7066. " SET m.premouldstatus = m.mouldstatus\n" +
  7067. " ,m.mouldstatus = :mouldstatus\n" +
  7068. " ,m.updateuserid = :userid\n" +
  7069. " ,m.lastchangehistoryid = :changeid\n" +
  7070. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  7071. " WHERE m.mouldid = :mouldid";
  7072. paras = new OracleParameter[]
  7073. {
  7074. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  7075. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  7076. new OracleParameter(":changeid", OracleDbType.Int32,
  7077. mouldHistoryID, ParameterDirection.Input),
  7078. new OracleParameter(":userid", OracleDbType.Int32,
  7079. user.UserID, ParameterDirection.Input),
  7080. new OracleParameter(":mouldid", OracleDbType.Int32,
  7081. detailInfo["MouldID"], ParameterDirection.Input),
  7082. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  7083. detailID, ParameterDirection.Input),
  7084. };
  7085. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  7086. }
  7087. }
  7088. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  7089. string sqlLine = "update TP_PC_GROUTINGLINE l " +
  7090. " set l.beginuseddate =" +
  7091. " nvl((select min(ld.beginuseddate)" +
  7092. " from TP_PC_GROUTINGLINEDETAIL ld" +
  7093. " where ld.groutinglineid = l.groutinglineid" +
  7094. " and ld.valueflag = '1'),l.beginuseddate)" +
  7095. " where l.groutinglineid = " + groutingLineID;
  7096. oracleTrConn.ExecuteNonQuery(sqlLine, null);
  7097. //提交事务
  7098. oracleTrConn.Commit();
  7099. oracleTrConn.Disconnect();
  7100. }
  7101. catch (Exception ex)
  7102. {
  7103. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  7104. {
  7105. oracleTrConn.Rollback();
  7106. oracleTrConn.Disconnect();
  7107. }
  7108. throw ex;
  7109. }
  7110. return sre;
  7111. }
  7112. }
  7113. }