PCModuleLogicDALPartial.cs 336 KB

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