PMModuleLogic.cs 517 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PMModuleLogic.cs
  5. * 2.功能描述:生产管理服务端业务逻辑
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2015/03/21 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Text;
  14. using Curtain.DataAccess;
  15. using Dongke.IBOSS.PRD.Basics.BaseResources;
  16. using Dongke.IBOSS.PRD.Basics.DataAccess;
  17. using Dongke.IBOSS.PRD.Service.CMNModuleService;
  18. using Dongke.IBOSS.PRD.Service.DataModels;
  19. using Dongke.IBOSS.PRD.WCF.DataModels;
  20. using Dongke.WinForm.Utilities;
  21. using Oracle.ManagedDataAccess.Client;
  22. using DataBaseType = Curtain.DataAccess.DataBaseType;
  23. using System.Threading;
  24. using System.Data.SqlTypes;
  25. using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
  26. namespace Dongke.IBOSS.PRD.Service.PMModuleService
  27. {
  28. /// <summary>
  29. /// 生产管理服务端业务逻辑
  30. /// </summary>
  31. public static class PMModuleLogic
  32. {
  33. #region 注浆管理
  34. #region 注浆登记一览
  35. /// <summary>
  36. /// 取得FPM0101画面(注浆登记)的初始化数据
  37. /// </summary>
  38. /// <param name="user">登录用户信息</param>
  39. /// <returns>初始化数据</returns>
  40. public static ServiceResultEntity GetFPM0101IData(SUserInfo user)
  41. {
  42. IDBConnection conn = null;
  43. try
  44. {
  45. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  46. DataTable dataTable = CMNModuleLogic.GetTP_MST_GMouldType(conn, user, Constant.ValueFlag.Effective);
  47. ServiceResultEntity sre = new ServiceResultEntity();
  48. sre.Data = new DataSet();
  49. sre.Data.Tables.Add(dataTable);
  50. return sre;
  51. }
  52. catch (Exception ex)
  53. {
  54. throw ex;
  55. }
  56. finally
  57. {
  58. if (conn != null &&
  59. conn.ConnState == ConnectionState.Open)
  60. {
  61. conn.Close();
  62. }
  63. }
  64. }
  65. /// <summary>
  66. /// 取得FPM0101画面(注浆登记)的查询数据
  67. /// </summary>
  68. /// <param name="user">登录用户信息</param>
  69. /// <param name="ids">多个注浆id(用[,]分开)</param>
  70. /// <returns>查询结果</returns>
  71. public static ServiceResultEntity GetFPM0101SData(SUserInfo user, string ids)
  72. {
  73. IDBConnection conn = null;
  74. try
  75. {
  76. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  77. List<OracleParameter> parameters = new List<OracleParameter>();
  78. StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0101SSQL());
  79. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  80. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  81. //if (!string.IsNullOrWhiteSpace(ids))
  82. {
  83. ids = "," + ids + ",";
  84. sql.Append(" AND INSTR(:GroutingDailyIDs, ',' || GD.GroutingDailyID || ',') > 0");
  85. parameters.Add(new OracleParameter(":GroutingDailyIDs", OracleDbType.Varchar2, ids, ParameterDirection.Input));
  86. }
  87. sql.Append(" ORDER BY GDD.GroutingLineCode, GDD.GroutingDate, GDD.GroutingDailyID, GDD.GroutingMouldCode");
  88. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  89. ServiceResultEntity sre = new ServiceResultEntity();
  90. if (data == null || data.Rows.Count == 0)
  91. {
  92. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  93. return sre;
  94. }
  95. sre.Data = new DataSet();
  96. sre.Data.Tables.Add(data);
  97. return sre;
  98. }
  99. catch (Exception ex)
  100. {
  101. throw ex;
  102. }
  103. finally
  104. {
  105. if (conn != null &&
  106. conn.ConnState == ConnectionState.Open)
  107. {
  108. conn.Close();
  109. }
  110. }
  111. }
  112. /// <summary>
  113. /// 取得FPM0101画面(注浆登记)的查询数据
  114. /// </summary>
  115. /// <param name="user">登录用户信息</param>
  116. /// <param name="se">查询条件</param>
  117. /// <returns>查询结果</returns>
  118. public static ServiceResultEntity GetFPM0101SData(SUserInfo user, FPM0101_SE se)
  119. {
  120. IDBConnection conn = null;
  121. try
  122. {
  123. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  124. List<OracleParameter> paras = new List<OracleParameter>();
  125. if (se != null)
  126. {
  127. // 成型线编码
  128. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  129. {
  130. paras.Add(new OracleParameter("in_GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  131. }
  132. else {
  133. paras.Add(new OracleParameter("in_GroutingLineCode", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  134. }
  135. // 成型线名称
  136. if (!string.IsNullOrEmpty(se.GroutingLineName))
  137. {
  138. paras.Add(new OracleParameter("in_GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  139. }
  140. else
  141. {
  142. paras.Add(new OracleParameter("in_GroutingLineName", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  143. }
  144. // 成型线类别
  145. if (se.GMouldTypeID.HasValue)
  146. {
  147. paras.Add(new OracleParameter("in_GMouldTypeID", OracleDbType.NVarchar2, se.GMouldTypeID, ParameterDirection.Input));
  148. }
  149. else
  150. {
  151. paras.Add(new OracleParameter("in_GMouldTypeID", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  152. }
  153. // 注浆批次
  154. if (se.GroutingBatchNo.HasValue)
  155. {
  156. paras.Add(new OracleParameter("in_GroutingBatchNo", OracleDbType.NVarchar2, se.GroutingBatchNo, ParameterDirection.Input));
  157. }
  158. else
  159. {
  160. paras.Add(new OracleParameter("in_GroutingBatchNo", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  161. }
  162. // 注浆模具编号
  163. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  164. {
  165. paras.Add(new OracleParameter("in_GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  166. }
  167. else
  168. {
  169. paras.Add(new OracleParameter("in_GroutingMouldCode", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  170. }
  171. // 产品编号
  172. if (!string.IsNullOrEmpty(se.GoodsCode))
  173. {
  174. paras.Add(new OracleParameter("in_GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  175. }
  176. else
  177. {
  178. paras.Add(new OracleParameter("in_GoodsCode", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  179. }
  180. // 产品名称
  181. if (!string.IsNullOrEmpty(se.GoodsName))
  182. {
  183. paras.Add(new OracleParameter("in_GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
  184. }
  185. else
  186. {
  187. paras.Add(new OracleParameter("in_GoodsName", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  188. }
  189. // 备注
  190. if (!string.IsNullOrEmpty(se.Remarks))
  191. {
  192. paras.Add(new OracleParameter("in_Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  193. }
  194. else
  195. {
  196. paras.Add(new OracleParameter("in_Remarks", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  197. }
  198. // 注浆标识
  199. if (!string.IsNullOrEmpty(se.GroutingFlag))
  200. {
  201. paras.Add(new OracleParameter("in_GroutingFlag", OracleDbType.NVarchar2, se.GroutingFlag, ParameterDirection.Input));
  202. }
  203. else
  204. {
  205. paras.Add(new OracleParameter("in_GroutingFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  206. }
  207. // 损坯标识
  208. if (!string.IsNullOrEmpty(se.ScrapFlag))
  209. {
  210. paras.Add(new OracleParameter("in_ScrapFlag", OracleDbType.NVarchar2, se.ScrapFlag, ParameterDirection.Input));
  211. }
  212. else
  213. {
  214. paras.Add(new OracleParameter("in_ScrapFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  215. }
  216. // 成型工号
  217. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  218. {
  219. paras.Add(new OracleParameter("in_GroutingUser", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  220. }
  221. else
  222. {
  223. paras.Add(new OracleParameter("in_GroutingUser", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  224. }
  225. // 条码
  226. if (!string.IsNullOrEmpty(se.BarCode))
  227. {
  228. paras.Add(new OracleParameter("in_BARCODE", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  229. }
  230. else
  231. {
  232. paras.Add(new OracleParameter("in_BARCODE", OracleDbType.NVarchar2,DBNull.Value, ParameterDirection.Input));
  233. }
  234. // 绑定条码
  235. if (!string.IsNullOrEmpty(se.BarCodeFlag))
  236. {
  237. paras.Add(new OracleParameter("in_BarCodeFlag", OracleDbType.NVarchar2, se.BarCodeFlag, ParameterDirection.Input));
  238. }
  239. else {
  240. paras.Add(new OracleParameter("in_BarCodeFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  241. }
  242. // 交坯标识
  243. if (!string.IsNullOrEmpty(se.DeliverFlag))
  244. {
  245. paras.Add(new OracleParameter("in_DeliverFlag", OracleDbType.NVarchar2, se.DeliverFlag, ParameterDirection.Input));
  246. }
  247. else
  248. {
  249. paras.Add(new OracleParameter("in_DeliverFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  250. }
  251. // 试验标识
  252. if (!string.IsNullOrEmpty(se.TestMouldFlag))
  253. {
  254. paras.Add(new OracleParameter("in_TestMouldFlag", OracleDbType.NVarchar2, se.TestMouldFlag, ParameterDirection.Input));
  255. }
  256. else
  257. {
  258. paras.Add(new OracleParameter("in_TestMouldFlag", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  259. }
  260. // 工段250306
  261. if (!string.IsNullOrEmpty(se.GroutingLineNo))
  262. {
  263. paras.Add(new OracleParameter("in_GroutingLineNo", OracleDbType.NVarchar2, se.GroutingLineNo, ParameterDirection.Input));
  264. }
  265. else
  266. {
  267. paras.Add(new OracleParameter("in_GroutingLineNo", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  268. }
  269. // 车间250306
  270. if (!string.IsNullOrEmpty(se.WorkShop))
  271. {
  272. paras.Add(new OracleParameter("in_WorkShop", OracleDbType.NVarchar2, se.WorkShop, ParameterDirection.Input));
  273. }
  274. else
  275. {
  276. paras.Add(new OracleParameter("in_WorkShop", OracleDbType.NVarchar2, DBNull.Value, ParameterDirection.Input));
  277. }
  278. }
  279. paras.Add(new OracleParameter("in_GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
  280. paras.Add(new OracleParameter("in_GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  281. paras.Add(new OracleParameter("in_DeliverTimeBegin", OracleDbType.Date, se.DeliverTimeBegin==null? SqlDateTime.MinValue.Value: se.DeliverTimeBegin.Value, ParameterDirection.Input));
  282. paras.Add(new OracleParameter("in_DeliverTimeEnd", OracleDbType.Date, se.DeliverTimeEnd == null ? SqlDateTime.MaxValue.Value : se.DeliverTimeEnd.Value.AddDays(1), ParameterDirection.Input));
  283. paras.Add(new OracleParameter("in_AccountID", OracleDbType.NVarchar2, user.AccountID, ParameterDirection.Input));
  284. paras.Add(new OracleParameter("in_UPUserId", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
  285. paras.Add(new OracleParameter("out_result", OracleDbType.RefCursor, null, ParameterDirection.Output));
  286. DataSet ds = conn.ExecStoredProcedure("PRO_RPT_F_PM_0101_New", paras.ToArray());
  287. ServiceResultEntity sre = new ServiceResultEntity();
  288. if (ds == null || ds.Tables.Count == 0)
  289. {
  290. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  291. return sre;
  292. }
  293. sre.Data = ds;
  294. return sre;
  295. }
  296. catch (Exception ex)
  297. {
  298. throw ex;
  299. }
  300. finally
  301. {
  302. if (conn != null &&
  303. conn.ConnState == ConnectionState.Open)
  304. {
  305. conn.Close();
  306. }
  307. }
  308. }
  309. /// <summary>
  310. /// 获取查询sql
  311. /// </summary>
  312. /// <returns>sql</returns>
  313. private static string GetFPM0101SSQL()
  314. {
  315. string selSql = @"SELECT
  316. GROUPING_ID (TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd'),GDD.GroutingLineCode,GDD.GoodsCode) GID,
  317. COUNT(1) AS NUMS,
  318. CASE
  319. WHEN GDD.GroutingDailyDetailID IS NULL AND GROUPING_ID(TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd'),GDD.GroutingLineCode,GDD.GoodsCode) =0 THEN '小计:'||TO_CHAR(GDD.GroutingLineCode)
  320. WHEN GDD.GroutingDailyDetailID IS NULL AND GROUPING_ID(TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd'),GDD.GroutingLineCode,GDD.GoodsCode) =5 THEN '合计:'||TO_CHAR(GDD.GroutingLineCode)
  321. WHEN GDD.GroutingDailyDetailID IS NULL AND GROUPING_ID(TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd'),GDD.GroutingLineCode,GDD.GoodsCode) =7 THEN '总计'
  322. ELSE TO_CHAR(GDD.GroutingLineCode) end GroutingLineCode,
  323. GDD.GroutingDailyDetailID,
  324. GDD.GroutingDailyID,
  325. GDD.GroutingLineDetailID,
  326. GDD.GroutingLineID,
  327. GDD.GroutingLineName,
  328. TO_CHAR(GDD.GroutingDate,'yyyy-mm-dd') AS GroutingDate,
  329. GDD.GroutingBatchNo,
  330. GDD.UserCode,
  331. GDD.GoodsCode,
  332. GDD.GoodsName,
  333. GDD.SLURRY_WEIGHT,
  334. GDD.GroutingMouldCode,
  335. GMS.GMouldStatusName,
  336. GDD.GroutingFlag,
  337. decode( ML.LogoID, NULL, NULL, to_char( ML.LogoName || '[' || ML.LogoCode || ']' ) ) LogoNameCode,
  338. DD.DictionaryValue AS NoGroutingRreason,
  339. GDD.GroutingCount,
  340. GDD.ScrapFlag,
  341. GDD.Remarks,
  342. GMT.GMouldTypeName,
  343. GDD.BarCode,
  344. PRO.PROCEDURENAME,
  345. GDD.DeliverTime,
  346. GDD.DeliverFlag,
  347. MU.UserName AS MONITORName,
  348. GDD.CreateTime,
  349. U.UserName AS Createuser,
  350. GDD.TestFlag,
  351. GDD.TestMouldFlag,
  352. CASE
  353. WHEN GDD.TestFlag = 1 THEN
  354. '试验线'
  355. WHEN GDD.TestFlag = 0 THEN
  356. '普通线'
  357. END TestFlagName,
  358. STAFF.STAFFNAME
  359. FROM
  360. TP_PM_GroutingDaily GD
  361. INNER JOIN TP_PM_GroutingDailyDetail GDD ON GD.GroutingDailyID = GDD.GroutingDailyID
  362. LEFT JOIN TP_PM_INPRODUCTION IP ON IP.GroutingDailyDetailID = gdd.GroutingDailyDetailID
  363. LEFT JOIN TP_PC_PROCEDURE PRO ON PRO.PROCEDUREID = IP.PROCEDUREID
  364. INNER JOIN TP_MST_GMouldType GMT ON GD.GMouldTypeID = GMT.GMouldTypeID
  365. INNER JOIN TP_SYS_GMouldStatus GMS ON GMS.GMouldStatusID = GDD.GMouldStatus
  366. INNER JOIN TP_MST_User U ON U.UserID = GDD.CreateUserID
  367. LEFT JOIN tp_pc_groutingline gl ON gl.groutinglineid = GDD.GroutingLineID
  368. LEFT JOIN tp_mst_user mu ON mu.userid = gl.MONITORID
  369. LEFT JOIN TP_MST_DataDictionary DD ON DD.DictionaryID = GDD.NoGroutingRreason
  370. LEFT JOIN TP_MST_Logo ML ON ML.LogoID = GDD.LogoID
  371. LEFT JOIN (
  372. SELECT
  373. D.CLASSESSETTINGID,LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  374. FROM
  375. ( SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D
  376. GROUP BY D.CLASSESSETTINGID ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  377. WHERE
  378. GD.AccountID =1
  379. AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
  380. selSql += @"AND EXISTS(
  381. SELECT
  382. UP.PurviewID
  383. FROM
  384. TP_MST_UserPurview UP
  385. WHERE
  386. UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'";
  387. selSql +=@"AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)
  388. AND UP.UserId = :UPUserId )";
  389. return selSql;
  390. }
  391. #endregion 注浆登记一览
  392. #region 注浆登记
  393. /// <summary>
  394. /// 取得FPM0102画面(注浆登记)的初始化数据
  395. /// </summary>
  396. /// <param name="user">登录用户信息</param>
  397. /// <param name="groutingDailyID">注浆日报ID</param>
  398. /// <returns>
  399. /// 初始化数据
  400. /// 注浆数据
  401. /// OtherStatus = 1:没有可编辑的注浆信息
  402. /// OtherStatus = 2:没有可编辑的注浆明细信息
  403. /// </returns>
  404. public static ServiceResultEntity GetFPM0102IData(SUserInfo user, int groutingDailyID)
  405. {
  406. IDBConnection conn = null;
  407. try
  408. {
  409. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  410. ServiceResultEntity sre = new ServiceResultEntity();
  411. DataTable dataTable = CMNModuleLogic.GetTP_MST_DataDictionary(conn, user, Constant.DictionaryType.TPC004, Constant.ValueFlag.Effective);
  412. // 账务日期
  413. object date = CMNModuleLogic.GetAccountDate(conn, user);
  414. if (date == null || date == DBNull.Value)
  415. {
  416. // 服务器时间错误
  417. //throw new Exception("SystemDateTimeError");
  418. sre.Status = Constant.ServiceResultStatus.AccountDateError;
  419. return sre;
  420. }
  421. sre.Data = new DataSet();
  422. dataTable.TableName = Constant.DictionaryType.TPC004.ToString();
  423. sre.Data.Tables.Add(dataTable);
  424. sre.Result = date;
  425. // 编辑时,取得注浆日报信息
  426. if (groutingDailyID > 0)
  427. {
  428. StringBuilder sql = new StringBuilder();
  429. List<OracleParameter> parameters = new List<OracleParameter>();
  430. string gdSql =
  431. "SELECT GD.GroutingDailyID," +
  432. " GD.GroutingLineID," +
  433. " GD.GroutingLineCode," +
  434. " GD.GroutingLineName," +
  435. " GD.MouldQuantity," +
  436. " GD.GroutingDate," +
  437. " GD.OPTimeStamp" +
  438. " FROM TP_PM_GroutingDaily GD" +
  439. " WHERE GD.AccountID = :AccountID" +
  440. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  441. // 成型线操作权限
  442. " AND EXISTS (SELECT UP.PurviewID" +
  443. " FROM TP_MST_UserPurview UP" +
  444. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  445. " AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
  446. " AND UP.UserId = :UPUserId)" +
  447. " AND GD.GroutingDailyID = :GroutingDailyID";
  448. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  449. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  450. parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
  451. DataTable gdData = conn.GetSqlResultToDt(gdSql, parameters.ToArray());
  452. if (gdData == null || gdData.Rows.Count == 0)
  453. {
  454. // 没有可编辑的注浆信息
  455. sre.Status = Constant.ServiceResultStatus.Other;
  456. sre.OtherStatus = 1;
  457. sre.Message = "没有可编辑的注浆信息";
  458. return sre;
  459. }
  460. gdData.TableName = "TP_PM_GroutingDaily";
  461. sre.Data.Tables.Add(gdData);
  462. string gddSql =
  463. "SELECT GDD.GroutingDailyID," +
  464. " GDD.GroutingDailyDetailID," +
  465. " GDD.GroutingLineID," +
  466. " GDD.GroutingLineDetailID," +
  467. " GDD.GroutingLineCode," +
  468. " GDD.GroutingLineName," +
  469. " GDD.GroutingDate," +
  470. " GDD.GroutingBatchNo," +
  471. " GDD.GroutingMouldCode," +
  472. //" GDD.MouldCode," +
  473. //" GDD.UserID as GroutingUserID," +
  474. " GDD.UserCode as GroutingUserCode," +
  475. " Gl.MONITORID," +
  476. " DECODE(MU.USERID,NULL,'', MU.USERNAME || '[' || MU.USERCODE || ']') MONITORCODE," +
  477. " GDD.GoodsCode," +
  478. " GDD.GoodsName," +
  479. //" GDD.GMouldStatus," +
  480. " GMS.GMouldStatusName," +
  481. " GDD.GroutingFlag," +
  482. " GDD.NoGroutingRreason," +
  483. " GDD.Remarks," +
  484. " GDD.ScrapFlag," +
  485. " GDD.LogoID," +
  486. " GDD.DeliverFlag," +
  487. " GDD.BarCode" +
  488. " ,STAFF.STAFFNAME" +
  489. " FROM TP_PM_GroutingDailyDetail GDD" +
  490. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  491. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  492. " INNER JOIN TP_PM_GROUTINGDAILY GL ON GL.GROUTINGDAILYID = GDD.GROUTINGDAILYID" +
  493. " LEFT JOIN TP_MST_USER MU ON MU.USERID = GL.MONITORID" +
  494. // fenglinyong add 添加员工姓名 2022-08-31
  495. " LEFT JOIN (" +
  496. " SELECT" +
  497. " D.CLASSESSETTINGID," +
  498. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME " +
  499. " FROM" +
  500. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D" +
  501. " GROUP BY" +
  502. " D.CLASSESSETTINGID" +
  503. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID" +
  504. // fenglinyong add 添加员工姓名 2022-08-31
  505. //" INNER JOIN TP_MST_Goods MG" +
  506. //" ON MG.Goodsid = GLD.GoodsID" +
  507. //" INNER JOIN TP_MST_User U" +
  508. //" ON U.Userid = GDD.Userid" +
  509. " WHERE GDD.AccountID = :AccountID" +
  510. " AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  511. " AND GDD.GroutingDailyID = :GroutingDailyID" +
  512. " ORDER BY GDD.GroutingMouldCode";
  513. parameters.Clear();
  514. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  515. parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
  516. DataTable gddData = conn.GetSqlResultToDt(gddSql, parameters.ToArray());
  517. if (gddData == null || gddData.Rows.Count == 0)
  518. {
  519. // 没有可注浆的模具
  520. sre.Status = Constant.ServiceResultStatus.Other;
  521. sre.OtherStatus = 2;
  522. sre.Message = "没有可编辑的注浆明细信息";
  523. return sre;
  524. }
  525. gddData.TableName = "TP_PM_GroutingDailyDetail";
  526. sre.Data.Tables.Add(gddData);
  527. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 begin
  528. sre.Result = 1;
  529. string spm022 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_022' and ss.AccountID = " + user.AccountID);
  530. int spm022Value = 0;
  531. if (!string.IsNullOrWhiteSpace(spm022) && int.TryParse(spm022, out spm022Value) && spm022Value > 0)
  532. {
  533. DateTime tDate = DateTime.Now.Date;
  534. DateTime lastDate = tDate.AddDays(1 - spm022Value);
  535. DateTime gData = (DateTime)gdData.Rows[0]["GroutingDate"];
  536. if (gData < lastDate || gData > tDate)
  537. {
  538. sre.Result = 0;
  539. sre.Message = string.Format("允许注浆编辑的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  540. }
  541. }
  542. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 end
  543. }
  544. return sre;
  545. }
  546. catch (Exception ex)
  547. {
  548. throw ex;
  549. }
  550. finally
  551. {
  552. if (conn != null &&
  553. conn.ConnState == ConnectionState.Open)
  554. {
  555. conn.Close();
  556. }
  557. }
  558. }
  559. /// <summary>
  560. /// 取得FPM0102画面(注浆登记)的成型线数据
  561. /// </summary>
  562. /// <param name="user">登录用户信息</param>
  563. /// <param name="groutingDate">注浆日期</param>
  564. /// <param name="groutingIDs">成型线ID(多个用【,】隔开)</param>
  565. /// <returns>
  566. /// 成型线数据
  567. /// OtherStatus = 1:注浆日期大于账务日期
  568. /// OtherStatus = 2:没有可注浆的成型线
  569. /// OtherStatus = 3:没有可注浆的模具
  570. /// </returns>
  571. public static ServiceResultEntity GetFPM0102_GroutingLine(SUserInfo user, DateTime? groutingDate, string groutingIDs)
  572. {
  573. IDBConnection conn = null;
  574. try
  575. {
  576. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  577. ServiceResultEntity sre = new ServiceResultEntity();
  578. // 账务日期
  579. object date = CMNModuleLogic.GetAccountDate(conn, user);
  580. if (date == null || date == DBNull.Value)
  581. {
  582. // 服务器时间错误
  583. //throw new Exception("SystemDateTimeError");
  584. sre.Status = Constant.ServiceResultStatus.AccountDateError;
  585. return sre;
  586. }
  587. DateTime accountDate = Convert.ToDateTime(date);
  588. // 成型线变更 ver41 by chenxy begin
  589. /* 注浆日期大于此成型线最后一次注浆日期
  590. if (groutingDate.HasValue && groutingDate > accountDate)
  591. {
  592. // 注浆日期大于账务日期
  593. sre.Status = Constant.ServiceResultStatus.Other;
  594. sre.OtherStatus = 1;
  595. sre.Message = string.Format("注浆日期({0})大于账务日期({1})",
  596. groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD),
  597. accountDate.ToString(Constant.S_DATE_YYYY_MM_DD));
  598. return sre;
  599. }
  600. */
  601. // 成型线变更 ver41 by chenxy end
  602. if (!groutingDate.HasValue)
  603. {
  604. groutingDate = accountDate;
  605. }
  606. sre.Result = groutingDate;
  607. // 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 begin
  608. string spm021 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_021' and ss.AccountID = " + user.AccountID);
  609. int spm021Value = 0;
  610. if (!string.IsNullOrWhiteSpace(spm021) && int.TryParse(spm021, out spm021Value) && spm021Value > 0)
  611. {
  612. DateTime tDate = DateTime.Now.Date;
  613. DateTime lastDate = tDate.AddDays(1 - spm021Value);
  614. if (groutingDate < lastDate || groutingDate > tDate)
  615. {
  616. sre.Status = Constant.ServiceResultStatus.Other;
  617. sre.OtherStatus = 1;
  618. sre.Message = string.Format("允许注浆登记的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  619. return sre;
  620. }
  621. }
  622. // 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 end
  623. StringBuilder sql = new StringBuilder();
  624. List<OracleParameter> parameters = new List<OracleParameter>();
  625. string glSql =
  626. "SELECT GL.GroutingLineID," +
  627. " GL.GroutingLineCode," +
  628. " GL.GroutingLineName," +
  629. " GL.MouldQuantity," +
  630. " GL.UserID," +
  631. " U.UserCode," +
  632. " GL.monitorid," +
  633. " mu.usercode monitorcode," +
  634. //" mu.username || '[' || mu.usercode || ']' monitorcode," +
  635. // 成型线变更 ver41 by chenxy begin
  636. /*
  637. " GL.UserCount," +
  638. " decode((GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
  639. " decode((GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
  640. //" GL.LastGroutingDate," +
  641. " GL.LastGroutingBatchNo," +
  642. " decode((GMT.CanManyTimes, '1', NULL, 1) GroutingNum," +
  643. " GMT.CanManyTimes," +
  644. */
  645. " decode(GMT.CanManyTimes, '1', decode(GL.LastGroutingDate, null, 1, :GroutingDate, NVL(GL.LastGroutingBatchNo, 1) + 1, 1), 1) GroutingBatchNo," +
  646. " GMT.CanManyTimes," +
  647. " GMT.GMouldTypeID," +
  648. " GMT.GMouldTypeName," +
  649. // 成型线变更 ver41 by chenxy end
  650. " GL.OPTimeStamp" +
  651. " FROM TP_PC_GroutingLine GL" +
  652. " INNER JOIN TP_MST_User U" +
  653. " ON U.UserID = GL.UserID " +
  654. " left JOIN TP_MST_User mU" +
  655. " ON mU.UserID = GL.monitorid" +
  656. " LEFT JOIN TP_MST_GMouldType GMT" +
  657. " ON GMT.GMouldTypeID = GL.GMouldTypeID " +
  658. //// 成型线操作权限
  659. //" INNER JOIN (SELECT UP.PurviewID" +
  660. //" FROM TP_MST_UserPurview UP" +
  661. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  662. //" AND UP.UserId = :UPUserId) UP" +
  663. //" ON UP.PurviewID = GL.GroutingLineID" +
  664. " WHERE GL.AccountID = :AccountID" +
  665. " AND GL.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  666. " AND GL.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
  667. // 成型线操作权限
  668. " AND EXISTS (SELECT UP.PurviewID" +
  669. " FROM TP_MST_UserPurview UP" +
  670. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  671. " AND (UP.PurviewID = -1 OR UP.PurviewID = GL.GroutingLineID)" +
  672. " AND UP.UserId = :UPUserId)" +
  673. // 未注浆
  674. // 成型线变更 ver41 by chenxy begin
  675. /*
  676. " AND NOT EXISTS (SELECT GD.GroutingDailyID" +
  677. " FROM TP_PM_GroutingDaily GD" +
  678. " WHERE GD.GroutingLineID = GL.GroutingLineID" +
  679. " AND GD.GroutingDate = :GroutingDate)"
  680. */
  681. // 注浆日期必须小于等于账务日期
  682. " AND :GroutingDate <= FUN_CMN_GetAccountDate(:AccountID)" +
  683. " AND (GL.LastGroutingDate IS NULL OR (GMT.CanManyTimes = '1' AND GL.LastGroutingDate <= :GroutingDate) OR (GMT.CanManyTimes <> '1' AND GL.LastGroutingDate < :GroutingDate))"
  684. // 成型线变更 ver41 by chenxy end
  685. // 有正常状态的模具
  686. + " AND EXISTS (SELECT 1 FROM TP_PC_GroutingLineDetail GLD WHERE GL.GroutingLineID = GLD.GroutingLineID AND GLD.ValueFlag = '1' AND GLD.GMouldStatus=1)"
  687. ;
  688. sql.Append(glSql);
  689. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  690. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  691. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value.Date, ParameterDirection.Input));
  692. if (!string.IsNullOrWhiteSpace(groutingIDs))
  693. {
  694. groutingIDs = "," + groutingIDs + ",";
  695. sql.Append(" AND INSTR(:GroutingLineIDs, ',' || GL.GroutingLineID || ',') > 0");
  696. parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
  697. }
  698. else
  699. {
  700. sql.Append(" AND GL.UserCount = 1");
  701. }
  702. sql.Append(" ORDER BY GroutingLineCode");
  703. DataTable glData = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  704. if (glData == null || glData.Rows.Count == 0)
  705. {
  706. // 没有可注浆的成型线
  707. sre.Status = Constant.ServiceResultStatus.Other;
  708. sre.OtherStatus = 2;
  709. sre.Message = string.Format("注浆日期({0})没有可注浆的成型线",
  710. groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
  711. return sre;
  712. }
  713. sre.Data = new DataSet();
  714. glData.TableName = "TP_PC_GroutingLine";
  715. sre.Data.Tables.Add(glData);
  716. groutingIDs = ",";
  717. foreach (DataRow row in glData.Rows)
  718. {
  719. groutingIDs += row["GroutingLineID"] + ",";
  720. }
  721. string gldSql =
  722. "SELECT GLD.GroutingLineID," +
  723. " GL.GroutingLineCode," +
  724. " GL.GroutingLineName," +
  725. " GLD.GroutingLineDetailID," +
  726. " GLD.GroutingMouldCode," +
  727. // 成型线变更 ver41 by chenxy begin
  728. //" GL.UserID," +
  729. //" U.UserCode," +
  730. //" GL.UserCount," +
  731. " decode(GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
  732. " decode(GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
  733. " decode(GMT.CanManyTimes, '1', decode(GL.LastGroutingDate, null, 1, :GroutingDate, NVL(GL.LastGroutingBatchNo, 1) + 1, 1), 1) GroutingBatchNo," +
  734. //" GMT.CanManyTimes," +
  735. " GL.monitorid," +
  736. " decode(mu.userid,null,'', mu.username || '[' || mu.usercode || ']') monitorcode," +
  737. " GMT.GMouldTypeID," +
  738. " GMT.GMouldTypeName," +
  739. // 成型线变更 ver41 by chenxy end
  740. " MG.GoodsCode," +
  741. " MG.GoodsName," +
  742. " MG.LogoID," +
  743. " GLD.GMouldStatus," +
  744. " GMS.GMouldStatusName," +
  745. " CASE WHEN GLD.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "' THEN '" + (int)Constant.GroutingFlag.Yes + "'" +
  746. " ELSE '" + (int)Constant.GroutingFlag.No + "'" +
  747. " END AS GroutingFlag" +
  748. " FROM TP_PC_GroutingLine GL" +
  749. " left JOIN TP_MST_User mU" +
  750. " ON mU.UserID = GL.monitorid" +
  751. " INNER JOIN TP_PC_GroutingLineDetail GLD" +
  752. " ON GL.GroutingLineID = GLD.GroutingLineID" +
  753. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  754. " ON GMS.GMouldStatusID = GLD.GMouldStatus" +
  755. " INNER JOIN TP_MST_Goods MG" +
  756. " ON MG.Goodsid = GLD.GoodsID" +
  757. " INNER JOIN TP_MST_User U" +
  758. " ON U.Userid = GL.Userid" +
  759. " LEFT JOIN TP_MST_GMouldType GMT" +
  760. " ON GMT.GMouldTypeID = GL.GMouldTypeID " +
  761. " WHERE GL.AccountID = :AccountID" +
  762. " AND GLD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  763. " AND GLD.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
  764. " AND INSTR(:GroutingLineIDs, ',' || GL.GroutingLineID || ',') > 0" +
  765. " ORDER BY GL.GroutingLineCode, GLD.GroutingMouldCode";
  766. parameters.Clear();
  767. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  768. parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
  769. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value.Date, ParameterDirection.Input));
  770. DataTable gldData = conn.GetSqlResultToDt(gldSql, parameters.ToArray());
  771. if (gldData == null || gldData.Rows.Count == 0)
  772. {
  773. // 没有可注浆的模具
  774. sre.Status = Constant.ServiceResultStatus.Other;
  775. sre.OtherStatus = 3;
  776. sre.Message = string.Format("注浆日期({0})没有可注浆的模具",
  777. groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
  778. return sre;
  779. }
  780. gldData.TableName = "TP_PC_GroutingLineDetail";
  781. sre.Data.Tables.Add(gldData);
  782. return sre;
  783. }
  784. catch (Exception ex)
  785. {
  786. throw ex;
  787. }
  788. finally
  789. {
  790. if (conn != null &&
  791. conn.ConnState == ConnectionState.Open)
  792. {
  793. conn.Close();
  794. }
  795. }
  796. }
  797. /// <summary>
  798. /// 取得FPM0104画面(选择成型线)的查询数据
  799. /// </summary>
  800. /// <param name="user">登录用户信息</param>
  801. /// <param name="se">查询条件</param>
  802. /// <returns>查询结果</returns>
  803. public static ServiceResultEntity GetFPM0104SData(SUserInfo user, FPM0104_SE se)
  804. {
  805. IDBConnection conn = null;
  806. try
  807. {
  808. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  809. ServiceResultEntity sre = new ServiceResultEntity();
  810. // 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 begin
  811. string spm021 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_021' and ss.AccountID = " + user.AccountID);
  812. int spm021Value = 0;
  813. if (!string.IsNullOrWhiteSpace(spm021) && int.TryParse(spm021, out spm021Value) && spm021Value > 0)
  814. {
  815. DateTime tDate = DateTime.Now.Date;
  816. DateTime lastDate = tDate.AddDays(1-spm021Value);
  817. if (se.GroutingDate < lastDate || se.GroutingDate > tDate)
  818. {
  819. sre.Status = Constant.ServiceResultStatus.Other;
  820. sre.OtherStatus = -1;
  821. sre.Message = string.Format("允许注浆登记的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  822. return sre;
  823. }
  824. }
  825. // 'S_PM_021', '注浆登记限制天数' add by chenxy 2018-12-15 end
  826. string sqlString =
  827. "SELECT " +
  828. " GL.GroutingLineID," +
  829. " GL.GroutingLineCode," +
  830. " GL.GroutingLineName," +
  831. " GMS.GMouldStatusName," +
  832. " GMT.GMouldTypeName," +
  833. " GL.MouldQuantity," +
  834. // 成型线变更 ver41 by chenxy begin
  835. //" U.UserCode AS GroutingUserCode," +
  836. //" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(GS.GoodsCode)) AS GoodsCode" +
  837. " (select listagg ( gs.goodscode, ',') WITHIN GROUP (ORDER BY gs.goodscode) as GoodsCode" +
  838. " from tp_pc_groutinglinedetail gld" +
  839. " left join tp_mst_goods gs" +
  840. " on gs.goodsid = gld.goodsid" +
  841. " where gld.groutinglineid = gl.groutinglineid" +
  842. " AND gld.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  843. " AND gld.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "') GoodsCode," +
  844. //" GL.UserID," +
  845. //" U.UserCode," +
  846. " GL.UserCount," +
  847. " decode(GL.UserCount, 1, GL.UserID, NULL) GroutingUserID," +
  848. " decode(GL.UserCount, 1, U.UserCode, NULL) GroutingUserCode," +
  849. " GL.LastGroutingDate," +
  850. " GL.LastGroutingBatchNo," +
  851. " GL.monitorid," +
  852. //" mu.usercode monitorcode," +
  853. " decode(mu.userid,null,'', mu.username || '[' || mu.usercode || ']') monitorcode," +
  854. " decode(GMT.CanManyTimes, '1', NULL, 1) GroutingNum," +
  855. " GMT.CanManyTimes" +
  856. // 成型线变更 ver41 by chenxy end
  857. " FROM TP_PC_GroutingLine GL" +
  858. // 成型线变更 ver41 by chenxy begin
  859. //" INNER JOIN TP_PC_GroutingLineDetail GLD" +
  860. //" ON GLD.GroutingLineID = GL.GroutingLineID" +
  861. // 成型线变更 ver41 by chenxy end
  862. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  863. " ON GMS.GMouldStatusID = GL.GMouldStatus" +
  864. " INNER JOIN TP_MST_GMouldType GMT" +
  865. " ON GMT.GMouldTypeID = GL.GMouldTypeID" +
  866. // 成型线变更 ver41 by chenxy begin
  867. //" INNER JOIN TP_MST_Goods GS" +
  868. //" ON GS.GoodsID = GLD.GoodsID" +
  869. // 成型线变更 ver41 by chenxy end
  870. " INNER JOIN TP_MST_User U" +
  871. " ON U.UserID = GL.UserID" +
  872. " left JOIN TP_MST_User mU" +
  873. " ON mU.UserID = GL.monitorid" +
  874. " WHERE GL.AccountID = :AccountID" +
  875. " AND GL.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  876. " AND GL.GMouldStatus = '" + (int)Constant.GMouldStatus.Normal + "'" +
  877. //// 成型线操作权限
  878. " AND EXISTS (SELECT UP.PurviewID" +
  879. " FROM TP_MST_UserPurview UP" +
  880. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  881. " AND (UP.PurviewID = -1 OR UP.PurviewID = GL.GroutingLineID)" +
  882. " AND UP.UserId = :UPUserId)" +
  883. // 未注浆
  884. // 成型线变更 ver41 by chenxy begin
  885. //" AND NOT EXISTS (SELECT GD.GroutingDailyID" +
  886. //" FROM TP_PM_GroutingDaily GD" +
  887. //" WHERE GD.GroutingLineID = GL.GroutingLineID" +
  888. //" AND GD.GroutingDate = :GroutingDate)" +
  889. // 注浆日期必须小于等于账务日期
  890. " AND :GroutingDate <= FUN_CMN_GetAccountDate(:AccountID)" +
  891. " AND (GL.LastGroutingDate IS NULL OR (GMT.CanManyTimes = '1' AND GL.LastGroutingDate <= :GroutingDate) OR (GMT.CanManyTimes <> '1' AND GL.LastGroutingDate < :GroutingDate))"
  892. // 成型线变更 ver41 by chenxy end
  893. // 有正常状态的模具
  894. + " AND EXISTS (SELECT 1 FROM TP_PC_GroutingLineDetail GLD WHERE GL.GroutingLineID = GLD.GroutingLineID AND GLD.ValueFlag = '1' AND GLD.GMouldStatus=1)"
  895. ;
  896. StringBuilder sql = new StringBuilder(sqlString);
  897. List<OracleParameter> parameters = new List<OracleParameter>();
  898. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  899. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  900. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate, ParameterDirection.Input));
  901. if (se != null)
  902. {
  903. // 成型线编码
  904. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  905. {
  906. sql.Append(" AND INSTR(GL.GroutingLineCode, :GroutingLineCode) > 0");
  907. parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  908. }
  909. // 成型线名称
  910. if (!string.IsNullOrEmpty(se.GroutingLineName))
  911. {
  912. sql.Append(" AND INSTR(GL.GroutingLineName, :GroutingLineName) > 0");
  913. parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  914. }
  915. // 成型工号
  916. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  917. {
  918. sql.Append(" AND INSTR(U.UserCode, :GroutingUserCode) > 0");
  919. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  920. }
  921. // 成型班长
  922. if (!string.IsNullOrEmpty(se.Monitorcode))
  923. {
  924. sql.Append(" AND INSTR(mu.UserCode, :Monitorcode) > 0");
  925. parameters.Add(new OracleParameter(":Monitorcode", OracleDbType.NVarchar2, se.Monitorcode, ParameterDirection.Input));
  926. }
  927. // 成型线类别
  928. if (se.GMouldTypeID.HasValue)
  929. {
  930. sql.Append(" AND GL.GMouldTypeID = :GMouldTypeID");
  931. parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
  932. }
  933. // 备注
  934. if (!string.IsNullOrEmpty(se.Remarks))
  935. {
  936. sql.Append(" AND INSTR(GL.Remarks, :Remarks) > 0");
  937. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  938. }
  939. }
  940. sqlString = sql.ToString() +
  941. // 成型线变更 ver41 by chenxy begin
  942. //" GROUP BY" +
  943. //" GL.GroutingLineID," +
  944. //" GL.GroutingLineCode," +
  945. //" GL.GroutingLineName," +
  946. //" GMS.GMouldStatusName," +
  947. //" GMT.GMouldTypeName," +
  948. //" GL.MouldQuantity," +
  949. //" U.UserCode" +
  950. // 成型线变更 ver41 by chenxy end
  951. " ORDER BY GL.GroutingLineCode";
  952. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  953. if (data == null || data.Rows.Count == 0)
  954. {
  955. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  956. return sre;
  957. }
  958. sre.Data = new DataSet();
  959. sre.Data.Tables.Add(data);
  960. // 成型线变更 ver41 by chenxy begin
  961. string groutingIDs = ",";
  962. foreach (DataRow row in data.Rows)
  963. {
  964. groutingIDs += row["GroutingLineID"] + ",";
  965. }
  966. string guSql = "select gu.groutinglineid, gu.remarks, u.userid groutinguserid, u.usercode groutingusercode" +
  967. " from TP_PC_GroutingUser gu" +
  968. " left join tp_mst_user u" +
  969. " on u.userid = gu.userid where INSTR(:GroutingLineIDs, ',' || gu.GroutingLineID || ',') > 0";
  970. parameters.Clear();
  971. parameters.Add(new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, groutingIDs, ParameterDirection.Input));
  972. DataTable guData = conn.GetSqlResultToDt(guSql, parameters.ToArray());
  973. //if (guData == null || guData.Rows.Count == 0)
  974. //{
  975. // // 没有可注浆的模具
  976. // sre.Status = Constant.ServiceResultStatus.Other;
  977. // sre.OtherStatus = 3;
  978. // sre.Message = string.Format("注浆日期({0})没有可注浆的模具",
  979. // groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD));
  980. // return sre;
  981. //}
  982. guData.TableName = "TP_PC_GroutingUser";
  983. sre.Data.Tables.Add(guData);
  984. // 成型线变更 ver41 by chenxy end
  985. return sre;
  986. }
  987. catch (Exception ex)
  988. {
  989. throw ex;
  990. }
  991. finally
  992. {
  993. if (conn != null &&
  994. conn.ConnState == ConnectionState.Open)
  995. {
  996. conn.Close();
  997. }
  998. }
  999. }
  1000. /// <summary>
  1001. /// 返回班次配置信息
  1002. /// </summary>
  1003. /// <param name="sUserInfo"></param>
  1004. /// <returns></returns>
  1005. private static int? getClassesSettingID(IDBTransaction oracleTrConn, int userID, DateTime accountDate)
  1006. {
  1007. #region 将班次配置表中的数据插入生产者表中
  1008. string sql = "select max(ClassesSettingID) as ClassesSettingID"
  1009. + " from TP_PC_ClassesSetting"
  1010. + " where ValueFlag = 1 and AccountDate=:accountDate"
  1011. + " and UserID = :userID";
  1012. OracleParameter[] paras = new OracleParameter[] {
  1013. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  1014. new OracleParameter(":userID",OracleDbType.Int32,userID,ParameterDirection.Input),
  1015. };
  1016. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  1017. if (ds != null && ds.Tables[0].Rows.Count > 0)
  1018. {
  1019. return Convert.ToInt32(ds.Tables[0].Rows[0]["ClassesSettingID"]);
  1020. }
  1021. return null;
  1022. #endregion
  1023. }
  1024. /// <summary>
  1025. /// 保存FPM0102画面(注浆登记)的注浆数据
  1026. /// </summary>
  1027. /// <param name="user">登录用户信息</param>
  1028. /// <param name="groutingDate">注浆日期(null:编辑;非null:新建)</param>
  1029. /// <param name="groutingInfo">注浆数据</param>
  1030. /// <returns>保存结果
  1031. /// OtherStatus = 1: 没有以下成型线的操作权限
  1032. /// OtherStatus = 2: 以下成型线已做过注浆
  1033. /// OtherStatus = 3: 以下成型工号已被停用
  1034. /// OtherStatus = 4: 补注浆,成型工号没有班次配置
  1035. /// OtherStatus = 5: 以下成型工号没有配置员工关联
  1036. /// </returns>
  1037. public static ServiceResultEntity SetFPM0102Data(SUserInfo user, DateTime? groutingDate, DataSet groutingInfo)
  1038. {
  1039. IDBTransaction tran = null;
  1040. try
  1041. {
  1042. ServiceResultEntity sre = new ServiceResultEntity();
  1043. if (groutingInfo == null ||
  1044. groutingInfo.Tables.Count != 2 ||
  1045. groutingInfo.Tables[0].Rows.Count < 1 ||
  1046. groutingInfo.Tables[1].Rows.Count < 1)
  1047. {
  1048. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1049. return sre;
  1050. }
  1051. tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  1052. int executeResult = 0;
  1053. DataTable dtGroutingLine = groutingInfo.Tables[0];
  1054. DataTable dtGroutingDetail = groutingInfo.Tables[1];
  1055. // 新建注浆登记
  1056. if (groutingDate.HasValue)
  1057. {
  1058. #region 新建注浆登记
  1059. groutingDate = groutingDate.Value.Date;
  1060. #region 取得账务日期
  1061. // 账务日期
  1062. object date = CMNModuleLogic.GetAccountDate(tran, user);
  1063. if (date == null || date == DBNull.Value)
  1064. {
  1065. // 服务器时间错误
  1066. //throw new Exception("SystemDateTimeError");
  1067. sre.Status = Constant.ServiceResultStatus.AccountDateError;
  1068. return sre;
  1069. }
  1070. DateTime accountDate = Convert.ToDateTime(date).Date;
  1071. // 注浆日期不能大于账务日期
  1072. if (groutingDate > accountDate)
  1073. {
  1074. sre.Status = Constant.ServiceResultStatus.Other;
  1075. sre.OtherStatus = 1;
  1076. sre.Message = string.Format("注浆日期({0})不能大于账务日期({1})",
  1077. groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD),
  1078. accountDate.ToString(Constant.S_DATE_YYYY_MM_DD));
  1079. return sre;
  1080. }
  1081. #endregion 取得账务日期
  1082. #region 验证成型线时间戳
  1083. StringBuilder checkGLSql = new StringBuilder("select GroutingLineCode from TP_PC_GroutingLine where valueflag = '1' and (");
  1084. int index = 0;
  1085. foreach (DataRow item in dtGroutingLine.Rows)
  1086. {
  1087. if (index > 0)
  1088. {
  1089. checkGLSql.AppendLine(" or ");
  1090. }
  1091. checkGLSql.AppendFormat(" (GroutingLineID = {0} and OPTimeStamp <> to_timestamp('{1}','yyyy-mm-dd hh24:mi:ss.ff'))", item["GroutingLineID"], ((System.DateTime)item["OPTimeStamp"]).ToString("yyyy-MM-dd HH:mm:ss.ffffff"));
  1092. index++;
  1093. }
  1094. checkGLSql.AppendLine(")");
  1095. DataTable checkGLDataTable = tran.GetSqlResultToDt(checkGLSql.ToString());
  1096. if (checkGLDataTable != null && checkGLDataTable.Rows.Count > 0)
  1097. {
  1098. string code = null;
  1099. foreach (DataRow item in checkGLDataTable.Rows)
  1100. {
  1101. if (code == null)
  1102. {
  1103. code = item["GroutingLineCode"].ToString();
  1104. }
  1105. else
  1106. {
  1107. code += "," + item["GroutingLineCode"].ToString();
  1108. }
  1109. }
  1110. // 成型线信息被修改
  1111. sre.Status = Constant.ServiceResultStatus.Other;
  1112. sre.OtherStatus = 1;
  1113. sre.Message = "以下成形线数据已被修改,请重新选择成型线。" + System.Environment.NewLine + code;
  1114. return sre;
  1115. }
  1116. #endregion 验证成型线时间戳
  1117. #region 数据校验 插入班次配置
  1118. // 成型工ID
  1119. List<string> userIDs = new List<string>();
  1120. List<string> userCodes = new List<string>();
  1121. // 成型线ID
  1122. List<string> lineIDs = new List<string>();
  1123. List<string> lineCodes = new List<string>();
  1124. foreach (DataRow gdd in dtGroutingDetail.Rows)
  1125. {
  1126. string userID = gdd["GroutingUserID"].ToString();
  1127. if (!userIDs.Contains(userID))
  1128. {
  1129. userIDs.Add(userID);
  1130. userCodes.Add(gdd["GroutingUserCode"].ToString());
  1131. }
  1132. string lineID = gdd["GroutingLineID"].ToString();
  1133. if (!lineIDs.Contains(lineID))
  1134. {
  1135. lineIDs.Add(lineID);
  1136. lineCodes.Add(gdd["GroutingLineCode"].ToString());
  1137. }
  1138. }
  1139. #region 成型线校验
  1140. string strLineIDs = "," + string.Join(",", lineIDs) + ",";
  1141. string strNoLineCodes = null;
  1142. // 校验成型线操作权限
  1143. string checkPurviewSql =
  1144. "SELECT UP.PurviewID" +
  1145. " FROM TP_MST_UserPurview UP" +
  1146. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  1147. " AND (UP.PurviewID = -1 OR INSTR(:GroutingLineIDs, ',' || UP.PurviewID || ',') > 0)" +
  1148. " AND UP.UserId = :UPUserId Order by UP.PurviewID";
  1149. OracleParameter[] checkPurviewParas = new OracleParameter[]
  1150. {
  1151. new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, strLineIDs, ParameterDirection.Input),
  1152. new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1153. };
  1154. DataTable purviewData = tran.GetSqlResultToDt(checkPurviewSql, checkPurviewParas);
  1155. if (purviewData == null || purviewData.Rows.Count == 0)
  1156. {
  1157. strNoLineCodes = string.Join(",", lineCodes);
  1158. }
  1159. else if ("-1" == purviewData.Rows[0][0].ToString())
  1160. {
  1161. strNoLineCodes = null;
  1162. }
  1163. else if (lineIDs.Count != purviewData.Rows.Count)
  1164. {
  1165. for (int i = 0; i < lineIDs.Count; i++)
  1166. {
  1167. DataRow[] drs = purviewData.Select("PurviewID = " + lineIDs[i]);
  1168. if (drs == null || drs.Length == 0)
  1169. {
  1170. if (strNoLineCodes != null)
  1171. {
  1172. strNoLineCodes += "," + lineCodes[i];
  1173. }
  1174. else
  1175. {
  1176. strNoLineCodes += lineCodes[i];
  1177. }
  1178. }
  1179. }
  1180. }
  1181. if (strNoLineCodes != null)
  1182. {
  1183. sre.Status = Constant.ServiceResultStatus.Other;
  1184. sre.OtherStatus = 1;
  1185. sre.Message = "当前用户没有以下成型线的操作权限。"
  1186. + System.Environment.NewLine + strNoLineCodes;
  1187. return sre;
  1188. }
  1189. /* 已验证成型线时间戳,注浆时会修改成型线的最后注浆日期,时间戳会变。
  1190. // 校验成型线是否已注浆
  1191. string checkGroutingDailySql =
  1192. "SELECT GD.GroutingLineCode" +
  1193. " FROM TP_PM_GroutingDaily GD" +
  1194. " WHERE GD.AccountID = :AccountID" +
  1195. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  1196. " AND GD.GroutingDate = :GroutingDate" +
  1197. " AND INSTR(:GroutingLineIDs, ',' || GD.GroutingLineID || ',') > 0";
  1198. OracleParameter[] checkGroutingDailyParas = new OracleParameter[]
  1199. {
  1200. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1201. new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1202. new OracleParameter(":GroutingLineIDs", OracleDbType.Varchar2, strLineIDs, ParameterDirection.Input),
  1203. };
  1204. DataTable groutingDailyData = tran.GetSqlResultToDt(checkGroutingDailySql, checkGroutingDailyParas);
  1205. strNoLineCodes = null;
  1206. if (groutingDailyData != null && groutingDailyData.Rows.Count > 0)
  1207. {
  1208. foreach (DataRow item in groutingDailyData.Rows)
  1209. {
  1210. if (strNoLineCodes != null)
  1211. {
  1212. strNoLineCodes += "," + item["GroutingLineCode"];
  1213. }
  1214. else
  1215. {
  1216. strNoLineCodes += item["GroutingLineCode"];
  1217. }
  1218. }
  1219. }
  1220. if (strNoLineCodes != null)
  1221. {
  1222. sre.Status = Constant.ServiceResultStatus.Other;
  1223. sre.OtherStatus = 2;
  1224. sre.Message = groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD)
  1225. + ",以下成型线已做过注浆登记。"
  1226. + System.Environment.NewLine + strNoLineCodes;
  1227. return sre;
  1228. }
  1229. */
  1230. #endregion 成型线校验
  1231. string strNoUserCodes = null;
  1232. #region 校验成型工号是否有效
  1233. // 校验成型工号是否有效
  1234. string checkUserSql =
  1235. "SELECT UserID" +
  1236. " FROM TP_MST_User" +
  1237. " WHERE AccountID = :AccountID" +
  1238. " AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  1239. " AND INSTR(:UserIDs, ',' || UserID || ',') > 0";
  1240. string strUserIDs = "," + string.Join(",", userIDs) + ",";
  1241. OracleParameter[] checkUserParas = new OracleParameter[]
  1242. {
  1243. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1244. new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
  1245. };
  1246. DataTable userData = tran.GetSqlResultToDt(checkUserSql, checkUserParas);
  1247. strNoUserCodes = null;
  1248. if (userData == null || userData.Rows.Count == 0)
  1249. {
  1250. strNoUserCodes = string.Join(",", userCodes);
  1251. }
  1252. else if (userIDs.Count != userData.Rows.Count)
  1253. {
  1254. for (int i = 0; i < userIDs.Count; i++)
  1255. {
  1256. DataRow[] drs = userData.Select("UserID = " + userIDs[i]);
  1257. if (drs == null || drs.Length == 0)
  1258. {
  1259. if (strNoUserCodes != null)
  1260. {
  1261. strNoUserCodes += "," + userCodes[i];
  1262. }
  1263. else
  1264. {
  1265. strNoUserCodes += userCodes[i];
  1266. }
  1267. }
  1268. }
  1269. }
  1270. if (strNoUserCodes != null)
  1271. {
  1272. sre.Status = Constant.ServiceResultStatus.Other;
  1273. sre.OtherStatus = 3;
  1274. sre.Message = "以下成型工号已被停用,不能注浆。"
  1275. + System.Environment.NewLine + strNoUserCodes;
  1276. return sre;
  1277. }
  1278. #endregion 校验成型工号是否有效
  1279. #region 校验成型工是否有班次配置
  1280. // 校验成型工是否有班次配置
  1281. string checkClassesSettingSql =
  1282. "SELECT UserID, Max(ClassesSettingID) as ClassesSettingID" +
  1283. " FROM TP_PC_ClassesSetting CS " +
  1284. " WHERE CS.AccountID = :AccountID" +
  1285. " AND CS.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  1286. " AND CS.AccountDate = :AccountDate" +
  1287. " AND INSTR(:UserIDs, ',' || CS.UserID || ',') > 0 group by UserID";
  1288. OracleParameter[] checkClassesSettingParas = new OracleParameter[]
  1289. {
  1290. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1291. new OracleParameter(":AccountDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1292. new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
  1293. };
  1294. DataTable classesSettingData = tran.GetSqlResultToDt(checkClassesSettingSql, checkClassesSettingParas);
  1295. Dictionary<string, string> userClassID = new Dictionary<string, string>();
  1296. // 补注浆日报
  1297. if (groutingDate.Value < accountDate)
  1298. {
  1299. #region 补注浆日报,校验班次配置
  1300. strNoUserCodes = null;
  1301. if (classesSettingData == null || classesSettingData.Rows.Count == 0)
  1302. {
  1303. strNoUserCodes = string.Join(",", userCodes);
  1304. }
  1305. else if (userIDs.Count != classesSettingData.Rows.Count)
  1306. {
  1307. for (int i = 0; i < userIDs.Count; i++)
  1308. {
  1309. DataRow[] drs = classesSettingData.Select("UserID = " + userIDs[i]);
  1310. if (drs == null || drs.Length == 0)
  1311. {
  1312. if (strNoUserCodes != null)
  1313. {
  1314. strNoUserCodes += "," + userCodes[i];
  1315. }
  1316. else
  1317. {
  1318. strNoUserCodes += userCodes[i];
  1319. }
  1320. }
  1321. }
  1322. }
  1323. else
  1324. {
  1325. foreach (DataRow item in classesSettingData.Rows)
  1326. {
  1327. userClassID.Add(item["UserID"].ToString(), item["ClassesSettingID"].ToString());
  1328. }
  1329. }
  1330. if (strNoUserCodes != null)
  1331. {
  1332. sre.Status = Constant.ServiceResultStatus.Other;
  1333. sre.OtherStatus = 4;
  1334. sre.Message = string.Format("以下成型工号在日期【{0}】没有配置班次,请确认后再注浆。", groutingDate.Value.ToString(Constant.S_DATE_YYYY_MM_DD))
  1335. + System.Environment.NewLine + strNoUserCodes;
  1336. return sre;
  1337. }
  1338. #endregion 补注浆日报,校验班次配置
  1339. }
  1340. else
  1341. {
  1342. // 无班次配置的成型工ID
  1343. List<string> userStaffIDs = new List<string>();
  1344. List<string> userStaffCodes = new List<string>();
  1345. strUserIDs = null;
  1346. if (classesSettingData != null && userIDs.Count != classesSettingData.Rows.Count)
  1347. {
  1348. //strUserIDs = null;
  1349. for (int i = 0; i < userIDs.Count; i++)
  1350. {
  1351. DataRow[] drs = classesSettingData.Select("UserID = " + userIDs[i]);
  1352. if (drs == null || drs.Length == 0)
  1353. {
  1354. strUserIDs += "," + userIDs[i];
  1355. userStaffIDs.Add(userIDs[i]);
  1356. userStaffCodes.Add(userCodes[i]);
  1357. }
  1358. else
  1359. {
  1360. userClassID.Add(drs[0]["UserID"].ToString(), drs[0]["ClassesSettingID"].ToString());
  1361. }
  1362. }
  1363. if (strUserIDs != null)
  1364. {
  1365. strUserIDs += ",";
  1366. }
  1367. }
  1368. if (strUserIDs != null)
  1369. {
  1370. #region 无班次配置的工号,校验员工关联(成型工号是否有员工)
  1371. // 无班次配置的工号,校验员工关联(成型工号是否有员工)
  1372. string checkUserStaffSql =
  1373. "SELECT DISTINCT U.UserID, U.UserCode, U.OrganizationID" +
  1374. " FROM TP_MST_User U " +
  1375. " INNER JOIN TP_MST_UserStaff US" +
  1376. " ON U.UserID = US.UserID " +
  1377. " WHERE U.AccountID = :AccountID" +
  1378. " AND INSTR(:UserIDs, ',' || U.UserID || ',') > 0";
  1379. OracleParameter[] checkUserStaffParas = new OracleParameter[]
  1380. {
  1381. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1382. new OracleParameter(":UserIDs", OracleDbType.Varchar2, strUserIDs, ParameterDirection.Input),
  1383. };
  1384. DataTable userStaffData = tran.GetSqlResultToDt(checkUserStaffSql, checkUserStaffParas);
  1385. strNoUserCodes = null;
  1386. if (userStaffData == null || userStaffData.Rows.Count == 0)
  1387. {
  1388. strNoUserCodes = string.Join(",", userStaffCodes);
  1389. }
  1390. else
  1391. {
  1392. //for (int i = 0; i < userIDs.Count; i++)
  1393. for (int i = 0; i < userStaffIDs.Count; i++)
  1394. {
  1395. DataRow[] drs = userStaffData.Select("UserID = " + userStaffIDs[i]);
  1396. if (drs == null || drs.Length == 0)
  1397. {
  1398. if (strNoUserCodes != null)
  1399. {
  1400. strNoUserCodes += "," + userStaffCodes[i];
  1401. }
  1402. else
  1403. {
  1404. strNoUserCodes += userStaffCodes[i];
  1405. }
  1406. }
  1407. }
  1408. }
  1409. if (strNoUserCodes != null)
  1410. {
  1411. sre.Status = Constant.ServiceResultStatus.Other;
  1412. sre.OtherStatus = 5;
  1413. sre.Message = "以下成型工号没有配置员工关联,请确认后再注浆。"
  1414. + System.Environment.NewLine + strNoUserCodes;
  1415. return sre;
  1416. }
  1417. #endregion 无班次配置的工号,校验员工关联(成型工号是否有员工)
  1418. #region 插入班次配置
  1419. #region SQL
  1420. string seqClassesSettingSql = "SELECT SEQ_PC_ClassesSetting_ID.Nextval FROM DUAL";
  1421. string insertClassesSettingSql =
  1422. "INSERT INTO TP_PC_ClassesSetting" +
  1423. " (ClassesSettingID, AccountDate, UserID, UserCode, OrganizationID, AccountID, CreateUserID, UpdateUserID)" +
  1424. " VALUES" +
  1425. " (:ClassesSettingID, :AccountDate, :UserID, :UserCode, :OrganizationID, :AccountID, :CUserID, :CUserID)";
  1426. string insertClassesDetailSql =
  1427. "INSERT INTO TP_PC_ClassesDetail" +
  1428. " (ClassesSettingID, AccountDate, UserID, UserCode, UOrganizationID, UJobsID, StaffID, SOrganizationID, SJobsID, StaffStatus, AccountID, CreateUserID, UpdateUserID)" +
  1429. " SELECT :ClassesSettingID, :AccountDate, :UserID, :UserCode, :UOrganizationID, US.UJobsID, S.StaffID, S.OrganizationID, S.Jobs, S.StaffStatus, :AccountID, :CUserID, :CUserID" +
  1430. " FROM TP_MST_UserStaff US" +
  1431. " INNER JOIN TP_HR_Staff S" +
  1432. " ON S.StaffID = US.StaffID" +
  1433. " WHERE US.UserID = :UserID";
  1434. #endregion SQL
  1435. // 插入班次配置
  1436. foreach (DataRow userStaffRow in userStaffData.Rows)
  1437. {
  1438. object csSeq = tran.GetSqlResultToObj(seqClassesSettingSql);
  1439. // 插入班次配置
  1440. OracleParameter[] insertClassesSettingParas = new OracleParameter[]
  1441. {
  1442. new OracleParameter(":ClassesSettingID", OracleDbType.Int32, csSeq, ParameterDirection.Input),
  1443. new OracleParameter(":AccountDate", OracleDbType.Date, accountDate, ParameterDirection.Input),
  1444. new OracleParameter(":UserID", OracleDbType.Int32, userStaffRow["UserID"], ParameterDirection.Input),
  1445. new OracleParameter(":UserCode", OracleDbType.NVarchar2, userStaffRow["UserCode"], ParameterDirection.Input),
  1446. new OracleParameter(":OrganizationID", OracleDbType.Int32, userStaffRow["OrganizationID"], ParameterDirection.Input),
  1447. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1448. new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1449. };
  1450. executeResult = tran.ExecuteNonQuery(insertClassesSettingSql, insertClassesSettingParas);
  1451. if (executeResult <= 0)
  1452. {
  1453. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1454. return sre;
  1455. }
  1456. // 插入班次配置明细
  1457. OracleParameter[] insertClassesDetailParas = new OracleParameter[]
  1458. {
  1459. new OracleParameter(":ClassesSettingID", OracleDbType.Int32, csSeq, ParameterDirection.Input),
  1460. new OracleParameter(":AccountDate", OracleDbType.Date, accountDate, ParameterDirection.Input),
  1461. new OracleParameter(":UserID", OracleDbType.Int32, userStaffRow["UserID"], ParameterDirection.Input),
  1462. new OracleParameter(":UserCode", OracleDbType.NVarchar2, userStaffRow["UserCode"], ParameterDirection.Input),
  1463. new OracleParameter(":UOrganizationID", OracleDbType.Int32, userStaffRow["OrganizationID"], ParameterDirection.Input),
  1464. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1465. new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1466. };
  1467. executeResult = tran.ExecuteNonQuery(insertClassesDetailSql, insertClassesDetailParas);
  1468. if (executeResult <= 0)
  1469. {
  1470. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1471. return sre;
  1472. }
  1473. userClassID.Add(userStaffRow["UserID"].ToString(), csSeq.ToString());
  1474. }
  1475. #endregion 插入班次配置
  1476. }
  1477. else
  1478. {
  1479. foreach (DataRow item in classesSettingData.Rows)
  1480. {
  1481. userClassID.Add(item["UserID"].ToString(), item["ClassesSettingID"].ToString());
  1482. }
  1483. }
  1484. }
  1485. #endregion 校验成型工是否有班次配置
  1486. #endregion 数据校验
  1487. #region 取得默认商标
  1488. string logoSql = "select t.LogoID from TP_MST_Logo t where t.AccountID = :AccountID and t.ValueFlag ='1'" +
  1489. " order by t.IsDefault desc, t.DISPLAYNO";
  1490. OracleParameter[] logoParas = new OracleParameter[]
  1491. {
  1492. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input)
  1493. };
  1494. DataTable logoDataTable = tran.GetSqlResultToDt(logoSql, logoParas);
  1495. object logoID = null;
  1496. if (logoDataTable != null && logoDataTable.Rows.Count > 0)
  1497. {
  1498. logoID = logoDataTable.Rows[0]["LogoID"];
  1499. }
  1500. #endregion 取得默认商标
  1501. // 插入注浆日报
  1502. #region SQL
  1503. string seqGroutingDailySql = "SELECT SEQ_PM_GroutingDaily_ID.Nextval FROM DUAL";
  1504. string insertGroutingDailySql =
  1505. "INSERT INTO TP_PM_GroutingDaily " +
  1506. " (GroutingDailyID, " +
  1507. " GroutingLineID, " +
  1508. " GroutingLineCode, " +
  1509. " GroutingLineName, " +
  1510. " GroutingDate, " +
  1511. " UserID, " +
  1512. " UserCode, " +
  1513. " monitorid, " +
  1514. " monitorcode, " +
  1515. " MouldQuantity, " +
  1516. " GMouldTypeID, " +
  1517. " GMouldStatus, " +
  1518. " CanManyTimes, " +
  1519. " HighPressureFlag, " + //xuwei add 2019-11-14 高压注浆标识
  1520. " AccountID, " +
  1521. " ClassesSettingID, " +
  1522. " GroutingBatchNo, " +
  1523. " CreateUserID, " +
  1524. " UpdateUserID) " +
  1525. " SELECT :GroutingDailyID, " +
  1526. " :GroutingLineID, " +
  1527. " GL.GroutingLineCode, " +
  1528. " GL.GroutingLineName, " +
  1529. " :GroutingDate, " +
  1530. " :UserID, " +
  1531. " :UserCode, " +
  1532. " :monitorid, " +
  1533. " :monitorcode, " +
  1534. " GL.MouldQuantity, " +
  1535. " GL.GMouldTypeID, " +
  1536. " GL.GMouldStatus, " +
  1537. " :CanManyTimes, " +
  1538. " GL.HighPressureFlag, " + //xuwei add 2019-11-14 高压注浆标识
  1539. " :AccountID, " +
  1540. " :ClassesSettingID, " +
  1541. " :GroutingBatchNo, " +
  1542. " :CUserID, " +
  1543. " :CUserID " +
  1544. " FROM TP_PC_GroutingLine GL " +
  1545. " INNER JOIN TP_MST_GMouldType GMT " +
  1546. " ON GMT.GMouldTypeID = GL.GMouldTypeID " +
  1547. " WHERE GL.GroutingLineID = :GroutingLineID";
  1548. #endregion SQL
  1549. #region DetailSQL
  1550. string insertGroutingDailyDetailSql =
  1551. "INSERT INTO TP_PM_GroutingDailyDetail " +
  1552. " (GroutingDailyID, " +
  1553. " GroutingLineID, " +
  1554. " GroutingLineCode, " +
  1555. " GroutingLineName, " +
  1556. " GroutingLineDetailID, " +
  1557. " GroutingDate, " +
  1558. " GroutingMouldCode, " +
  1559. " MouldID, " +
  1560. " MouldCode, " +
  1561. " UserID, " +
  1562. " UserCode, " +
  1563. //" monitorid, " +
  1564. //" monitorcode, " +
  1565. " GoodsID, " +
  1566. " GoodsCode, " +
  1567. " GoodsName, " +
  1568. " GMouldStatus, " +
  1569. " GroutingCount, " +
  1570. " GroutingFlag, " +
  1571. //" BarCode, " +
  1572. " NoGroutingRreason, " +
  1573. " ScrapFlag, " +
  1574. " Remarks, " +
  1575. " AccountID, " +
  1576. " ClassesSettingID, " +
  1577. " GroutingBatchNo, " +
  1578. " LogoID, " +
  1579. " glazetypeid, " +
  1580. " CreateUserID, " +
  1581. " GMouldTypeID, " +
  1582. " CanManyTimes, " +
  1583. " UpdateUserID, " +
  1584. //2022年3月25日 21:10:07 by feiy 试验线
  1585. " TestFlag, " +
  1586. " TESTMOULDFLAG, " + // add 模具试验标识 by fubin 2022-6-6
  1587. " LUSTERWAREWEIGHT) " +
  1588. " SELECT :GroutingDailyID, " +
  1589. " :GroutingLineID, " +
  1590. " GL.GroutingLineCode, " +
  1591. " GL.GroutingLineName, " +
  1592. " :GroutingLineDetailID, " +
  1593. " :GroutingDate, " +
  1594. " GLD.GroutingMouldCode, " +
  1595. " GLD.MouldID, " +
  1596. " GLD.MouldCode, " +
  1597. " :UserID, " +
  1598. " :UserCode, " +
  1599. //" :monitorid, " +
  1600. //" :monitorcode, " +
  1601. " GLD.GoodsID, " +
  1602. " G.GoodsCode, " +
  1603. " G.GoodsName, " +
  1604. " GLD.GMouldStatus, " +
  1605. " CASE WHEN :GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
  1606. " THEN GLD.GroutingCount + 1 " +
  1607. " ELSE GLD.GroutingCount END," +
  1608. " :GroutingFlag, " +
  1609. " :NoGroutingRreason, " +
  1610. " :ScrapFlag, " +
  1611. " :Remarks, " +
  1612. " :AccountID, " +
  1613. //" (select max(ClassesSettingID) from TP_PC_ClassesSetting where AccountDate=:GroutingDate and UserID = :UserID ), " +
  1614. " :ClassesSettingID, " +
  1615. " :GroutingBatchNo, " +
  1616. " :LogoID, " +
  1617. " g.glazetypeid, " +
  1618. " :CUserID, " +
  1619. " :GMouldTypeID, " +
  1620. " :CanManyTimes, " +
  1621. " :CUserID, " +
  1622. //2022年3月25日 21:10:07 by feiy 试验线
  1623. " GL.TestFlag, " +
  1624. " NVL(MOULD.TESTMOULDFLAG,'0'), " + // add 模具试验标识 by fubin 2022-6-6
  1625. " NVL(g.LUSTERWAREWEIGHT,0) " +
  1626. " FROM TP_PC_GroutingLine GL " +
  1627. " INNER JOIN TP_PC_GroutingLineDetail GLD " +
  1628. " ON GL.GroutingLineID = :GroutingLineID " +
  1629. " AND GLD.GroutingLineID = :GroutingLineID " +
  1630. " AND GLD.GroutingLineDetailID = :GroutingLineDetailID " +
  1631. " INNER JOIN TP_MST_Goods G " +
  1632. " ON G.GoodsID = GLD.GoodsID" +
  1633. " LEFT JOIN TP_PC_MOULD MOULD " +
  1634. " ON MOULD.MouldID = GLD.MouldID ";
  1635. #endregion DetailSQL
  1636. #region LineDetailSQL
  1637. string updateGroutingLineDetailSql =
  1638. "UPDATE TP_PC_GroutingLineDetail" +
  1639. " SET GroutingCount = GroutingCount + 1," +
  1640. " UpdateUserID = :UpdateUserID" +
  1641. " WHERE GroutingLineDetailID = :GroutingLineDetailID";
  1642. #endregion LineDetailSQL
  1643. #region LineSQL
  1644. string updateGroutingLineSql =
  1645. "UPDATE TP_PC_GroutingLine" +
  1646. " SET LastGroutingDate = :LastGroutingDate," +
  1647. " LastGroutingBatchNo = :LastGroutingBatchNo," +
  1648. " H_BatchIndex = H_BatchIndex+1," +
  1649. " UpdateUserID = :UpdateUserID" +
  1650. " WHERE GroutingLineID = :GroutingLineID";
  1651. #endregion LineSQL
  1652. #region ProducerSQL
  1653. //string insertGroutingProducerSql =
  1654. // "INSERT INTO TP_PM_GroutingProducer " +
  1655. // " (GroutingDailyID, " +
  1656. // " StaffID, " +
  1657. // " StaffCode, " +
  1658. // " StaffStatus, " +
  1659. // " UserID, " +
  1660. // " UserCode, " +
  1661. // " UJobsID, " +
  1662. // " SJobsID, " +
  1663. // " ClassesSettingID) " +
  1664. // //" AccountID, " +
  1665. // //" CreateUserID, " +
  1666. // //" UpdateUserID) " +
  1667. // " SELECT :GroutingDailyID, " +
  1668. // " CD.StaffID, " +
  1669. // " HS.StaffCode, " +
  1670. // " CD.StaffStatus, " +
  1671. // " :UserID, " +
  1672. // " CD.UserCode, " +
  1673. // " CD.UJobsID, " +
  1674. // " CD.SJobsID, " +
  1675. // " CD.ClassesSettingID " +
  1676. // //" :AccountID, " +
  1677. // //" :CUserID, " +
  1678. // //" :CUserID " +
  1679. // " FROM TP_PC_ClassesDetail CD " +
  1680. // " INNER JOIN TP_HR_Staff HS" +
  1681. // " ON HS.StaffID = CD.StaffID" +
  1682. // " WHERE CD.ClassesSettingID = " +
  1683. // " (SELECT MAX(ClassesSettingID) " +
  1684. // " FROM TP_PC_ClassesSetting " +
  1685. // " WHERE UserID = :UserID " +
  1686. // " AND AccountDate = :GroutingDate)";
  1687. #endregion ProducerSQL
  1688. string groutingDailyIDs = null;
  1689. foreach (DataRow lineRow in dtGroutingLine.Rows)
  1690. {
  1691. #region 插入注浆日报
  1692. // 插入注浆日报
  1693. object gdSeq = tran.GetSqlResultToObj(seqGroutingDailySql);
  1694. if (groutingDailyIDs == null)
  1695. {
  1696. groutingDailyIDs = gdSeq.ToString();
  1697. }
  1698. else
  1699. {
  1700. groutingDailyIDs += "," + gdSeq.ToString();
  1701. }
  1702. //int? ClassesSettingID = null;
  1703. //ClassesSettingID = getClassesSettingID(tran, Convert.ToInt32(lineRow["UserID"]), groutingDate.Value);
  1704. int ClassesSettingID = Convert.ToInt32(userClassID[lineRow["UserID"].ToString()]);
  1705. OracleParameter[] insertGroutingDailyParas = new OracleParameter[]
  1706. {
  1707. new OracleParameter(":ClassesSettingID", OracleDbType.Int32, ClassesSettingID, ParameterDirection.Input),
  1708. new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, lineRow["GroutingBatchNo"], ParameterDirection.Input),
  1709. new OracleParameter(":CanManyTimes", OracleDbType.Char, lineRow["CanManyTimes"], ParameterDirection.Input),
  1710. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
  1711. new OracleParameter(":GroutingLineID", OracleDbType.Int32, lineRow["GroutingLineID"], ParameterDirection.Input),
  1712. new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1713. new OracleParameter(":UserID", OracleDbType.Int32, lineRow["UserID"], ParameterDirection.Input),
  1714. new OracleParameter(":UserCode", OracleDbType.NVarchar2, lineRow["UserCode"], ParameterDirection.Input),
  1715. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1716. new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1717. new OracleParameter(":monitorid", OracleDbType.Int32, lineRow["monitorid"], ParameterDirection.Input),
  1718. new OracleParameter(":monitorcode", OracleDbType.NVarchar2, lineRow["monitorcode"], ParameterDirection.Input),
  1719. };
  1720. executeResult = tran.ExecuteNonQuery(insertGroutingDailySql, insertGroutingDailyParas);
  1721. if (executeResult <= 0)
  1722. {
  1723. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1724. return sre;
  1725. }
  1726. #endregion 插入注浆日报
  1727. #region 更新成型线注浆日期
  1728. OracleParameter[] updateGroutingLineParas = new OracleParameter[]
  1729. {
  1730. new OracleParameter(":LastGroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1731. new OracleParameter(":LastGroutingBatchNo", OracleDbType.Int32, lineRow["GroutingBatchNo"], ParameterDirection.Input),
  1732. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1733. new OracleParameter(":GroutingLineID", OracleDbType.Int32, lineRow["GroutingLineID"], ParameterDirection.Input),
  1734. };
  1735. executeResult = tran.ExecuteNonQuery(updateGroutingLineSql, updateGroutingLineParas);
  1736. if (executeResult <= 0)
  1737. {
  1738. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1739. return sre;
  1740. }
  1741. #endregion 更新成型线注浆日期
  1742. // 插入注浆日报明细
  1743. DataRow[] groutingLineDetailRows = dtGroutingDetail.Select("GroutingLineID = " + lineRow["GroutingLineID"].ToString()
  1744. + " and GroutingBatchNo = " + lineRow["GroutingBatchNo"].ToString());
  1745. foreach (DataRow detailDataRow in groutingLineDetailRows)
  1746. {
  1747. object drLogoID = detailDataRow["logoID"];
  1748. if (drLogoID == null || drLogoID == DBNull.Value)
  1749. {
  1750. drLogoID = logoID;
  1751. }
  1752. #region 插入注浆日报明细
  1753. OracleParameter[] insertGroutingDailyDetailParas = new OracleParameter[]
  1754. {
  1755. new OracleParameter(":ClassesSettingID", OracleDbType.Int32, ClassesSettingID, ParameterDirection.Input),
  1756. new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, detailDataRow["GroutingBatchNo"], ParameterDirection.Input),
  1757. //new OracleParameter(":LogoID", OracleDbType.Int32, logoID, ParameterDirection.Input),
  1758. new OracleParameter(":LogoID", OracleDbType.Int32, drLogoID, ParameterDirection.Input),
  1759. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
  1760. new OracleParameter(":GroutingLineID", OracleDbType.Int32, detailDataRow["GroutingLineID"], ParameterDirection.Input),
  1761. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
  1762. new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1763. new OracleParameter(":UserID", OracleDbType.Int32, detailDataRow["GroutingUserID"], ParameterDirection.Input),
  1764. new OracleParameter(":UserCode", OracleDbType.NVarchar2, detailDataRow["GroutingUserCode"], ParameterDirection.Input),
  1765. //new OracleParameter(":monitorid", OracleDbType.Int32, detailDataRow["monitorid"], ParameterDirection.Input),
  1766. //new OracleParameter(":monitorcode", OracleDbType.NVarchar2, detailDataRow["monitorcode"], ParameterDirection.Input),
  1767. new OracleParameter(":GroutingFlag", OracleDbType.Char, detailDataRow["GroutingFlag"], ParameterDirection.Input),
  1768. new OracleParameter(":NoGroutingRreason", OracleDbType.Int32, detailDataRow["NoGroutingRreason"], ParameterDirection.Input),
  1769. new OracleParameter(":ScrapFlag", OracleDbType.Char, (int)Constant.GroutingScrapFlag.No, ParameterDirection.Input),
  1770. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  1771. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1772. new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1773. new OracleParameter(":GMouldTypeID", OracleDbType.Int32, detailDataRow["GMouldTypeID"], ParameterDirection.Input),
  1774. new OracleParameter(":CanManyTimes", OracleDbType.Char, lineRow["CanManyTimes"], ParameterDirection.Input),
  1775. };
  1776. executeResult = tran.ExecuteNonQuery(insertGroutingDailyDetailSql, insertGroutingDailyDetailParas);
  1777. if (executeResult <= 0)
  1778. {
  1779. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1780. return sre;
  1781. }
  1782. #endregion 插入注浆日报明细
  1783. #region 更新成型线明细注浆次数
  1784. if (((int)Constant.GroutingFlag.Yes).ToString() == detailDataRow["GroutingFlag"].ToString())
  1785. {
  1786. OracleParameter[] updateGroutingLineDetailParas = new OracleParameter[]
  1787. {
  1788. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
  1789. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1790. };
  1791. executeResult = tran.ExecuteNonQuery(updateGroutingLineDetailSql, updateGroutingLineDetailParas);
  1792. if (executeResult <= 0)
  1793. {
  1794. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1795. return sre;
  1796. }
  1797. }
  1798. #endregion 更新成型线明细注浆次数
  1799. }
  1800. #region 插入注浆者
  1801. //// 插入注浆者
  1802. //OracleParameter[] InsertGroutingProducerParas = new OracleParameter[]
  1803. //{
  1804. // new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdSeq, ParameterDirection.Input),
  1805. // new OracleParameter(":UserID", OracleDbType.Int32, lineRow["UserID"], ParameterDirection.Input),
  1806. // //new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  1807. // //new OracleParameter(":CUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1808. // new OracleParameter(":GroutingDate", OracleDbType.Date, groutingDate.Value, ParameterDirection.Input),
  1809. //};
  1810. //executeResult = tran.ExecuteNonQuery(insertGroutingProducerSql, InsertGroutingProducerParas);
  1811. //if (executeResult <= 0)
  1812. //{
  1813. // sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1814. // return sre;
  1815. //}
  1816. #endregion 插入注浆者
  1817. }
  1818. // TODO 补录注浆日报时,是否更新大于注浆日期的注浆日报明细和生产数据中的注浆次数?
  1819. sre.Result = groutingDailyIDs;
  1820. #endregion 新建注浆登记
  1821. }
  1822. // 编辑注浆日报
  1823. else
  1824. {
  1825. #region 编辑注浆日报
  1826. #region 校验时间戳
  1827. // 校验时间戳
  1828. DataRow gdDataRow = dtGroutingLine.Rows[0];
  1829. string checkSql = "SELECT GroutingDailyID" +
  1830. " FROM TP_PM_GroutingDaily" +
  1831. " WHERE GroutingDailyID = :GroutingDailyID" +
  1832. " AND OPTimeStamp = :OPTimeStamp" +
  1833. " AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
  1834. OracleParameter[] checkParas = new OracleParameter[]
  1835. {
  1836. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  1837. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
  1838. };
  1839. object checkResult = tran.GetSqlResultToObj(checkSql, checkParas);
  1840. if (checkResult == null)
  1841. {
  1842. sre.Status = Constant.ServiceResultStatus.DataChanged;
  1843. return sre;
  1844. }
  1845. #endregion 校验时间戳
  1846. // 更新注浆日报表
  1847. string upgdSql = "UPDATE TP_PM_GroutingDaily SET UpdateUserID = :UpdateUserID WHERE GroutingDailyID = :GroutingDailyID";
  1848. OracleParameter[] upgdParas = new OracleParameter[]
  1849. {
  1850. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  1851. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1852. };
  1853. executeResult = tran.ExecuteNonQuery(upgdSql, upgdParas);
  1854. if (executeResult <= 0)
  1855. {
  1856. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1857. return sre;
  1858. }
  1859. #region SQL
  1860. string updateGroutingDailyDetailSql =
  1861. "UPDATE TP_PM_GroutingDailyDetail" +
  1862. " SET GroutingCount = CASE" +
  1863. " WHEN GroutingFlag <> :GroutingFlag AND GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
  1864. " THEN GroutingCount - 1" +
  1865. " WHEN GroutingFlag <> :GroutingFlag AND GroutingFlag = '" + (int)Constant.GroutingFlag.No + "'" +
  1866. " THEN GroutingCount + 1" +
  1867. " ELSE GroutingCount END," +
  1868. " GroutingFlag = :GroutingFlag," +
  1869. " NoGroutingRreason = :NoGroutingRreason," +
  1870. " Remarks = :Remarks," +
  1871. " LogoID = :LogoID," +
  1872. " UpdateUserID = :UpdateUserID" +
  1873. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  1874. string updateGroutingDailyDetailLogoSql =
  1875. "UPDATE TP_PM_GroutingDailyDetail" +
  1876. " SET Remarks = :Remarks," +
  1877. " LogoID = :LogoID," +
  1878. " UpdateUserID = :UpdateUserID" +
  1879. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  1880. string updateGroutingDailyDetailRemarksSql =
  1881. "UPDATE TP_PM_GroutingDailyDetail" +
  1882. " SET Remarks = :Remarks," +
  1883. " UpdateUserID = :UpdateUserID" +
  1884. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  1885. string updateGroutingLineDetailSql =
  1886. "UPDATE TP_PC_GroutingLineDetail" +
  1887. " SET GroutingCount = CASE" +
  1888. " WHEN :cGroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'" +
  1889. " THEN GroutingCount + 1" +
  1890. " WHEN :cGroutingFlag = '" + (int)Constant.GroutingFlag.No + "'" +
  1891. " THEN GroutingCount - 1" +
  1892. " ELSE GroutingCount END," +
  1893. " UpdateUserID = :UpdateUserID" +
  1894. " WHERE GroutingLineDetailID = :GroutingLineDetailID /*AND :oGroutingFlag <> :cGroutingFlag*/";
  1895. #endregion SQL
  1896. // 更新注浆日报明细表
  1897. foreach (DataRow detailDataRow in dtGroutingDetail.Rows)
  1898. {
  1899. if (detailDataRow.RowState != DataRowState.Modified)
  1900. {
  1901. continue;
  1902. }
  1903. // 已交坯,不能修改注浆信息
  1904. if ("1" == detailDataRow["DeliverFlag"].ToString())
  1905. {
  1906. OracleParameter[] updateGroutingDailyDetailRemarksParas = new OracleParameter[]
  1907. {
  1908. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  1909. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  1910. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1911. };
  1912. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailRemarksSql, updateGroutingDailyDetailRemarksParas);
  1913. if (executeResult <= 0)
  1914. {
  1915. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1916. return sre;
  1917. }
  1918. continue;
  1919. }
  1920. // 已绑定条码、损坯,不能修改注浆信息,可以修改商标
  1921. if ((detailDataRow["BarCode"] != DBNull.Value && !string.IsNullOrWhiteSpace(detailDataRow["BarCode"].ToString())) ||
  1922. ((int)Constant.GroutingScrapFlag.Yes).ToString() == detailDataRow["ScrapFlag"].ToString())
  1923. {
  1924. OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
  1925. {
  1926. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  1927. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  1928. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  1929. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1930. };
  1931. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
  1932. if (executeResult <= 0)
  1933. {
  1934. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1935. return sre;
  1936. }
  1937. continue;
  1938. }
  1939. OracleParameter[] updateGroutingDailyDetailParas = new OracleParameter[]
  1940. {
  1941. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  1942. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  1943. new OracleParameter(":GroutingFlag", OracleDbType.Char, detailDataRow["GroutingFlag"], ParameterDirection.Input),
  1944. new OracleParameter(":NoGroutingRreason", OracleDbType.Int32, detailDataRow["NoGroutingRreason"], ParameterDirection.Input),
  1945. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  1946. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1947. };
  1948. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailSql, updateGroutingDailyDetailParas);
  1949. if (executeResult <= 0)
  1950. {
  1951. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1952. return sre;
  1953. }
  1954. // 更新成型线明细的注浆次数
  1955. string oGroutingFlag = detailDataRow["GroutingFlag", DataRowVersion.Original].ToString();
  1956. string cGroutingFlag = detailDataRow["GroutingFlag", DataRowVersion.Current].ToString();
  1957. if (oGroutingFlag != cGroutingFlag)
  1958. {
  1959. OracleParameter[] updateGroutingLineDetailParas = new OracleParameter[]
  1960. {
  1961. new OracleParameter(":GroutingLineDetailID", OracleDbType.Int32, detailDataRow["GroutingLineDetailID"], ParameterDirection.Input),
  1962. new OracleParameter(":cGroutingFlag", OracleDbType.Char, cGroutingFlag, ParameterDirection.Input),
  1963. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  1964. };
  1965. executeResult = tran.ExecuteNonQuery(updateGroutingLineDetailSql, updateGroutingLineDetailParas);
  1966. if (executeResult <= 0)
  1967. {
  1968. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  1969. return sre;
  1970. }
  1971. }
  1972. // TODO 修改以前记录时,是否更新大于注浆日期的注浆日报明细和生产数据中的注浆次数?
  1973. }
  1974. #endregion 编辑注浆日报
  1975. }
  1976. tran.Commit();
  1977. return sre;
  1978. }
  1979. catch (Exception ex)
  1980. {
  1981. if (tran != null &&
  1982. tran.ConnState == ConnectionState.Open)
  1983. {
  1984. tran.Rollback();
  1985. }
  1986. throw ex;
  1987. }
  1988. finally
  1989. {
  1990. if (tran != null &&
  1991. tran.ConnState == ConnectionState.Open)
  1992. {
  1993. tran.Disconnect();
  1994. }
  1995. }
  1996. }
  1997. #endregion 注浆登记
  1998. #region 条码绑定
  1999. /// <summary>
  2000. /// 取得FPM0105画面(选择能绑定条码的注浆登记)的查询数据
  2001. /// </summary>
  2002. /// <param name="user">登录用户信息</param>
  2003. /// <param name="se">查询条件</param>
  2004. /// <returns>查询结果</returns>
  2005. public static ServiceResultEntity GetFPM0105SData(SUserInfo user, FPM0104_SE se)
  2006. {
  2007. IDBConnection conn = null;
  2008. try
  2009. {
  2010. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2011. ServiceResultEntity sre = new ServiceResultEntity();
  2012. // 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 begin
  2013. string spm023 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_023' and ss.AccountID = " + user.AccountID);
  2014. int spm023Value = 0;
  2015. if (!string.IsNullOrWhiteSpace(spm023) && int.TryParse(spm023, out spm023Value) && spm023Value > 0)
  2016. {
  2017. DateTime tDate = DateTime.Now.Date;
  2018. DateTime lastDate = tDate.AddDays(1 - spm023Value);
  2019. if (se.GroutingDate < lastDate || se.GroutingDate > tDate)
  2020. {
  2021. sre.Status = Constant.ServiceResultStatus.Other;
  2022. sre.OtherStatus = -1;
  2023. sre.Message = string.Format("允许注浆绑码的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  2024. return sre;
  2025. }
  2026. }
  2027. // 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 end
  2028. string sqlString =
  2029. "SELECT " +
  2030. " GD.GroutingDailyID," +
  2031. " GD.GroutingLineCode," +
  2032. " GD.GroutingLineName," +
  2033. " GMS.GMouldStatusName," +
  2034. " GMT.GMouldTypeName," +
  2035. " GD.MouldQuantity," +
  2036. " GD.GroutingBatchNo," +
  2037. " GD.UserCode AS GroutingUserCode," +
  2038. " LISTAGG (DISTINCT GDD.GoodsCode, ',') WITHIN GROUP(ORDER BY GDD.GoodsCode ) AS GoodsCode" +
  2039. " ,STAFF.STAFFNAME" +
  2040. " FROM TP_PM_GroutingDaily GD" +
  2041. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  2042. " ON GDD.GroutingDailyID = GD.GroutingDailyID" +
  2043. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  2044. " ON GMS.GMouldStatusID = GD.GMouldStatus" +
  2045. " INNER JOIN TP_MST_GMouldType GMT" +
  2046. " ON GMT.GMouldTypeID = GD.GMouldTypeID" +
  2047. // fenglinyong add 添加员工姓名 2022-08-31
  2048. " LEFT JOIN (" +
  2049. " SELECT" +
  2050. " D.CLASSESSETTINGID," +
  2051. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME" +
  2052. " FROM" +
  2053. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D " +
  2054. " GROUP BY" +
  2055. " D.CLASSESSETTINGID" +
  2056. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID" +
  2057. // fenglinyong add 添加员工姓名 2022-08-31
  2058. " WHERE GD.AccountID = :AccountID" +
  2059. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  2060. // 成型线操作权限
  2061. " AND EXISTS (SELECT UP.PurviewID" +
  2062. " FROM TP_MST_UserPurview UP" +
  2063. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  2064. " AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
  2065. " AND UP.UserId = :UPUserId)" +
  2066. // 注浆,未绑定条码
  2067. " AND GD.GroutingDate = :GroutingDate" +
  2068. " AND GDD.GroutingFlag = '" + (int)Constant.GroutingFlag.Yes + "'";
  2069. if (se.ScrapFlag != 1)
  2070. {
  2071. sqlString += "AND GDD.ScrapFlag = '" + (int)Constant.GroutingScrapFlag.No + "'";
  2072. }
  2073. // 周兴 2018-4-2 增加
  2074. if (!se.IsBarCodeScrapReasonUseFlag)
  2075. {
  2076. sqlString += " AND (GDD.BARCODE IS NULL OR LENGTH(GDD.BARCODE) = 0)";
  2077. }
  2078. //" AND (GDD.BARCODE IS NULL OR GDD.BARCODE = '')"
  2079. sqlString += " AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'"
  2080. ;
  2081. StringBuilder sql = new StringBuilder(sqlString);
  2082. List<OracleParameter> parameters = new List<OracleParameter>();
  2083. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2084. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  2085. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate, ParameterDirection.Input));
  2086. if (se != null)
  2087. {
  2088. // 成型线编码
  2089. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  2090. {
  2091. sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
  2092. parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  2093. }
  2094. // 成型线名称
  2095. if (!string.IsNullOrEmpty(se.GroutingLineName))
  2096. {
  2097. sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
  2098. parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  2099. }
  2100. // 成型工号
  2101. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  2102. {
  2103. sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
  2104. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  2105. }
  2106. // 注浆批次
  2107. if (se.GroutingBatchNo.HasValue)
  2108. {
  2109. sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
  2110. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
  2111. }
  2112. // 成型线类别
  2113. if (se.GMouldTypeID.HasValue)
  2114. {
  2115. sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
  2116. parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
  2117. }
  2118. // 备注
  2119. if (!string.IsNullOrEmpty(se.Remarks))
  2120. {
  2121. sql.Append(" AND INSTR(GDD.Remarks, :Remarks) > 0");
  2122. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  2123. }
  2124. }
  2125. sqlString = sql.ToString() +
  2126. " GROUP BY " +
  2127. " GD.GroutingDailyID," +
  2128. " GD.GroutingLineCode," +
  2129. " GD.GroutingLineName," +
  2130. " GMS.GMouldStatusName," +
  2131. " GMT.GMouldTypeName," +
  2132. " GD.MouldQuantity," +
  2133. " GD.GroutingBatchNo," +
  2134. " GD.UserCode" +
  2135. " ,STAFF.STAFFNAME" +
  2136. " ORDER BY GD.GroutingLineCode";
  2137. DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2138. if (data == null || data.Rows.Count == 0)
  2139. {
  2140. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2141. return sre;
  2142. }
  2143. sre.Data = new DataSet();
  2144. sre.Data.Tables.Add(data);
  2145. return sre;
  2146. }
  2147. catch (Exception ex)
  2148. {
  2149. throw ex;
  2150. }
  2151. finally
  2152. {
  2153. if (conn != null &&
  2154. conn.ConnState == ConnectionState.Open)
  2155. {
  2156. conn.Close();
  2157. }
  2158. }
  2159. }
  2160. /// <summary>
  2161. /// 取得FPM0103画面(绑定条码)的注浆数据
  2162. /// </summary>
  2163. /// <param name="user">登录用户信息</param>
  2164. /// <param name="groutingDailyID">注浆日报ID</param>
  2165. /// <returns>
  2166. /// 注浆数据
  2167. /// OtherStatus = 1:没有可编辑的注浆信息
  2168. /// OtherStatus = 2:没有可编辑的注浆明细信息
  2169. /// </returns>
  2170. public static ServiceResultEntity GetFPM0103Data(SUserInfo user, int groutingDailyID)
  2171. {
  2172. ServiceResultEntity sre = new ServiceResultEntity();
  2173. if (groutingDailyID < 1)
  2174. {
  2175. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  2176. return sre;
  2177. }
  2178. IDBConnection conn = null;
  2179. try
  2180. {
  2181. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2182. StringBuilder sql = new StringBuilder();
  2183. List<OracleParameter> parameters = new List<OracleParameter>();
  2184. string gdSql =
  2185. "SELECT GD.GroutingDailyID," +
  2186. " GD.GroutingLineID," +
  2187. " GD.GroutingLineCode," +
  2188. " GD.GroutingLineName," +
  2189. " GD.MouldQuantity," +
  2190. " GD.GroutingDate," +
  2191. //" GD.GroutingBatchNo," +
  2192. " GD.OPTimeStamp" +
  2193. " FROM TP_PM_GroutingDaily GD" +
  2194. // 成型线操作权限
  2195. //" INNER JOIN (SELECT UP.PurviewID" +
  2196. //" FROM TP_MST_UserPurview UP" +
  2197. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  2198. //" AND UP.UserId = :UPUserId) UP" +
  2199. //" ON UP.PurviewID = GD.GroutingLineID" +
  2200. " WHERE GD.AccountID = :AccountID" +
  2201. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  2202. // 成型线操作权限
  2203. " AND EXISTS (SELECT UP.PurviewID" +
  2204. " FROM TP_MST_UserPurview UP" +
  2205. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  2206. " AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
  2207. " AND UP.UserId = :UPUserId)" +
  2208. " AND GD.GroutingDailyID = :GroutingDailyID";
  2209. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2210. parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  2211. parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
  2212. DataTable gdData = conn.GetSqlResultToDt(gdSql, parameters.ToArray());
  2213. if (gdData == null || gdData.Rows.Count == 0)
  2214. {
  2215. // 没有可编辑的注浆信息
  2216. sre.Status = Constant.ServiceResultStatus.Other;
  2217. sre.OtherStatus = 1;
  2218. sre.Message = "没有可编辑的注浆信息";
  2219. return sre;
  2220. }
  2221. gdData.TableName = "TP_PM_GroutingDaily";
  2222. sre.Data = new DataSet();
  2223. sre.Data.Tables.Add(gdData);
  2224. string gddSql =
  2225. "SELECT GDD.GroutingDailyID," +
  2226. " GDD.GroutingDailyDetailID," +
  2227. " GDD.GroutingLineID," +
  2228. " GDD.GroutingLineDetailID," +
  2229. " GDD.GroutingLineCode," +
  2230. " GDD.GroutingLineName," +
  2231. " GDD.GroutingDate," +
  2232. " GDD.GroutingBatchNo," +
  2233. " GDD.GroutingMouldCode," +
  2234. " GDD.UserCode," +
  2235. " GDD.GoodsCode," +
  2236. " GDD.GoodsName," +
  2237. " GMS.GMouldStatusName," +
  2238. " GDD.GroutingFlag," +
  2239. " GDD.LogoID," +
  2240. //" GDD.NoGroutingRreason," +
  2241. " DD.DictionaryValue AS NoGroutingRreason," +
  2242. " GDD.Remarks," +
  2243. " GDD.ScrapFlag," +
  2244. " GDD.DeliverFlag," +
  2245. //" GP.BarCode," +
  2246. //" GP.BarCode AS OBarCode," +
  2247. " GDD.SReasonID," +
  2248. " GDD.SReasonID ScrapReasonID," +
  2249. " SR.ScrapReason SReason," +
  2250. " GDD.BarCode," +
  2251. " GDD.BarCode AS OBarCode," +
  2252. " GDD.ScrapFlag AS OScrapFlag" +
  2253. " ,STAFF.STAFFNAME" +
  2254. " FROM TP_PM_GroutingDailyDetail GDD" +
  2255. " LEFT JOIN TP_MST_ScrapReason SR " +
  2256. " ON GDD.SReasonID = SR.ScrapReasonID " +
  2257. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  2258. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  2259. " LEFT JOIN TP_MST_DataDictionary DD" +
  2260. " ON DD.DictionaryID = GDD.NoGroutingRreason" +
  2261. //" LEFT JOIN TP_PM_GroutingProduct GP" +
  2262. //" ON GP.GroutingDailyDetailID = GDD.GroutingDailyDetailID" +
  2263. // fenglinyong add 添加员工姓名 2022-08-31
  2264. " LEFT JOIN (" +
  2265. " SELECT" +
  2266. " D.CLASSESSETTINGID," +
  2267. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME" +
  2268. " FROM" +
  2269. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D " +
  2270. " GROUP BY " +
  2271. " D.CLASSESSETTINGID " +
  2272. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID " +
  2273. // fenglinyong add 添加员工姓名 2022-08-31
  2274. " WHERE GDD.AccountID = :AccountID" +
  2275. " AND GDD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  2276. " AND GDD.GroutingDailyID = :GroutingDailyID" +
  2277. " ORDER BY GDD.GroutingMouldCode";
  2278. parameters.Clear();
  2279. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2280. parameters.Add(new OracleParameter(":GroutingDailyID", OracleDbType.Int32, groutingDailyID, ParameterDirection.Input));
  2281. DataTable gddData = conn.GetSqlResultToDt(gddSql, parameters.ToArray());
  2282. if (gddData == null || gddData.Rows.Count == 0)
  2283. {
  2284. // 没有可注浆的模具
  2285. sre.Status = Constant.ServiceResultStatus.Other;
  2286. sre.OtherStatus = 2;
  2287. sre.Message = "没有可编辑的注浆明细信息";
  2288. return sre;
  2289. }
  2290. gddData.TableName = "TP_PM_GroutingDailyDetail";
  2291. sre.Data.Tables.Add(gddData);
  2292. // 获取成型报损原因
  2293. string sqlString = "SELECT ScrapReasonID,ScrapReason,DisplayNo,ScrapType,Remarks,ValueFlag FROM TP_MST_ScrapReason "
  2294. + " WHERE AccountID = :AccountID AND ScrapType ='0' Order By DisplayNo";
  2295. parameters.Clear();
  2296. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  2297. DataTable returnTable = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
  2298. if (returnTable == null || returnTable.Rows.Count == 0)
  2299. {
  2300. // 没有可注浆的模具
  2301. sre.Status = Constant.ServiceResultStatus.Other;
  2302. sre.OtherStatus = 3;
  2303. sre.Message = "没有获取到成型报损原因";
  2304. return sre;
  2305. }
  2306. // 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 begin
  2307. sre.Result = 1;
  2308. string spm023 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_023' and ss.AccountID = " + user.AccountID);
  2309. int spm023Value = 0;
  2310. if (!string.IsNullOrWhiteSpace(spm023) && int.TryParse(spm023, out spm023Value) && spm023Value > 0)
  2311. {
  2312. DateTime tDate = DateTime.Now.Date;
  2313. DateTime lastDate = tDate.AddDays(1 - spm023Value);
  2314. DateTime gData = (DateTime)gdData.Rows[0]["GroutingDate"];
  2315. if (gData < lastDate || gData > tDate)
  2316. {
  2317. sre.Result = 0;
  2318. sre.Message = string.Format("允许注浆绑码的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  2319. }
  2320. }
  2321. // 'S_PM_023', '注浆绑码限制天数' add by chenxy 2019-05-07 end
  2322. returnTable.TableName = "TP_MST_ScrapReason";
  2323. sre.Data.Tables.Add(returnTable);
  2324. return sre;
  2325. }
  2326. catch (Exception ex)
  2327. {
  2328. throw ex;
  2329. }
  2330. finally
  2331. {
  2332. if (conn != null &&
  2333. conn.ConnState == ConnectionState.Open)
  2334. {
  2335. conn.Close();
  2336. }
  2337. }
  2338. }
  2339. /// <summary>
  2340. /// 保存FPM0103画面(绑定条码)的注浆数据
  2341. /// </summary>
  2342. /// <param name="user">登录用户信息</param>
  2343. /// <param name="groutingInfo">注浆数据</param>
  2344. /// <returns>保存结果
  2345. /// OtherStatus = 1: 没有以下成型线的操作权限
  2346. /// </returns>
  2347. public static ServiceResultEntity SetFPM0103Data(SUserInfo user, DataSet groutingInfo)
  2348. {
  2349. IDBTransaction tran = null;
  2350. try
  2351. {
  2352. ServiceResultEntity sre = new ServiceResultEntity();
  2353. if (groutingInfo == null ||
  2354. groutingInfo.Tables.Count < 2 ||
  2355. groutingInfo.Tables[0].Rows.Count < 1 ||
  2356. groutingInfo.Tables[1].Rows.Count < 1)
  2357. {
  2358. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2359. return sre;
  2360. }
  2361. tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2362. int executeResult = 0;
  2363. // 绑定条码
  2364. #region 校验时间戳
  2365. // 校验时间戳
  2366. DataRow gdDataRow = groutingInfo.Tables[0].Rows[0];
  2367. string checkSql =
  2368. "SELECT GroutingDailyID" +
  2369. " FROM TP_PM_GroutingDaily" +
  2370. " WHERE GroutingDailyID = :GroutingDailyID" +
  2371. " AND OPTimeStamp = :OPTimeStamp" +
  2372. " AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
  2373. OracleParameter[] checkParas = new OracleParameter[]
  2374. {
  2375. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  2376. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
  2377. };
  2378. object checkResult = tran.GetSqlResultToObj(checkSql, checkParas);
  2379. if (checkResult == null)
  2380. {
  2381. sre.Status = Constant.ServiceResultStatus.DataChanged;
  2382. return sre;
  2383. }
  2384. #endregion 校验时间戳
  2385. #region 校验条码
  2386. StringBuilder barcodes = new StringBuilder(",");
  2387. foreach (DataRow row in groutingInfo.Tables[1].Rows)
  2388. {
  2389. if ((row["OBarCode"] == null || row["OBarCode"] == DBNull.Value) &&
  2390. (row["BarCode"] != null && row["BarCode"] != DBNull.Value))
  2391. {
  2392. barcodes.Append(row["BarCode"].ToString() + ",");
  2393. }
  2394. }
  2395. // todo 条码状态表
  2396. string checkBarcodeSql =
  2397. "SELECT UBC.BarCode FROM TP_PM_UsedBarCode UBC " +
  2398. " WHERE INSTR(:BarCodes, ',' || UBC.BarCode || ',') > 0";
  2399. OracleParameter[] checkBarcodeParas = new OracleParameter[]
  2400. {
  2401. new OracleParameter(":BarCodes", OracleDbType.NVarchar2, barcodes.ToString(), ParameterDirection.Input),
  2402. };
  2403. DataTable barCodeDataTable = tran.GetSqlResultToDt(checkBarcodeSql, checkBarcodeParas);
  2404. if (barCodeDataTable != null && barCodeDataTable.Rows.Count > 0)
  2405. {
  2406. barcodes.Clear();
  2407. //foreach (DataRow row in groutingInfo.Tables[1].Rows)
  2408. foreach (DataRow row in barCodeDataTable.Rows)
  2409. {
  2410. if (barcodes.Length > 0)
  2411. {
  2412. barcodes.Append(",");
  2413. }
  2414. barcodes.Append(row["BarCode"].ToString());
  2415. }
  2416. sre.Status = Constant.ServiceResultStatus.Other;
  2417. sre.OtherStatus = 1;
  2418. //sre.Message = string.Format("条码({0})已被使用", barcode);
  2419. sre.Message = "以下条码已被使用" + System.Environment.NewLine + barcodes.ToString();
  2420. return sre;
  2421. }
  2422. #endregion 校验条码
  2423. #region 更新注浆日报表
  2424. string upgdSql = "UPDATE TP_PM_GroutingDaily SET UpdateUserID = :UpdateUserID WHERE GroutingDailyID = :GroutingDailyID";
  2425. OracleParameter[] upgdParas = new OracleParameter[]
  2426. {
  2427. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  2428. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2429. };
  2430. executeResult = tran.ExecuteNonQuery(upgdSql, upgdParas);
  2431. if (executeResult <= 0)
  2432. {
  2433. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2434. return sre;
  2435. }
  2436. #endregion 更新注浆日报表
  2437. #region 更新注浆日报明细表
  2438. #region SQL
  2439. string updateGroutingDailyDetailLogoSql =
  2440. "UPDATE TP_PM_GroutingDailyDetail" +
  2441. " SET Remarks = :Remarks," +
  2442. " UpdateUserID = :UpdateUserID, LogoID = :LogoID" +
  2443. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  2444. string updateGroutingDailyDetailRemarksSql =
  2445. "UPDATE TP_PM_GroutingDailyDetail" +
  2446. " SET ScrapFlag = :ScrapFlag, Remarks = :Remarks, " +
  2447. " ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
  2448. " ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
  2449. " UpdateUserID = :UpdateUserID, LogoID = :LogoID" +
  2450. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  2451. string updateGroutingDailyDetailScrapFlagSql =
  2452. "UPDATE TP_PM_GroutingDailyDetail" +
  2453. " SET ScrapFlag = :ScrapFlag, " +
  2454. " ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
  2455. " ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
  2456. " Remarks = :Remarks," +
  2457. " LogoID = :LogoID," +
  2458. " UpdateUserID = :UpdateUserID" +
  2459. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  2460. string updateGroutingDailyDetailSql =
  2461. "UPDATE TP_PM_GroutingDailyDetail" +
  2462. " SET BarCode = :BarCode, " +
  2463. " ScrapFlag = '" + (int)Constant.GroutingScrapFlag.No + "'," +
  2464. " Remarks = :Remarks," +
  2465. " LogoID = :LogoID," +
  2466. " UpdateUserID = :UpdateUserID" +
  2467. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  2468. #endregion SQL
  2469. foreach (DataRow detailDataRow in groutingInfo.Tables[1].Rows)
  2470. {
  2471. if (detailDataRow.RowState != DataRowState.Modified)
  2472. {
  2473. continue;
  2474. }
  2475. // 未注浆不用更新
  2476. if (((int)Constant.GroutingFlag.Yes).ToString() != detailDataRow["GroutingFlag"].ToString())
  2477. {
  2478. //OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
  2479. //{
  2480. // new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2481. // new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2482. // new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2483. // new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2484. //};
  2485. //executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
  2486. //if (executeResult <= 0)
  2487. //{
  2488. // sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2489. // return sre;
  2490. //}
  2491. continue;
  2492. }
  2493. // 已交坯不用更新
  2494. if ("1" == detailDataRow["DeliverFlag"].ToString())
  2495. {
  2496. //OracleParameter[] updateGroutingDailyDetailLogoParas = new OracleParameter[]
  2497. //{
  2498. // new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2499. // new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2500. // new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2501. // new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2502. //};
  2503. //executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailLogoSql, updateGroutingDailyDetailLogoParas);
  2504. //if (executeResult <= 0)
  2505. //{
  2506. // sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2507. // return sre;
  2508. //}
  2509. continue;
  2510. }
  2511. // 已绑定条码,不能修改条码,绑定条码后损坯
  2512. string oBarcode = detailDataRow["OBarcode"].ToString();
  2513. if (!string.IsNullOrEmpty(oBarcode))
  2514. {
  2515. OracleParameter[] updateGroutingDailyDetailRemarksParas = new OracleParameter[]
  2516. {
  2517. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2518. new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
  2519. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2520. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2521. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2522. };
  2523. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailRemarksSql, updateGroutingDailyDetailRemarksParas);
  2524. if (executeResult <= 0)
  2525. {
  2526. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2527. return sre;
  2528. }
  2529. //更新使用条码 2015/7/14
  2530. string sqlUpdateUsedBarCode = "update TP_PM_UsedBarCode set BarCodeStatus=:BarCodeStatus where barcode=:barcode";
  2531. OracleParameter[] UpdateUsedBarCodeParas = new OracleParameter[]
  2532. {
  2533. new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
  2534. new OracleParameter(":barcode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
  2535. };
  2536. executeResult = tran.ExecuteNonQuery(sqlUpdateUsedBarCode, UpdateUsedBarCodeParas);
  2537. if (executeResult <= 0)
  2538. {
  2539. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2540. return sre;
  2541. }
  2542. //更新使用条码 2015/7/14 end
  2543. continue;
  2544. }
  2545. // 损坯
  2546. string barcode = detailDataRow["Barcode"].ToString();
  2547. if (((int)Constant.GroutingScrapFlag.Yes).ToString() == detailDataRow["ScrapFlag"].ToString() ||
  2548. string.IsNullOrWhiteSpace(barcode))
  2549. {
  2550. OracleParameter[] updateGroutingDailyDetailScrapFlagParas = new OracleParameter[]
  2551. {
  2552. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2553. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2554. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2555. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2556. new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
  2557. };
  2558. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailScrapFlagSql, updateGroutingDailyDetailScrapFlagParas);
  2559. if (executeResult <= 0)
  2560. {
  2561. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2562. return sre;
  2563. }
  2564. //更新使用条码 2015/7/14
  2565. if (!string.IsNullOrEmpty(detailDataRow["BarCode"].ToString()))
  2566. {
  2567. string sqlUpdateUsedBarCode = "update TP_PM_UsedBarCode set BarCodeStatus=:BarCodeStatus where barcode=:barcode";
  2568. OracleParameter[] UpdateUsedBarCodeParas = new OracleParameter[]
  2569. {
  2570. new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
  2571. new OracleParameter(":barcode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
  2572. };
  2573. executeResult = tran.ExecuteNonQuery(sqlUpdateUsedBarCode, UpdateUsedBarCodeParas);
  2574. if (executeResult <= 0)
  2575. {
  2576. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2577. return sre;
  2578. }
  2579. }
  2580. //更新使用条码 2015/7/14 end
  2581. continue;
  2582. }
  2583. // 验证条码
  2584. // todo 条码状态表
  2585. //string checkBarcodeSql =
  2586. // "SELECT 1 FROM TP_PM_UsedBarCode WHERE BarCode = :BarCode";
  2587. //OracleParameter[] checkBarcodeParas = new OracleParameter[]
  2588. //{
  2589. // new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
  2590. //};
  2591. //object result = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas);
  2592. //if (result != null)
  2593. //{
  2594. // sre.Status = Constant.ServiceResultStatus.Other;
  2595. // sre.OtherStatus = 1;
  2596. // sre.Message = string.Format("条码({0})已被使用", barcode);
  2597. // return sre;
  2598. //}
  2599. string insertBarcodeSql =
  2600. "INSERT INTO TP_PM_UsedBarCode " +
  2601. " (BarCode, AccountID, CreateTime, CreateUserID,GroutingDailyDetailID,BarCodeStatus)" +
  2602. "VALUES " +
  2603. " (:BarCode, :AccountID, sysdate, :CreateUserID,:GroutingDailyDetailID,:BarCodeStatus)";
  2604. OracleParameter[] insertBarcodeParas = new OracleParameter[]
  2605. {
  2606. new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
  2607. new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  2608. new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2609. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2610. new OracleParameter(":BarCodeStatus", OracleDbType.Char, detailDataRow["ScrapFlag"].ToString()=="0"?"1":"2", ParameterDirection.Input),
  2611. };
  2612. executeResult = tran.ExecuteNonQuery(insertBarcodeSql, insertBarcodeParas);
  2613. if (executeResult <= 0)
  2614. {
  2615. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2616. return sre;
  2617. }
  2618. // 绑定条码
  2619. OracleParameter[] updateGroutingDailyDetailParas = new OracleParameter[]
  2620. {
  2621. new OracleParameter(":LogoID", OracleDbType.Int32, detailDataRow["LogoID"], ParameterDirection.Input),
  2622. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  2623. new OracleParameter(":BarCode", OracleDbType.NVarchar2, detailDataRow["BarCode"], ParameterDirection.Input),
  2624. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  2625. new OracleParameter(":UpdateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  2626. };
  2627. executeResult = tran.ExecuteNonQuery(updateGroutingDailyDetailSql, updateGroutingDailyDetailParas);
  2628. if (executeResult <= 0)
  2629. {
  2630. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  2631. return sre;
  2632. }
  2633. }
  2634. #endregion 更新注浆日报明细表
  2635. tran.Commit();
  2636. return sre;
  2637. }
  2638. catch (Exception ex)
  2639. {
  2640. if (tran != null &&
  2641. tran.ConnState == ConnectionState.Open)
  2642. {
  2643. tran.Rollback();
  2644. }
  2645. throw ex;
  2646. }
  2647. finally
  2648. {
  2649. if (tran != null &&
  2650. tran.ConnState == ConnectionState.Open)
  2651. {
  2652. tran.Disconnect();
  2653. }
  2654. }
  2655. }
  2656. #endregion 条码绑定
  2657. #region 取消最后注浆
  2658. /// <summary>
  2659. /// 验证成型线编码是否能取消最后注浆
  2660. /// </summary>
  2661. /// <param name="user"></param>
  2662. /// <param name="glcode"></param>
  2663. /// <returns></returns>
  2664. public static ServiceResultEntity CheckFPM0106GLCode(SUserInfo user, string glcode)
  2665. {
  2666. ServiceResultEntity sre = new ServiceResultEntity();
  2667. if (string.IsNullOrWhiteSpace(glcode))
  2668. {
  2669. sre.Status = Constant.ServiceResultStatus.Other;
  2670. sre.OtherStatus = 1;
  2671. sre.Message = $"成型线【{glcode}】不存在";
  2672. return sre;
  2673. }
  2674. IDBConnection conn = null;
  2675. try
  2676. {
  2677. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2678. //输入成型线号,1.验证是否存在、2.最后注浆日期、批次是否存在,3.是否有报损、是否绑定条码。 返回【最后注浆日期、批次】。
  2679. string sqlString = "select GL.GroutingLineID\n" +
  2680. " ,gl.GroutingLineCode\n" +
  2681. " ,gl.GroutingLineName\n" +
  2682. " ,GL.LastGroutingDate\n" +
  2683. " ,GL.LastGroutingBatchNo\n" +
  2684. " ,gd.usercode\n" +
  2685. " ,gd.GroutingDailyID\n" +
  2686. " from TP_PC_GroutingLine gl\n" +
  2687. " left join TP_PM_GroutingDaily gd\n" +
  2688. " on gd.GroutingLineID = gl.GroutingLineID\n" +
  2689. " and gd.GroutingDate = GL.LastGroutingDate\n" +
  2690. " and gd.GroutingBatchNo = gl.LastGroutingBatchNo\n" +
  2691. " and gd.valueflag = '1'\n" +
  2692. " where gl.valueflag = '1'\n" +
  2693. " and gl.GroutingLineCode = :glcode";
  2694. OracleParameter[] ps = new OracleParameter[]
  2695. {
  2696. new OracleParameter(":glcode", glcode),
  2697. };
  2698. DataTable data = conn.GetSqlResultToDt(sqlString, ps);
  2699. if (data == null || data.Rows.Count == 0)
  2700. {
  2701. sre.Status = Constant.ServiceResultStatus.Other;
  2702. sre.OtherStatus = 1;
  2703. sre.Message = $"成型线【{glcode}】不存在";
  2704. return sre;
  2705. }
  2706. sre.Data = new DataSet();
  2707. sre.Data.Tables.Add(data);
  2708. object objgdid = data.Rows[0]["GroutingDailyID"];
  2709. if (objgdid == null || objgdid == DBNull.Value)
  2710. {
  2711. sre.Status = Constant.ServiceResultStatus.Other;
  2712. sre.OtherStatus = 2;
  2713. sre.Message = $"成型线【{glcode}】未注浆";
  2714. return sre;
  2715. }
  2716. int gdid = Convert.ToInt32(objgdid);
  2717. sqlString = "select count(gdd.GroutingDailyDetailID) dc\n" +
  2718. " from TP_PM_GroutingDailyDetail gdd\n" +
  2719. " where gdd.valueflag = '1'\n" +
  2720. " and gdd.GroutingDailyID = :gdid\n" +
  2721. " and (gdd.ScrapFlag <> '0' or gdd.barcode is not null)";
  2722. ps = new OracleParameter[]
  2723. {
  2724. new OracleParameter(":gdid", gdid),
  2725. };
  2726. int dcount = Convert.ToInt32(conn.GetSqlResultToObj(sqlString, ps));
  2727. if (dcount > 0)
  2728. {
  2729. sre.Status = Constant.ServiceResultStatus.Other;
  2730. sre.OtherStatus = 3;
  2731. sre.Message = $"成型线【{glcode}】最后注浆登记中有已报损或绑定条码的注浆明细";
  2732. return sre;
  2733. }
  2734. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 begin
  2735. sre.Result = 1;
  2736. string spm022 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_022' and ss.AccountID = " + user.AccountID);
  2737. int spm022Value = 0;
  2738. if (!string.IsNullOrWhiteSpace(spm022) && int.TryParse(spm022, out spm022Value) && spm022Value > 0)
  2739. {
  2740. DateTime tDate = DateTime.Now.Date;
  2741. DateTime lastDate = tDate.AddDays(1 - spm022Value);
  2742. DateTime gData = (DateTime)data.Rows[0]["LastGroutingDate"];
  2743. if (gData < lastDate || gData > tDate)
  2744. {
  2745. sre.Status = Constant.ServiceResultStatus.Other;
  2746. sre.OtherStatus = 9;
  2747. sre.Message = string.Format("允许注浆编辑的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  2748. return sre;
  2749. }
  2750. }
  2751. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 end
  2752. return sre;
  2753. }
  2754. catch (Exception ex)
  2755. {
  2756. throw ex;
  2757. }
  2758. finally
  2759. {
  2760. if (conn != null &&
  2761. conn.ConnState == ConnectionState.Open)
  2762. {
  2763. conn.Close();
  2764. }
  2765. }
  2766. }
  2767. /// <summary>
  2768. /// 验证成型线编码是否能取消最后注浆
  2769. /// </summary>
  2770. /// <param name="user"></param>
  2771. /// <param name="glcode"></param>
  2772. /// <returns></returns>
  2773. public static ServiceResultEntity SetFPM0106GLCode(SUserInfo user, ClientRequestEntity cre)
  2774. {
  2775. string glcode = cre.Data.Tables[0].Rows[0]["GroutingLineCode"] + "";
  2776. int glID = Convert.ToInt32(cre.Data.Tables[0].Rows[0]["GroutingLineID"]);
  2777. int gdID = Convert.ToInt32(cre.Data.Tables[0].Rows[0]["GroutingDailyID"]);
  2778. ServiceResultEntity sre = new ServiceResultEntity();
  2779. if (string.IsNullOrWhiteSpace(glcode))
  2780. {
  2781. sre.Status = Constant.ServiceResultStatus.Other;
  2782. sre.OtherStatus = 1;
  2783. sre.Message = $"成型线【{glcode}】不存在";
  2784. return sre;
  2785. }
  2786. IDBTransaction conn = null;
  2787. try
  2788. {
  2789. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  2790. //输入成型线号,1.验证是否存在、2.最后注浆日期、批次是否存在,3.是否有报损、是否绑定条码。 返回【最后注浆日期、批次】。
  2791. string sqlString = "select GL.GroutingLineID\n" +
  2792. //" ,gl.GroutingLineCode\n" +
  2793. //" ,gl.GroutingLineName\n" +
  2794. //" ,nvl(GL.LastGroutingDate, to_date('1900-01-01','yyyy-mm-dd')) LastGroutingDate\n" +
  2795. //" ,nvl(GL.LastGroutingBatchNo,0) LastGroutingBatchNo\n" +
  2796. //" ,gd.usercode\n" +
  2797. " ,gd.GroutingDailyID\n" +
  2798. " from TP_PC_GroutingLine gl\n" +
  2799. " inner join TP_PM_GroutingDaily gd\n" +
  2800. " on gd.GroutingLineID = gl.GroutingLineID\n" +
  2801. " and gd.GroutingDate = GL.LastGroutingDate\n" +
  2802. " and gd.GroutingBatchNo = gl.LastGroutingBatchNo\n" +
  2803. " and gd.valueflag = '1'\n" +
  2804. " where gl.valueflag = '1'\n" +
  2805. " and gl.GroutingLineID = :glID\n" +
  2806. " for update";
  2807. OracleParameter[] ps = new OracleParameter[]
  2808. {
  2809. new OracleParameter(":glID", glID),
  2810. };
  2811. DataTable data = conn.GetSqlResultToDt(sqlString, ps);
  2812. if (data == null || data.Rows.Count == 0)
  2813. {
  2814. sre.Status = Constant.ServiceResultStatus.Other;
  2815. sre.OtherStatus = 1;
  2816. sre.Message = $"成型线【{glcode}】不存在";
  2817. return sre;
  2818. }
  2819. //sre.Data = new DataSet();
  2820. //sre.Data.Tables.Add(data);
  2821. //DateTime lgd = Convert.ToDateTime(data.Rows[0]["LastGroutingDate"]);
  2822. //int lgb = Convert.ToInt32(data.Rows[0]["LastGroutingBatchNo"]);
  2823. //if (lgd != Convert.ToDateTime(cre.Data.Tables[0].Rows[0]["LastGroutingDate"]) ||
  2824. // lgb != Convert.ToInt32(cre.Data.Tables[0].Rows[0]["LastGroutingBatchNo"]))
  2825. //{
  2826. // sre.Status = Constant.ServiceResultStatus.Other;
  2827. // sre.OtherStatus = 2;
  2828. // sre.Message = $"成型线【{glcode}】最后注浆日期和批次已变更";
  2829. // return sre;
  2830. //}
  2831. int lgdid = Convert.ToInt32(data.Rows[0]["GroutingDailyID"]);
  2832. if (lgdid != gdID)
  2833. {
  2834. sre.Status = Constant.ServiceResultStatus.Other;
  2835. sre.OtherStatus = 2;
  2836. sre.Message = $"成型线【{glcode}】最后注浆日期和批次已变更";
  2837. return sre;
  2838. }
  2839. sqlString = "select count(gdd.GroutingDailyDetailID) dc\n" +
  2840. " from TP_PM_GroutingDailyDetail gdd\n" +
  2841. " where gdd.valueflag = '1'\n" +
  2842. " and gdd.GroutingDailyID = :gdid\n" +
  2843. " and (gdd.ScrapFlag <> '0' or gdd.barcode is not null)";
  2844. ps = new OracleParameter[]
  2845. {
  2846. new OracleParameter(":gdid", gdID),
  2847. };
  2848. int dcount = Convert.ToInt32(conn.GetSqlResultToObj(sqlString, ps));
  2849. if (dcount > 0)
  2850. {
  2851. sre.Status = Constant.ServiceResultStatus.Other;
  2852. sre.OtherStatus = 3;
  2853. sre.Message = $"成型线【{glcode}】最后注浆登记中有已报损或绑定条码的注浆明细";
  2854. return sre;
  2855. }
  2856. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 begin
  2857. //sre.Result = 1;
  2858. //string spm022 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_022' and ss.AccountID = " + user.AccountID);
  2859. //int spm022Value = 0;
  2860. //if (!string.IsNullOrWhiteSpace(spm022) && int.TryParse(spm022, out spm022Value) && spm022Value > 0)
  2861. //{
  2862. // DateTime tDate = DateTime.Now.Date;
  2863. // DateTime lastDate = tDate.AddDays(1 - spm022Value);
  2864. // DateTime gData = (DateTime)data.Rows[0]["LastGroutingDate"];
  2865. // if (gData < lastDate || gData > tDate)
  2866. // {
  2867. // sre.Status = Constant.ServiceResultStatus.Other;
  2868. // sre.OtherStatus = 9;
  2869. // sre.Message = string.Format("允许注浆编辑的日期范围【{0:yyyy-MM-dd}】-【{1:yyyy-MM-dd}】", lastDate, tDate);
  2870. // return sre;
  2871. // }
  2872. //}
  2873. // 'S_PM_022', '注浆编辑限制天数' add by chenxy 2018-12-15 end
  2874. //2.然后取消注浆,3.并valueflag=0。4.修改成型线的最后注浆日期、批次。
  2875. int r = 0;
  2876. string sql = null;
  2877. sql =
  2878. "UPDATE TP_PM_GroutingDailyDetail" +
  2879. " SET GroutingCount = CASE" +
  2880. " WHEN GroutingFlag = '1'" +
  2881. " THEN GroutingCount - 1" +
  2882. " ELSE GroutingCount END," +
  2883. " GroutingFlag = '0'," +
  2884. " UpdateUserID = :UpdateUserID" +
  2885. " WHERE GroutingDailyID = :gdid";
  2886. ps = new OracleParameter[]
  2887. {
  2888. new OracleParameter(":UpdateUserID", user.UserID),
  2889. new OracleParameter(":gdid", gdID),
  2890. };
  2891. r = conn.ExecuteNonQuery(sql, ps);
  2892. sql = "UPDATE tp_pc_groutinglinedetail gld\n" +
  2893. " SET gld.groutingcount =\n" +
  2894. " (SELECT gdds.groutingcount\n" +
  2895. " FROM tp_pm_groutingdailydetail gdds\n" +
  2896. " WHERE gdds.groutingdailyid = :gdid\n" +
  2897. " AND gdds.groutinglinedetailid = gld.groutinglinedetailid\n" +
  2898. " AND gdds.valueflag = '1')\n" +
  2899. " ,gld.updateuserid = :UpdateUserID\n" +
  2900. " WHERE gld.groutinglinedetailid IN\n" +
  2901. " (SELECT gdd.groutinglinedetailid\n" +
  2902. " FROM tp_pm_groutingdailydetail gdd\n" +
  2903. " WHERE gdd.groutingdailyid = :gdid\n" +
  2904. " AND gdd.valueflag = '1')";
  2905. r = conn.ExecuteNonQuery(sql, ps);
  2906. sql =
  2907. "UPDATE TP_PM_GroutingDailyDetail" +
  2908. " SET valueflag = '0'," +
  2909. " UpdateUserID = :UpdateUserID" +
  2910. " WHERE GroutingDailyID = :gdid";
  2911. r = conn.ExecuteNonQuery(sql, ps);
  2912. sql = "update TP_PM_GroutingDaily gd set gd.valueflag='0', updateuserid = :UpdateUserID where gd.GroutingDailyID = :gdid";
  2913. r = conn.ExecuteNonQuery(sql, ps);
  2914. sql = "update TP_PC_GroutingLine gl\n" +
  2915. " set (gl.LastGroutingDate, gl.LastGroutingBatchNo) =\n" +
  2916. " (select gd.GroutingDate, gd.GroutingBatchNo\n" +
  2917. " from TP_PM_GroutingDaily gd\n" +
  2918. " where gd.GroutingDailyID =\n" +
  2919. " (select max(gm.GroutingDailyID)\n" +
  2920. " from TP_PM_GroutingDaily gm\n" +
  2921. " where gm.GroutingLineID = :glid\n" +
  2922. " and gm.valueflag = '1'))\n" +
  2923. " ,gl.UpdateUserID = :UpdateUserID\n" +
  2924. " where gl.GroutingLineID = :glid";
  2925. ps = new OracleParameter[]
  2926. {
  2927. new OracleParameter(":UpdateUserID", user.UserID),
  2928. new OracleParameter(":glid", glID),
  2929. };
  2930. r = conn.ExecuteNonQuery(sql, ps);
  2931. conn.Commit();
  2932. return sre;
  2933. }
  2934. catch (Exception ex)
  2935. {
  2936. throw ex;
  2937. }
  2938. finally
  2939. {
  2940. if (conn != null &&
  2941. conn.ConnState == ConnectionState.Open)
  2942. {
  2943. conn.Disconnect();
  2944. }
  2945. }
  2946. }
  2947. #endregion
  2948. #endregion 注浆管理
  2949. #region 条码管理
  2950. #region 条码校验
  2951. /*
  2952. /// <summary>
  2953. /// 条码()无效
  2954. /// </summary>
  2955. private const string MSG_CHECK_BARCODE_1 = "条码({0})无效";
  2956. /// <summary>
  2957. /// 系统中不存在条码()
  2958. /// </summary>
  2959. private const string MSG_CHECK_BARCODE_2 = "系统中不存在条码({0})";
  2960. /// <summary>
  2961. /// 条码()属于其他账套
  2962. /// </summary>
  2963. private const string MSG_CHECK_BARCODE_3 = "条码({0})属于其他账套";
  2964. /// <summary>
  2965. /// 条码()未被使用
  2966. /// </summary>
  2967. private const string MSG_CHECK_BARCODE_4 = "条码({0})未被使用";
  2968. /// <summary>
  2969. /// 条码()已被使用
  2970. /// </summary>
  2971. private const string MSG_CHECK_BARCODE_5 = "条码({0})已被使用";
  2972. /// <summary>
  2973. /// 条码()已被更换为()
  2974. /// </summary>
  2975. private const string MSG_CHECK_BARCODE_6 = "条码({0})已被更换为({1})";
  2976. /// <summary>
  2977. /// 校验更换条码
  2978. /// </summary>
  2979. /// <param name="user"></param>
  2980. /// <param name="barcodes"></param>
  2981. /// <returns></returns>
  2982. private static bool CheckBarcode2(IDBTransaction tran, SUserInfo user,
  2983. string barcode, string newBarcode, out string messages)
  2984. {
  2985. messages = null;
  2986. if (string.IsNullOrWhiteSpace(barcode))
  2987. {
  2988. // 无效条码
  2989. messages = string.Format(MSG_CHECK_BARCODE_1, barcode);
  2990. return false;
  2991. }
  2992. if (string.IsNullOrWhiteSpace(newBarcode))
  2993. {
  2994. // 无效条码
  2995. messages = string.Format(MSG_CHECK_BARCODE_1, newBarcode);
  2996. return false;
  2997. }
  2998. string checkBarCodeSql =
  2999. "SELECT BC.BarCode, BC.BarCodeStatus, BC.AccountID" +
  3000. " FROM TP_PM_BarCode BC" +
  3001. " WHERE BarCode = :BarCode OR BarCode = :NewBarCode";
  3002. OracleParameter[] checkBarCodeParas = new OracleParameter[]
  3003. {
  3004. new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  3005. new OracleParameter(":NewBarCode", OracleDbType.Varchar2, newBarcode, ParameterDirection.Input),
  3006. };
  3007. DataTable barcodeData = tran.GetSqlResultToDt(checkBarCodeSql, checkBarCodeParas);
  3008. if (barcodeData == null || barcodeData.Rows.Count == 0)
  3009. {
  3010. // 系统中不存在条码
  3011. messages = string.Format(MSG_CHECK_BARCODE_2, barcode);
  3012. return false;
  3013. }
  3014. DataRow[] drs = barcodeData.Select("BarCode = '" + barcode + "'");
  3015. if (drs == null || drs.Length == 0)
  3016. {
  3017. // 系统中不存在条码
  3018. messages = string.Format(MSG_CHECK_BARCODE_2, barcode);
  3019. return false;
  3020. }
  3021. if (user.AccountID.ToString() != drs[0]["AccountID"].ToString())
  3022. {
  3023. // 条码属于其他账套
  3024. messages = string.Format(MSG_CHECK_BARCODE_3, barcode);
  3025. return false;
  3026. }
  3027. if (((int)Constant.BarcodeStatus.Unused).ToString() == drs[0]["BarCodeStatus"].ToString())
  3028. {
  3029. // 条码未被使用
  3030. messages = string.Format(MSG_CHECK_BARCODE_4, barcode);
  3031. return false;
  3032. }
  3033. if (((int)Constant.BarcodeStatus.Replaced).ToString() == drs[0]["BarCodeStatus"].ToString())
  3034. {
  3035. string sql = "SELECT FinalBarCode FROM TP_PM_BarCodeRecord WHERE BarCode = :BarCode";
  3036. OracleParameter[] paras = new OracleParameter[]
  3037. {
  3038. new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  3039. };
  3040. object finalBarCode = tran.GetSqlResultToObj(sql, paras);
  3041. if (finalBarCode != null)
  3042. {
  3043. // 条码已被更换
  3044. messages = string.Format(MSG_CHECK_BARCODE_6, barcode, finalBarCode);
  3045. return false;
  3046. }
  3047. }
  3048. drs = barcodeData.Select("BarCode = '" + newBarcode + "'");
  3049. if (drs == null || drs.Length == 0)
  3050. {
  3051. return true;
  3052. }
  3053. if (user.AccountID.ToString() != drs[0]["AccountID"].ToString())
  3054. {
  3055. // 条码属于其他账套
  3056. messages = string.Format(MSG_CHECK_BARCODE_3, newBarcode);
  3057. return false;
  3058. }
  3059. if (((int)Constant.BarcodeStatus.Unused).ToString() != drs[0]["BarCodeStatus"].ToString())
  3060. {
  3061. // 条码已被使用
  3062. messages = string.Format(MSG_CHECK_BARCODE_5, newBarcode);
  3063. return false;
  3064. }
  3065. return true;
  3066. }
  3067. /// <summary>
  3068. /// 校验注浆绑定条码
  3069. /// </summary>
  3070. /// <param name="user"></param>
  3071. /// <param name="barcodes"></param>
  3072. /// <returns></returns>
  3073. private static bool CheckBarcode1(IDBTransaction tran, SUserInfo user, string barcodes,
  3074. out DataTable invalid, out DataTable effective)
  3075. {
  3076. // 无效条码
  3077. invalid = null;
  3078. // 有效条码
  3079. effective = null;
  3080. if (string.IsNullOrWhiteSpace(barcodes))
  3081. {
  3082. // 无效条码
  3083. return false;
  3084. }
  3085. string checkBarCodeSql =
  3086. "SELECT BC.BarCodeStatus, BC.AccountID" +
  3087. " FROM TP_PM_BarCode BC" +
  3088. //" WHERE BarCode = :BarCode;";
  3089. " WHERE INSTR(:BarCodes, ',' || BC.BarCode || ',') > 0";
  3090. OracleParameter[] checkBarCodeParas = new OracleParameter[]
  3091. {
  3092. new OracleParameter(":BarCodes", OracleDbType.Varchar2, checkBarCodeSql, ParameterDirection.Input),
  3093. };
  3094. DataTable barcodeData = tran.GetSqlResultToDt(checkBarCodeSql, checkBarCodeParas);
  3095. if (barcodeData == null || barcodeData.Rows.Count == 0)
  3096. {
  3097. // 通过校验
  3098. return true;
  3099. }
  3100. foreach (DataRow barcode in barcodeData.Rows)
  3101. {
  3102. if (user.AccountID.ToString() != barcode["AccountID"].ToString())
  3103. {
  3104. // 不在同一个账套
  3105. }
  3106. if (((int)Constant.BarcodeStatus.Unused).ToString() != barcode["BarCodeStatus"].ToString())
  3107. {
  3108. }
  3109. }
  3110. return true;
  3111. }
  3112. */
  3113. #endregion 条码校验
  3114. #region 条码变更
  3115. /// <summary>
  3116. /// 取得FPM0202画面(条码变更用条码查询)的查询数据
  3117. /// </summary>
  3118. /// <param name="user">登录用户信息</param>
  3119. /// <param name="se">查询条件</param>
  3120. /// <returns>查询结果</returns>
  3121. public static ServiceResultEntity GetFPM0202SData(SUserInfo user, FPM0202_SE se)
  3122. {
  3123. IDBConnection conn = null;
  3124. try
  3125. {
  3126. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3127. // 改为权限控制 modify by fubin 2020-10-12 begin
  3128. // 'S_PM_024', '未交坯可否替换条码' add by chenxy 2019-05-07 begin
  3129. //string spm024 = conn.GetSqlResultToStr("select ss.SETTINGVALUE from tp_mst_systemsetting ss where ss.SETTINGCODE = 'S_PM_024' and ss.AccountID = " + user.AccountID);
  3130. //if (spm024 != "1")
  3131. //{
  3132. // spm024 = "0";
  3133. //}
  3134. // 'S_PM_024', '未交坯可否替换条码' add by chenxy 2019-05-07 end
  3135. object isExists = conn.GetSqlResultToObj(
  3136. @"SELECT 1
  3137. FROM tp_mst_userright t
  3138. WHERE (t.functioncode = '06020201' OR t.functioncode = '[ALL]')
  3139. AND t.userid = " + user.UserID);
  3140. // 改为权限控制 modify by fubin 2020-10-12 end
  3141. List<OracleParameter> parameters = new List<OracleParameter>();
  3142. StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0202SSQL());
  3143. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3144. //parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  3145. if (se != null)
  3146. {
  3147. if (isExists == null)
  3148. {
  3149. sql.Append(" AND GDD.deliverflag = '1'");
  3150. }
  3151. // 成型线编码
  3152. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  3153. {
  3154. sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
  3155. parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  3156. }
  3157. // 成型线名称
  3158. if (!string.IsNullOrEmpty(se.GroutingLineName))
  3159. {
  3160. sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
  3161. parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  3162. }
  3163. // 成型线类别
  3164. if (se.GMouldTypeID.HasValue)
  3165. {
  3166. sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
  3167. parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
  3168. }
  3169. // 注浆日期-开始
  3170. if (se.GroutingDateBegin.HasValue)
  3171. {
  3172. sql.Append(" AND GD.GroutingDate >= :GroutingDateBegin");
  3173. parameters.Add(new OracleParameter(":GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
  3174. }
  3175. // 注浆日期-结束
  3176. if (se.GroutingDateEnd.HasValue)
  3177. {
  3178. sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
  3179. parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  3180. }
  3181. // 注浆批次
  3182. if (se.GroutingBatchNo.HasValue)
  3183. {
  3184. sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
  3185. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
  3186. }
  3187. //PDA 注浆日期-开始与结束
  3188. if (!string.IsNullOrEmpty(se.GroutingDateBeginPDA))
  3189. {
  3190. sql.Append(" AND GD.GroutingDate >= TO_DATE(:GroutingDateBeginPDA, 'yyyy-mm-dd hh24:mi:ss')");
  3191. parameters.Add(new OracleParameter(":GroutingDateBeginPDA", OracleDbType.Varchar2, se.GroutingDateBeginPDA, ParameterDirection.Input));
  3192. }
  3193. if (!string.IsNullOrEmpty(se.GroutingDateEndPDA))
  3194. {
  3195. sql.Append(" AND GD.GroutingDate <= TO_DATE(:GroutingDateEndPDA, 'yyyy-mm-dd hh24:mi:ss')");
  3196. parameters.Add(new OracleParameter(":GroutingDateEndPDA", OracleDbType.Varchar2, se.GroutingDateEndPDA, ParameterDirection.Input));
  3197. }
  3198. // 注浆模具编号
  3199. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  3200. {
  3201. sql.Append(" AND INSTR(GDD.GroutingMouldCode, :GroutingMouldCode) > 0");
  3202. parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  3203. }
  3204. // 产品编号
  3205. if (!string.IsNullOrEmpty(se.GoodsCode))
  3206. {
  3207. sql.Append(" AND INSTR(GDD.GoodsCode, :GoodsCode) > 0");
  3208. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  3209. }
  3210. // 产品名称
  3211. if (!string.IsNullOrEmpty(se.GoodsName))
  3212. {
  3213. sql.Append(" AND INSTR(GDD.GoodsName, :GoodsName) > 0");
  3214. parameters.Add(new OracleParameter(":GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
  3215. }
  3216. // 备注
  3217. if (!string.IsNullOrEmpty(se.Remarks))
  3218. {
  3219. sql.Append(" AND INSTR(GDD.Remarks, :Remarks) > 0");
  3220. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  3221. }
  3222. // 成型工号
  3223. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  3224. {
  3225. // 成型工号不要模糊查询
  3226. //sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
  3227. sql.Append(" AND GDD.UserCode = :GroutingUserCode");
  3228. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  3229. }
  3230. // 条码
  3231. if (!string.IsNullOrEmpty(se.BarCode))
  3232. {
  3233. sql.Append(" AND INSTR(GDD.BarCode, :BarCode) > 0");
  3234. parameters.Add(new OracleParameter(":BarCode", OracleDbType.NVarchar2, se.BarCode, ParameterDirection.Input));
  3235. }
  3236. // 交坯时间-开始
  3237. if (se.DeliverMudDateBegin.HasValue)
  3238. {
  3239. sql.Append(" AND GDD.DeliverTime >= :DMCreateTimeBegin");
  3240. parameters.Add(new OracleParameter(":DMCreateTimeBegin", OracleDbType.Date, se.DeliverMudDateBegin.Value, ParameterDirection.Input));
  3241. }
  3242. // 交坯时间-结束
  3243. if (se.DeliverMudDateEnd.HasValue)
  3244. {
  3245. sql.Append(" AND GDD.DeliverTime < :DMCreateTimeEnd");
  3246. parameters.Add(new OracleParameter(":DMCreateTimeEnd", OracleDbType.Date, se.DeliverMudDateEnd.Value.AddDays(1), ParameterDirection.Input));
  3247. }
  3248. //PDA 交坯时间-开始与结束
  3249. if (!string.IsNullOrEmpty(se.DeliverMudDateBeginPDA))
  3250. {
  3251. sql.Append(" AND GDD.DeliverTime >= TO_DATE(:DeliverMudDateBeginPDA, 'yyyy-mm-dd hh24:mi:ss')");
  3252. parameters.Add(new OracleParameter(":DeliverMudDateBeginPDA", OracleDbType.Varchar2, se.DeliverMudDateBeginPDA, ParameterDirection.Input));
  3253. }
  3254. if (!string.IsNullOrEmpty(se.DeliverMudDateEndPDA))
  3255. {
  3256. sql.Append(" AND GDD.DeliverTime < TO_DATE(:DeliverMudDateEndPDA, 'yyyy-mm-dd hh24:mi:ss')");
  3257. parameters.Add(new OracleParameter(":DeliverMudDateEndPDA", OracleDbType.Varchar2, se.DeliverMudDateEndPDA, ParameterDirection.Input));
  3258. }
  3259. }
  3260. sql.Append(" GROUP BY GDD.GroutingLineCode, GDD.GroutingLineName, GDD.GroutingDate, GDD.GroutingBatchNo,GDD.DeliverTime, GDD.UserCode, " +
  3261. " GDD.GoodsCode, GDD.GoodsName, GDD.GroutingMouldCode, GMS.GMouldStatusName, GDD.GroutingCount, mu.username," +
  3262. " GDD.Remarks, GMT.GMouldTypeName, GDD.BarCode, P.ProcedureName, IP.ProcedureTime, GDD.IsPublicBody,STAFF.STAFFNAME");
  3263. sql.Append(" ) ");
  3264. // 生产工号
  3265. if (se != null && !string.IsNullOrEmpty(se.WorkUserCode))
  3266. {
  3267. //sql.Append(" AND EXISTS (SELECT 1");
  3268. //sql.Append(" FROM TP_PM_PRODUCTIONDATA PPD");
  3269. //sql.Append(" WHERE PPD.AccountID = :AccountID");
  3270. //sql.Append(" AND PPD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'");
  3271. //sql.Append(" AND PPD.BarCode = GDD.BarCode");
  3272. //sql.Append(" AND INSTR(PPD.UserCode, :WorkUserCode) > 0");
  3273. //sql.Append(" )");
  3274. //sql.Append(" AND INSTR(PDW.UserCode, :WorkUserCode) > 0");
  3275. sql.Append(" WHERE INSTR(WorkUserCodes, :WorkUserCode) > 0");
  3276. parameters.Add(new OracleParameter(":WorkUserCode", OracleDbType.NVarchar2, se.WorkUserCode, ParameterDirection.Input));
  3277. }
  3278. //sql.Append(" ORDER BY GDD.GroutingDate, GDD.GroutingLineCode, GDD.GroutingMouldCode");
  3279. sql.Append(" ORDER BY GroutingDate, GroutingLineCode, GroutingBatchNo, GroutingMouldCode");
  3280. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  3281. ServiceResultEntity sre = new ServiceResultEntity();
  3282. if (data == null || data.Rows.Count == 0)
  3283. {
  3284. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3285. return sre;
  3286. }
  3287. sre.Data = new DataSet();
  3288. sre.Data.Tables.Add(data);
  3289. return sre;
  3290. }
  3291. catch (Exception ex)
  3292. {
  3293. throw ex;
  3294. }
  3295. finally
  3296. {
  3297. if (conn != null &&
  3298. conn.ConnState == ConnectionState.Open)
  3299. {
  3300. conn.Close();
  3301. }
  3302. }
  3303. }
  3304. /// <summary>
  3305. /// 获取查询sql
  3306. /// </summary>
  3307. /// <returns>sql</returns>
  3308. private static string GetFPM0202SSQL()
  3309. {
  3310. string selSql =
  3311. "SELECT GroutingLineCode, GroutingLineName, GroutingDate,GroutingBatchNo, UserCode, " +
  3312. " GoodsCode, GoodsName, GroutingMouldCode, GMouldStatusName," +
  3313. " GroutingCount, Remarks, GMouldTypeName, BarCode, ProcedureName, ProcedureTime," +
  3314. " IsPublicBody," +
  3315. " DMCreateTime,MONITORName," +
  3316. " WorkUserCodes,BarCodeRecord,STAFFNAME" +
  3317. " FROM (" +
  3318. //"SELECT GDD.GroutingDailyDetailID," +
  3319. //" GDD.GroutingDailyID," +
  3320. "SELECT " +
  3321. // 成型线编码
  3322. " GDD.GroutingLineCode," +
  3323. // 成型线名称
  3324. " GDD.GroutingLineName," +
  3325. // 注浆日期
  3326. " GDD.GroutingDate," +
  3327. // 注浆批次
  3328. " GDD.GroutingBatchNo," +
  3329. // 成型工号
  3330. " GDD.UserCode," +
  3331. // 产品编码
  3332. " GDD.GoodsCode," +
  3333. // 产品名称
  3334. " GDD.GoodsName," +
  3335. // 注浆线模具编码
  3336. " GDD.GroutingMouldCode," +
  3337. // 模具状态
  3338. " GMS.GMouldStatusName," +
  3339. // 注浆次数
  3340. " GDD.GroutingCount," +
  3341. // 备注
  3342. " GDD.Remarks," +
  3343. // 成型线类型
  3344. " GMT.GMouldTypeName," +
  3345. // 成型班长
  3346. " mu.username as MONITORName," +
  3347. // 绑定条码
  3348. " GDD.BarCode," +
  3349. // 当前工序名称
  3350. " P.ProcedureName," +
  3351. // 当前工序完成时间
  3352. " IP.ProcedureTime," +
  3353. // 公坯标识
  3354. " GDD.IsPublicBody," +
  3355. // 交坯时间
  3356. " GDD.DeliverTime AS DMCreateTime," +
  3357. //" GDD.deliverflag," +
  3358. // 生产工号
  3359. //" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(PDW.UserCode)) AS WorkUserCodes," +
  3360. //" WMSYS.WM_CONCAT(DISTINCT TO_CHAR(BCR.BarCode)) AS BarCodeRecord" +
  3361. " listagg(to_char(PDW.UserCode), ',') within GROUP(ORDER BY PDW.ProductionDataID) AS WorkUserCodes," +
  3362. " listagg(to_char(BCR.BarCode), ',') within GROUP(ORDER BY BCR.CREATETIME) AS BarCodeRecord" +
  3363. " ,STAFF.STAFFNAME" +
  3364. // 注浆日报
  3365. " FROM TP_PM_GroutingDaily GD" +
  3366. // 注浆日报明细表
  3367. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  3368. " ON GD.GroutingDailyID = GDD.GroutingDailyID" +
  3369. // 成型线类型
  3370. " INNER JOIN TP_MST_GMouldType GMT" +
  3371. " ON GD.GMouldTypeID = GMT.GMouldTypeID" +
  3372. // 模具状态
  3373. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  3374. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  3375. // 成型线
  3376. " LEFT JOIN tp_pc_groutingline gl" +
  3377. " ON gl.groutinglineid = GDD.GroutingLineID" +
  3378. // 成型班长
  3379. " LEFT JOIN tp_mst_user mu" +
  3380. " ON mu.userid = gl.MONITORID" +
  3381. // 历史条码
  3382. " LEFT JOIN TP_PM_BarCodeRecord BCR" +
  3383. " ON BCR.FinalBarCode = GDD.BarCode" +
  3384. // 当前工序
  3385. " LEFT JOIN TP_PM_InProduction IP" +
  3386. " ON IP.BarCode = GDD.BarCode" +
  3387. // 当前工序名
  3388. " LEFT JOIN TP_PC_Procedure P" +
  3389. " ON P.ProcedureID = IP.ProcedureID" +
  3390. // 生产工号
  3391. " LEFT JOIN TP_PM_ProductionData PDW" +
  3392. " ON PDW.BarCode = GDD.BarCode" +
  3393. " AND PDW.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  3394. // fenglinyong add 添加员工姓名 2022-08-31
  3395. " LEFT JOIN (" +
  3396. " SELECT" +
  3397. " D.CLASSESSETTINGID," +
  3398. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME " +
  3399. " FROM" +
  3400. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D" +
  3401. " GROUP BY" +
  3402. " D.CLASSESSETTINGID" +
  3403. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID" +
  3404. // fenglinyong add 添加员工姓名 2022-08-31
  3405. // 账套
  3406. " WHERE GD.AccountID = :AccountID" +
  3407. " AND GD.ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'" +
  3408. " AND LENGTH(GDD.BarCode) > 0";
  3409. //// 成型线操作权限
  3410. //" AND EXISTS (SELECT UP.PurviewID" +
  3411. //" FROM TP_MST_UserPurview UP" +
  3412. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  3413. //" AND (UP.PurviewID = -1 OR UP.PurviewID = GD.GroutingLineID)" +
  3414. //" AND UP.UserId = :UPUserId)";
  3415. return selSql;
  3416. }
  3417. /// <summary>
  3418. /// 更换条码
  3419. /// </summary>
  3420. /// <param name="user">登录用户信息</param>
  3421. /// <param name="barcode">原条码</param>
  3422. /// <param name="newBarcode">新条码</param>
  3423. /// <param name="remarks">备注</param>
  3424. /// <returns>操作结果</returns>
  3425. public static ServiceResultEntity SetFPM0201Data(SUserInfo user, string barcode, string newBarcode, string remarks, string groutingUserCode, string goodsCode)
  3426. {
  3427. IDBTransaction tran = null;
  3428. try
  3429. {
  3430. ServiceResultEntity sre = new ServiceResultEntity();
  3431. if (string.IsNullOrWhiteSpace(barcode) ||
  3432. string.IsNullOrWhiteSpace(newBarcode) ||
  3433. barcode == newBarcode)
  3434. {
  3435. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  3436. return sre;
  3437. }
  3438. tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3439. #region 校验条码
  3440. /*
  3441. //string message = null;
  3442. //bool check = PMModuleLogic.CheckBarcode2(tran, user, barcode, newBarcode, out message);
  3443. //if (!check)
  3444. //{
  3445. // sre.Status = Constant.ServiceResultStatus.Other;
  3446. // sre.Message = message;
  3447. // return sre;
  3448. //}
  3449. // todo 条码状态表
  3450. string checkBarcodeSql =
  3451. "SELECT UBC.BarCode FROM TP_PM_UsedBarCode UBC " +
  3452. " WHERE UBC.BarCode = :BarCode";
  3453. OracleParameter[] checkBarcodeParas = new OracleParameter[]
  3454. {
  3455. new OracleParameter(":BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
  3456. };
  3457. object objBarCode = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas);
  3458. if (objBarCode == null || objBarCode.ToString().Length == 0)
  3459. {
  3460. sre.Status = Constant.ServiceResultStatus.Other;
  3461. sre.OtherStatus = 1;
  3462. sre.Message = string.Format("原条码({0})不存在", barcode);
  3463. return sre;
  3464. }
  3465. OracleParameter[] checkBarcodeParas1 = new OracleParameter[]
  3466. {
  3467. new OracleParameter(":BarCode", OracleDbType.NVarchar2, newBarcode, ParameterDirection.Input),
  3468. };
  3469. objBarCode = tran.GetSqlResultToObj(checkBarcodeSql, checkBarcodeParas1);
  3470. if (objBarCode != null && objBarCode.ToString().Length > 0)
  3471. {
  3472. sre.Status = Constant.ServiceResultStatus.Other;
  3473. sre.OtherStatus = 2;
  3474. sre.Message = string.Format("新条码({0})已被使用", newBarcode);
  3475. return sre;
  3476. }
  3477. */
  3478. #endregion 校验条码
  3479. OracleParameter[] paras = new OracleParameter[]
  3480. {
  3481. new OracleParameter("in_BarCode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input),
  3482. new OracleParameter("in_NewBarCode", OracleDbType.NVarchar2, newBarcode, ParameterDirection.Input),
  3483. new OracleParameter("in_Remarks", OracleDbType.NVarchar2, remarks, ParameterDirection.Input),
  3484. new OracleParameter("in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input),
  3485. new OracleParameter("in_CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input),
  3486. new OracleParameter("out_Result", OracleDbType.Varchar2, 10, null, ParameterDirection.Output),
  3487. new OracleParameter("out_Barcode", OracleDbType.NVarchar2, 50, null, ParameterDirection.Output),
  3488. new OracleParameter("in_GroutingUserCode", OracleDbType.Varchar2, groutingUserCode, ParameterDirection.Input),
  3489. new OracleParameter("in_GoodsCode", OracleDbType.Varchar2, goodsCode, ParameterDirection.Input),
  3490. };
  3491. DataSet ds = tran.ExecStoredProcedure("PRO_PM_ReplacedBarCode", paras);
  3492. //-- 1.1 原条码不存在
  3493. //-- 1.2 原条码属于其他账套
  3494. //-- 1.3 原条码已被替换
  3495. //-- 1.4 产品已登窑
  3496. //-- 1.5 产品已包装
  3497. //-- 1.6 产品已成型报损
  3498. //-- 1.7 未交坯不可替换
  3499. //-- 2.1 新条码属于其他账套
  3500. //-- 2.2 新条码已被使用
  3501. //-- 2.3 新条码已被替换
  3502. //-- 3.1 条码对应成型工号不正确
  3503. //-- 3.2 替换工号没有操作成型线权限
  3504. //-- 3.3 无注浆信息
  3505. //-- 3.4 产品编码与条码不一致
  3506. //-- 3.5 产品不是在产产品
  3507. string out_Result = paras[5].Value.ToString();
  3508. if (out_Result != "0")
  3509. {
  3510. sre.Status = Constant.ServiceResultStatus.Other;
  3511. switch (out_Result)
  3512. {
  3513. case "1.1":
  3514. sre.OtherStatus = 1;
  3515. sre.Message = "原产品条码不存在";
  3516. break;
  3517. case "1.2":
  3518. sre.OtherStatus = 2;
  3519. sre.Message = "原产品条码属于其他账套";
  3520. break;
  3521. case "1.3":
  3522. sre.OtherStatus = 3;
  3523. sre.Message = "原产品条码已被替换为(" + paras[6].Value.ToString() + ")";
  3524. break;
  3525. case "1.4":
  3526. sre.OtherStatus = 7;
  3527. sre.Message = "产品已经过工序(" + paras[6].Value.ToString() + ")";
  3528. break;
  3529. case "1.5":
  3530. sre.OtherStatus = 13;
  3531. sre.Message = "产品已完成生产流程,不能替换";
  3532. break;
  3533. case "1.6":
  3534. sre.OtherStatus = 14;
  3535. sre.Message = "产品已成型报损,不能替换";
  3536. break;
  3537. case "1.7":
  3538. sre.OtherStatus = 15;
  3539. sre.Message = "产品未交坯,不能替换";
  3540. break;
  3541. case "2.1":
  3542. sre.OtherStatus = 4;
  3543. sre.Message = "新产品条码属于其他账套";
  3544. break;
  3545. case "2.2":
  3546. sre.OtherStatus = 5;
  3547. sre.Message = "新产品条码已被使用";
  3548. break;
  3549. case "2.3":
  3550. sre.OtherStatus = 6;
  3551. sre.Message = "新产品条码已被替换为(" + paras[6].Value.ToString() + ")";
  3552. break;
  3553. case "3.1":
  3554. sre.OtherStatus = 8;
  3555. sre.Message = "条码对应成型工号不正确";
  3556. break;
  3557. case "3.2":
  3558. sre.OtherStatus = 9;
  3559. sre.Message = "替换工号没有操作成型线权限";
  3560. break;
  3561. case "3.3":
  3562. sre.OtherStatus = 10;
  3563. sre.Message = "无注浆信息";
  3564. break;
  3565. case "3.4":
  3566. sre.OtherStatus = 11;
  3567. sre.Message = "产品编码与条码不一致";
  3568. break;
  3569. case "3.5":
  3570. sre.OtherStatus = 12;
  3571. sre.Message = "产品不是在产产品";
  3572. break;
  3573. default:
  3574. break;
  3575. }
  3576. }
  3577. tran.Commit();
  3578. return sre;
  3579. }
  3580. catch (Exception ex)
  3581. {
  3582. if (tran != null &&
  3583. tran.ConnState == ConnectionState.Open)
  3584. {
  3585. tran.Rollback();
  3586. }
  3587. throw ex;
  3588. }
  3589. finally
  3590. {
  3591. if (tran != null &&
  3592. tran.ConnState == ConnectionState.Open)
  3593. {
  3594. tran.Disconnect();
  3595. }
  3596. }
  3597. }
  3598. /// <summary>
  3599. /// 取得FPM0203画面(条码变更)的查询数据
  3600. /// </summary>
  3601. /// <param name="user">登录用户信息</param>
  3602. /// <param name="se">查询条件</param>
  3603. /// <returns>查询结果</returns>
  3604. public static ServiceResultEntity GetFPM0203SData(SUserInfo user, FPM0203_SE se)
  3605. {
  3606. IDBConnection conn = null;
  3607. try
  3608. {
  3609. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3610. List<OracleParameter> parameters = new List<OracleParameter>();
  3611. StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0203SSQL());
  3612. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3613. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  3614. if (se != null)
  3615. {
  3616. // 变更日期-开始
  3617. if (se.DateBegin.HasValue)
  3618. {
  3619. sql.Append(" AND BCR.CreateTime >= :DateBegin");
  3620. parameters.Add(new OracleParameter(":DateBegin", OracleDbType.Date, se.DateBegin.Value, ParameterDirection.Input));
  3621. }
  3622. // 变更日期-结束
  3623. if (se.DateEnd.HasValue)
  3624. {
  3625. sql.Append(" AND BCR.CreateTime <= :DateEnd");
  3626. parameters.Add(new OracleParameter(":DateEnd", OracleDbType.Date, se.DateEnd.Value.AddDays(1), ParameterDirection.Input));
  3627. }
  3628. // 成型线编码
  3629. if (!string.IsNullOrEmpty(se.GroutingLineCode))
  3630. {
  3631. sql.Append(" AND INSTR(GD.GroutingLineCode, :GroutingLineCode) > 0");
  3632. parameters.Add(new OracleParameter(":GroutingLineCode", OracleDbType.NVarchar2, se.GroutingLineCode, ParameterDirection.Input));
  3633. }
  3634. // 成型线名称
  3635. if (!string.IsNullOrEmpty(se.GroutingLineName))
  3636. {
  3637. sql.Append(" AND INSTR(GD.GroutingLineName, :GroutingLineName) > 0");
  3638. parameters.Add(new OracleParameter(":GroutingLineName", OracleDbType.NVarchar2, se.GroutingLineName, ParameterDirection.Input));
  3639. }
  3640. // 成型线类别
  3641. if (se.GMouldTypeID.HasValue)
  3642. {
  3643. sql.Append(" AND GD.GMouldTypeID = :GMouldTypeID");
  3644. parameters.Add(new OracleParameter(":GMouldTypeID", OracleDbType.Int32, se.GMouldTypeID.Value, ParameterDirection.Input));
  3645. }
  3646. // 注浆日期-开始
  3647. if (se.GroutingDateBegin.HasValue)
  3648. {
  3649. sql.Append(" AND GD.GroutingDate >= :GroutingDateBegin");
  3650. parameters.Add(new OracleParameter(":GroutingDateBegin", OracleDbType.Date, se.GroutingDateBegin.Value, ParameterDirection.Input));
  3651. }
  3652. // 注浆日期-结束
  3653. if (se.GroutingDateEnd.HasValue)
  3654. {
  3655. sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
  3656. parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDateEnd.Value, ParameterDirection.Input));
  3657. }
  3658. // 注浆批次
  3659. if (se.GroutingBatchNo.HasValue)
  3660. {
  3661. sql.Append(" AND GD.GroutingBatchNo = :GroutingBatchNo");
  3662. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo, ParameterDirection.Input));
  3663. }
  3664. // 注浆模具编号
  3665. if (!string.IsNullOrEmpty(se.GroutingMouldCode))
  3666. {
  3667. sql.Append(" AND INSTR(GDD.GroutingMouldCode, :GroutingMouldCode) > 0");
  3668. parameters.Add(new OracleParameter(":GroutingMouldCode", OracleDbType.NVarchar2, se.GroutingMouldCode, ParameterDirection.Input));
  3669. }
  3670. // 产品编号
  3671. if (!string.IsNullOrEmpty(se.GoodsCode))
  3672. {
  3673. sql.Append(" AND INSTR(GDD.GoodsCode, :GoodsCode) > 0");
  3674. parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, se.GoodsCode, ParameterDirection.Input));
  3675. }
  3676. // 产品名称
  3677. if (!string.IsNullOrEmpty(se.GoodsName))
  3678. {
  3679. sql.Append(" AND INSTR(GDD.GoodsName, :GoodsName) > 0");
  3680. parameters.Add(new OracleParameter(":GoodsName", OracleDbType.NVarchar2, se.GoodsName, ParameterDirection.Input));
  3681. }
  3682. // 备注
  3683. if (!string.IsNullOrEmpty(se.Remarks))
  3684. {
  3685. sql.Append(" AND INSTR(BCR.Remarks, :Remarks) > 0");
  3686. parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, se.Remarks, ParameterDirection.Input));
  3687. }
  3688. // 成型工号
  3689. if (!string.IsNullOrEmpty(se.GroutingUserCode))
  3690. {
  3691. // 成型工号不要模糊查询
  3692. sql.Append(" AND INSTR(GDD.UserCode, :GroutingUserCode) > 0");
  3693. parameters.Add(new OracleParameter(":GroutingUserCode", OracleDbType.NVarchar2, se.GroutingUserCode, ParameterDirection.Input));
  3694. }
  3695. }
  3696. sql.Append(" ORDER BY BCR.CreateTime, BCR.BarCode");
  3697. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  3698. ServiceResultEntity sre = new ServiceResultEntity();
  3699. if (data == null || data.Rows.Count == 0)
  3700. {
  3701. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3702. return sre;
  3703. }
  3704. sre.Data = new DataSet();
  3705. sre.Data.Tables.Add(data);
  3706. return sre;
  3707. }
  3708. catch (Exception ex)
  3709. {
  3710. throw ex;
  3711. }
  3712. finally
  3713. {
  3714. if (conn != null &&
  3715. conn.ConnState == ConnectionState.Open)
  3716. {
  3717. conn.Close();
  3718. }
  3719. }
  3720. }
  3721. /// <summary>
  3722. /// 取得FPM0203画面(条码变更)的查询数据
  3723. /// </summary>
  3724. /// <param name="user">登录用户信息</param>
  3725. /// <param name="barcode">条码</param>
  3726. /// <returns>查询结果</returns>
  3727. public static ServiceResultEntity GetFPM0203SData(SUserInfo user, string barcode)
  3728. {
  3729. IDBConnection conn = null;
  3730. try
  3731. {
  3732. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3733. List<OracleParameter> parameters = new List<OracleParameter>();
  3734. StringBuilder sql = new StringBuilder(PMModuleLogic.GetFPM0203SSQL());
  3735. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  3736. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  3737. //if (!string.IsNullOrWhiteSpace(barcode))
  3738. {
  3739. sql.Append(" AND BCR.BarCode = :BarCode");
  3740. parameters.Add(new OracleParameter(":BarCode", OracleDbType.Varchar2, barcode, ParameterDirection.Input));
  3741. }
  3742. sql.Append(" ORDER BY BCR.CreateTime, BCR.BarCode");
  3743. DataTable data = conn.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  3744. ServiceResultEntity sre = new ServiceResultEntity();
  3745. if (data == null || data.Rows.Count == 0)
  3746. {
  3747. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  3748. return sre;
  3749. }
  3750. sre.Data = new DataSet();
  3751. sre.Data.Tables.Add(data);
  3752. return sre;
  3753. }
  3754. catch (Exception ex)
  3755. {
  3756. throw ex;
  3757. }
  3758. finally
  3759. {
  3760. if (conn != null &&
  3761. conn.ConnState == ConnectionState.Open)
  3762. {
  3763. conn.Close();
  3764. }
  3765. }
  3766. }
  3767. /// <summary>
  3768. /// 获取查询sql
  3769. /// </summary>
  3770. /// <returns>sql</returns>
  3771. private static string GetFPM0203SSQL()
  3772. {
  3773. string selSql =
  3774. "SELECT BCR.BarCode," +
  3775. " BCR.NewBarCode," +
  3776. // 创建时间
  3777. " BCR.CreateTime," +
  3778. // 创建工号
  3779. " U.UserName AS CreateUser," +
  3780. // 备注
  3781. " BCR.Remarks," +
  3782. // 工序
  3783. " P.ProcedureCode," +
  3784. " P.ProcedureName," +
  3785. // 成型线编码
  3786. " GDD.GroutingLineCode," +
  3787. // 成型线名称
  3788. " GDD.GroutingLineName," +
  3789. // 注浆日期
  3790. " GDD.GroutingDate," +
  3791. // 注浆批次
  3792. " GDD.GroutingBatchNo," +
  3793. // 成型工号
  3794. " GDD.UserCode," +
  3795. // 产品编码
  3796. " GDD.GoodsCode," +
  3797. // 产品名称
  3798. " GDD.GoodsName," +
  3799. // 注浆线模具编码
  3800. " GDD.GroutingMouldCode," +
  3801. // 模具状态
  3802. " GMS.GMouldStatusName," +
  3803. // 注浆次数
  3804. " GDD.GroutingCount," +
  3805. // 成型班长
  3806. " mu.username as MONITORName," +
  3807. // 成型线类型
  3808. " GMT.GMouldTypeName " +
  3809. //员工姓名
  3810. " ,STAFF.STAFFNAME " +
  3811. " FROM TP_PM_BarCodeRecord BCR" +
  3812. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  3813. " ON GDD.BarCode = BCR.FinalBarCode" +
  3814. " INNER JOIN TP_PM_GroutingDaily GD" +
  3815. " ON GD.GroutingDailyID = GDD.GroutingDailyID" +
  3816. " INNER JOIN TP_MST_User U" +
  3817. " ON U.UserID = BCR.CreateUserID" +
  3818. // 成型线类型
  3819. " INNER JOIN TP_MST_GMouldType GMT" +
  3820. " ON GD.GMouldTypeID = GMT.GMouldTypeID" +
  3821. // 模具状态
  3822. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  3823. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  3824. // 成型线
  3825. " LEFT JOIN tp_pc_groutingline gl" +
  3826. " ON gl.groutinglineid = GDD.GroutingLineID" +
  3827. // 成型班长
  3828. " LEFT JOIN tp_mst_user mu" +
  3829. " ON mu.userid = gl.MONITORID" +
  3830. // 工序
  3831. " LEFT JOIN TP_PC_Procedure P" +
  3832. " ON P.ProcedureID = BCR.ProcedureID" +
  3833. // fenglinyong add 添加员工姓名 2022-08-31
  3834. " LEFT JOIN (" +
  3835. " SELECT" +
  3836. " D.CLASSESSETTINGID," +
  3837. " LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME " +
  3838. " FROM" +
  3839. " (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D" +
  3840. " GROUP BY" +
  3841. " D.CLASSESSETTINGID" +
  3842. " ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID" +
  3843. // fenglinyong add 添加员工姓名 2022-08-31
  3844. // 账套
  3845. " WHERE BCR.AccountID = :AccountID" +
  3846. " AND (BCR.CreateUserID = :CreateUserID OR " +
  3847. " EXISTS (SELECT UP.PurviewID" +
  3848. " FROM TP_MST_UserPurview UP" +
  3849. " WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateUser + "'" +
  3850. " AND (UP.PurviewID = -1 OR UP.PurviewID = BCR.CreateUserID)" +
  3851. " AND UP.UserId = :CreateUserID))";
  3852. return selSql;
  3853. }
  3854. #endregion 条码变更
  3855. #region 开模报损
  3856. /// <summary>
  3857. /// 保存开模报损信息
  3858. /// </summary>
  3859. /// <param name="user"></param>
  3860. /// <param name="groutingInfo"></param>
  3861. /// <returns></returns>
  3862. public static ServiceResultEntity SaveScrapKm(ClientRequestEntity cre, SUserInfo userInfo)
  3863. {
  3864. IDBTransaction tran = null;
  3865. string sqlString = string.Empty;
  3866. DataSet groutingInfo = cre.Data;
  3867. try
  3868. {
  3869. ServiceResultEntity sre = new ServiceResultEntity();
  3870. if (groutingInfo == null ||
  3871. groutingInfo.Tables.Count < 2 ||
  3872. groutingInfo.Tables[0].Rows.Count < 1 ||
  3873. groutingInfo.Tables[1].Rows.Count < 1)
  3874. {
  3875. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  3876. return sre;
  3877. }
  3878. tran = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  3879. int executeResult = 0;
  3880. #region 校验时间戳
  3881. // 校验时间戳
  3882. DataRow gdDataRow = groutingInfo.Tables[0].Rows[0];
  3883. sqlString =
  3884. "SELECT GroutingDailyID" +
  3885. " FROM TP_PM_GroutingDaily" +
  3886. " WHERE GroutingDailyID = :GroutingDailyID" +
  3887. " AND OPTimeStamp = :OPTimeStamp" +
  3888. " AND ValueFlag = '" + (int)Constant.ValueFlag.Effective + "'";
  3889. OracleParameter[] checkParas = new OracleParameter[]
  3890. {
  3891. new OracleParameter(":GroutingDailyID", OracleDbType.Int32, gdDataRow["GroutingDailyID"], ParameterDirection.Input),
  3892. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, gdDataRow["OPTimeStamp"], ParameterDirection.Input),
  3893. };
  3894. object checkResult = tran.GetSqlResultToObj(sqlString, checkParas);
  3895. if (checkResult == null)
  3896. {
  3897. sre.Status = Constant.ServiceResultStatus.DataChanged;
  3898. return sre;
  3899. }
  3900. #endregion 校验时间戳
  3901. #region 更新注浆日报明细表
  3902. string errorMsg = string.Empty;
  3903. foreach (DataRow detailDataRow in groutingInfo.Tables[1].Rows)
  3904. {
  3905. if (detailDataRow.RowState != DataRowState.Modified)
  3906. {
  3907. continue;
  3908. }
  3909. #region 1、判断是否符合报损条件(未注浆,交坯之后不允许报损,是否进行过了报损)
  3910. sqlString = "SELECT GroutingFlag,DeliverFlag,ScrapFlag,GroutingMouldCode\n" +
  3911. " FROM TP_PM_GroutingDailyDetail \n" +
  3912. " WHERE AccountID = :AccountID\n" +
  3913. " AND GroutingDailyDetailID = :GroutingDailyDetailID\n";
  3914. OracleParameter[] paras = new OracleParameter[] {
  3915. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  3916. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  3917. };
  3918. DataTable returnTable = tran.GetSqlResultToDt(sqlString, paras);
  3919. // 编码不存在
  3920. if (returnTable.Rows.Count == 0)
  3921. {
  3922. sre.Status = Constant.ServiceResultStatus.Other;
  3923. sre.Result = -99;
  3924. return sre;
  3925. }
  3926. // 未注浆
  3927. if ("0".Equals(returnTable.Rows[0]["GroutingFlag"]))
  3928. {
  3929. sre.Result = -100;
  3930. errorMsg += "模具:" + returnTable.Rows[0]["GroutingMouldCode"] + "未注浆";
  3931. continue;
  3932. }
  3933. // 已经交坯
  3934. if ("1".Equals(returnTable.Rows[0]["DeliverFlag"]))
  3935. {
  3936. sre.Result = -101;
  3937. errorMsg += "模具:" + returnTable.Rows[0]["GroutingMouldCode"] + "已经交坯";
  3938. continue;
  3939. }
  3940. #endregion
  3941. sqlString = "UPDATE TP_PM_GroutingDailyDetail" +
  3942. " SET ScrapFlag = :ScrapFlag, " +
  3943. " ScrapTime = case when :ScrapFlag= '1' and ScrapFlag = '0' then sysdate when :ScrapFlag= '0' then null else ScrapTime end, " +
  3944. " ScrapUser = case when :ScrapFlag= '1' and ScrapFlag = '0' then :UpdateUserID when :ScrapFlag= '0' then null else ScrapUser end, " +
  3945. " ScrapType = :ScrapType, " +
  3946. " SReasonID = :SReasonID, " +
  3947. " Remarks = :Remarks," +
  3948. " UpdateUserID = :UpdateUserID" +
  3949. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  3950. OracleParameter[] oracleParameters = new OracleParameter[]
  3951. {
  3952. new OracleParameter(":ScrapFlag", OracleDbType.Char, detailDataRow["ScrapFlag"], ParameterDirection.Input),
  3953. new OracleParameter(":ScrapType", OracleDbType.Char, "0", ParameterDirection.Input), // 开模报损
  3954. new OracleParameter(":SReasonID", OracleDbType.Int32, detailDataRow["SReasonID"], ParameterDirection.Input),
  3955. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32, detailDataRow["GroutingDailyDetailID"], ParameterDirection.Input),
  3956. new OracleParameter(":Remarks", OracleDbType.NVarchar2, detailDataRow["Remarks"], ParameterDirection.Input),
  3957. new OracleParameter(":UpdateUserID", OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  3958. };
  3959. executeResult = tran.ExecuteNonQuery(sqlString, oracleParameters);
  3960. if (executeResult <= 0)
  3961. {
  3962. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  3963. return sre;
  3964. }
  3965. }
  3966. #endregion 更新注浆日报明细表
  3967. if (!string.IsNullOrWhiteSpace(errorMsg))
  3968. {
  3969. sre.Message = errorMsg;
  3970. }
  3971. tran.Commit();
  3972. return sre;
  3973. }
  3974. catch (Exception ex)
  3975. {
  3976. if (tran != null &&
  3977. tran.ConnState == ConnectionState.Open)
  3978. {
  3979. tran.Rollback();
  3980. }
  3981. throw ex;
  3982. }
  3983. finally
  3984. {
  3985. if (tran != null &&
  3986. tran.ConnState == ConnectionState.Open)
  3987. {
  3988. tran.Disconnect();
  3989. }
  3990. }
  3991. }
  3992. #endregion
  3993. #endregion 条码管理
  3994. #region 生产数据查询
  3995. #region 生产数据查询(干补)
  3996. /// <summary>
  3997. /// 取得FPM0202画面(条码变更用条码查询)的查询数据
  3998. /// </summary>
  3999. /// <param name="user">登录用户信息</param>
  4000. /// <param name="se">查询条件</param>
  4001. /// <returns>查询结果</returns>
  4002. public static ServiceResultEntity GetProductionData8(SUserInfo user, ClientRequestEntity cre)
  4003. {
  4004. IDBConnection conn = null;
  4005. try
  4006. {
  4007. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4008. conn.Open();
  4009. //SearchProductionDataEntity searchEntity = cre.Request as SearchProductionDataEntity;
  4010. //if (searchEntity == null)
  4011. //{
  4012. // return null;
  4013. //}
  4014. string sqlString = "SELECT pd.CreateTime\n" +
  4015. " ,pd.UpdateTime\n" +
  4016. " ,pd.ProductionDataID\n" +
  4017. " ,pd.ProductionLineCode\n" +
  4018. " ,pd.BarCode\n" +
  4019. " ,pd.GoodsCode\n" +
  4020. " ,pd.GoodsName\n" +
  4021. " ,pd.UserCode\n" +
  4022. " ,pd.IsPublicBody\n" +
  4023. " ,decode(pd.ProcedureModel, '1', '计数模型', '检验模型') AS ProcedureModel\n" +
  4024. " ,pmt.ProcedureModelTypeName\n" +
  4025. //" ,decode(pd.PieceType, '1', '不计件', '同工种策略') AS PieceType\n" +
  4026. //" ,pd.IsReworked\n" +
  4027. //" ,gl.GoodsLevelName AS GoodsGrade\n" +
  4028. " ,org.OrganizationName\n" +
  4029. //" ,pd.Remarks\n" +
  4030. //" ,pd.KilnID\n" +
  4031. //" ,pd.KilnCode\n" +
  4032. //" ,pd.KilnName\n" +
  4033. //" ,pd.KilnCarID\n" +
  4034. //" ,pd.KilnCarCode\n" +
  4035. //" ,pd.KilnCarName\n" +
  4036. //" ,pd.KilnCarPosition\n" +
  4037. //" ,dd.DictionaryValue KilnCarPositionName\n" +
  4038. " ,gt.GoodsTypeName\n" +
  4039. " ,u.usercode AS barusercode\n" +
  4040. " ,pd.GroutingUserCode\n" +
  4041. " ,pd.GroutingMouldCode\n" +
  4042. " ,pd.GroutingDate\n" +
  4043. " ,pd.GroutingNum\n" +
  4044. " ,u.username AS barusername\n" +
  4045. //" ,decode(pd.Goodsleveltypeid,\n" +
  4046. //" '4',\n" +
  4047. //" '正品',\n" +
  4048. //" '5',\n" +
  4049. //" '副品',\n" +
  4050. //" '6',\n" +
  4051. //" '重烧',\n" +
  4052. //" '7',\n" +
  4053. //" '次品',\n" +
  4054. //" '') AS Goodsleveltype\n" +
  4055. " ,REPLACE((l.Logoname || '[' || l.Logocode || ']'), '[]', '') AS LogoCodeName\n" +
  4056. " ,pd.SpecialRepairFlag\n" +
  4057. " ,pcp.procedurename inprocedurename\n" +
  4058. " ,(SELECT pp.procedurename\n" +
  4059. " FROM tp_pc_procedure pp\n" +
  4060. " WHERE pp.procedureid =\n" +
  4061. " fun_rpt_getprevprocedureidall(pd.productiondataid, pd.barcode)) procedurename\n" +
  4062. " FROM TP_PM_ProductionData pd\n" +
  4063. " LEFT JOIN tp_pm_inproduction inp\n" +
  4064. " ON inp.barcode = pd.barcode\n" +
  4065. " LEFT JOIN tp_pc_procedure pcp\n" +
  4066. " ON pcp.procedureid = inp.procedureid\n" +
  4067. " LEFT JOIN TP_SYS_ProcedureModelType pmt\n" +
  4068. " ON pd.ModelType = pmt.PROCEDUREMODELTYPEID\n" +
  4069. " LEFT JOIN TP_MST_ORGANIZATION org\n" +
  4070. " ON pd.OrganizationID = org.OrganizationID\n" +
  4071. //" LEFT JOIN TP_MST_DataDictionary dd\n" +
  4072. //" ON pd.KilnCarPosition = dd.DictionaryID\n" +
  4073. //" LEFT JOIN TP_MST_GoodsLevel gl\n" +
  4074. //" ON pd.Goodslevelid = gl.Goodslevelid\n" +
  4075. " LEFT JOIN TP_MST_Goods g\n" +
  4076. " ON pd.GoodsID = g.GoodsID\n" +
  4077. " LEFT JOIN TP_MST_GoodsType gt\n" +
  4078. " ON g.GoodsTypeID = gt.GoodsTypeID\n" +
  4079. " LEFT JOIN TP_MST_USER u\n" +
  4080. " ON pd.Createuserid = u.userid\n" +
  4081. " LEFT JOIN TP_MST_Logo l\n" +
  4082. " ON pd.logoid = l.logoid\n" +
  4083. " WHERE pd.accountID = :accountID and pd.ValueFlag = '1'\n" +
  4084. " AND pd.ProcedureID = :procedureID\n" +
  4085. " AND (:barCode IS NULL OR :barCode IS NULL OR\n" +
  4086. " instr(pd.BarCode, :barCode) > 0)\n" +
  4087. " AND (:goodsCode IS NULL OR :goodsCode IS NULL OR\n" +
  4088. " instr(pd.goodsCode, :goodsCode) > 0)\n" +
  4089. " AND (:goodsName IS NULL OR :goodsName IS NULL OR\n" +
  4090. " instr(pd.goodsName, :goodsName) > 0)\n" +
  4091. " AND (:userCode IS NULL OR :userCode IS NULL OR\n" +
  4092. " instr(pd.userCode, :userCode) > 0)\n" +
  4093. " AND (:organizationID = 0 OR :organizationID IS NULL OR\n" +
  4094. " pd.organizationID = :organizationID)\n" +
  4095. " AND (pd.CreateTime >= :begindate AND pd.CreateTime < :enddate)\n" +
  4096. //" AND (:isReworked IS NULL OR :isReworked IS NULL OR\n" +
  4097. //" (instr(:isReworked, pd.isReworked) > 0))\n" +
  4098. //" AND (:pKilnCode IS NULL OR :pKilnCode IS NULL OR\n" +
  4099. //" pd.KilnCode = :pKilnCode)\n" +
  4100. //" AND (:pKilnCarCode IS NULL OR :pKilnCarCode IS NULL OR\n" +
  4101. //" instr(pd.KilnCarCode, :KilnCarCode) > 0)\n" +
  4102. //" AND (:pKilnCarPosition IS NULL OR :pKilnCarPosition IS NULL OR\n" +
  4103. //" pd.KilnCarPosition = :pKilnCarPosition)\n" +
  4104. " AND (pd.CreateUserID = :currentUserID OR EXISTS\n" +
  4105. " (SELECT 1\n" +
  4106. " FROM TP_MST_UserPurview up\n" +
  4107. " WHERE up.PurviewType = 4\n" +
  4108. " AND (up.PurviewID = -1 OR up.PurviewID = pd.CreateUserID)\n" +
  4109. " AND up.UserId = :currentUserID))\n" +
  4110. //" AND (:remarks IS NULL OR :remarks IS NULL OR\n" +
  4111. //" instr(pd.remarks, :remarks) > 0)\n" +
  4112. " AND (:goodstypecode IS NULL OR :goodstypecode IS NULL OR\n" +
  4113. " instr(gt.goodstypecode, :goodstypecode) > 0)";
  4114. //IDataParameter[] paras = new OracleParameter[]
  4115. //{
  4116. // new OracleParameter(":procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input),
  4117. // new OracleParameter(":barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  4118. // new OracleParameter(":goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  4119. // new OracleParameter(":goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  4120. // new OracleParameter(":userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  4121. // new OracleParameter(":organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  4122. // new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  4123. // new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  4124. // new OracleParameter(":begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  4125. // new OracleParameter(":enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input),
  4126. // new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  4127. // new OracleParameter(":userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4128. // new OracleParameter(":kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  4129. // new OracleParameter(":kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  4130. // new OracleParameter(":kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  4131. // new OracleParameter(":currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4132. // new OracleParameter(":goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  4133. //};
  4134. IDataParameter[] paras = new OracleParameter[]
  4135. {
  4136. new OracleParameter(":procedureID",OracleDbType.Int32, cre.Properties["ProcedureID"], ParameterDirection.Input),
  4137. new OracleParameter(":barCode", OracleDbType.Varchar2,cre.Properties["BarCode"], ParameterDirection.Input),
  4138. new OracleParameter(":goodsCode", OracleDbType.Varchar2,cre.Properties["GoodsCode"], ParameterDirection.Input),
  4139. new OracleParameter(":goodsName", OracleDbType.Varchar2,cre.Properties["GoodsName"], ParameterDirection.Input),
  4140. new OracleParameter(":userCode", OracleDbType.Varchar2,cre.Properties["UserCode"], ParameterDirection.Input),
  4141. new OracleParameter(":organizationID", OracleDbType.Int32,cre.Properties["OrganizationID"], ParameterDirection.Input),
  4142. //new OracleParameter(":remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  4143. //new OracleParameter(":isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  4144. new OracleParameter(":begindate", OracleDbType.Date,cre.Properties["BeginDate"], ParameterDirection.Input),
  4145. new OracleParameter(":enddate", OracleDbType.Date,cre.Properties["EndDate"], ParameterDirection.Input),
  4146. new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  4147. //new OracleParameter(":userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4148. //new OracleParameter(":kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  4149. //new OracleParameter(":kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  4150. //new OracleParameter(":kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  4151. new OracleParameter(":currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4152. new OracleParameter(":goodstypecode", OracleDbType.Varchar2,cre.Properties["GoodsTypeCode"], ParameterDirection.Input),
  4153. };
  4154. DataTable data = conn.GetSqlResultToDt(sqlString, paras);
  4155. ServiceResultEntity sre = new ServiceResultEntity();
  4156. sre.Data = new DataSet();
  4157. sre.Data.Tables.Add(data);
  4158. if (data == null || data.Rows.Count == 0)
  4159. {
  4160. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  4161. return sre;
  4162. }
  4163. return sre;
  4164. }
  4165. catch (Exception ex)
  4166. {
  4167. throw ex;
  4168. }
  4169. finally
  4170. {
  4171. if (conn != null &&
  4172. conn.ConnState == ConnectionState.Open)
  4173. {
  4174. conn.Close();
  4175. }
  4176. }
  4177. }
  4178. /// <summary>
  4179. /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据--交坯专用的250312
  4180. /// </summary>
  4181. /// <param name="searchEntity">生产数据实体类</param>
  4182. /// <param name="user">用户基本信息</param>
  4183. /// <returns>DataTable</returns>
  4184. public static ServiceResultEntity GetProductionDataDeliver(SearchProductionDataEntity searchEntity, SUserInfo user)
  4185. {
  4186. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4187. string procsql = "PRO_PM_GetProductionDataDeliverNew";
  4188. try
  4189. {
  4190. IDataParameter[] paras = new OracleParameter[]
  4191. {
  4192. new OracleParameter("in_procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input),
  4193. new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input),
  4194. new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input),
  4195. new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input),
  4196. new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input),
  4197. new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input),
  4198. // 暂时用备注 代替操作者250312
  4199. new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input),
  4200. // 车间 250319
  4201. new OracleParameter("in_workShop", OracleDbType.Varchar2,searchEntity.WorkShop, ParameterDirection.Input),
  4202. new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input),
  4203. new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input),
  4204. new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate.TimeOfDay==new TimeSpan(0,23,59,0)?searchEntity.EndDate.AddSeconds(59):searchEntity.EndDate, ParameterDirection.Input),
  4205. new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  4206. new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4207. new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input),
  4208. new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input),
  4209. new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input),
  4210. new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  4211. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output),
  4212. new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input),
  4213. new OracleParameter("in_groutingUserCode", OracleDbType.Varchar2,searchEntity.GroutingUserCode, ParameterDirection.Input),
  4214. };
  4215. oracleConn.Open();
  4216. ServiceResultEntity sre = new ServiceResultEntity();
  4217. sre.Data = oracleConn.ExecStoredProcedure(procsql, paras);
  4218. return sre;
  4219. }
  4220. catch (Exception ex)
  4221. {
  4222. throw ex;
  4223. }
  4224. finally
  4225. {
  4226. if (oracleConn.ConnState == ConnectionState.Open)
  4227. {
  4228. oracleConn.Close();
  4229. }
  4230. }
  4231. }
  4232. #endregion
  4233. #endregion
  4234. #region 注浆盘点
  4235. /// <summary>
  4236. /// 获取盘点单列表(searchbox用)
  4237. /// </summary>
  4238. /// <param name="sUserInfo"></param>
  4239. /// <returns></returns>
  4240. public static ServiceResultEntity GetGBCheckedList(SUserInfo sUserInfo, ClientRequestEntity cre)
  4241. {
  4242. ServiceResultEntity sre = new ServiceResultEntity();
  4243. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4244. try
  4245. {
  4246. con.Open();
  4247. string sqlString = @"select GBCheckedID inCheckedID,GBCheckedNo inCheckedNo,AccountDate,Remarks from TP_PM_GroutingChecked where accountid=:accountid and ValueFlag=1 order by GBCheckedID desc";
  4248. List<OracleParameter> parameters = new List<OracleParameter>();
  4249. parameters.Add(new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  4250. sre.Data = con.GetSqlResultToDs(sqlString, parameters.ToArray());
  4251. return sre;
  4252. }
  4253. catch (Exception ex)
  4254. {
  4255. throw ex;
  4256. }
  4257. finally
  4258. {
  4259. if (con.ConnState == ConnectionState.Open)
  4260. {
  4261. con.Close();
  4262. }
  4263. }
  4264. }
  4265. /// <summary>
  4266. /// 获取盘点单列表(一览用)
  4267. /// </summary>
  4268. /// <param name="sUserInfo"></param>
  4269. /// <returns></returns>
  4270. public static ServiceResultEntity GetAllGBCheckList(SUserInfo sUserInfo, ClientRequestEntity cre)
  4271. {
  4272. ServiceResultEntity sre = new ServiceResultEntity();
  4273. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4274. try
  4275. {
  4276. con.Open();
  4277. string sqlString = "SELECT gbc.gbcheckedid\n" +
  4278. " ,gbc.gbcheckedno\n" +
  4279. " ,gbc.gbcheckname\n" +
  4280. " ,gbc.remarks\n" +
  4281. " ,gbc.createtime\n" +
  4282. " ,u.usercode CreateUserCode\n" +
  4283. " ,u.username CreateUserName\n" +
  4284. " FROM TP_PM_GroutingChecked gbc\n" +
  4285. " LEFT JOIN tp_mst_user u\n" +
  4286. " ON u.userid = gbc.createuserid\n" +
  4287. " WHERE gbc.valueflag = '1'\n" +
  4288. " AND gbc.accountid = :accountid\n" +
  4289. " AND (:datebegin IS NULL OR gbc.createtime >= :datebegin)\n" +
  4290. " AND (:dateend IS NULL OR gbc.createtime <= :dateend)\n" +
  4291. " AND (:gbcheckedno IS NULL OR instr(gbc.gbcheckedno, :gbcheckedno) > 0)\n" +
  4292. " AND (:gbcheckname IS NULL OR instr(gbc.gbcheckname, :gbcheckname) > 0)\n" +
  4293. " AND (:remarks IS NULL OR instr(gbc.remarks, :remarks) > 0)" +
  4294. " ORDER BY gbcheckedid desc";
  4295. OracleParameter[] parameters = new OracleParameter[] {
  4296. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  4297. new OracleParameter(":datebegin", OracleDbType.Date, cre.Properties["datebegin"], ParameterDirection.Input),
  4298. new OracleParameter(":dateend", OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  4299. new OracleParameter(":gbcheckedno", OracleDbType.NVarchar2, cre.Properties["gbcheckedno"], ParameterDirection.Input),
  4300. new OracleParameter(":gbcheckname", OracleDbType.NVarchar2, cre.Properties["gbcheckname"], ParameterDirection.Input),
  4301. new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input),
  4302. };
  4303. sre.Data = con.GetSqlResultToDs(sqlString, parameters);
  4304. return sre;
  4305. }
  4306. catch (Exception ex)
  4307. {
  4308. throw ex;
  4309. }
  4310. finally
  4311. {
  4312. if (con.ConnState == ConnectionState.Open)
  4313. {
  4314. con.Close();
  4315. }
  4316. }
  4317. }
  4318. /// <summary>
  4319. /// 获取盘点单明细(一览用)
  4320. /// </summary>
  4321. /// <param name="sUserInfo"></param>
  4322. /// <returns></returns>
  4323. public static ServiceResultEntity GetAllGBCheckDetail(SUserInfo sUserInfo, ClientRequestEntity cre)
  4324. {
  4325. ServiceResultEntity sre = new ServiceResultEntity();
  4326. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4327. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4328. try
  4329. {
  4330. sre.Data = new DataSet();
  4331. con.Open();
  4332. string sqlString = "SELECT gbu.gbcheckedid, u.userid, u.usercode, u.username\n" +
  4333. " FROM Tp_Pm_Gbcheckeduser gbu\n" +
  4334. " LEFT JOIN tp_mst_user u\n" +
  4335. " ON u.userid = gbu.userid\n" +
  4336. " WHERE gbu.gbcheckedid = :gbcheckedid";
  4337. OracleParameter[] parameters = new OracleParameter[] {
  4338. new OracleParameter(":gbcheckedid", OracleDbType.Int32, checkedID, ParameterDirection.Input),
  4339. };
  4340. DataTable userTable = con.GetSqlResultToDt(sqlString, parameters);
  4341. userTable.TableName = "UserTable";
  4342. sre.Data.Tables.Add(userTable);
  4343. sqlString = "SELECT 0 sel\n" +
  4344. " ,gbcd.GBCheckedID -- 盘点单ID\n" +
  4345. " ,gbcd.BarCode -- 产品条码\n" +
  4346. " ,gbcd.GBCheckedNo -- 盘点单号\n" +
  4347. " ,gbcd.GroutingLineCode -- 成型生产线编码\n" +
  4348. " ,gbcd.GroutingLineName -- 成型生产线名称\n" +
  4349. " ,gbcd.GroutingDate -- 注浆日期\n" +
  4350. " ,gbcd.GroutingMouldCode -- 注浆模具编号\n" +
  4351. " ,gbcd.GroutingBatchNo -- 注浆批次\n" +
  4352. " ,gbcd.UserCode -- 注浆工号编码\n" +
  4353. " ,gbcd.GoodsCode -- 产品编码\n" +
  4354. " ,gbcd.GoodsName -- 产品名称\n" +
  4355. " ,gbcd.GroutingCount -- 注浆次数\n" +
  4356. " ,gbcd.ScrapFlag -- 损坯标识\n" +
  4357. " ,gbcd.ScrapTime -- 损坯时间\n" +
  4358. " ,SUser.usercode ScrapUsercode -- 损坯工号\n" +
  4359. " ,gbcd.IsPublicBody -- 公坯标识\n" +
  4360. " ,gbcd.DeliverFlag -- 交坯标识\n" +
  4361. " ,gbcd.DeliverTime -- 交坯时间\n" +
  4362. " ,gbcd.DeliverUserCode -- 交坯工号\n" +
  4363. " ,gbcd.Remarks -- 备注\n" +
  4364. " ,gbcd.GBCheckedFlag -- 盘点标识\n" +
  4365. " ,gbcd.CheckedDate -- 盘点时间\n" +
  4366. " ,CUser.usercode CheckedUserCode -- 盘点工号\n" +
  4367. " ,case when gdd.scrapflag = '1' then '成型损坯'" +
  4368. " when inp.barcode is not null then to_char(p.procedurename) " +
  4369. " when sp.barcode is not null then to_char(glt.goodsleveltypename) " +
  4370. " when fp.barcode is not null then '生产完成' else '' end procedurename -- 当前工序\n" +
  4371. " ,case when gdd.scrapflag = '1' then gdd.scraptime " +
  4372. " when inp.barcode is not null then inp.PROCEDURETIME " +
  4373. " when sp.barcode is not null then sp.auditdate " +
  4374. " when fp.barcode is not null then fp.createtime else null end PROCEDURETIME -- 当前工序时间\n" +
  4375. //" ,p.procedurename procedurename -- 当前工序\n" +
  4376. //" ,inp.PROCEDURETIME PROCEDURETIME -- 当前工序时间\n" +
  4377. " FROM tp_pm_gbcheckeddetail gbcd\n" +
  4378. // 当前注浆信息
  4379. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  4380. " ON gdd.groutingdailydetailid = gbcd.groutingdailydetailid\n" +
  4381. " LEFT JOIN tp_mst_user SUser\n" +
  4382. " ON SUser.userid = gbcd.ScrapUser\n" +
  4383. " LEFT JOIN tp_mst_user CUser\n" +
  4384. " ON CUser.userid = gbcd.CheckedUserID\n" +
  4385. // 在产工序
  4386. " LEFT JOIN tp_pm_inproduction inp \n" +
  4387. " ON inp.barcode = gdd.barcode\n" +
  4388. // 完成
  4389. " LEFT JOIN tp_pm_finishedproduct fp \n" +
  4390. " ON inp.barcode is null and fp.barcode = gdd.barcode\n" +
  4391. // 损坯
  4392. " LEFT JOIN tp_pm_scrapproduct sp \n" +
  4393. " ON inp.barcode is null and fp.barcode is null and sp.barcode = gdd.barcode\n" +
  4394. " AND sp.valueflag = '1'\n" +
  4395. " AND sp.auditstatus = 1\n" +
  4396. " AND sp.goodsleveltypeid <> 9\n" +
  4397. " AND sp.RECYCLINGFLAG = '0'\n" +
  4398. " LEFT JOIN tp_sys_goodsleveltype glt \n" +
  4399. " ON glt.goodsleveltypeid = sp.goodsleveltypeid\n" +
  4400. " LEFT JOIN tp_pc_procedure p \n" +
  4401. " ON p.procedureid = inp.procedureid\n" +
  4402. " WHERE gbcd.gbcheckedid = :gbcheckedid\n" +
  4403. " AND gbcd.gbcheckedflag = :gbcheckedflag";
  4404. OracleParameter[] paras = new OracleParameter[]{
  4405. new OracleParameter(":gbcheckedflag",OracleDbType.Int32,(int)Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  4406. new OracleParameter(":gbcheckedid",OracleDbType.Int32,checkedID,ParameterDirection.Input),
  4407. };
  4408. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
  4409. paras[0].Value = (int)Constant.InCheckedFlag.InCheckeded;
  4410. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
  4411. paras[0].Value = (int)Constant.InCheckedFlag.InCheckedWin;
  4412. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
  4413. paras[0].Value = (int)Constant.InCheckedFlag.Loss;
  4414. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, paras));
  4415. return sre;
  4416. }
  4417. catch (Exception ex)
  4418. {
  4419. throw ex;
  4420. }
  4421. finally
  4422. {
  4423. if (con.ConnState == ConnectionState.Open)
  4424. {
  4425. con.Close();
  4426. }
  4427. }
  4428. }
  4429. /// <summary>
  4430. /// 获取盘点单信息(编辑用)
  4431. /// </summary>
  4432. /// <param name="sUserInfo"></param>
  4433. /// <returns></returns>
  4434. public static ServiceResultEntity GetGBCheckedInfoForUpdate(SUserInfo sUserInfo, ClientRequestEntity cre)
  4435. {
  4436. ServiceResultEntity sre = new ServiceResultEntity();
  4437. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4438. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4439. try
  4440. {
  4441. con.Open();
  4442. string sqlString =
  4443. "SELECT gbc.gbcheckedid, gbc.gbcheckedno, gbc.gbcheckname, gbc.remarks\n" +
  4444. " FROM TP_PM_GroutingChecked gbc\n" +
  4445. " WHERE gbc.gbcheckedid = :gbcheckedid";
  4446. OracleParameter[] parameters = new OracleParameter[] {
  4447. new OracleParameter(":gbcheckedid", OracleDbType.Int32, checkedID, ParameterDirection.Input)
  4448. };
  4449. sre.Data = con.GetSqlResultToDs(sqlString, parameters);
  4450. sqlString =
  4451. "SELECT u.userid, u.usercode, u.username\n" +
  4452. " FROM Tp_Pm_Gbcheckeduser gbu\n" +
  4453. " INNER JOIN tp_mst_user u\n" +
  4454. " ON u.userid = gbu.userid\n" +
  4455. " WHERE gbu.gbcheckedid = :gbcheckedid" +
  4456. " ORDER BY u.usercode";
  4457. sre.Data.Tables.Add(con.GetSqlResultToDt(sqlString, parameters));
  4458. return sre;
  4459. }
  4460. catch (Exception ex)
  4461. {
  4462. throw ex;
  4463. }
  4464. finally
  4465. {
  4466. if (con.ConnState == ConnectionState.Open)
  4467. {
  4468. con.Close();
  4469. }
  4470. }
  4471. }
  4472. /// <summary>
  4473. /// 保存盘点单
  4474. /// </summary>
  4475. /// <param name="sUserInfo">用户基本信息</param>
  4476. /// <returns></returns>
  4477. public static ServiceResultEntity SaveGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
  4478. {
  4479. ServiceResultEntity sre = new ServiceResultEntity();
  4480. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4481. string checkedName = cre.Properties["CheckedName"].ToString();
  4482. string remarks = cre.Properties["Remarks"].ToString();
  4483. int returnRows = 0;
  4484. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4485. try
  4486. {
  4487. string sql = null;
  4488. OracleParameter[] paras = null;
  4489. if (checkedID > 0)
  4490. {
  4491. // 编辑
  4492. sql = "UPDATE TP_PM_GroutingChecked gbc\n" +
  4493. " SET gbc.gbcheckname = :gbcheckname\n" +
  4494. " ,gbc.remarks = :remarks\n" +
  4495. " ,gbc.updateuserid = :updateuserid\n" +
  4496. " WHERE gbc.gbcheckedid = :gbcheckedid";
  4497. paras = new OracleParameter[] {
  4498. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4499. checkedID,ParameterDirection.Input),
  4500. new OracleParameter(":gbcheckname",OracleDbType.NVarchar2,
  4501. checkedName,ParameterDirection.Input),
  4502. new OracleParameter(":remarks",OracleDbType.NVarchar2,
  4503. remarks,ParameterDirection.Input),
  4504. new OracleParameter(":updateuserid",OracleDbType.Int32,
  4505. sUserInfo.UserID,ParameterDirection.Input)
  4506. };
  4507. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4508. sql = "DELETE FROM Tp_Pm_Gbcheckeduser gbu\n" +
  4509. " WHERE gbu.gbcheckedid = :gbcheckedid";
  4510. paras = new OracleParameter[] {
  4511. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4512. checkedID,ParameterDirection.Input),
  4513. };
  4514. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4515. if (cre.Data != null && cre.Data.Tables.Count > 0)
  4516. {
  4517. sql = "INSERT INTO Tp_Pm_Gbcheckeduser gbu\n" +
  4518. " (gbcheckedid, userid, usercode)\n" +
  4519. "VALUES\n" +
  4520. " (:gbcheckedid, :userid, :usercode)";
  4521. foreach (DataRow item in cre.Data.Tables[0].Rows)
  4522. {
  4523. if (item["UserID"] == DBNull.Value)
  4524. {
  4525. continue;
  4526. }
  4527. paras = new OracleParameter[] {
  4528. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4529. checkedID,ParameterDirection.Input),
  4530. new OracleParameter(":userid",OracleDbType.Int32,
  4531. item["UserID"],ParameterDirection.Input),
  4532. new OracleParameter(":usercode",OracleDbType.NVarchar2,
  4533. item["UserCode"],ParameterDirection.Input),
  4534. };
  4535. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4536. }
  4537. }
  4538. }
  4539. else
  4540. {
  4541. // 新建
  4542. //盘点单号
  4543. string checkedNo = string.Format("GBC{0}", DateTime.Now.ToString("yyyyMMddHHmmss"));
  4544. //获得账务日期
  4545. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  4546. //盘点单ID
  4547. sql = "select SEQ_PM_GBChecked_ID.nextval from dual";
  4548. checkedID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  4549. //2022年2月18日10:32:49 add by feiy
  4550. //因为新建成型盘点单缓慢,设置断点后快,所以暂时在此处停顿1秒
  4551. Thread.Sleep(1000);
  4552. #region 插入盘点单主表信息
  4553. sql = @"insert into TP_PM_GroutingChecked
  4554. (
  4555. GBCheckedID,
  4556. GBCheckedNo,
  4557. AccountDate,
  4558. Remarks,
  4559. AccountID,
  4560. CreateUserID,
  4561. UpdateUserID,
  4562. GBCHECKNAME
  4563. ) values
  4564. ( :GBCheckedID,
  4565. :GBCheckedNo,
  4566. :AccountDate,
  4567. :Remarks,
  4568. :AccountID,
  4569. :CreateUserID,
  4570. :CreateUserID,
  4571. :GBCHECKNAME
  4572. )";
  4573. OracleParameter[] Paras = new OracleParameter[] {
  4574. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4575. checkedID,ParameterDirection.Input),
  4576. new OracleParameter(":GBCheckedNo",OracleDbType.NVarchar2,
  4577. checkedNo,ParameterDirection.Input),
  4578. new OracleParameter(":AccountDate",OracleDbType.Date,
  4579. accountDate,ParameterDirection.Input),
  4580. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  4581. remarks,ParameterDirection.Input),
  4582. new OracleParameter(":AccountID",OracleDbType.Int32,
  4583. sUserInfo.AccountID,ParameterDirection.Input),
  4584. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4585. sUserInfo.UserID,ParameterDirection.Input),
  4586. new OracleParameter(":GBCHECKNAME",OracleDbType.NVarchar2,
  4587. checkedName,ParameterDirection.Input),
  4588. };
  4589. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  4590. #endregion
  4591. #region 盘点工号
  4592. if (cre.Data != null && cre.Data.Tables.Count > 0)
  4593. {
  4594. sql = "INSERT INTO Tp_Pm_Gbcheckeduser gbu\n" +
  4595. " (gbcheckedid, userid, usercode)\n" +
  4596. "VALUES\n" +
  4597. " (:gbcheckedid, :userid, :usercode)";
  4598. foreach (DataRow item in cre.Data.Tables[0].Rows)
  4599. {
  4600. if (item["UserID"] == DBNull.Value)
  4601. {
  4602. continue;
  4603. }
  4604. paras = new OracleParameter[] {
  4605. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4606. checkedID,ParameterDirection.Input),
  4607. new OracleParameter(":userid",OracleDbType.Int32,
  4608. item["UserID"],ParameterDirection.Input),
  4609. new OracleParameter(":usercode",OracleDbType.NVarchar2,
  4610. item["UserCode"],ParameterDirection.Input),
  4611. };
  4612. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4613. }
  4614. }
  4615. #endregion
  4616. #region 盘点信息
  4617. string lineWhere = null;
  4618. if (cre.Properties["BUILDINGNO"] + "" != "")
  4619. {
  4620. lineWhere = " instr('," + cre.Properties["BUILDINGNO"] + ",', ',' || gl.buildingno || ',') > 0\n";
  4621. }
  4622. if (cre.Properties["FLOORNO"] + "" != "")
  4623. {
  4624. if (lineWhere != null)
  4625. {
  4626. lineWhere += " AND";
  4627. }
  4628. lineWhere += " to_number(gl.floorno) IN (" + cre.Properties["FLOORNO"] + ")\n";
  4629. }
  4630. if (lineWhere != null)
  4631. {
  4632. lineWhere = "INNER JOIN (SELECT gl.groutinglineid\n" +
  4633. " FROM tp_pc_groutingline gl\n" +
  4634. " WHERE " + lineWhere + ") gll\n" +
  4635. " ON gll.groutinglineid = gdd.groutinglineid\n";
  4636. }
  4637. sql =
  4638. "INSERT INTO TP_PM_GBCHECKEDDETAIL\n" +
  4639. " (GBCHECKEDID\n" +
  4640. " ,BARCODE\n" +
  4641. " ,GBCHECKEDNO\n" +
  4642. " ,GROUTINGDAILYDETAILID\n" +
  4643. " ,GROUTINGDAILYID\n" +
  4644. " ,GROUTINGLINEID\n" +
  4645. " ,GROUTINGLINECODE\n" +
  4646. " ,GROUTINGLINENAME\n" +
  4647. " ,GROUTINGLINEDETAILID\n" +
  4648. " ,GROUTINGDATE\n" +
  4649. " ,GROUTINGMOULDCODE\n" +
  4650. " ,MOULDCODE\n" +
  4651. " ,GMOULDTYPEID\n" +
  4652. " ,CANMANYTIMES\n" +
  4653. " ,GROUTINGBATCHNO\n" +
  4654. " ,USERID\n" +
  4655. " ,USERCODE\n" +
  4656. " ,CLASSESSETTINGID\n" +
  4657. " ,GOODSID\n" +
  4658. " ,GOODSCODE\n" +
  4659. " ,GOODSNAME\n" +
  4660. " ,GMOULDSTATUS\n" +
  4661. " ,GROUTINGCOUNT\n" +
  4662. " ,GROUTINGFLAG\n" +
  4663. " ,ONLYCODE\n" +
  4664. " ,NOGROUTINGRREASON\n" +
  4665. " ,SPECIALREPAIRFLAG\n" +
  4666. " ,SCRAPFLAG\n" +
  4667. " ,SCRAPTIME\n" +
  4668. " ,SCRAPUSER\n" +
  4669. " ,ISPUBLICBODY\n" +
  4670. " ,DELIVERFLAG\n" +
  4671. " ,DELIVERTIME\n" +
  4672. " ,DELIVERUSERID\n" +
  4673. " ,DELIVERUSERCODE\n" +
  4674. " ,LOGOID\n" +
  4675. " ,REMARKS\n" +
  4676. " ,ACCOUNTID\n" +
  4677. " ,VALUEFLAG\n" +
  4678. " ,CREATEUSERID\n" +
  4679. " ,UPDATEUSERID)\n" +
  4680. " SELECT :GBCHECKEDID\n" +
  4681. " ,gdd.BARCODE\n" +
  4682. " ,:GBCHECKEDNO\n" +
  4683. " ,gdd.GROUTINGDAILYDETAILID\n" +
  4684. " ,gdd.GROUTINGDAILYID\n" +
  4685. " ,gdd.GROUTINGLINEID\n" +
  4686. " ,gdd.GROUTINGLINECODE\n" +
  4687. " ,gdd.GROUTINGLINENAME\n" +
  4688. " ,gdd.GROUTINGLINEDETAILID\n" +
  4689. " ,gdd.GROUTINGDATE\n" +
  4690. " ,gdd.GROUTINGMOULDCODE\n" +
  4691. " ,gdd.MOULDCODE\n" +
  4692. " ,gdd.GMOULDTYPEID\n" +
  4693. " ,gdd.CANMANYTIMES\n" +
  4694. " ,gdd.GROUTINGBATCHNO\n" +
  4695. " ,gdd.USERID\n" +
  4696. " ,gdd.USERCODE\n" +
  4697. " ,gdd.CLASSESSETTINGID\n" +
  4698. " ,gdd.GOODSID\n" +
  4699. " ,gdd.GOODSCODE\n" +
  4700. " ,gdd.GOODSNAME\n" +
  4701. " ,gdd.GMOULDSTATUS\n" +
  4702. " ,gdd.GROUTINGCOUNT\n" +
  4703. " ,gdd.GROUTINGFLAG\n" +
  4704. " ,gdd.ONLYCODE\n" +
  4705. " ,gdd.NOGROUTINGRREASON\n" +
  4706. " ,gdd.SPECIALREPAIRFLAG\n" +
  4707. " ,gdd.SCRAPFLAG\n" +
  4708. " ,gdd.SCRAPTIME\n" +
  4709. " ,gdd.SCRAPUSER\n" +
  4710. " ,gdd.ISPUBLICBODY\n" +
  4711. " ,gdd.DELIVERFLAG\n" +
  4712. " ,gdd.DELIVERTIME\n" +
  4713. " ,gdd.DELIVERUSERID\n" +
  4714. " ,gdd.DELIVERUSERCODE\n" +
  4715. " ,gdd.LOGOID\n" +
  4716. " ,gdd.REMARKS\n" +
  4717. " ,gdd.ACCOUNTID\n" +
  4718. " ,'1'\n" +
  4719. " ,:CHECKEDUSERID\n" +
  4720. " ,:CHECKEDUSERID\n" +
  4721. " FROM tp_pm_groutingdailydetail gdd\n" +
  4722. " LEFT JOIN tp_mst_goods g\n" +
  4723. " ON g.goodsid = gdd.goodsid\n" +
  4724. " LEFT JOIN tp_mst_goodsType gt\n" +
  4725. " ON gt.goodstypeid = g.goodstypeid\n" + lineWhere +
  4726. "WHERE gdd.valueflag = '1'\n" +
  4727. " AND gdd.accountid = :accountid\n" +
  4728. " AND gdd.barcode IS NOT NULL\n" +
  4729. //2021-05-15 xuwei add
  4730. " AND gdd.BEGINNINGFLAG = '0' \n" +
  4731. " AND gdd.deliverflag = '0'\n" +
  4732. " AND gdd.scrapflag = '0'\n" +
  4733. " AND (:DateBegin IS NULL OR gdd.groutingdate >= :DateBegin)\n" +
  4734. " AND (:DateEnd IS NULL OR gdd.groutingdate <= :DateEnd)\n" +
  4735. " AND (:GoodsIDS IS NULL OR\n" +
  4736. " instr(',' || :GoodsIDS || ',', ',' || gdd.GoodsID || ',') > 0)\n" +
  4737. " AND (:GoodsTypeCode IS NULL OR\n" +
  4738. " instr(gt.goodstypecode, :GoodsTypeCode) = 1)" +
  4739. " AND (:UserID IS NULL OR\n" +
  4740. " instr(',' || :UserID || ',', ',' || gdd.UserID || ',') > 0)\n" +
  4741. // 将成型线改成多个 241227
  4742. // " AND (:GroutingLine IS NULL OR\n" +
  4743. // " instr(gdd.GROUTINGLINECODE, :GroutingLine) = 1)"
  4744. " AND (:GroutingLine IS NULL OR\n" +
  4745. " instr(',' || :GroutingLine || ',', ',' || gdd.GROUTINGLINEID || ',') > 0 )";
  4746. paras = new OracleParameter[] {
  4747. new OracleParameter(":accountid",OracleDbType.Int32,
  4748. sUserInfo.AccountID,ParameterDirection.Input),
  4749. new OracleParameter(":GBCHECKEDID",OracleDbType.Int32,
  4750. checkedID,ParameterDirection.Input),
  4751. new OracleParameter(":GBCHECKEDNO",OracleDbType.NVarchar2,
  4752. checkedNo,ParameterDirection.Input),
  4753. new OracleParameter(":CHECKEDUSERID",OracleDbType.Int32,
  4754. sUserInfo.UserID,ParameterDirection.Input),
  4755. new OracleParameter(":DateBegin",OracleDbType.Date,
  4756. cre.Properties["DateBegin"],ParameterDirection.Input),
  4757. new OracleParameter(":DateEnd",OracleDbType.Date,
  4758. cre.Properties["DateEnd"],ParameterDirection.Input),
  4759. new OracleParameter(":GoodsIDS",OracleDbType.NVarchar2,
  4760. cre.Properties["GoodsCodeList"],ParameterDirection.Input),
  4761. new OracleParameter(":GoodsTypeCode",OracleDbType.NVarchar2,
  4762. cre.Properties["GoodsTypeCode"],ParameterDirection.Input),
  4763. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  4764. cre.Properties["UserID"],ParameterDirection.Input),
  4765. new OracleParameter(":GroutingLine",OracleDbType.NVarchar2,
  4766. cre.Properties["GroutingLine"],ParameterDirection.Input),
  4767. };
  4768. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  4769. #endregion
  4770. }
  4771. oracleTrConn.Commit();
  4772. }
  4773. catch (Exception ex)
  4774. {
  4775. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4776. {
  4777. oracleTrConn.Rollback();
  4778. oracleTrConn.Disconnect();
  4779. }
  4780. throw ex;
  4781. }
  4782. finally
  4783. {
  4784. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4785. {
  4786. oracleTrConn.Disconnect();
  4787. }
  4788. }
  4789. return sre;
  4790. }
  4791. /// <summary>
  4792. /// 停用盘点单
  4793. /// </summary>
  4794. /// <param name="sUserInfo">用户基本信息</param>
  4795. /// <returns></returns>
  4796. public static ServiceResultEntity DisableGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
  4797. {
  4798. ServiceResultEntity sre = new ServiceResultEntity();
  4799. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4800. int returnRows = 0;
  4801. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4802. try
  4803. {
  4804. string sql = "update TP_PM_GroutingChecked set valueflag='0', updateuserid=:updateuserid where GBCheckedID=:GBCheckedID and valueflag='1'";
  4805. OracleParameter[] Paras = new OracleParameter[] {
  4806. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4807. checkedID,ParameterDirection.Input),
  4808. new OracleParameter(":updateuserid",OracleDbType.Int32,
  4809. sUserInfo.UserID,ParameterDirection.Input)
  4810. };
  4811. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  4812. if (returnRows > 0)
  4813. {
  4814. sre.Status = Constant.ServiceResultStatus.Success;
  4815. }
  4816. else
  4817. {
  4818. sre.Status = Constant.ServiceResultStatus.Other;
  4819. }
  4820. oracleTrConn.Commit();
  4821. oracleTrConn.Disconnect();
  4822. }
  4823. catch (Exception ex)
  4824. {
  4825. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4826. {
  4827. oracleTrConn.Rollback();
  4828. oracleTrConn.Disconnect();
  4829. }
  4830. throw ex;
  4831. }
  4832. finally
  4833. {
  4834. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4835. {
  4836. oracleTrConn.Disconnect();
  4837. }
  4838. }
  4839. return sre;
  4840. }
  4841. /// <summary>
  4842. /// 更新盘点单(条码盘点)
  4843. /// </summary>
  4844. /// <param name="InCheckedID">盘点单号</param>
  4845. /// <param name="BarCode">产品条码</param>
  4846. /// <param name="sUserInfo">用户基本信息</param>
  4847. /// <returns></returns>
  4848. public static ServiceResultEntity UpdateGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
  4849. {
  4850. ServiceResultEntity sre = new ServiceResultEntity();
  4851. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  4852. string barcode = cre.Properties["Barcode"].ToString();
  4853. int returnRows = 0;
  4854. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  4855. try
  4856. {
  4857. string sql = null;
  4858. OracleParameter[] paras = null;
  4859. DataSet ds = null;
  4860. sql = @"select GBCheckedFlag,CHECKEDUSERID from TP_PM_GBCheckedDetail where GBCheckedID=:GBCheckedID and BarCode=:BarCode and Valueflag=1";
  4861. paras = new OracleParameter[] {
  4862. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4863. checkedID,ParameterDirection.Input),
  4864. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  4865. barcode,ParameterDirection.Input)
  4866. };
  4867. ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  4868. // 不在盘点单中
  4869. if (ds != null && ds.Tables[0].Rows.Count == 0)
  4870. {
  4871. sql = @"select GBCheckedNo from tp_pm_groutingchecked where GBCheckedID=:GBCheckedID";
  4872. paras = new OracleParameter[] {
  4873. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  4874. checkedID,ParameterDirection.Input),
  4875. };
  4876. ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  4877. if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  4878. {
  4879. sre.Status = Constant.ServiceResultStatus.Other;
  4880. sre.OtherStatus = -1;
  4881. sre.Message = "盘点单不存在";
  4882. return sre;
  4883. }
  4884. string checkedNo = ds.Tables[0].Rows[0]["GBCheckedNo"].ToString();
  4885. // 条码是否在注浆日报中
  4886. sql = "SELECT gdd.groutingdailydetailid\n" +
  4887. " FROM tp_pm_groutingdailydetail gdd\n" +
  4888. " WHERE gdd.barcode = :BarCode";
  4889. paras = new OracleParameter[] {
  4890. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  4891. barcode,ParameterDirection.Input)
  4892. };
  4893. DataTable dt = oracleTrConn.GetSqlResultToDt(sql, paras);
  4894. if (dt == null || dt.Rows.Count == 0)
  4895. {
  4896. // 无效条码
  4897. sre.Status = Constant.ServiceResultStatus.Other;
  4898. sre.OtherStatus = -1;
  4899. sre.Message = "条码【" + barcode + "】为无效条码";
  4900. return sre;
  4901. }
  4902. sql =
  4903. "INSERT INTO TP_PM_GBCHECKEDDETAIL\n" +
  4904. " (GBCHECKEDID\n" +
  4905. " ,BARCODE\n" +
  4906. " ,GBCHECKEDNO\n" +
  4907. " ,GROUTINGDAILYDETAILID\n" +
  4908. " ,GROUTINGDAILYID\n" +
  4909. " ,GROUTINGLINEID\n" +
  4910. " ,GROUTINGLINECODE\n" +
  4911. " ,GROUTINGLINENAME\n" +
  4912. " ,GROUTINGLINEDETAILID\n" +
  4913. " ,GROUTINGDATE\n" +
  4914. " ,GROUTINGMOULDCODE\n" +
  4915. " ,MOULDCODE\n" +
  4916. " ,GMOULDTYPEID\n" +
  4917. " ,CANMANYTIMES\n" +
  4918. " ,GROUTINGBATCHNO\n" +
  4919. " ,USERID\n" +
  4920. " ,USERCODE\n" +
  4921. " ,CLASSESSETTINGID\n" +
  4922. " ,GOODSID\n" +
  4923. " ,GOODSCODE\n" +
  4924. " ,GOODSNAME\n" +
  4925. " ,GMOULDSTATUS\n" +
  4926. " ,GROUTINGCOUNT\n" +
  4927. " ,GROUTINGFLAG\n" +
  4928. " ,ONLYCODE\n" +
  4929. " ,NOGROUTINGRREASON\n" +
  4930. " ,SPECIALREPAIRFLAG\n" +
  4931. " ,SCRAPFLAG\n" +
  4932. " ,SCRAPTIME\n" +
  4933. " ,SCRAPUSER\n" +
  4934. " ,ISPUBLICBODY\n" +
  4935. " ,DELIVERFLAG\n" +
  4936. " ,DELIVERTIME\n" +
  4937. " ,DELIVERUSERID\n" +
  4938. " ,DELIVERUSERCODE\n" +
  4939. " ,LOGOID\n" +
  4940. " ,REMARKS\n" +
  4941. " ,GBCHECKEDFLAG\n" +
  4942. " ,CHECKEDDATE\n" +
  4943. " ,CHECKEDUSERID\n" +
  4944. " ,ACCOUNTID\n" +
  4945. " ,VALUEFLAG\n" +
  4946. " ,CREATEUSERID\n" +
  4947. " ,UPDATEUSERID)\n" +
  4948. " SELECT :GBCHECKEDID\n" +
  4949. " ,BARCODE\n" +
  4950. " ,:GBCHECKEDNO\n" +
  4951. " ,GROUTINGDAILYDETAILID\n" +
  4952. " ,GROUTINGDAILYID\n" +
  4953. " ,GROUTINGLINEID\n" +
  4954. " ,GROUTINGLINECODE\n" +
  4955. " ,GROUTINGLINENAME\n" +
  4956. " ,GROUTINGLINEDETAILID\n" +
  4957. " ,GROUTINGDATE\n" +
  4958. " ,GROUTINGMOULDCODE\n" +
  4959. " ,MOULDCODE\n" +
  4960. " ,GMOULDTYPEID\n" +
  4961. " ,CANMANYTIMES\n" +
  4962. " ,GROUTINGBATCHNO\n" +
  4963. " ,USERID\n" +
  4964. " ,USERCODE\n" +
  4965. " ,CLASSESSETTINGID\n" +
  4966. " ,GOODSID\n" +
  4967. " ,GOODSCODE\n" +
  4968. " ,GOODSNAME\n" +
  4969. " ,GMOULDSTATUS\n" +
  4970. " ,GROUTINGCOUNT\n" +
  4971. " ,GROUTINGFLAG\n" +
  4972. " ,ONLYCODE\n" +
  4973. " ,NOGROUTINGRREASON\n" +
  4974. " ,SPECIALREPAIRFLAG\n" +
  4975. " ,SCRAPFLAG\n" +
  4976. " ,SCRAPTIME\n" +
  4977. " ,SCRAPUSER\n" +
  4978. " ,ISPUBLICBODY\n" +
  4979. " ,DELIVERFLAG\n" +
  4980. " ,DELIVERTIME\n" +
  4981. " ,DELIVERUSERID\n" +
  4982. " ,DELIVERUSERCODE\n" +
  4983. " ,LOGOID\n" +
  4984. " ,REMARKS\n" +
  4985. " ,'2'\n" +
  4986. " ,SYSDATE\n" +
  4987. " ,:CHECKEDUSERID\n" +
  4988. " ,ACCOUNTID\n" +
  4989. " ,'1'\n" +
  4990. " ,:CHECKEDUSERID\n" +
  4991. " ,:CHECKEDUSERID\n" +
  4992. " FROM tp_pm_groutingdailydetail\n" +
  4993. " WHERE GROUTINGDAILYDETAILID = :GROUTINGDAILYDETAILID";
  4994. paras = new OracleParameter[] {
  4995. new OracleParameter(":GBCHECKEDID",OracleDbType.Int32,
  4996. checkedID,ParameterDirection.Input),
  4997. new OracleParameter(":GBCHECKEDNO",OracleDbType.NVarchar2,
  4998. checkedNo,ParameterDirection.Input),
  4999. new OracleParameter(":CHECKEDUSERID",OracleDbType.Int32,
  5000. sUserInfo.UserID,ParameterDirection.Input),
  5001. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
  5002. dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  5003. };
  5004. returnRows = oracleTrConn.ExecuteNonQuery(sql, paras);
  5005. //returnRows = 10;
  5006. }
  5007. else
  5008. {
  5009. string checkedFlag = ds.Tables[0].Rows[0]["GBCheckedFlag"].ToString();
  5010. if (checkedFlag == "1")
  5011. {
  5012. //if (Convert.ToInt32(ds.Tables[0].Rows[0]["CHECKEDUSERID"]) != sUserInfo.UserID)
  5013. //{
  5014. // returnRows = -22;//己被其他工号盘点
  5015. //}
  5016. //else
  5017. //{
  5018. // returnRows = -24;//己被自己工号盘点
  5019. //}
  5020. //return returnRows;
  5021. sre.Status = Constant.ServiceResultStatus.Other;
  5022. sre.OtherStatus = -1;
  5023. sre.Message = "条码【" + barcode + "】已被盘点";
  5024. return sre;
  5025. }
  5026. else if (checkedFlag == "2")
  5027. {
  5028. //if (Convert.ToInt32(ds.Tables[0].Rows[0]["CHECKEDUSERID"]) != sUserInfo.UserID)
  5029. //{
  5030. // returnRows = -23;//己被其他工号盘盈
  5031. //}
  5032. //else
  5033. //{
  5034. // returnRows = -25;//己被自己工号盘盈
  5035. //}
  5036. //return returnRows;
  5037. sre.Status = Constant.ServiceResultStatus.Other;
  5038. sre.OtherStatus = -1;
  5039. sre.Message = "条码【" + barcode + "】已被盘盈";
  5040. return sre;
  5041. }
  5042. sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:CheckedID and BarCode=:BarCode and GBCheckedFlag=:whereGBCheckedFlag";
  5043. paras = new OracleParameter[] {
  5044. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5045. sUserInfo.UserID,ParameterDirection.Input),
  5046. new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
  5047. (int)Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5048. new OracleParameter(":CheckedID",OracleDbType.Int32,
  5049. checkedID,ParameterDirection.Input),
  5050. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  5051. barcode,ParameterDirection.Input),
  5052. new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
  5053. (int)Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5054. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5055. sUserInfo.UserID,ParameterDirection.Input),
  5056. };
  5057. returnRows = oracleTrConn.ExecuteNonQuery(sql, paras);
  5058. //returnRows = 1;
  5059. }
  5060. if (returnRows == 0)
  5061. {
  5062. oracleTrConn.Rollback();
  5063. oracleTrConn.Disconnect();
  5064. }
  5065. else
  5066. {
  5067. oracleTrConn.Commit();
  5068. oracleTrConn.Disconnect();
  5069. }
  5070. }
  5071. catch (Exception ex)
  5072. {
  5073. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5074. {
  5075. oracleTrConn.Rollback();
  5076. oracleTrConn.Disconnect();
  5077. }
  5078. throw ex;
  5079. }
  5080. finally
  5081. {
  5082. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5083. {
  5084. oracleTrConn.Disconnect();
  5085. }
  5086. }
  5087. return sre;
  5088. }
  5089. /// <summary>
  5090. /// 报损未盘点
  5091. /// </summary>
  5092. /// <param name="sUserInfo">用户基本信息</param>
  5093. /// <returns></returns>
  5094. public static ServiceResultEntity SaveClearGBChecked(SUserInfo sUserInfo, ClientRequestEntity cre)
  5095. {
  5096. ServiceResultEntity sre = new ServiceResultEntity();
  5097. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  5098. string barcodes = null;
  5099. if (cre.Properties["Barcodes"] != null)
  5100. {
  5101. barcodes = cre.Properties["Barcodes"].ToString();
  5102. }
  5103. int returnRows = 0;
  5104. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5105. string sql = null;
  5106. OracleParameter[] paras = null;
  5107. try
  5108. {
  5109. if (barcodes == null)
  5110. {
  5111. sql =
  5112. "UPDATE tp_pm_groutingdailydetail gdd\n" +
  5113. " SET gdd.scrapflag = '1'\n" +
  5114. " ,gdd.scraptime = SYSDATE\n" +
  5115. " ,gdd.scrapuser = :UserID\n" +
  5116. " ,gdd.scrapreasonid = -2\n" +
  5117. " ,gdd.scrapreason = '盘亏报损'\n" +
  5118. " ,gdd.ScrapType = 2\n" +
  5119. " WHERE gdd.scrapflag = '0'\n" +
  5120. " AND gdd.deliverflag = '0'\n" +
  5121. //" AND instr(:barcodes, gdd.barcode) > 0";
  5122. " AND exists (select 1 from tp_pm_gbcheckeddetail gbcd where gbcd.GBCheckedID = :CheckedID and gbcd.gbcheckedflag = '0' and gbcd.barcode = gdd.barcode)";
  5123. paras = new OracleParameter[] {
  5124. new OracleParameter(":CheckedID",OracleDbType.Int32,
  5125. checkedID,ParameterDirection.Input),
  5126. new OracleParameter(":UserID",OracleDbType.Int32,
  5127. sUserInfo.UserID,ParameterDirection.Input),
  5128. };
  5129. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5130. sql = "UPDATE tp_pm_gbcheckeddetail gdd\n" +
  5131. " SET gdd.gbcheckedflag = '3'\n" +
  5132. " ,gdd.CheckedDate = SYSDATE\n" +
  5133. " ,gdd.CheckedUserID = :UserID\n" +
  5134. " ,gdd.UpdateUserID = :UserID\n" +
  5135. " WHERE gdd.gbcheckedflag = '0'\n" +
  5136. " AND gdd.GBCheckedID = :CheckedID";
  5137. paras = new OracleParameter[] {
  5138. new OracleParameter(":UserID",OracleDbType.Int32,
  5139. sUserInfo.UserID,ParameterDirection.Input),
  5140. new OracleParameter(":CheckedID",OracleDbType.Int32,
  5141. checkedID,ParameterDirection.Input),
  5142. };
  5143. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5144. }
  5145. else
  5146. {
  5147. string[] barcodelist = barcodes.Split(',');
  5148. foreach (string barcode in barcodelist)
  5149. {
  5150. sql =
  5151. "UPDATE tp_pm_groutingdailydetail gdd\n" +
  5152. " SET gdd.scrapflag = '1'\n" +
  5153. " ,gdd.scraptime = SYSDATE\n" +
  5154. " ,gdd.scrapuser = :UserID\n" +
  5155. " ,gdd.scrapreasonid = -2\n" +
  5156. " ,gdd.scrapreason = '盘亏报损'\n" +
  5157. " ,gdd.ScrapType = 2\n" +
  5158. " WHERE gdd.scrapflag = '0'\n" +
  5159. " AND gdd.deliverflag = '0'\n" +
  5160. //" AND instr(:barcodes, gdd.barcode) > 0";
  5161. " AND gdd.barcode = :barcode";
  5162. paras = new OracleParameter[] {
  5163. //new OracleParameter(":barcodes",OracleDbType.NVarchar2,
  5164. // barcodes,ParameterDirection.Input),
  5165. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  5166. barcode,ParameterDirection.Input),
  5167. new OracleParameter(":UserID",OracleDbType.Int32,
  5168. sUserInfo.UserID,ParameterDirection.Input),
  5169. };
  5170. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5171. sql = "UPDATE tp_pm_gbcheckeddetail gdd\n" +
  5172. " SET gdd.gbcheckedflag = '3'\n" +
  5173. " ,gdd.CheckedDate = SYSDATE\n" +
  5174. " ,gdd.CheckedUserID = :UserID\n" +
  5175. " ,gdd.UpdateUserID = :UserID\n" +
  5176. " WHERE gdd.gbcheckedflag = '0'\n" +
  5177. " AND gdd.GBCheckedID = :CheckedID" +
  5178. //" AND instr(:barcodes, gdd.barcode) > 0";
  5179. " AND gdd.barcode = :barcode";
  5180. paras = new OracleParameter[] {
  5181. //new OracleParameter(":barcodes",OracleDbType.NVarchar2,
  5182. // barcodes,ParameterDirection.Input),
  5183. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  5184. barcode,ParameterDirection.Input),
  5185. new OracleParameter(":UserID",OracleDbType.Int32,
  5186. sUserInfo.UserID,ParameterDirection.Input),
  5187. new OracleParameter(":CheckedID",OracleDbType.Int32,
  5188. checkedID,ParameterDirection.Input),
  5189. };
  5190. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5191. }
  5192. }
  5193. oracleTrConn.Commit();
  5194. }
  5195. catch (Exception ex)
  5196. {
  5197. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5198. {
  5199. oracleTrConn.Rollback();
  5200. oracleTrConn.Disconnect();
  5201. }
  5202. throw ex;
  5203. }
  5204. finally
  5205. {
  5206. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5207. {
  5208. oracleTrConn.Disconnect();
  5209. }
  5210. }
  5211. return sre;
  5212. }
  5213. /// <summary>
  5214. /// 获取盘点单明细
  5215. /// </summary>
  5216. /// <param name="procedureID">工序ID</param>
  5217. /// <returns>DataSet</returns>
  5218. public static DataSet GetUpdateGBCheckedInfo(int checkedID, SUserInfo sUserInfo)
  5219. {
  5220. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5221. try
  5222. {
  5223. con.Open();
  5224. string sqlString = @"SELECT to_char(checked.UserCheckedCount) || '/' ||
  5225. to_char(checked.CheckedCount) CheckedCount
  5226. ,to_char(checked.UserOverageCount) || '/' ||
  5227. to_char(checked.OverageCount) OverageCount
  5228. ,to_char(checked.UserCheckedCount + checked.UserOverageCount) || '/' ||
  5229. to_char(checked.CheckedCount + checked.OverageCount) || '/' ||
  5230. to_char(TCount) TCount
  5231. FROM (SELECT icd.GBcheckedid
  5232. , SUM(CASE
  5233. WHEN icd.checkeduserid = :userid AND icd.GBCheckedFlag = '1' THEN
  5234. 1
  5235. ELSE
  5236. 0
  5237. END) UserCheckedCount
  5238. , SUM(CASE
  5239. WHEN icd.checkeduserid = :userid AND icd.GBCheckedFlag = '2' THEN
  5240. 1
  5241. ELSE
  5242. 0
  5243. END) UserOverageCount
  5244. , SUM(CASE
  5245. WHEN icd.GBCheckedFlag = '1' THEN
  5246. 1
  5247. ELSE
  5248. 0
  5249. END) CheckedCount
  5250. , SUM(CASE
  5251. WHEN icd.GBCheckedFlag = '2' THEN
  5252. 1
  5253. ELSE
  5254. 0
  5255. END) OverageCount
  5256. ,COUNT(icd.GBcheckedid) TCount
  5257. FROM tp_pm_GBcheckeddetail icd
  5258. WHERE icd.GBcheckedid = :GBcheckedid
  5259. AND icd.valueflag = '1' group by icd.GBcheckedid) checked";
  5260. OracleParameter[] paras = new OracleParameter[]{
  5261. new OracleParameter(":GBcheckedid",OracleDbType.Int32, checkedID, ParameterDirection.Input),
  5262. new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  5263. };
  5264. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  5265. ds.Tables[0].TableName = "Table1";
  5266. sqlString = @"SELECT icd.goodscode, COUNT(icd.goodscode) goodscount
  5267. FROM tp_pm_GBcheckeddetail icd
  5268. WHERE icd.GBcheckedid = :GBcheckedid
  5269. AND icd.checkeduserid = :userid
  5270. AND icd.GBCheckedFlag = '1'
  5271. AND icd.valueflag = '1'
  5272. GROUP BY icd.goodscode";
  5273. DataTable dt = con.GetSqlResultToDt(sqlString, paras);
  5274. dt.TableName = "Table2";
  5275. ds.Tables.Add(dt);
  5276. return ds;
  5277. }
  5278. catch (Exception ex)
  5279. {
  5280. throw ex;
  5281. }
  5282. finally
  5283. {
  5284. if (con.ConnState == ConnectionState.Open)
  5285. {
  5286. con.Close();
  5287. }
  5288. }
  5289. }
  5290. /// <summary>
  5291. /// 成型盘点-盘点选择条码
  5292. /// </summary>
  5293. /// <param name="sUserInfo">用户基本信息</param>
  5294. /// <returns></returns>
  5295. public static ServiceResultEntity GBCheckBarcodes(SUserInfo sUserInfo, ClientRequestEntity cre)
  5296. {
  5297. ServiceResultEntity sre = new ServiceResultEntity();
  5298. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  5299. string barcodes = null;
  5300. if (cre.Properties["Barcodes"] != null)
  5301. {
  5302. barcodes = cre.Properties["Barcodes"].ToString();
  5303. }
  5304. int returnRows = 0;
  5305. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5306. try
  5307. {
  5308. string sql = null;
  5309. OracleParameter[] paras = null;
  5310. if (barcodes == null)
  5311. {
  5312. sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:GBCheckedID and GBCheckedFlag=:whereGBCheckedFlag";
  5313. paras = new OracleParameter[] {
  5314. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5315. sUserInfo.UserID,ParameterDirection.Input),
  5316. new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
  5317. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5318. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  5319. checkedID,ParameterDirection.Input),
  5320. new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
  5321. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5322. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5323. sUserInfo.UserID,ParameterDirection.Input),
  5324. };
  5325. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5326. }
  5327. else
  5328. {
  5329. string[] barcode = barcodes.Split(',');
  5330. foreach (string item in barcode)
  5331. {
  5332. sql = "update TP_PM_GBCheckedDetail set GBCheckedFlag=:GBCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where GBCheckedID=:GBCheckedID and BarCode=:BarCode and GBCheckedFlag=:whereGBCheckedFlag";
  5333. paras = new OracleParameter[] {
  5334. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5335. sUserInfo.UserID,ParameterDirection.Input),
  5336. new OracleParameter(":GBCheckedFlag",OracleDbType.Int32,
  5337. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5338. new OracleParameter(":GBCheckedID",OracleDbType.Int32,
  5339. checkedID,ParameterDirection.Input),
  5340. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  5341. item,ParameterDirection.Input),
  5342. new OracleParameter(":whereGBCheckedFlag",OracleDbType.Int32,
  5343. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5344. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5345. sUserInfo.UserID,ParameterDirection.Input),
  5346. };
  5347. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5348. }
  5349. }
  5350. oracleTrConn.Commit();
  5351. }
  5352. catch (Exception ex)
  5353. {
  5354. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5355. {
  5356. oracleTrConn.Rollback();
  5357. oracleTrConn.Disconnect();
  5358. }
  5359. throw ex;
  5360. }
  5361. finally
  5362. {
  5363. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5364. {
  5365. oracleTrConn.Disconnect();
  5366. }
  5367. }
  5368. return sre;
  5369. }
  5370. /// <summary>
  5371. /// 在产盘点-盘点选择条码
  5372. /// </summary>
  5373. /// <param name="sUserInfo">用户基本信息</param>
  5374. /// <returns></returns>
  5375. public static ServiceResultEntity CheckBarcodes(SUserInfo sUserInfo, ClientRequestEntity cre)
  5376. {
  5377. ServiceResultEntity sre = new ServiceResultEntity();
  5378. int checkedID = Convert.ToInt32(cre.Properties["CheckedID"]);
  5379. string barcodes = null;
  5380. if (cre.Properties["Barcodes"] != null)
  5381. {
  5382. barcodes = cre.Properties["Barcodes"].ToString();
  5383. }
  5384. int returnRows = 0;
  5385. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5386. try
  5387. {
  5388. string sql = null;
  5389. OracleParameter[] paras = null;
  5390. if (barcodes == null)
  5391. {
  5392. sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and InCheckedFlag=:whereInCheckedFlag";
  5393. paras = new OracleParameter[] {
  5394. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5395. sUserInfo.UserID,ParameterDirection.Input),
  5396. new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
  5397. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5398. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  5399. checkedID,ParameterDirection.Input),
  5400. new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
  5401. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5402. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5403. sUserInfo.UserID,ParameterDirection.Input),
  5404. };
  5405. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5406. }
  5407. else
  5408. {
  5409. string[] barcode = barcodes.Split(',');
  5410. foreach (string item in barcode)
  5411. {
  5412. sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and BarCode=:BarCode and InCheckedFlag=:whereInCheckedFlag";
  5413. paras = new OracleParameter[] {
  5414. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  5415. sUserInfo.UserID,ParameterDirection.Input),
  5416. new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
  5417. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  5418. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  5419. checkedID,ParameterDirection.Input),
  5420. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  5421. item,ParameterDirection.Input),
  5422. new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
  5423. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  5424. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  5425. sUserInfo.UserID,ParameterDirection.Input),
  5426. };
  5427. returnRows += oracleTrConn.ExecuteNonQuery(sql, paras);
  5428. }
  5429. }
  5430. oracleTrConn.Commit();
  5431. }
  5432. catch (Exception ex)
  5433. {
  5434. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5435. {
  5436. oracleTrConn.Rollback();
  5437. oracleTrConn.Disconnect();
  5438. }
  5439. throw ex;
  5440. }
  5441. finally
  5442. {
  5443. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  5444. {
  5445. oracleTrConn.Disconnect();
  5446. }
  5447. }
  5448. return sre;
  5449. }
  5450. #endregion
  5451. #region 集中采集的结束工序(包装装板)验证参数(商标、型号、数量)
  5452. /// <summary>
  5453. /// 集中采集的结束工序(包装装板)验证参数(商标、型号、数量)
  5454. /// </summary>
  5455. /// <param name="user">登录用户信息</param>
  5456. /// <param name="se">查询条件</param>
  5457. /// <returns>查询结果</returns>
  5458. public static ServiceResultEntity GetFinishedLoadingCarSetting(SUserInfo user, ClientRequestEntity cre)
  5459. {
  5460. IDBConnection conn = null;
  5461. try
  5462. {
  5463. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5464. conn.Open();
  5465. //// 列表中产品数量
  5466. //int listCount = (int)cre.Properties["ListCount"];
  5467. //// 第一产品时,获取系统参数
  5468. //if (listCount == 0)
  5469. //{
  5470. string sqlString = "SELECT sss.settingcode, sss.settingvalue\n" +
  5471. " FROM tp_mst_systemsetting sss\n" +
  5472. " WHERE sss.accountid = " + user.AccountID + "\n" +
  5473. " AND sss.settingcode IN ('S_PM_011', 'S_PM_012', 'S_PM_013')";
  5474. IDataParameter[] paras = new OracleParameter[]
  5475. {
  5476. new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  5477. };
  5478. DataTable data = conn.GetSqlResultToDt(sqlString, paras);
  5479. //foreach (DataRow item in data.Rows)
  5480. //{
  5481. // if (item["settingcode"].ToString() == "S_PM_011")
  5482. // {
  5483. // cre.Properties["S_PM_011"] = item["settingvalue"];
  5484. // }
  5485. // else if (item["settingcode"].ToString() == "S_PM_012")
  5486. // {
  5487. // cre.Properties["S_PM_012"] = item["settingvalue"];
  5488. // }
  5489. // else if (item["settingcode"].ToString() == "S_PM_013")
  5490. // {
  5491. // cre.Properties["S_PM_013"] = item["settingvalue"];
  5492. // }
  5493. //}
  5494. //xuwei modify 2021-11-23 装板数量按商标和产品取值
  5495. //===============================================================
  5496. //sqlString = "SELECT G.PLATELIMITNUM FROM TP_MST_GOODS G WHERE G.GOODSID = " + cre.Properties["GoodsID"];
  5497. if(string.IsNullOrEmpty(cre.Properties["logoID"] + ""))
  5498. {
  5499. //兼容原方法,只从产品档案取值
  5500. sqlString = "SELECT G.PLATELIMITNUM FROM TP_MST_GOODS G WHERE G.GOODSID = " + cre.Properties["GoodsID"];
  5501. }
  5502. else
  5503. {
  5504. //新方法,从产品档案和SAP配置表取值
  5505. sqlString = @"
  5506. SELECT
  5507. PLATELIMITNUM
  5508. FROM
  5509. (
  5510. SELECT
  5511. G.GOODSID,
  5512. G.LOGOID,
  5513. G.GOODSCODE,
  5514. G.MATERIALCODE,
  5515. G.PLATELIMITNUM
  5516. FROM
  5517. TP_MST_GOODS G
  5518. WHERE
  5519. GOODSID = {GOODSID}
  5520. AND LOGOID = {LOGOID}
  5521. UNION
  5522. SELECT
  5523. SAP.GOODSID,
  5524. SAP.LOGOID,
  5525. SAP.GOODSCODE,
  5526. SAP.MATERIALCODE,
  5527. SAP.PLATELIMITNUM
  5528. FROM
  5529. TP_MST_GOODSLOGOSAP SAP
  5530. WHERE
  5531. GOODSID = {GOODSID}
  5532. AND LOGOID = {LOGOID}
  5533. ORDER BY
  5534. GOODSCODE,
  5535. LOGOID,
  5536. PLATELIMITNUM DESC
  5537. )
  5538. WHERE
  5539. ROWNUM < 2
  5540. "
  5541. .Replace("{GOODSID}", cre.Properties["GoodsID"].ToString())
  5542. .Replace("{LOGOID}", cre.Properties["logoID"].ToString());
  5543. }
  5544. //==========================================================
  5545. //cre.Properties["PLATELIMITNUM"] = conn.GetSqlResultToObj(sqlString);
  5546. //}
  5547. ServiceResultEntity sre = new ServiceResultEntity();
  5548. sre.Data = new DataSet();
  5549. sre.Data.Tables.Add(data);
  5550. //sre.Result = cre.Properties["PLATELIMITNUM"];
  5551. sre.Result = conn.GetSqlResultToObj(sqlString);
  5552. return sre;
  5553. }
  5554. catch (Exception ex)
  5555. {
  5556. throw ex;
  5557. }
  5558. finally
  5559. {
  5560. if (conn != null &&
  5561. conn.ConnState == ConnectionState.Open)
  5562. {
  5563. conn.Close();
  5564. }
  5565. }
  5566. }
  5567. #endregion
  5568. #region 成型报损
  5569. /// <summary>
  5570. /// 根据页面条件获取成型报损一览
  5571. /// </summary>
  5572. /// <param name="selectProEntity">成型报损</param>
  5573. /// <param name="userInfo">用户基本信息</param>
  5574. /// <returns>DataSet</returns>
  5575. public static ServiceResultEntity GetGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
  5576. {
  5577. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5578. try
  5579. {
  5580. ServiceResultEntity result = new ServiceResultEntity();
  5581. con.Open();
  5582. string sqlString = @" SELECT
  5583. GROUPING_ID (STAFFNAME,Goodscode,车间) GID,
  5584. CASE when Groutinglinecode is null AND GROUPING_ID (STAFFNAME,Goodscode,车间)=1 THEN '小计'
  5585. WHEN Groutinglinecode is null AND GROUPING_ID (STAFFNAME,Goodscode,车间)=5 THEN '合计'
  5586. WHEN Groutinglinecode is null AND GROUPING_ID (STAFFNAME,Goodscode,车间)=6 THEN TO_CHAR(车间)
  5587. WHEN Groutinglinecode is null AND GROUPING_ID (STAFFNAME,Goodscode,车间)=7 THEN '总计'
  5588. END AS 统计方式, TO_CHAR(Groutinglinecode) GroutingLineCode,ScrapProductID,车间,
  5589. BARCODE,ResponUserCode,ResponUserName,STAFFNAME,
  5590. SUM(CASE WHEN BARCODE IS NOT NULL THEN 1 ELSE 0 END) AS NUMS,
  5591. GoodsID,Goodscode,Goodsname,GroutingDailyID,Groutingdailydetailid,
  5592. GroutingDate,GroutingLineID,Groutinglinename,GMouldTypeID,
  5593. Groutingmouldcode,Mouldcode,Groutinguserid,Groutingusercode,Groutingnum,Scraptype,
  5594. ScrapTypeName,ResponType,ScrapDate,ScrapRreasonID,ScrapReason,UName,UCode,
  5595. AuditStatusName,createuser,ResponUserID,
  5596. BackOutFlag,BackOutTime,BackOutUserID,BackOutUserCode,BackOutUserName,
  5597. Remarks,AuditStatus,AuditDate,Auditopinion,Accountdate,OPTimeStamp
  5598. FROM(
  5599. SELECT sp.BarCode
  5600. ,sp.ScrapProductID
  5601. ,sp.GoodsID
  5602. ,sp.Goodscode
  5603. ,sp.Goodsname
  5604. ,sp.GroutingDailyID
  5605. ,sp.Groutingdailydetailid
  5606. ,sp.GroutingDate
  5607. ,sp.GroutingLineID
  5608. ,sp.Groutinglinecode
  5609. ,CASE WHEN gl.HIGHPRESSUREFLAG=1 THEN '高压车间'
  5610. ELSE TO_CHAR(SUBSTR(gl.GROUTINGLINECODE, 2, 1)||'车间')END 车间
  5611. ,sp.Groutinglinename
  5612. ,sp.GMouldTypeID
  5613. ,sp.Groutingmouldcode
  5614. ,sp.Mouldcode
  5615. ,sp.Groutinguserid
  5616. ,sp.Groutingusercode
  5617. ,sp.Groutingnum
  5618. ,sp.Scraptype
  5619. ,CASE
  5620. WHEN sp.ScrapType = '0' THEN
  5621. '开模报损'
  5622. WHEN sp.ScrapType = '1' THEN
  5623. '普通报损'
  5624. WHEN sp.ScrapType = '2' THEN
  5625. '盘点报损'
  5626. ELSE
  5627. '自动报损'
  5628. END ScrapTypeName
  5629. ,sp.ResponType
  5630. ,sp.ScrapDate
  5631. ,sp.ScrapRreasonID
  5632. ,msr.ScrapReason
  5633. ,userInfo.UserName AS UName
  5634. ,userInfo.UserCode AS UCode
  5635. ,status.AuditStatusName
  5636. ,createuser.usercode AS createuser
  5637. ,responUser.UserName AS ResponUserName
  5638. ,sp.ResponUserCode
  5639. ,sp.ResponUserID
  5640. ,sp.BackOutFlag
  5641. ,sp.BackOutTime
  5642. ,sp.BackOutUserID
  5643. ,sp.BackOutUserCode
  5644. ,backOutUser.UserName AS BackOutUserName
  5645. ,sp.Remarks
  5646. ,sp.AuditStatus
  5647. ,sp.AuditDate
  5648. ,sp.Auditopinion
  5649. ,sp.Accountdate
  5650. ,sp.OPTimeStamp
  5651. ,STAFF.STAFFNAME
  5652. FROM TP_PM_GroutingScrapProduct sp
  5653. INNER JOIN TP_SYS_AuditStatus status ON sp.AuditStatus = status.AuditStatusID
  5654. LEFT JOIN TP_MST_USER userInfo ON sp.Auditor = userInfo.UserId
  5655. LEFT JOIN TP_MST_USER createuser ON sp.createuserid = createuser.UserId
  5656. LEFT JOIN TP_MST_USER responUser ON sp.ResponUserID = responUser.UserId
  5657. LEFT JOIN TP_MST_ScrapReason msr ON sp.ScrapRreasonID = msr.ScrapReasonID
  5658. LEFT JOIN TP_MST_USER backOutUser ON sp.BackOutUserID = backOutUser.UserId
  5659. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.GROUTINGDAILYDETAILID = SP.GROUTINGDAILYDETAILID
  5660. LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINECODE=gdd.GROUTINGLINECODE
  5661. LEFT JOIN (
  5662. SELECT
  5663. D.CLASSESSETTINGID,
  5664. LISTAGG ( STAFFNAME, ',' ) WITHIN GROUP ( ORDER BY D.STAFFNAME ) STAFFNAME
  5665. FROM
  5666. (SELECT CD.CLASSESSETTINGID, HR.STAFFNAME FROM TP_PC_CLASSESDETAIL CD LEFT JOIN TP_HR_STAFF HR ON CD.STAFFID = HR.STAFFID ) D
  5667. GROUP BY
  5668. D.CLASSESSETTINGID
  5669. ) STAFF ON GDD.CLASSESSETTINGID = STAFF.CLASSESSETTINGID
  5670. WHERE sp.ValueFlag = 1
  5671. AND sp.AccountID = :in_AccountID ";
  5672. List<OracleParameter> paraList = new List<OracleParameter>();
  5673. paraList.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
  5674. // 成型报损ID
  5675. if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapProductID"] + ""))
  5676. {
  5677. sqlString += " AND sp.ScrapProductID = :in_ScrapProductID";
  5678. paraList.Add(new OracleParameter(":in_ScrapProductID", OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input));
  5679. }
  5680. // 产品编码
  5681. if (!string.IsNullOrWhiteSpace(cre.Properties["GoodsCode"] + ""))
  5682. {
  5683. sqlString += " AND INSTR(sp.GoodsCode, :in_GoodsCode) > 0";
  5684. paraList.Add(new OracleParameter(":in_GoodsCode", OracleDbType.NVarchar2, cre.Properties["GoodsCode"] + "", ParameterDirection.Input));
  5685. }
  5686. // 产品名称
  5687. if (!string.IsNullOrWhiteSpace(cre.Properties["GoodsName"] + ""))
  5688. {
  5689. sqlString += " AND INSTR(sp.GoodsName, :in_GoodsName) > 0";
  5690. paraList.Add(new OracleParameter(":in_GoodsName", OracleDbType.NVarchar2, cre.Properties["GoodsName"] + "", ParameterDirection.Input));
  5691. }
  5692. // 产品条码
  5693. if (!string.IsNullOrWhiteSpace(cre.Properties["BarCode"] + ""))
  5694. {
  5695. sqlString += " AND INSTR(sp.BarCode, :in_BarCode) > 0";
  5696. paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.NVarchar2, cre.Properties["BarCode"] + "", ParameterDirection.Input));
  5697. }
  5698. // 成型工号
  5699. if (!string.IsNullOrWhiteSpace(cre.Properties["GroutingUserCode"] + ""))
  5700. {
  5701. sqlString += " AND INSTR(sp.GroutingUserCode, :in_GroutingUserCode) > 0";
  5702. paraList.Add(new OracleParameter(":in_GroutingUserCode", OracleDbType.NVarchar2, cre.Properties["GroutingUserCode"] + "", ParameterDirection.Input));
  5703. }
  5704. // 责任工号
  5705. if (!string.IsNullOrWhiteSpace(cre.Properties["ResponUserCode"] + ""))
  5706. {
  5707. sqlString += " AND INSTR(sp.ResponUserCode, :in_ResponUserCode) > 0";
  5708. paraList.Add(new OracleParameter(":in_ResponUserCode", OracleDbType.NVarchar2, cre.Properties["ResponUserCode"] + "", ParameterDirection.Input));
  5709. }
  5710. // 损坯原因
  5711. if (!string.IsNullOrWhiteSpace(cre.Properties["Rreason"] + ""))
  5712. {
  5713. sqlString += " AND INSTR(msr.ScrapReason, :in_ScrapRreason) > 0";
  5714. paraList.Add(new OracleParameter(":in_ScrapRreason", OracleDbType.NVarchar2, cre.Properties["Rreason"] + "", ParameterDirection.Input));
  5715. }
  5716. // 备注
  5717. if (!string.IsNullOrWhiteSpace(cre.Properties["Remarks"] + ""))
  5718. {
  5719. sqlString += " AND INSTR(sp.Remarks, :in_Remarks) > 0";
  5720. paraList.Add(new OracleParameter(":in_Remarks", OracleDbType.NVarchar2, cre.Properties["Remarks"] + "", ParameterDirection.Input));
  5721. }
  5722. // 审核状态
  5723. if (!string.IsNullOrWhiteSpace(cre.Properties["AuditStatus"] + ""))
  5724. {
  5725. sqlString += " AND sp.AuditStatus = :in_AuditStatus";
  5726. paraList.Add(new OracleParameter(":in_AuditStatus", OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input));
  5727. }
  5728. // 车间
  5729. if (!string.IsNullOrWhiteSpace(cre.Properties["WorkShop"] + ""))
  5730. {
  5731. sqlString += " AND substr(sp.Groutinglinecode,2,1) = :WorkShop";
  5732. paraList.Add(new OracleParameter(":WorkShop", OracleDbType.NVarchar2, cre.Properties["WorkShop"].ToString()=="高压"?"-": cre.Properties["WorkShop"], ParameterDirection.Input));
  5733. }
  5734. // 工段250306
  5735. if (!string.IsNullOrWhiteSpace(cre.Properties["GroutingLineNo"] + ""))
  5736. {
  5737. sqlString += " AND INSTR(gl.GroutingLineNo, :GroutingLineNo) > 0 ";
  5738. paraList.Add(new OracleParameter(":GroutingLineNo", OracleDbType.NVarchar2, cre.Properties["GroutingLineNo"] + "", ParameterDirection.Input));
  5739. }
  5740. // 报损开始日期
  5741. if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapDateStart"] + ""))
  5742. {
  5743. sqlString += " AND sp.AUDITDATE >= :in_ScrapDateStart";
  5744. paraList.Add(new OracleParameter(":in_ScrapDateStart", OracleDbType.Date, Convert.ToDateTime(cre.Properties["ScrapDateStart"]), ParameterDirection.Input));
  5745. }
  5746. // 报损结束日期
  5747. if (!string.IsNullOrWhiteSpace(cre.Properties["ScrapDateEnd"] + ""))
  5748. {
  5749. sqlString += " AND sp.AUDITDATE <= :in_ScrapDateEnd";
  5750. paraList.Add(new OracleParameter(":in_ScrapDateEnd", OracleDbType.Date, Convert.ToDateTime(cre.Properties["ScrapDateEnd"]), ParameterDirection.Input));
  5751. }
  5752. //注浆开始日期
  5753. if (!string.IsNullOrWhiteSpace(cre.Properties["GroutingDateStart"] + ""))
  5754. {
  5755. sqlString += " AND sp.GroutingDate >= :in_GroutingDateStart";
  5756. paraList.Add(new OracleParameter(":in_GroutingDateStart", OracleDbType.Date, Convert.ToDateTime(cre.Properties["GroutingDateStart"]), ParameterDirection.Input));
  5757. }
  5758. //注浆结束日期
  5759. if (!string.IsNullOrWhiteSpace(cre.Properties["GroutingDateEnd"] + ""))
  5760. {
  5761. sqlString += " AND sp.GroutingDate <= :in_GroutingDateEnd";
  5762. paraList.Add(new OracleParameter(":in_GroutingDateEnd", OracleDbType.Date, Convert.ToDateTime(cre.Properties["GroutingDateEnd"]), ParameterDirection.Input));
  5763. }
  5764. sqlString += @" ) GROUP BY GROUPING SETS ( (BARCODE,ScrapProductID,
  5765. GoodsID,Goodscode,Goodsname,GroutingDailyID,Groutingdailydetailid,
  5766. GroutingDate,GroutingLineID,Groutinglinecode,Groutinglinename,GMouldTypeID,
  5767. Groutingmouldcode,Mouldcode,Groutinguserid,Groutingusercode,Groutingnum,Scraptype,
  5768. ScrapTypeName,ResponType,ScrapDate,ScrapRreasonID,ScrapReason,UName,UCode,
  5769. AuditStatusName,createuser,ResponUserName,ResponUserCode,ResponUserID,
  5770. BackOutFlag,BackOutTime,BackOutUserID,BackOutUserCode,BackOutUserName,
  5771. Remarks,AuditStatus,AuditDate,Auditopinion,Accountdate,OPTimeStamp,STAFFNAME),(Goodscode,Goodsname,Groutingusercode,STAFFNAME),(GOODSCODE,GOODSNAME),(车间),() )
  5772. ORDER BY DECODE(GROUPING_ID (STAFFNAME,Goodscode,车间), 7, 1),GOODSCODE,BARCODE,STAFFNAME,车间";
  5773. DataSet dsReturn = con.GetSqlResultToDs(sqlString, paraList.ToArray());
  5774. // 是否查责任员工
  5775. if (!string.IsNullOrWhiteSpace(cre.Properties["IsSearchStaff"] + ""))
  5776. {
  5777. string detailString = "SELECT Mu.userid\n" +
  5778. " ,Staff.Staffid\n" +
  5779. " ,Staff.Staffname\n" +
  5780. " ,Staff.Organizationid\n" +
  5781. " ,Staff.Jobs\n" +
  5782. " ,Staff.Staffstatus\n" +
  5783. " ,Staff.Staffcode\n" +
  5784. " ,Jobs.Jobsname\n" +
  5785. " ,Mu.UserCode\n" +
  5786. " ,TUserJobs.Jobsname AS UJobsName\n" +
  5787. " ,TUserJobs.JobsId AS UJobsId\n" +
  5788. " , CASE\n" +
  5789. " WHEN PPG.ResponsibleID IS NULL THEN\n" +
  5790. " 0\n" +
  5791. " ELSE\n" +
  5792. " 1\n" +
  5793. " END UserSelected\n" +
  5794. " FROM TP_PM_GroutingScrapProduct PGS\n" +
  5795. " INNER JOIN TP_MST_User Mu\n" +
  5796. " ON PGS.ResponUserID = Mu.Userid\n" +
  5797. " INNER JOIN TP_MST_UserStaff Mus\n" +
  5798. " ON Mu.Userid = Mus.Userid\n" +
  5799. " INNER JOIN TP_HR_Staff Staff\n" +
  5800. " ON Mus.StaffID = Staff.Staffid\n" +
  5801. " LEFT JOIN TP_MST_Jobs Jobs\n" +
  5802. " ON Staff.Jobs = Jobs.Jobsid\n" +
  5803. " LEFT JOIN TP_MST_Jobs TUserJobs\n" +
  5804. " ON TUserJobs.Jobsid = Mus.Ujobsid\n" +
  5805. " LEFT JOIN TP_PM_GroutingScrapResponsible PPG\n" +
  5806. " ON Staff.Staffid = PPG.Staffid\n" +
  5807. " AND PPG.ScrapProductID = :in_ScrapProductID\n" +
  5808. " WHERE PGS.ScrapProductID = :in_ScrapProductID";
  5809. OracleParameter[] dparas = new OracleParameter[] {
  5810. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32,
  5811. cre.Properties["ScrapProductID"],ParameterDirection.Input),
  5812. };
  5813. DataTable returnTable = con.GetSqlResultToDt(detailString, dparas);
  5814. if (dsReturn != null)
  5815. {
  5816. dsReturn.Tables.Add(returnTable);
  5817. }
  5818. }
  5819. result.Data = dsReturn;
  5820. return result;
  5821. }
  5822. catch (Exception ex)
  5823. {
  5824. throw ex;
  5825. }
  5826. finally
  5827. {
  5828. if (con.ConnState == ConnectionState.Open)
  5829. {
  5830. con.Close();
  5831. }
  5832. }
  5833. }
  5834. /// <summary>
  5835. /// 获取成型报损信息 用于撤销使用 支持 浆日报直接报损
  5836. /// </summary>
  5837. /// <param name="cre"></param>
  5838. /// <param name="userInfo"></param>
  5839. /// <returns></returns>
  5840. public static ServiceResultEntity GetGroutingScrap(ClientRequestEntity cre, SUserInfo userInfo)
  5841. {
  5842. IDBConnection conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5843. try
  5844. {
  5845. ServiceResultEntity result = new ServiceResultEntity();
  5846. conn.Open();
  5847. //先从成型报损查询
  5848. string sqlString = @"
  5849. SELECT
  5850. S.BARCODE,
  5851. U.USERCODE,
  5852. S.GOODSCODE,
  5853. S.GROUTINGMOULDCODE,
  5854. S.GROUTINGDATE
  5855. FROM
  5856. TP_PM_GROUTINGSCRAPPRODUCT S
  5857. LEFT JOIN TP_MST_USER U ON S.AUDITOR = U.USERID
  5858. WHERE
  5859. S.VALUEFLAG = '1'
  5860. AND S.BARCODE = :in_BarCode
  5861. ";
  5862. List<OracleParameter> paraList = new List<OracleParameter>();
  5863. paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.Varchar2, cre.Properties["BarCode"], ParameterDirection.Input));
  5864. DataSet dtScrap = conn.GetSqlResultToDs(sqlString, paraList.ToArray());
  5865. //如果没有再从注浆日报损坯标记查询
  5866. if(dtScrap.Tables[0].Rows.Count==0)
  5867. {
  5868. sqlString = @"
  5869. SELECT
  5870. S.BARCODE,
  5871. S.USERCODE,
  5872. S.GOODSCODE,
  5873. S.GROUTINGMOULDCODE,
  5874. S.GROUTINGDATE
  5875. FROM
  5876. TP_PM_GROUTINGDAILYDETAIL S
  5877. WHERE
  5878. S.VALUEFLAG = '1'
  5879. AND S.SCRAPFLAG = '1'
  5880. AND S.BARCODE = :in_BarCode
  5881. ";
  5882. dtScrap = conn.GetSqlResultToDs(sqlString, paraList.ToArray());
  5883. if (dtScrap.Tables[0].Rows.Count == 0)
  5884. {
  5885. result.Message = "没查询到报损数据!";
  5886. result.Status = Constant.ServiceResultStatus.NoSearchResults;
  5887. }
  5888. else
  5889. {
  5890. result.Message = "这是注浆日报报损数据!";
  5891. result.Status = Constant.ServiceResultStatus.Success;
  5892. }
  5893. }
  5894. else
  5895. {
  5896. result.Message = "这是成型报损数据!";
  5897. result.Status = Constant.ServiceResultStatus.Success;
  5898. }
  5899. result.Data = dtScrap;
  5900. return result;
  5901. }
  5902. catch (Exception ex)
  5903. {
  5904. throw ex;
  5905. }
  5906. finally
  5907. {
  5908. if (conn.ConnState == ConnectionState.Open)
  5909. {
  5910. conn.Close();
  5911. }
  5912. }
  5913. }
  5914. /// <summary>
  5915. /// 保存成型报损数据
  5916. /// </summary>
  5917. /// <param name="cre"></param>
  5918. /// <param name="userInfo"></param>
  5919. /// <returns></returns>
  5920. public static ServiceResultEntity SaveGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
  5921. {
  5922. ServiceResultEntity result = new ServiceResultEntity();
  5923. result.Status = Constant.ServiceResultStatus.Success;
  5924. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  5925. string sqlString = string.Empty;
  5926. int returnRow = Constant.INT_IS_ZERO;
  5927. try
  5928. {
  5929. oracleTrConn.Connect();
  5930. int scrapProductID = Convert.ToInt32(cre.Properties["ScrapProductID"]);
  5931. #region 1、判断是否符合报损条件(未注浆,交坯之后不允许报损,是否进行过了报损)
  5932. sqlString = "SELECT GroutingFlag,DeliverFlag,ScrapFlag,beginningflag\n" +
  5933. " FROM TP_PM_GroutingDailyDetail \n" +
  5934. " WHERE AccountID = :AccountID\n" +
  5935. " AND BarCode = :BarCode\n";
  5936. OracleParameter[] paras = new OracleParameter[] {
  5937. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  5938. new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  5939. };
  5940. DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  5941. // 编码不存在
  5942. if (returnTable.Rows.Count == 0)
  5943. {
  5944. result.Result = -99;
  5945. result.Status = Constant.ServiceResultStatus.SystemError;
  5946. result.Message = "未查询到该产品信息,请确认该产品是否已经进行注浆";
  5947. return result;
  5948. }
  5949. // 未注浆
  5950. if ("0".Equals(returnTable.Rows[0]["GroutingFlag"]))
  5951. {
  5952. result.Result = -100;
  5953. result.Status = Constant.ServiceResultStatus.SystemError;
  5954. result.Message = "该产品还未进行注浆";
  5955. return result;
  5956. }
  5957. // 已经交坯
  5958. if ("1".Equals(returnTable.Rows[0]["DeliverFlag"]))
  5959. {
  5960. result.Result = -101;
  5961. result.Status = Constant.ServiceResultStatus.SystemError;
  5962. result.Message = "该产品已经交坯";
  5963. return result;
  5964. }
  5965. // 已经报损(新建才行进行判断)
  5966. if ("1".Equals(returnTable.Rows[0]["ScrapFlag"]) && scrapProductID == 0)
  5967. {
  5968. result.Result = -102;
  5969. result.Status = Constant.ServiceResultStatus.SystemError;
  5970. result.Message = "该产品已经报损";
  5971. return result;
  5972. }
  5973. // 该产品已进入生产工序
  5974. if ("1".Equals(returnTable.Rows[0]["beginningflag"]))
  5975. {
  5976. result.Result = -102;
  5977. result.Status = Constant.ServiceResultStatus.SystemError;
  5978. result.Message = "该产品已进入生产工序";
  5979. return result;
  5980. }
  5981. #endregion
  5982. #region 2、保存报损信息
  5983. int? auditor = null;
  5984. DateTime? auditDate = null;
  5985. if (!Constant.AuditStatus.Pending.GetHashCode().Equals(cre.Properties["AuditStatus"]))
  5986. {
  5987. auditor = userInfo.UserID;
  5988. auditDate = DateTime.Now;
  5989. }
  5990. #region 新建
  5991. if (scrapProductID == 0)
  5992. {
  5993. #region 报损总表
  5994. sqlString = "SELECT SEQ_PM_GroutingScrapProduct_ID.nextval FROM DUAL";
  5995. scrapProductID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sqlString));
  5996. sqlString = "INSERT INTO TP_PM_GroutingScrapProduct\n" +
  5997. " (ScrapProductID\n" +
  5998. " ,BarCode\n" +
  5999. " ,GoodsID\n" +
  6000. " ,GoodsCode\n" +
  6001. " ,GoodsName\n" +
  6002. " ,GroutingDailyID\n" +
  6003. " ,GroutingDailyDetailID\n" +
  6004. " ,GroutingDate\n" +
  6005. " ,GroutingLineID\n" +
  6006. " ,GroutingLineCode\n" +
  6007. " ,GroutingLineName\n" +
  6008. " ,GMouldTypeID\n" +
  6009. " ,GroutingLineDetailID\n" +
  6010. " ,GroutingMouldCode\n" +
  6011. " ,MouldCode\n" +
  6012. " ,GroutingUserID\n" +
  6013. " ,GroutingUserCode\n" +
  6014. " ,GroutingNum\n" +
  6015. " ,ScrapType\n" +
  6016. " ,ResponType\n" +
  6017. " ,ScrapDate\n" +
  6018. " ,ScrapRreasonID\n" +
  6019. " ,ResponUserID\n" +
  6020. " ,ResponUserCode\n" +
  6021. " ,Remarks\n" +
  6022. " ,AuditStatus\n" +
  6023. " ,Auditor\n" +
  6024. " ,AuditDate\n" +
  6025. " ,AccountDate\n" +
  6026. " ,AccountID\n" +
  6027. " ,CreateUserID\n" +
  6028. " ,UpdateUserID)\n" +
  6029. "VALUES\n" +
  6030. " (:ScrapProductID\n" +
  6031. " ,:BarCode\n" +
  6032. " ,:GoodsID\n" +
  6033. " ,:GoodsCode\n" +
  6034. " ,:GoodsName\n" +
  6035. " ,:GroutingDailyID\n" +
  6036. " ,:GroutingDailyDetailID\n" +
  6037. " ,:GroutingDate\n" +
  6038. " ,:GroutingLineID\n" +
  6039. " ,:GroutingLineCode\n" +
  6040. " ,:GroutingLineName\n" +
  6041. " ,:GMouldTypeID\n" +
  6042. " ,:GroutingLineDetailID\n" +
  6043. " ,:GroutingMouldCode\n" +
  6044. " ,:MouldCode\n" +
  6045. " ,:GroutingUserID\n" +
  6046. " ,:GroutingUserCode\n" +
  6047. " ,:GroutingNum\n" +
  6048. " ,:ScrapType\n" +
  6049. " ,:ResponType\n" +
  6050. " ,:ScrapDate\n" +
  6051. " ,:ScrapRreasonID\n" +
  6052. " ,:ResponUserID\n" +
  6053. " ,:ResponUserCode\n" +
  6054. " ,:Remarks\n" +
  6055. " ,:AuditStatus\n" +
  6056. " ,:Auditor\n" +
  6057. " ,:AuditDate\n" +
  6058. " ,sysdate\n" +
  6059. " ,:AccountID\n" +
  6060. " ,:CreateUserID\n" +
  6061. " ,:UpdateUserID)";
  6062. paras = new OracleParameter[] {
  6063. new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6064. new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6065. new OracleParameter(":GoodsID",OracleDbType.Int32, cre.Properties["GoodsID"], ParameterDirection.Input),
  6066. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2, cre.Properties["GoodsCode"], ParameterDirection.Input),
  6067. new OracleParameter(":GoodsName",OracleDbType.NVarchar2, cre.Properties["GoodsName"], ParameterDirection.Input),
  6068. new OracleParameter(":GroutingDailyID",OracleDbType.Int32, cre.Properties["GroutingDailyID"], ParameterDirection.Input),
  6069. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  6070. cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
  6071. new OracleParameter(":GroutingDate",OracleDbType.Date,
  6072. Convert.ToDateTime(cre.Properties["GroutingDate"]), ParameterDirection.Input),
  6073. new OracleParameter(":GroutingLineID",OracleDbType.Int32, cre.Properties["GroutingLineID"], ParameterDirection.Input),
  6074. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2, cre.Properties["GroutingLineCode"], ParameterDirection.Input),
  6075. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2, cre.Properties["GroutingLineName"], ParameterDirection.Input),
  6076. new OracleParameter(":GMouldTypeID",OracleDbType.Int32, cre.Properties["GMouldTypeID"], ParameterDirection.Input),
  6077. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32, cre.Properties["GroutingLineDetailID"], ParameterDirection.Input),
  6078. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2, cre.Properties["GroutingMouldCode"], ParameterDirection.Input),
  6079. new OracleParameter(":MouldCode",OracleDbType.NVarchar2, cre.Properties["MouldCode"], ParameterDirection.Input),
  6080. new OracleParameter(":GroutingUserID",OracleDbType.Int32, cre.Properties["GroutingUserID"], ParameterDirection.Input),
  6081. new OracleParameter(":GroutingUserCode",OracleDbType.NVarchar2, cre.Properties["GroutingUserCode"], ParameterDirection.Input),
  6082. new OracleParameter(":GroutingNum",OracleDbType.Decimal, cre.Properties["GroutingNum"], ParameterDirection.Input),
  6083. new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
  6084. new OracleParameter(":ResponType",OracleDbType.Char, Constant.ScrapResponType.Person.GetHashCode(),
  6085. ParameterDirection.Input),
  6086. new OracleParameter(":ScrapDate",OracleDbType.Date,
  6087. Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
  6088. new OracleParameter(":ScrapRreasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
  6089. new OracleParameter(":ResponUserID",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
  6090. new OracleParameter(":ResponUserCode",OracleDbType.NVarchar2, cre.Properties["ResponUserCode"], ParameterDirection.Input),
  6091. new OracleParameter(":Remarks",OracleDbType.NVarchar2, cre.Properties["Remarks"], ParameterDirection.Input),
  6092. new OracleParameter(":AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
  6093. new OracleParameter(":Auditor",OracleDbType.Int32, auditor, ParameterDirection.Input),
  6094. new OracleParameter(":AuditDate",OracleDbType.Date, auditDate, ParameterDirection.Input),
  6095. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  6096. new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6097. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6098. };
  6099. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6100. #endregion
  6101. #region 报损责任者
  6102. if (cre.Data != null && cre.Data.Tables.Count > 0
  6103. && cre.Data.Tables[0].Rows.Count > 0)
  6104. {
  6105. foreach (DataRow row in cre.Data.Tables[0].Rows)
  6106. {
  6107. sqlString = "INSERT INTO TP_PM_GroutingScrapResponsible\n" +
  6108. " (\n" +
  6109. " ScrapProductID\n" +
  6110. " ,BarCode\n" +
  6111. " ,StaffID\n" +
  6112. " ,StaffStatus\n" +
  6113. " ,UserID\n" +
  6114. " ,UserCode\n" +
  6115. " ,UJobsID\n" +
  6116. " ,SJobsID\n" +
  6117. " ,AccountID\n" +
  6118. " ,CreateUserID\n" +
  6119. " ,UpdateUserID)\n" +
  6120. "VALUES\n" +
  6121. " (\n" +
  6122. " :ScrapProductID\n" +
  6123. " ,:BarCode\n" +
  6124. " ,:StaffID\n" +
  6125. " ,:StaffStatus\n" +
  6126. " ,:UserID\n" +
  6127. " ,:UserCode\n" +
  6128. " ,:UJobsID\n" +
  6129. " ,:SJobsID\n" +
  6130. " ,:AccountID\n" +
  6131. " ,:CreateUserID\n" +
  6132. " ,:UpdateUserID)";
  6133. paras = new OracleParameter[] {
  6134. new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6135. new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6136. new OracleParameter(":StaffID",OracleDbType.Int32, row["StaffID"], ParameterDirection.Input),
  6137. new OracleParameter(":StaffStatus",OracleDbType.Int32, row["StaffStatus"], ParameterDirection.Input),
  6138. new OracleParameter(":UserID",OracleDbType.Int32, row["UserID"], ParameterDirection.Input),
  6139. new OracleParameter(":UserCode",OracleDbType.NVarchar2, row["UserCode"], ParameterDirection.Input),
  6140. new OracleParameter(":UJobsID",OracleDbType.Int32, row["UJobsId"], ParameterDirection.Input),
  6141. new OracleParameter(":SJobsID",OracleDbType.Int32, row["Jobs"], ParameterDirection.Input),
  6142. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  6143. new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6144. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6145. };
  6146. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6147. }
  6148. }
  6149. #endregion
  6150. #region 更新注浆日报明细表
  6151. sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
  6152. " SET ScrapFlag = :ScrapFlag\n" +
  6153. " ,SReasonID = :SReasonID\n" +
  6154. " ,ScrapType = :ScrapType\n" +
  6155. " ,ScrapTime = sysdate\n" +
  6156. " ,ScrapUser = :ScrapUser\n" +
  6157. " ,UpdateUserID = :UpdateUserID\n" +
  6158. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  6159. paras = new OracleParameter[] {
  6160. new OracleParameter(":ScrapFlag",OracleDbType.Char, 1, ParameterDirection.Input),
  6161. new OracleParameter(":SReasonID",OracleDbType.NVarchar2, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
  6162. new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
  6163. //new OracleParameter(":ScrapTime",OracleDbType.Date,
  6164. // Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
  6165. new OracleParameter(":ScrapUser",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
  6166. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6167. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  6168. cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
  6169. };
  6170. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6171. #endregion
  6172. }
  6173. #endregion
  6174. #region 编辑
  6175. else
  6176. {
  6177. #region 报损总表
  6178. sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
  6179. " SET ScrapType = :in_ScrapType\n" +
  6180. " ,ResponType = :in_ResponType\n" +
  6181. " ,ScrapDate = :in_ScrapDate\n" +
  6182. " ,ScrapRreasonID = :in_ScrapRreasonID\n" +
  6183. " ,ResponUserID = :in_ResponUserID\n" +
  6184. " ,ResponUserCode = :in_ResponUserCode\n" +
  6185. " ,Remarks = :in_Remarks\n" +
  6186. " ,AuditStatus = :in_AuditStatus\n" +
  6187. " ,Auditor = :in_Auditor\n" +
  6188. " ,AuditDate = :in_AuditDate\n" +
  6189. " ,UpdateUserID = :in_UpdateUserID\n" +
  6190. " WHERE ScrapProductID = :in_ScrapProductID";
  6191. paras = new OracleParameter[] {
  6192. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6193. new OracleParameter(":in_ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
  6194. new OracleParameter(":in_ResponType",OracleDbType.Char, Constant.ScrapResponType.Person.GetHashCode(),
  6195. ParameterDirection.Input),
  6196. new OracleParameter(":in_ScrapDate",OracleDbType.Date,
  6197. Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
  6198. new OracleParameter(":in_ScrapRreasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
  6199. new OracleParameter(":in_ResponUserID",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
  6200. new OracleParameter(":in_ResponUserCode",OracleDbType.NVarchar2, cre.Properties["ResponUserCode"], ParameterDirection.Input),
  6201. new OracleParameter(":in_Remarks",OracleDbType.NVarchar2, cre.Properties["Remarks"], ParameterDirection.Input),
  6202. new OracleParameter(":in_AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
  6203. new OracleParameter(":in_Auditor",OracleDbType.Int32, auditor, ParameterDirection.Input),
  6204. new OracleParameter(":in_AuditDate",OracleDbType.Date, auditDate, ParameterDirection.Input),
  6205. new OracleParameter(":in_UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6206. };
  6207. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6208. #endregion
  6209. #region 报损责任者
  6210. if (cre.Data != null && cre.Data.Tables.Count > 0
  6211. && cre.Data.Tables[0].Rows.Count > 0)
  6212. {
  6213. // 先删除 后插入
  6214. sqlString = "DELETE TP_PM_GroutingScrapResponsible\n" +
  6215. " WHERE ScrapProductID = :in_ScrapProductID";
  6216. paras = new OracleParameter[] {
  6217. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6218. };
  6219. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6220. foreach (DataRow row in cre.Data.Tables[0].Rows)
  6221. {
  6222. sqlString = "INSERT INTO TP_PM_GroutingScrapResponsible\n" +
  6223. " (\n" +
  6224. " ScrapProductID\n" +
  6225. " ,BarCode\n" +
  6226. " ,StaffID\n" +
  6227. " ,StaffStatus\n" +
  6228. " ,UserID\n" +
  6229. " ,UserCode\n" +
  6230. " ,UJobsID\n" +
  6231. " ,SJobsID\n" +
  6232. " ,AccountID\n" +
  6233. " ,CreateUserID\n" +
  6234. " ,UpdateUserID)\n" +
  6235. "VALUES\n" +
  6236. " (\n" +
  6237. " :ScrapProductID\n" +
  6238. " ,:BarCode\n" +
  6239. " ,:StaffID\n" +
  6240. " ,:StaffStatus\n" +
  6241. " ,:UserID\n" +
  6242. " ,:UserCode\n" +
  6243. " ,:UJobsID\n" +
  6244. " ,:SJobsID\n" +
  6245. " ,:AccountID\n" +
  6246. " ,:CreateUserID\n" +
  6247. " ,:UpdateUserID)";
  6248. paras = new OracleParameter[] {
  6249. new OracleParameter(":ScrapProductID",OracleDbType.Int32, scrapProductID, ParameterDirection.Input),
  6250. new OracleParameter(":Barcode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6251. new OracleParameter(":StaffID",OracleDbType.Int32, row["StaffID"], ParameterDirection.Input),
  6252. new OracleParameter(":StaffStatus",OracleDbType.Int32, row["StaffStatus"], ParameterDirection.Input),
  6253. new OracleParameter(":UserID",OracleDbType.Int32, row["UserID"], ParameterDirection.Input),
  6254. new OracleParameter(":UserCode",OracleDbType.NVarchar2, row["UserCode"], ParameterDirection.Input),
  6255. new OracleParameter(":UJobsID",OracleDbType.Int32, row["UJobsId"], ParameterDirection.Input),
  6256. new OracleParameter(":SJobsID",OracleDbType.Int32, row["Jobs"], ParameterDirection.Input),
  6257. new OracleParameter(":AccountID",OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input),
  6258. new OracleParameter(":CreateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6259. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6260. };
  6261. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6262. }
  6263. }
  6264. #endregion
  6265. #region 更新注浆日报明细表
  6266. sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
  6267. " SET SReasonID = :SReasonID\n" +
  6268. " ,ScrapType = :ScrapType\n" +
  6269. " ,ScrapTime = sysdate\n" +
  6270. " ,ScrapUser = :ScrapUser\n" +
  6271. " ,UpdateUserID = :UpdateUserID\n" +
  6272. " WHERE GroutingDailyDetailID = :GroutingDailyDetailID";
  6273. paras = new OracleParameter[] {
  6274. new OracleParameter(":SReasonID",OracleDbType.Int32, cre.Properties["ScrapRreasonID"], ParameterDirection.Input),
  6275. new OracleParameter(":ScrapType",OracleDbType.Char, cre.Properties["ScrapType"], ParameterDirection.Input),
  6276. //new OracleParameter(":ScrapTime",OracleDbType.Date,
  6277. // Convert.ToDateTime(cre.Properties["ScrapDate"]), ParameterDirection.Input),
  6278. new OracleParameter(":ScrapUser",OracleDbType.Int32, cre.Properties["ResponUserID"], ParameterDirection.Input),
  6279. new OracleParameter(":UpdateUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6280. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  6281. cre.Properties["GroutingDailyDetailID"], ParameterDirection.Input),
  6282. };
  6283. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6284. #endregion
  6285. }
  6286. #endregion
  6287. #endregion
  6288. oracleTrConn.Commit();
  6289. }
  6290. catch (Exception ex)
  6291. {
  6292. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6293. {
  6294. oracleTrConn.Rollback();
  6295. oracleTrConn.Disconnect();
  6296. }
  6297. result.Result = -999;
  6298. result.Status = Constant.ServiceResultStatus.SystemError;
  6299. result.Message = "成型报损保存失败";
  6300. throw ex;
  6301. }
  6302. finally
  6303. {
  6304. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6305. {
  6306. oracleTrConn.Disconnect();
  6307. }
  6308. }
  6309. result.Result = returnRow;
  6310. return result;
  6311. }
  6312. /// <summary>
  6313. /// 审核成型报损
  6314. /// </summary>
  6315. /// <param name="cre"></param>
  6316. /// <param name="userInfo"></param>
  6317. /// <returns></returns>
  6318. public static ServiceResultEntity AuditGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
  6319. {
  6320. ServiceResultEntity result = new ServiceResultEntity();
  6321. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6322. string sqlString = string.Empty;
  6323. int returnRow = Constant.INT_IS_ZERO;
  6324. try
  6325. {
  6326. oracleTrConn.Connect();
  6327. #region 1、校验该成型报损是否是待审状态
  6328. sqlString = "SELECT 1\n" +
  6329. " FROM TP_PM_GroutingScrapProduct \n" +
  6330. " WHERE ScrapProductID = :in_ScrapProductID\n" +
  6331. " AND AuditStatus = 0";
  6332. OracleParameter[] paras = new OracleParameter[] {
  6333. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input),
  6334. };
  6335. DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  6336. // 审核状态不是待审
  6337. if (returnTable.Rows.Count == 0)
  6338. {
  6339. result.Result = -99;
  6340. return result;
  6341. }
  6342. #endregion
  6343. #region 2、审核
  6344. sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
  6345. " SET AuditStatus = :in_AuditStatus\n" +
  6346. " ,Auditor = :in_Auditor\n" +
  6347. " ,AuditDate = :in_AuditDate\n" +
  6348. " ,AuditOpinion = :in_AuditOpinion\n" +
  6349. " WHERE ScrapProductID = :in_ScrapProductID";
  6350. paras = new OracleParameter[] {
  6351. new OracleParameter(":in_ScrapProductID",OracleDbType.Int32, cre.Properties["ScrapProductID"], ParameterDirection.Input),
  6352. new OracleParameter(":in_AuditStatus",OracleDbType.Int32, cre.Properties["AuditStatus"], ParameterDirection.Input),
  6353. new OracleParameter(":in_Auditor",OracleDbType.Int32, cre.Properties["Auditor"], ParameterDirection.Input),
  6354. new OracleParameter(":in_AuditDate",OracleDbType.Date, DateTime.Now, ParameterDirection.Input),
  6355. new OracleParameter(":in_AuditOpinion",OracleDbType.NVarchar2, cre.Properties["AuditOpinion"], ParameterDirection.Input),
  6356. };
  6357. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6358. #endregion
  6359. oracleTrConn.Commit();
  6360. }
  6361. catch (Exception ex)
  6362. {
  6363. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6364. {
  6365. oracleTrConn.Rollback();
  6366. oracleTrConn.Disconnect();
  6367. }
  6368. throw ex;
  6369. }
  6370. finally
  6371. {
  6372. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6373. {
  6374. oracleTrConn.Disconnect();
  6375. }
  6376. }
  6377. result.Result = returnRow;
  6378. return result;
  6379. }
  6380. /// <summary>
  6381. /// 撤销成型报损
  6382. /// </summary>
  6383. /// <param name="cre"></param>
  6384. /// <param name="userInfo"></param>
  6385. /// <returns></returns>
  6386. public static ServiceResultEntity ReverseGroutingScrapProduct(ClientRequestEntity cre, SUserInfo userInfo)
  6387. {
  6388. ServiceResultEntity result = new ServiceResultEntity();
  6389. result.Status = Constant.ServiceResultStatus.Success;
  6390. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6391. string sqlString = string.Empty;
  6392. int returnRow = Constant.INT_IS_ZERO;
  6393. try
  6394. {
  6395. oracleTrConn.Connect();
  6396. #region 1、校验该成型报损是否是待审状态
  6397. sqlString = "SELECT SCRAPPRODUCTID\n" +
  6398. " FROM TP_PM_GroutingScrapProduct \n" +
  6399. " WHERE BackOutFlag = '0'\n" +
  6400. " AND BarCode = :in_BarCode\n";
  6401. OracleParameter[] paras = new OracleParameter[] {
  6402. new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6403. };
  6404. DataTable returnTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  6405. DataTable groutingTable = null;
  6406. // 该产品没有做成型报损
  6407. if (returnTable.Rows.Count == 0)
  6408. {
  6409. //xuwei add 2020-03-23 再次从注浆表查询报损状态
  6410. sqlString = @"
  6411. SELECT
  6412. GROUTINGDAILYDETAILID
  6413. FROM
  6414. TP_PM_GROUTINGDAILYDETAIL
  6415. WHERE
  6416. SCRAPFLAG = '1'
  6417. AND VALUEFLAG = '1'
  6418. AND BARCODE = :in_BarCode
  6419. ";
  6420. groutingTable = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  6421. if(groutingTable.Rows.Count==0)
  6422. {
  6423. result.Result = -99;
  6424. result.Status = Constant.ServiceResultStatus.SystemError;
  6425. result.Message = "此产品没有损坯或已被撤销,不能撤销";
  6426. return result;
  6427. }
  6428. }
  6429. //// 该产品已经做了撤销了
  6430. //if ("1".Equals(returnTable.Rows[0]["BackOutFlag"]))
  6431. //{
  6432. // result.Result = -100;
  6433. // result.Status = Constant.ServiceResultStatus.SystemError;
  6434. // result.Message = "此产品已经撤销";
  6435. // return result;
  6436. //}
  6437. #endregion
  6438. #region 2、撤销
  6439. //xuwei fix 2020-03-23 如果成型报损才更新
  6440. if(returnTable.Rows.Count>0)
  6441. {
  6442. sqlString = "UPDATE TP_PM_GroutingScrapProduct\n" +
  6443. " SET BackOutFlag = :in_BackOutFlag\n" +
  6444. " ,BackOutTime = :in_BackOutTime\n" +
  6445. " ,BackOutUserID = :in_BackOutUserID\n" +
  6446. " ,BackOutUserCode = :in_BackOutUserCode\n" +
  6447. " WHERE SCRAPPRODUCTID = :in_ScrapProductID";
  6448. paras = new OracleParameter[] {
  6449. new OracleParameter(":in_ScrapProductID",OracleDbType.NVarchar2, returnTable.Rows[0]["SCRAPPRODUCTID"].ToString(), ParameterDirection.Input),
  6450. new OracleParameter(":in_BackOutFlag",OracleDbType.Int32, Constant.INT_IS_ONE, ParameterDirection.Input),
  6451. new OracleParameter(":in_BackOutTime",OracleDbType.Date, DateTime.Now, ParameterDirection.Input),
  6452. new OracleParameter(":in_BackOutUserID",OracleDbType.Int32, userInfo.UserID, ParameterDirection.Input),
  6453. new OracleParameter(":in_BackOutUserCode",OracleDbType.NVarchar2, userInfo.UserCode , ParameterDirection.Input),
  6454. };
  6455. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6456. }
  6457. sqlString = "UPDATE TP_PM_GroutingDailyDetail\n" +
  6458. " SET ScrapFlag = :in_ScrapFlag\n" +
  6459. " ,SReasonID = NULL\n" +
  6460. " ,ScrapType = NULL\n" +
  6461. " ,ScrapTime = NULL\n" +
  6462. " ,ScrapUser = NULL\n" +
  6463. " WHERE BarCode = :in_BarCode";
  6464. paras = new OracleParameter[] {
  6465. new OracleParameter(":in_BarCode",OracleDbType.NVarchar2, cre.Properties["BarCode"], ParameterDirection.Input),
  6466. new OracleParameter(":in_ScrapFlag",OracleDbType.Char, "0" , ParameterDirection.Input),
  6467. };
  6468. returnRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  6469. #endregion
  6470. oracleTrConn.Commit();
  6471. }
  6472. catch (Exception ex)
  6473. {
  6474. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6475. {
  6476. oracleTrConn.Rollback();
  6477. oracleTrConn.Disconnect();
  6478. }
  6479. result.Status = Constant.ServiceResultStatus.SystemError;
  6480. result.Message = "撤销成型报损失败";
  6481. throw ex;
  6482. }
  6483. finally
  6484. {
  6485. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6486. {
  6487. oracleTrConn.Disconnect();
  6488. }
  6489. }
  6490. result.Result = returnRow;
  6491. return result;
  6492. }
  6493. /// <summary>
  6494. /// 获取注浆日报明细表
  6495. /// </summary>
  6496. /// <param name="cre"></param>
  6497. /// <param name="userInfo"></param>
  6498. /// <returns></returns>
  6499. public static ServiceResultEntity GetGroutingDailyDetail(ClientRequestEntity cre, SUserInfo userInfo)
  6500. {
  6501. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6502. try
  6503. {
  6504. ServiceResultEntity result = new ServiceResultEntity();
  6505. con.Open();
  6506. string sqlString = "SELECT PGD.GroutingDailyDetailID\n" +
  6507. " ,PGD.GroutingDailyID\n" +
  6508. " ,PGD.GroutingLineID\n" +
  6509. " ,PGD.GroutingLineCode\n" +
  6510. " ,PGD.GroutingLineName\n" +
  6511. " ,PGD.GroutingLineDetailID\n" +
  6512. " ,PGD.GroutingDate\n" +
  6513. " ,PGD.GroutingMouldCode\n" +
  6514. " ,PGD.MouldCode\n" +
  6515. " ,PGD.GMouldTypeID\n" +
  6516. " ,PGD.CanManyTimes\n" +
  6517. " ,PGD.GroutingBatchNo\n" +
  6518. " ,PGD.UserID GroutingUserID\n" +
  6519. " ,PGD.UserCode GroutingUserCode\n" +
  6520. " ,PGD.ClassesSettingID\n" +
  6521. " ,PGD.GoodsID\n" +
  6522. " ,PGD.GoodsCode\n" +
  6523. " ,PGD.GoodsName\n" +
  6524. " ,PGD.GMouldStatus\n" +
  6525. " ,PGD.GroutingCount GroutingNum\n" +
  6526. " ,PGD.GroutingFlag\n" +
  6527. " ,PGD.BarCode\n" +
  6528. " ,PGD.OnlyCode\n" +
  6529. //" ,PGD.PrintTime\n" +
  6530. " ,PGD.NoGroutingRreason\n" +
  6531. " ,PGD.SpecialRepairFlag\n" +
  6532. " ,PGD.ScrapFlag\n" +
  6533. " ,PGD.SReasonID\n" +
  6534. " ,PGD.ScrapType\n" +
  6535. " ,PGD.ScrapTime\n" +
  6536. " ,PGD.ScrapUser\n" +
  6537. " ,PGD.IsPublicBody\n" +
  6538. " ,PGD.DeliverFlag\n" +
  6539. " ,PGD.beginningflag\n" +
  6540. " FROM TP_PM_GroutingDailyDetail PGD\n" +
  6541. " WHERE PGD.AccountID = :in_AccountID";
  6542. List<OracleParameter> paraList = new List<OracleParameter>();
  6543. paraList.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, userInfo.AccountID, ParameterDirection.Input));
  6544. // 产品条码
  6545. if (!string.IsNullOrWhiteSpace(cre.Properties["BarCode"] + ""))
  6546. {
  6547. sqlString += " AND PGD.BarCode = :in_BarCode ";
  6548. paraList.Add(new OracleParameter(":in_BarCode", OracleDbType.NVarchar2, cre.Properties["BarCode"] + "", ParameterDirection.Input));
  6549. }
  6550. DataSet dsReturn = con.GetSqlResultToDs(sqlString, paraList.ToArray());
  6551. result.Data = dsReturn;
  6552. return result;
  6553. }
  6554. catch (Exception ex)
  6555. {
  6556. throw ex;
  6557. }
  6558. finally
  6559. {
  6560. if (con.ConnState == ConnectionState.Open)
  6561. {
  6562. con.Close();
  6563. }
  6564. }
  6565. }
  6566. #endregion
  6567. #region 产品挂起
  6568. /// <summary>
  6569. /// 获取可以挂起的工序(干补、装车、入窑、出窑)工序不能挂起
  6570. /// </summary>
  6571. /// <param name="user">登录用户信息</param>
  6572. /// <param name="se">查询条件</param>
  6573. /// <returns>查询结果</returns>
  6574. public static ServiceResultEntity GetSuspendProcedure(SUserInfo user)
  6575. {
  6576. IDBConnection conn = null;
  6577. try
  6578. {
  6579. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6580. conn.Open();
  6581. string sqlString = "SELECT p.procedureid, p.procedurename\n" +
  6582. " FROM tp_pc_procedure p\n" +
  6583. " INNER JOIN tp_pc_productionline line\n" +
  6584. " ON line.productionlineid = p.productionlineid\n" +
  6585. " WHERE line.valueflag = '1'\n" +
  6586. " AND p.valueflag = '1'\n" +
  6587. " AND p.NODETYPE <> '3'\n" +
  6588. //" AND p.modeltype IN (-1, 0, 4, 5, 9)\n" +
  6589. " AND p.modeltype IN (0, 4, 5, 9)\n" +
  6590. " AND p.PROCEDUREMODEL = '1'\n" +
  6591. " AND p.accountid = :accountid\n" +
  6592. " AND line.accountid = :accountid\n" +
  6593. " ORDER BY line.productionlineid, p.displayno";
  6594. IDataParameter[] paras = new OracleParameter[]
  6595. {
  6596. new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  6597. };
  6598. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  6599. ServiceResultEntity sre = new ServiceResultEntity();
  6600. sre.Data = data;
  6601. return sre;
  6602. }
  6603. catch (Exception ex)
  6604. {
  6605. throw ex;
  6606. }
  6607. finally
  6608. {
  6609. if (conn != null &&
  6610. conn.ConnState == ConnectionState.Open)
  6611. {
  6612. conn.Close();
  6613. }
  6614. }
  6615. }
  6616. /// <summary>
  6617. /// 验证挂起条码
  6618. /// </summary>
  6619. /// <param name="user">登录用户信息</param>
  6620. /// <param name="se">查询条件</param>
  6621. /// <returns>查询结果</returns>
  6622. public static ServiceResultEntity CheckSuspendBarcode(SUserInfo user, string barcode)
  6623. {
  6624. IDBConnection conn = null;
  6625. try
  6626. {
  6627. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6628. conn.Open();
  6629. string sqlString = "SELECT 1 AS SEL, gdd.groutingdailydetailid\n" +
  6630. " ,gdd.barcode\n" +
  6631. " ,gdd.groutingmouldcode\n" +
  6632. " ,gdd.groutingdate\n" +
  6633. " ,gdd.goodscode\n" +
  6634. " ,gdd.usercode\n" +
  6635. " ,gdd.scrapflag\n" +
  6636. " ,gdd.deliverflag\n" +
  6637. " ,inp.procedureid\n" +
  6638. " ,p.procedurename\n" +
  6639. " FROM tp_pm_groutingdailydetail gdd\n" +
  6640. " LEFT JOIN tp_pm_inproduction inp\n" +
  6641. " ON inp.barcode = gdd.barcode\n" +
  6642. " LEFT JOIN tp_pc_procedure p\n" +
  6643. " ON p.procedureid = inp.procedureid\n" +
  6644. " WHERE gdd.accountid = :accountid\n" +
  6645. " AND gdd.barcode = :barcode";
  6646. IDataParameter[] paras = new OracleParameter[]
  6647. {
  6648. new OracleParameter(":accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  6649. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  6650. };
  6651. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  6652. ServiceResultEntity sre = new ServiceResultEntity();
  6653. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  6654. {
  6655. sre.Status = Constant.ServiceResultStatus.Other;
  6656. sre.Message = "无效条码";
  6657. return sre;
  6658. }
  6659. DataRow row = data.Tables[0].Rows[0];
  6660. if (row["scrapflag"] + "" == "1" || (row["deliverflag"] + "" == "1" && row["procedureid"] + "" == ""))
  6661. {
  6662. sre.Status = Constant.ServiceResultStatus.Other;
  6663. sre.Message = "此条码不是在产产品";
  6664. return sre;
  6665. }
  6666. sre.Data = data;
  6667. return sre;
  6668. }
  6669. catch (Exception ex)
  6670. {
  6671. throw ex;
  6672. }
  6673. finally
  6674. {
  6675. if (conn != null &&
  6676. conn.ConnState == ConnectionState.Open)
  6677. {
  6678. conn.Close();
  6679. }
  6680. }
  6681. }
  6682. /// <summary>
  6683. /// 保存条码挂起
  6684. /// </summary>
  6685. /// <param name="user">登录用户信息</param>
  6686. /// <param name="se">查询条件</param>
  6687. /// <returns>查询结果</returns>
  6688. public static ServiceResultEntity SaveSuspendProduct(SUserInfo user, int[] procedureids, int[] groutingdailydetailids, string remarks)
  6689. {
  6690. IDBTransaction conn = null;
  6691. try
  6692. {
  6693. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6694. string suspendBatchNo = Guid.NewGuid().ToString().ToUpper();
  6695. string sqlDelete = "DELETE FROM TP_PM_ProductSuspend ps\n" +
  6696. " WHERE ps.groutingdailydetailid = :groutingdailydetailid\n" +
  6697. " AND ps.suspendprocedureid = :suspendprocedureid";
  6698. string sqlUpdateRecord = "update TP_PM_ProductSuspendRecord r set RevokeTime=sysdate, RevokeUserID=" + user.UserID +
  6699. " WHERE RevokeUserID is null and r.groutingdailydetailid = :groutingdailydetailid\n" +
  6700. " AND r.suspendprocedureid = :suspendprocedureid";
  6701. string sqlInsert = "INSERT INTO TP_PM_PRODUCTSUSPEND\n" +
  6702. " (GROUTINGDAILYDETAILID\n" +
  6703. " ,SUSPENDPROCEDUREID\n" +
  6704. " ,REMARKS\n" +
  6705. " ,SUSPENDBATCHNO\n" +
  6706. " ,ACCOUNTID\n" +
  6707. " ,CREATEUSERID)\n" +
  6708. "VALUES\n" +
  6709. " (:GROUTINGDAILYDETAILID\n" +
  6710. " ,:SUSPENDPROCEDUREID\n" +
  6711. " ,:REMARKS\n" +
  6712. " ,:SUSPENDBATCHNO\n" +
  6713. " ,:ACCOUNTID\n" +
  6714. " ,:CREATEUSERID)";
  6715. string sqlInsertRecord = "INSERT INTO TP_PM_PRODUCTSUSPENDRecord\n" +
  6716. " (GROUTINGDAILYDETAILID\n" +
  6717. " ,SUSPENDPROCEDUREID\n" +
  6718. " ,REMARKS\n" +
  6719. " ,SUSPENDBATCHNO\n" +
  6720. " ,ACCOUNTID\n" +
  6721. " ,CREATEUSERID)\n" +
  6722. "VALUES\n" +
  6723. " (:GROUTINGDAILYDETAILID\n" +
  6724. " ,:SUSPENDPROCEDUREID\n" +
  6725. " ,:REMARKS\n" +
  6726. " ,:SUSPENDBATCHNO\n" +
  6727. " ,:ACCOUNTID\n" +
  6728. " ,:CREATEUSERID)";
  6729. foreach (int procedureid in procedureids)
  6730. {
  6731. foreach (int groutingdailydetailid in groutingdailydetailids)
  6732. {
  6733. IDataParameter[] deleteParas = new OracleParameter[]
  6734. {
  6735. new OracleParameter(":groutingdailydetailid", OracleDbType.Int32,groutingdailydetailid, ParameterDirection.Input),
  6736. new OracleParameter(":suspendprocedureid", OracleDbType.Int32,procedureid, ParameterDirection.Input),
  6737. };
  6738. conn.ExecuteNonQuery(sqlDelete, deleteParas);
  6739. conn.ExecuteNonQuery(sqlUpdateRecord, deleteParas);
  6740. IDataParameter[] insertParas = new OracleParameter[]
  6741. {
  6742. new OracleParameter(":GROUTINGDAILYDETAILID", OracleDbType.Int32,groutingdailydetailid, ParameterDirection.Input),
  6743. new OracleParameter(":SUSPENDPROCEDUREID", OracleDbType.Int32,procedureid, ParameterDirection.Input),
  6744. new OracleParameter(":REMARKS", OracleDbType.NVarchar2,remarks, ParameterDirection.Input),
  6745. new OracleParameter(":SUSPENDBATCHNO", OracleDbType.Varchar2,suspendBatchNo, ParameterDirection.Input),
  6746. new OracleParameter(":ACCOUNTID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  6747. new OracleParameter(":CREATEUSERID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  6748. };
  6749. conn.ExecuteNonQuery(sqlInsert, insertParas);
  6750. conn.ExecuteNonQuery(sqlInsertRecord, insertParas);
  6751. }
  6752. }
  6753. conn.Commit();
  6754. conn.Disconnect();
  6755. return new ServiceResultEntity();
  6756. }
  6757. catch (Exception ex)
  6758. {
  6759. throw ex;
  6760. }
  6761. finally
  6762. {
  6763. if (conn != null &&
  6764. conn.ConnState == ConnectionState.Open)
  6765. {
  6766. conn.Disconnect();
  6767. }
  6768. }
  6769. }
  6770. /// <summary>
  6771. /// 查询挂起条码
  6772. /// </summary>
  6773. /// <param name="user">登录用户信息</param>
  6774. /// <param name="se">查询条件</param>
  6775. /// <returns>查询结果</returns>
  6776. public static ServiceResultEntity GetSuspendProduct(SUserInfo user, string barcode)
  6777. {
  6778. IDBConnection conn = null;
  6779. try
  6780. {
  6781. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6782. conn.Open();
  6783. string sqlString = "SELECT 0 AS SEL, gdd.barcode\n" +
  6784. " ,gdd.groutingmouldcode\n" +
  6785. " ,gdd.groutingdate\n" +
  6786. " ,gdd.goodscode\n" +
  6787. " ,gdd.usercode\n" +
  6788. " ,ps.groutingdailydetailid\n" +
  6789. " ,ps.suspendprocedureid\n" +
  6790. " ,sp.procedurename suspendprocedurename\n" +
  6791. " ,ps.remarks\n" +
  6792. " ,ps.Createtime\n" +
  6793. " ,u.usercode CREATEUSERCode\n" +
  6794. " ,case when gdd.scrapflag = '1' then '成型损坯'" +
  6795. " when gdd.deliverflag = '0' then '注浆' " +
  6796. " when inp.barcode is not null then to_char(p.procedurename) " +
  6797. " when spp.barcode is not null then to_char(glt.goodsleveltypename) " +
  6798. " when fp.barcode is not null then '生产完成' else '' end procedurename -- 当前工序\n" +
  6799. " FROM TP_PM_ProductSuspend ps\n" +
  6800. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  6801. " ON gdd.groutingdailydetailid = ps.groutingdailydetailid\n" +
  6802. " INNER JOIN tp_pc_procedure sp\n" +
  6803. " ON ps.suspendprocedureid = sp.procedureid\n" +
  6804. " INNER JOIN tp_mst_user u\n" +
  6805. " ON u.userid = ps.CREATEUSERID\n" +
  6806. // 在产工序
  6807. " LEFT JOIN tp_pm_inproduction inp \n" +
  6808. " ON gdd.deliverflag = '1' and inp.barcode = gdd.barcode\n" +
  6809. " LEFT JOIN tp_pc_procedure p \n" +
  6810. " ON p.procedureid = inp.procedureid\n" +
  6811. // 完成
  6812. " LEFT JOIN tp_pm_finishedproduct fp \n" +
  6813. " ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode = gdd.barcode\n" +
  6814. // 损坯
  6815. " LEFT JOIN tp_pm_scrapproduct spp \n" +
  6816. " ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode is null and spp.barcode = gdd.barcode\n" +
  6817. " AND spp.valueflag = '1'\n" +
  6818. " AND spp.auditstatus = 1\n" +
  6819. " AND spp.goodsleveltypeid <> 9\n" +
  6820. " AND spp.RECYCLINGFLAG = '0'\n" +
  6821. " LEFT JOIN tp_sys_goodsleveltype glt \n" +
  6822. " ON glt.goodsleveltypeid = spp.goodsleveltypeid\n" +
  6823. " WHERE gdd.barcode = :barcode\n" +
  6824. " ORDER BY sp.displayno";
  6825. IDataParameter[] paras = new OracleParameter[]
  6826. {
  6827. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  6828. };
  6829. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  6830. ServiceResultEntity sre = new ServiceResultEntity();
  6831. sre.Data = data;
  6832. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  6833. {
  6834. sre.Message = "此条码没有可撤销的挂起信息";
  6835. return sre;
  6836. }
  6837. return sre;
  6838. }
  6839. catch (Exception ex)
  6840. {
  6841. throw ex;
  6842. }
  6843. finally
  6844. {
  6845. if (conn != null &&
  6846. conn.ConnState == ConnectionState.Open)
  6847. {
  6848. conn.Close();
  6849. }
  6850. }
  6851. }
  6852. /// <summary>
  6853. /// 撤销条码挂起
  6854. /// </summary>
  6855. /// <param name="user">登录用户信息</param>
  6856. /// <param name="se">查询条件</param>
  6857. /// <returns>查询结果</returns>
  6858. public static ServiceResultEntity DeleteSuspendProduct(SUserInfo user, int[] procedureids, int[] groutingdailydetailids)
  6859. {
  6860. IDBTransaction conn = null;
  6861. try
  6862. {
  6863. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6864. string suspendBatchNo = Guid.NewGuid().ToString().ToUpper();
  6865. string sqlDelete = "DELETE FROM TP_PM_ProductSuspend ps\n" +
  6866. " WHERE ps.groutingdailydetailid = :groutingdailydetailid\n" +
  6867. " AND ps.suspendprocedureid = :suspendprocedureid";
  6868. string sqlUpdateRecord = "update TP_PM_ProductSuspendRecord r set RevokeTime=sysdate, RevokeUserID=" + user.UserID +
  6869. " WHERE RevokeUserID is null and r.groutingdailydetailid = :groutingdailydetailid\n" +
  6870. " AND r.suspendprocedureid = :suspendprocedureid";
  6871. for (int i = 0; i < procedureids.Length; i++)
  6872. {
  6873. IDataParameter[] deleteParas = new OracleParameter[]
  6874. {
  6875. new OracleParameter(":groutingdailydetailid", OracleDbType.Int32,groutingdailydetailids[i], ParameterDirection.Input),
  6876. new OracleParameter(":suspendprocedureid", OracleDbType.Int32,procedureids[i], ParameterDirection.Input),
  6877. };
  6878. conn.ExecuteNonQuery(sqlDelete, deleteParas);
  6879. conn.ExecuteNonQuery(sqlUpdateRecord, deleteParas);
  6880. }
  6881. conn.Commit();
  6882. conn.Disconnect();
  6883. return new ServiceResultEntity();
  6884. }
  6885. catch (Exception ex)
  6886. {
  6887. throw ex;
  6888. }
  6889. finally
  6890. {
  6891. if (conn != null &&
  6892. conn.ConnState == ConnectionState.Open)
  6893. {
  6894. conn.Disconnect();
  6895. }
  6896. }
  6897. }
  6898. /// <summary>
  6899. /// 查询挂起条码
  6900. /// </summary>
  6901. /// <param name="user">登录用户信息</param>
  6902. /// <param name="se">查询条件</param>
  6903. /// <returns>查询结果</returns>
  6904. public static ServiceResultEntity GetAllSuspendProduct(SUserInfo user, ClientRequestEntity cre)
  6905. {
  6906. IDBConnection conn = null;
  6907. try
  6908. {
  6909. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  6910. conn.Open();
  6911. //string sqlString = "SELECT gdd.barcode\n" +
  6912. //" ,gdd.groutingmouldcode\n" +
  6913. //" ,gdd.groutingdate\n" +
  6914. //" ,gdd.goodscode\n" +
  6915. //" ,gdd.usercode GroutingUserCode\n" +
  6916. //" ,ps.groutingdailydetailid\n" +
  6917. //" ,ps.suspendprocedureid\n" +
  6918. //" ,sp.procedurename suspendprocedurename\n" +
  6919. //" ,ps.remarks\n" +
  6920. //" ,ps.Createtime\n" +
  6921. //" ,u.usercode CREATEUSERCode\n" +
  6922. //" ,case when gdd.scrapflag = '1' then '成型损坯'" +
  6923. //" when gdd.deliverflag = '0' then '注浆' " +
  6924. //" when inp.barcode is not null then to_char(p.procedurename) " +
  6925. //" when spp.barcode is not null then to_char(glt.goodsleveltypename) " +
  6926. //" when fp.barcode is not null then '生产完成' else '' end procedurename\n" + // 当前工序
  6927. //" FROM TP_PM_ProductSuspend ps\n" +
  6928. //" INNER JOIN tp_pc_procedure sp\n" +
  6929. //" ON ps.suspendprocedureid = sp.procedureid\n" +
  6930. //" INNER JOIN tp_mst_user u\n" +
  6931. //" ON u.userid = ps.CREATEUSERID\n" +
  6932. //" INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  6933. //" ON gdd.groutingdailydetailid = ps.groutingdailydetailid\n" +
  6934. //// 在产工序
  6935. //" LEFT JOIN tp_pm_inproduction inp \n" +
  6936. //" ON gdd.deliverflag = '1' and inp.barcode = gdd.barcode\n" +
  6937. //" LEFT JOIN tp_pc_procedure p \n" +
  6938. //" ON p.procedureid = inp.procedureid\n" +
  6939. // // 完成
  6940. //" LEFT JOIN tp_pm_finishedproduct fp \n" +
  6941. //" ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode = gdd.barcode\n" +
  6942. // // 损坯
  6943. //" LEFT JOIN tp_pm_scrapproduct spp \n" +
  6944. //" ON gdd.deliverflag = '1' and inp.barcode is null and fp.barcode is null and spp.barcode = gdd.barcode\n" +
  6945. //" AND spp.valueflag = '1'\n" +
  6946. //" AND spp.auditstatus = 1\n" +
  6947. //" AND spp.goodsleveltypeid <> 9\n" +
  6948. //" AND spp.RECYCLINGFLAG = '0'\n" +
  6949. //" LEFT JOIN tp_sys_goodsleveltype glt \n" +
  6950. //" ON glt.goodsleveltypeid = spp.goodsleveltypeid\n" +
  6951. //" WHERE (:barcode is null or instr(gdd.barcode, :barcode) > 0)\n" +
  6952. //" AND (:remarks is null or instr(ps.remarks, :remarks) > 0)\n" +
  6953. //" AND (:datefrom is null or ps.createtime >= :datefrom)\n" +
  6954. //" AND (:dateend is null or ps.createtime <= :dateend)\n" +
  6955. //" ORDER BY gdd.barcode, sp.displayno ";
  6956. string sqlString = "SELECT GDD.BARCODE,\n" +
  6957. " GDD.GROUTINGMOULDCODE,\n" +
  6958. " GDD.GROUTINGDATE,\n" +
  6959. " GDD.GOODSCODE,\n" +
  6960. " GDD.USERCODE GROUTINGUSERCODE,\n" +
  6961. " PSR.GROUTINGDAILYDETAILID,\n" +
  6962. " PSR.SUSPENDPROCEDUREID,\n" +
  6963. " SP.PROCEDURENAME SUSPENDPROCEDURENAME,\n" +
  6964. " PSR.REMARKS,\n" +
  6965. " PSR.CREATETIME,\n" +
  6966. " U.USERCODE CREATEUSERCODE,\n" +
  6967. " CASE\n" +
  6968. " WHEN GDD.SCRAPFLAG = '1' THEN\n" +
  6969. " '成型损坯'\n" +
  6970. " WHEN GDD.DELIVERFLAG = '0' THEN\n" +
  6971. " '注浆'\n" +
  6972. " WHEN INP.BARCODE IS NOT NULL THEN\n" +
  6973. " TO_CHAR(P.PROCEDURENAME)\n" +
  6974. " WHEN SPP.BARCODE IS NOT NULL THEN\n" +
  6975. " TO_CHAR(GLT.GOODSLEVELTYPENAME)\n" +
  6976. " WHEN FP.BARCODE IS NOT NULL THEN\n" +
  6977. " '生产完成'\n" +
  6978. " ELSE\n" +
  6979. " ''\n" +
  6980. " END PROCEDURENAME,\n" +
  6981. " TO_CHAR(PSR.REVOKETIME, 'yyyy-mm-dd hh24:mi:ss') AS REVOKETIME,\n" +
  6982. " REVOKEUSER.USERCODE REVOKEUSERCODE\n" +
  6983. " FROM TP_PM_PRODUCTSUSPENDRECORD PSR\n" +
  6984. " INNER JOIN TP_PC_PROCEDURE SP\n" +
  6985. " ON PSR.SUSPENDPROCEDUREID = SP.PROCEDUREID\n" +
  6986. " INNER JOIN TP_MST_USER U\n" +
  6987. " ON U.USERID = PSR.CREATEUSERID\n" +
  6988. " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  6989. " ON GDD.GROUTINGDAILYDETAILID = PSR.GROUTINGDAILYDETAILID\n" +
  6990. " LEFT JOIN TP_PM_INPRODUCTION INP\n" +
  6991. " ON GDD.DELIVERFLAG = '1'\n" +
  6992. " AND INP.BARCODE = GDD.BARCODE\n" +
  6993. " LEFT JOIN TP_PC_PROCEDURE P\n" +
  6994. " ON P.PROCEDUREID = INP.PROCEDUREID\n" +
  6995. " LEFT JOIN TP_PM_FINISHEDPRODUCT FP\n" +
  6996. " ON GDD.DELIVERFLAG = '1'\n" +
  6997. " AND INP.BARCODE IS NULL\n" +
  6998. " AND FP.BARCODE = GDD.BARCODE\n" +
  6999. " LEFT JOIN TP_PM_SCRAPPRODUCT SPP\n" +
  7000. " ON GDD.DELIVERFLAG = '1'\n" +
  7001. " AND INP.BARCODE IS NULL\n" +
  7002. " AND FP.BARCODE IS NULL\n" +
  7003. " AND SPP.BARCODE = GDD.BARCODE\n" +
  7004. " AND SPP.VALUEFLAG = '1'\n" +
  7005. " AND SPP.AUDITSTATUS = 1\n" +
  7006. " AND SPP.GOODSLEVELTYPEID <> 9\n" +
  7007. " AND SPP.RECYCLINGFLAG = '0'\n" +
  7008. " LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT\n" +
  7009. " ON GLT.GOODSLEVELTYPEID = SPP.GOODSLEVELTYPEID\n" +
  7010. " LEFT JOIN TP_MST_USER REVOKEUSER\n" +
  7011. " ON PSR.REVOKEUSERID = REVOKEUSER.USERID\n" +
  7012. " WHERE (:barcode IS NULL OR INSTR(GDD.BARCODE, :barcode) > 0)\n" +
  7013. " AND (:remarks IS NULL OR INSTR(PSR.REMARKS, :remarks) > 0)\n" +
  7014. " AND (:datefrom IS NULL OR PSR.CREATETIME >= :datefrom)\n" +
  7015. " AND (:dateend is null or psr.createtime <= :dateend)\n" +
  7016. " ORDER BY GDD.BARCODE, SP.DISPLAYNO";
  7017. IDataParameter[] paras = new OracleParameter[]
  7018. {
  7019. new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input),
  7020. new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input),
  7021. new OracleParameter(":datefrom", OracleDbType.Date, cre.Properties["datefrom"], ParameterDirection.Input),
  7022. new OracleParameter(":dateend", OracleDbType.Date, cre.Properties["dateend"], ParameterDirection.Input),
  7023. };
  7024. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7025. ServiceResultEntity sre = new ServiceResultEntity();
  7026. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7027. {
  7028. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7029. }
  7030. sre.Data = data;
  7031. return sre;
  7032. }
  7033. catch (Exception ex)
  7034. {
  7035. throw ex;
  7036. }
  7037. finally
  7038. {
  7039. if (conn != null &&
  7040. conn.ConnState == ConnectionState.Open)
  7041. {
  7042. conn.Close();
  7043. }
  7044. }
  7045. }
  7046. #endregion
  7047. #region 品保抽查
  7048. /// <summary>
  7049. /// 验证品保抽查条码
  7050. /// </summary>
  7051. /// <param name="user">登录用户信息</param>
  7052. /// <param name="se">查询条件</param>
  7053. /// <returns>查询结果</returns>
  7054. public static ServiceResultEntity CheckQASpotCheck(SUserInfo user, string barcode)
  7055. {
  7056. IDBConnection conn = null;
  7057. try
  7058. {
  7059. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7060. conn.Open();
  7061. string sqlString = "SELECT gdd.groutingdailydetailid\n" +
  7062. " ,gdd.barcode\n" +
  7063. " ,gdd.groutingmouldcode\n" +
  7064. " ,gdd.groutingdate\n" +
  7065. " ,gdd.goodscode\n" +
  7066. " ,gdd.usercode\n" +
  7067. //" ,gdd.scrapflag\n" +
  7068. //" ,gdd.deliverflag\n" +
  7069. // -1:未交坯 -2:生产完成 -3:成品交接 >0:在产工序ID
  7070. " ,case when gdd.deliverflag='0' then -1 \n" +
  7071. " when fp.FHUserID is not null then -3 \n" +
  7072. " when fp.barcode is not null then -2 \n" +
  7073. " when inp.barcode is null then -4 \n" +
  7074. " else inp.procedureid end procedureid \n" +
  7075. " ,case when gdd.deliverflag='0' then '未交坯' \n" +
  7076. " when fp.FHUserID is not null then '成品交接' \n" +
  7077. " when fp.barcode is not null then '生产完成' \n" +
  7078. " when inp.barcode is null then '损坯' \n" +
  7079. " else to_char(p.procedurename) end procedurename \n" +
  7080. " ,sysdate CheckTime \n" +
  7081. " FROM tp_pm_groutingdailydetail gdd\n" +
  7082. " LEFT JOIN tp_pm_inproduction inp\n" +
  7083. " ON inp.barcode = gdd.barcode\n" +
  7084. " LEFT JOIN tp_pc_procedure p\n" +
  7085. " ON p.procedureid = inp.procedureid\n" +
  7086. " LEFT JOIN TP_PM_FinishedProduct fp\n" +
  7087. " ON fp.barcode = gdd.barcode\n" +
  7088. " WHERE gdd.accountid = :accountid\n" +
  7089. " AND gdd.barcode = :barcode";
  7090. IDataParameter[] paras = new OracleParameter[]
  7091. {
  7092. new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7093. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  7094. };
  7095. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7096. ServiceResultEntity sre = new ServiceResultEntity();
  7097. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7098. {
  7099. sre.Status = Constant.ServiceResultStatus.Other;
  7100. sre.Message = "此条码为无效条码";
  7101. return sre;
  7102. }
  7103. sre.Data = data;
  7104. return sre;
  7105. }
  7106. catch (Exception ex)
  7107. {
  7108. throw ex;
  7109. }
  7110. finally
  7111. {
  7112. if (conn != null &&
  7113. conn.ConnState == ConnectionState.Open)
  7114. {
  7115. conn.Close();
  7116. }
  7117. }
  7118. }
  7119. /// <summary>
  7120. /// 保存品保抽查
  7121. /// </summary>
  7122. /// <param name="user">登录用户信息</param>
  7123. /// <param name="se">查询条件</param>
  7124. /// <returns>查询结果</returns>
  7125. public static ServiceResultEntity SaveQASpotCheck(SUserInfo user, Dictionary<string, object> data)
  7126. {
  7127. if (data == null || data.Count == 0)
  7128. {
  7129. return new ServiceResultEntity();
  7130. }
  7131. IDBTransaction conn = null;
  7132. try
  7133. {
  7134. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7135. string sqlInsert = "INSERT INTO TP_PM_QASpotCheck\n" +
  7136. " (GroutingDailyDetailID\n" +
  7137. " ,Remarks\n" +
  7138. " ,ProcedureID\n" +
  7139. " ,ProcedureName\n" +
  7140. " ,CheckTime\n" +
  7141. " ,AccountID\n" +
  7142. " ,CreateUserID)\n" +
  7143. "VALUES\n" +
  7144. " (:GroutingDailyDetailID\n" +
  7145. " ,:Remarks\n" +
  7146. " ,:ProcedureID\n" +
  7147. " ,:ProcedureName\n" +
  7148. " ,:CheckTime\n" +
  7149. " ,:AccountID\n" +
  7150. " ,:CreateUserID)";
  7151. IDataParameter[] insertParas = new OracleParameter[]
  7152. {
  7153. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32,data["GroutingDailyDetailID"], ParameterDirection.Input),
  7154. new OracleParameter(":Remarks", OracleDbType.NVarchar2,data["Remarks"], ParameterDirection.Input),
  7155. new OracleParameter(":ProcedureID", OracleDbType.Int32,data["ProcedureID"], ParameterDirection.Input),
  7156. new OracleParameter(":ProcedureName", OracleDbType.NVarchar2,data["ProcedureName"], ParameterDirection.Input),
  7157. new OracleParameter(":CheckTime", OracleDbType.Date,data["CheckTime"], ParameterDirection.Input),
  7158. new OracleParameter(":AccountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7159. new OracleParameter(":CreateUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  7160. };
  7161. conn.ExecuteNonQuery(sqlInsert, insertParas);
  7162. conn.Commit();
  7163. return new ServiceResultEntity();
  7164. }
  7165. catch (Exception ex)
  7166. {
  7167. throw ex;
  7168. }
  7169. finally
  7170. {
  7171. if (conn != null &&
  7172. conn.ConnState == ConnectionState.Open)
  7173. {
  7174. conn.Disconnect();
  7175. }
  7176. }
  7177. }
  7178. /// <summary>
  7179. /// 自动保存品保抽查
  7180. /// </summary>
  7181. /// <param name="user"></param>
  7182. /// <param name="barcode"></param>
  7183. /// <param name="remarks"></param>
  7184. /// <returns></returns>
  7185. public static ServiceResultEntity AutoSaveQASpotCheck(SUserInfo user, string barcode, string remarks)
  7186. {
  7187. IDBTransaction conn = null;
  7188. try
  7189. {
  7190. conn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7191. string sqlString = "SELECT gdd.groutingdailydetailid\n" +
  7192. " ,gdd.barcode\n" +
  7193. " ,gdd.groutingmouldcode\n" +
  7194. " ,gdd.groutingdate\n" +
  7195. " ,gdd.goodscode\n" +
  7196. " ,gdd.usercode\n" +
  7197. //" ,gdd.scrapflag\n" +
  7198. //" ,gdd.deliverflag\n" +
  7199. // -1:未交坯 -2:生产完成 -3:成品交接 >0:在产工序ID
  7200. " ,case when gdd.deliverflag='0' then -1 \n" +
  7201. " when fp.FHUserID is not null then -3 \n" +
  7202. " when fp.barcode is not null then -2 \n" +
  7203. " when inp.barcode is null then -4 \n" +
  7204. " else inp.procedureid end procedureid \n" +
  7205. " ,case when gdd.deliverflag='0' then '未交坯' \n" +
  7206. " when fp.FHUserID is not null then '成品交接' \n" +
  7207. " when fp.barcode is not null then '生产完成' \n" +
  7208. " when inp.barcode is null then '损坯' \n" +
  7209. " else to_char(p.procedurename) end procedurename \n" +
  7210. " ,sysdate CheckTime \n" +
  7211. " FROM tp_pm_groutingdailydetail gdd\n" +
  7212. " LEFT JOIN tp_pm_inproduction inp\n" +
  7213. " ON inp.barcode = gdd.barcode\n" +
  7214. " LEFT JOIN tp_pc_procedure p\n" +
  7215. " ON p.procedureid = inp.procedureid\n" +
  7216. " LEFT JOIN TP_PM_FinishedProduct fp\n" +
  7217. " ON fp.barcode = gdd.barcode\n" +
  7218. " WHERE gdd.accountid = :accountid\n" +
  7219. " AND gdd.barcode = :barcode";
  7220. IDataParameter[] paras = new OracleParameter[]
  7221. {
  7222. new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7223. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  7224. };
  7225. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7226. ServiceResultEntity sre = new ServiceResultEntity();
  7227. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7228. {
  7229. sre.Status = Constant.ServiceResultStatus.Other;
  7230. sre.Message = "此条码为无效条码";
  7231. return sre;
  7232. }
  7233. string sqlInsert = "INSERT INTO TP_PM_QASpotCheck\n" +
  7234. " (GroutingDailyDetailID\n" +
  7235. " ,Remarks\n" +
  7236. " ,ProcedureID\n" +
  7237. " ,ProcedureName\n" +
  7238. " ,CheckTime\n" +
  7239. " ,AccountID\n" +
  7240. " ,CreateUserID)\n" +
  7241. "VALUES\n" +
  7242. " (:GroutingDailyDetailID\n" +
  7243. " ,:Remarks\n" +
  7244. " ,:ProcedureID\n" +
  7245. " ,:ProcedureName\n" +
  7246. " ,:CheckTime\n" +
  7247. " ,:AccountID\n" +
  7248. " ,:CreateUserID)";
  7249. IDataParameter[] insertParas = new OracleParameter[]
  7250. {
  7251. new OracleParameter(":GroutingDailyDetailID", OracleDbType.Int32,data.Tables[0].Rows[0]["GroutingDailyDetailID"], ParameterDirection.Input),
  7252. new OracleParameter(":Remarks", OracleDbType.NVarchar2,remarks, ParameterDirection.Input),
  7253. new OracleParameter(":ProcedureID", OracleDbType.Int32,data.Tables[0].Rows[0]["ProcedureID"], ParameterDirection.Input),
  7254. new OracleParameter(":ProcedureName", OracleDbType.NVarchar2,data.Tables[0].Rows[0]["ProcedureName"], ParameterDirection.Input),
  7255. new OracleParameter(":CheckTime", OracleDbType.Date,data.Tables[0].Rows[0]["CheckTime"], ParameterDirection.Input),
  7256. new OracleParameter(":AccountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7257. new OracleParameter(":CreateUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input),
  7258. };
  7259. conn.ExecuteNonQuery(sqlInsert, insertParas);
  7260. conn.Commit();
  7261. sre.Data = data;
  7262. return sre;
  7263. }
  7264. catch (Exception ex)
  7265. {
  7266. throw ex;
  7267. }
  7268. finally
  7269. {
  7270. if (conn != null &&
  7271. conn.ConnState == ConnectionState.Open)
  7272. {
  7273. conn.Disconnect();
  7274. }
  7275. }
  7276. }
  7277. /// <summary>
  7278. /// 查询品保抽查
  7279. /// </summary>
  7280. /// <param name="user">登录用户信息</param>
  7281. /// <param name="se">查询条件</param>
  7282. /// <returns>查询结果</returns>
  7283. public static ServiceResultEntity GetAllQASpotCheck(SUserInfo user, ClientRequestEntity cre)
  7284. {
  7285. IDBConnection conn = null;
  7286. try
  7287. {
  7288. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7289. conn.Open();
  7290. string sqlString = "select gdd.barcode\n" +
  7291. " ,gdd.goodscode\n" +
  7292. " ,gdd.GroutingDate\n" +
  7293. " ,gdd.usercode GroutingUserCode\n" +
  7294. " ,gdd.GroutingMouldCode\n" +
  7295. " ,u.usercode checkusercode\n" +
  7296. " ,qa.ProcedureName\n" +
  7297. " ,qa.checktime\n" +
  7298. " ,qa.remarks\n" +
  7299. " from TP_PM_QASPOTCHECK qa\n" +
  7300. " inner join tp_pm_groutingdailydetail gdd\n" +
  7301. " on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
  7302. " inner join tp_mst_user u\n" +
  7303. " on u.userid = qa.createuserid\n" +
  7304. " where qa.valueflag = '1'\n";
  7305. List<OracleParameter> paras = new List<OracleParameter>();
  7306. if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
  7307. {
  7308. sqlString += " and instr(gdd.barcode, :barcode) > 0\n";
  7309. paras.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input));
  7310. }
  7311. if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
  7312. {
  7313. sqlString += " and instr(gdd.goodscode, :goodscode) > 0\n";
  7314. paras.Add(new OracleParameter(":goodscode", OracleDbType.NVarchar2, cre.Properties["goodscode"], ParameterDirection.Input));
  7315. }
  7316. if (!string.IsNullOrEmpty(cre.Properties["usercode"] + ""))
  7317. {
  7318. sqlString += " and instr(u.usercode, :usercode) > 0\n";
  7319. paras.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, cre.Properties["usercode"], ParameterDirection.Input));
  7320. }
  7321. if (!string.IsNullOrEmpty(cre.Properties["remarks"] + ""))
  7322. {
  7323. sqlString += " and instr(qa.remarks, :remarks) > 0\n";
  7324. paras.Add(new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input));
  7325. }
  7326. if (cre.Properties["checktimebegin"] != null)
  7327. {
  7328. sqlString += " and qa.checktime >= :checktimebegin\n";
  7329. paras.Add(new OracleParameter(":checktimebegin", OracleDbType.Date, cre.Properties["checktimebegin"], ParameterDirection.Input));
  7330. }
  7331. if (cre.Properties["checktimeend"] != null)
  7332. {
  7333. sqlString += " and qa.checktime < :checktimeend\n";
  7334. paras.Add(new OracleParameter(":checktimeend", OracleDbType.Date, cre.Properties["checktimeend"], ParameterDirection.Input));
  7335. }
  7336. sqlString += " ORDER BY gdd.barcode, qa.checktime ";
  7337. DataSet data = conn.GetSqlResultToDs(sqlString, paras.ToArray());
  7338. ServiceResultEntity sre = new ServiceResultEntity();
  7339. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7340. {
  7341. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7342. }
  7343. sre.Data = data;
  7344. return sre;
  7345. }
  7346. catch (Exception ex)
  7347. {
  7348. throw ex;
  7349. }
  7350. finally
  7351. {
  7352. if (conn != null &&
  7353. conn.ConnState == ConnectionState.Open)
  7354. {
  7355. conn.Close();
  7356. }
  7357. }
  7358. }
  7359. /// <summary>
  7360. /// 查询品保抽查
  7361. /// </summary>
  7362. /// <param name="user">登录用户信息</param>
  7363. /// <param name="se">查询条件</param>
  7364. /// <returns>查询结果</returns>
  7365. public static ServiceResultEntity GetAllQASpotCheckForPC(SUserInfo user, ClientRequestEntity cre)
  7366. {
  7367. IDBConnection conn = null;
  7368. try
  7369. {
  7370. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7371. conn.Open();
  7372. //string sqlString = "select gdd.barcode,\n" +
  7373. //" gdd.goodscode,\n" +
  7374. //" gdd.GroutingDate,\n" +
  7375. //" gdd.usercode GroutingUserCode,\n" +
  7376. //" gdd.GroutingMouldCode,\n" +
  7377. //" u.usercode checkusercode,\n" +
  7378. //" qa.ProcedureName,\n" +
  7379. //" qa.checktime,\n" +
  7380. //" qa.remarks,\n" +
  7381. //" inpp.procedurename currprocedurename,\n" +
  7382. //" listagg(decode(d.productiondefectid,\n" +
  7383. //" null,\n" +
  7384. //" null,\n" +
  7385. //" '[' || to_char(d.defectcode) || ']' ||\n" +
  7386. //" to_char(d.defectname)),\n" +
  7387. //" ',') WITHIN GROUP(ORDER BY d.productiondefectid) defectcodes,\n" +
  7388. //" (select listagg('[' || to_char(dd.defectcode) || ']' ||\n" +
  7389. //" to_char(dd.defectname),\n" +
  7390. //" ',') WITHIN GROUP(ORDER BY dd.productiondefectid)\n" +
  7391. //" from tp_pm_defect dd\n" +
  7392. //" where dd.valueflag = '1'\n" +
  7393. //" and dd.barcode = gdd.barcode) ddefectcode\n" +
  7394. //" from TP_PM_QASPOTCHECK qa\n" +
  7395. //" inner join tp_mst_user u\n" +
  7396. //" on u.userid = qa.createuserid\n" +
  7397. //" inner join tp_pm_groutingdailydetail gdd\n" +
  7398. //" on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
  7399. //" left join tp_pm_inproduction inp\n" +
  7400. //" on inp.barcode = gdd.barcode\n" +
  7401. //" left join tp_pc_procedure inpp\n" +
  7402. //" on inp.procedureid = inpp.procedureid\n" +
  7403. //" left join tp_pm_defect d\n" +
  7404. //" on d.barcode = gdd.barcode\n" +
  7405. //" and d.valueflag = '1'\n" +
  7406. //" where qa.valueflag = '1'\n" +
  7407. //" group by gdd.barcode,\n" +
  7408. //" gdd.goodscode,\n" +
  7409. //" gdd.GroutingDate,\n" +
  7410. //" gdd.usercode,\n" +
  7411. //" gdd.GroutingMouldCode,\n" +
  7412. //" u.usercode,\n" +
  7413. //" qa.ProcedureName,\n" +
  7414. //" qa.checktime,\n" +
  7415. //" qa.remarks,\n" +
  7416. //" inpp.procedurename";
  7417. string sqlString = "select gdd.barcode\n" +
  7418. " ,gdd.goodscode\n" +
  7419. " ,gdd.GroutingDate\n" +
  7420. " ,gdd.usercode GroutingUserCode\n" +
  7421. " ,gdd.GroutingMouldCode\n" +
  7422. " ,u.usercode checkusercode\n" +
  7423. " ,qa.ProcedureName\n" +
  7424. " ,qa.checktime\n" +
  7425. " ,qa.remarks\n" +
  7426. " ,inpp.procedurename currprocedurename\n" +
  7427. " ,(select listagg('[' || to_char(dd.defectcode) || ']' ||\n" +
  7428. " to_char(dd.defectname),\n" +
  7429. " ',') WITHIN GROUP(ORDER BY dd.productiondefectid)\n" +
  7430. " from tp_pm_defect dd\n" +
  7431. " where dd.valueflag = '1'\n" +
  7432. " and dd.barcode = gdd.barcode) ddefectcode\n" +
  7433. " from TP_PM_QASPOTCHECK qa\n" +
  7434. " inner join tp_pm_groutingdailydetail gdd\n" +
  7435. " on qa.groutingdailydetailid = gdd.groutingdailydetailid\n" +
  7436. " inner join tp_mst_user u\n" +
  7437. " on u.userid = qa.createuserid\n" +
  7438. " left join tp_pm_inproduction inp\n" +
  7439. " on inp.barcode = gdd.barcode\n" +
  7440. " left join tp_pc_procedure inpp\n" +
  7441. " on inp.procedureid = inpp.procedureid\n" +
  7442. " where qa.valueflag = '1'\n";
  7443. List<OracleParameter> paras = new List<OracleParameter>();
  7444. if (!string.IsNullOrEmpty(cre.Properties["barcode"] + ""))
  7445. {
  7446. sqlString += " and instr(gdd.barcode, :barcode) > 0\n";
  7447. paras.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, cre.Properties["barcode"], ParameterDirection.Input));
  7448. }
  7449. if (!string.IsNullOrEmpty(cre.Properties["goodscode"] + ""))
  7450. {
  7451. sqlString += " and instr(gdd.goodscode, :goodscode) > 0\n";
  7452. paras.Add(new OracleParameter(":goodscode", OracleDbType.NVarchar2, cre.Properties["goodscode"], ParameterDirection.Input));
  7453. }
  7454. if (!string.IsNullOrEmpty(cre.Properties["usercode"] + ""))
  7455. {
  7456. sqlString += " and instr(u.usercode, :usercode) > 0\n";
  7457. paras.Add(new OracleParameter(":usercode", OracleDbType.NVarchar2, cre.Properties["usercode"], ParameterDirection.Input));
  7458. }
  7459. if (!string.IsNullOrEmpty(cre.Properties["remarks"] + ""))
  7460. {
  7461. sqlString += " and instr(qa.remarks, :remarks) > 0\n";
  7462. paras.Add(new OracleParameter(":remarks", OracleDbType.NVarchar2, cre.Properties["remarks"], ParameterDirection.Input));
  7463. }
  7464. if (cre.Properties["checktimebegin"] != null)
  7465. {
  7466. sqlString += " and qa.checktime >= :checktimebegin\n";
  7467. paras.Add(new OracleParameter(":checktimebegin", OracleDbType.Date, cre.Properties["checktimebegin"], ParameterDirection.Input));
  7468. }
  7469. if (cre.Properties["checktimeend"] != null)
  7470. {
  7471. sqlString += " and qa.checktime < :checktimeend\n";
  7472. paras.Add(new OracleParameter(":checktimeend", OracleDbType.Date, cre.Properties["checktimeend"], ParameterDirection.Input));
  7473. }
  7474. sqlString += " ORDER BY gdd.barcode, qa.checktime ";
  7475. DataSet data = conn.GetSqlResultToDs(sqlString, paras.ToArray());
  7476. ServiceResultEntity sre = new ServiceResultEntity();
  7477. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7478. {
  7479. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7480. }
  7481. sre.Data = data;
  7482. return sre;
  7483. }
  7484. catch (Exception ex)
  7485. {
  7486. throw ex;
  7487. }
  7488. finally
  7489. {
  7490. if (conn != null &&
  7491. conn.ConnState == ConnectionState.Open)
  7492. {
  7493. conn.Close();
  7494. }
  7495. }
  7496. }
  7497. #endregion
  7498. #region 成品装车(潮州需求【废弃】)
  7499. /*
  7500. /// <summary>
  7501. /// 获取当天装车号
  7502. /// </summary>
  7503. /// <param name="user"></param>
  7504. /// <returns></returns>
  7505. public static int GetMaxLoadingNo(SUserInfo user)
  7506. {
  7507. IDBConnection conn = null;
  7508. try
  7509. {
  7510. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7511. conn.Open();
  7512. string sqlString = "select nvl(max(fl.loadingno), 0) + 1\n" +
  7513. " from TP_PM_FINISHEDLOADING fl\n" +
  7514. " where fl.loadingdate = :loadingdate\n" +
  7515. " and fl.valueflag = '1'\n" +
  7516. " and fl.accountid = :accountid";
  7517. IDataParameter[] paras = new OracleParameter[]
  7518. {
  7519. new OracleParameter(":accountid", OracleDbType.Int32,user.AccountID, ParameterDirection.Input),
  7520. new OracleParameter(":loadingdate", OracleDbType.Date, DateTime.Now.Date, ParameterDirection.Input),
  7521. };
  7522. object maxno = conn.GetSqlResultToObj(sqlString, paras);
  7523. if (maxno == null || maxno == DBNull.Value)
  7524. {
  7525. return 1;
  7526. }
  7527. else
  7528. {
  7529. return Convert.ToInt32(maxno);
  7530. }
  7531. }
  7532. catch (Exception ex)
  7533. {
  7534. throw ex;
  7535. }
  7536. finally
  7537. {
  7538. if (conn != null &&
  7539. conn.ConnState == ConnectionState.Open)
  7540. {
  7541. conn.Close();
  7542. }
  7543. }
  7544. }
  7545. /// <summary>
  7546. /// 产成品装车条码验证
  7547. /// </summary>
  7548. /// <param name="barcode"></param>
  7549. /// <param name="sUserInfo"></param>
  7550. /// <returns></returns>
  7551. public static ServiceResultEntity CheckFinishedLaodingBarcode(SUserInfo sUserInfo, string barcode)
  7552. {
  7553. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7554. try
  7555. {
  7556. oracleConn.Open();
  7557. ServiceResultEntity resultEntity = new ServiceResultEntity();
  7558. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  7559. OracleParameter[] paras1 = new OracleParameter[]{
  7560. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  7561. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  7562. };
  7563. string gbarcode = oracleConn.GetSqlResultToObj(sqlString, paras1) + "";
  7564. if (string.IsNullOrWhiteSpace(gbarcode))
  7565. {
  7566. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7567. resultEntity.OtherStatus = -1;
  7568. resultEntity.Message = "此条码不存在";
  7569. return resultEntity;
  7570. }
  7571. // 1.判断产品是否在产成品表中
  7572. sqlString = @"select f.FINISHEDLOADBATCHNO from TP_PM_FinishedProduct f where f.BarCode=:BarCode";
  7573. OracleParameter[] paras = new OracleParameter[]{
  7574. new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input),
  7575. };
  7576. DataTable dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7577. string FINISHEDLOADBATCHNO = null;
  7578. if (dtResult != null && dtResult.Rows.Count > 0)
  7579. {
  7580. FINISHEDLOADBATCHNO = dtResult.Rows[0]["FINISHEDLOADBATCHNO"].ToString();
  7581. }
  7582. else
  7583. {
  7584. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7585. resultEntity.OtherStatus = -1;
  7586. resultEntity.Message = "此产品没有交接";
  7587. return resultEntity;
  7588. }
  7589. sqlString = "select 1\n" +
  7590. " from TP_PM_FPLoadingDetail fpld\n" +
  7591. " where fpld.finishedloadbatchno = :fbatchno\n" +
  7592. " and rownum = 1";
  7593. paras = new OracleParameter[]{
  7594. new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
  7595. };
  7596. string exists = oracleConn.GetSqlResultToObj(sqlString, paras)+"";
  7597. if (!string.IsNullOrEmpty(exists))
  7598. {
  7599. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7600. resultEntity.OtherStatus = -1;
  7601. resultEntity.Message = "此产品已装车";
  7602. return resultEntity;
  7603. }
  7604. #region 查询产品相关信息
  7605. sqlString = "select ss.settingvalue\n" +
  7606. " from tp_mst_systemsetting ss\n" +
  7607. " where ss.settingcode = 'S_PM_025'\n" +
  7608. " and ss.accountid = :accountid";
  7609. paras = new OracleParameter[]{
  7610. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  7611. };
  7612. exists = oracleConn.GetSqlResultToObj(sqlString, paras) + "";
  7613. if (string.IsNullOrWhiteSpace(exists))
  7614. {
  7615. exists = "0";
  7616. }
  7617. sqlString = "select "+ exists + " limitnum, :barcode barcode, :fbatchno fbatchno, to_char(sum(cc)) sumcount\n" +
  7618. " ,listagg(to_char(t.goodscode) || '[' || to_char(cc) || ']', ', ') within group(order by t.goodscode) dd\n" +
  7619. " from (select count(*) cc, fp.goodscode\n" +
  7620. " from tp_pm_finishedproduct fp\n" +
  7621. " where fp.finishedloadbatchno =:fbatchno\n" +
  7622. " group by fp.finishedloadbatchno, fp.goodscode) t";
  7623. paras = new OracleParameter[]{
  7624. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  7625. new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
  7626. };
  7627. dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7628. if (dtResult != null && dtResult.Rows.Count > 0)
  7629. {
  7630. resultEntity.Data = new DataSet("ds");
  7631. resultEntity.Data.Tables.Add(dtResult);
  7632. sqlString = "select fp.barcode, fp.groutingdailydetailid, :fbatchno fbatchno\n" +
  7633. " from tp_pm_finishedproduct fp\n" +
  7634. " where fp.finishedloadbatchno = :fbatchno";
  7635. paras = new OracleParameter[]{
  7636. new OracleParameter(":fbatchno",OracleDbType.NVarchar2,FINISHEDLOADBATCHNO,ParameterDirection.Input),
  7637. };
  7638. dtResult = oracleConn.GetSqlResultToDt(sqlString, paras);
  7639. resultEntity.Data.Tables.Add(dtResult);
  7640. }
  7641. else
  7642. {
  7643. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7644. resultEntity.OtherStatus = -1;
  7645. resultEntity.Message = "此条码不存在";
  7646. return resultEntity;
  7647. }
  7648. #endregion
  7649. return resultEntity;
  7650. }
  7651. catch (Exception ex)
  7652. {
  7653. throw ex;
  7654. }
  7655. finally
  7656. {
  7657. if (oracleConn.ConnState == ConnectionState.Open)
  7658. {
  7659. oracleConn.Close();
  7660. }
  7661. }
  7662. }
  7663. /// <summary>
  7664. /// 产成品装车-保存
  7665. /// </summary>
  7666. /// <param name="barcode"></param>
  7667. /// <param name="sUserInfo"></param>
  7668. /// <returns></returns>
  7669. public static ServiceResultEntity SaveFinishedLoading(SUserInfo sUserInfo, int loadingNo,
  7670. string carLicense, int palletNum, int goodsNum, string remarks, Dictionary<string, object>[] details)
  7671. {
  7672. IDBTransaction oracleConn = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7673. try
  7674. {
  7675. oracleConn.Connect();
  7676. ServiceResultEntity resultEntity = new ServiceResultEntity();
  7677. DateTime date = DateTime.Now.Date;
  7678. // 1 验证 LoadingNo
  7679. string sqlString = "select 1\n" +
  7680. " from TP_PM_FinishedLoading fl\n" +
  7681. " where fl.loadingdate = :loadingdate\n" +
  7682. " and fl.loadingno = :loadingno\n" +
  7683. " and fl.AccountID = :AccountID\n" +
  7684. " and rownum = 1";
  7685. OracleParameter[] paras = new OracleParameter[]{
  7686. new OracleParameter(":loadingdate",OracleDbType.Date, date,ParameterDirection.Input),
  7687. new OracleParameter(":loadingno",OracleDbType.Int32, loadingNo,ParameterDirection.Input),
  7688. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  7689. };
  7690. string exists = oracleConn.GetSqlResultToObj(sqlString, paras) + "";
  7691. if (!string.IsNullOrEmpty(exists))
  7692. {
  7693. resultEntity.Status = Constant.ServiceResultStatus.Other;
  7694. resultEntity.OtherStatus = -1;
  7695. resultEntity.Message = "今天此装车序号已存在";
  7696. return resultEntity;
  7697. }
  7698. // 2 保存
  7699. sqlString = @"select SEQ_PM_FinishedLoading_ID.Nextval From DUAL";
  7700. int loadingID = Convert.ToInt32(oracleConn.GetSqlResultToObj(sqlString));
  7701. sqlString = "insert into TP_PM_FinishedLoading\n" +
  7702. " (LOADINGID\n" +
  7703. " ,LOADINGDATE\n" +
  7704. " ,LOADINGNO\n" +
  7705. " ,CARLICENSE\n" +
  7706. " ,PALLETNUM\n" +
  7707. " ,GOODSNUM\n" +
  7708. " ,REMARKS\n" +
  7709. " ,ACCOUNTID\n" +
  7710. " ,CREATEUSERID)\n" +
  7711. "values\n" +
  7712. " (:LOADINGID\n" +
  7713. " ,:LOADINGDATE\n" +
  7714. " ,:LOADINGNO\n" +
  7715. " ,:CARLICENSE\n" +
  7716. " ,:PALLETNUM\n" +
  7717. " ,:GOODSNUM\n" +
  7718. " ,:REMARKS\n" +
  7719. " ,:ACCOUNTID\n" +
  7720. " ,:CREATEUSERID)";
  7721. paras = new OracleParameter[]{
  7722. new OracleParameter(":LOADINGID",OracleDbType.Int32, loadingID,ParameterDirection.Input),
  7723. new OracleParameter(":LOADINGDATE",OracleDbType.Date, date,ParameterDirection.Input),
  7724. new OracleParameter(":LOADINGNO",OracleDbType.Int32, loadingNo,ParameterDirection.Input),
  7725. new OracleParameter(":CARLICENSE",OracleDbType.Varchar2, carLicense,ParameterDirection.Input),
  7726. new OracleParameter(":PALLETNUM",OracleDbType.Int32, palletNum,ParameterDirection.Input),
  7727. new OracleParameter(":GOODSNUM",OracleDbType.Int32, goodsNum,ParameterDirection.Input),
  7728. new OracleParameter(":REMARKS",OracleDbType.NVarchar2, remarks,ParameterDirection.Input),
  7729. new OracleParameter(":ACCOUNTID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  7730. new OracleParameter(":CREATEUSERID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  7731. };
  7732. int r = oracleConn.ExecuteNonQuery(sqlString, paras);
  7733. sqlString = "insert into TP_PM_FPLoadingDetail\n" +
  7734. " (LOADINGID, GROUTINGDAILYDETAILID, FINISHEDLOADBATCHNO)\n" +
  7735. "values\n" +
  7736. " (:LOADINGID, :GROUTINGDAILYDETAILID, :FINISHEDLOADBATCHNO)";
  7737. foreach (Dictionary<string, object> item in details)
  7738. {
  7739. paras = new OracleParameter[]{
  7740. new OracleParameter(":LOADINGID",OracleDbType.Int32, loadingID,ParameterDirection.Input),
  7741. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32, item["groutingdailydetailid"],ParameterDirection.Input),
  7742. new OracleParameter(":FINISHEDLOADBATCHNO",OracleDbType.Varchar2, item["fbatchno"],ParameterDirection.Input),
  7743. };
  7744. r = oracleConn.ExecuteNonQuery(sqlString, paras);
  7745. }
  7746. oracleConn.Commit();
  7747. return resultEntity;
  7748. }
  7749. catch (Exception ex)
  7750. {
  7751. throw ex;
  7752. }
  7753. finally
  7754. {
  7755. if (oracleConn.ConnState == ConnectionState.Open)
  7756. {
  7757. oracleConn.Disconnect();
  7758. }
  7759. }
  7760. }
  7761. */
  7762. #endregion
  7763. #region 半检返修登记
  7764. /// <summary>
  7765. /// 获取半检返修登记列表
  7766. /// </summary>
  7767. /// <returns></returns>
  7768. public static ServiceResultEntity GetSemiRework(ClientRequestEntity cre, SUserInfo userInfo)
  7769. {
  7770. IDBConnection conn = null;
  7771. try
  7772. {
  7773. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7774. conn.Open();
  7775. string sqlString = "select sr.SemiReworkID\n" +
  7776. " ,sr.BarCode\n" +
  7777. " ,sr.ProductionLineID\n" +
  7778. " ,sr.ProcedureID\n" +
  7779. " ,p.procedurename\n" +
  7780. " ,sr.ProcedureTime\n" +
  7781. " ,sr.GoodsID\n" +
  7782. " ,sr.GoodsCode\n" +
  7783. " ,sr.UserID --完成工号ID\n" +
  7784. " ,sr.UserCode\n" +
  7785. " ,sr.ProductionDataID\n" +
  7786. " ,sr.GroutingDailyID\n" +
  7787. " ,sr.GroutingDailyDetailID\n" +
  7788. " ,sr.GroutingLineID\n" +
  7789. " ,sr.GroutingLineCode\n" +
  7790. " ,sr.GroutingLineDetailID\n" +
  7791. " ,sr.GroutingDate\n" +
  7792. " ,sr.GroutingMouldCode\n" +
  7793. " ,sr.GroutingUserID\n" +
  7794. " ,sr.GroutingUserCode\n" +
  7795. " ,sr.SemiReworkUserID\n" +
  7796. " ,sr.SemiReworkUserCode\n" +
  7797. " ,sr.SemiReworkTime\n" +
  7798. " ,sr.ReworkProcedureID\n" +
  7799. " ,rp.procedurename ReworkProcedurename\n" +
  7800. " ,sr.BackOutFlag\n" +
  7801. " ,sr.BackOutTime\n" +
  7802. " ,sr.BackOutUserID\n" +
  7803. " ,sr.BackOutUserCode\n" +
  7804. " ,sr.Remarks\n" +
  7805. " from TP_PM_SemiRework sr\n" +
  7806. " inner join tp_pc_procedure p\n" +
  7807. " on p.procedureid = sr.procedureid\n" +
  7808. " inner join tp_pc_procedure rp\n" +
  7809. " on rp.procedureid = sr.reworkprocedureid" +
  7810. " where sr.accountID = :accountID" +
  7811. " and sr.valueflag = '1'" +
  7812. // todo 其他查询条件
  7813. " order by sr.SemiReworkID desc";
  7814. IDataParameter[] paras = new OracleParameter[]
  7815. {
  7816. new OracleParameter(":accountID", OracleDbType.Int32,userInfo.AccountID, ParameterDirection.Input),
  7817. };
  7818. ServiceResultEntity sre = new ServiceResultEntity();
  7819. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7820. if (data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count == 0)
  7821. {
  7822. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  7823. return sre;
  7824. }
  7825. data.Tables[0].TableName = "SemiRework";
  7826. sre.Data = data;
  7827. int semiReworkID = Convert.ToInt32(data.Tables[0].Rows[0]["SemiReworkID"]);
  7828. ServiceResultEntity sre1 = GetSemiReworkDefect(semiReworkID, userInfo, conn);
  7829. if (sre1.Data == null || sre1.Data.Tables.Count == 0 || sre1.Data.Tables[0].Rows.Count == 0)
  7830. {
  7831. return sre;
  7832. }
  7833. sre1.Data.Tables[0].TableName = "SemiReworkDefect";
  7834. sre.Data.Merge(sre1.Data.Tables[0]);
  7835. return sre;
  7836. }
  7837. catch (Exception ex)
  7838. {
  7839. throw ex;
  7840. }
  7841. finally
  7842. {
  7843. if (conn != null &&
  7844. conn.ConnState == ConnectionState.Open)
  7845. {
  7846. conn.Close();
  7847. }
  7848. }
  7849. }
  7850. /// <summary>
  7851. /// 获取半检返修登记列表
  7852. /// </summary>
  7853. /// <returns></returns>
  7854. public static ServiceResultEntity GetSemiReworkDefect(int semiReworkID, SUserInfo userInfo, IDBConnection conn = null)
  7855. {
  7856. try
  7857. {
  7858. if (conn == null)
  7859. {
  7860. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7861. conn.Open();
  7862. }
  7863. string sqlString = "select srd.SemiReworkDefectID\n" +
  7864. " ,srd.SemiReworkID\n" +
  7865. " ,srd.DefectID\n" +
  7866. " ,srd.DefectCode\n" +
  7867. " ,srd.DefectName\n" +
  7868. " ,srd.DefectPositionID\n" +
  7869. " ,srd.DefectPositionCode\n" +
  7870. " ,srd.DefectPositionName\n" +
  7871. " ,srd.ScrapResponFlag\n" +
  7872. " ,srd.DefectProductionDataID\n" +
  7873. " ,srd.DefectProcedureID\n" +
  7874. " ,p.procedurename DefectProcedureName\n" +
  7875. " ,srd.DefectUserID\n" +
  7876. " ,srd.DefectUserCode\n" +
  7877. " ,srd.Remarks\n" +
  7878. " from TP_PM_SemiReworkDefect srd\n" +
  7879. " inner join tp_pc_procedure p\n" +
  7880. " on p.procedureid = srd.DefectProcedureID\n" +
  7881. " where srd.accountID = :accountID" +
  7882. " and srd.valueflag = '1'" +
  7883. " and srd.SemiReworkID = :SemiReworkID" +
  7884. " order by srd.DefectID";
  7885. IDataParameter[] paras = new OracleParameter[]
  7886. {
  7887. new OracleParameter(":accountID", OracleDbType.Int32,userInfo.AccountID, ParameterDirection.Input),
  7888. new OracleParameter(":SemiReworkID", OracleDbType.Int32,semiReworkID, ParameterDirection.Input),
  7889. };
  7890. DataSet data = conn.GetSqlResultToDs(sqlString, paras);
  7891. ServiceResultEntity sre = new ServiceResultEntity();
  7892. sre.Data = data;
  7893. return sre;
  7894. }
  7895. catch (Exception ex)
  7896. {
  7897. throw ex;
  7898. }
  7899. finally
  7900. {
  7901. if (conn != null &&
  7902. conn.ConnState == ConnectionState.Open)
  7903. {
  7904. conn.Close();
  7905. }
  7906. }
  7907. }
  7908. /// <summary>
  7909. /// 获取登陆帐户有无修改半检返修权限
  7910. /// </summary>
  7911. /// <returns></returns>
  7912. public static int GetSemiReworkEditFuntion(SUserInfo userInfo)
  7913. {
  7914. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7915. try
  7916. {
  7917. con.Open();
  7918. string strSql = "";
  7919. strSql = @"SELECT r.FunctionCode FROM TP_MST_UserRight R WHERE r.FunctionCode='06200104' AND R.UserID = " + userInfo.UserID;
  7920. DataSet ds = con.GetSqlResultToDs(strSql);
  7921. if (ds != null && ds.Tables[0].Rows.Count > 0)
  7922. {
  7923. return 1;
  7924. }
  7925. return 0;
  7926. }
  7927. catch (Exception ex)
  7928. {
  7929. throw ex;
  7930. }
  7931. finally
  7932. {
  7933. if (con.ConnState == ConnectionState.Open)
  7934. {
  7935. con.Close();
  7936. }
  7937. }
  7938. }
  7939. /// <summary>
  7940. /// 验证半检返修条码
  7941. /// </summary>
  7942. /// <param name="barcode">产品条码</param>
  7943. /// <returns></returns>
  7944. public static ServiceResultEntity CheckSemiReworkBarcode(string barcode)
  7945. {
  7946. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  7947. try
  7948. {
  7949. oracleConn.Open();
  7950. ServiceResultEntity resultEntity = new ServiceResultEntity();
  7951. // 1.判断产品是否在产
  7952. string sql = @"select
  7953. InScrapFlag,
  7954. KilnCarID,
  7955. KilnCarName,
  7956. IsReworkFlag,
  7957. SemiCheckID
  7958. from TP_PM_InProduction
  7959. where BarCode=:BarCode";
  7960. OracleParameter[] paras = new OracleParameter[]{
  7961. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  7962. };
  7963. DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras);
  7964. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  7965. {
  7966. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  7967. {
  7968. resultEntity.Result = -2; //报损待审批
  7969. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  7970. return resultEntity;
  7971. }
  7972. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  7973. {
  7974. resultEntity.Result = -3; //登窑车后不允许半成品检测
  7975. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]";
  7976. return resultEntity;
  7977. }
  7978. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  7979. {
  7980. resultEntity.Result = -4; //半检返工
  7981. resultEntity.Message = "条码[" + barcode + "]已半检返工";
  7982. return resultEntity;
  7983. }
  7984. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  7985. {
  7986. resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);//编辑状态
  7987. resultEntity.Message = "返修";
  7988. }
  7989. else
  7990. {
  7991. resultEntity.Result = "0";//新建状态
  7992. }
  7993. }
  7994. else
  7995. {
  7996. resultEntity.Result = -1;// 不在在产表中
  7997. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  7998. }
  7999. return resultEntity;
  8000. }
  8001. catch (Exception ex)
  8002. {
  8003. throw ex;
  8004. }
  8005. finally
  8006. {
  8007. if (oracleConn.ConnState == ConnectionState.Open)
  8008. {
  8009. oracleConn.Close();
  8010. }
  8011. }
  8012. }
  8013. /// <summary>
  8014. /// 根据半成品检验数据ID,显示半成品数据信息
  8015. /// </summary>
  8016. /// <param name="semiCheckID">半成品数据ID</param>
  8017. /// <returns>DataSet</returns>
  8018. public static ServiceResultEntity GetSemiReworkByID(int semiReworkID,string userCode = "")
  8019. {
  8020. IDBConnection conn = null;
  8021. try
  8022. {
  8023. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8024. conn.Open();
  8025. string sqlString = "select sr.SemiReworkID\n" +
  8026. " ,sr.BarCode\n" +
  8027. " ,sr.ProductionLineID\n" +
  8028. " ,sr.ProcedureID\n" +
  8029. " ,p.procedurename\n" +
  8030. " ,sr.ProcedureTime\n" +
  8031. " ,sr.GoodsID\n" +
  8032. " ,sr.GoodsCode\n" +
  8033. " ,sr.UserID --完成工号ID\n" +
  8034. " ,sr.UserCode\n" +
  8035. " ,sr.ProductionDataID\n" +
  8036. " ,sr.GroutingDailyID\n" +
  8037. " ,sr.GroutingDailyDetailID\n" +
  8038. " ,sr.GroutingLineID\n" +
  8039. " ,sr.GroutingLineCode\n" +
  8040. " ,sr.GroutingLineDetailID\n" +
  8041. " ,sr.GroutingDate\n" +
  8042. " ,sr.GroutingMouldCode\n" +
  8043. " ,sr.GroutingUserID\n" +
  8044. " ,sr.GroutingUserCode\n" +
  8045. " ,sr.SemiReworkUserID\n" +
  8046. " ,sr.SemiReworkUserCode\n" +
  8047. " ,sr.SemiReworkTime\n" +
  8048. " ,sr.ReworkProcedureID\n" +
  8049. " ,rp.procedurename ReworkProcedurename\n" +
  8050. " ,sr.BackOutFlag\n" +
  8051. " ,sr.BackOutTime\n" +
  8052. " ,sr.BackOutUserID\n" +
  8053. " ,sr.BackOutUserCode\n" +
  8054. " ,sr.Remarks\n" +
  8055. " from TP_PM_SemiRework sr\n" +
  8056. " inner join tp_pc_procedure p\n" +
  8057. " on p.procedureid = sr.procedureid\n" +
  8058. " left join tp_pc_procedure rp\n" +
  8059. " on rp.procedureid = sr.reworkprocedureid" +
  8060. " where sr.SemiReworkID = :SemiReworkID";
  8061. string sqlString1 = "select srd.SemiReworkDefectID\n" +
  8062. " ,srd.SemiReworkID\n" +
  8063. " ,srd.DefectID\n" +
  8064. " ,srd.DefectCode\n" +
  8065. " ,srd.DefectName\n" +
  8066. " ,srd.DefectPositionID\n" +
  8067. " ,srd.DefectPositionCode\n" +
  8068. " ,srd.DefectPositionName\n" +
  8069. " ,srd.ScrapResponFlag\n" +
  8070. " ,srd.DefectProductionDataID\n" +
  8071. " ,srd.DefectProcedureID\n" +
  8072. " ,p.procedurecode DefectProcedureCode\n" +
  8073. " ,p.procedurename DefectProcedureName\n" +
  8074. " ,srd.DefectUserID\n" +
  8075. " ,du.username DefectUserName\n" +
  8076. " ,srd.DefectUserCode\n" +
  8077. " ,srd.Remarks\n" +
  8078. " ,srd.ValueFlag\n" + //xuwei add 2019-11-14 为 1 时可编辑 为 0 时不可编辑
  8079. " from TP_PM_SemiReworkDefect srd\n" +
  8080. " left join tp_pc_procedure p\n" +
  8081. " on p.procedureid = srd.DefectProcedureID\n" +
  8082. " inner join tp_mst_user du\n" +
  8083. " on du.userid = srd.DefectUserID\n" +
  8084. " where srd.SemiReworkID = :SemiReworkID" +
  8085. " order by srd.SemiReworkDefectID";
  8086. string sqlString2 = "select t.SemiReworkDefectID\n" +
  8087. " ,t.StaffID\n" +
  8088. " ,t.SemiReworkID\n" +
  8089. " ,t.UserID\n" +
  8090. " ,t.UserCode\n" +
  8091. " ,t.UJobsID\n" +
  8092. " ,t.SJobsID\n" +
  8093. " ,s.staffcode\n" +
  8094. " ,s.staffname\n" +
  8095. " from TP_PM_SemiReworkRPS t\n" +
  8096. " inner join tp_hr_staff s\n" +
  8097. " on s.staffid = t.staffid\n" +
  8098. " where t.valueflag = '1'" +
  8099. " and t.SemiReworkID = :SemiReworkID" +
  8100. " order by t.semireworkdefectid, s.staffcode";
  8101. IDataParameter[] paras = new OracleParameter[]
  8102. {
  8103. new OracleParameter(":SemiReworkID", OracleDbType.Int32,semiReworkID, ParameterDirection.Input),
  8104. };
  8105. ServiceResultEntity sre = new ServiceResultEntity();
  8106. DataTable data = conn.GetSqlResultToDt(sqlString, paras);
  8107. data.TableName = "SemiRework";
  8108. DataTable data1 = conn.GetSqlResultToDt(sqlString1, paras);
  8109. data1.TableName = "SemiReworkDefect";
  8110. DataTable data2 = conn.GetSqlResultToDt(sqlString2, paras);
  8111. data2.TableName = "SemiReworkRPS";
  8112. //xuwei add 2019-11-14 验证并重置valueflag,确定是否可编辑
  8113. if(userCode!="")
  8114. {
  8115. for(int i=0;i<data1.Rows.Count;i++)
  8116. {
  8117. //半检工号等于当前工号 并且 有效标识为1的 将 valueflag 置 1 是可编辑记录
  8118. if (data.Rows[0]["SemiReworkUserCode"].ToString() == userCode
  8119. && data1.Rows[i]["ValueFlag"].ToString() == "1")
  8120. data1.Rows[i]["ValueFlag"] = '1';
  8121. else
  8122. data1.Rows[i]["ValueFlag"] = '0';
  8123. }
  8124. }
  8125. else
  8126. {
  8127. for (int i = 0; i < data1.Rows.Count; i++)
  8128. {
  8129. //缺省半检工号 全部将 valueflag 置 0 不可编辑
  8130. data1.Rows[i]["ValueFlag"] = '0';
  8131. }
  8132. }
  8133. //xuwei end
  8134. sre.Data = new DataSet();
  8135. sre.Data.Tables.Add(data);
  8136. sre.Data.Tables.Add(data1);
  8137. sre.Data.Tables.Add(data2);
  8138. return sre;
  8139. }
  8140. catch (Exception ex)
  8141. {
  8142. throw ex;
  8143. }
  8144. finally
  8145. {
  8146. if (conn.ConnState == ConnectionState.Open)
  8147. {
  8148. conn.Close();
  8149. }
  8150. }
  8151. }
  8152. /// <summary>
  8153. /// 可以返修的工序
  8154. /// </summary>
  8155. /// <param name="barcode"></param>
  8156. /// <param name="userInfo"></param>
  8157. /// <returns></returns>
  8158. public static ServiceResultEntity GetSemiReworkProcedure(string barcode, SUserInfo userInfo)
  8159. {
  8160. IDBConnection conn = null;
  8161. try
  8162. {
  8163. conn = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8164. conn.Open();
  8165. string sqlString = "select p.procedureid, p.procedurecode, p.procedurename\n" +
  8166. " from tp_pm_inproduction t\n" +
  8167. " inner join tp_pc_procedure p\n" +
  8168. " on p.productionlineid = t.productionlineid\n" +
  8169. " and p.ISSEMIREWORK = '1'\n" +
  8170. " where t.barcode = :barcode";
  8171. IDataParameter[] paras = new OracleParameter[]
  8172. {
  8173. new OracleParameter(":barcode", OracleDbType.NVarchar2,barcode, ParameterDirection.Input),
  8174. };
  8175. ServiceResultEntity sre = new ServiceResultEntity();
  8176. sre.Data = conn.GetSqlResultToDs(sqlString, paras);
  8177. return sre;
  8178. }
  8179. catch (Exception ex)
  8180. {
  8181. throw ex;
  8182. }
  8183. finally
  8184. {
  8185. if (conn.ConnState == ConnectionState.Open)
  8186. {
  8187. conn.Close();
  8188. }
  8189. }
  8190. }
  8191. /// <summary>
  8192. /// 根据条码获取经过的工序,用于责任工序
  8193. /// </summary>
  8194. /// <param name="barcode">产品条码</param>
  8195. /// <returns>DataSet</returns>
  8196. public static ServiceResultEntity GetSemiReworkPassProcedure(string barcode)
  8197. {
  8198. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8199. try
  8200. {
  8201. con.Open();
  8202. string sqlString = "select pin.Barcode\n" +
  8203. " ,pin.UserID\n" +
  8204. " ,pin.UserCode\n" +
  8205. " ,pin.UserName\n" +
  8206. " ,pin.ProcedureID\n" +
  8207. " ,pin.ProcedureCode\n" +
  8208. " ,pin.ProcedureName\n" +
  8209. " ,pin.ProductionDataID\n" +
  8210. " from TP_PM_ProductionDataIn pin\n" +
  8211. " where pin.valueflag = '1'\n" +
  8212. " and pin.barcode = :BarCode\n" +
  8213. " order by pin.ProductionDataID";
  8214. // 干补后 半检 不能选成型责任
  8215. OracleParameter[] paras = new OracleParameter[]{
  8216. new OracleParameter(":BarCode",OracleDbType.NVarchar2, barcode,ParameterDirection.Input),
  8217. };
  8218. ServiceResultEntity sre = new ServiceResultEntity();
  8219. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  8220. return sre;
  8221. }
  8222. catch (Exception ex)
  8223. {
  8224. throw ex;
  8225. }
  8226. finally
  8227. {
  8228. if (con.ConnState == ConnectionState.Open)
  8229. {
  8230. con.Close();
  8231. }
  8232. }
  8233. }
  8234. /// <summary>
  8235. /// 根据所选生产工序(生产数据ID)查询责任员工
  8236. /// </summary>
  8237. /// <param name="productionDataID"></param>
  8238. /// <returns></returns>
  8239. public static ServiceResultEntity GetSemiReworkDefectStaffByProductionDataID(int productionDataID)
  8240. {
  8241. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8242. try
  8243. {
  8244. con.Open();
  8245. string sqlString = "select cd.StaffID\n" +
  8246. " ,s.StaffCode\n" +
  8247. " ,s.staffname\n" +
  8248. " ,cd.staffstatus\n" +
  8249. " ,cd.UJobsID\n" +
  8250. " ,cd.SJobsID\n" +
  8251. " from tp_pm_productiondatain pd\n" +
  8252. //"--inner join tp_pc_classessetting c on c.classessettingid = pd.classessettingid\n" +
  8253. " inner join tp_pc_classesdetail cd\n" +
  8254. " on cd.classessettingid = pd.classessettingid\n" +
  8255. " inner join TP_HR_Staff s\n" +
  8256. " on s.staffid = cd.staffid\n" +
  8257. " where pd.productiondataid = :productionDataID\n" +
  8258. " order by s.StaffCode";
  8259. OracleParameter[] paras = new OracleParameter[]{
  8260. new OracleParameter(":productionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  8261. };
  8262. ServiceResultEntity se = new ServiceResultEntity();
  8263. se.Data = con.GetSqlResultToDs(sqlString, paras);
  8264. return se;
  8265. }
  8266. catch (Exception ex)
  8267. {
  8268. throw ex;
  8269. }
  8270. finally
  8271. {
  8272. if (con.ConnState == ConnectionState.Open)
  8273. {
  8274. con.Close();
  8275. }
  8276. }
  8277. }
  8278. /// <summary>
  8279. /// 根据所选工号,查出缺陷责任员工
  8280. /// </summary>
  8281. /// <param name="userid">用户ID</param>
  8282. /// <returns>DataSet</returns>
  8283. public static ServiceResultEntity GetSemiReworkDefectStaffByUserID(int userid)
  8284. {
  8285. IDBConnection con = ClsDbFactory.CreateDBConnection(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8286. try
  8287. {
  8288. con.Open();
  8289. string sqlString = "select s.StaffID\n" +
  8290. " ,s.StaffCode\n" +
  8291. " ,s.StaffName\n" +
  8292. " ,s.StaffStatus\n" +
  8293. " ,us.UJobsID\n" +
  8294. " ,s.jobs SJobsID\n" +
  8295. " from TP_MST_UserStaff us\n" +
  8296. " inner join TP_HR_Staff s\n" +
  8297. " on us.Staffid = s.Staffid\n" +
  8298. " where us.Userid = :userid";
  8299. OracleParameter[] paras = new OracleParameter[]{
  8300. new OracleParameter(":userid",OracleDbType.Int32, userid,ParameterDirection.Input),
  8301. };
  8302. ServiceResultEntity se = new ServiceResultEntity();
  8303. se.Data = con.GetSqlResultToDs(sqlString, paras);
  8304. return se;
  8305. }
  8306. catch (Exception ex)
  8307. {
  8308. throw ex;
  8309. }
  8310. finally
  8311. {
  8312. if (con.ConnState == ConnectionState.Open)
  8313. {
  8314. con.Close();
  8315. }
  8316. }
  8317. }
  8318. /// <summary>
  8319. /// 保存半检返修
  8320. /// </summary>
  8321. /// <param name="entity">半检实体类</param>
  8322. /// <param name="sUserInfo">用户基本信息</param>
  8323. /// <returns>ServiceResultEntity</returns>
  8324. /// <remarks>
  8325. /// 王鑫 2016.06.27 新建
  8326. /// </remarks>
  8327. public static ServiceResultEntity AddSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
  8328. {
  8329. IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8330. try
  8331. {
  8332. ServiceResultEntity resultEntity = new ServiceResultEntity();
  8333. resultEntity.Result = 1;
  8334. if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) ||
  8335. entityobj.SemiReworkDefects == null || entityobj.SemiReworkDefects.Count == 0)
  8336. {
  8337. resultEntity.Result = -1;
  8338. resultEntity.Message = "数据错误";
  8339. return resultEntity;
  8340. }
  8341. con.Connect();
  8342. string barcode = entityobj.BarCode;
  8343. #region 验证条码
  8344. // 1.判断产品是否在产
  8345. string sql = @"select p.*,u.usercode from TP_PM_InProduction p inner join tp_mst_user u on u.userid=p.userid where p.BarCode=:BarCode for update";
  8346. OracleParameter[] paras = new OracleParameter[]{
  8347. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8348. };
  8349. DataTable dsResult = con.GetSqlResultToDt(sql, paras);
  8350. if (dsResult == null || dsResult.Rows.Count == 0)
  8351. {
  8352. resultEntity.Result = -1;// 不在在产表中
  8353. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  8354. return resultEntity;
  8355. }
  8356. DataRow dataRow = dsResult.Rows[0];
  8357. if (dataRow["InScrapFlag"].ToString() == "1")
  8358. {
  8359. resultEntity.Result = -2; //报损待审批
  8360. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  8361. return resultEntity;
  8362. }
  8363. if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
  8364. {
  8365. resultEntity.Result = -3; //登窑车后不允许半成品检测
  8366. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
  8367. return resultEntity;
  8368. }
  8369. if (dataRow["IsReworkFlag"].ToString() == "1")
  8370. {
  8371. resultEntity.Result = -4; //半检返工
  8372. resultEntity.Message = "条码[" + barcode + "]已半检返工";
  8373. return resultEntity;
  8374. }
  8375. //xuwei modify 2019-11-14 允许多次半检
  8376. //if (dataRow["IsReworkFlag"].ToString() == "2")
  8377. //{
  8378. // resultEntity.Result = -5; //半检返修
  8379. // resultEntity.Message = "条码[" + barcode + "]已半检返修";
  8380. // return resultEntity;
  8381. //}
  8382. //xuwei end
  8383. #endregion
  8384. #region 保存数据
  8385. sql = "select SEQ_PM_SemiRework_ID.nextval from dual";
  8386. object srID = con.GetSqlResultToObj(sql);
  8387. // 返修
  8388. string sqlString = "insert into tp_pm_semirework\n" +
  8389. " (SEMIREWORKID\n" +
  8390. " ,BARCODE\n" +
  8391. " ,PRODUCTIONLINEID\n" +
  8392. " ,PROCEDUREID\n" +
  8393. " ,PROCEDURETIME\n" +
  8394. " ,GOODSID\n" +
  8395. " ,GOODSCODE\n" +
  8396. " ,USERID\n" +
  8397. " ,USERCODE\n" +
  8398. " ,PRODUCTIONDATAID\n" +
  8399. " ,GROUTINGDAILYID\n" +
  8400. " ,GROUTINGDAILYDETAILID\n" +
  8401. " ,GROUTINGLINEID\n" +
  8402. " ,GROUTINGLINECODE\n" +
  8403. " ,GROUTINGLINEDETAILID\n" +
  8404. " ,GROUTINGDATE\n" +
  8405. " ,GROUTINGMOULDCODE\n" +
  8406. " ,GROUTINGUSERID\n" +
  8407. " ,GROUTINGUSERCODE\n" +
  8408. " ,SEMIREWORKUSERID\n" +
  8409. " ,SEMIREWORKUSERCODE\n" +
  8410. " ,SEMIREWORKTIME\n" +
  8411. " ,REWORKPROCEDUREID\n" +
  8412. " ,REMARKS\n" +
  8413. " ,ACCOUNTID\n" +
  8414. " ,VALUEFLAG\n" +
  8415. " ,CREATEUSERID\n" +
  8416. " ,UPDATEUSERID)\n" +
  8417. "values\n" +
  8418. " (:SEMIREWORKID\n" +
  8419. " ,:BARCODE\n" +
  8420. " ,:PRODUCTIONLINEID\n" +
  8421. " ,:PROCEDUREID\n" +
  8422. " ,:PROCEDURETIME\n" +
  8423. " ,:GOODSID\n" +
  8424. " ,:GOODSCODE\n" +
  8425. " ,:USERID\n" +
  8426. " ,:USERCODE\n" +
  8427. " ,:PRODUCTIONDATAID\n" +
  8428. " ,:GROUTINGDAILYID\n" +
  8429. " ,:GROUTINGDAILYDETAILID\n" +
  8430. " ,:GROUTINGLINEID\n" +
  8431. " ,:GROUTINGLINECODE\n" +
  8432. " ,:GROUTINGLINEDETAILID\n" +
  8433. " ,:GROUTINGDATE\n" +
  8434. " ,:GROUTINGMOULDCODE\n" +
  8435. " ,:GROUTINGUSERID\n" +
  8436. " ,:GROUTINGUSERCODE\n" +
  8437. " ,:SEMIREWORKUSERID\n" +
  8438. " ,:SEMIREWORKUSERCODE\n" +
  8439. " ,sysdate\n" +
  8440. " ,:REWORKPROCEDUREID\n" +
  8441. " ,:REMARKS\n" +
  8442. " ,:ACCOUNTID\n" +
  8443. " ,'1'\n" +
  8444. " ,:CREATEUSERID\n" +
  8445. " ,:UPDATEUSERID)\n";
  8446. paras = new OracleParameter[]{
  8447. new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
  8448. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8449. new OracleParameter(":PRODUCTIONLINEID",OracleDbType.Int32,dataRow["PRODUCTIONLINEID"],ParameterDirection.Input),
  8450. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,dataRow["PROCEDUREID"],ParameterDirection.Input),
  8451. new OracleParameter(":PROCEDURETIME",OracleDbType.Date,dataRow["PROCEDURETIME"],ParameterDirection.Input),
  8452. new OracleParameter(":GOODSID",OracleDbType.Int32,dataRow["GOODSID"],ParameterDirection.Input),
  8453. new OracleParameter(":GOODSCODE",OracleDbType.NVarchar2,dataRow["GOODSCODE"],ParameterDirection.Input),
  8454. new OracleParameter(":USERID",OracleDbType.Int32,dataRow["USERID"],ParameterDirection.Input),
  8455. new OracleParameter(":USERCODE",OracleDbType.NVarchar2,dataRow["USERCODE"],ParameterDirection.Input),
  8456. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,dataRow["PRODUCTIONDATAID"],ParameterDirection.Input),
  8457. new OracleParameter(":GROUTINGDAILYID",OracleDbType.Int32,dataRow["GROUTINGDAILYID"],ParameterDirection.Input),
  8458. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,dataRow["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  8459. new OracleParameter(":GROUTINGLINEID",OracleDbType.Int32,dataRow["GROUTINGLINEID"],ParameterDirection.Input),
  8460. new OracleParameter(":GROUTINGLINECODE",OracleDbType.NVarchar2,dataRow["GROUTINGLINECODE"],ParameterDirection.Input),
  8461. new OracleParameter(":GROUTINGLINEDETAILID",OracleDbType.Int32,dataRow["GROUTINGLINEDETAILID"],ParameterDirection.Input),
  8462. new OracleParameter(":GROUTINGDATE",OracleDbType.Date,dataRow["GROUTINGDATE"],ParameterDirection.Input),
  8463. new OracleParameter(":GROUTINGMOULDCODE",OracleDbType.NVarchar2,dataRow["GROUTINGMOULDCODE"],ParameterDirection.Input),
  8464. new OracleParameter(":GROUTINGUSERID",OracleDbType.Int32,dataRow["GROUTINGUSERID"],ParameterDirection.Input),
  8465. new OracleParameter(":GROUTINGUSERCODE",OracleDbType.NVarchar2,dataRow["GROUTINGUSERCODE"],ParameterDirection.Input),
  8466. new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8467. new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
  8468. new OracleParameter(":REWORKPROCEDUREID",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
  8469. new OracleParameter(":REMARKS",OracleDbType.NVarchar2,entityobj.Remarks,ParameterDirection.Input),
  8470. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8471. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8472. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8473. };
  8474. con.ExecuteNonQuery(sqlString, paras);
  8475. // 缺陷
  8476. string sqlStringDefect =
  8477. "insert into TP_PM_SemiReworkDefect\n" +
  8478. " (SEMIREWORKDEFECTID\n" +
  8479. " ,SEMIREWORKID\n" +
  8480. " ,DEFECTID\n" +
  8481. " ,DEFECTCODE\n" +
  8482. " ,DEFECTNAME\n" +
  8483. " ,DEFECTPOSITIONID\n" +
  8484. " ,DEFECTPOSITIONCODE\n" +
  8485. " ,DEFECTPOSITIONNAME\n" +
  8486. " ,SCRAPRESPONFLAG\n" +
  8487. " ,DEFECTPRODUCTIONDATAID\n" +
  8488. " ,DEFECTPROCEDUREID\n" +
  8489. " ,DEFECTUSERID\n" +
  8490. " ,DEFECTUSERCODE\n" +
  8491. " ,REMARKS\n" +
  8492. " ,ACCOUNTID\n" +
  8493. " ,VALUEFLAG\n" +
  8494. " ,CREATEUSERID\n" +
  8495. " ,UPDATEUSERID)\n" +
  8496. "values\n" +
  8497. " (:SEMIREWORKDEFECTID\n" +
  8498. " ,:SEMIREWORKID\n" +
  8499. " ,:DEFECTID\n" +
  8500. " ,:DEFECTCODE\n" +
  8501. " ,:DEFECTNAME\n" +
  8502. " ,:DEFECTPOSITIONID\n" +
  8503. " ,:DEFECTPOSITIONCODE\n" +
  8504. " ,:DEFECTPOSITIONNAME\n" +
  8505. " ,:SCRAPRESPONFLAG\n" +
  8506. " ,:DEFECTPRODUCTIONDATAID\n" +
  8507. " ,:DEFECTPROCEDUREID\n" +
  8508. " ,:DEFECTUSERID\n" +
  8509. " ,:DEFECTUSERCODE\n" +
  8510. " ,:REMARKS\n" +
  8511. " ,:ACCOUNTID\n" +
  8512. " ,:VALUEFLAG\n" +
  8513. " ,:CREATEUSERID\n" +
  8514. " ,:UPDATEUSERID)";
  8515. string sqlStringRPS =
  8516. "insert into TP_PM_SemiReworkRPS\n" +
  8517. " (semireworkdefectid\n" +
  8518. " ,staffid\n" +
  8519. " ,semireworkid\n" +
  8520. " ,userid\n" +
  8521. " ,usercode\n" +
  8522. " ,ujobsid\n" +
  8523. " ,sjobsid\n" +
  8524. " ,accountid\n" +
  8525. " ,valueflag\n" +
  8526. " ,createuserid\n" +
  8527. " ,updateuserid)\n" +
  8528. "values\n" +
  8529. " (:semireworkdefectid\n" +
  8530. " ,:staffid\n" +
  8531. " ,:semireworkid\n" +
  8532. " ,:userid\n" +
  8533. " ,:usercode\n" +
  8534. " ,:ujobsid\n" +
  8535. " ,:sjobsid\n" +
  8536. " ,:accountid\n" +
  8537. " ,'1'\n" +
  8538. " ,:createuserid\n" +
  8539. " ,:updateuserid)";
  8540. foreach (SemiReworkDefectEntity defect in entityobj.SemiReworkDefects)
  8541. {
  8542. sql = "select SEQ_PM_SEMIREWORKDEFECT_ID.nextval from dual";
  8543. object srdefectID = con.GetSqlResultToObj(sql);
  8544. paras = new OracleParameter[]{
  8545. new OracleParameter(":SEMIREWORKDEFECTID",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
  8546. new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
  8547. new OracleParameter(":DEFECTID",OracleDbType.Int32,defect.DefectID,ParameterDirection.Input),
  8548. new OracleParameter(":DEFECTCODE",OracleDbType.NVarchar2,defect.DefectCode,ParameterDirection.Input),
  8549. new OracleParameter(":DEFECTNAME",OracleDbType.NVarchar2,defect.DefectName,ParameterDirection.Input),
  8550. new OracleParameter(":DEFECTPOSITIONID",OracleDbType.Int32,defect.DefectPositionID,ParameterDirection.Input),
  8551. new OracleParameter(":DEFECTPOSITIONCODE",OracleDbType.NVarchar2,defect.DefectPositionCode,ParameterDirection.Input),
  8552. new OracleParameter(":DEFECTPOSITIONNAME",OracleDbType.NVarchar2,defect.DefectPositionName,ParameterDirection.Input),
  8553. new OracleParameter(":SCRAPRESPONFLAG",OracleDbType.NVarchar2,defect.ScrapResponFlag,ParameterDirection.Input),
  8554. new OracleParameter(":DEFECTPRODUCTIONDATAID",OracleDbType.Int32,defect.DefectProductionDataID,ParameterDirection.Input),
  8555. new OracleParameter(":DEFECTPROCEDUREID",OracleDbType.Int32,defect.DefectProcedureID,ParameterDirection.Input),
  8556. new OracleParameter(":DEFECTUSERID",OracleDbType.Int32,defect.DefectUserID,ParameterDirection.Input),
  8557. new OracleParameter(":DEFECTUSERCODE",OracleDbType.NVarchar2,defect.DefectUserCode,ParameterDirection.Input),
  8558. new OracleParameter(":REMARKS",OracleDbType.NVarchar2,defect.Remarks,ParameterDirection.Input),
  8559. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8560. //xuwei add 2019-11-14
  8561. new OracleParameter(":VALUEFLAG",OracleDbType.Char,defect.ValueFlag,ParameterDirection.Input),
  8562. //xuwei end
  8563. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8564. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8565. };
  8566. con.ExecuteNonQuery(sqlStringDefect, paras);
  8567. foreach (SemiReworkRPSEntity item in defect.DefectResponsibles)
  8568. {
  8569. paras = new OracleParameter[]{
  8570. new OracleParameter(":semireworkdefectid",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
  8571. new OracleParameter(":staffid",OracleDbType.Int32,item.StaffID,ParameterDirection.Input),
  8572. new OracleParameter(":semireworkid",OracleDbType.Int32,srID,ParameterDirection.Input),
  8573. new OracleParameter(":userid",OracleDbType.Int32,item.UserID,ParameterDirection.Input),
  8574. new OracleParameter(":usercode",OracleDbType.NVarchar2,item.UserCode,ParameterDirection.Input),
  8575. new OracleParameter(":ujobsid",OracleDbType.Int32,item.UJobsID,ParameterDirection.Input),
  8576. new OracleParameter(":sjobsid",OracleDbType.Int32,item.SJobsID,ParameterDirection.Input),
  8577. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8578. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8579. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8580. };
  8581. con.ExecuteNonQuery(sqlStringRPS, paras);
  8582. }
  8583. }
  8584. #endregion
  8585. #region 更新在产数据
  8586. string sqlStringInp = "update tp_pm_inproduction inp\n" +
  8587. " set inp.reworkprocedureid = :pid\n" +
  8588. " ,inp.isreworkflag = '2'\n" +
  8589. " ,inp.semicheckid = :srid\n" +
  8590. " where inp.barcode = :barcode";
  8591. paras = new OracleParameter[]{
  8592. new OracleParameter(":pid",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
  8593. new OracleParameter(":srid",OracleDbType.Int32,srID,ParameterDirection.Input),
  8594. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8595. };
  8596. con.ExecuteNonQuery(sqlStringInp, paras);
  8597. #endregion
  8598. con.Commit();
  8599. return resultEntity;
  8600. }
  8601. catch (Exception ex)
  8602. {
  8603. throw ex;
  8604. }
  8605. finally
  8606. {
  8607. if (con.ConnState == ConnectionState.Open)
  8608. {
  8609. con.Disconnect();
  8610. }
  8611. }
  8612. }
  8613. /// <summary>
  8614. /// 编辑半检返修
  8615. /// </summary>
  8616. /// <param name="entityobj"></param>
  8617. /// <param name="sUserInfo"></param>
  8618. /// <returns></returns>
  8619. public static ServiceResultEntity EditSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
  8620. {
  8621. IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8622. try
  8623. {
  8624. ServiceResultEntity resultEntity = new ServiceResultEntity();
  8625. resultEntity.Result = 1;
  8626. if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) ||
  8627. entityobj.SemiReworkDefects == null || entityobj.SemiReworkDefects.Count == 0)
  8628. {
  8629. resultEntity.Result = -1;
  8630. resultEntity.Message = "数据错误";
  8631. return resultEntity;
  8632. }
  8633. con.Connect();
  8634. string barcode = entityobj.BarCode;
  8635. #region 验证条码
  8636. // 1.判断产品是否在产
  8637. string sql = @"select p.*,u.usercode from TP_PM_InProduction p inner join tp_mst_user u on u.userid=p.userid where p.BarCode=:BarCode for update";
  8638. OracleParameter[] paras = new OracleParameter[]{
  8639. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8640. };
  8641. DataTable dsResult = con.GetSqlResultToDt(sql, paras);
  8642. if (dsResult == null || dsResult.Rows.Count == 0)
  8643. {
  8644. resultEntity.Result = -1;// 不在在产表中
  8645. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  8646. return resultEntity;
  8647. }
  8648. DataRow dataRow = dsResult.Rows[0];
  8649. if (dataRow["InScrapFlag"].ToString() == "1")
  8650. {
  8651. resultEntity.Result = -2; //报损待审批
  8652. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  8653. return resultEntity;
  8654. }
  8655. if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
  8656. {
  8657. resultEntity.Result = -3; //登窑车后不允许半成品检测
  8658. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
  8659. return resultEntity;
  8660. }
  8661. if (dataRow["IsReworkFlag"].ToString() == "1")
  8662. {
  8663. resultEntity.Result = -4; //半检返工
  8664. resultEntity.Message = "条码[" + barcode + "]已半检返工";
  8665. return resultEntity;
  8666. }
  8667. if (dataRow["IsReworkFlag"].ToString() != "2")
  8668. {
  8669. resultEntity.Result = -5; //半检返修
  8670. resultEntity.Message = "条码[" + barcode + "]未半检返修";
  8671. return resultEntity;
  8672. }
  8673. if (Convert.ToInt32(dataRow["SemiCheckID"]) != entityobj.SemiReworkID)
  8674. {
  8675. resultEntity.Result = -6; //半检返修
  8676. resultEntity.Message = "条码[" + barcode + "]已重新登记半检返修";
  8677. return resultEntity;
  8678. }
  8679. #endregion
  8680. #region 停用数据
  8681. //xuwei modify 2019-11-18 如果半检工号不同 跳过停用数据
  8682. //通过 SEMIREWORKUSERCODE 半检工号 与 当前操作工号 判定识别
  8683. string isSameUser = con.GetSqlResultToStr($@"
  8684. SELECT
  8685. count( SEMIREWORKID )
  8686. FROM
  8687. TP_PM_SEMIREWORK
  8688. WHERE
  8689. SEMIREWORKID = {entityobj.SemiReworkID}
  8690. AND SEMIREWORKUSERCODE = '{sUserInfo.UserCode}'
  8691. ");
  8692. //xuwei modify 2019-11-18 如果半检工号不同 跳过停用数据
  8693. if(isSameUser == "1")
  8694. {
  8695. paras = new OracleParameter[]{
  8696. new OracleParameter(":userid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8697. new OracleParameter(":SemiReworkID",OracleDbType.Int32,entityobj.SemiReworkID,ParameterDirection.Input),
  8698. };
  8699. string sqldelete = "update TP_PM_SemiReworkRPS\n" +
  8700. " set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
  8701. " where SemiReworkID = :SemiReworkID";
  8702. con.ExecuteNonQuery(sqldelete, paras);
  8703. sqldelete = "update TP_PM_SemiReworkDefect\n" +
  8704. " set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
  8705. " where SemiReworkID = :SemiReworkID";
  8706. con.ExecuteNonQuery(sqldelete, paras);
  8707. sqldelete = " update TP_PM_SemiRework\n" +
  8708. " set valueflag = '0', UpdateTime = sysdate, UpdateUserID = :userid\n" +
  8709. " where SemiReworkID = :SemiReworkID";
  8710. con.ExecuteNonQuery(sqldelete, paras);
  8711. }
  8712. #endregion
  8713. #region 保存数据
  8714. sql = "select SEQ_PM_SemiRework_ID.nextval from dual";
  8715. object srID = con.GetSqlResultToObj(sql);
  8716. // 返修
  8717. string sqlString = "insert into tp_pm_semirework\n" +
  8718. " (SEMIREWORKID\n" +
  8719. " ,BARCODE\n" +
  8720. " ,PRODUCTIONLINEID\n" +
  8721. " ,PROCEDUREID\n" +
  8722. " ,PROCEDURETIME\n" +
  8723. " ,GOODSID\n" +
  8724. " ,GOODSCODE\n" +
  8725. " ,USERID\n" +
  8726. " ,USERCODE\n" +
  8727. " ,PRODUCTIONDATAID\n" +
  8728. " ,GROUTINGDAILYID\n" +
  8729. " ,GROUTINGDAILYDETAILID\n" +
  8730. " ,GROUTINGLINEID\n" +
  8731. " ,GROUTINGLINECODE\n" +
  8732. " ,GROUTINGLINEDETAILID\n" +
  8733. " ,GROUTINGDATE\n" +
  8734. " ,GROUTINGMOULDCODE\n" +
  8735. " ,GROUTINGUSERID\n" +
  8736. " ,GROUTINGUSERCODE\n" +
  8737. " ,SEMIREWORKUSERID\n" +
  8738. " ,SEMIREWORKUSERCODE\n" +
  8739. " ,SEMIREWORKTIME\n" +
  8740. " ,REWORKPROCEDUREID\n" +
  8741. " ,REMARKS\n" +
  8742. " ,ACCOUNTID\n" +
  8743. " ,VALUEFLAG\n" +
  8744. " ,CREATEUSERID\n" +
  8745. " ,UPDATEUSERID)\n" +
  8746. "values\n" +
  8747. " (:SEMIREWORKID\n" +
  8748. " ,:BARCODE\n" +
  8749. " ,:PRODUCTIONLINEID\n" +
  8750. " ,:PROCEDUREID\n" +
  8751. " ,:PROCEDURETIME\n" +
  8752. " ,:GOODSID\n" +
  8753. " ,:GOODSCODE\n" +
  8754. " ,:USERID\n" +
  8755. " ,:USERCODE\n" +
  8756. " ,:PRODUCTIONDATAID\n" +
  8757. " ,:GROUTINGDAILYID\n" +
  8758. " ,:GROUTINGDAILYDETAILID\n" +
  8759. " ,:GROUTINGLINEID\n" +
  8760. " ,:GROUTINGLINECODE\n" +
  8761. " ,:GROUTINGLINEDETAILID\n" +
  8762. " ,:GROUTINGDATE\n" +
  8763. " ,:GROUTINGMOULDCODE\n" +
  8764. " ,:GROUTINGUSERID\n" +
  8765. " ,:GROUTINGUSERCODE\n" +
  8766. " ,:SEMIREWORKUSERID\n" +
  8767. " ,:SEMIREWORKUSERCODE\n" +
  8768. //" ,:SEMIREWORKTIME\n" +
  8769. " ,sysdate\n" +
  8770. " ,:REWORKPROCEDUREID\n" +
  8771. " ,:REMARKS\n" +
  8772. " ,:ACCOUNTID\n" +
  8773. " ,'1'\n" +
  8774. " ,:CREATEUSERID\n" +
  8775. " ,:UPDATEUSERID)\n";
  8776. paras = new OracleParameter[]{
  8777. new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
  8778. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8779. new OracleParameter(":PRODUCTIONLINEID",OracleDbType.Int32,dataRow["PRODUCTIONLINEID"],ParameterDirection.Input),
  8780. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,dataRow["PROCEDUREID"],ParameterDirection.Input),
  8781. new OracleParameter(":PROCEDURETIME",OracleDbType.Date,dataRow["PROCEDURETIME"],ParameterDirection.Input),
  8782. new OracleParameter(":GOODSID",OracleDbType.Int32,dataRow["GOODSID"],ParameterDirection.Input),
  8783. new OracleParameter(":GOODSCODE",OracleDbType.NVarchar2,dataRow["GOODSCODE"],ParameterDirection.Input),
  8784. new OracleParameter(":USERID",OracleDbType.Int32,dataRow["USERID"],ParameterDirection.Input),
  8785. new OracleParameter(":USERCODE",OracleDbType.NVarchar2,dataRow["USERCODE"],ParameterDirection.Input),
  8786. new OracleParameter(":PRODUCTIONDATAID",OracleDbType.Int32,dataRow["PRODUCTIONDATAID"],ParameterDirection.Input),
  8787. new OracleParameter(":GROUTINGDAILYID",OracleDbType.Int32,dataRow["GROUTINGDAILYID"],ParameterDirection.Input),
  8788. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,dataRow["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  8789. new OracleParameter(":GROUTINGLINEID",OracleDbType.Int32,dataRow["GROUTINGLINEID"],ParameterDirection.Input),
  8790. new OracleParameter(":GROUTINGLINECODE",OracleDbType.NVarchar2,dataRow["GROUTINGLINECODE"],ParameterDirection.Input),
  8791. new OracleParameter(":GROUTINGLINEDETAILID",OracleDbType.Int32,dataRow["GROUTINGLINEDETAILID"],ParameterDirection.Input),
  8792. new OracleParameter(":GROUTINGDATE",OracleDbType.Date,dataRow["GROUTINGDATE"],ParameterDirection.Input),
  8793. new OracleParameter(":GROUTINGMOULDCODE",OracleDbType.NVarchar2,dataRow["GROUTINGMOULDCODE"],ParameterDirection.Input),
  8794. new OracleParameter(":GROUTINGUSERID",OracleDbType.Int32,dataRow["GROUTINGUSERID"],ParameterDirection.Input),
  8795. new OracleParameter(":GROUTINGUSERCODE",OracleDbType.NVarchar2,dataRow["GROUTINGUSERCODE"],ParameterDirection.Input),
  8796. //new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,entityobj.SEMIREWORKUSERID,ParameterDirection.Input),
  8797. //new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,entityobj.UserCode,ParameterDirection.Input),
  8798. //new OracleParameter(":SEMIREWORKTIME",OracleDbType.Date,sUserInfo.entityobj,ParameterDirection.Input),
  8799. new OracleParameter(":SEMIREWORKUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8800. new OracleParameter(":SEMIREWORKUSERCODE",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
  8801. new OracleParameter(":REWORKPROCEDUREID",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
  8802. new OracleParameter(":REMARKS",OracleDbType.NVarchar2,entityobj.Remarks,ParameterDirection.Input),
  8803. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8804. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8805. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8806. };
  8807. con.ExecuteNonQuery(sqlString, paras);
  8808. // 缺陷
  8809. string sqlStringDefect =
  8810. "insert into TP_PM_SemiReworkDefect\n" +
  8811. " (SEMIREWORKDEFECTID\n" +
  8812. " ,SEMIREWORKID\n" +
  8813. " ,DEFECTID\n" +
  8814. " ,DEFECTCODE\n" +
  8815. " ,DEFECTNAME\n" +
  8816. " ,DEFECTPOSITIONID\n" +
  8817. " ,DEFECTPOSITIONCODE\n" +
  8818. " ,DEFECTPOSITIONNAME\n" +
  8819. " ,SCRAPRESPONFLAG\n" +
  8820. " ,DEFECTPRODUCTIONDATAID\n" +
  8821. " ,DEFECTPROCEDUREID\n" +
  8822. " ,DEFECTUSERID\n" +
  8823. " ,DEFECTUSERCODE\n" +
  8824. " ,REMARKS\n" +
  8825. " ,ACCOUNTID\n" +
  8826. " ,VALUEFLAG\n" +
  8827. " ,CREATEUSERID\n" +
  8828. " ,UPDATEUSERID)\n" +
  8829. "values\n" +
  8830. " (:SEMIREWORKDEFECTID\n" +
  8831. " ,:SEMIREWORKID\n" +
  8832. " ,:DEFECTID\n" +
  8833. " ,:DEFECTCODE\n" +
  8834. " ,:DEFECTNAME\n" +
  8835. " ,:DEFECTPOSITIONID\n" +
  8836. " ,:DEFECTPOSITIONCODE\n" +
  8837. " ,:DEFECTPOSITIONNAME\n" +
  8838. " ,:SCRAPRESPONFLAG\n" +
  8839. " ,:DEFECTPRODUCTIONDATAID\n" +
  8840. " ,:DEFECTPROCEDUREID\n" +
  8841. " ,:DEFECTUSERID\n" +
  8842. " ,:DEFECTUSERCODE\n" +
  8843. " ,:REMARKS\n" +
  8844. " ,:ACCOUNTID\n" +
  8845. " ,:VALUEFLAG\n" + //xuwei add 2019-11-14
  8846. " ,:CREATEUSERID\n" +
  8847. " ,:UPDATEUSERID)";
  8848. string sqlStringRPS =
  8849. "insert into TP_PM_SemiReworkRPS\n" +
  8850. " (semireworkdefectid\n" +
  8851. " ,staffid\n" +
  8852. " ,semireworkid\n" +
  8853. " ,userid\n" +
  8854. " ,usercode\n" +
  8855. " ,ujobsid\n" +
  8856. " ,sjobsid\n" +
  8857. " ,accountid\n" +
  8858. " ,valueflag\n" +
  8859. " ,createuserid\n" +
  8860. " ,updateuserid)\n" +
  8861. "values\n" +
  8862. " (:semireworkdefectid\n" +
  8863. " ,:staffid\n" +
  8864. " ,:semireworkid\n" +
  8865. " ,:userid\n" +
  8866. " ,:usercode\n" +
  8867. " ,:ujobsid\n" +
  8868. " ,:sjobsid\n" +
  8869. " ,:accountid\n" +
  8870. " ,'1'\n" +
  8871. " ,:createuserid\n" +
  8872. " ,:updateuserid)";
  8873. foreach (SemiReworkDefectEntity defect in entityobj.SemiReworkDefects)
  8874. {
  8875. sql = "select SEQ_PM_SEMIREWORKDEFECT_ID.nextval from dual";
  8876. object srdefectID = con.GetSqlResultToObj(sql);
  8877. paras = new OracleParameter[]{
  8878. new OracleParameter(":SEMIREWORKDEFECTID",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
  8879. new OracleParameter(":SEMIREWORKID",OracleDbType.Int32,srID,ParameterDirection.Input),
  8880. new OracleParameter(":DEFECTID",OracleDbType.Int32,defect.DefectID,ParameterDirection.Input),
  8881. new OracleParameter(":DEFECTCODE",OracleDbType.NVarchar2,defect.DefectCode,ParameterDirection.Input),
  8882. new OracleParameter(":DEFECTNAME",OracleDbType.NVarchar2,defect.DefectName,ParameterDirection.Input),
  8883. new OracleParameter(":DEFECTPOSITIONID",OracleDbType.Int32,defect.DefectPositionID,ParameterDirection.Input),
  8884. new OracleParameter(":DEFECTPOSITIONCODE",OracleDbType.NVarchar2,defect.DefectPositionCode,ParameterDirection.Input),
  8885. new OracleParameter(":DEFECTPOSITIONNAME",OracleDbType.NVarchar2,defect.DefectPositionName,ParameterDirection.Input),
  8886. new OracleParameter(":SCRAPRESPONFLAG",OracleDbType.NVarchar2,defect.ScrapResponFlag,ParameterDirection.Input),
  8887. new OracleParameter(":DEFECTPRODUCTIONDATAID",OracleDbType.Int32,defect.DefectProductionDataID,ParameterDirection.Input),
  8888. new OracleParameter(":DEFECTPROCEDUREID",OracleDbType.Int32,defect.DefectProcedureID,ParameterDirection.Input),
  8889. new OracleParameter(":DEFECTUSERID",OracleDbType.Int32,defect.DefectUserID,ParameterDirection.Input),
  8890. new OracleParameter(":DEFECTUSERCODE",OracleDbType.NVarchar2,defect.DefectUserCode,ParameterDirection.Input),
  8891. new OracleParameter(":REMARKS",OracleDbType.NVarchar2,defect.Remarks,ParameterDirection.Input),
  8892. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8893. //xuwei add 2019-11-14
  8894. new OracleParameter(":VALUEFLAG",OracleDbType.Char,defect.ValueFlag,ParameterDirection.Input),
  8895. //xuwei end
  8896. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8897. new OracleParameter(":UPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8898. };
  8899. con.ExecuteNonQuery(sqlStringDefect, paras);
  8900. foreach (SemiReworkRPSEntity item in defect.DefectResponsibles)
  8901. {
  8902. paras = new OracleParameter[]{
  8903. new OracleParameter(":semireworkdefectid",OracleDbType.Int32,srdefectID,ParameterDirection.Input),
  8904. new OracleParameter(":staffid",OracleDbType.Int32,item.StaffID,ParameterDirection.Input),
  8905. new OracleParameter(":semireworkid",OracleDbType.Int32,srID,ParameterDirection.Input),
  8906. new OracleParameter(":userid",OracleDbType.Int32,item.UserID,ParameterDirection.Input),
  8907. new OracleParameter(":usercode",OracleDbType.NVarchar2,item.UserCode,ParameterDirection.Input),
  8908. new OracleParameter(":ujobsid",OracleDbType.Int32,item.UJobsID,ParameterDirection.Input),
  8909. new OracleParameter(":sjobsid",OracleDbType.Int32,item.SJobsID,ParameterDirection.Input),
  8910. new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  8911. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8912. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8913. };
  8914. con.ExecuteNonQuery(sqlStringRPS, paras);
  8915. }
  8916. }
  8917. #endregion
  8918. #region 更新在产数据
  8919. string sqlStringInp = "update tp_pm_inproduction inp\n" +
  8920. " set inp.reworkprocedureid = :pid\n" +
  8921. " ,inp.isreworkflag = '2'\n" +
  8922. " ,inp.semicheckid = :srid\n" +
  8923. " where inp.barcode = :barcode";
  8924. paras = new OracleParameter[]{
  8925. new OracleParameter(":pid",OracleDbType.Int32,entityobj.ReworkProcedureID,ParameterDirection.Input),
  8926. new OracleParameter(":srid",OracleDbType.Int32,srID,ParameterDirection.Input),
  8927. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8928. };
  8929. con.ExecuteNonQuery(sqlStringInp, paras);
  8930. #endregion
  8931. con.Commit();
  8932. return resultEntity;
  8933. }
  8934. catch (Exception ex)
  8935. {
  8936. throw ex;
  8937. }
  8938. finally
  8939. {
  8940. if (con.ConnState == ConnectionState.Open)
  8941. {
  8942. con.Disconnect();
  8943. }
  8944. }
  8945. }
  8946. /// <summary>
  8947. /// 撤销半检返修
  8948. /// </summary>
  8949. /// <param name="entityobj"></param>
  8950. /// <param name="sUserInfo"></param>
  8951. /// <returns></returns>
  8952. public static ServiceResultEntity CancelSemiRework(SemiReworkEntity entityobj, SUserInfo sUserInfo)
  8953. {
  8954. IDBTransaction con = ClsDbFactory.CreateDBTransaction(Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString);
  8955. try
  8956. {
  8957. ServiceResultEntity resultEntity = new ServiceResultEntity();
  8958. resultEntity.Result = 1;
  8959. if (entityobj == null || string.IsNullOrWhiteSpace(entityobj.BarCode) || entityobj.SemiReworkID < 1)
  8960. {
  8961. resultEntity.Result = -1;
  8962. resultEntity.Message = "数据错误";
  8963. return resultEntity;
  8964. }
  8965. con.Connect();
  8966. string barcode = entityobj.BarCode;
  8967. #region 验证条码
  8968. // 1.判断产品是否在产
  8969. string sql = @"select * from TP_PM_InProduction where BarCode=:BarCode for update";
  8970. OracleParameter[] paras = new OracleParameter[]{
  8971. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  8972. };
  8973. DataTable dsResult = con.GetSqlResultToDt(sql, paras);
  8974. if (dsResult == null || dsResult.Rows.Count == 0)
  8975. {
  8976. resultEntity.Result = -1;// 不在在产表中
  8977. resultEntity.Message = "条码[" + barcode + "]不在在产流程";
  8978. return resultEntity;
  8979. }
  8980. DataRow dataRow = dsResult.Rows[0];
  8981. if (dataRow["InScrapFlag"].ToString() == "1")
  8982. {
  8983. resultEntity.Result = -2; //报损待审批
  8984. resultEntity.Message = "条码[" + barcode + "]已经报损待审批";
  8985. return resultEntity;
  8986. }
  8987. if (!string.IsNullOrEmpty(dataRow["KilnCarID"].ToString()))
  8988. {
  8989. resultEntity.Result = -3; //登窑车后不允许半成品检测
  8990. resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dataRow["KilnCarName"].ToString() + "]";
  8991. return resultEntity;
  8992. }
  8993. if (dataRow["IsReworkFlag"].ToString() == "1")
  8994. {
  8995. resultEntity.Result = -4; //半检返工
  8996. resultEntity.Message = "条码[" + barcode + "]已半检返工";
  8997. return resultEntity;
  8998. }
  8999. if (dataRow["IsReworkFlag"].ToString() != "2")
  9000. {
  9001. resultEntity.Result = -5; //半检返修
  9002. resultEntity.Message = "条码[" + barcode + "]未半检返修";
  9003. return resultEntity;
  9004. }
  9005. if (Convert.ToInt32(dataRow["SemiCheckID"]) != entityobj.SemiReworkID)
  9006. {
  9007. resultEntity.Result = -6; //半检返修
  9008. resultEntity.Message = "条码[" + barcode + "]已重新登记半检返修";
  9009. return resultEntity;
  9010. }
  9011. #endregion
  9012. #region 停用数据
  9013. paras = new OracleParameter[]{
  9014. new OracleParameter(":userid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  9015. new OracleParameter(":usercode",OracleDbType.NVarchar2,sUserInfo.UserCode,ParameterDirection.Input),
  9016. new OracleParameter(":SemiReworkID",OracleDbType.Int32,entityobj.SemiReworkID,ParameterDirection.Input),
  9017. };
  9018. //string sqldelete = "update TP_PM_SemiReworkRPS\n" +
  9019. //" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
  9020. //" where SemiReworkID = :SemiReworkID";
  9021. //con.ExecuteNonQuery(sqldelete, paras);
  9022. //sqldelete = "update TP_PM_SemiReworkDefect\n" +
  9023. //" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
  9024. //" where SemiReworkID = :SemiReworkID";
  9025. //con.ExecuteNonQuery(sqldelete, paras);
  9026. //sqldelete = " update TP_PM_SemiRework\n" +
  9027. //" set valueflag = '0', UpdateTime = sysdate UpdateUserID = :userid\n" +
  9028. //" where SemiReworkID = :SemiReworkID";
  9029. //con.ExecuteNonQuery(sqldelete, paras);
  9030. string sqlString = "update TP_PM_SemiRework\n" +
  9031. " set BackOutFlag = '1'\n" +
  9032. " ,BackOutTime = sysdate\n" +
  9033. " ,BackOutUserID = :userid\n" +
  9034. " ,BackOutUserCode = :usercode\n" +
  9035. " ,UpdateTime = sysdate\n" +
  9036. " ,UpdateUserID = :userid\n" +
  9037. " where SemiReworkID = :SemiReworkID";
  9038. con.ExecuteNonQuery(sqlString, paras);
  9039. #endregion
  9040. #region 更新在产数据
  9041. string sqlStringInp = "update tp_pm_inproduction inp\n" +
  9042. " set inp.reworkprocedureid = null\n" +
  9043. " ,inp.isreworkflag = '0'\n" +
  9044. " ,inp.semicheckid = null\n" +
  9045. " where inp.barcode = :barcode";
  9046. paras = new OracleParameter[]{
  9047. new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  9048. };
  9049. con.ExecuteNonQuery(sqlStringInp, paras);
  9050. #endregion
  9051. con.Commit();
  9052. return resultEntity;
  9053. }
  9054. catch (Exception ex)
  9055. {
  9056. throw ex;
  9057. }
  9058. finally
  9059. {
  9060. if (con.ConnState == ConnectionState.Open)
  9061. {
  9062. con.Disconnect();
  9063. }
  9064. }
  9065. }
  9066. public static ServiceResultEntity GetSemiReworkForPDAEdit(int semiReworkID, SUserInfo sUserInfo)
  9067. {
  9068. return null;
  9069. }
  9070. #endregion
  9071. #region 窑车漏扫补件
  9072. /// <summary>
  9073. /// 验证窑车是否存在
  9074. /// </summary>
  9075. /// <param name="cre"></param>
  9076. /// <param name="userInfo"></param>
  9077. /// <returns></returns>
  9078. public static ServiceResultEntity CheckKilnCar(ClientRequestEntity cre, SUserInfo userInfo)
  9079. {
  9080. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9081. try
  9082. {
  9083. string sqlString = "select kc.kilncarid,kc.kilnid\n" +
  9084. " from tp_mst_kilncar kc\n" +
  9085. " where kc.valueflag = '1'\n" +
  9086. " and kc.accountid = @accountID@\n" +
  9087. " and kc.kilncarcode = @kilncarcode@";
  9088. CDAParameter[] paras = new CDAParameter[]
  9089. {
  9090. new CDAParameter("accountID", userInfo.AccountID),
  9091. new CDAParameter("kilncarcode", cre.Properties["kilncarcode"]),
  9092. };
  9093. ServiceResultEntity sre = new ServiceResultEntity();
  9094. DataTable data = dataAccess.ExecuteDatatable(sqlString, paras);
  9095. if (data == null || data.Rows.Count == 0)
  9096. {
  9097. sre.Status = Constant.ServiceResultStatus.Other;
  9098. sre.OtherStatus = 1;
  9099. sre.Message = "此窑车不存在";
  9100. return sre;
  9101. }
  9102. sre.Result = data.Rows[0]["kilncarid"];
  9103. sqlString = "Select procedureID From tp_pc_procedureKiln t where t.KilnID = @KilnID@ and t.procedureID = @procedureID@";
  9104. paras = new CDAParameter[]
  9105. {
  9106. new CDAParameter("KilnID", data.Rows[0]["kilnid"]),
  9107. new CDAParameter("procedureID", cre.Properties["procedureID"]),
  9108. };
  9109. data = dataAccess.ExecuteDatatable(sqlString, paras);
  9110. if (data == null || data.Rows.Count == 0)
  9111. {
  9112. sre.Status = Constant.ServiceResultStatus.Other;
  9113. sre.OtherStatus = 2;
  9114. sre.Message = "此窑车不不允许经过此工序";
  9115. return sre;
  9116. }
  9117. return sre;
  9118. }
  9119. catch (Exception ex)
  9120. {
  9121. throw ex;
  9122. }
  9123. finally
  9124. {
  9125. dataAccess?.Dispose();
  9126. }
  9127. }
  9128. /// <summary>
  9129. /// 验证窑车烧成批次号是否存在 和 是否能补漏扫
  9130. /// </summary>
  9131. /// <param name="cre"></param>
  9132. /// <param name="userInfo"></param>
  9133. /// <returns></returns>
  9134. public static ServiceResultEntity CheckKilnCarBatchNo(ClientRequestEntity cre, SUserInfo userInfo)
  9135. {
  9136. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9137. try
  9138. {
  9139. string sqlString = "select t.kilncardataid, t.modelType, t.procedureid\n" +
  9140. " from tp_pm_kilncardata t\n" +
  9141. " where t.kilnid = @kilnid@\n" +
  9142. " and t.kilncarid = @kilncarid@\n" +
  9143. " and t.valueflag = '1'\n" +
  9144. " and t.kilncarbatchno = @kilncarbatchno@";
  9145. CDAParameter[] paras = new CDAParameter[]
  9146. {
  9147. new CDAParameter("kilnid", cre.Properties["KilnID"]),
  9148. new CDAParameter("kilncarid", cre.Properties["KilnCarID"]),
  9149. new CDAParameter("kilncarbatchno", cre.Properties["KilnCarBatchNo"]),
  9150. };
  9151. ServiceResultEntity sre = new ServiceResultEntity();
  9152. DataTable data = dataAccess.ExecuteDatatable(sqlString, paras);
  9153. if (data == null || data.Rows.Count == 0)
  9154. {
  9155. sre.Status = Constant.ServiceResultStatus.Other;
  9156. sre.OtherStatus = 1;
  9157. sre.Message = "此烧成批次号不存在";
  9158. return sre;
  9159. }
  9160. int carProcedureid = Convert.ToInt32(data.Rows[0]["procedureid"]);
  9161. string modelType = data.Rows[data.Rows.Count-1]["modelType"] + "";
  9162. if (modelType != "4")
  9163. {
  9164. sre.Status = Constant.ServiceResultStatus.Other;
  9165. sre.OtherStatus = 2;
  9166. sre.Message = "此窑车还未卸窑不能补件";
  9167. return sre;
  9168. }
  9169. if (carProcedureid != Convert.ToInt32(cre.Properties["ProcedureID"]))
  9170. {
  9171. sre.Status = Constant.ServiceResultStatus.Other;
  9172. sre.OtherStatus = 3;
  9173. sre.Message = "此窑车烧成批次不是在当前工序登窑";
  9174. return sre;
  9175. }
  9176. return sre;
  9177. }
  9178. catch (Exception ex)
  9179. {
  9180. throw ex;
  9181. }
  9182. finally
  9183. {
  9184. dataAccess?.Dispose();
  9185. }
  9186. }
  9187. /// <summary>
  9188. /// 窑车漏扫补件
  9189. /// </summary>
  9190. /// <param name="cre"></param>
  9191. /// <param name="userInfo"></param>
  9192. /// <returns></returns>
  9193. public static ServiceResultEntity SetKilnCarMissing(ClientRequestEntity cre, SUserInfo userInfo)
  9194. {
  9195. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9196. try
  9197. {
  9198. ServiceResultEntity sre = new ServiceResultEntity();
  9199. dataAccess.Open(true);
  9200. DataTable data = cre.Data.Tables[0];
  9201. string CENTRALIZEDBATCHNO = System.Guid.NewGuid().ToString().ToUpper();
  9202. string sqlString = "\n" +
  9203. "insert into tp_pm_productiondatain\n" +
  9204. " (BARCODE\n" +
  9205. " ,CENTRALIZEDBATCHNO\n" +
  9206. " ,PRODUCTIONLINEID\n" +
  9207. " ,PRODUCTIONLINECODE\n" +
  9208. " ,PRODUCTIONLINENAME\n" +
  9209. " ,PROCEDUREID\n" +
  9210. " ,PROCEDURECODE\n" +
  9211. " ,PROCEDURENAME\n" +
  9212. " ,PROCEDUREMODEL\n" +
  9213. " ,MODELTYPE\n" +
  9214. " ,PIECETYPE\n" +
  9215. " ,ISREWORKED\n" +
  9216. " ,NODETYPE\n" +
  9217. " ,ISPUBLICBODY\n" +
  9218. " ,ISREFIRE\n" +
  9219. " ,ORGANIZATIONID\n" +
  9220. " ,GOODSID\n" +
  9221. " ,GOODSCODE\n" +
  9222. " ,GOODSNAME\n" +
  9223. " ,USERID\n" +
  9224. " ,USERCODE\n" +
  9225. " ,USERNAME\n" +
  9226. " ,KILNID\n" +
  9227. " ,KILNCODE\n" +
  9228. " ,KILNNAME\n" +
  9229. " ,KILNCARID\n" +
  9230. " ,KILNCARCODE\n" +
  9231. " ,KILNCARNAME\n" +
  9232. " ,KILNCARBATCHNO\n" +
  9233. " ,KILNCARPOSITION\n" +
  9234. " ,REMARKS\n" +
  9235. " ,ACCOUNTDATE\n" +
  9236. " ,ACCOUNTID\n" +
  9237. " ,VALUEFLAG\n" +
  9238. " ,CREATEUSERID\n" +
  9239. " ,UPDATEUSERID\n" +
  9240. " ,GROUTINGDATE\n" +
  9241. " ,GROUTINGMOULDCODE\n" +
  9242. " ,MOULDCODE\n" +
  9243. " ,GROUTINGUSERID\n" +
  9244. " ,GROUTINGUSERCODE\n" +
  9245. " ,GROUTINGNUM\n" +
  9246. " ,GROUTINGDAILYID\n" +
  9247. " ,GROUTINGDAILYDETAILID\n" +
  9248. " ,GROUTINGLINEID\n" +
  9249. " ,GROUTINGLINECODE\n" +
  9250. " ,GROUTINGLINENAME\n" +
  9251. " ,GMOULDTYPEID\n" +
  9252. " ,CANMANYTIMES\n" +
  9253. " ,GROUTINGLINEDETAILID\n" +
  9254. " ,SPECIALREPAIRFLAG\n" +
  9255. " ,CLASSESSETTINGID\n" +
  9256. " ,LOGOID\n" +
  9257. " ,CHECKTIME)\n" +
  9258. " select inp.barcode\n" +
  9259. " ,@CENTRALIZEDBATCHNO@\n" +
  9260. " ,kd.productionlineid\n" +
  9261. " ,pline.PRODUCTIONLINECODE\n" +
  9262. " ,pline.PRODUCTIONLINENAME\n" +
  9263. " ,kd.procedureid\n" +
  9264. " ,pcp.PROCEDURECODE\n" +
  9265. " ,pcp.PROCEDURENAME\n" +
  9266. " ,pcp.proceduremodel\n" +
  9267. " ,pcp.modeltype\n" +
  9268. " ,pcp.piecetype\n" +
  9269. " ,'0'\n" +
  9270. " ,pcp.nodetype\n" +
  9271. " ,inp.ispublicbody\n" +
  9272. " ,inp.isrefire\n" +
  9273. " ,pcp.organizationid\n" +
  9274. " ,inp.goodsid\n" +
  9275. " ,inp.goodscode\n" +
  9276. " ,inp.goodsname\n" +
  9277. //" ,kd.USERID\n" +
  9278. //" ,kd.USERCODE\n" +
  9279. //" ,kd.USERNAME\n" +
  9280. " ,@USERID@\n" +
  9281. " ,@USERCODE@\n" +
  9282. " ,@USERNAME@\n" +
  9283. " ,kd.KILNID\n" +
  9284. " ,k.KILNCODE\n" +
  9285. " ,k.KILNNAME\n" +
  9286. " ,kc.KILNCARID\n" +
  9287. " ,kc.KILNCARCODE\n" +
  9288. " ,kc.KILNCARNAME\n" +
  9289. " ,kd.KILNCARBATCHNO\n" +
  9290. " ,@KILNCARPOSITION@\n" +
  9291. " ,'窑车漏扫补件'\n" +
  9292. " ,trunc(sysdate)\n" +
  9293. " ,@ACCOUNTID@\n" +
  9294. " ,'1'\n" +
  9295. " ,@CREATEUSERID@\n" +
  9296. " ,@CREATEUSERID@\n" +
  9297. " ,inp.GROUTINGDATE\n" +
  9298. " ,inp.GROUTINGMOULDCODE\n" +
  9299. " ,inp.MOULDCODE\n" +
  9300. " ,inp.GROUTINGUSERID\n" +
  9301. " ,inp.GROUTINGUSERCODE\n" +
  9302. " ,inp.GROUTINGNUM\n" +
  9303. " ,inp.GROUTINGDAILYID\n" +
  9304. " ,inp.GROUTINGDAILYDETAILID\n" +
  9305. " ,inp.GROUTINGLINEID\n" +
  9306. " ,inp.GROUTINGLINECODE\n" +
  9307. " ,inp.GROUTINGLINENAME\n" +
  9308. " ,inp.GMOULDTYPEID\n" +
  9309. " ,inp.CANMANYTIMES\n" +
  9310. " ,inp.GROUTINGLINEDETAILID\n" +
  9311. " ,inp.SPECIALREPAIRFLAG\n" +
  9312. " ,kd.CLASSESSETTINGID\n" +
  9313. " ,inp.LOGOID\n" +
  9314. " ,kd.CREATETIME\n" +
  9315. " from tp_pm_inproduction inp\n" +
  9316. " inner join tp_pm_kilncardata kd\n" +
  9317. " on kd.kilncarbatchno = @kilncarbatchno@\n" +
  9318. " and kd.valueflag = '1'\n" +
  9319. " inner join tp_pc_productionline pline\n" +
  9320. " on pline.productionlineid = kd.productionlineid\n" +
  9321. " inner join tp_pc_procedure pcp\n" +
  9322. " on pcp.procedureid = kd.procedureid\n" +
  9323. " inner join tp_mst_kiln k\n" +
  9324. " on kd.kilnid = k.kilnid\n" +
  9325. " inner join tp_mst_kilncar kc\n" +
  9326. " on kc.kilncarid = kd.kilncarid\n" +
  9327. " where inp.barcode = @barcode@\n" +
  9328. " order by kd.kilncardataid";
  9329. string sqlUpdate = "update tp_pm_inproduction t\n" +
  9330. " set (t.KILNID\n" +
  9331. " ,t.KILNCODE\n" +
  9332. " ,t.KILNNAME\n" +
  9333. " ,t.KILNCARID\n" +
  9334. " ,t.KILNCARCODE\n" +
  9335. " ,t.KILNCARNAME\n" +
  9336. " ,t.KILNCARBATCHNO\n" +
  9337. " ,t.KILNCARPOSITION\n" +
  9338. " ,t.PROCEDUREMODEL\n" +
  9339. " ,t.MODELTYPE\n" +
  9340. " ,t.FLOWPROCEDUREID\n" +
  9341. " ,t.FLOWPROCEDURETIME\n" +
  9342. " ,t.PROCEDUREID\n" +
  9343. " ,t.PROCEDURETIME\n" +
  9344. " ,t.USERID\n" +
  9345. " ,t.PRODUCTIONDATAID) =\n" +
  9346. " (select pin.KILNID\n" +
  9347. " ,pin.KILNCODE\n" +
  9348. " ,pin.KILNNAME\n" +
  9349. " ,pin.KILNCARID\n" +
  9350. " ,pin.KILNCARCODE\n" +
  9351. " ,pin.KILNCARNAME\n" +
  9352. " ,pin.KILNCARBATCHNO\n" +
  9353. " ,pin.KILNCARPOSITION\n" +
  9354. " ,pin.PROCEDUREMODEL\n" +
  9355. " ,pin.MODELTYPE\n" +
  9356. " ,pin.PROCEDUREID\n" +
  9357. " ,sysdate\n" +
  9358. " ,pin.PROCEDUREID\n" +
  9359. " ,sysdate\n" +
  9360. " ,@USERID@\n" +
  9361. " ,pin.PRODUCTIONDATAID\n" +
  9362. " from tp_pm_productiondatain pin\n" +
  9363. " where pin.productiondataid =\n" +
  9364. " (select max(productiondataid)\n" +
  9365. " from tp_pm_productiondatain ppin\n" +
  9366. " where ppin.barcode = t.barcode))\n" +
  9367. " where t.barcode = @barcode@";
  9368. foreach (DataRow item in data.Rows)
  9369. {
  9370. CDAParameter[] paras = new CDAParameter[]
  9371. {
  9372. new CDAParameter("CENTRALIZEDBATCHNO", CENTRALIZEDBATCHNO),
  9373. new CDAParameter("ACCOUNTID", userInfo.AccountID),
  9374. new CDAParameter("CREATEUSERID", userInfo.UserID),
  9375. new CDAParameter("kilncarbatchno", cre.Properties["KilnCarBatchNo"]),
  9376. new CDAParameter("barcode", item["barcode"]),
  9377. new CDAParameter("KILNCARPOSITION", item["KILNCARPOSITION"]),
  9378. new CDAParameter("USERID", userInfo.UserID),
  9379. new CDAParameter("USERCODE", userInfo.UserCode),
  9380. new CDAParameter("USERNAME", userInfo.UserName),
  9381. };
  9382. // 插入生产数据
  9383. dataAccess.ExecuteNonQuery(sqlString, paras);
  9384. // 更新在产数据
  9385. dataAccess.ExecuteNonQuery(sqlUpdate,
  9386. new CDAParameter("barcode", item["barcode"]),
  9387. new CDAParameter("USERID", userInfo.UserID));
  9388. }
  9389. dataAccess.Commit();
  9390. return sre;
  9391. }
  9392. catch (Exception ex)
  9393. {
  9394. throw ex;
  9395. }
  9396. finally
  9397. {
  9398. dataAccess?.Dispose();
  9399. }
  9400. }
  9401. #endregion
  9402. #region 梭式窑入窑计件
  9403. /// <summary>
  9404. /// 梭式窑入窑计件
  9405. /// </summary>
  9406. /// <param name="cre"></param>
  9407. /// <param name="userInfo"></param>
  9408. /// <returns></returns>
  9409. public static ServiceResultEntity SaveSKBatchNo(ClientRequestEntity cre, SUserInfo userInfo)
  9410. {
  9411. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9412. try
  9413. {
  9414. ServiceResultEntity sre = new ServiceResultEntity();
  9415. string sqlString = string.Empty;
  9416. dataAccess.Open(true);
  9417. #region 校验、获取数据
  9418. sqlString = "SELECT k.kilnid\n" +
  9419. " ,k.kilncode\n" +
  9420. " ,k.sk_date\n" +
  9421. " ,k.sk_batchno\n" +
  9422. " FROM tp_mst_kiln k\n" +
  9423. " WHERE k.valueflag = '1'\n" +
  9424. " AND k.accountid = @accountid@\n" +
  9425. " AND k.kilncode = @kilncode@\n" +
  9426. " FOR UPDATE";
  9427. CDAParameter[] paras = new CDAParameter[]
  9428. {
  9429. new CDAParameter("accountid", userInfo.AccountID),
  9430. new CDAParameter("kilncode", cre.Properties["KilnCode"])
  9431. };
  9432. DataTable dtKiln = dataAccess.ExecuteDatatable(sqlString, paras);
  9433. if (dtKiln == null || dtKiln.Rows.Count == 0)
  9434. {
  9435. sre.Message = "当前窑炉编号不存在";
  9436. sre.OtherStatus = Constant.INT_IS_NEGATIE_ONE;
  9437. return sre;
  9438. }
  9439. DataRow drKiln = dtKiln.Rows[0];
  9440. int sk_Date = 0;
  9441. int.TryParse(drKiln["SK_Date"] + "", out sk_Date);
  9442. int sk_DateNow = sk_Date;
  9443. int sk_BatchNo = 0;
  9444. int.TryParse(drKiln["SK_BatchNo"] + "", out sk_BatchNo);
  9445. if (sk_DateNow == 0)
  9446. {
  9447. sk_Date = DateTime.Now.Year;
  9448. }
  9449. else if (sk_DateNow + 1 < DateTime.Now.Year)
  9450. {
  9451. sk_Date = DateTime.Now.Year;
  9452. sk_BatchNo = 1;
  9453. }
  9454. //xuwei fix 2021-04-22 批次号不足3位补0
  9455. string sk_FULLBatchNo = drKiln["kilncode"] + "$" + sk_Date + "$" + sk_BatchNo.ToString().PadLeft(3, '0');
  9456. string newID = dataAccess.ExecuteScalar("SELECT seq_pm_kilndata_id.nextval FROM dual") + "";
  9457. #endregion
  9458. #region 插入窑炉生产数据
  9459. sqlString = "INSERT INTO tp_pm_kilndata\n" +
  9460. " (kilndataid\n" +
  9461. " ,sk_date\n" +
  9462. " ,sk_batchno\n" +
  9463. " ,kilnid\n" +
  9464. " ,sk_fullbatchno\n" +
  9465. " ,remarks\n" +
  9466. " ,accountid\n" +
  9467. " ,createuserid\n" +
  9468. " ,updateuserid)\n" +
  9469. "VALUES\n" +
  9470. " (@kilndataid@\n" +
  9471. " ,@sk_date@\n" +
  9472. " ,@sk_batchno@\n" +
  9473. " ,@kilnid@\n" +
  9474. " ,@sk_fullbatchno@\n" +
  9475. " ,@remarks@\n" +
  9476. " ,@accountid@\n" +
  9477. " ,@userid@\n" +
  9478. " ,@userid@)";
  9479. paras = new CDAParameter[]
  9480. {
  9481. new CDAParameter("kilndataid", newID),
  9482. new CDAParameter("sk_date", sk_Date),
  9483. new CDAParameter("sk_batchno", sk_BatchNo),
  9484. new CDAParameter("kilnid", drKiln["kilnid"]),
  9485. new CDAParameter("sk_fullbatchno", sk_FULLBatchNo),
  9486. new CDAParameter("remarks", cre.Properties["Remarks"]),
  9487. new CDAParameter("accountid", userInfo.AccountID),
  9488. new CDAParameter("userid", userInfo.UserID)
  9489. };
  9490. sre.OtherStatus += dataAccess.ExecuteNonQuery(sqlString, paras);
  9491. #endregion
  9492. #region 更新窑炉信息
  9493. sqlString = "UPDATE tp_mst_kiln k\n" +
  9494. " SET k.sk_date = @sk_date@\n" +
  9495. " ,k.sk_batchno = @sk_batchno@\n" +
  9496. " ,k.updateuserid = @userid@\n" +
  9497. " WHERE k.accountid = @accountid@\n" +
  9498. " AND k.kilnid = @kilnid@";
  9499. paras = new CDAParameter[]
  9500. {
  9501. new CDAParameter("sk_date",sk_Date),
  9502. new CDAParameter("sk_batchno",sk_BatchNo + 1),
  9503. new CDAParameter("userid", userInfo.UserID),
  9504. new CDAParameter("accountid", userInfo.AccountID),
  9505. new CDAParameter("kilnid", drKiln["kilnid"])
  9506. };
  9507. sre.OtherStatus += dataAccess.ExecuteNonQuery(sqlString, paras);
  9508. #endregion
  9509. #region 更新其他窑炉财年和窑号
  9510. // 如果未设置财年或者财年跨一年未更新,则更新其他窑炉财年和窑号
  9511. if (sk_DateNow == 0 || sk_DateNow + 1 < DateTime.Now.Year)
  9512. {
  9513. sqlString = "UPDATE tp_mst_kiln k\n" +
  9514. " SET k.sk_date = @sk_date@\n" +
  9515. " ,k.sk_batchno = 1\n" +
  9516. " ,k.updateuserid = @userid@\n" +
  9517. " WHERE k.accountid = @accountid@\n" +
  9518. " AND k.kilnid <> @kilnid@";
  9519. paras = new CDAParameter[]
  9520. {
  9521. new CDAParameter("sk_date",sk_Date),
  9522. new CDAParameter("userid", userInfo.UserID),
  9523. new CDAParameter("accountid", userInfo.AccountID),
  9524. new CDAParameter("kilnid", drKiln["kilnid"])
  9525. };
  9526. sre.OtherStatus += dataAccess.ExecuteNonQuery(sqlString, paras);
  9527. }
  9528. #endregion
  9529. dataAccess.Commit();
  9530. return sre;
  9531. }
  9532. catch (Exception ex)
  9533. {
  9534. throw ex;
  9535. }
  9536. finally
  9537. {
  9538. dataAccess?.Dispose();
  9539. }
  9540. }
  9541. #endregion
  9542. #region 重启3#高压注浆
  9543. /// <summary>
  9544. /// 查询3#高压注浆线
  9545. /// </summary>
  9546. /// <param name="cre"></param>
  9547. /// <param name="userInfo"></param>
  9548. /// <returns></returns>
  9549. public static ServiceResultEntity GetGroutingLine3(SUserInfo userInfo)
  9550. {
  9551. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9552. try
  9553. {
  9554. ServiceResultEntity sre = new ServiceResultEntity();
  9555. string sqlString = string.Empty;
  9556. dataAccess.Open();
  9557. sqlString = "SELECT gl.groutinglineid\n" +
  9558. " ,gl.buildingno\n" +
  9559. " ,gl.floorno\n" +
  9560. " ,gl.groutinglineno\n" +
  9561. " ,gl.groutinglinecode\n" +
  9562. " ,gl.groutinglinename\n" +
  9563. " ,gl.mouldquantity\n" +
  9564. " ,gl.gmouldtypeid\n" +
  9565. " ,gl.beginuseddate\n" +
  9566. " ,gl.enduseddate\n" +
  9567. " ,gl.remarks\n" +
  9568. " ,gl.h_linecode\n" +
  9569. " ,gl.h_batchno\n" +
  9570. " ,gs.gmouldstatusname\n" +
  9571. " ,gt.gmouldtypename\n" +
  9572. " ,gu.usercode\n" +
  9573. " ,mu.usercode AS monitorcode\n" +
  9574. " FROM tp_pc_groutingline gl\n" +
  9575. " LEFT JOIN tp_mst_gmouldtype gt\n" +
  9576. " ON gl.gmouldtypeid = gt.gmouldtypeid\n" +
  9577. " LEFT JOIN tp_sys_gmouldstatus gs\n" +
  9578. " ON gl.gmouldstatus = gs.gmouldstatusid\n" +
  9579. " LEFT JOIN tp_mst_user gu\n" +
  9580. " ON gl.userid = gu.userid\n" +
  9581. " LEFT JOIN tp_mst_user mu\n" +
  9582. " ON mu.userid = gl.monitorid\n" +
  9583. " WHERE gl.valueflag = '1'\n" +
  9584. " AND gl.h_linecode IS NOT NULL\n" +
  9585. " AND gl.h_lineindex = 1\n" +
  9586. " AND gl.accountid = @accountid@\n" +
  9587. " AND EXISTS (SELECT purviewid\n" +
  9588. " FROM tp_mst_userpurview\n" +
  9589. " WHERE purviewtype = @purviewtype@\n" +
  9590. " AND userid = @userid@\n" +
  9591. " AND (purviewid = -1 OR purviewid = gl.groutinglineid))\n" +
  9592. " ORDER BY gl.groutinglinecode";
  9593. CDAParameter[] paras = new CDAParameter[]
  9594. {
  9595. new CDAParameter("accountid", userInfo.AccountID),
  9596. new CDAParameter("purviewtype", (int)Constant.PurviewType.OperateGroutingLine),
  9597. new CDAParameter("userid", userInfo.UserID)
  9598. };
  9599. sre.Data = dataAccess.ExecuteDataset(sqlString, paras);
  9600. return sre;
  9601. }
  9602. catch (Exception ex)
  9603. {
  9604. throw ex;
  9605. }
  9606. finally
  9607. {
  9608. dataAccess?.Dispose();
  9609. }
  9610. }
  9611. /// <summary>
  9612. /// 重启3#高压注浆
  9613. /// </summary>
  9614. /// <param name="cre"></param>
  9615. /// <param name="userInfo"></param>
  9616. /// <returns></returns>
  9617. public static ServiceResultEntity SaveGroutingLine3(ClientRequestEntity cre, SUserInfo userInfo)
  9618. {
  9619. IDataAccess dataAccess = DataAccess.Create(DataBaseType.Oracle, DataManager.ConnectionString);
  9620. try
  9621. {
  9622. ServiceResultEntity sre = new ServiceResultEntity();
  9623. int h_batchnoNow = Convert.ToInt32(cre.Properties["H_BatchNo"]);
  9624. string sqlString = string.Empty;
  9625. dataAccess.Open(true);
  9626. #region 校验并发、获取数据
  9627. sqlString = "SELECT t.h_linecode\n" +
  9628. " FROM tp_pc_groutingline t\n" +
  9629. " WHERE t.groutinglineid = @groutinglineid@\n" +
  9630. " AND t.h_batchno = @h_batchno@\n" +
  9631. " FOR UPDATE";
  9632. CDAParameter[] paras = new CDAParameter[]
  9633. {
  9634. new CDAParameter("groutinglineid", cre.Properties["GroutingLineID"]),
  9635. new CDAParameter("h_batchno", h_batchnoNow)
  9636. };
  9637. string h_linecode = dataAccess.ExecuteScalar(sqlString, paras) + "";
  9638. if (string.IsNullOrEmpty(h_linecode))
  9639. {
  9640. sre.Message = "当前数据发生变化,请刷新重试";
  9641. sre.OtherStatus = Constant.INT_IS_NEGATIE_ONE;
  9642. return sre;
  9643. }
  9644. #endregion
  9645. #region 更新成型线信息
  9646. sqlString = "UPDATE tp_pc_groutingline gl\n" +
  9647. " SET gl.h_batchindex = 0\n" +
  9648. " ,gl.h_batchno = @h_batchno@\n" +
  9649. " ,gl.updateuserid = @userid@\n" +
  9650. " WHERE gl.accountid = @accountid@\n" +
  9651. " AND gl.h_linecode = @h_linecode@";
  9652. paras = new CDAParameter[]
  9653. {
  9654. new CDAParameter("h_batchno",h_batchnoNow + 1),
  9655. new CDAParameter("userid", userInfo.UserID),
  9656. new CDAParameter("accountid", userInfo.AccountID),
  9657. new CDAParameter("h_linecode",h_linecode),
  9658. };
  9659. sre.OtherStatus += dataAccess.ExecuteNonQuery(sqlString, paras);
  9660. #endregion
  9661. dataAccess.Commit();
  9662. return sre;
  9663. }
  9664. catch (Exception ex)
  9665. {
  9666. throw ex;
  9667. }
  9668. finally
  9669. {
  9670. dataAccess?.Dispose();
  9671. }
  9672. }
  9673. #endregion
  9674. }
  9675. }