PCModuleLogicDALPartial.cs 417 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329
  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();
  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(),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();
  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();
  4286. }
  4287. object groutingCount = dtGroutingLineDetail.Rows[i]["GroutingCount"];
  4288. //string guid = System.Guid.NewGuid().ToString();
  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. sbSql.Append(",1");
  4325. sbSql.Append(",trunc(sysdate)");
  4326. sbSql.Append(",null");
  4327. sbSql.Append(",:LastGMouldRecordID");
  4328. sbSql.Append(",:Remarks");
  4329. sbSql.Append(",:AccountID");
  4330. sbSql.Append(",1");
  4331. sbSql.Append(",:CreateUserID");
  4332. sbSql.Append(",:UpdateUserID");
  4333. sbSql.Append(" )");
  4334. //sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  4335. Paras = new OracleParameter[] {
  4336. new OracleParameter(":GroutingLineDetailIDNew",OracleDbType.Int32,
  4337. GroutingLineDetailID,ParameterDirection.Input),
  4338. //new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4339. // dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4340. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  4341. dtGroutingLineDetail.Rows[i]["GroutingLineID"],ParameterDirection.Input),
  4342. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  4343. dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
  4344. new OracleParameter(":GoodsID",OracleDbType.Int32,
  4345. dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
  4346. new OracleParameter(":AccountID",OracleDbType.Int32,
  4347. user.AccountID,ParameterDirection.Input),
  4348. new OracleParameter(":MouldSource",OracleDbType.Char,
  4349. dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
  4350. new OracleParameter(":MouldID",OracleDbType.Int32,
  4351. dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
  4352. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  4353. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  4354. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  4355. dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
  4356. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  4357. dtGroutingLineDetail.Rows[i]["RreasonRemarks"],ParameterDirection.Input),
  4358. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4359. user.UserID,ParameterDirection.Input),
  4360. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4361. user.UserID,ParameterDirection.Input),
  4362. new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
  4363. dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
  4364. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  4365. ((groutingCount == null || groutingCount == DBNull.Value) ? 0 : groutingCount),ParameterDirection.Input),
  4366. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  4367. //dtGroutingLineDetail.Rows[i]["LastGMouldRecordID"],ParameterDirection.Input),
  4368. LastGMouldRecordID,ParameterDirection.Input),
  4369. };
  4370. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4371. sbSql.Clear();
  4372. sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID,ChangedMouldCode=:ChangedMouldCode, ChangedDetailID=:GroutingLineDetailID where GMouldRecordID=:GMouldRecordID");
  4373. Paras = new OracleParameter[] {
  4374. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  4375. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  4376. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4377. user.UserID,ParameterDirection.Input),
  4378. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  4379. LastGMouldRecordID,ParameterDirection.Input),
  4380. new OracleParameter(":ChangedMouldCode",OracleDbType.Varchar2,
  4381. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  4382. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4383. GroutingLineDetailID,ParameterDirection.Input)
  4384. };
  4385. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4386. // 非条码模具
  4387. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  4388. {
  4389. continue;
  4390. }
  4391. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  4392. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  4393. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  4394. if (mOutputNo != null && mOutputNo != DBNull.Value)
  4395. {
  4396. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  4397. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  4398. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  4399. OracleParameter[] oparas = new OracleParameter[]
  4400. {
  4401. new OracleParameter(":OutputNo", OracleDbType.Int32,
  4402. mOutputNo, ParameterDirection.Input),
  4403. new OracleParameter(":mouldid", OracleDbType.Int32,
  4404. mID, ParameterDirection.Input),
  4405. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  4406. GroutingLineDetailID, ParameterDirection.Input),
  4407. };
  4408. returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
  4409. }
  4410. if (mouldIDs.Contains(mID))
  4411. {
  4412. continue;
  4413. }
  4414. mouldIDs.Add(mID);
  4415. // 添加模具履历
  4416. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  4417. string sqlString =
  4418. "INSERT INTO tp_pc_mouldchangehistory\n" +
  4419. " (CHANGEID\n" +
  4420. " ,MOULDID\n" +
  4421. " ,MOULDCODE\n" +
  4422. " ,MOULDBARCODE\n" +
  4423. " ,GOODSID\n" +
  4424. " ,GOODSCODE\n" +
  4425. " ,OPERATIONTYPE\n" +
  4426. " ,GroutingLineDetailID\n" +
  4427. " ,MOULDSTATUS\n" +
  4428. " ,MOULDSTATUSAFTER\n" +
  4429. " ,GROUTINGNUM\n" +
  4430. " ,REMARKS\n" +
  4431. " ,CHANGEFLAG\n" +
  4432. " ,ACCOUNTID\n" +
  4433. " ,CREATEUSERID)\n" +
  4434. " SELECT :changeID\n" +
  4435. " ,:mouldid\n" +
  4436. " ,:MOULDCODE\n" +
  4437. " ,m.mouldbarcode\n" +
  4438. " ,m.goodsid\n" +
  4439. " ,m.goodscode\n" +
  4440. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  4441. " ,:GroutingLineDetailID\n" +
  4442. " ,m.mouldstatus\n" +
  4443. " ,2\n" +
  4444. " ,m.groutingnum\n" +
  4445. " ,:REMARKS\n" +
  4446. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  4447. " ,:ACCOUNTID\n" +
  4448. " ,:USERID\n" +
  4449. " FROM tp_pc_mould m\n" +
  4450. " WHERE m.mouldid = :mouldid";
  4451. OracleParameter[] paras = new OracleParameter[]
  4452. {
  4453. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  4454. GroutingLineDetailID, ParameterDirection.Input),
  4455. new OracleParameter(":changeID", OracleDbType.Int32,
  4456. mouldHistoryID, ParameterDirection.Input),
  4457. new OracleParameter(":MouldID", OracleDbType.Int32,
  4458. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4459. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  4460. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  4461. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  4462. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  4463. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  4464. user.AccountID, ParameterDirection.Input),
  4465. new OracleParameter(":USERID", OracleDbType.Int32,
  4466. user.UserID, ParameterDirection.Input),
  4467. };
  4468. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4469. // 修改模具状态
  4470. sqlString = "UPDATE tp_pc_mould m\n" +
  4471. " SET m.premouldstatus = m.mouldstatus\n" +
  4472. " ,m.mouldstatus = :mouldstatus\n" +
  4473. " ,m.updateuserid = :userid\n" +
  4474. " ,m.lastchangehistoryid = :changeid\n" +
  4475. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  4476. " WHERE m.mouldid = :mouldid";
  4477. paras = new OracleParameter[]
  4478. {
  4479. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  4480. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  4481. new OracleParameter(":changeid", OracleDbType.Int32,
  4482. mouldHistoryID, ParameterDirection.Input),
  4483. new OracleParameter(":userid", OracleDbType.Int32,
  4484. user.UserID, ParameterDirection.Input),
  4485. new OracleParameter(":mouldid", OracleDbType.Int32,
  4486. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4487. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  4488. GroutingLineDetailID, ParameterDirection.Input),
  4489. };
  4490. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4491. }
  4492. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  4493. string sqlUpdate ="update TP_PC_GROUTINGLINE l " +
  4494. " set l.beginuseddate =" +
  4495. " (select min(ld.beginuseddate)" +
  4496. " from TP_PC_GROUTINGLINEDETAIL ld" +
  4497. " where ld.groutinglineid = l.groutinglineid" +
  4498. " and ld.valueflag = '1')" +
  4499. " where l.groutinglineid = " + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
  4500. oracleTrConn.ExecuteNonQuery(sqlUpdate, null);
  4501. //更新明细信息
  4502. if (isError)
  4503. {
  4504. sre.Status = Constant.ServiceResultStatus.Other;
  4505. sre.OtherStatus = -500;
  4506. oracleTrConn.Rollback();
  4507. oracleTrConn.Disconnect();
  4508. }
  4509. else
  4510. {
  4511. oracleTrConn.Commit();
  4512. oracleTrConn.Disconnect();
  4513. }
  4514. }
  4515. catch (Exception ex)
  4516. {
  4517. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4518. {
  4519. oracleTrConn.Rollback();
  4520. oracleTrConn.Disconnect();
  4521. }
  4522. throw ex;
  4523. }
  4524. finally
  4525. {
  4526. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4527. {
  4528. oracleTrConn.Disconnect();
  4529. }
  4530. }
  4531. return sre;
  4532. }
  4533. /// <summary>
  4534. /// 变产开始
  4535. /// </summary>
  4536. /// <param name="dtGroutingLineDetail">明细实体</param>
  4537. /// <param name="user">用户基本信息</param>
  4538. /// <returns>int受影响行数</returns>
  4539. /// <remarks>
  4540. ///
  4541. /// </remarks>
  4542. public static int UpdateLineStartGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  4543. {
  4544. int returnRows = 0;
  4545. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4546. try
  4547. {
  4548. oracleTrConn.Connect();
  4549. OracleParameter[] Paras = null;
  4550. StringBuilder sbSql = new StringBuilder();
  4551. int GMouldRecordID = 0;
  4552. bool isError = false;
  4553. if (dtGroutingLineDetail.Rows.Count > 0)
  4554. {
  4555. // 更新成型线UpdateUserID
  4556. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  4557. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4558. // 更新成型线UpdateUserID
  4559. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  4560. Paras = new OracleParameter[] {
  4561. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4562. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  4563. };
  4564. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4565. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4566. if (row == 0)
  4567. {
  4568. oracleTrConn.Rollback();
  4569. oracleTrConn.Disconnect();
  4570. return returnRows = -500;
  4571. }
  4572. }
  4573. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  4574. List<int> mouldIDs = new List<int>();
  4575. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  4576. {
  4577. sbSql.Clear();
  4578. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  4579. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
  4580. sbSql.Clear();
  4581. // 1.插入变更履历
  4582. sbSql.Append("insert into TP_PC_GMouldRecord");
  4583. sbSql.Append("(GMouldRecordID,");
  4584. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  4585. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  4586. sbSql.Append("GMouldRecordType,BeginDate,");
  4587. sbSql.Append("Remarks,AccountID,CreateTime,");
  4588. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  4589. sbSql.Append(")");
  4590. sbSql.Append("select :GMouldRecordID,");
  4591. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  4592. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  4593. sbSql.Append(":GMouldRecordType,trunc(sysdate),");
  4594. sbSql.Append(":Remarks,:AccountID,sysdate,");
  4595. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
  4596. sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
  4597. Paras = new OracleParameter[] {
  4598. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  4599. 5,ParameterDirection.Input),
  4600. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4601. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4602. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  4603. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  4604. new OracleParameter(":AccountID",OracleDbType.Int32,
  4605. user.AccountID,ParameterDirection.Input),
  4606. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4607. user.UserID,ParameterDirection.Input),
  4608. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4609. user.UserID,ParameterDirection.Input),
  4610. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  4611. GMouldRecordID,ParameterDirection.Input)
  4612. };
  4613. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4614. //2.更新成型线模具状态
  4615. sbSql.Clear();
  4616. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=4,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, ");
  4617. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  4618. Paras = new OracleParameter[] {
  4619. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  4620. GMouldRecordID,ParameterDirection.Input),
  4621. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4622. user.UserID,ParameterDirection.Input),
  4623. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4624. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4625. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4626. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  4627. };
  4628. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4629. if (row == 0)
  4630. {
  4631. isError = true; //即更新了,也可以用这个判断时间戳
  4632. break;
  4633. }
  4634. returnRows += row;
  4635. // 非条码模具
  4636. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  4637. {
  4638. continue;
  4639. }
  4640. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  4641. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  4642. //object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  4643. //if (mOutputNo != null && mOutputNo != DBNull.Value)
  4644. //{
  4645. // string sql = "UPDATE tp_pc_mouldoutput m\n" +
  4646. // " SET m.GroutingLineDetailID = null\n" +
  4647. // " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  4648. // OracleParameter[] oparas = new OracleParameter[]
  4649. // {
  4650. // new OracleParameter(":OutputNo", OracleDbType.Int32,
  4651. // mOutputNo, ParameterDirection.Input),
  4652. // new OracleParameter(":mouldid", OracleDbType.Int32,
  4653. // mID, ParameterDirection.Input),
  4654. // };
  4655. // row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  4656. //}
  4657. if (mouldIDs.Contains(mID))
  4658. {
  4659. continue;
  4660. }
  4661. mouldIDs.Add(mID);
  4662. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  4663. if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
  4664. {
  4665. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  4666. " SET m.GroutingLineDetailID = null\n" +
  4667. " WHERE m.mouldid = :mouldid\n";
  4668. //" and m.OutputNo=:OutputNo";
  4669. OracleParameter[] oparas = new OracleParameter[]
  4670. {
  4671. //new OracleParameter(":OutputNo", OracleDbType.Int32,
  4672. // mOutputNo, ParameterDirection.Input),
  4673. new OracleParameter(":mouldid", OracleDbType.Int32,
  4674. mID, ParameterDirection.Input),
  4675. };
  4676. row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  4677. }
  4678. // 添加模具履历
  4679. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  4680. string sqlString =
  4681. "INSERT INTO tp_pc_mouldchangehistory\n" +
  4682. " (CHANGEID\n" +
  4683. " ,MOULDID\n" +
  4684. " ,MOULDCODE\n" +
  4685. " ,MOULDBARCODE\n" +
  4686. " ,GOODSID\n" +
  4687. " ,GOODSCODE\n" +
  4688. " ,OPERATIONTYPE\n" +
  4689. " ,GroutingLineDetailID\n" +
  4690. " ,MOULDSTATUS\n" +
  4691. " ,MOULDSTATUSAFTER\n" +
  4692. " ,GROUTINGNUM\n" +
  4693. " ,REMARKS\n" +
  4694. " ,CHANGEFLAG\n" +
  4695. " ,ScrapReason\n" +
  4696. " ,ScrapResponsibility\n" +
  4697. " ,ACCOUNTID\n" +
  4698. " ,CREATEUSERID)\n" +
  4699. " SELECT :changeID\n" +
  4700. " ,:MouldID\n" +
  4701. " ,:MOULDCODE\n" +
  4702. " ,m.mouldbarcode\n" +
  4703. " ,m.goodsid\n" +
  4704. " ,m.goodscode\n" +
  4705. " ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
  4706. " ,m.GroutingLineDetailID\n" +
  4707. " ,m.mouldstatus\n" +
  4708. " ,:mouldstatus\n" +
  4709. " ,m.groutingnum\n" +
  4710. " ,:REMARKS\n" +
  4711. " ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
  4712. " ,:ScrapReason\n" +
  4713. " ,:ScrapResponsibility\n" +
  4714. " ,:ACCOUNTID\n" +
  4715. " ,:USERID\n" +
  4716. " FROM tp_pc_mould m\n" +
  4717. " WHERE m.mouldid = :MouldID";
  4718. OracleParameter[] paras = new OracleParameter[]
  4719. {
  4720. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  4721. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  4722. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  4723. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  4724. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  4725. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  4726. new OracleParameter(":changeID", OracleDbType.Int32,
  4727. mouldHistoryID, ParameterDirection.Input),
  4728. new OracleParameter(":MouldID", OracleDbType.Int32,
  4729. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4730. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  4731. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  4732. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  4733. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  4734. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  4735. user.AccountID, ParameterDirection.Input),
  4736. new OracleParameter(":USERID", OracleDbType.Int32,
  4737. user.UserID, ParameterDirection.Input),
  4738. };
  4739. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4740. // 修改模具状态
  4741. sqlString = "UPDATE tp_pc_mould m\n" +
  4742. " SET m.premouldstatus = m.mouldstatus\n" +
  4743. " ,m.mouldstatus = :mouldstatus\n" +
  4744. " ,m.updateuserid = :userid\n" +
  4745. " ,m.lastchangehistoryid = :changeid\n" +
  4746. " ,m.GroutingLineDetailID = null\n" +
  4747. " ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
  4748. " ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
  4749. " ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
  4750. " ,m.ScrapReason = :ScrapReason\n" +
  4751. " ,m.ScrapResponsibility = :ScrapResponsibility\n" +
  4752. " WHERE m.mouldid = :mouldid";
  4753. paras = new OracleParameter[]
  4754. {
  4755. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  4756. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  4757. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  4758. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  4759. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  4760. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  4761. new OracleParameter(":changeid", OracleDbType.Int32,
  4762. mouldHistoryID, ParameterDirection.Input),
  4763. new OracleParameter(":userid", OracleDbType.Int32,
  4764. user.UserID, ParameterDirection.Input),
  4765. new OracleParameter(":usercode", OracleDbType.NVarchar2,
  4766. user.UserCode, ParameterDirection.Input),
  4767. new OracleParameter(":mouldid", OracleDbType.Int32,
  4768. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  4769. };
  4770. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  4771. }
  4772. //更新明细信息
  4773. if (isError)
  4774. {
  4775. returnRows = -500;
  4776. oracleTrConn.Rollback();
  4777. oracleTrConn.Disconnect();
  4778. }
  4779. else
  4780. {
  4781. oracleTrConn.Commit();
  4782. oracleTrConn.Disconnect();
  4783. }
  4784. }
  4785. catch (Exception ex)
  4786. {
  4787. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4788. {
  4789. oracleTrConn.Rollback();
  4790. oracleTrConn.Disconnect();
  4791. }
  4792. throw ex;
  4793. }
  4794. finally
  4795. {
  4796. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4797. {
  4798. oracleTrConn.Disconnect();
  4799. }
  4800. }
  4801. return returnRows;
  4802. }
  4803. /// <summary>
  4804. /// 变产结束
  4805. /// </summary>
  4806. /// <param name="dtGroutingLineDetail">明细实体</param>
  4807. /// <param name="goodsID">变产产品ID</param>
  4808. /// <param name="user">用户基本信息</param>
  4809. /// <returns>int受影响行数</returns>
  4810. /// <remarks>
  4811. ///
  4812. /// </remarks>
  4813. public static ServiceResultEntity UpdateLineEndGroutingLineDetail(DataTable dtGroutingLineDetail, int goodsID, SUserInfo user)
  4814. {
  4815. ServiceResultEntity sre = new ServiceResultEntity();
  4816. int returnRows = 0;
  4817. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4818. try
  4819. {
  4820. oracleTrConn.Connect();
  4821. // 验证模具条码
  4822. DataRow[] moulds = dtGroutingLineDetail.Select("MouldID is not null");
  4823. if (moulds != null && moulds.Length > 0)
  4824. {
  4825. List<string> ids = new List<string>();
  4826. foreach (DataRow item in moulds)
  4827. {
  4828. string id = item["MouldID"].ToString();
  4829. if (!ids.Contains(id))
  4830. {
  4831. ids.Add(id);
  4832. }
  4833. }
  4834. string idswhere = string.Join(",", ids);
  4835. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  4836. oracleTrConn.GetSqlResultToDt(sql);
  4837. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  4838. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  4839. if (dt != null && dt.Rows.Count > 0)
  4840. {
  4841. ids.Clear();
  4842. foreach (DataRow item in dt.Rows)
  4843. {
  4844. ids.Add(item["mouldbarcode"].ToString());
  4845. }
  4846. sre.Status = Constant.ServiceResultStatus.Other;
  4847. sre.OtherStatus = -100;
  4848. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  4849. + string.Join(",", ids);
  4850. return sre;
  4851. }
  4852. }
  4853. OracleParameter[] Paras = null;
  4854. StringBuilder sbSql = new StringBuilder();
  4855. bool isError = false;
  4856. if (dtGroutingLineDetail.Rows.Count > 0)
  4857. {
  4858. // 更新成型线UpdateUserID
  4859. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  4860. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4861. // 更新成型线UpdateUserID
  4862. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  4863. Paras = new OracleParameter[] {
  4864. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4865. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  4866. };
  4867. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  4868. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4869. if (row == 0)
  4870. {
  4871. oracleTrConn.Rollback();
  4872. oracleTrConn.Disconnect();
  4873. sre.Status = Constant.ServiceResultStatus.Other;
  4874. sre.OtherStatus = -500;
  4875. return sre;
  4876. }
  4877. }
  4878. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  4879. List<int> mouldIDs = new List<int>();
  4880. int? GroutingLineDetailID = null;
  4881. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  4882. {
  4883. sbSql.Clear();
  4884. sbSql.Append("update TP_PC_GroutingLineDetail set valueflag='0', UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and valueflag='1' and GMouldStatus=4");
  4885. Paras = new OracleParameter[] {
  4886. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4887. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4888. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4889. user.UserID,ParameterDirection.Input),
  4890. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  4891. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  4892. };
  4893. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  4894. if (row == 0)
  4895. {
  4896. isError = true; //即更新了,也可以用这个判断时间戳
  4897. break;
  4898. }
  4899. returnRows += row;
  4900. //1查出注浆明细最后变更履历ID,进行更新
  4901. sbSql.Clear();
  4902. sbSql.Append("select nvl(LastGMouldRecordID,0) as LastGMouldRecordID from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  4903. Paras = new OracleParameter[] {
  4904. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4905. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input)
  4906. };
  4907. DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  4908. int? LastGMouldRecordID = null;
  4909. if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
  4910. {
  4911. LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
  4912. }
  4913. // 插入新明细
  4914. sbSql.Clear();
  4915. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  4916. GroutingLineDetailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  4917. if (dtGroutingLineDetail.Rows[i]["MouldCode"] + "" == "")
  4918. {
  4919. dtGroutingLineDetail.Rows[i]["MouldCode"] = System.Guid.NewGuid().ToString();
  4920. }
  4921. //string guid = System.Guid.NewGuid().ToString();
  4922. sbSql.Clear();
  4923. sbSql.Append("insert into TP_PC_GroutingLineDetail");
  4924. sbSql.Append("(");
  4925. sbSql.Append("GroutingLineDetailID");
  4926. sbSql.Append(",GroutingLineID");
  4927. sbSql.Append(",GroutingMouldCode");
  4928. sbSql.Append(",MouldSource");
  4929. sbSql.Append(",MouldID");
  4930. sbSql.Append(",MouldCode");
  4931. sbSql.Append(",MouldOutputNo");
  4932. sbSql.Append(",GoodsID");
  4933. sbSql.Append(",StandardGroutingCount");
  4934. sbSql.Append(",GroutingCount");
  4935. sbSql.Append(",GMouldStatus");
  4936. sbSql.Append(",BeginUsedDate");
  4937. sbSql.Append(",EndUsedDate");
  4938. sbSql.Append(",LastGMouldRecordID");
  4939. sbSql.Append(",Remarks");
  4940. sbSql.Append(",AccountID");
  4941. sbSql.Append(",ValueFlag");
  4942. sbSql.Append(",CreateUserID");
  4943. sbSql.Append(",UpdateUserID");
  4944. sbSql.Append(") ");
  4945. //sbSql.Append("select");
  4946. sbSql.Append("Values (");
  4947. sbSql.Append(" :GroutingLineDetailIDNew");
  4948. sbSql.Append(",:GroutingLineID");
  4949. sbSql.Append(",:GroutingMouldCode");
  4950. sbSql.Append(",:MouldSource");
  4951. sbSql.Append(",:MouldID");
  4952. sbSql.Append(",:MouldCode");
  4953. sbSql.Append(",:MouldOutputNo");
  4954. sbSql.Append(",:GoodsID");
  4955. sbSql.Append(",:StandardGroutingCount");
  4956. sbSql.Append(",:GroutingCount");
  4957. sbSql.Append(",1");
  4958. sbSql.Append(",trunc(sysdate)");
  4959. sbSql.Append(",null");
  4960. sbSql.Append(",:LastGMouldRecordID");
  4961. sbSql.Append(",:Remarks");
  4962. sbSql.Append(",:AccountID");
  4963. sbSql.Append(",1");
  4964. sbSql.Append(",:CreateUserID");
  4965. sbSql.Append(",:UpdateUserID");
  4966. sbSql.Append(" )");
  4967. //sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID");
  4968. Paras = new OracleParameter[] {
  4969. new OracleParameter(":GroutingLineDetailIDNew",OracleDbType.Int32,
  4970. GroutingLineDetailID,ParameterDirection.Input),
  4971. //new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  4972. // dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  4973. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  4974. dtGroutingLineDetail.Rows[i]["GroutingLineID"],ParameterDirection.Input),
  4975. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  4976. dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
  4977. //new OracleParameter(":GoodsID",OracleDbType.Int32,
  4978. // goodsID,ParameterDirection.Input),
  4979. new OracleParameter(":GoodsID",OracleDbType.Int32,
  4980. dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
  4981. new OracleParameter(":AccountID",OracleDbType.Int32,
  4982. user.AccountID,ParameterDirection.Input),
  4983. new OracleParameter(":MouldSource",OracleDbType.Char,
  4984. dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
  4985. new OracleParameter(":MouldID",OracleDbType.Int32,
  4986. dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
  4987. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  4988. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  4989. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  4990. dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
  4991. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  4992. dtGroutingLineDetail.Rows[i]["RREASONRemarks"],ParameterDirection.Input),
  4993. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4994. user.UserID,ParameterDirection.Input),
  4995. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4996. user.UserID,ParameterDirection.Input),
  4997. new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
  4998. dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
  4999. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  5000. dtGroutingLineDetail.Rows[i]["GroutingCount"],ParameterDirection.Input),
  5001. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  5002. //dtGroutingLineDetail.Rows[i]["LastGMouldRecordID"],ParameterDirection.Input),
  5003. LastGMouldRecordID,ParameterDirection.Input),
  5004. };
  5005. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5006. sbSql.Clear();
  5007. sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID,ChangedMouldCode=:ChangedMouldCode,ChangedGoodsID=:GoodsID,ChangedDetailID=:GroutingLineDetailID where GMouldRecordID=:GMouldRecordID");
  5008. Paras = new OracleParameter[] {
  5009. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  5010. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  5011. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5012. user.UserID,ParameterDirection.Input),
  5013. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  5014. LastGMouldRecordID,ParameterDirection.Input),
  5015. new OracleParameter(":ChangedMouldCode",OracleDbType.Varchar2,
  5016. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  5017. new OracleParameter(":GoodsID",OracleDbType.Int32,
  5018. dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
  5019. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5020. GroutingLineDetailID,ParameterDirection.Input),
  5021. };
  5022. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5023. // 非条码模具
  5024. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  5025. {
  5026. continue;
  5027. }
  5028. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  5029. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  5030. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5031. if (mOutputNo != null && mOutputNo != DBNull.Value)
  5032. {
  5033. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5034. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  5035. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  5036. OracleParameter[] oparas = new OracleParameter[]
  5037. {
  5038. new OracleParameter(":OutputNo", OracleDbType.Int32,
  5039. mOutputNo, ParameterDirection.Input),
  5040. new OracleParameter(":mouldid", OracleDbType.Int32,
  5041. mID, ParameterDirection.Input),
  5042. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5043. GroutingLineDetailID, ParameterDirection.Input),
  5044. };
  5045. returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5046. }
  5047. if (mouldIDs.Contains(mID))
  5048. {
  5049. continue;
  5050. }
  5051. mouldIDs.Add(mID);
  5052. // 添加模具履历
  5053. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  5054. string sqlString =
  5055. "INSERT INTO tp_pc_mouldchangehistory\n" +
  5056. " (CHANGEID\n" +
  5057. " ,MOULDID\n" +
  5058. " ,MOULDCODE\n" +
  5059. " ,MOULDBARCODE\n" +
  5060. " ,GOODSID\n" +
  5061. " ,GOODSCODE\n" +
  5062. " ,OPERATIONTYPE\n" +
  5063. " ,GroutingLineDetailID\n" +
  5064. " ,MOULDSTATUS\n" +
  5065. " ,MOULDSTATUSAFTER\n" +
  5066. " ,GROUTINGNUM\n" +
  5067. " ,REMARKS\n" +
  5068. " ,CHANGEFLAG\n" +
  5069. " ,ACCOUNTID\n" +
  5070. " ,CREATEUSERID)\n" +
  5071. " SELECT :changeID\n" +
  5072. " ,:mouldid\n" +
  5073. " ,:MOULDCODE\n" +
  5074. " ,m.mouldbarcode\n" +
  5075. " ,m.goodsid\n" +
  5076. " ,m.goodscode\n" +
  5077. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  5078. " ,:GroutingLineDetailID\n" +
  5079. " ,m.mouldstatus\n" +
  5080. " ,2\n" +
  5081. " ,m.groutingnum\n" +
  5082. " ,:REMARKS\n" +
  5083. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  5084. " ,:ACCOUNTID\n" +
  5085. " ,:USERID\n" +
  5086. " FROM tp_pc_mould m\n" +
  5087. " WHERE m.mouldid = :mouldid";
  5088. OracleParameter[] paras = new OracleParameter[]
  5089. {
  5090. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5091. GroutingLineDetailID, ParameterDirection.Input),
  5092. new OracleParameter(":changeID", OracleDbType.Int32,
  5093. mouldHistoryID, ParameterDirection.Input),
  5094. new OracleParameter(":MouldID", OracleDbType.Int32,
  5095. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5096. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  5097. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  5098. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  5099. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  5100. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  5101. user.AccountID, ParameterDirection.Input),
  5102. new OracleParameter(":USERID", OracleDbType.Int32,
  5103. user.UserID, ParameterDirection.Input),
  5104. };
  5105. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5106. // 修改模具状态
  5107. sqlString = "UPDATE tp_pc_mould m\n" +
  5108. " SET m.premouldstatus = m.mouldstatus\n" +
  5109. " ,m.mouldstatus = :mouldstatus\n" +
  5110. " ,m.updateuserid = :userid\n" +
  5111. " ,m.lastchangehistoryid = :changeid\n" +
  5112. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  5113. " WHERE m.mouldid = :mouldid";
  5114. paras = new OracleParameter[]
  5115. {
  5116. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5117. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  5118. new OracleParameter(":changeid", OracleDbType.Int32,
  5119. mouldHistoryID, ParameterDirection.Input),
  5120. new OracleParameter(":userid", OracleDbType.Int32,
  5121. user.UserID, ParameterDirection.Input),
  5122. new OracleParameter(":mouldid", OracleDbType.Int32,
  5123. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5124. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5125. GroutingLineDetailID, ParameterDirection.Input),
  5126. };
  5127. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5128. }
  5129. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  5130. string sqlUpdate = "update TP_PC_GROUTINGLINE l " +
  5131. " set l.beginuseddate =" +
  5132. " (select min(ld.beginuseddate)" +
  5133. " from TP_PC_GROUTINGLINEDETAIL ld" +
  5134. " where ld.groutinglineid = l.groutinglineid" +
  5135. " and ld.valueflag = '1')" +
  5136. " where l.groutinglineid = " + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
  5137. oracleTrConn.ExecuteNonQuery(sqlUpdate, null);
  5138. //更新明细信息
  5139. if (isError)
  5140. {
  5141. sre.Status = Constant.ServiceResultStatus.Other;
  5142. sre.OtherStatus = -500;
  5143. oracleTrConn.Rollback();
  5144. oracleTrConn.Disconnect();
  5145. }
  5146. else
  5147. {
  5148. oracleTrConn.Commit();
  5149. oracleTrConn.Disconnect();
  5150. }
  5151. }
  5152. catch (Exception ex)
  5153. {
  5154. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5155. {
  5156. oracleTrConn.Rollback();
  5157. oracleTrConn.Disconnect();
  5158. }
  5159. throw ex;
  5160. }
  5161. finally
  5162. {
  5163. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5164. {
  5165. oracleTrConn.Disconnect();
  5166. }
  5167. }
  5168. return sre;
  5169. }
  5170. /// <summary>
  5171. /// 整线变产开始
  5172. /// </summary>
  5173. /// <param name="dtGroutingLineDetail">明细实体</param>
  5174. /// <param name="user">用户基本信息</param>
  5175. /// <returns>int受影响行数</returns>
  5176. /// <remarks>
  5177. ///
  5178. /// </remarks>
  5179. public static int UpdateAllLineStartGroutingLineDetail(DataTable dtGroutingLineDetail,
  5180. int groutingLineID, DateTime lineOPTimeStamp, SUserInfo user)
  5181. {
  5182. int returnRows = 0;
  5183. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5184. try
  5185. {
  5186. oracleTrConn.Connect();
  5187. OracleParameter[] Paras = null;
  5188. StringBuilder sbSql = new StringBuilder();
  5189. int GMouldRecordID = 0;
  5190. bool isError = false;
  5191. // 更新成型线UpdateUserID
  5192. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + ",GMouldStatus=4 where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  5193. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  5194. // 更新成型线UpdateUserID
  5195. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + ",GMouldStatus=4,ENDUSEDDATE=trunc(sysdate) where GroutingLineID=" + groutingLineID + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  5196. Paras = new OracleParameter[] {
  5197. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5198. lineOPTimeStamp,ParameterDirection.Input)
  5199. };
  5200. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  5201. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5202. if (row == 0)
  5203. {
  5204. oracleTrConn.Rollback();
  5205. oracleTrConn.Disconnect();
  5206. return returnRows = -500;
  5207. }
  5208. sbSql.Clear();
  5209. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  5210. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));//变更履历
  5211. sbSql.Clear();
  5212. // 1.插入变更履历
  5213. sbSql.Append("insert into TP_PC_GMouldRecord");
  5214. sbSql.Append("(GMouldRecordID,");
  5215. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  5216. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  5217. sbSql.Append("GMouldRecordType,BeginDate,");
  5218. sbSql.Append("Remarks,AccountID,CreateTime,");
  5219. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  5220. sbSql.Append(")");
  5221. sbSql.Append(" values (:GMouldRecordID,");
  5222. sbSql.Append(":GroutingLineID,null,null,");
  5223. sbSql.Append("null,null,null,");
  5224. sbSql.Append(":GMouldRecordType,trunc(sysdate),");
  5225. sbSql.Append(":Remarks,:AccountID,sysdate,");
  5226. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID)");
  5227. // sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineID=:GroutingLineID ");
  5228. Paras = new OracleParameter[] {
  5229. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  5230. 6,ParameterDirection.Input),
  5231. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  5232. groutingLineID,ParameterDirection.Input),
  5233. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  5234. (dtGroutingLineDetail.Rows.Count > 0 ? dtGroutingLineDetail.Rows[0]["RecordRemarks"].ToString() : "[整线变产]")
  5235. ,ParameterDirection.Input),//0没有写i,是因为整体变产,只在第一行添加了操作备注
  5236. new OracleParameter(":AccountID",OracleDbType.Int32,
  5237. user.AccountID,ParameterDirection.Input),
  5238. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  5239. user.UserID,ParameterDirection.Input),
  5240. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5241. user.UserID,ParameterDirection.Input),
  5242. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  5243. GMouldRecordID,ParameterDirection.Input)
  5244. };
  5245. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5246. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  5247. List<int> mouldIDs = new List<int>();
  5248. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  5249. {
  5250. //2.更新成型线模具状态
  5251. sbSql.Clear();
  5252. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=4,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, ");
  5253. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus in (0,1)");
  5254. Paras = new OracleParameter[] {
  5255. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  5256. GMouldRecordID,ParameterDirection.Input),
  5257. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5258. user.UserID,ParameterDirection.Input),
  5259. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5260. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  5261. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5262. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  5263. };
  5264. row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5265. if (row == 0)
  5266. {
  5267. isError = true; //即更新了,也可以用这个判断时间戳
  5268. break;
  5269. }
  5270. returnRows += row;
  5271. // 非条码模具
  5272. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  5273. {
  5274. continue;
  5275. }
  5276. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  5277. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  5278. //object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5279. //if (mOutputNo != null && mOutputNo != DBNull.Value)
  5280. //{
  5281. // string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5282. // " SET m.GroutingLineDetailID = null\n" +
  5283. // " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  5284. // OracleParameter[] oparas = new OracleParameter[]
  5285. // {
  5286. // new OracleParameter(":OutputNo", OracleDbType.Int32,
  5287. // mOutputNo, ParameterDirection.Input),
  5288. // new OracleParameter(":mouldid", OracleDbType.Int32,
  5289. // mID, ParameterDirection.Input),
  5290. // };
  5291. // row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5292. //}
  5293. if (mouldIDs.Contains(mID))
  5294. {
  5295. continue;
  5296. }
  5297. mouldIDs.Add(mID);
  5298. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5299. if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
  5300. {
  5301. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5302. " SET m.GroutingLineDetailID = null\n" +
  5303. " WHERE m.mouldid = :mouldid\n";
  5304. //" and m.OutputNo=:OutputNo";
  5305. OracleParameter[] oparas = new OracleParameter[]
  5306. {
  5307. //new OracleParameter(":OutputNo", OracleDbType.Int32,
  5308. // mOutputNo, ParameterDirection.Input),
  5309. new OracleParameter(":mouldid", OracleDbType.Int32,
  5310. mID, ParameterDirection.Input),
  5311. };
  5312. row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5313. }
  5314. // 添加模具履历
  5315. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  5316. string sqlString =
  5317. "INSERT INTO tp_pc_mouldchangehistory\n" +
  5318. " (CHANGEID\n" +
  5319. " ,MOULDID\n" +
  5320. " ,MOULDCODE\n" +
  5321. " ,MOULDBARCODE\n" +
  5322. " ,GOODSID\n" +
  5323. " ,GOODSCODE\n" +
  5324. " ,OPERATIONTYPE\n" +
  5325. " ,GroutingLineDetailID\n" +
  5326. " ,MOULDSTATUS\n" +
  5327. " ,MOULDSTATUSAFTER\n" +
  5328. " ,GROUTINGNUM\n" +
  5329. " ,REMARKS\n" +
  5330. " ,CHANGEFLAG\n" +
  5331. " ,ScrapReason\n" +
  5332. " ,ScrapResponsibility\n" +
  5333. " ,ACCOUNTID\n" +
  5334. " ,CREATEUSERID)\n" +
  5335. " SELECT :changeID\n" +
  5336. " ,:MouldID\n" +
  5337. " ,:MOULDCODE\n" +
  5338. " ,m.mouldbarcode\n" +
  5339. " ,m.goodsid\n" +
  5340. " ,m.goodscode\n" +
  5341. " ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
  5342. " ,m.GroutingLineDetailID\n" +
  5343. " ,m.mouldstatus\n" +
  5344. " ,:mouldstatus\n" +
  5345. " ,m.groutingnum\n" +
  5346. " ,:REMARKS\n" +
  5347. " ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
  5348. " ,:ScrapReason\n" +
  5349. " ,:ScrapResponsibility\n" +
  5350. " ,:ACCOUNTID\n" +
  5351. " ,:USERID\n" +
  5352. " FROM tp_pc_mould m\n" +
  5353. " WHERE m.mouldid = :MouldID";
  5354. OracleParameter[] paras = new OracleParameter[]
  5355. {
  5356. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5357. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  5358. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  5359. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  5360. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  5361. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  5362. new OracleParameter(":changeID", OracleDbType.Int32,
  5363. mouldHistoryID, ParameterDirection.Input),
  5364. new OracleParameter(":MouldID", OracleDbType.Int32,
  5365. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5366. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  5367. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  5368. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  5369. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  5370. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  5371. user.AccountID, ParameterDirection.Input),
  5372. new OracleParameter(":USERID", OracleDbType.Int32,
  5373. user.UserID, ParameterDirection.Input),
  5374. };
  5375. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5376. // 修改模具状态
  5377. sqlString = "UPDATE tp_pc_mould m\n" +
  5378. " SET m.premouldstatus = m.mouldstatus\n" +
  5379. " ,m.mouldstatus = :mouldstatus\n" +
  5380. " ,m.updateuserid = :userid\n" +
  5381. " ,m.lastchangehistoryid = :changeid\n" +
  5382. " ,m.GroutingLineDetailID = null\n" +
  5383. " ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
  5384. " ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
  5385. " ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
  5386. " ,m.ScrapReason = :ScrapReason\n" +
  5387. " ,m.ScrapResponsibility = :ScrapResponsibility\n" +
  5388. " WHERE m.mouldid = :mouldid";
  5389. paras = new OracleParameter[]
  5390. {
  5391. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5392. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  5393. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  5394. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  5395. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  5396. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  5397. new OracleParameter(":changeid", OracleDbType.Int32,
  5398. mouldHistoryID, ParameterDirection.Input),
  5399. new OracleParameter(":userid", OracleDbType.Int32,
  5400. user.UserID, ParameterDirection.Input),
  5401. new OracleParameter(":usercode", OracleDbType.NVarchar2,
  5402. user.UserCode, ParameterDirection.Input),
  5403. new OracleParameter(":mouldid", OracleDbType.Int32,
  5404. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5405. };
  5406. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5407. }
  5408. //更新明细信息
  5409. if (isError)
  5410. {
  5411. returnRows = -500;
  5412. oracleTrConn.Rollback();
  5413. oracleTrConn.Disconnect();
  5414. }
  5415. else
  5416. {
  5417. oracleTrConn.Commit();
  5418. oracleTrConn.Disconnect();
  5419. }
  5420. }
  5421. catch (Exception ex)
  5422. {
  5423. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5424. {
  5425. oracleTrConn.Rollback();
  5426. oracleTrConn.Disconnect();
  5427. }
  5428. throw ex;
  5429. }
  5430. return returnRows;
  5431. }
  5432. /// <summary>
  5433. /// 整线变产结束
  5434. /// </summary>
  5435. /// <param name="dtGroutingLineDetail">明细实体</param>
  5436. /// <param name="goodsID">变产产品ID</param>
  5437. /// <param name="user">用户基本信息</param>
  5438. /// <returns>int受影响行数</returns>
  5439. /// <remarks>
  5440. ///
  5441. /// </remarks>
  5442. public static ServiceResultEntity UpdateAllLineEndGroutingLineDetail(DataTable dtGroutingLineDetail,
  5443. DataTable oldDetail, int groutingLineID, DateTime lineOPTimeStamp, SUserInfo user)
  5444. {
  5445. ServiceResultEntity sre = new ServiceResultEntity();
  5446. int returnRows = 0;
  5447. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5448. try
  5449. {
  5450. oracleTrConn.Connect();
  5451. int MouldQuantity = 0;
  5452. if (dtGroutingLineDetail != null)
  5453. {
  5454. MouldQuantity = dtGroutingLineDetail.Rows.Count;
  5455. // 验证模具条码
  5456. DataRow[] moulds = dtGroutingLineDetail.Select("MouldID is not null");
  5457. if (moulds != null && moulds.Length > 0)
  5458. {
  5459. List<string> ids = new List<string>();
  5460. foreach (DataRow item in moulds)
  5461. {
  5462. string id = item["MouldID"].ToString();
  5463. if (!ids.Contains(id))
  5464. {
  5465. ids.Add(id);
  5466. }
  5467. }
  5468. string idswhere = string.Join(",", ids);
  5469. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  5470. oracleTrConn.GetSqlResultToDt(sql);
  5471. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  5472. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  5473. if (dt != null && dt.Rows.Count > 0)
  5474. {
  5475. ids.Clear();
  5476. foreach (DataRow item in dt.Rows)
  5477. {
  5478. ids.Add(item["mouldbarcode"].ToString());
  5479. }
  5480. sre.Status = Constant.ServiceResultStatus.Other;
  5481. sre.OtherStatus = -100;
  5482. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  5483. + string.Join(",", ids);
  5484. return sre;
  5485. }
  5486. }
  5487. }
  5488. OracleParameter[] Paras = null;
  5489. StringBuilder sbSql = new StringBuilder();
  5490. bool isError = false;
  5491. //DataRow[] drMouldQuantity = dtGroutingLineDetail.Select("NewFlag=1");
  5492. //if(drMouldQuantity.Length>0)
  5493. //{
  5494. // MouldQuantity = drMouldQuantity.Length;
  5495. //}
  5496. // 更新成型线UpdateUserID
  5497. 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");
  5498. Paras = new OracleParameter[] {
  5499. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5500. lineOPTimeStamp,ParameterDirection.Input)
  5501. };
  5502. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5503. if (row == 0)
  5504. {
  5505. oracleTrConn.Rollback();
  5506. oracleTrConn.Disconnect();
  5507. sre.Status = Constant.ServiceResultStatus.Other;
  5508. sre.OtherStatus = -500;
  5509. return sre;
  5510. }
  5511. //for (int i = 0; i < oldDetail.Rows.Count; i++)
  5512. //{
  5513. // sbSql.Clear();
  5514. // sbSql.Append("update TP_PC_GroutingLineDetail set valueflag=0, UpdateUserID=:UpdateUserID where GroutingLineDetailID=:GroutingLineDetailID");
  5515. // Paras = new OracleParameter[] {
  5516. // new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5517. // oldDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  5518. // new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5519. // user.UserID,ParameterDirection.Input)
  5520. // };
  5521. // returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5522. //}
  5523. sbSql.Clear();
  5524. sbSql.Append("update TP_PC_GroutingLineDetail set valueflag='0', UpdateUserID=:UpdateUserID where GroutingLineID=:GroutingLineID and valueflag='1' and GMouldStatus=4");
  5525. Paras = new OracleParameter[] {
  5526. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  5527. groutingLineID,ParameterDirection.Input),
  5528. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5529. user.UserID,ParameterDirection.Input)
  5530. };
  5531. row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5532. // 无模具明细,结束变产
  5533. //if (row == 0)
  5534. //{
  5535. // oracleTrConn.Rollback();
  5536. // oracleTrConn.Disconnect();
  5537. // sre.Status = Constant.ServiceResultStatus.Other;
  5538. // sre.OtherStatus = -500;
  5539. // return sre;
  5540. //}
  5541. //1查出注浆明细最后变更履历ID,进行更新
  5542. sbSql.Clear();
  5543. sbSql.Append("select nvl(max(GMouldRecordID),0) as LastGMouldRecordID from TP_PC_GMouldRecord where GroutingLineID=:GroutingLineID and GroutingLineDetailID is null");
  5544. Paras = new OracleParameter[] {
  5545. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  5546. groutingLineID,ParameterDirection.Input)
  5547. };
  5548. DataSet dsInfo = oracleTrConn.GetSqlResultToDs(sbSql.ToString(), Paras);
  5549. int? LastGMouldRecordID = null;
  5550. if (dsInfo != null && dsInfo.Tables[0].Rows.Count > 0)
  5551. {
  5552. LastGMouldRecordID = Convert.ToInt32(dsInfo.Tables[0].Rows[0]["LastGMouldRecordID"]);
  5553. }
  5554. sbSql.Clear();
  5555. sbSql.Append("Update TP_PC_GMouldRecord set EndDate=trunc(sysdate),Remarks=:Remarks,UpdateUserID=:UpdateUserID where GMouldRecordID=:GMouldRecordID");
  5556. Paras = new OracleParameter[] {
  5557. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  5558. //"[结束整线变产]"
  5559. ((dtGroutingLineDetail != null && dtGroutingLineDetail.Rows.Count > 0) ? dtGroutingLineDetail.Rows[0]["RecordRemarks"].ToString() : "[结束整线变产]")
  5560. ,ParameterDirection.Input),
  5561. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5562. user.UserID,ParameterDirection.Input),
  5563. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  5564. LastGMouldRecordID,ParameterDirection.Input),
  5565. };
  5566. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5567. int? GroutingLineDetailID = null;
  5568. if (dtGroutingLineDetail != null)
  5569. {
  5570. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  5571. List<int> mouldIDs = new List<int>();
  5572. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  5573. {
  5574. // 插入新明细
  5575. sbSql.Clear();
  5576. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  5577. GroutingLineDetailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  5578. if (dtGroutingLineDetail.Rows[i]["MouldCode"] + "" == "")
  5579. {
  5580. dtGroutingLineDetail.Rows[i]["MouldCode"] = System.Guid.NewGuid().ToString();
  5581. }
  5582. //string guid = System.Guid.NewGuid().ToString();
  5583. sbSql.Clear();
  5584. sbSql.Append("insert into TP_PC_GroutingLineDetail");
  5585. sbSql.Append("(");
  5586. sbSql.Append("GroutingLineDetailID");
  5587. sbSql.Append(",GroutingLineID");
  5588. sbSql.Append(",GroutingMouldCode");
  5589. sbSql.Append(",MouldSource");
  5590. sbSql.Append(",MouldID");
  5591. sbSql.Append(",MouldCode");
  5592. sbSql.Append(",MouldOutputNo");
  5593. sbSql.Append(",GoodsID");
  5594. sbSql.Append(",StandardGroutingCount");
  5595. sbSql.Append(",GroutingCount");
  5596. sbSql.Append(",GMouldStatus");
  5597. sbSql.Append(",BeginUsedDate");
  5598. sbSql.Append(",EndUsedDate");
  5599. sbSql.Append(",LastGMouldRecordID");
  5600. sbSql.Append(",Remarks");
  5601. sbSql.Append(",AccountID");
  5602. sbSql.Append(",ValueFlag");
  5603. sbSql.Append(",CreateUserID");
  5604. sbSql.Append(",UpdateUserID");
  5605. sbSql.Append(") ");
  5606. sbSql.Append("values(");
  5607. sbSql.Append(" :GroutingLineDetailID");
  5608. sbSql.Append(",:GroutingLineID");
  5609. sbSql.Append(",:GroutingMouldCode");
  5610. sbSql.Append(",:MouldSource");
  5611. sbSql.Append(",:MouldID");
  5612. sbSql.Append(",:MouldCode");
  5613. sbSql.Append(",:MouldOutputNo");
  5614. sbSql.Append(",:GoodsID");
  5615. sbSql.Append(",:StandardGroutingCount");
  5616. sbSql.Append(",:GroutingCount");
  5617. sbSql.Append(",1");
  5618. sbSql.Append(",trunc(sysdate)");
  5619. sbSql.Append(",null");
  5620. sbSql.Append(",:LastGMouldRecordID");
  5621. sbSql.Append(",:Remarks");
  5622. sbSql.Append(",:AccountID");
  5623. sbSql.Append(",1");
  5624. sbSql.Append(",:CreateUserID");
  5625. sbSql.Append(",:UpdateUserID");
  5626. sbSql.Append(" )");
  5627. Paras = new OracleParameter[] {
  5628. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5629. GroutingLineDetailID,ParameterDirection.Input),
  5630. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  5631. groutingLineID,ParameterDirection.Input),
  5632. new OracleParameter(":GroutingMouldCode",OracleDbType.Varchar2,
  5633. dtGroutingLineDetail.Rows[i]["GroutingMouldCode"],ParameterDirection.Input),
  5634. new OracleParameter(":MouldSource",OracleDbType.Char,
  5635. dtGroutingLineDetail.Rows[i]["MouldSource"],ParameterDirection.Input),
  5636. new OracleParameter(":MouldID",OracleDbType.Int32,
  5637. dtGroutingLineDetail.Rows[i]["MouldID"],ParameterDirection.Input),
  5638. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  5639. dtGroutingLineDetail.Rows[i]["MouldCode"],ParameterDirection.Input),
  5640. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  5641. dtGroutingLineDetail.Rows[i]["MouldOutputNo"],ParameterDirection.Input),
  5642. new OracleParameter(":GoodsID",OracleDbType.Int32,
  5643. dtGroutingLineDetail.Rows[i]["GoodsID"],ParameterDirection.Input),
  5644. new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
  5645. dtGroutingLineDetail.Rows[i]["StandardGroutingCount"],ParameterDirection.Input),
  5646. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  5647. dtGroutingLineDetail.Rows[i]["GroutingCount"],ParameterDirection.Input),
  5648. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  5649. dtGroutingLineDetail.Rows[i]["Remarks"],ParameterDirection.Input),
  5650. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  5651. user.UserID,ParameterDirection.Input),
  5652. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5653. user.UserID,ParameterDirection.Input),
  5654. new OracleParameter(":AccountID",OracleDbType.Int32,
  5655. user.AccountID,ParameterDirection.Input),
  5656. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  5657. LastGMouldRecordID,ParameterDirection.Input),
  5658. };
  5659. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5660. // 非条码模具
  5661. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  5662. {
  5663. continue;
  5664. }
  5665. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  5666. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  5667. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5668. if (mOutputNo != null && mOutputNo != DBNull.Value)
  5669. {
  5670. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5671. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  5672. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  5673. OracleParameter[] oparas = new OracleParameter[]
  5674. {
  5675. new OracleParameter(":OutputNo", OracleDbType.Int32,
  5676. mOutputNo, ParameterDirection.Input),
  5677. new OracleParameter(":mouldid", OracleDbType.Int32,
  5678. mID, ParameterDirection.Input),
  5679. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5680. GroutingLineDetailID, ParameterDirection.Input),
  5681. };
  5682. returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5683. }
  5684. if (mouldIDs.Contains(mID))
  5685. {
  5686. continue;
  5687. }
  5688. mouldIDs.Add(mID);
  5689. // 添加模具履历
  5690. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  5691. string sqlString =
  5692. "INSERT INTO tp_pc_mouldchangehistory\n" +
  5693. " (CHANGEID\n" +
  5694. " ,MOULDID\n" +
  5695. " ,MOULDCODE\n" +
  5696. " ,MOULDBARCODE\n" +
  5697. " ,GOODSID\n" +
  5698. " ,GOODSCODE\n" +
  5699. " ,OPERATIONTYPE\n" +
  5700. " ,GroutingLineDetailID\n" +
  5701. " ,MOULDSTATUS\n" +
  5702. " ,MOULDSTATUSAFTER\n" +
  5703. " ,GROUTINGNUM\n" +
  5704. " ,REMARKS\n" +
  5705. " ,CHANGEFLAG\n" +
  5706. " ,ACCOUNTID\n" +
  5707. " ,CREATEUSERID)\n" +
  5708. " SELECT :changeID\n" +
  5709. " ,:mouldid\n" +
  5710. " ,:MOULDCODE\n" +
  5711. " ,m.mouldbarcode\n" +
  5712. " ,m.goodsid\n" +
  5713. " ,m.goodscode\n" +
  5714. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  5715. " ,:GroutingLineDetailID\n" +
  5716. " ,m.mouldstatus\n" +
  5717. " ,2\n" +
  5718. " ,m.groutingnum\n" +
  5719. " ,:REMARKS\n" +
  5720. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  5721. " ,:ACCOUNTID\n" +
  5722. " ,:USERID\n" +
  5723. " FROM tp_pc_mould m\n" +
  5724. " WHERE m.mouldid = :mouldid";
  5725. OracleParameter[] paras = new OracleParameter[]
  5726. {
  5727. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5728. GroutingLineDetailID, ParameterDirection.Input),
  5729. new OracleParameter(":changeID", OracleDbType.Int32,
  5730. mouldHistoryID, ParameterDirection.Input),
  5731. new OracleParameter(":MouldID", OracleDbType.Int32,
  5732. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5733. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  5734. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  5735. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  5736. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  5737. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  5738. user.AccountID, ParameterDirection.Input),
  5739. new OracleParameter(":USERID", OracleDbType.Int32,
  5740. user.UserID, ParameterDirection.Input),
  5741. };
  5742. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5743. // 修改模具状态
  5744. sqlString = "UPDATE tp_pc_mould m\n" +
  5745. " SET m.premouldstatus = m.mouldstatus\n" +
  5746. " ,m.mouldstatus = :mouldstatus\n" +
  5747. " ,m.updateuserid = :userid\n" +
  5748. " ,m.lastchangehistoryid = :changeid\n" +
  5749. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  5750. " WHERE m.mouldid = :mouldid";
  5751. paras = new OracleParameter[]
  5752. {
  5753. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5754. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  5755. new OracleParameter(":changeid", OracleDbType.Int32,
  5756. mouldHistoryID, ParameterDirection.Input),
  5757. new OracleParameter(":userid", OracleDbType.Int32,
  5758. user.UserID, ParameterDirection.Input),
  5759. new OracleParameter(":mouldid", OracleDbType.Int32,
  5760. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  5761. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  5762. GroutingLineDetailID, ParameterDirection.Input),
  5763. };
  5764. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  5765. }
  5766. }
  5767. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  5768. string sqlupdate = "update TP_PC_GROUTINGLINE l " +
  5769. " set l.beginuseddate =" +
  5770. " nvl((select min(ld.beginuseddate)" +
  5771. " from TP_PC_GROUTINGLINEDETAIL ld" +
  5772. " where ld.groutinglineid = l.groutinglineid" +
  5773. " and ld.valueflag = '1'), l.beginuseddate)" +
  5774. " where l.groutinglineid = " + groutingLineID;
  5775. oracleTrConn.ExecuteNonQuery(sqlupdate, null);
  5776. //更新明细信息
  5777. if (isError)
  5778. {
  5779. sre.Status = Constant.ServiceResultStatus.Other;
  5780. sre.OtherStatus = -500;
  5781. oracleTrConn.Rollback();
  5782. oracleTrConn.Disconnect();
  5783. }
  5784. else
  5785. {
  5786. oracleTrConn.Commit();
  5787. oracleTrConn.Disconnect();
  5788. }
  5789. }
  5790. catch (Exception ex)
  5791. {
  5792. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5793. {
  5794. oracleTrConn.Rollback();
  5795. oracleTrConn.Disconnect();
  5796. }
  5797. throw ex;
  5798. }
  5799. finally
  5800. {
  5801. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5802. {
  5803. oracleTrConn.Disconnect();
  5804. }
  5805. }
  5806. return sre;
  5807. }
  5808. /// <summary>
  5809. /// 卸模
  5810. /// </summary>
  5811. /// <param name="dtGroutingLineDetail">明细实体</param>
  5812. /// <param name="user">用户基本信息</param>
  5813. /// <returns>int受影响行数</returns>
  5814. /// <remarks>
  5815. ///
  5816. /// </remarks>
  5817. public static int UnloadGroutingLineDetail(DataTable dtGroutingLineDetail, SUserInfo user)
  5818. {
  5819. int returnRows = 0;
  5820. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  5821. try
  5822. {
  5823. oracleTrConn.Connect();
  5824. OracleParameter[] Paras = null;
  5825. StringBuilder sbSql = new StringBuilder();
  5826. int GMouldRecordID = 0;
  5827. bool isError = false;
  5828. if (dtGroutingLineDetail.Rows.Count > 0)
  5829. {
  5830. // 更新成型线UpdateUserID
  5831. //sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"]);
  5832. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  5833. // 更新成型线UpdateUserID
  5834. sbSql.Append("update TP_PC_GroutingLine set UpdateUserID=" + user.UserID + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"] + " and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  5835. Paras = new OracleParameter[] {
  5836. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5837. dtGroutingLineDetail.Rows[0]["LineOPTimeStamp"],ParameterDirection.Input)
  5838. };
  5839. //oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  5840. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5841. if (row == 0)
  5842. {
  5843. oracleTrConn.Rollback();
  5844. oracleTrConn.Disconnect();
  5845. return returnRows = -500;
  5846. }
  5847. }
  5848. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  5849. List<int> mouldIDs = new List<int>();
  5850. for (int i = 0; i < dtGroutingLineDetail.Rows.Count; i++)
  5851. {
  5852. sbSql.Clear();
  5853. sbSql.Append("select SEQ_PC_GMouldRecord_ID.nextval from dual");
  5854. GMouldRecordID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  5855. sbSql.Clear();
  5856. // 1.插入变更履历
  5857. sbSql.Append("insert into TP_PC_GMouldRecord");
  5858. sbSql.Append("(GMouldRecordID,");
  5859. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  5860. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  5861. sbSql.Append("GMouldRecordType,BeginDate,EndDate,");
  5862. sbSql.Append("Remarks,AccountID,CreateTime,");
  5863. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID");
  5864. sbSql.Append(")");
  5865. sbSql.Append("select :GMouldRecordID,");
  5866. sbSql.Append("GroutingLineID,GroutingLineDetailID,GoodsID,");
  5867. sbSql.Append("GroutingMouldCode,MouldCode,GroutingCount,");
  5868. sbSql.Append(":GMouldRecordType,trunc(sysdate),trunc(sysdate),");
  5869. sbSql.Append(":Remarks,:AccountID,sysdate,");
  5870. sbSql.Append(":CreateUserID,sysdate,:UpdateUserID");
  5871. sbSql.Append(" from TP_PC_GroutingLineDetail where GroutingLineDetailID=:GroutingLineDetailID ");
  5872. Paras = new OracleParameter[] {
  5873. new OracleParameter(":GMouldRecordType",OracleDbType.Int32,
  5874. 7,ParameterDirection.Input),
  5875. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5876. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  5877. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  5878. dtGroutingLineDetail.Rows[i]["RecordRemarks"],ParameterDirection.Input),
  5879. new OracleParameter(":AccountID",OracleDbType.Int32,
  5880. user.AccountID,ParameterDirection.Input),
  5881. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  5882. user.UserID,ParameterDirection.Input),
  5883. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5884. user.UserID,ParameterDirection.Input),
  5885. new OracleParameter(":GMouldRecordID",OracleDbType.Int32,
  5886. GMouldRecordID,ParameterDirection.Input)
  5887. };
  5888. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5889. //2.更新成型线模具状态
  5890. sbSql.Clear();
  5891. sbSql.Append("update TP_PC_GroutingLineDetail set GMouldStatus=6,LastGMouldRecordID=:LastGMouldRecordID, MouldID = null,MouldOutputNo=null, Valueflag = '0', ");
  5892. sbSql.Append("UpdateUserID=:UpdateUserID,EndUsedDate=trunc(sysdate) where GroutingLineDetailID=:GroutingLineDetailID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  5893. Paras = new OracleParameter[] {
  5894. new OracleParameter(":LastGMouldRecordID",OracleDbType.Int32,
  5895. GMouldRecordID,ParameterDirection.Input),
  5896. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5897. user.UserID,ParameterDirection.Input),
  5898. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  5899. dtGroutingLineDetail.Rows[i]["GroutingLineDetailID"],ParameterDirection.Input),
  5900. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  5901. dtGroutingLineDetail.Rows[i]["OPTimeStamp"],ParameterDirection.Input)
  5902. };
  5903. int row = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  5904. if (row == 0)
  5905. {
  5906. isError = true; //即更新了,也可以用这个判断时间戳
  5907. break;
  5908. }
  5909. returnRows += row;
  5910. // 非条码模具
  5911. if (dtGroutingLineDetail.Rows[i]["MouldID"] + "" == "")
  5912. {
  5913. continue;
  5914. }
  5915. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  5916. int mID = Convert.ToInt32(dtGroutingLineDetail.Rows[i]["MouldID"]);
  5917. //object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5918. //if (mOutputNo != null && mOutputNo != DBNull.Value)
  5919. //{
  5920. // string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5921. // " SET m.GroutingLineDetailID = null\n" +
  5922. // " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  5923. // OracleParameter[] oparas = new OracleParameter[]
  5924. // {
  5925. // new OracleParameter(":OutputNo", OracleDbType.Int32,
  5926. // mOutputNo, ParameterDirection.Input),
  5927. // new OracleParameter(":mouldid", OracleDbType.Int32,
  5928. // mID, ParameterDirection.Input),
  5929. // };
  5930. // row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5931. //}
  5932. if (mouldIDs.Contains(mID))
  5933. {
  5934. continue;
  5935. }
  5936. mouldIDs.Add(mID);
  5937. object mOutputNo = dtGroutingLineDetail.Rows[i]["MouldOutputNo"];
  5938. if (mOutputNo != null && mOutputNo != DBNull.Value && mOutputNo + "" != "0")
  5939. {
  5940. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  5941. " SET m.GroutingLineDetailID = null\n" +
  5942. " WHERE m.mouldid = :mouldid\n";
  5943. //" and m.OutputNo=:OutputNo";
  5944. OracleParameter[] oparas = new OracleParameter[]
  5945. {
  5946. //new OracleParameter(":OutputNo", OracleDbType.Int32,
  5947. // mOutputNo, ParameterDirection.Input),
  5948. new OracleParameter(":mouldid", OracleDbType.Int32,
  5949. mID, ParameterDirection.Input),
  5950. };
  5951. row += oracleTrConn.ExecuteNonQuery(sql, oparas);
  5952. }
  5953. // 添加模具履历
  5954. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  5955. string sqlString =
  5956. "INSERT INTO tp_pc_mouldchangehistory\n" +
  5957. " (CHANGEID\n" +
  5958. " ,MOULDID\n" +
  5959. " ,MOULDCODE\n" +
  5960. " ,MOULDBARCODE\n" +
  5961. " ,GOODSID\n" +
  5962. " ,GOODSCODE\n" +
  5963. " ,OPERATIONTYPE\n" +
  5964. " ,GroutingLineDetailID\n" +
  5965. " ,MOULDSTATUS\n" +
  5966. " ,MOULDSTATUSAFTER\n" +
  5967. " ,GROUTINGNUM\n" +
  5968. " ,REMARKS\n" +
  5969. " ,CHANGEFLAG\n" +
  5970. " ,ScrapReason\n" +
  5971. " ,ScrapResponsibility\n" +
  5972. " ,ACCOUNTID\n" +
  5973. " ,CREATEUSERID)\n" +
  5974. " SELECT :changeID\n" +
  5975. " ,:MouldID\n" +
  5976. " ,:MOULDCODE\n" +
  5977. " ,m.mouldbarcode\n" +
  5978. " ,m.goodsid\n" +
  5979. " ,m.goodscode\n" +
  5980. " ,decode(:mouldstatus, 1, 7, 3, 8, 4, 9) OPERATIONTYPE\n" +
  5981. " ,m.GroutingLineDetailID\n" +
  5982. " ,m.mouldstatus\n" +
  5983. " ,:mouldstatus\n" +
  5984. " ,m.groutingnum\n" +
  5985. " ,:REMARKS\n" +
  5986. " ,decode(:mouldstatus, 1, '1', 3, '0', 4, '0') CHANGEFLAG\n" +
  5987. " ,:ScrapReason\n" +
  5988. " ,:ScrapResponsibility\n" +
  5989. " ,:ACCOUNTID\n" +
  5990. " ,:USERID\n" +
  5991. " FROM tp_pc_mould m\n" +
  5992. " WHERE m.mouldid = :MouldID";
  5993. OracleParameter[] paras = new OracleParameter[]
  5994. {
  5995. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  5996. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  5997. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  5998. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  5999. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  6000. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  6001. new OracleParameter(":changeID", OracleDbType.Int32,
  6002. mouldHistoryID, ParameterDirection.Input),
  6003. new OracleParameter(":MouldID", OracleDbType.Int32,
  6004. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  6005. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  6006. dtGroutingLineDetail.Rows[i]["MOULDCODE"], ParameterDirection.Input),
  6007. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  6008. dtGroutingLineDetail.Rows[i]["RecordRemarks"], ParameterDirection.Input),
  6009. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  6010. user.AccountID, ParameterDirection.Input),
  6011. new OracleParameter(":USERID", OracleDbType.Int32,
  6012. user.UserID, ParameterDirection.Input),
  6013. };
  6014. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6015. // 修改模具状态
  6016. sqlString = "UPDATE tp_pc_mould m\n" +
  6017. " SET m.premouldstatus = m.mouldstatus\n" +
  6018. " ,m.mouldstatus = :mouldstatus\n" +
  6019. " ,m.updateuserid = :userid\n" +
  6020. " ,m.lastchangehistoryid = :changeid\n" +
  6021. " ,m.GroutingLineDetailID = null\n" +
  6022. " ,m.scrapdate = decode(:mouldstatus,4,SYSDATE, null)\n" +
  6023. " ,m.scrapuserid = decode(:mouldstatus,4,:userid, null)\n" +
  6024. " ,m.scrapusercode = decode(:mouldstatus,4,:usercode, null)\n" +
  6025. " ,m.ScrapReason = :ScrapReason\n" +
  6026. " ,m.ScrapResponsibility = :ScrapResponsibility\n" +
  6027. " WHERE m.mouldid = :mouldid";
  6028. paras = new OracleParameter[]
  6029. {
  6030. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  6031. dtGroutingLineDetail.Rows[i]["mouldstatus"], ParameterDirection.Input),
  6032. new OracleParameter(":ScrapReason", OracleDbType.Int32,
  6033. dtGroutingLineDetail.Rows[i]["ScrapReason"], ParameterDirection.Input),
  6034. new OracleParameter(":ScrapResponsibility", OracleDbType.NVarchar2,
  6035. dtGroutingLineDetail.Rows[i]["ScrapResponsibility"], ParameterDirection.Input),
  6036. new OracleParameter(":changeid", OracleDbType.Int32,
  6037. mouldHistoryID, ParameterDirection.Input),
  6038. new OracleParameter(":userid", OracleDbType.Int32,
  6039. user.UserID, ParameterDirection.Input),
  6040. new OracleParameter(":usercode", OracleDbType.NVarchar2,
  6041. user.UserCode, ParameterDirection.Input),
  6042. new OracleParameter(":mouldid", OracleDbType.Int32,
  6043. dtGroutingLineDetail.Rows[i]["MouldID"], ParameterDirection.Input),
  6044. };
  6045. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6046. }
  6047. //更新明细信息
  6048. if (isError)
  6049. {
  6050. returnRows = -500;
  6051. oracleTrConn.Rollback();
  6052. oracleTrConn.Disconnect();
  6053. }
  6054. else
  6055. {
  6056. // 更新成型线模具个数
  6057. string sqlupdate = "update TP_PC_GroutingLine set MouldQuantity = MouldQuantity - "
  6058. + dtGroutingLineDetail.Rows.Count
  6059. + " where GroutingLineID=" + dtGroutingLineDetail.Rows[0]["GroutingLineID"];
  6060. returnRows = oracleTrConn.ExecuteNonQuery(sqlupdate);
  6061. oracleTrConn.Commit();
  6062. oracleTrConn.Disconnect();
  6063. }
  6064. }
  6065. catch (Exception ex)
  6066. {
  6067. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6068. {
  6069. oracleTrConn.Rollback();
  6070. oracleTrConn.Disconnect();
  6071. }
  6072. throw ex;
  6073. }
  6074. finally
  6075. {
  6076. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6077. {
  6078. oracleTrConn.Disconnect();
  6079. }
  6080. }
  6081. return returnRows;
  6082. }
  6083. /// <summary>
  6084. /// 新建成型线信息
  6085. /// </summary>
  6086. /// <param name="groutingLineEntity">成型线实体</param>
  6087. /// <param name="detailList">明细实体集合</param>
  6088. /// <param name="user">用户基本信息</param>
  6089. /// <returns>返回受影响行数</returns>
  6090. /// <remarks>
  6091. /// 庄天威 2014.09.10 新建
  6092. /// </remarks>
  6093. public static ServiceResultEntity AddGroutingLine_NewLine(GroutingLineEntity groutingLineEntity,
  6094. DataTable detailList, DataTable detailUserList, SUserInfo user)
  6095. {
  6096. ServiceResultEntity sre = new ServiceResultEntity();
  6097. int returnRows = 0;
  6098. int detailReturn = 0;
  6099. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6100. try
  6101. {
  6102. if (GroutingLineCodeIsRepeat(groutingLineEntity.GROUTINGLINECODE, user.AccountID) == false)
  6103. {
  6104. sre.Status = Constant.ServiceResultStatus.Other;
  6105. sre.OtherStatus = -50;
  6106. return sre;
  6107. }
  6108. oracleTrConn.Connect();
  6109. // 验证模具条码
  6110. DataRow[] moulds = detailList.Select("MouldID is not null");
  6111. if (moulds != null && moulds.Length > 0)
  6112. {
  6113. List<string> ids = new List<string>();
  6114. foreach (DataRow item in moulds)
  6115. {
  6116. ids.Add(item["MouldID"].ToString());
  6117. }
  6118. string idswhere = string.Join(",", ids);
  6119. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  6120. oracleTrConn.GetSqlResultToDt(sql);
  6121. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  6122. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  6123. if (dt != null && dt.Rows.Count > 0)
  6124. {
  6125. ids.Clear();
  6126. foreach (DataRow item in dt.Rows)
  6127. {
  6128. ids.Add(item["mouldbarcode"].ToString());
  6129. }
  6130. sre.Status = Constant.ServiceResultStatus.Other;
  6131. sre.OtherStatus = -100;
  6132. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  6133. + string.Join(",", ids);
  6134. return sre;
  6135. }
  6136. }
  6137. // 获得账务日期
  6138. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  6139. //获取成型线ID索引
  6140. StringBuilder sbSql = new StringBuilder();
  6141. sbSql.Append("select SEQ_PC_GroutingLine_ID.nextval from dual");
  6142. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  6143. sbSql.Clear();
  6144. //添加成型线信息
  6145. sbSql.Append("Insert into TP_PC_GroutingLine");
  6146. sbSql.Append("(GroutingLineID,BuildingNo,FloorNo,GroutingLineNo,GroutingLineCode,");
  6147. //xuwei add 2019-11-13 高压注浆
  6148. sbSql.Append("HighPressureFlag,");
  6149. //xuwei end
  6150. sbSql.Append("GroutingLineName,MouldQuantity,GMouldTypeID,UserID,MonitorID,");
  6151. sbSql.Append("BeginUsedDate,GMouldStatus,Remarks,AccountID,");
  6152. sbSql.Append("CreateUserID,UpdateUserID,UserCount)");
  6153. sbSql.Append("values(:GroutingLineID,:BuildingNo,:FloorNo,:GroutingLineNo,:GroutingLineCode,");
  6154. //xuwei add 2019-11-13 高压注浆
  6155. sbSql.Append(":HighPressureFlag,");
  6156. //xuwei end
  6157. sbSql.Append(":GroutingLineName,:MouldQuantity,:GMouldTypeID,:UserID,:MonitorID,");
  6158. sbSql.Append(":BeginUsedDate,:GMouldStatus,:Remarks,:AccountID,");
  6159. sbSql.Append(":CreateUserID,:UpdateUserID,:UserCount)");
  6160. OracleParameter[] Paras = new OracleParameter[] {
  6161. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6162. id,ParameterDirection.Input),
  6163. new OracleParameter(":BuildingNo",OracleDbType.NVarchar2,
  6164. groutingLineEntity.BUILDINGNO,ParameterDirection.Input),
  6165. new OracleParameter(":FloorNo",OracleDbType.NVarchar2,
  6166. groutingLineEntity.FLOORNO,ParameterDirection.Input),
  6167. new OracleParameter(":GroutingLineNo",OracleDbType.NVarchar2,
  6168. groutingLineEntity.GROUTINGLINENO,ParameterDirection.Input),
  6169. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  6170. groutingLineEntity.GROUTINGLINECODE,ParameterDirection.Input),
  6171. //xuwei add 2019-11-13 高压注浆
  6172. new OracleParameter(":HighPressureFlag",OracleDbType.Char,
  6173. groutingLineEntity.HIGHPRESSUREFLAG,ParameterDirection.Input),
  6174. //xuwei end
  6175. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  6176. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  6177. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  6178. groutingLineEntity.MOULDQUANTITY,ParameterDirection.Input),
  6179. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  6180. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  6181. new OracleParameter(":UserID",OracleDbType.Int32,
  6182. groutingLineEntity.USERID,ParameterDirection.Input),
  6183. new OracleParameter(":MonitorID",OracleDbType.Int32,
  6184. groutingLineEntity.MonitorID,ParameterDirection.Input),
  6185. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  6186. accountDate,ParameterDirection.Input),
  6187. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  6188. groutingLineEntity.MouldStatus,ParameterDirection.Input),
  6189. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6190. groutingLineEntity.REMARKS,ParameterDirection.Input),
  6191. new OracleParameter(":AccountID",OracleDbType.Int32,
  6192. user.AccountID,ParameterDirection.Input),
  6193. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  6194. user.UserID,ParameterDirection.Input),
  6195. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6196. user.UserID,ParameterDirection.Input),
  6197. new OracleParameter(":UserCount",OracleDbType.Int32,
  6198. detailUserList.Rows.Count,ParameterDirection.Input),
  6199. };
  6200. //执行插入成型线SQL语句
  6201. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  6202. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  6203. List<int> mouldIDs = new List<int>();
  6204. //此处添加明细信息(循环)
  6205. foreach (DataRow detailInfo in detailList.Rows)
  6206. {
  6207. //查看该成型线明细编号是否存在
  6208. if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
  6209. {
  6210. oracleTrConn.Rollback();
  6211. oracleTrConn.Disconnect();
  6212. sre.Status = Constant.ServiceResultStatus.Other;
  6213. sre.OtherStatus = -2;
  6214. return sre;
  6215. }
  6216. //获取成型线明细索引
  6217. sbSql.Clear();
  6218. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  6219. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  6220. sbSql.Clear();
  6221. //插入成型线明细信息
  6222. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  6223. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,GroutingCount,StandardGroutingCount,");
  6224. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
  6225. sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
  6226. sbSql.Append("CreateUserID,UpdateUserID)");
  6227. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:GroutingCount,:StandardGroutingCount,");
  6228. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,");
  6229. sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
  6230. sbSql.Append(":CreateUserID,:UpdateUserID)");
  6231. OracleParameter[] DetailParas = new OracleParameter[] {
  6232. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6233. detailId,ParameterDirection.Input),
  6234. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6235. id,ParameterDirection.Input),
  6236. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  6237. detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
  6238. new OracleParameter(":GoodsID",OracleDbType.Int32,
  6239. detailInfo["GOODSID"],ParameterDirection.Input),
  6240. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  6241. detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
  6242. new OracleParameter(":StandardGroutingCount",OracleDbType.Int32,
  6243. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6244. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  6245. detailInfo["MOULDSTATUS"],ParameterDirection.Input),
  6246. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  6247. accountDate,ParameterDirection.Input),
  6248. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6249. detailInfo["REMARKS"],ParameterDirection.Input),
  6250. new OracleParameter(":AccountID",OracleDbType.Int32,
  6251. user.AccountID,ParameterDirection.Input),
  6252. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  6253. user.UserID,ParameterDirection.Input),
  6254. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6255. user.UserID,ParameterDirection.Input),
  6256. new OracleParameter(":MouldSource",OracleDbType.Char,
  6257. detailInfo["MouldSource"],ParameterDirection.Input),
  6258. new OracleParameter(":MouldID",OracleDbType.Int32,
  6259. detailInfo["MouldID"],ParameterDirection.Input),
  6260. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  6261. detailInfo["MouldCode"],ParameterDirection.Input),
  6262. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  6263. detailInfo["MouldOutputNo"],ParameterDirection.Input),
  6264. };
  6265. //执行插入语句并累加成功插入次数
  6266. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6267. // 非条码模具
  6268. if (detailInfo["MouldID"] + "" == "")
  6269. {
  6270. continue;
  6271. }
  6272. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  6273. int mID = Convert.ToInt32(detailInfo["MouldID"]);
  6274. object mOutputNo = detailInfo["MouldOutputNo"];
  6275. if (mOutputNo != null && mOutputNo != DBNull.Value)
  6276. {
  6277. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  6278. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6279. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  6280. OracleParameter[] oparas = new OracleParameter[]
  6281. {
  6282. new OracleParameter(":OutputNo", OracleDbType.Int32,
  6283. mOutputNo, ParameterDirection.Input),
  6284. new OracleParameter(":mouldid", OracleDbType.Int32,
  6285. mID, ParameterDirection.Input),
  6286. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6287. detailId, ParameterDirection.Input),
  6288. };
  6289. detailReturn += oracleTrConn.ExecuteNonQuery(sql, oparas);
  6290. }
  6291. if (mouldIDs.Contains(mID))
  6292. {
  6293. continue;
  6294. }
  6295. mouldIDs.Add(mID);
  6296. // 添加模具履历
  6297. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  6298. string sqlString =
  6299. "INSERT INTO tp_pc_mouldchangehistory\n" +
  6300. " (CHANGEID\n" +
  6301. " ,MOULDID\n" +
  6302. " ,MOULDCODE\n" +
  6303. " ,MOULDBARCODE\n" +
  6304. " ,GOODSID\n" +
  6305. " ,GOODSCODE\n" +
  6306. " ,OPERATIONTYPE\n" +
  6307. " ,GroutingLineDetailID\n" +
  6308. " ,MOULDSTATUS\n" +
  6309. " ,MOULDSTATUSAFTER\n" +
  6310. " ,GROUTINGNUM\n" +
  6311. " ,REMARKS\n" +
  6312. " ,CHANGEFLAG\n" +
  6313. " ,ACCOUNTID\n" +
  6314. " ,CREATEUSERID)\n" +
  6315. " SELECT :changeID\n" +
  6316. " ,:mouldid\n" +
  6317. " ,:MOULDCODE\n" +
  6318. " ,m.mouldbarcode\n" +
  6319. " ,m.goodsid\n" +
  6320. " ,m.goodscode\n" +
  6321. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  6322. " ,:GroutingLineDetailID\n" +
  6323. " ,m.mouldstatus\n" +
  6324. " ,2\n" +
  6325. " ,m.groutingnum\n" +
  6326. " ,:REMARKS\n" +
  6327. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  6328. " ,:ACCOUNTID\n" +
  6329. " ,:USERID\n" +
  6330. " FROM tp_pc_mould m\n" +
  6331. " WHERE m.mouldid = :mouldid";
  6332. OracleParameter[] paras = new OracleParameter[]
  6333. {
  6334. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6335. detailId, ParameterDirection.Input),
  6336. new OracleParameter(":changeID", OracleDbType.Int32,
  6337. mouldHistoryID, ParameterDirection.Input),
  6338. new OracleParameter(":MouldID", OracleDbType.Int32,
  6339. detailInfo["MouldID"], ParameterDirection.Input),
  6340. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  6341. detailInfo["MOULDCODE"], ParameterDirection.Input),
  6342. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  6343. detailInfo["Remarks"], ParameterDirection.Input),
  6344. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  6345. user.AccountID, ParameterDirection.Input),
  6346. new OracleParameter(":USERID", OracleDbType.Int32,
  6347. user.UserID, ParameterDirection.Input),
  6348. };
  6349. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6350. // 修改模具状态
  6351. sqlString = "UPDATE tp_pc_mould m\n" +
  6352. " SET m.premouldstatus = m.mouldstatus\n" +
  6353. " ,m.mouldstatus = :mouldstatus\n" +
  6354. " ,m.updateuserid = :userid\n" +
  6355. " ,m.lastchangehistoryid = :changeid\n" +
  6356. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6357. " WHERE m.mouldid = :mouldid";
  6358. paras = new OracleParameter[]
  6359. {
  6360. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  6361. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  6362. new OracleParameter(":changeid", OracleDbType.Int32,
  6363. mouldHistoryID, ParameterDirection.Input),
  6364. new OracleParameter(":userid", OracleDbType.Int32,
  6365. user.UserID, ParameterDirection.Input),
  6366. new OracleParameter(":mouldid", OracleDbType.Int32,
  6367. detailInfo["MouldID"], ParameterDirection.Input),
  6368. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6369. detailId, ParameterDirection.Input),
  6370. };
  6371. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6372. }
  6373. // 添加成型工号
  6374. foreach (DataRow detailInfo in detailUserList.Rows)
  6375. {
  6376. //插入成型线明细信息
  6377. sbSql.Clear();
  6378. sbSql.Append("Insert into TP_PC_GroutingUser");
  6379. sbSql.Append("(GroutingLineID,UserID,Remarks)");
  6380. sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
  6381. OracleParameter[] DetailParas = new OracleParameter[] {
  6382. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6383. id,ParameterDirection.Input),
  6384. new OracleParameter(":UserID",OracleDbType.Int32,
  6385. detailInfo["USERID"],ParameterDirection.Input),
  6386. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6387. detailInfo["REMARK"],ParameterDirection.Input),
  6388. };
  6389. //执行插入语句并累加成功插入次数
  6390. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6391. }
  6392. //如果有插入不成功的情况,回滚事务,否则提交
  6393. if (returnRows == 0 || detailReturn == 0)
  6394. {
  6395. oracleTrConn.Rollback();
  6396. oracleTrConn.Disconnect();
  6397. }
  6398. else
  6399. {
  6400. oracleTrConn.Commit();
  6401. oracleTrConn.Disconnect();
  6402. }
  6403. }
  6404. catch (Exception ex)
  6405. {
  6406. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6407. {
  6408. oracleTrConn.Rollback();
  6409. oracleTrConn.Disconnect();
  6410. }
  6411. throw ex;
  6412. }
  6413. finally
  6414. {
  6415. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6416. {
  6417. oracleTrConn.Disconnect();
  6418. }
  6419. }
  6420. return sre;
  6421. }
  6422. /// <summary>
  6423. /// 修改成型线信息
  6424. /// </summary>
  6425. /// <param name="groutingLineEntity">成型线实体</param>
  6426. /// <param name="detailList">明细实体集合</param>
  6427. /// <param name="user">用户基本信息</param>
  6428. /// <returns>int返回受影响行数</returns>
  6429. /// <remarks>
  6430. /// 庄天威 2014.09.10 新建
  6431. /// </remarks>
  6432. public static ServiceResultEntity UpdateGroutingLine_NewLine(GroutingLineEntity groutingLineEntity,
  6433. DataTable detailList, DataTable detailUserList, DataTable UpdatedetailList, SUserInfo user)
  6434. {
  6435. ServiceResultEntity sre = new ServiceResultEntity();
  6436. int returnRows = 0;
  6437. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6438. try
  6439. {
  6440. oracleTrConn.Connect();
  6441. // 获得账务日期
  6442. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  6443. //修改成型线信息
  6444. StringBuilder sbSql = new StringBuilder();
  6445. sbSql.Append("update TP_PC_GroutingLine SET ");
  6446. sbSql.Append("MouldQuantity=:MouldQuantity,");
  6447. sbSql.Append("GMouldTypeID=:GMouldTypeID,");
  6448. sbSql.Append("UserID=:UserID,");
  6449. sbSql.Append("GROUTINGLINENAME=:GROUTINGLINENAME,");
  6450. sbSql.Append("MonitorID=:MonitorID,");
  6451. //xuwei add 2019-11-13 高压注浆
  6452. sbSql.Append("HighPressureFlag=:HighPressureFlag,");
  6453. //xuwei end
  6454. sbSql.Append("Remarks=:Remarks,");
  6455. sbSql.Append("AccountID=:AccountID,");
  6456. sbSql.Append("ValueFlag=:ValueFlag2,");
  6457. sbSql.Append("UpdateTime=:UpdateTime,");
  6458. sbSql.Append("UpdateUserID=:UpdateUserID,");
  6459. sbSql.Append("UserCount=:UserCount");
  6460. sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp and GMouldStatus=1");
  6461. if (groutingLineEntity.VALUEFLAG == 0)
  6462. {
  6463. groutingLineEntity.ENDUSEDDATE = DateTime.Now;
  6464. }
  6465. else
  6466. {
  6467. groutingLineEntity.ENDUSEDDATE = null;
  6468. }
  6469. int MouldQuantity_temp = 0;
  6470. if (detailList != null)
  6471. {
  6472. // 验证模具条码
  6473. DataRow[] moulds = detailList.Select("MouldID is not null");
  6474. if (moulds != null && moulds.Length > 0)
  6475. {
  6476. List<string> ids = new List<string>();
  6477. foreach (DataRow item in moulds)
  6478. {
  6479. string id = item["MouldID"].ToString();
  6480. if (!ids.Contains(id))
  6481. {
  6482. ids.Add(id);
  6483. }
  6484. }
  6485. string idswhere = string.Join(",", ids);
  6486. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  6487. oracleTrConn.GetSqlResultToDt(sql);
  6488. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  6489. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  6490. if (dt != null && dt.Rows.Count > 0)
  6491. {
  6492. ids.Clear();
  6493. foreach (DataRow item in dt.Rows)
  6494. {
  6495. ids.Add(item["mouldbarcode"].ToString());
  6496. }
  6497. sre.Status = Constant.ServiceResultStatus.Other;
  6498. sre.OtherStatus = -100;
  6499. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  6500. + string.Join(",", ids);
  6501. return sre;
  6502. }
  6503. }
  6504. MouldQuantity_temp = detailList.Rows.Count;
  6505. }
  6506. if (UpdatedetailList != null)
  6507. {
  6508. MouldQuantity_temp += UpdatedetailList.Rows.Count;
  6509. }
  6510. OracleParameter[] Paras = new OracleParameter[] {
  6511. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  6512. MouldQuantity_temp,ParameterDirection.Input),
  6513. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  6514. groutingLineEntity.MOULDTYPEID,ParameterDirection.Input),
  6515. new OracleParameter(":UserID",OracleDbType.Int32,
  6516. //Convert.ToInt32(detailUserList.Rows[0]["userid"]),ParameterDirection.Input),
  6517. groutingLineEntity.USERID,ParameterDirection.Input),
  6518. new OracleParameter(":GROUTINGLINENAME",OracleDbType.NVarchar2,
  6519. groutingLineEntity.GROUTINGLINENAME,ParameterDirection.Input),
  6520. new OracleParameter(":MonitorID",OracleDbType.Int32,
  6521. groutingLineEntity.MonitorID,ParameterDirection.Input),
  6522. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6523. groutingLineEntity.REMARKS,ParameterDirection.Input),
  6524. new OracleParameter(":AccountID",OracleDbType.Int32,
  6525. groutingLineEntity.ACCOUNTID,ParameterDirection.Input),
  6526. new OracleParameter(":ValueFlag2",OracleDbType.Char,
  6527. groutingLineEntity.ValueFlag2,ParameterDirection.Input),
  6528. //xuwei add 2019-11-13 高压注浆
  6529. new OracleParameter(":HighPressureFlag",OracleDbType.Char,
  6530. groutingLineEntity.HIGHPRESSUREFLAG,ParameterDirection.Input),
  6531. //xuwei end
  6532. new OracleParameter(":UpdateTime",OracleDbType.Date,
  6533. DateTime.Now,ParameterDirection.Input),
  6534. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6535. user.UserID,ParameterDirection.Input),
  6536. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6537. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  6538. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  6539. groutingLineEntity.OPTIMESTAMP,ParameterDirection.Input),
  6540. new OracleParameter(":UserCount",OracleDbType.Int32,
  6541. detailUserList.Rows.Count,ParameterDirection.Input),
  6542. };
  6543. //执行修改语句
  6544. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  6545. //时间戳无法匹配
  6546. if (returnRows == 0)
  6547. {
  6548. oracleTrConn.Rollback();
  6549. oracleTrConn.Disconnect();
  6550. sre.Status = Constant.ServiceResultStatus.Other;
  6551. sre.OtherStatus = -500;
  6552. return sre;
  6553. }
  6554. int detailReturn = 0;
  6555. if (UpdatedetailList != null)
  6556. {
  6557. //添加修改时新建的模具信息
  6558. foreach (DataRow detailInfo in UpdatedetailList.Rows)
  6559. {
  6560. sbSql.Clear();
  6561. sbSql.Append("Update TP_PC_GroutingLineDetail set Remarks=:Remarks,UpdateUserID=:UpdateUserID,StandardGroutingCount=:StandardGroutingCount where GroutingLineDetailID=:GroutingLineDetailID");
  6562. OracleParameter[] DetailParas = new OracleParameter[] {
  6563. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6564. detailInfo["GROUTINGLINEDETAILID"],ParameterDirection.Input),
  6565. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6566. detailInfo["REMARKS"],ParameterDirection.Input),
  6567. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6568. user.UserID,ParameterDirection.Input),
  6569. new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
  6570. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6571. };
  6572. //执行
  6573. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6574. }
  6575. }
  6576. if (detailList != null)
  6577. {
  6578. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  6579. List<int> mouldIDs = new List<int>();
  6580. //添加修改时新建的模具信息
  6581. foreach (DataRow detailInfo in detailList.Rows)
  6582. {
  6583. //模具明细编号唯一
  6584. if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
  6585. {
  6586. oracleTrConn.Rollback();
  6587. oracleTrConn.Disconnect();
  6588. sre.Status = Constant.ServiceResultStatus.Other;
  6589. sre.OtherStatus = -2;
  6590. return sre;
  6591. }
  6592. //获取模具明细索引
  6593. sbSql.Clear();
  6594. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  6595. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  6596. sbSql.Clear();
  6597. //插入新增的模具信息
  6598. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  6599. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,StandardGroutingCount,GroutingCount,");
  6600. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
  6601. sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
  6602. sbSql.Append("CreateUserID,UpdateUserID)");
  6603. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:StandardGroutingCount,:GroutingCount,");
  6604. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,");
  6605. sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
  6606. sbSql.Append(":CreateUserID,:UpdateUserID)");
  6607. OracleParameter[] DetailParas = new OracleParameter[] {
  6608. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6609. detailId,ParameterDirection.Input),
  6610. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6611. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  6612. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  6613. detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
  6614. new OracleParameter(":GoodsID",OracleDbType.Int32,
  6615. detailInfo["GOODSID"],ParameterDirection.Input),
  6616. new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
  6617. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6618. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  6619. detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
  6620. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  6621. 1, ParameterDirection.Input),
  6622. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  6623. accountDate,ParameterDirection.Input),
  6624. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6625. detailInfo["REMARKS"],ParameterDirection.Input),
  6626. new OracleParameter(":AccountID",OracleDbType.Int32,
  6627. user.AccountID,ParameterDirection.Input),
  6628. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  6629. user.UserID,ParameterDirection.Input),
  6630. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6631. user.UserID,ParameterDirection.Input),
  6632. new OracleParameter(":MouldSource",OracleDbType.Char,
  6633. detailInfo["MouldSource"],ParameterDirection.Input),
  6634. new OracleParameter(":MouldID",OracleDbType.Int32,
  6635. detailInfo["MouldID"],ParameterDirection.Input),
  6636. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  6637. detailInfo["MouldCode"],ParameterDirection.Input),
  6638. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  6639. detailInfo["MouldOutputNo"],ParameterDirection.Input),
  6640. };
  6641. //执行
  6642. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6643. // 非条码模具
  6644. if (detailInfo["MouldID"] + "" == "")
  6645. {
  6646. continue;
  6647. }
  6648. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  6649. int mID = Convert.ToInt32(detailInfo["MouldID"]);
  6650. object mOutputNo = detailInfo["MouldOutputNo"];
  6651. if (mOutputNo != null && mOutputNo != DBNull.Value)
  6652. {
  6653. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  6654. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6655. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  6656. OracleParameter[] oparas = new OracleParameter[]
  6657. {
  6658. new OracleParameter(":OutputNo", OracleDbType.Int32,
  6659. mOutputNo, ParameterDirection.Input),
  6660. new OracleParameter(":mouldid", OracleDbType.Int32,
  6661. mID, ParameterDirection.Input),
  6662. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6663. detailId, ParameterDirection.Input),
  6664. };
  6665. detailReturn += oracleTrConn.ExecuteNonQuery(sql, oparas);
  6666. }
  6667. if (mouldIDs.Contains(mID))
  6668. {
  6669. continue;
  6670. }
  6671. mouldIDs.Add(mID);
  6672. // 添加模具履历
  6673. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  6674. string sqlString =
  6675. "INSERT INTO tp_pc_mouldchangehistory\n" +
  6676. " (CHANGEID\n" +
  6677. " ,MOULDID\n" +
  6678. " ,MOULDCODE\n" +
  6679. " ,MOULDBARCODE\n" +
  6680. " ,GOODSID\n" +
  6681. " ,GOODSCODE\n" +
  6682. " ,OPERATIONTYPE\n" +
  6683. " ,GroutingLineDetailID\n" +
  6684. " ,MOULDSTATUS\n" +
  6685. " ,MOULDSTATUSAFTER\n" +
  6686. " ,GROUTINGNUM\n" +
  6687. " ,REMARKS\n" +
  6688. " ,CHANGEFLAG\n" +
  6689. " ,ACCOUNTID\n" +
  6690. " ,CREATEUSERID)\n" +
  6691. " SELECT :changeID\n" +
  6692. " ,:mouldid\n" +
  6693. " ,:MOULDCODE\n" +
  6694. " ,m.mouldbarcode\n" +
  6695. " ,m.goodsid\n" +
  6696. " ,m.goodscode\n" +
  6697. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  6698. " ,:GroutingLineDetailID\n" +
  6699. " ,m.mouldstatus\n" +
  6700. " ,2\n" +
  6701. " ,m.groutingnum\n" +
  6702. " ,:REMARKS\n" +
  6703. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  6704. " ,:ACCOUNTID\n" +
  6705. " ,:USERID\n" +
  6706. " FROM tp_pc_mould m\n" +
  6707. " WHERE m.mouldid = :mouldid";
  6708. OracleParameter[] paras = new OracleParameter[]
  6709. {
  6710. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6711. detailId, ParameterDirection.Input),
  6712. new OracleParameter(":changeID", OracleDbType.Int32,
  6713. mouldHistoryID, ParameterDirection.Input),
  6714. new OracleParameter(":MouldID", OracleDbType.Int32,
  6715. detailInfo["MouldID"], ParameterDirection.Input),
  6716. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  6717. detailInfo["MOULDCODE"], ParameterDirection.Input),
  6718. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  6719. detailInfo["Remarks"], ParameterDirection.Input),
  6720. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  6721. user.AccountID, ParameterDirection.Input),
  6722. new OracleParameter(":USERID", OracleDbType.Int32,
  6723. user.UserID, ParameterDirection.Input),
  6724. };
  6725. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6726. // 修改模具状态
  6727. sqlString = "UPDATE tp_pc_mould m\n" +
  6728. " SET m.premouldstatus = m.mouldstatus\n" +
  6729. " ,m.mouldstatus = :mouldstatus\n" +
  6730. " ,m.updateuserid = :userid\n" +
  6731. " ,m.lastchangehistoryid = :changeid\n" +
  6732. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6733. " WHERE m.mouldid = :mouldid";
  6734. paras = new OracleParameter[]
  6735. {
  6736. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  6737. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  6738. new OracleParameter(":changeid", OracleDbType.Int32,
  6739. mouldHistoryID, ParameterDirection.Input),
  6740. new OracleParameter(":userid", OracleDbType.Int32,
  6741. user.UserID, ParameterDirection.Input),
  6742. new OracleParameter(":mouldid", OracleDbType.Int32,
  6743. detailInfo["MouldID"], ParameterDirection.Input),
  6744. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6745. detailId, ParameterDirection.Input),
  6746. };
  6747. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6748. }
  6749. }
  6750. if (groutingLineEntity.GROUTINGLINEIDS == null)
  6751. {
  6752. string sqlDelete = "delete from TP_PC_GroutingUser where GroutingLineID=" + groutingLineEntity.GROUTINGLINEID.ToString();
  6753. detailReturn += oracleTrConn.ExecuteNonQuery(sqlDelete);
  6754. // 添加成型工号
  6755. foreach (DataRow detailInfo in detailUserList.Rows)
  6756. {
  6757. sbSql.Clear();
  6758. //插入成型线明细信息
  6759. sbSql.Append("Insert into TP_PC_GroutingUser");
  6760. sbSql.Append("(GroutingLineID,UserID,Remarks)");
  6761. sbSql.Append("Values(:GroutingLineID,:UserID,:Remarks)");
  6762. OracleParameter[] DetailParas = new OracleParameter[] {
  6763. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6764. groutingLineEntity.GROUTINGLINEID,ParameterDirection.Input),
  6765. new OracleParameter(":UserID",OracleDbType.Int32,
  6766. detailInfo["USERID"],ParameterDirection.Input),
  6767. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6768. detailInfo["REMARK"],ParameterDirection.Input),
  6769. };
  6770. //执行插入语句并累加成功插入次数
  6771. detailReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6772. }
  6773. }
  6774. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  6775. string sqlLine = "update TP_PC_GROUTINGLINE l " +
  6776. " set l.beginuseddate =" +
  6777. " nvl((select min(ld.beginuseddate)" +
  6778. " from TP_PC_GROUTINGLINEDETAIL ld" +
  6779. " where ld.groutinglineid = l.groutinglineid" +
  6780. " and ld.valueflag = '1'),l.beginuseddate)" +
  6781. " where l.groutinglineid = " + groutingLineEntity.GROUTINGLINEID;
  6782. oracleTrConn.ExecuteNonQuery(sqlLine, null);
  6783. //提交事务
  6784. oracleTrConn.Commit();
  6785. oracleTrConn.Disconnect();
  6786. }
  6787. catch (Exception ex)
  6788. {
  6789. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6790. {
  6791. oracleTrConn.Rollback();
  6792. oracleTrConn.Disconnect();
  6793. }
  6794. throw ex;
  6795. }
  6796. return sre;
  6797. }
  6798. /// <summary>
  6799. /// 上模
  6800. /// </summary>
  6801. public static ServiceResultEntity UpdateGroutingLine_AddMould(int groutingLineID, string groutingLineCode, DateTime lineTimeStamp,
  6802. DataTable detailList, SUserInfo user)
  6803. {
  6804. ServiceResultEntity sre = new ServiceResultEntity();
  6805. int returnRows = 0;
  6806. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6807. try
  6808. {
  6809. oracleTrConn.Connect();
  6810. if (detailList != null)
  6811. {
  6812. // 验证模具条码
  6813. DataRow[] moulds = detailList.Select("MouldID is not null and GroutingLineDetailID = 0");
  6814. if (moulds != null && moulds.Length > 0)
  6815. {
  6816. List<string> ids = new List<string>();
  6817. foreach (DataRow item in moulds)
  6818. {
  6819. //ids.Add(item["MouldID"].ToString());
  6820. string id = item["MouldID"].ToString();
  6821. if (!ids.Contains(id))
  6822. {
  6823. ids.Add(id);
  6824. }
  6825. }
  6826. string idswhere = string.Join(",", ids);
  6827. string sql = "select mouldid from tp_pc_mould m where m.mouldid in (" + idswhere + ") for update";
  6828. oracleTrConn.GetSqlResultToDt(sql);
  6829. sql = "select mouldbarcode from tp_pc_mould m where m.mouldstatus not in (1,3) and m.mouldid in (" + idswhere + ")";
  6830. DataTable dt = oracleTrConn.GetSqlResultToDt(sql);
  6831. if (dt != null && dt.Rows.Count > 0)
  6832. {
  6833. ids.Clear();
  6834. foreach (DataRow item in dt.Rows)
  6835. {
  6836. ids.Add(item["mouldbarcode"].ToString());
  6837. }
  6838. sre.Status = Constant.ServiceResultStatus.Other;
  6839. sre.OtherStatus = -100;
  6840. sre.Message = "以下模具的状态不是【在库】或【待产】,不能添加到成型线。" + System.Environment.NewLine
  6841. + string.Join(",", ids);
  6842. return sre;
  6843. }
  6844. }
  6845. }
  6846. //修改成型线信息
  6847. StringBuilder sbSql = new StringBuilder();
  6848. sbSql.Append("update TP_PC_GroutingLine SET ");
  6849. sbSql.Append("MouldQuantity=MouldQuantity+:MouldQuantity,");
  6850. sbSql.Append("UpdateUserID=:UpdateUserID");
  6851. sbSql.Append(" where GroutingLineID=:GroutingLineID and OPTimeStamp=:OPTimeStamp");
  6852. OracleParameter[] Paras = new OracleParameter[] {
  6853. new OracleParameter(":MouldQuantity",OracleDbType.Decimal,
  6854. (detailList == null ? 0 : detailList.Rows.Count), ParameterDirection.Input),
  6855. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6856. user.UserID,ParameterDirection.Input),
  6857. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6858. groutingLineID,ParameterDirection.Input),
  6859. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  6860. lineTimeStamp,ParameterDirection.Input),
  6861. };
  6862. //执行修改语句
  6863. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  6864. //时间戳无法匹配
  6865. if (returnRows == 0)
  6866. {
  6867. oracleTrConn.Rollback();
  6868. oracleTrConn.Disconnect();
  6869. sre.Status = Constant.ServiceResultStatus.Other;
  6870. sre.OtherStatus = -500;
  6871. return sre;
  6872. }
  6873. int detailReturn = 0;
  6874. if (detailList != null && detailList.Rows.Count > 0)
  6875. {
  6876. // 一模多产时,同一模具只操作一次。 add by chenxy 2018-10-29
  6877. List<int> mouldIDs = new List<int>();
  6878. // 获得账务日期
  6879. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  6880. //添加修改时新建的模具信息
  6881. foreach (DataRow detailInfo in detailList.Rows)
  6882. {
  6883. int detailID = Convert.ToInt32(detailInfo["GroutingLineDetailID"]);
  6884. // 编辑
  6885. if (detailID > 0)
  6886. {
  6887. sbSql.Clear();
  6888. sbSql.Append("Update TP_PC_GroutingLineDetail set Remarks=:Remarks,UpdateUserID=:UpdateUserID,StandardGroutingCount=:StandardGroutingCount where GroutingLineDetailID=:GroutingLineDetailID");
  6889. OracleParameter[] DetailUpdateParas = new OracleParameter[] {
  6890. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6891. detailID,ParameterDirection.Input),
  6892. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6893. detailInfo["REMARKS"],ParameterDirection.Input),
  6894. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6895. user.UserID,ParameterDirection.Input),
  6896. new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
  6897. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6898. };
  6899. //执行
  6900. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailUpdateParas);
  6901. continue;
  6902. }
  6903. //模具明细编号唯一
  6904. if (GroutingLineDetailCodeIsRepeat(detailInfo["GROUTINGMOULDCODE"].ToString(), user.AccountID) == false)
  6905. {
  6906. oracleTrConn.Rollback();
  6907. oracleTrConn.Disconnect();
  6908. sre.Status = Constant.ServiceResultStatus.Other;
  6909. sre.OtherStatus = -2;
  6910. sre.Message = "成型模具号【" + detailInfo["GROUTINGMOULDCODE"] + "】已存在,请确认。";
  6911. return sre;
  6912. }
  6913. //获取模具明细索引
  6914. sbSql.Clear();
  6915. sbSql.Append("select SEQ_PC_GroutingLineDetail_ID.nextval from dual");
  6916. detailID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  6917. if (detailInfo["MouldID"] + "" == "" && detailInfo["MouldCode"] + "" == "")
  6918. {
  6919. detailInfo["MouldCode"] = System.Guid.NewGuid().ToString();
  6920. }
  6921. sbSql.Clear();
  6922. //插入新增的模具信息
  6923. sbSql.Append("Insert into TP_PC_GroutingLineDetail");
  6924. sbSql.Append("(GroutingLineDetailID,GroutingLineID,GroutingMouldCode,GoodsID,StandardGroutingCount,GroutingCount,");
  6925. sbSql.Append("GMouldStatus,BeginUsedDate,Remarks,AccountID,");
  6926. sbSql.Append("MouldSource,MouldID,MouldCode,MouldOutputNo,");
  6927. sbSql.Append("CreateUserID,UpdateUserID)");
  6928. sbSql.Append("Values(:GroutingLineDetailID,:GroutingLineID,:GroutingMouldCode,:GoodsID,:StandardGroutingCount,:GroutingCount,");
  6929. sbSql.Append(":GMouldStatus,:BeginUsedDate,:Remarks,:AccountID,");
  6930. sbSql.Append(":MouldSource,:MouldID,:MouldCode,:MouldOutputNo,");
  6931. sbSql.Append(":CreateUserID,:UpdateUserID)");
  6932. OracleParameter[] DetailParas = new OracleParameter[] {
  6933. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  6934. detailID,ParameterDirection.Input),
  6935. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  6936. groutingLineID,ParameterDirection.Input),
  6937. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  6938. detailInfo["GROUTINGMOULDCODE"],ParameterDirection.Input),
  6939. new OracleParameter(":GoodsID",OracleDbType.Int32,
  6940. detailInfo["GOODSID"],ParameterDirection.Input),
  6941. new OracleParameter(":StandardGroutingCount",OracleDbType.Decimal,
  6942. detailInfo["StandardGroutingCount"],ParameterDirection.Input),
  6943. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  6944. detailInfo["GROUTINGCOUNT"],ParameterDirection.Input),
  6945. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  6946. 1, ParameterDirection.Input),
  6947. new OracleParameter(":BeginUsedDate",OracleDbType.Date,
  6948. accountDate,ParameterDirection.Input),
  6949. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  6950. detailInfo["REMARKS"],ParameterDirection.Input),
  6951. new OracleParameter(":AccountID",OracleDbType.Int32,
  6952. user.AccountID,ParameterDirection.Input),
  6953. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  6954. user.UserID,ParameterDirection.Input),
  6955. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  6956. user.UserID,ParameterDirection.Input),
  6957. new OracleParameter(":MouldSource",OracleDbType.Char,
  6958. detailInfo["MouldSource"],ParameterDirection.Input),
  6959. new OracleParameter(":MouldID",OracleDbType.Int32,
  6960. detailInfo["MouldID"],ParameterDirection.Input),
  6961. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  6962. detailInfo["MouldCode"],ParameterDirection.Input),
  6963. new OracleParameter(":MouldOutputNo",OracleDbType.Int32,
  6964. detailInfo["MouldOutputNo"],ParameterDirection.Input),
  6965. };
  6966. //执行
  6967. detailReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DetailParas);
  6968. // 非条码模具
  6969. if (detailInfo["MouldID"] + "" == "")
  6970. {
  6971. continue;
  6972. }
  6973. // 一模多产时,同一模具只操作一次。(不能有多履历,会导致模具收发存等报表统计错误) add by chenxy 2018-10-29
  6974. int mID = Convert.ToInt32(detailInfo["MouldID"]);
  6975. object mOutputNo = detailInfo["MouldOutputNo"];
  6976. if (mOutputNo != null && mOutputNo != DBNull.Value)
  6977. {
  6978. string sql = "UPDATE tp_pc_mouldoutput m\n" +
  6979. " SET m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  6980. " WHERE m.mouldid = :mouldid and m.OutputNo=:OutputNo";
  6981. OracleParameter[] oparas = new OracleParameter[]
  6982. {
  6983. new OracleParameter(":OutputNo", OracleDbType.Int32,
  6984. mOutputNo, ParameterDirection.Input),
  6985. new OracleParameter(":mouldid", OracleDbType.Int32,
  6986. mID, ParameterDirection.Input),
  6987. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  6988. detailID, ParameterDirection.Input),
  6989. };
  6990. returnRows += oracleTrConn.ExecuteNonQuery(sql, oparas);
  6991. }
  6992. if (mouldIDs.Contains(mID))
  6993. {
  6994. continue;
  6995. }
  6996. mouldIDs.Add(mID);
  6997. // 添加模具履历
  6998. int mouldHistoryID = Convert.ToInt32(oracleTrConn.GetSqlResultToObj("select seq_pc_mouldhistory_id.nextval from dual "));
  6999. string sqlString =
  7000. "INSERT INTO tp_pc_mouldchangehistory\n" +
  7001. " (CHANGEID\n" +
  7002. " ,MOULDID\n" +
  7003. " ,MOULDCODE\n" +
  7004. " ,MOULDBARCODE\n" +
  7005. " ,GOODSID\n" +
  7006. " ,GOODSCODE\n" +
  7007. " ,OPERATIONTYPE\n" +
  7008. " ,GroutingLineDetailID\n" +
  7009. " ,MOULDSTATUS\n" +
  7010. " ,MOULDSTATUSAFTER\n" +
  7011. " ,GROUTINGNUM\n" +
  7012. " ,REMARKS\n" +
  7013. " ,CHANGEFLAG\n" +
  7014. " ,ACCOUNTID\n" +
  7015. " ,CREATEUSERID)\n" +
  7016. " SELECT :changeID\n" +
  7017. " ,:mouldid\n" +
  7018. " ,:MOULDCODE\n" +
  7019. " ,m.mouldbarcode\n" +
  7020. " ,m.goodsid\n" +
  7021. " ,m.goodscode\n" +
  7022. " ,decode(m.mouldstatus, 1, 6, 3, 10) OPERATIONTYPE\n" +
  7023. " ,:GroutingLineDetailID\n" +
  7024. " ,m.mouldstatus\n" +
  7025. " ,2\n" +
  7026. " ,m.groutingnum\n" +
  7027. " ,:REMARKS\n" +
  7028. " ,decode(m.mouldstatus, 1, '2', 3, '0') CHANGEFLAG\n" +
  7029. " ,:ACCOUNTID\n" +
  7030. " ,:USERID\n" +
  7031. " FROM tp_pc_mould m\n" +
  7032. " WHERE m.mouldid = :mouldid";
  7033. OracleParameter[] paras = new OracleParameter[]
  7034. {
  7035. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  7036. detailID, ParameterDirection.Input),
  7037. new OracleParameter(":changeID", OracleDbType.Int32,
  7038. mouldHistoryID, ParameterDirection.Input),
  7039. new OracleParameter(":MouldID", OracleDbType.Int32,
  7040. detailInfo["MouldID"], ParameterDirection.Input),
  7041. new OracleParameter(":MOULDCODE", OracleDbType.Varchar2,
  7042. detailInfo["MOULDCODE"], ParameterDirection.Input),
  7043. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,
  7044. detailInfo["Remarks"], ParameterDirection.Input),
  7045. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,
  7046. user.AccountID, ParameterDirection.Input),
  7047. new OracleParameter(":USERID", OracleDbType.Int32,
  7048. user.UserID, ParameterDirection.Input),
  7049. };
  7050. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  7051. // 修改模具状态
  7052. sqlString = "UPDATE tp_pc_mould m\n" +
  7053. " SET m.premouldstatus = m.mouldstatus\n" +
  7054. " ,m.mouldstatus = :mouldstatus\n" +
  7055. " ,m.updateuserid = :userid\n" +
  7056. " ,m.lastchangehistoryid = :changeid\n" +
  7057. " ,m.GroutingLineDetailID = :GroutingLineDetailID\n" +
  7058. " WHERE m.mouldid = :mouldid";
  7059. paras = new OracleParameter[]
  7060. {
  7061. new OracleParameter(":mouldstatus", OracleDbType.Int32,
  7062. (int)Constant.MouldStatus.OnLine, ParameterDirection.Input),
  7063. new OracleParameter(":changeid", OracleDbType.Int32,
  7064. mouldHistoryID, ParameterDirection.Input),
  7065. new OracleParameter(":userid", OracleDbType.Int32,
  7066. user.UserID, ParameterDirection.Input),
  7067. new OracleParameter(":mouldid", OracleDbType.Int32,
  7068. detailInfo["MouldID"], ParameterDirection.Input),
  7069. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32,
  7070. detailID, ParameterDirection.Input),
  7071. };
  7072. detailReturn += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  7073. }
  7074. }
  7075. // 庆祥要求,整线换模或变产后,成型线开始使用日期是成型线中模具最小开始使用日期。
  7076. string sqlLine = "update TP_PC_GROUTINGLINE l " +
  7077. " set l.beginuseddate =" +
  7078. " nvl((select min(ld.beginuseddate)" +
  7079. " from TP_PC_GROUTINGLINEDETAIL ld" +
  7080. " where ld.groutinglineid = l.groutinglineid" +
  7081. " and ld.valueflag = '1'),l.beginuseddate)" +
  7082. " where l.groutinglineid = " + groutingLineID;
  7083. oracleTrConn.ExecuteNonQuery(sqlLine, null);
  7084. //提交事务
  7085. oracleTrConn.Commit();
  7086. oracleTrConn.Disconnect();
  7087. }
  7088. catch (Exception ex)
  7089. {
  7090. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  7091. {
  7092. oracleTrConn.Rollback();
  7093. oracleTrConn.Disconnect();
  7094. }
  7095. throw ex;
  7096. }
  7097. return sre;
  7098. }
  7099. }
  7100. }