| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976 |
- /*******************************************************************************
- * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
- * 类的信息:
- * 1.程序名称:PAMModuleDAL.cs
- * 2.功能描述:工资方案参数设定更新db逻辑处理
- * 编辑履历:
- * 作者 日期 版本 修改内容
- * 王鑫 2015/08/17 1.00 新建
- *******************************************************************************/
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Text;
- using Dongke.IBOSS.PRD.Basics.DataAccess;
- using Dongke.IBOSS.PRD.Service.DataModels;
- using Dongke.IBOSS.PRD.WCF.DataModels;
- using Dongke.IBOSS.PRD.Basics.BaseResources;
- using Oracle.ManagedDataAccess.Client;
- using Dongke.IBOSS.PRD.WCF.DataModels.PAMModule;
- using System.Collections;
- namespace Dongke.IBOSS.PRD.Service.PAMModuleService
- {
- public partial class PAMModuleDAL
- {
- /// <summary>
- /// 保存工资方案参数设定
- /// </summary>
- /// <param name="dataDefectPositionData">缺陷数据</param>
- /// <param name="sUserInfo">用户基本信息</param>
- /// <returns>int</returns>
- /// <remarks>
- /// 2014.09.11 冯雪 新建
- /// </remarks>
- public static int SavePayPlanSetting(DataTable dataPayPlanSetting, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- // 检验参数的有效性
- if (dataPayPlanSetting == null && dataPayPlanSetting.Rows.Count == 0)
- {
- return -1;
- }
- int intResult = 0;
- oracleTrConn.Connect();
- foreach (DataRow dataRow in dataPayPlanSetting.Rows)
- {
- //if (dataRow.RowState == DataRowState.Modified)
- int orgValue = Convert.ToInt32(dataRow["SettingValueOrg"].ToString() == "" ? 0 : dataRow["SettingValueOrg"]);
- int Value = Convert.ToInt32(dataRow["SettingValue"].ToString() == "" ? 0 : dataRow["SettingValue"]);
- //if (dataRow.RowState == DataRowState.Modified)
- if (orgValue != Value)
- {
- #region 更新缺陷信息
- string sqlString = "UPDATE TP_PAS_PayPlanSetting SET "
- + " SettingValue = :SettingValue "
- + " WHERE SettingCode = :SettingCode";
- OracleParameter[] parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":SettingValue",dataRow["SettingValue"].ToString()),
- new OracleParameter(":SettingCode",dataRow["SettingCode"].ToString())
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- }
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- /// <summary>
- /// 保存工种工资方案
- /// </summary>
- /// <param name="IsEdit">false 新建 true 编辑</param>
- /// <param name="dtJobsPayPlan">数据源</param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static int SaveJobsPayPlan(bool IsEdit, DataTable dtJobsPayPlan, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- // 检验参数的有效性
- if (dtJobsPayPlan == null && dtJobsPayPlan.Rows.Count == 0)
- {
- return -1;
- }
- int intResult = 0;
- oracleTrConn.Connect();
- OracleParameter[] parmeters1 = null;
- string sqlString = "";
- bool isError = false;
- foreach (DataRow dataRow in dtJobsPayPlan.Rows)
- {
- //if (!IsEdit) // 新建
- //{
- // if (dataRow["JobsID"].ToString() != string.Empty)
- // {
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":PayPlanID",dataRow["PayPlanID"].ToString()),
- // new OracleParameter(":JobsID",dataRow["JobsID"].ToString())
- // };
- // sqlString = "select 1 from TP_PAM_JobsPayPlan where jobsid=:JobsID and PayPlanID=:PayPlanID ";
- // DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- // if (ds != null && ds.Tables[0].Rows.Count > 0)
- // {
- // isError = true;
- // intResult = -3;//重复数据
- // break;
- // }
- // sqlString = "insert into TP_PAM_JobsPayPlan values(:JobsID,:PayPlanID) ";
- // intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // }
- //}
- //else
- //{
- // 编辑
- if (dataRow.RowState == DataRowState.Added)
- {
- if (dataRow["JobsID"].ToString() != string.Empty)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dataRow["PayPlanID"].ToString()),
- new OracleParameter(":JobsID",dataRow["JobsID"].ToString())
- };
- sqlString = "select 1 from TP_PAM_JobsPayPlan where jobsid=:JobsID and PayPlanID=:PayPlanID ";
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -3;//重复数据
- break;
- }
- sqlString = "insert into TP_PAM_JobsPayPlan values(:JobsID,:PayPlanID) ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- else if (dataRow.RowState == DataRowState.Modified)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dataRow["PayPlanID"].ToString()),
- new OracleParameter(":JobsID",dataRow["JobsID"].ToString())
- };
- sqlString = "select 1 from TP_PAM_JobsPayPlan where jobsid=:JobsID and PayPlanID=:PayPlanID ";
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- IsEdit = true;
- intResult = -3;//重复数据
- break;
- }
- sqlString = "update TP_PAM_JobsPayPlan set JobsID=:JobsID where PayPlanID=:PayPlanID ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- else if (dataRow.RowState == DataRowState.Deleted)
- {
- sqlString = "delete from TP_PAM_JobsPayPlan where PayPlanID=:PayPlanID and JobsID=:JobsID ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dataRow["PayPlanID",DataRowVersion.Original].ToString()),
- new OracleParameter(":JobsID",dataRow["JobsID",DataRowVersion.Original].ToString())
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- // }
- }
- if (isError)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- else
- {
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- }
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- /// <summary>
- /// 保存工价分类数据
- /// </summary>
- /// <param name="sUserInfo">用户基本信息</param>
- /// <param name="datatWagesTypeData">工价分类数据源</param>
- /// <returns>int</returns>
- /// <remarks>
- /// 2015.08.19 王鑫 新建
- /// </remarks>
- public static int SavetJobsData(DataTable datatWagesTypeData, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- // 检验参数的有效性
- if (datatWagesTypeData == null && datatWagesTypeData.Rows.Count < Constant.INT_IS_ZERO)
- {
- return Constant.INT_IS_THREE;
- }
- int returnResult = Constant.INT_IS_TWO;
- oracleTrConn.Connect();
- #region 对要保存的工种数据进行必要的验证
- foreach (DataRow dataRow in datatWagesTypeData.Rows)
- {
- // 新建工种
- if (dataRow.RowState == DataRowState.Added)
- {
- #region 判断是否存在相同的工份名称
- string sqlString = "SELECT Count(*) FROM TP_PAM_WagesType WHERE AccountID = :AccountID and WagesTypeName =:WagesTypeName ";
- OracleParameter[] oracleParameter = new OracleParameter[]
- {
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":WagesTypeName",dataRow["WagesTypeName"].ToString())
- };
- string sqlReturnStr = oracleTrConn.GetSqlResultToStr(sqlString, oracleParameter);
- if (!Constant.INT_IS_ZERO.ToString().Equals(sqlReturnStr))
- {
- returnResult = Constant.INT_IS_ONE;
- break;
- }
- #endregion
- }
- else if (dataRow.RowState == DataRowState.Modified)
- {
- #region 判断是否存在相同的工种代码
- string sqlStrings = "SELECT Count(*) FROM TP_PAM_WagesType WHERE AccountID = :AccountID and WagesTypeName = :WagesTypeName and WagesTypeID <> :WagesTypeID";
- OracleParameter[] oracleParameters = new OracleParameter[]
- {
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":WagesTypeName",dataRow["WagesTypeName"]),
- new OracleParameter(":WagesTypeID",dataRow["WagesTypeID"])
- };
- string sqlReturnStr = oracleTrConn.GetSqlResultToStr(sqlStrings, oracleParameters);
- if (!Constant.INT_IS_ZERO.ToString().Equals(sqlReturnStr))
- {
- returnResult = Constant.INT_IS_ONE;
- break;
- }
- #endregion
- }
- }
- if (returnResult == Constant.INT_IS_ONE)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- return returnResult;
- }
- #endregion
- foreach (DataRow dataRow in datatWagesTypeData.Rows)
- {
- // 新建工种
- if (dataRow.RowState == DataRowState.Added)
- {
- #region 新增工种信息
- #region 向T_MST_Jobs插入数据
- string sqlInsertString = "INSERT INTO TP_PAM_WagesType "
- + "(WagesTypeName"
- + ",AccountID"
- + ",ValueFlag"
- + ",CreateTime"
- + ",UpdateTime"
- + ",UpdateUserID"
- + ",CreateUserID)"
- + " VALUES "
- + "(:WagesTypeName"
- + ",:AccountID"
- + ",:ValueFlag"
- + ",sysdate"
- + ",sysdate"
- + ",:UpdateUserID"
- + ",:CreateUserID)";
- OracleParameter[] oracleParameters = new OracleParameter[]
- {
- new OracleParameter(":WagesTypeName",dataRow["WagesTypeName"].ToString()),
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":ValueFlag",dataRow["ValueFlag"].ToString()),
- new OracleParameter(":UpdateUserID",sUserInfo.UserID),
- new OracleParameter(":CreateUserID",sUserInfo.UserID)
- };
- oracleTrConn.ExecuteNonQuery(sqlInsertString, oracleParameters);
- #endregion
- #endregion
- }
- else if (dataRow.RowState == DataRowState.Modified)
- {
- #region 更新工种信息
- string sqlUpdateString = "UPDATE TP_PAM_WagesType SET "
- + " WagesTypeName = :WagesTypeName,"
- + " AccountID = :AccountID,"
- + " ValueFlag = :ValueFlag,"
- + " UpdateUserID = :UpdateUserID,"
- + " UpdateTime = :UpdateTime"
- + " WHERE WagesTypeID = :WagesTypeID";
- OracleParameter[] oracleParametere = new OracleParameter[]
- {
- new OracleParameter(":WagesTypeName",dataRow["WagesTypeName"].ToString()),
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":ValueFlag",dataRow["ValueFlag"].ToString()),
- new OracleParameter(":UpdateUserID",sUserInfo.UserID),
- new OracleParameter(":UpdateTime",DateTime.Now),
- new OracleParameter(":WagesTypeID",dataRow["WagesTypeID"].ToString())
- };
- oracleTrConn.ExecuteNonQuery(sqlUpdateString, oracleParametere);
- #endregion
- }
- else if (dataRow.RowState == DataRowState.Deleted)
- {
- #region 删除工种信息
- string sqlDeleteString = "DELETE TP_PAM_WagesType WHERE WagesTypeID = :WagesTypeID";
- OracleParameter[] oracleParameter = new OracleParameter[]
- {
- new OracleParameter(":WagesTypeID",dataRow["WagesTypeID",DataRowVersion.Original].ToString())
- };
- oracleTrConn.ExecuteNonQuery(sqlDeleteString, oracleParameter);
- #endregion
- }
- }
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- return returnResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- /// <summary>
- /// 保存产品工价分类
- /// </summary>
- /// <param name="IsEdit">false 新建 true 编辑</param>
- /// <param name="dtJobsPayPlan">数据源</param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static int SaveGoodsWagesTypeData(bool IsEdit, DataTable dtGoodsPayPlan, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- // 检验参数的有效性
- if (dtGoodsPayPlan == null && dtGoodsPayPlan.Rows.Count == 0)
- {
- return -1;
- }
- int intResult = 0;
- oracleTrConn.Connect();
- OracleParameter[] parmeters1 = null;
- string sqlString = "";
- bool isError = false;
- foreach (DataRow dataRow in dtGoodsPayPlan.Rows)
- {
- if (dataRow.RowState == DataRowState.Added)
- {
- if (dataRow["GoodsID"].ToString() != string.Empty)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":WagesTypeID",dataRow["WagesTypeID"].ToString()),
- new OracleParameter(":GoodsID",dataRow["GoodsID"].ToString())
- };
- sqlString = "select 1 from TP_PAM_GoodsWagesType where GoodsID=:GoodsID and :WagesTypeID=:WagesTypeID ";
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -3;//重复数据
- break;
- }
- sqlString = "insert into TP_PAM_GoodsWagesType values(:GoodsID,:WagesTypeID) ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- else if (dataRow.RowState == DataRowState.Modified)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":WagesTypeID",dataRow["WagesTypeID"].ToString()),
- new OracleParameter(":GoodsID",dataRow["GoodsID"].ToString())
- };
- sqlString = "select 1 from TP_PAM_GoodsWagesType where GoodsID=:GoodsID and WagesTypeID=:WagesTypeID ";
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -3;//重复数据
- break;
- }
- sqlString = "update TP_PAM_GoodsWagesType set GoodsID=:GoodsID where WagesTypeID=:WagesTypeID ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- else if (dataRow.RowState == DataRowState.Deleted)
- {
- sqlString = "delete from TP_PAM_GoodsWagesType where WagesTypeID=:WagesTypeID and GoodsID=:GoodsID ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":WagesTypeID",dataRow["WagesTypeID",DataRowVersion.Original].ToString()),
- new OracleParameter(":GoodsID",dataRow["GoodsID",DataRowVersion.Original].ToString())
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- if (isError)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- else
- {
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- }
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- /// <summary>
- /// 保存计件工资策略
- /// </summary>
- /// <param name="IsEdit">false 新建 true 编辑</param>
- /// <param name="dtJobsPayPlan">数据源</param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static int SavePiecework(PieceworkEntity pieceworkendity, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- int intResult = 0;
- oracleTrConn.Connect();
- string sqlString = "";
- OracleParameter[] parmeters1 = null;
- bool isError = false;
- if (pieceworkendity.PieceTacticsID == null) // 新增
- {
- //一个解决方案只能对应一个计件工资策略
- if (pieceworkendity.PayPlanID != null)
- {
- sqlString = "select 1 from TP_PAT_Piecework where PayPlanID=:PayPlanID and AccountID=:AccountID ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",pieceworkendity.PayPlanID),
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- };
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -1;//重复数据
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- return intResult;
- }
- }
- string sql = "select SEQ_PAT_Piecework_ID.nextval from dual";
- string idStr = oracleTrConn.GetSqlResultToStr(sql);
- sqlString = @"insert into TP_PAT_Piecework
- (
- PieceTacticsID,
- PayPlanID,
- PieceType,
- PieceCoefficient,
- DamageFlag,
- DamageCoefficient,
- UnqualifiedFlag,
- UnqualifiedCoefficient,
- QualifiedFlag,
- QualifiedCoefficient,
- AccountID,
- CreateUserID,
- UpdateUserID,
- PieceTacticsName
- ) values
- (
- :PieceTacticsID,
- :PayPlanID,
- :PieceType,
- :PieceCoefficient,
- :DamageFlag,
- :DamageCoefficient,
- :UnqualifiedFlag,
- :UnqualifiedCoefficient,
- :QualifiedFlag,
- :QualifiedCoefficient,
- :AccountID,
- :CreateUserID,
- :UpdateUserID,
- :PieceTacticsName
- )";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",idStr),
- new OracleParameter(":PayPlanID",pieceworkendity.PayPlanID),
- new OracleParameter(":PieceType",pieceworkendity.PieceType),
- new OracleParameter(":PieceCoefficient",pieceworkendity.PieceCoefficient),
- new OracleParameter(":DamageFlag",pieceworkendity.DamageFlag),
- new OracleParameter(":DamageCoefficient",pieceworkendity.DamageCoefficient),
- new OracleParameter(":UnqualifiedFlag",pieceworkendity.UnqualifiedFlag),
- new OracleParameter(":UnqualifiedCoefficient",pieceworkendity.UnqualifiedCoefficient),
- new OracleParameter(":QualifiedFlag",pieceworkendity.QualifiedFlag),
- new OracleParameter(":QualifiedCoefficient",pieceworkendity.QualifiedCoefficient),
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":CreateUserID",sUserInfo.UserID),
- new OracleParameter(":UpdateUserID",sUserInfo.UserID),
- new OracleParameter(":PieceTacticsName",pieceworkendity.PayPlanName),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // 插入计件工序
- sqlString = @"insert into TP_PAT_PIECEPROCEDURE
- (
- PIECETACTICSID,
- PROCEDUREID,
- PROCEDUREFLAG
- ) values
- (
- :PIECETACTICSID,
- :PROCEDUREID,
- :PROCEDUREFLAG
- )";
- if (!string.IsNullOrEmpty(pieceworkendity.PieceProcedureIDS))
- {
- string[] sub = pieceworkendity.PieceProcedureIDS.Split(',');
- for (int i = 0; i < sub.Length; i++)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",idStr),
- new OracleParameter(":PROCEDUREID",sub[i]),
- new OracleParameter(":PROCEDUREFLAG",1),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- // 插入质量工序
- sqlString = @"insert into TP_PAT_PIECEPROCEDURE
- (
- PIECETACTICSID,
- PROCEDUREID,
- PROCEDUREFLAG
- ) values
- (
- :PIECETACTICSID,
- :PROCEDUREID,
- :PROCEDUREFLAG
- )";
- if (!string.IsNullOrEmpty(pieceworkendity.PieceProcedureIDS))
- {
- string[] sub = pieceworkendity.QualityBaseProcedureIDS.Split(',');
- for (int i = 0; i < sub.Length; i++)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",idStr),
- new OracleParameter(":PROCEDUREID",sub[i]),
- new OracleParameter(":PROCEDUREFLAG",2),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- if (pieceworkendity.wagesentity != null)
- {
- foreach (Dongke.IBOSS.PRD.WCF.DataModels.PAMModule.WagesEntity entity in pieceworkendity.wagesentity)
- {
- //sqlString = "select 1 from TP_PAT_Wages where WagesTypeID=:WagesTypeID ";
- //parmeters1 = new OracleParameter[]
- //{
- // new OracleParameter(":WagesTypeID",entity.WagesTypeID),
- //};
- //DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- //if (ds != null && ds.Tables[0].Rows.Count > 0)
- //{
- // isError = true;
- // intResult = -2;//重复数据
- // break;
- //}
- sqlString = @"insert into TP_PAT_Wages
- (
- PieceTacticsID,
- WagesTypeID,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- RSuperiorCoefficient,
- RQualifiedCoefficient,
- RepairSubsidyRate,
- RepairSubsidy
- ) values
- (
- :PieceTacticsID,
- :WagesTypeID,
- :StandardWages,
- :DamageSubsidyRate,
- :DamageSubsidy,
- :RSuperiorCoefficient,
- :RQualifiedCoefficient,
- :RepairSubsidyRate,
- :RepairSubsidy
- )
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",idStr),
- new OracleParameter(":WagesTypeID",entity.WagesTypeID),
- new OracleParameter(":StandardWages",entity.StandardWages),
- new OracleParameter(":DamageSubsidyRate",entity.DamageSubsidyRate),
- new OracleParameter(":DamageSubsidy",entity.DamageSubsidy),
- new OracleParameter(":RSuperiorCoefficient",entity.RSuperiorCoefficient),
- new OracleParameter(":RQualifiedCoefficient",entity.RQualifiedCoefficient),
- new OracleParameter(":RepairSubsidyRate",entity.RepairSubsidyRate),
- new OracleParameter(":RepairSubsidy",entity.RepairSubsidy),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //质量工价
- if (entity.qualitywagesentity != null)
- {
- foreach (QualityWagesEntity qualitywagesentity in entity.qualitywagesentity)
- {
- sqlString = "select 1 from TP_PAT_QualityWages where QualityRate=:QualityRate and WagesTypeID=:WagesTypeID and PieceTacticsID=:PieceTacticsID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityRate",qualitywagesentity.QualityRate),
- new OracleParameter(":WagesTypeID",qualitywagesentity.WagesTypeID),
- new OracleParameter(":PieceTacticsID",pieceworkendity.PieceTacticsID),
- };
- DataSet ds2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds2 != null && ds2.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -3;//重复数据
- break;
- }
- sqlString = @"insert into TP_PAT_QualityWages
- (
- PieceTacticsID,
- WagesTypeID,
- QualityRate,
- Balance,
- QualityWages
- ) values
- (
- :PieceTacticsID,
- :WagesTypeID,
- :QualityRate,
- :Balance,
- :QualityWages
- )
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",idStr),
- new OracleParameter(":WagesTypeID",qualitywagesentity.WagesTypeID),
- new OracleParameter(":QualityRate",qualitywagesentity.QualityRate),
- new OracleParameter(":Balance",qualitywagesentity.Balance),
- new OracleParameter(":QualityWages",qualitywagesentity.QualityWages),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- }
- }
- }
- else
- {
- //编辑
- //一个解决方案只能对应一个计件工资策略
- if (pieceworkendity.PayPlanID != null)
- {
- sqlString = "select 1 from TP_PAT_Piecework where PayPlanID=:PayPlanID and AccountID=:AccountID and PieceTacticsID<>:PieceTacticsID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",pieceworkendity.PayPlanID),
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":PieceTacticsID",pieceworkendity.PieceTacticsID),
- };
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -1;//重复数据
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- return intResult;
- }
- }
- // 更新语句
- sqlString = @" update TP_PAT_Piecework
- set
- PieceTacticsID=:PieceTacticsID,
- PayPlanID=:PayPlanID,
- PieceType=:PieceType,
-
- PieceCoefficient=:PieceCoefficient,
- DamageFlag=:DamageFlag,
- DamageCoefficient=:DamageCoefficient,
- UnqualifiedFlag=:UnqualifiedFlag,
- UnqualifiedCoefficient=:UnqualifiedCoefficient,
- QualifiedFlag=:QualifiedFlag,
- QualifiedCoefficient=:QualifiedCoefficient,
-
- UpdateUserID=:UpdateUserID,
- PieceTacticsName=:PieceTacticsName
- where PieceTacticsID=:PieceTacticsID
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",pieceworkendity.PieceTacticsID),
- new OracleParameter(":PayPlanID",pieceworkendity.PayPlanID),
- new OracleParameter(":PieceType",pieceworkendity.PieceType),
-
- new OracleParameter(":PieceCoefficient",pieceworkendity.PieceCoefficient),
- new OracleParameter(":DamageFlag",pieceworkendity.DamageFlag),
- new OracleParameter(":DamageCoefficient",pieceworkendity.DamageCoefficient),
- new OracleParameter(":UnqualifiedFlag",pieceworkendity.UnqualifiedFlag),
- new OracleParameter(":UnqualifiedCoefficient",pieceworkendity.UnqualifiedCoefficient),
- new OracleParameter(":QualifiedFlag",pieceworkendity.QualifiedFlag),
- new OracleParameter(":QualifiedCoefficient",pieceworkendity.QualifiedCoefficient),
-
- new OracleParameter(":UpdateUserID",sUserInfo.UserID),
- new OracleParameter(":PieceTacticsName",pieceworkendity.PayPlanName),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //删除完事重新添加子表数据
- sqlString = "delete from TP_PAT_Wages where PieceTacticsID=" + pieceworkendity.PieceTacticsID;
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "delete from TP_PAT_QualityWages where PieceTacticsID=" + pieceworkendity.PieceTacticsID;
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "delete from TP_PAT_PIECEPROCEDURE where PieceTacticsID=" + pieceworkendity.PieceTacticsID;
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // 插入计件工序
- sqlString = @"insert into TP_PAT_PIECEPROCEDURE
- (
- PIECETACTICSID,
- PROCEDUREID,
- PROCEDUREFLAG
- ) values
- (
- :PIECETACTICSID,
- :PROCEDUREID,
- :PROCEDUREFLAG
- )";
- if (!string.IsNullOrEmpty(pieceworkendity.PieceProcedureIDS))
- {
- string[] sub = pieceworkendity.PieceProcedureIDS.Split(',');
- for (int i = 0; i < sub.Length; i++)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",pieceworkendity.PieceTacticsID),
- new OracleParameter(":PROCEDUREID",sub[i]),
- new OracleParameter(":PROCEDUREFLAG",1),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- // 插入质量工序
- sqlString = @"insert into TP_PAT_PIECEPROCEDURE
- (
- PIECETACTICSID,
- PROCEDUREID,
- PROCEDUREFLAG
- ) values
- (
- :PIECETACTICSID,
- :PROCEDUREID,
- :PROCEDUREFLAG
- )";
- if (!string.IsNullOrEmpty(pieceworkendity.PieceProcedureIDS))
- {
- string[] sub = pieceworkendity.QualityBaseProcedureIDS.Split(',');
- for (int i = 0; i < sub.Length; i++)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",pieceworkendity.PieceTacticsID),
- new OracleParameter(":PROCEDUREID",sub[i]),
- new OracleParameter(":PROCEDUREFLAG",2),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- if (pieceworkendity.wagesentity != null)
- {
- foreach (Dongke.IBOSS.PRD.WCF.DataModels.PAMModule.WagesEntity entity in pieceworkendity.wagesentity)
- {
- //sqlString = "select 1 from TP_PAT_Wages where WagesTypeID=:WagesTypeID ";
- //parmeters1 = new OracleParameter[]
- //{
- // new OracleParameter(":WagesTypeID",entity.WagesTypeID),
- //};
- //DataSet ds3 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- //if (ds3 != null && ds3.Tables[0].Rows.Count > 0)
- //{
- // isError = true;
- // intResult = -2;//重复数据
- // break;
- //}
- sqlString = @"insert into TP_PAT_Wages
- (
- PieceTacticsID,
- WagesTypeID,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- RSuperiorCoefficient,
- RQualifiedCoefficient,
- RepairSubsidyRate,
- RepairSubsidy
- ) values
- (
- :PieceTacticsID,
- :WagesTypeID,
- :StandardWages,
- :DamageSubsidyRate,
- :DamageSubsidy,
- :RSuperiorCoefficient,
- :RQualifiedCoefficient,
- :RepairSubsidyRate,
- :RepairSubsidy
- )
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",pieceworkendity.PieceTacticsID),
- new OracleParameter(":WagesTypeID",entity.WagesTypeID),
- new OracleParameter(":StandardWages",entity.StandardWages),
- new OracleParameter(":DamageSubsidyRate",entity.DamageSubsidyRate),
- new OracleParameter(":DamageSubsidy",entity.DamageSubsidy),
- new OracleParameter(":RSuperiorCoefficient",entity.RSuperiorCoefficient),
- new OracleParameter(":RQualifiedCoefficient",entity.RQualifiedCoefficient),
- new OracleParameter(":RepairSubsidyRate",entity.RepairSubsidyRate),
- new OracleParameter(":RepairSubsidy",entity.RepairSubsidy),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //质量工价
- if (entity.qualitywagesentity != null)
- {
- foreach (QualityWagesEntity qualitywagesentity in entity.qualitywagesentity)
- {
- sqlString = "select 1 from TP_PAT_QualityWages where QualityRate=:QualityRate and WagesTypeID=:WagesTypeID and PieceTacticsID=:PieceTacticsID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityRate",qualitywagesentity.QualityRate),
- new OracleParameter(":WagesTypeID",qualitywagesentity.WagesTypeID),
- new OracleParameter(":PieceTacticsID",pieceworkendity.PieceTacticsID),
- };
- DataSet ds2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds2 != null && ds2.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -3;//重复数据
- break;
- }
- sqlString = @"insert into TP_PAT_QualityWages
- (
- PieceTacticsID,
- WagesTypeID,
- QualityRate,
- Balance,
- QualityWages
- ) values
- (
- :PieceTacticsID,
- :WagesTypeID,
- :QualityRate,
- :Balance,
- :QualityWages
- )
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",pieceworkendity.PieceTacticsID),
- new OracleParameter(":WagesTypeID",qualitywagesentity.WagesTypeID),
- new OracleParameter(":QualityRate",qualitywagesentity.QualityRate),
- new OracleParameter(":Balance",qualitywagesentity.Balance),
- new OracleParameter(":QualityWages",qualitywagesentity.QualityWages),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- }
- }
- }
- if (isError)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- else
- {
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- }
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- }
- /// <summary>
- /// 保存品质考核策略
- /// </summary>
- /// <param name="IsEdit">false 新建 true 编辑</param>
- /// <param name="dtJobsPayPlan">数据源</param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static int SaveQualityASS(QualityASS qualityASS, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- int intResult = 0;
- oracleTrConn.Connect();
- string sqlString = "";
- OracleParameter[] parmeters1 = null;
- bool isError = false;
- if (qualityASS.QualityASSTacticsID == 0) // 新增
- {
- //一个解决方案只能对应一个计件工资策略
- //if (qualityASS.PayPlanID != null)
- //{
- // sqlString = "select 1 from TP_PAT_QualityASS where PayPlanID=:PayPlanID and AccountID=:AccountID ";
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":PayPlanID",qualityASS.PayPlanID),
- // new OracleParameter(":AccountID",sUserInfo.AccountID),
- // };
- // DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- // if (ds != null && ds.Tables[0].Rows.Count > 0)
- // {
- // isError = true;
- // intResult = -1;//重复数据
- // oracleTrConn.Rollback();
- // oracleTrConn.Disconnect();
- // return intResult;
- // }
- //}
- string sql = "select SEQ_PAT_QualityASS_ID.nextval from dual";
- string idStr = oracleTrConn.GetSqlResultToStr(sql);
- sqlString = @"insert into TP_PAT_QualityASS
- (
- QualityASSTacticsID,
- QualityTacticsName,
- PayPlanID,
- DefectFine,
- AccountID,
- CreateUserID,
- UpdateUserID
- ) values
- (
- :QualityASSTacticsID,
- :QualityTacticsName,
- :PayPlanID,
- :DefectFine,
- :AccountID,
- :CreateUserID,
- :UpdateUserID
- )";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityASSTacticsID",idStr),
- new OracleParameter(":PayPlanID",qualityASS.PayPlanID),
- new OracleParameter(":QualityTacticsName",qualityASS.QualityTacticsName),
- new OracleParameter(":DefectFine",qualityASS.DefectFine),
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":CreateUserID",sUserInfo.UserID),
- new OracleParameter(":UpdateUserID",sUserInfo.UserID),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // // 插入质量工序
- // sqlString = @"insert into TP_PAT_QualityProcedure
- // (
- // QualityASSTacticsID,
- // PROCEDUREID
- // ) values
- // (
- // :QualityASSTacticsID,
- // :PROCEDUREID
- // )";
- // if (!string.IsNullOrEmpty(qualityASS.QualityBaseProcedureIDS))
- // {
- // string[] sub = qualityASS.QualityBaseProcedureIDS.Split(',');
- // for (int i = 0; i < sub.Length; i++)
- // {
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":QualityASSTacticsID",idStr),
- // new OracleParameter(":PROCEDUREID",sub[i]),
- // };
- // intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // }
- // }
- if (qualityASS.qualityGoods != null)
- {
- foreach (Dongke.IBOSS.PRD.WCF.DataModels.PAMModule.QualityGoods entity in qualityASS.qualityGoods)
- {
- //sqlString = "select 1 from TP_PAT_QualityGoods where WagesTypeID=:WagesTypeID ";
- //parmeters1 = new OracleParameter[]
- //{
- // new OracleParameter(":WagesTypeID",entity.WagesTypeID),
- //};
- //DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- //if (ds != null && ds.Tables[0].Rows.Count > 0)
- //{
- // isError = true;
- // intResult = -2;//重复数据
- // break;
- //}
- sqlString = @"insert into TP_PAT_QualityGoods
- (
- QualityASSTacticsID,
- WagesTypeID
- ) values
- (
- :PieceTacticsID,
- :WagesTypeID
- )
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",idStr),
- new OracleParameter(":WagesTypeID",entity.WagesTypeID),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //质量工价
- if (entity.qualityReward != null)
- {
- foreach (QualityReward qualitywagesentity in entity.qualityReward)
- {
- sqlString = "select 1 from TP_PAT_QualityReward where QualityRate=:QualityRate and WagesTypeID=:WagesTypeID and QualityASSTacticsID=:QualityASSTacticsID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityRate",qualitywagesentity.QualityRate),
- new OracleParameter(":WagesTypeID",qualitywagesentity.WagesTypeID),
- new OracleParameter(":QualityASSTacticsID",qualitywagesentity.QualityASSTacticsID),
- };
- DataSet ds2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds2 != null && ds2.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -3;//重复数据
- break;
- }
- sqlString = @"insert into TP_PAT_QualityReward
- (
- QualityASSTacticsID,
- WagesTypeID,
- QualityRate,
- QualityReward
- ) values
- (
- :QualityASSTacticsID,
- :WagesTypeID,
- :QualityRate,
- :QualityReward
- )
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityASSTacticsID",idStr),
- new OracleParameter(":WagesTypeID",qualitywagesentity.WagesTypeID),
- new OracleParameter(":QualityRate",qualitywagesentity.QualityRate),
- new OracleParameter(":QualityReward",qualitywagesentity.QualityReward2),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- }
- }
- }
- else
- {
- //编辑
- //一个解决方案只能对应一个计件工资策略
- //if (qualityASS.PayPlanID != null)
- //{
- // sqlString = "select 1 from TP_PAT_QualityASS where PayPlanID=:PayPlanID and AccountID=:AccountID ";
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":PayPlanID",qualityASS.PayPlanID),
- // new OracleParameter(":AccountID",sUserInfo.AccountID),
- // };
- // DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- // if (ds != null && ds.Tables[0].Rows.Count > 0)
- // {
- // isError = true;
- // intResult = -1;//重复数据
- // oracleTrConn.Rollback();
- // oracleTrConn.Disconnect();
- // return intResult;
- // }
- //}
- // 更新语句
- sqlString = @" update TP_PAT_QualityASS
- set
- PayPlanID=:PayPlanID,
- DefectFine=:DefectFine,
- QualityTacticsName=:QualityTacticsName,
- UpdateUserID=:UpdateUserID
- where QualityASSTacticsID=:QualityASSTacticsID
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityASSTacticsID",qualityASS.QualityASSTacticsID),
- new OracleParameter(":PayPlanID",qualityASS.PayPlanID),
- new OracleParameter(":DefectFine",qualityASS.DefectFine),
- new OracleParameter(":QualityTacticsName",qualityASS.QualityTacticsName),
- new OracleParameter(":UpdateUserID",sUserInfo.UserID),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //删除完事重新添加子表数据
- sqlString = "delete from TP_PAT_QualityGoods where QualityASSTacticsID=" + qualityASS.QualityASSTacticsID;
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "delete from TP_PAT_QualityReward where QualityASSTacticsID=" + qualityASS.QualityASSTacticsID;
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //sqlString = "delete from TP_PAT_QualityProcedure where QualityASSTacticsID=" + qualityASS.QualityASSTacticsID;
- //intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // // 插入质量工序
- // sqlString = @"insert into TP_PAT_QualityProcedure
- // (
- // QualityASSTacticsID,
- // PROCEDUREID
- // ) values
- // (
- // :QualityASSTacticsID,
- // :PROCEDUREID
- // )";
- // if (!string.IsNullOrEmpty(qualityASS.QualityBaseProcedureIDS))
- // {
- // string[] sub = qualityASS.QualityBaseProcedureIDS.Split(',');
- // for (int i = 0; i < sub.Length; i++)
- // {
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":QualityASSTacticsID", qualityASS.QualityASSTacticsID),
- // new OracleParameter(":PROCEDUREID",sub[i]),
- // };
- // intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // }
- // }
- if (qualityASS.qualityGoods != null)
- {
- foreach (Dongke.IBOSS.PRD.WCF.DataModels.PAMModule.QualityGoods entity in qualityASS.qualityGoods)
- {
- //sqlString = "select 1 from TP_PAT_QualityGoods where WagesTypeID=:WagesTypeID ";
- //parmeters1 = new OracleParameter[]
- //{
- // new OracleParameter(":WagesTypeID",entity.WagesTypeID),
- //};
- //DataSet ds3 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- //if (ds3 != null && ds3.Tables[0].Rows.Count > 0)
- //{
- // isError = true;
- // intResult = -2;//重复数据
- // break;
- //}
- sqlString = @"insert into TP_PAT_QualityGoods
- (
- QualityASSTacticsID,
- WagesTypeID
- ) values
- (
- :QualityASSTacticsID,
- :WagesTypeID
- )
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityASSTacticsID",qualityASS.QualityASSTacticsID),
- new OracleParameter(":WagesTypeID",entity.WagesTypeID),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //质量工价
- if (entity.qualityReward != null)
- {
- foreach (QualityReward qualitywagesentity in entity.qualityReward)
- {
- sqlString = "select 1 from TP_PAT_QualityReward where QualityRate=:QualityRate and WagesTypeID=:WagesTypeID and QualityASSTacticsID=:QualityASSTacticsID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityRate",qualitywagesentity.QualityRate),
- new OracleParameter(":WagesTypeID",qualitywagesentity.WagesTypeID),
- new OracleParameter(":QualityASSTacticsID",qualityASS.QualityASSTacticsID),
- };
- DataSet ds2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds2 != null && ds2.Tables[0].Rows.Count > 0)
- {
- isError = true;
- intResult = -3;//重复数据
- break;
- }
- sqlString = @"insert into TP_PAT_QualityReward
- (
- QualityASSTacticsID,
- WagesTypeID,
- QualityRate,
- QualityReward
- ) values
- (
- :QualityASSTacticsID,
- :WagesTypeID,
- :QualityRate,
- :QualityReward
- )
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityASSTacticsID",qualityASS.QualityASSTacticsID),
- new OracleParameter(":WagesTypeID",qualitywagesentity.WagesTypeID),
- new OracleParameter(":QualityRate",qualitywagesentity.QualityRate),
- new OracleParameter(":QualityReward",qualitywagesentity.QualityReward2),
-
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- }
- }
- }
- }
- if (isError)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- else
- {
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- }
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- #region 工资结算
- /// <summary>
- /// 结算工资
- /// </summary>
- /// <param name="IsEdit">false 新建 true 编辑</param>
- /// <param name="dtJobsPayPlan">数据源</param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static int SavePayPiecework(int Month, int Year, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- DataTable dtExistUserID = new DataTable();
- dtExistUserID.Columns.Add("staffid", typeof(int));
- dtExistUserID.Columns.Add("userid", typeof(int));
- int intResult = 0;
- bool UpdateSettlementFlag = false;
- oracleTrConn.Connect();
- oracleTrConn.IsCommandTimeout = false;
- #region 判断是否已经结算此月
- string sqlExist = "select 1 from TP_PAR_PayrollAccount where YYYYMM=:YYYYMM";
- OracleParameter[] parmetersExist = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- };
- DataSet dsExist = oracleTrConn.GetSqlResultToDs(sqlExist, parmetersExist);
- if (dsExist != null && dsExist.Tables[0].Rows.Count > 0)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- return -99;
- }
- #endregion
- #region 查询系统参数设定值,用来结算工资范围取值
- DateTime? dateStartTime = null;
- DateTime? dateEndTime = null;
- string sqlString = "select SettingValue from TP_MST_SystemSetting where accountid=:accountid and SettingCode='S_CMN_0003'";
- OracleParameter[] parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- };
- DataSet dsSystemSettings = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsSystemSettings != null && dsSystemSettings.Tables[0].Rows.Count > 0)
- {
- // 算出此月一共多少天,防止设置的值,大于当月的天数
- int daysCount = DateTime.DaysInMonth(Year, Month);
- if (dsSystemSettings.Tables[0].Rows[0]["SettingValue"].ToString() == "月末" ||
- dsSystemSettings.Tables[0].Rows[0]["SettingValue"].ToString() == "0")
- {
- dateStartTime = new DateTime(Year, Month, 1);
- dateEndTime = new DateTime(Year, Month, daysCount, 23, 59, 59);
- }
- else
- {
- // 选择的值,大于当月的天数
- if (Convert.ToInt32(dsSystemSettings.Tables[0].Rows[0]["SettingValue"]) > daysCount)
- {
- dateEndTime = new DateTime(Year, Month, daysCount, 23, 59, 59);
- dateStartTime = dateEndTime.Value.AddMonths(-1).AddDays(1);
- }
- else
- {
- dateEndTime = new DateTime(Year, Month, Convert.ToInt32(dsSystemSettings.Tables[0].Rows[0]["SettingValue"]), 23, 59, 59);
- dateStartTime = dateEndTime.Value.AddMonths(-1).AddDays(1);
- }
- }
- }
- //dateStartTime = new DateTime(2015, 9, 8);
- //dateEndTime = new DateTime(2015,9, 8, 23, 59, 59);
- //dateEndTime = dateStartTime.Value.AddDays(10);
- #endregion
- #region 根据筛选日期往临时表里插入数据
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":dateStartTime",OracleDbType.Date,dateStartTime,ParameterDirection.Input),
- new OracleParameter(":dateEndTime",OracleDbType.Date,dateEndTime,ParameterDirection.Input),
- new OracleParameter(":accountid",sUserInfo.AccountID),
- };
- // 生产数据临时表
- // sqlString = @"insert into TMP_PAM_ProductionData
- // select
- // ProductionDataID,
- // BarCode,
- // CentralizedBatchNo,
- // ProductionLineID,
- // ProductionLineCode,
- // ProductionLineName,
- // ProcedureID,
- // ProcedureCode,
- // ProcedureName,
- // ProcedureModel,
- // ModelType,
- // PieceType,
- // IsReworked,
- // NodeType,
- // IsPublicBody,
- // IsReFire,
- // GoodsLevelID,
- // GoodsLevelTypeID,
- // SpecialRepairFlag,
- // OrganizationID,
- // GoodsID,
- // GoodsCode,
- // GoodsName,
- // UserID,
- // UserCode,
- // UserName,
- // ClassesSettingID,
- // KilnID,
- // KilnCode,
- // KilnName,
- // KilnCarID,
- // KilnCarCode,
- // KilnCarName,
- // KilnCarBatchNo,
- // KilnCarPosition,
- // ReworkProcedureID,
- // ReworkProcedureCode,
- // ReworkProcedureName,
- // GroutingDailyID,
- // GroutingDailyDetailID,
- // GroutingLineID,
- // GroutingLineCode,
- // GroutingLineName,
- // GMouldTypeID,
- // CanManyTimes,
- // GroutingLineDetailID,
- // GroutingDate,
- // GroutingMouldCode,
- // MouldCode,
- // GroutingUserID,
- // GroutingUserCode,
- // GroutingNum,
- // Remarks,
- // AccountDate,
- // SettlementFlag,
- // AccountID,
- // ValueFlag,
- // CreateTime,
- // CreateUserID,
- // UpdateTime,
- // UpdateUserID,
- // OPTimeStamp
- // from TP_PM_ProductionData where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1 ";//and SettlementFlag=0
- // intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //#region 根据筛选日期更新生产数据结算标识
- //// 更新生产数据结算标识
- //sqlString = @"update TP_PM_ProductionData set SettlementFlag=1 where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1 and SettlementFlag=0";
- //intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //#endregion
- // 生产缺陷
- sqlString = @"insert into TMP_PAM_Defect
- select
- ProductionDefectID,
- ProductionDataID,
- BarCode,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- ProcedureID,
- ProcedureCode,
- ProcedureName,
- UserID,
- UserCode,
- UserName,
- GoodsID,
- GoodsCode,
- GoodsName,
- DefectID,
- DefectCode,
- DefectName,
- DefectPositionID,
- DefectPositionCode,
- DefectPositionName,
- ScrapResponFlag,
- DefectProductionDataID,
- DefectProcedureID,
- DefectProcedureCode,
- DefectProcedureName,
- DefectUserID,
- DefectUserCode,
- DefectUserName,
- DefectJobs,
- DefectFine,
- MissedUserID,
- MissedUserCode,
- MissedUserName,
- Remarks,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_Defect where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //生产缺陷责任者
- sqlString = @"insert into TMP_PAM_DefectResponsible
- select
- ProductionDefectID,
- StaffID,
- StaffStatus,
- UserID,
- UserCode,
- UJobsID,
- SJobsID,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_DefectResponsible where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // //缺陷漏检责任者
- // sqlString = @"insert into TP_PAM_DefectMissedResponsible
- // select * from TP_PM_DefectMissedResponsible where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- // intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //废弃产品
- sqlString = @"insert into TMP_PAM_ScrapProduct
- select
- ScrapProductID,
- BarCode,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- ProcedureID,
- ProcedureCode,
- ProcedureName,
- GoodsID,
- GoodsCode,
- GoodsName,
- GroutingDailyID,
- GroutingDailyDetailID,
- GroutingDate,
- GroutingLineID,
- GroutingLineCode,
- GroutingLineName,
- GMouldTypeID,
- GroutingLineDetailID,
- GroutingMouldCode,
- MouldCode,
- GroutingUserID,
- GroutingUserCode,
- GroutingNum,
- IsPublicBody,
- IsReFire,
- SpecialRepairFlag,
- GoodsLevelID,
- GoodsLevelTypeID,
- ResponType,
- ScrapFine,
- ScrapDate,
- Rreason,
- Remarks,
- AuditStatus,
- Auditor,
- AuditDate,
- AuditOpinion,
- AccountDate,
- KilnID,
- KilnCode,
- KilnName,
- KilnCarID,
- KilnCarCode,
- KilnCarName,
- KilnCarBatchNo,
- KilnCarPosition,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
-
- from TP_PM_ScrapProduct where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1 and AuditStatus=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //产品废弃责任工序
- sqlString = @"insert into TMP_PAM_ResponProcedure
- select
- ResponProcedureID,
- ScrapProductID,
- BarCode,
- ProductionDataID,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- ProcedureID,
- ProcedureCode,
- ProcedureName,
- UserID,
- UserCode,
- UserName,
- Remarks,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_ResponProcedure
- where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1 ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //产品废弃责任者
- sqlString = @"insert into TMP_PAM_ScrapResponsible
- select
- ResponsibleID,
- ScrapProductID,
- BarCode,
- ResponType,
- ResponProcedureID,
- ScrapFine,
- StaffID,
- StaffStatus,
- UserID,
- UserCode,
- UJobsID,
- SJobsID,
- AccountID,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_ScrapResponsible where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //成品 (干补补贴用)
- sqlString = @"insert into TMP_PAM_FinishedProduct
- select
- BarCode,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- IsPublicBody,
- IsReFire,
- SpecialRepairFlag,
- GoodsLevelID,
- GoodsLevelTypeID,
- GoodsID,
- GoodsCode,
- GoodsName,
- GroutingDailyID,
- GroutingDailyDetailID,
- GroutingDate,
- GroutingLineID,
- GroutingLineCode,
- GroutingLineName,
- GMouldTypeID,
- GroutingLineDetailID,
- GroutingMouldCode,
- MouldCode,
- GroutingUserID,
- GroutingUserCode,
- GroutingNum,
- Remarks,
- AccountDate,
- SettlementFlag,
- KilnID,
- KilnCode,
- KilnName,
- KilnCarID,
- KilnCarCode,
- KilnCarName,
- KilnCarBatchNo,
- KilnCarPosition,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_FinishedProduct where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- #region 读取工资方案,用来最外层循环,以后可以是多个方法,目前只有一个工资方案
- sqlString = "select PayPlanID from TP_PAS_PayPlan where AccountID=:AccountID and ValueFlag=1";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- };
- DataSet dsPayPlan = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- // dsPayPlan为工资方案数据集
- if (dsPayPlan != null && dsPayPlan.Tables[0].Rows.Count > 0)
- {
- // 进入循环,
- for (int i = 0; i < dsPayPlan.Tables[0].Rows.Count; i++)
- {
- #region 查出计件工资策略
- sqlString = @"select * from TP_PAT_Piecework where accountid=:accountid and valueflag=1 and PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsPiecework = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- int PieceTacticsID = 0; //计件工资策略ID
- string PieceType = ""; // 工序类型
- decimal PieceCoefficient = 1; // 计件系数
- string DamageFlag = ""; //损坯计算标识
- decimal? DamageCoefficient = null; //损坯系数
- string UnqualifiedFlag = ""; //次品计算标识
- decimal? UnqualifiedCoefficient = null; //次品系数
- string QualifiedFlag = ""; //副品计算标识
- decimal? QualifiedCoefficient = null; //副品系数
- if (dsPiecework != null && dsPiecework.Tables[0].Rows.Count > 0)
- {
- // 有且只能一个对应的工资方案,直接取table0行,如果取出多行,此数据不对,因为有且只能一行
- // 赋值代码
- PieceTacticsID = Convert.ToInt32(dsPiecework.Tables[0].Rows[0]["PieceTacticsID"].ToString());
- PieceType = dsPiecework.Tables[0].Rows[0]["PieceType"].ToString();
- //PieceProcedureID = Convert.ToInt32(dsPiecework.Tables[0].Rows[0]["PieceProcedureID"]);
- PieceCoefficient = Convert.ToDecimal(dsPiecework.Tables[0].Rows[0]["PieceCoefficient"]);
- DamageFlag = dsPiecework.Tables[0].Rows[0]["DamageFlag"].ToString();
- DamageCoefficient = Convert.ToDecimal(dsPiecework.Tables[0].Rows[0]["DamageCoefficient"]);
- UnqualifiedFlag = dsPiecework.Tables[0].Rows[0]["UnqualifiedFlag"].ToString();
- UnqualifiedCoefficient = Convert.ToDecimal(dsPiecework.Tables[0].Rows[0]["UnqualifiedCoefficient"]);
- QualifiedFlag = dsPiecework.Tables[0].Rows[0]["QualifiedFlag"].ToString();
- QualifiedCoefficient = Convert.ToDecimal(dsPiecework.Tables[0].Rows[0]["QualifiedCoefficient"]);
- //QualityBaseProcedureID = Convert.ToInt32(dsPiecework.Tables[0].Rows[0]["QualityBaseProcedureID"]);
- }
- #endregion
- #region 查出计件工资策略(计件工序)
- sqlString = "select PieceTacticsID,ProcedureID,ProcedureFlag from TP_PAT_PieceProcedure where PieceTacticsID=:PieceTacticsID and ProcedureFlag=1";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",PieceTacticsID),
- };
- DataSet dsPieceProcedure_1 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- sqlString = "select PieceTacticsID,ProcedureID,ProcedureFlag from TP_PAT_PieceProcedure where PieceTacticsID=:PieceTacticsID and ProcedureFlag=2";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",PieceTacticsID),
- };
- DataSet dsPieceProcedure_2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- string ProcedureIDS_Delete = "0"; //默认给个0,怕没有些去进行筛选出现错误
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- if(p1==0)
- {
- ProcedureIDS_Delete = "";
- }
- ProcedureIDS_Delete = ProcedureIDS_Delete + dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"].ToString() + ",";
- }
- ProcedureIDS_Delete = ProcedureIDS_Delete.Trim(',');
- dsPieceProcedure_1.Tables[0].Merge(dsPieceProcedure_2.Tables[0]);
- string ProcedureIDS_New = "";
- for (int a1 = 0; a1 < dsPieceProcedure_1.Tables[0].Rows.Count; a1++)
- {
- ProcedureIDS_New += dsPieceProcedure_1.Tables[0].Rows[a1]["ProcedureID"].ToString() + ",";
- }
- ProcedureIDS_New = ProcedureIDS_New.Trim(',');
- //modify wangx 20150917
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":dateStartTime",OracleDbType.Date,dateStartTime,ParameterDirection.Input),
- new OracleParameter(":dateEndTime",OracleDbType.Date,dateEndTime,ParameterDirection.Input),
- new OracleParameter(":accountid",sUserInfo.AccountID),
- new OracleParameter(":PieceTacticsID",PieceTacticsID),
- };
- // 生产数据临时表
- sqlString = @"insert into TMP_PAM_ProductionData
- select
- ProductionDataID,
- BarCode,
- CentralizedBatchNo,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- ProcedureID,
- ProcedureCode,
- ProcedureName,
- ProcedureModel,
- ModelType,
- PieceType,
- IsReworked,
- NodeType,
- IsPublicBody,
- IsReFire,
- GoodsLevelID,
- GoodsLevelTypeID,
- SpecialRepairFlag,
- OrganizationID,
- GoodsID,
- GoodsCode,
- GoodsName,
- UserID,
- UserCode,
- UserName,
- ClassesSettingID,
- KilnID,
- KilnCode,
- KilnName,
- KilnCarID,
- KilnCarCode,
- KilnCarName,
- KilnCarBatchNo,
- KilnCarPosition,
- ReworkProcedureID,
- ReworkProcedureCode,
- ReworkProcedureName,
- GroutingDailyID,
- GroutingDailyDetailID,
- GroutingLineID,
- GroutingLineCode,
- GroutingLineName,
- GMouldTypeID,
- CanManyTimes,
- GroutingLineDetailID,
- GroutingDate,
- GroutingMouldCode,
- MouldCode,
- GroutingUserID,
- GroutingUserCode,
- GroutingNum,
- Remarks,
- AccountDate,
- SettlementFlag,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_ProductionData where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1
- and (TP_PM_ProductionData.ProcedureID in(select ProcedureID from TP_PAT_PieceProcedure where PieceTacticsID=:PieceTacticsID )
- or TP_PM_ProductionData.ModelType=-1)";
- //and (TP_PM_ProductionData.ProcedureID in(select ProcedureID from TP_PAT_PieceProcedure where PieceTacticsID=:PieceTacticsID )
- // or TP_PM_ProductionData.ModelType=-1)
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #region 根据筛选日期更新生产数据结算标识
- if (UpdateSettlementFlag)
- {
- // 更新生产数据结算标识
- sqlString = @"update TP_PM_ProductionData set SettlementFlag=1 where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1 and SettlementFlag=0 and (TP_PM_ProductionData.ProcedureID in(select ProcedureID from TP_PAT_PieceProcedure where PieceTacticsID=:PieceTacticsID ) or TP_PM_ProductionData.ModelType=-1)";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- #endregion
- //modify wangx 20150917 end
- #region 查出工资方案参数设定
- sqlString = "select SettingCode,SettingName,PayPlanID,SettingValue from TP_PAS_PayPlanSetting where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsPayPlanSetting = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- // 1.算出是否有新品,还是老品
- DataRow[] drMonth = dsPayPlanSetting.Tables[0].Select("SettingCode='01001'");
- int newGoodsMonth = Convert.ToInt32(drMonth[0]["SettingValue"]); //新产品适应周期(月)
- #region 查出工资临时生产数据表数据,用于计算工资
- //查出在产品工介分类中的生产数据,用于计算每个人的工资
- sqlString = @"select
- TMP_PAM_ProductionData.ProductionDataID,
- TMP_PAM_ProductionData.BarCode,
- TMP_PAM_ProductionData.ProcedureID,
- TMP_PAM_ProductionData.GoodsID,
- TMP_PAM_ProductionData.UserID,
- TP_MST_Goods.StartingDate,
- TP_PAM_GoodsWagesType.WagesTypeID,
- TMP_PAM_ProductionData.GoodsLevelTypeID,
- case
- when add_months(TP_MST_Goods.StartingDate, :month)>TMP_PAM_ProductionData.Groutingdate
- then 1 else 3 end as GoodsFlag,
- TMP_PAM_ProductionData.ModelType
- from
- TMP_PAM_ProductionData
- inner join TP_PAM_GoodsWagesType
- on TMP_PAM_ProductionData.GoodsID=TP_PAM_GoodsWagesType.GoodsID
- left join TP_MST_Goods
- on TP_PAM_GoodsWagesType.GoodsID=TP_MST_Goods.GoodsID order by TMP_PAM_ProductionData.UserID ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":month",newGoodsMonth),
- };
- DataSet dsTMPProductionData = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 查出工资方案对应工种的员工,用于给每个员工结算工资
- sqlString = @"select TP_HR_Staff.StaffID,TP_HR_Staff.StaffStatus
- ,TP_HR_Staff.EntryDate,TP_HR_Staff.TurnoverDate,TP_HR_Staff.ExProbationEndDate, TP_MST_UserStaff.UserID
- from TP_HR_Staff
- inner join TP_MST_UserStaff on TP_HR_Staff.StaffID=TP_MST_UserStaff.StaffID
- where TP_HR_Staff.Jobs in
- (
- select JobsID from TP_PAM_JobsPayPlan where PayPlanID=:PayPlanID
- )
- and TP_HR_Staff.accountid=:accountid and TP_HR_Staff.valueflag=1 order by TP_MST_UserStaff.UserID
- ";//and userid=547
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsJobsPayPlan = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 查出全部废弃产品表数据,用于计算工资
- sqlString = @"select TMP_PAM_ResponProcedure.UserID,TP_PAM_GoodsWagesType.WagesTypeID,TP_MST_Goods.StartingDate,TMP_PAM_ScrapProduct.barcode,TMP_PAM_ScrapProduct.AuditStatus,
- case
- when add_months(TP_MST_Goods.StartingDate, :month)>TMP_PAM_ScrapProduct.Groutingdate
- then 1 else 3 end as GoodsFlag
- from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID
- left join TP_PAM_GoodsWagesType on TMP_PAM_ScrapProduct.GoodsID=TP_PAM_GoodsWagesType.GoodsID
- left join TP_MST_Goods
- on TP_PAM_GoodsWagesType.GoodsID=TP_MST_Goods.GoodsID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":month",newGoodsMonth),
- };
- DataSet dsTMPResponProcedure = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 查出产品工价分类
- sqlString = @"select WagesTypeID,GoodsID from TP_PAM_GoodsWagesType ";
- DataSet dsGoodsWagesType = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 查出产品工价
- sqlString = @"select * from TP_PAT_Wages ";
- DataSet dsWages = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 查出质量工价
- sqlString = @"select PieceTacticsID,WagesTypeID,QualityRate,Balance,QualityWages from TP_PAT_QualityWages order by QualityRate desc ";
- DataSet dsQualityWages = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 查出临时成品表,用于计算干补补贴,这些数据肯定配置了产品工价
- sqlString = @"select TMP_PAM_FinishedProduct.BarCode,
- TMP_PAM_FinishedProduct.SpecialRepairFlag,
- TMP_PAM_FinishedProduct.GoodsLevelID,
- TMP_PAM_FinishedProduct.GoodsLevelTypeID,
- TMP_PAM_FinishedProduct.GoodsID,
- TP_PAM_GoodsWagesType.GoodsID,
- TP_PAM_GoodsWagesType.WagesTypeID
- from TMP_PAM_FinishedProduct inner join TP_PAM_GoodsWagesType
- on TMP_PAM_FinishedProduct.GoodsID=TP_PAM_GoodsWagesType.GoodsID ";
- DataSet dsFinishedProduct = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 读出对应解决方案品质考核策略,可以存在多个
- sqlString = @"select TP_PAT_QualityASS.QualityASSTacticsID,
- TP_PAT_QualityASS.PayPlanID,
- TP_PAT_QualityASS.DefectFine,
- TP_MST_DataDictionary.Dictionaryvalue
- from TP_PAT_QualityASS
- left join TP_MST_DataDictionary on TP_PAT_QualityASS.DefectFine=TP_MST_DataDictionary.DictionaryID
- where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsQualityASS = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 读出对应解决方案品质考核策略工序
- //sqlString = "select * from TP_PAT_QualityProcedure";
- //DataSet dsQualityProcedure = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 查出生产缺陷数据表(暂时未用)
- sqlString = @"select
- TMP_PAM_Defect.ProductionDataID,
- TMP_PAM_Defect.BarCode,
- TMP_PAM_Defect.ProcedureID,
- TMP_PAM_Defect.UserID,
- TMP_PAM_Defect.DefectProcedureID,
- TMP_PAM_Defect.DefectUserID,
- TMP_PAM_Defect.DefectFine,
- TP_PAM_GoodsWagesType.GoodsID,
- TP_PAM_GoodsWagesType.WagesTypeID
- from TMP_PAM_Defect inner join TP_PAM_GoodsWagesType
- on TMP_PAM_Defect.GoodsID=TP_PAM_GoodsWagesType.GoodsID ";
- DataSet dsDefect = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 损坯补贴(用到的数据源)
- string sql = @"select TMP_PAM_ScrapProduct.barcode from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID ";
- sql = sql + " where TMP_PAM_ResponProcedure.UserID is null ";
- DataSet dsScrap_New = oracleTrConn.GetSqlResultToDs(sql);
- #endregion
- #region 缺陷数量用到的数据源
- // 求出缺陷数
- sqlString = @"select distinct TMP_PAM_ProductionData.barcode,TP_PAM_GoodsWagesType.WagesTypeID,TMP_PAM_Defect.goodsid,TMP_PAM_Defect.DefectFine,TMP_PAM_ProductionData.UserID,TMP_PAM_Defect.defectuserid from TMP_PAM_Defect
- inner join TP_PAM_GoodsWagesType
- on TMP_PAM_Defect.goodsID=TP_PAM_GoodsWagesType.goodsID
- left join TMP_PAM_ProductionData on TMP_PAM_Defect.ProductionDataID=TMP_PAM_ProductionData.ProductionDataID
-
- ";
- DataSet ds_w = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- // 读取计件工资策略
- int PieceTacticsID_Insert = 0;
- int PieceTacticsID_Insert2 = 0;
- int PieceTacticsID_Insert3 = 0;
- sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss != null && dss.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert = Convert.ToInt32(dss.Tables[0].Rows[0]["PieceTacticsID"]);
- PieceTacticsID_Insert2 = Convert.ToInt32(dss.Tables[0].Rows[0]["PieceTacticsID"]);
- PieceTacticsID_Insert3 = Convert.ToInt32(dss.Tables[0].Rows[0]["PieceTacticsID"]);
- }
- // 读取计件工资策略
- int PieceTacticsID_Insert4 = 0;
- sqlString = "select QualityASSTacticsID from TP_PAT_QualityASS where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss3 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss3 != null && dss3.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert4 = Convert.ToInt32(dss3.Tables[0].Rows[0]["QualityASSTacticsID"]);
- }
- // 变量集
- DataSet dsExistPiecework = null;
- // 用于插入工资单各类数值
- decimal? totalcount_Piecegiework = 0; //计件工资
- decimal? totalcount_Scrap = 0; //损坯补贴
- decimal? totalcount_RepairSubsidy = 0; //干补补贴
- decimal temp_Repair = 0;
- DataRow[] drPieceProcedureCount = null;
- DataRow[] dr2 = null;
- DataRow[] rt = null;
- DataRow[] drQualityBaseProcedure = null;
- DataRow[] r7 = null;
- DataSet dsTemp = null;
- DataRow[] r17 = null;
- DataRow[] r18 = null;
- DataRow[] rr6 = null;
- // 缺陷数量
- DataRow[] drDefect = null;
- DataSet ds3 = null;
- DataSet dsUserStaffCount = null;
- DataRow[] drGoodsCount = null;
- DataTable dtWagesType = null;
- DataTable dtGoodsFlag = null;
- int PieceProcedureCount = 0; //计件数量
- int UnqualifiedCount = 0; //次品数量
- int QualifiedCount = 0; //副品数量
- int QualityBaseProcedureCount = 0; //出窑数量
- string FinishedProduct_BarCode = ""; //成品过滤条码集
- DataSet ds = null;
- DataRow[] drUnqualifiedCount = null;
- DataRow[] drQualified = null;
- decimal QualityBaseProcedureTotal = 0;//只是算出优等品率,还有和产品质量区间进行匹配
- decimal QualityWages = 0; //质量工价 ,用于最后计算相乘
- decimal Quality = 0; //质量
- DataRow[] drQualityWages = null;
- int scrapcount_1 = 0; //损坯数量
- decimal scrap_StandardWages = 0; //损坯标准工价
- decimal scrap_DamageSubsidyRate = 0; //损坯补贴系数
- decimal scrap_DamageSubsidy = 0; //损坯补贴
- decimal temp_Scrap = 0;// //最后损坯补贴钱
- decimal? totalcount_AdminEXA2 = 0;// 行政工资
- DataSet dsAdminEXA2 = null;
- DataSet ds44 = null;
- // 变量集结束
- // 遍历工种数据集,统计每个员工的工资
- //dsJobsPayPlan.Tables[0].Rows.Count
- for (int j = 0; j < dsJobsPayPlan.Tables[0].Rows.Count; j++)
- {
- // #region 查出工资临时生产数据表数据,用于计算工资
- // //查出在产品工介分类中的生产数据,用于计算每个人的工资
- // sqlString = @"select
- // TMP_PAM_ProductionData.ProductionDataID,
- // TMP_PAM_ProductionData.BarCode,
- // TMP_PAM_ProductionData.ProcedureID,
- // TMP_PAM_ProductionData.GoodsID,
- // TMP_PAM_ProductionData.UserID,
- // TP_MST_Goods.StartingDate,
- // TP_PAM_GoodsWagesType.WagesTypeID,
- // TMP_PAM_ProductionData.GoodsLevelTypeID,
- // case
- // when add_months(TP_MST_Goods.StartingDate, :month)>TMP_PAM_ProductionData.Groutingdate
- // then 3 else 1 end as GoodsFlag
- // from
- // TMP_PAM_ProductionData
- // inner join TP_PAM_GoodsWagesType
- // on TMP_PAM_ProductionData.GoodsID=TP_PAM_GoodsWagesType.GoodsID
- // left join TP_MST_Goods
- // on TP_PAM_GoodsWagesType.GoodsID=TP_MST_Goods.GoodsID where TMP_PAM_ProductionData.userid=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"];
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":month",newGoodsMonth),
- // };
- // DataSet dsTMPProductionData = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- // #endregion
- //string ProcedureIDS_Delete = "0"; //默认给个0,怕没有些去进行筛选出现错误
- //for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- //{
- // ProcedureIDS_Delete = ProcedureIDS_Delete + dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"].ToString() + ",";
- //}
- //ProcedureIDS_Delete = ProcedureIDS_Delete.Trim(',');
- // modify wangx 20150911
- //1.查出此员在是否存在计件工资
- DataRow[] r_UserID = dtExistUserID.Select("userid=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"]);
- if (r_UserID.Length > 0)
- {
- //已经存在
- #region (1)插入计件工资
- sqlString = "select 1 from TP_PAR_Piecework where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- dsExistPiecework = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistPiecework != null && dsExistPiecework.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_Piecework
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- StaffFlag,
-
- GoodsFlag,
- WagesTypeID,
-
- PieceworkNum,
- PieceCoefficient,
- DamageNum,
- DamageCoefficient,
- UnqualifiedNum,
- UnqualifiedCoefficient,
- QualifiedNum,
- QualifiedCoefficient,
- QualityBaseNum,
- QualityRate,
- QualityWages,
- Amount,
- PieceTacticsID
- )
- select
- YYYYMM,
- :StaffID_New,
- PayPlanID,
- StaffFlag,
- GoodsFlag,
- WagesTypeID,
- PieceworkNum,
- PieceCoefficient,
- DamageNum,
- DamageCoefficient,
- UnqualifiedNum,
- UnqualifiedCoefficient,
- QualifiedNum,
- QualifiedCoefficient,
- QualityBaseNum,
- QualityRate,
- QualityWages,
- Amount,
- PieceTacticsID
- from TP_PAR_Piecework
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID_New",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":StaffID",r_UserID[0]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- #endregion
- #region (2)插入损坏补贴
- sqlString = @"insert into TP_PAR_DamageSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DamageNum,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- Amount,
- PieceTacticsID
- )
- select
-
- YYYYMM,
- :StaffID_New,
- PayPlanID,
- WagesTypeID,
- DamageNum,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- Amount,
- PieceTacticsID
- from TP_PAR_DamageSubsidy
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID_New",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":StaffID",r_UserID[0]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- #region (3)插入干补补贴
- sqlString = @"insert into TP_PAR_RepairSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- RSuperioNum,
- RSuperiorCoefficient,
- RQualifiedNum,
- RQualifiedCoefficient,
- StandardWages,
- RepairSubsidyRate,
- RepairSubsidy,
- Amount,
- PieceTacticsID
- )
- select
-
- YYYYMM,
- :StaffID_New,
- PayPlanID,
- WagesTypeID,
- RSuperioNum,
- RSuperiorCoefficient,
- RQualifiedNum,
- RQualifiedCoefficient,
- StandardWages,
- RepairSubsidyRate,
- RepairSubsidy,
- Amount,
- PieceTacticsID
- from TP_PAR_RepairSubsidy
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID_New",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":StaffID",r_UserID[0]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- #region (4)插入品质考核
- sqlString = @"insert into TP_PAR_QualityASS
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DefectFine,
- DefectNum,
- QualityBaseNum,
- QualityRate,
- Amount,
- QualityASSTacticsID
- ) select
-
- YYYYMM,
- :StaffID_New,
- PayPlanID,
- WagesTypeID,
- DefectFine,
- DefectNum,
- QualityBaseNum,
- QualityRate,
- Amount,
- QualityASSTacticsID
- from TP_PAR_QualityASS
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID_New",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":StaffID",r_UserID[0]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- totalcount_AdminEXA2 = 0;// 行政工资
- #region (5)插入行政考核
- sqlString = "select Amount from TP_PAD_AdminEXA where StaffID=:StaffID and AuditStatus=1 and AuditlDate >=:dateStartTime and AuditlDate<=:dateEndTime";//
- parmeters1 = new OracleParameter[]
- {
- //new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[i]["UserID"]),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":dateStartTime",dateStartTime),
- new OracleParameter(":dateEndTime",dateEndTime),
- };
- dsAdminEXA2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsAdminEXA2 != null && dsAdminEXA2.Tables[0].Rows.Count > 0)
- {
- for (int y = 0; y < dsAdminEXA2.Tables[0].Rows.Count; y++)
- {
- totalcount_AdminEXA2 += Convert.ToDecimal(dsAdminEXA2.Tables[0].Rows[y]["Amount"]);
- }
- sqlString = "update TP_PAD_AdminEXA set SettlementFlag=1 where SettlementFlag=0 and StaffID=:StaffID and AuditStatus=1 and AuditlDate >=:dateStartTime and AuditlDate<=:dateEndTime";
- parmeters1 = new OracleParameter[]
- {
-
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":dateStartTime",dateStartTime),
- new OracleParameter(":dateEndTime",dateEndTime),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- #endregion
- // 防止一个员工在多个工号下面
- sqlString = "select Piecework,DamageSubsidy,RepairSubsidy,QualityEXA,AdminEXA,ADAmount,TotalAmount from TP_PAR_Payroll where YYYYMM=:YYYYMM and StaffID=:StaffID ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2,(Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),ParameterDirection.Input),
- new OracleParameter(":StaffID",OracleDbType.Int32,dsJobsPayPlan.Tables[0].Rows[j]["StaffID"],ParameterDirection.Input),
- };
- ds44 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds44 != null && ds44.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_Payroll
- (
- YYYYMM,
- StaffID,
-
- Piecework,
- DamageSubsidy,
- RepairSubsidy,
- QualityEXA,
- AdminEXA,
- ADAmount,
- TotalAmount,
- AuditStatus,
- AccountID,
- CreateUserID,
- UpdateUserID
- )
- select
-
- YYYYMM,
- :StaffID_New,
- Piecework,
- DamageSubsidy,
- RepairSubsidy,
- QualityEXA,
- :AdminEXA,
- 0,
- Piecework+DamageSubsidy+RepairSubsidy+QualityEXA+:AdminEXA,
- 0,
- AccountID,
- CreateUserID,
- UpdateUserID
- from TP_PAR_Payroll
- where YYYYMM=:YYYYMM and StaffID=:StaffID ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID_New",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":StaffID",r_UserID[0]["StaffID"]),
- new OracleParameter(":AdminEXA",totalcount_AdminEXA2),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- else
- {
- sqlString = @"update TP_PAR_Payroll
- set Piecework=Piecework+:Piecework,
- DamageSubsidy=DamageSubsidy+:DamageSubsidy,
- RepairSubsidy=RepairSubsidy+:RepairSubsidy,
- QualityEXA=QualityEXA+:QualityEXA,
- AdminEXA=AdminEXA+:AdminEXA,
- ADAmount=AdminEXA+:ADAmount,
- TotalAmount=TotalAmount+:TotalAmount
- where YYYYMM=:YYYYMM and StaffID=:StaffID
-
- ";
- decimal? a = (Convert.ToDecimal(ds44.Tables[0].Rows[0]["Piecework"]) + Convert.ToDecimal(ds44.Tables[0].Rows[0]["DamageSubsidy"])
- + Convert.ToDecimal(ds44.Tables[0].Rows[0]["RepairSubsidy"]) + Convert.ToDecimal(ds44.Tables[0].Rows[0]["QualityEXA"]) + Convert.ToDecimal(ds44.Tables[0].Rows[0]["AdminEXA"]));
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2,(Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),ParameterDirection.Input),
- new OracleParameter(":StaffID",OracleDbType.Int32,dsJobsPayPlan.Tables[0].Rows[j]["StaffID"],ParameterDirection.Input),
- //new OracleParameter(":PayPlanID",OracleDbType.Int32,dsPayPlan.Tables[0].Rows[i]["PayPlanID"],ParameterDirection.Input),
- new OracleParameter(":Piecework",OracleDbType.Decimal,Convert.ToDecimal(ds44.Tables[0].Rows[0]["Piecework"]),ParameterDirection.Input),
- new OracleParameter(":DamageSubsidy",OracleDbType.Decimal,Convert.ToDecimal(ds44.Tables[0].Rows[0]["DamageSubsidy"]),ParameterDirection.Input),
- new OracleParameter(":RepairSubsidy",OracleDbType.Decimal,Convert.ToDecimal(ds44.Tables[0].Rows[0]["RepairSubsidy"]),ParameterDirection.Input),
- new OracleParameter(":QualityEXA",OracleDbType.Decimal,Convert.ToDecimal(ds44.Tables[0].Rows[0]["QualityEXA"]),ParameterDirection.Input),
- new OracleParameter(":AdminEXA",OracleDbType.Decimal,Convert.ToDecimal(ds44.Tables[0].Rows[0]["AdminEXA"]),ParameterDirection.Input),
- new OracleParameter(":ADAmount",OracleDbType.Decimal,0,ParameterDirection.Input),
-
- new OracleParameter(":TotalAmount",OracleDbType.Decimal,a,ParameterDirection.Input),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- continue;//继续循环
- }
- else
- {
- DataRow dr_NEW = dtExistUserID.NewRow();
- dr_NEW["staffid"] = dsJobsPayPlan.Tables[0].Rows[j]["StaffID"];
- dr_NEW["userid"] = dsJobsPayPlan.Tables[0].Rows[j]["UserID"];
- dtExistUserID.Rows.Add(dr_NEW);
- }
- // modify wangx 20150911 end
- // 用于插入工资单各类数值
- totalcount_Piecegiework = 0; //计件工资
- totalcount_Scrap = 0; //损坯补贴
- totalcount_RepairSubsidy = 0; //干补补贴
- temp_Repair = 0;
- #region 查出这个工号下有多少员工,计件工资进行平分
- sqlString = "select 1 from tp_mst_userstaff where userid=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString();
- int userstaffcount = 1;
- dsUserStaffCount = oracleTrConn.GetSqlResultToDs(sqlString);
- if (dsUserStaffCount != null && dsUserStaffCount.Tables[0].Rows.Count > 0)
- {
- userstaffcount = dsUserStaffCount.Tables[0].Rows.Count;
- }
- #endregion
- #region 计件工资整体累计
- if (PieceType == "0") // 工序计件
- {
- // 查出这个工号,在此计件工序,有多少产品
- drGoodsCount = dsTMPProductionData.Tables[0]
- .Select(string.Format("UserID={0}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()));
- if (drGoodsCount.Length > 0) // 此工号下代表有产品
- {
- // 接下来在过滤产品分类有多少种,用来分别计算各分类的工资
- // 以下表有多少行,去掉重复算出有多少个分类
- dtWagesType = drGoodsCount.CopyToDataTable().DefaultView.ToTable(true, "WagesTypeID");
- // 有多少产品标识
- dtGoodsFlag = drGoodsCount.CopyToDataTable().DefaultView.ToTable(true, "GoodsFlag");
- PieceProcedureCount = 0; //计件数量
- UnqualifiedCount = 0; //次品数量
- QualifiedCount = 0; //副品数量
- QualityBaseProcedureCount = 0; //出窑数量
- FinishedProduct_BarCode = ""; //成品过滤条码集
- for (int wagestype = 0; wagestype < dtWagesType.Rows.Count; wagestype++)
- {
- for (int vv = 0; vv < dtGoodsFlag.Rows.Count; vv++)
- {
- decimal? temp_Piecegiework = 0;
- #region 1.求出各分类计件工序数量
- PieceProcedureCount = 0; //每个分类之前置空
- decimal PieceProcedureTotal = 0;//系数*数量
- //下面开始计算每个分类的计件工资
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- drPieceProcedureCount = dsTMPProductionData.Tables[0]
- .Select(string.Format("UserID={0} and ProcedureID={1} and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- foreach (DataRow r in drPieceProcedureCount)
- {
- if (!FinishedProduct_BarCode.Contains(r["barcode"].ToString()))
- FinishedProduct_BarCode = FinishedProduct_BarCode + r["barcode"].ToString() + ",";
- }
- PieceProcedureCount += drPieceProcedureCount.Length; //工序数量
- }
- PieceProcedureTotal = PieceProcedureCount * PieceCoefficient; //工序数量*系数
- #endregion 1.求出计件工序数量
- #region 2.求出各工价分类损坯数量
- int ScrapCount = 0; //损坯数量
- decimal? Scrap = 0; //每个类别损坯的值
- if (DamageFlag == "1") //计算损坯数量
- {
- // 查出此人在计件工序的条码,完事关联报损表存在多少报损条码
- string ProcedureIDS = "0"; //默认给个0,怕没有些去进行筛选出现错误
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- if(p1==0)
- {
- ProcedureIDS = "";
- }
- ProcedureIDS = ProcedureIDS + dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"].ToString() + ",";
- }
- ProcedureIDS = ProcedureIDS.Trim(',');
- //if (dsJobsPayPlan.Tables[0].Rows[j]["Staffid"].ToString() == "1955")
- //{
- // int a = 0;
- //}
- // 筛选出生产数据这几个工序所用的条码
- DataRow[] dr_BarCode = dsTMPProductionData.Tables[0].Select(string.Format("UserID={0} and ProcedureID in ({1}) and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), ProcedureIDS, dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- if (dr_BarCode.Length > 0)
- {
- string temp_barcode = "";
- foreach (DataRow r3 in dr_BarCode) //有可能出现重复barcode
- {
- dr2 = dsTMPResponProcedure.Tables[0].Select("barcode='" + r3["barcode"] + "' and AuditStatus=1 and UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString());
- if (dr2.Length > 0)
- {
- if (!temp_barcode.Contains(r3["barcode"].ToString()))
- {
- // 有损坯数据
- ScrapCount = ScrapCount + 1;
- }
- temp_barcode += r3["barcode"].ToString() + ",";
- }
- }
- }
- // end
- Scrap = ScrapCount * DamageCoefficient; //DamageCoefficient为损坯系数
- }
- #endregion 2.求出损坯数量 end
- #region 3.求出各工价分类次品数
- // 筛出产品分级为次品的生产数据,完事一个一个去查对应责任工号的,进行累加
- drUnqualifiedCount = dsTMPProductionData.Tables[0]
- .Select(string.Format("WagesTypeID={0} and GoodsLevelTypeID=7 and GoodsFlag={1} ", dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- UnqualifiedCount = 0; //次品数量
- decimal? UnqualifiedTotal = 0;//系数*数量
- if (drUnqualifiedCount.Length > 0)
- {
- // 表示有次品,但是得对应责任工号,进行累加
- foreach (DataRow row in drUnqualifiedCount)
- {
- rt = dsDefect.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"]);
- if (rt.Length > 0)
- {
- // 多个缺陷也算一个数,所以直接+1
- UnqualifiedCount = UnqualifiedCount + 1;
- }
- }
- UnqualifiedTotal = UnqualifiedCount * UnqualifiedCoefficient;
- }
- #endregion
- #region 4.求出各工价分类副品数
- // 筛出产品分级为副品的生产数据,完事一个一个去查对应责任工号的,进行累加
- drQualified = dsTMPProductionData.Tables[0]
- .Select(string.Format("WagesTypeID={0} and GoodsLevelTypeID=5 and GoodsFlag={1}", dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- QualifiedCount = 0; //副品数量
- decimal? QualifiedTotal = 0;//系数*数量
- if (drQualified.Length > 0)
- {
- // 表示有副品,但是得对应责任工号,进行累加
- foreach (DataRow row in drQualified)
- {
- rt = dsDefect.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"]);
- if (rt.Length > 0)
- {
- // 多个缺陷也算一个数,所以直接+1
- QualifiedCount = QualifiedCount + 1;
- }
- }
- QualifiedTotal = QualifiedCount * QualifiedCoefficient;
- }
- #endregion 求出各工价分类副品数
- #region 5.求出质量工价
- string barcodes_Procedure = "";
- QualityBaseProcedureCount = 0;
- for (int p1 = 0; p1 < dsPieceProcedure_2.Tables[0].Rows.Count; p1++)
- {
- drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- .Select(string.Format("ProcedureID={0} and WagesTypeID={1}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"]));
- if (drQualityBaseProcedure.Length > 0)
- {
- foreach (DataRow r4 in drQualityBaseProcedure)
- {
- if (!barcodes_Procedure.Contains(r4["barcode"].ToString()))
- {
- QualityBaseProcedureCount += 1; // 质量工序数量
- }
- barcodes_Procedure = barcodes_Procedure + r4["barcode"].ToString() + ",";
- }
- }
- }
- //if (dsJobsPayPlan.Tables[0].Rows[j]["Staffid"].ToString() == "1955")
- //{
- // int a = 0;
- //}
- QualityBaseProcedureTotal = 0;//只是算出优等品率,还有和产品质量区间进行匹配
- QualityWages = 0; //质量工价 ,用于最后计算相乘
- Quality = 0; //质量
- if (QualityBaseProcedureCount != 0)
- {
- QualityBaseProcedureTotal = Convert.ToDecimal((QualityBaseProcedureCount - UnqualifiedCount)) / Convert.ToDecimal(QualityBaseProcedureCount);
- }
- //查看此员工是否为正式员工还是试用员工,如果试用取工价类别的标准工价
- // 1取出此工类下的产品工价区间
- DataRow[] drWages = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- decimal StandardWages = 0;
- if (drWages.Length > 0)
- {
- StandardWages = Convert.ToDecimal(drWages[0]["StandardWages"]); //标准工价
- }
- if (dsJobsPayPlan.Tables[0].Rows[j]["ExProbationEndDate"].ToString() == "") //表示正式员工
- {
- // 2取出此工类下的质量区间
- drQualityWages = dsQualityWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"] + " and QualityRate<=" + QualityBaseProcedureTotal, "QualityRate desc");
- if (drQualityWages.Length > 0)
- {
- //表示质量区间设置没有比优品率大的
- QualityWages = Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- Quality = Convert.ToDecimal(drQualityWages[0]["QualityRate"]);
- }
- else
- {
- QualityWages = 0;// Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- }
- }
- else
- {
- if (Convert.ToDateTime(dsJobsPayPlan.Tables[0].Rows[j]["ExProbationEndDate"]) < DateTime.Now)
- {
- // 试用结束结束
- // 2取出此工类下的质量区间
- drQualityWages = dsQualityWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"] + " and QualityRate<=" + QualityBaseProcedureTotal);
- if (drQualityWages.Length > 0)
- {
- //表示质量区间设置没有比优品率大的
- QualityWages = Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- Quality = Convert.ToDecimal(drQualityWages[0]["QualityRate"]);
- }
- else
- {
- QualityWages = 0;// Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- }
- }
- }
- #endregion
- //#region 查出这个工号下有多少员工,计件工资进行平分
- //sqlString = "select 1 from tp_mst_userstaff where userid=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString();
- //userstaffcount = 1;
- //dsUserStaffCount = oracleTrConn.GetSqlResultToDs(sqlString);
- //if (dsUserStaffCount != null && dsUserStaffCount.Tables[0].Rows.Count > 0)
- //{
- // userstaffcount = dsUserStaffCount.Tables[0].Rows.Count;
- //}
- //#endregion
- totalcount_Piecegiework += ((PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages) < 0 ? 0 : ((PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages) / userstaffcount;
- temp_Piecegiework += ((PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages) < 0 ? 0 : ((PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages);// / userstaffcount
- // }
- #region 插入计件工资
- sqlString = "select 1 from TP_PAR_Piecework where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- };
- dsExistPiecework = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistPiecework != null && dsExistPiecework.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_Piecework
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- StaffFlag,
-
- GoodsFlag,
- WagesTypeID,
-
- PieceworkNum,
- PieceCoefficient,
- DamageNum,
- DamageCoefficient,
- UnqualifiedNum,
- UnqualifiedCoefficient,
- QualifiedNum,
- QualifiedCoefficient,
- QualityBaseNum,
- QualityRate,
- QualityWages,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :StaffFlag,
-
- :GoodsFlag,
- :WagesTypeID,
-
- :PieceworkNum,
- :PieceCoefficient,
- :DamageNum,
- :DamageCoefficient,
- :UnqualifiedNum,
- :UnqualifiedCoefficient,
- :QualifiedNum,
- :QualifiedCoefficient,
- :QualityBaseNum,
- :QualityRate,
- :QualityWages,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_Piecework
- set
- YYYYMM=:YYYYMM,
- StaffID=:StaffID,
- PayPlanID=:PayPlanID,
- StaffFlag=:StaffFlag,
- PieceTacticsID=:PieceTacticsID,
- GoodsFlag=:GoodsFlag,
- WagesTypeID=:WagesTypeID,
-
- PieceworkNum=PieceworkNum+:PieceworkNum,
- PieceCoefficient=PieceCoefficient+:PieceCoefficient,
- DamageNum=DamageNum+:DamageNum,
- DamageCoefficient=DamageCoefficient+:DamageCoefficient,
- UnqualifiedNum=UnqualifiedNum+:UnqualifiedNum,
- UnqualifiedCoefficient=UnqualifiedCoefficient+:UnqualifiedCoefficient,
- QualifiedNum=QualifiedNum+:QualifiedNum,
- QualifiedCoefficient=QualifiedCoefficient+:QualifiedCoefficient,
- QualityBaseNum=QualityBaseNum+:QualityBaseNum,
- QualityRate=QualityRate+:QualityRate,
- QualityWages=QualityWages+:QualityWages,
- Amount=Amount+:Amount
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":StaffFlag",dsJobsPayPlan.Tables[0].Rows[j]["StaffStatus"]),
- //new OracleParameter(":BeginDate",dateStartTime),
- //new OracleParameter(":EndDate",dateEndTime),
- new OracleParameter(":GoodsFlag", dtGoodsFlag.Rows[vv]["GoodsFlag"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- //new OracleParameter(":GoodsID",null),
- new OracleParameter(":PieceworkNum",PieceProcedureCount),
- new OracleParameter(":PieceCoefficient",PieceCoefficient),
- new OracleParameter(":DamageNum",ScrapCount),
- new OracleParameter(":DamageCoefficient",DamageCoefficient),
- new OracleParameter(":UnqualifiedNum",UnqualifiedCount),
- new OracleParameter(":UnqualifiedCoefficient",UnqualifiedCoefficient),
- new OracleParameter(":QualifiedNum",QualifiedCount),
- new OracleParameter(":QualifiedCoefficient",QualifiedCoefficient),
- new OracleParameter(":QualityBaseNum",QualityBaseProcedureCount),
- new OracleParameter(":QualifiedCoefficient",QualifiedCoefficient),
- new OracleParameter(":QualityRate",QualityBaseProcedureTotal),
- new OracleParameter(":QualityWages",QualityWages),
- new OracleParameter(":Amount",temp_Piecegiework),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- FinishedProduct_BarCode = FinishedProduct_BarCode.Trim(',');
- #region 损坯补贴
- scrapcount_1 = 0; //损坯数量
- scrap_StandardWages = 0; //损坯标准工价
- scrap_DamageSubsidyRate = 0; //损坯补贴系数
- scrap_DamageSubsidy = 0; //损坯补贴
- temp_Scrap = 0;// //最后损坯补贴钱
- //1.查出此员工工号下所生产数据,即做过哪此产品条码
- DataRow[] drScrapProduction = dsTMPProductionData.Tables[0].Select("UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- if (drScrapProduction.Length > 0)
- {
- string inPro = "";
- if (dsPieceProcedure_1 != null && dsPieceProcedure_1.Tables[0].Rows.Count > 0)
- {
- for (int zz = 0; zz < dsPieceProcedure_1.Tables[0].Rows.Count; zz++)
- {
- inPro = inPro + dsPieceProcedure_1.Tables[0].Rows[zz]["ProcedureID"].ToString() + ",";
- }
- inPro = inPro.Trim(',');
- }
- if (inPro == "")
- inPro = "0";
- // 1. 查出此人计工序的条码
- DataRow[] r5 = dsTMPProductionData.Tables[0].Select("UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProcedureID in (" + inPro + ")");
- string a1 = "";
- int scrapcount = 0;
- string sqlInsertDamageSubsidy = "insert into TP_PAD_DamageSubsidy(Barcode,userID) values(:Barcode,:UserID)";
- string sqladd = "select 1 from TP_PAD_DamageSubsidy where barcode=:barcode and userid=:userid";
- if (r5.Length > 0)
- {
- // 有条码
- foreach (DataRow rr in r5)
- {
- r7 = dsScrap_New.Tables[0].Select("barcode='" + rr["barcode"] + "'");
- if (r7.Length > 0 && !a1.Contains(rr["barcode"].ToString()))
- {
- scrapcount = scrapcount + 1;
- a1 = a1 + rr["barcode"].ToString();
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",rr["Barcode"]),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- ds3 = oracleTrConn.GetSqlResultToDs(sqladd, parmeters1);
- if (ds3 != null && ds3.Tables[0].Rows.Count == 0)
- oracleTrConn.ExecuteNonQuery(sqlInsertDamageSubsidy, parmeters1);
- }
- }
- }
- //算出此工号,此工价分类存在条码,拼出条码,进而去报损查出非自身损坯的数量,进而计算
- // sql = @"select TMP_PAM_ScrapProduct.barcode from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- // on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID ";
- // sql = sql + " where TMP_PAM_ScrapProduct.barcode in (select barcode from TMP_PAM_ProductionData where UserID=:UserID and ProcedureID in (select TP_PAT_PieceProcedure.ProcedureID from TP_PAT_Piecework left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1 where TP_PAT_Piecework.PayPlanID=:PayPlanID)) ";
- // sql = sql + " and TMP_PAM_ResponProcedure.UserID is null";
- // parmeters1 = new OracleParameter[]
- // {
- // //new OracleParameter(":barcodes",barcodes),
- // new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- // new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- // };
- // DataSet dsTemp = oracleTrConn.GetSqlResultToDs(sql, parmeters1);
- //if (dsTemp.Tables[0].Rows.Count > 0)
- if (scrapcount > 0)
- {
- // 大于零遍历此表,插入损坯补贴记录表中,过滤给报损补贴后就不能给干补补贴
- //string sqlInsertDamageSubsidy = "insert into TP_PAD_DamageSubsidy(Barcode,userID) values(:Barcode,:UserID)";
- //for (int insert = 0; insert < dsTemp.Tables[0].Rows.Count; insert++)
- //{
- // string sqladd = "select 1 from TP_PAD_DamageSubsidy where barcode=:barcode and userid=:userid";
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":Barcode",dsTemp.Tables[0].Rows[insert]["Barcode"]),
- // new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- // };
- // DataSet ds3 = oracleTrConn.GetSqlResultToDs(sqladd, parmeters1);
- // if (ds3 != null && ds3.Tables[0].Rows.Count == 0)
- // oracleTrConn.ExecuteNonQuery(sqlInsertDamageSubsidy, parmeters1);
- //}
- scrapcount_1 = scrapcount;// dsTemp.Tables[0].Rows.Count; //非自身损坯数量
- // 求出损坯对应系数
- DataRow[] drScrapWages = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- //decimal? scrapDamageSubsidy = 0; //损坯补贴
- if (drScrapWages.Length > 0)
- {
- //scrapDamageSubsidy += Convert.ToDecimal(drScrapWages[0]["DamageSubsidy"]);
- scrap_StandardWages = Convert.ToDecimal(drScrapWages[0]["StandardWages"]); //标准工价
- scrap_DamageSubsidyRate = Convert.ToDecimal(drScrapWages[0]["DamageSubsidyRate"]);//损坯补贴系数
- // scrap_DamageSubsidy = Convert.ToDecimal(drScrapWages[0]["DamageSubsidy"]); //损坯补贴
- scrap_DamageSubsidy = Convert.ToDecimal(scrap_StandardWages) * scrap_DamageSubsidyRate; //损坯补贴
- }
- //totalcount_Scrap += scrapDamageSubsidy;
- temp_Scrap = Convert.ToDecimal(scrapcount_1 * scrap_StandardWages * scrap_DamageSubsidyRate);
- totalcount_Scrap += temp_Scrap / userstaffcount;
- }
- }
- #endregion
- #region 插入损坯补贴
- sqlString = "select 1 from TP_PAR_DamageSubsidy where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- };
- DataSet dsExistDamageSubsidy = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistDamageSubsidy != null && dsExistDamageSubsidy.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_DamageSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DamageNum,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :DamageNum,
- :StandardWages,
- :DamageSubsidyRate,
- :DamageSubsidy,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_DamageSubsidy
-
- set YYYYMM=:YYYYMM,
- StaffID=StaffID,
- PayPlanID=:PayPlanID,
- WagesTypeID=:WagesTypeID,
- DamageNum=DamageNum+:DamageNum,
- StandardWages=StandardWages+:StandardWages,
- DamageSubsidyRate=DamageSubsidyRate+:DamageSubsidyRate,
- DamageSubsidy=DamageSubsidy+:DamageSubsidy,
- Amount=Amount+:Amount,
- PieceTacticsID=:PieceTacticsID
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- new OracleParameter(":DamageNum",scrapcount_1),
- new OracleParameter(":StandardWages",scrap_StandardWages),
- new OracleParameter(":DamageSubsidyRate",scrap_DamageSubsidyRate),
- new OracleParameter(":DamageSubsidy",scrap_DamageSubsidy),
- new OracleParameter(":Amount",temp_Scrap),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert2),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- #region 干补补贴,从成品表时读取数据来计算干补数量
- // 1 查出这个工号的,这个分类的,下一面在去过滤正品,还是副品
- int RepairSubsidy_RSuperioNum = 0;//干补正品数
- // 干补正品数
- if (!string.IsNullOrEmpty(FinishedProduct_BarCode))
- {
- DataRow[] drRepairSubsidy_RSuperioNum = dsFinishedProduct.Tables[0].Select("SpecialRepairFlag=1 and GoodsLevelTypeID=4 and WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"] + " and barcode in(" + FinishedProduct_BarCode + ")");
- if (drRepairSubsidy_RSuperioNum.Length > 0)
- {
- RepairSubsidy_RSuperioNum = drRepairSubsidy_RSuperioNum.Length;
- // 尽管有干补,但是有可能在损坯补贴给了,此处得查询一下干补补贴表,如果存在就不给此补贴
- foreach (DataRow mm in drRepairSubsidy_RSuperioNum)
- {
- sqlString = "select 1 from TP_PAD_DamageSubsidy where Barcode=:Barcode and UserID=:UserID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",mm["barcode"].ToString()),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- dsTemp = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- RepairSubsidy_RSuperioNum = RepairSubsidy_RSuperioNum - 1;
- }
- }
- }
- }
- int RepairSubsidy_RQualifiedNum = 0;//干补副品数
- // 干补正品数
- if (!string.IsNullOrEmpty(FinishedProduct_BarCode))
- {
- DataRow[] drRepairSubsidy_RQualifiedNum = dsFinishedProduct.Tables[0].Select("SpecialRepairFlag=1 and GoodsLevelTypeID=5 and WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"] + " and barcode in(" + FinishedProduct_BarCode + ")");
- if (drRepairSubsidy_RQualifiedNum.Length > 0)
- {
- RepairSubsidy_RQualifiedNum = drRepairSubsidy_RQualifiedNum.Length;
- // 尽管有干补,但是有可能在损坯补贴给了,此处得查询一下干补补贴表,如果存在就不给此补贴
- foreach (DataRow mm in drRepairSubsidy_RQualifiedNum)
- {
- sqlString = "select 1 from TP_PAD_DamageSubsidy where Barcode=:Barcode and UserID=:UserID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",mm["barcode"].ToString()),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- dsTemp = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- RepairSubsidy_RQualifiedNum = RepairSubsidy_RQualifiedNum - 1;
- }
- }
- }
- }
- // 查出此分类干补正负品补贴
- // 求出损坯对应系数
- DataRow[] drRepairSubsidy = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- decimal RSuperiorCoefficient = 0;//干补正品系数
- decimal RQualifiedCoefficient = 0;//干补副品系数
- decimal RepairSubsidyRate = 0;//干补补贴系数
- decimal RepairStandardWages = 0;//标准工价
- decimal RepairTotalCount = 0; //
- decimal RepairSubsidy = 0;
- temp_Repair = 0;
- if (drRepairSubsidy.Length > 0)
- {
- RSuperiorCoefficient = Convert.ToDecimal(drRepairSubsidy[0]["RSuperiorCoefficient"]);
- RQualifiedCoefficient = Convert.ToDecimal(drRepairSubsidy[0]["RQualifiedCoefficient"]);
- RepairSubsidyRate = Convert.ToDecimal(drRepairSubsidy[0]["RepairSubsidyRate"]);
- RepairStandardWages = Convert.ToDecimal(drRepairSubsidy[0]["StandardWages"]);
- RepairSubsidy = Convert.ToDecimal(drRepairSubsidy[0]["RepairSubsidy"]);
- RepairTotalCount = (RepairSubsidy_RSuperioNum * RSuperiorCoefficient + RepairSubsidy_RQualifiedNum * RQualifiedCoefficient) * RepairStandardWages * RepairSubsidyRate;
- totalcount_RepairSubsidy += RepairTotalCount / userstaffcount;
- temp_Repair = RepairTotalCount;
- }
- #endregion
- #region 插入干补补贴
- sqlString = "select 1 from TP_PAR_RepairSubsidy where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- };
- DataSet dsExistRepairSubsidy = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistRepairSubsidy != null && dsExistRepairSubsidy.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_RepairSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- RSuperioNum,
- RSuperiorCoefficient,
- RQualifiedNum,
- RQualifiedCoefficient,
- StandardWages,
- RepairSubsidyRate,
- RepairSubsidy,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :RSuperioNum,
- :RSuperiorCoefficient,
- :RQualifiedNum,
- :RQualifiedCoefficient,
- :StandardWages,
- :RepairSubsidyRate,
- :RepairSubsidy,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_RepairSubsidy
- set
- YYYYMM=:YYYYMM,
- StaffID=:StaffID,
- PayPlanID=:PayPlanID,
- WagesTypeID=:WagesTypeID,
- RSuperioNum=RSuperioNum+:RSuperioNum,
- RSuperiorCoefficient=RSuperiorCoefficient+:RSuperiorCoefficient,
- RQualifiedNum=RQualifiedNum+:RQualifiedNum,
- RQualifiedCoefficient=RQualifiedCoefficient+:RQualifiedCoefficient,
- StandardWages=StandardWages+:StandardWages,
- RepairSubsidyRate=RepairSubsidyRate+:RepairSubsidyRate,
- RepairSubsidy=RepairSubsidy+:RepairSubsidy,
- Amount=Amount+:Amount,
- PieceTacticsID=:PieceTacticsID
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- new OracleParameter(":RSuperioNum",RepairSubsidy_RSuperioNum),
- new OracleParameter(":RSuperiorCoefficient",RSuperiorCoefficient),
- new OracleParameter(":RQualifiedNum",RepairSubsidy_RQualifiedNum),
- new OracleParameter(":RQualifiedCoefficient",RQualifiedCoefficient),
- new OracleParameter(":StandardWages",RepairStandardWages),
- new OracleParameter(":RepairSubsidyRate",RepairSubsidyRate),
- new OracleParameter(":RepairSubsidy",RepairSubsidy),
- new OracleParameter(":Amount",temp_Repair),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert3),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- }
- }
- else
- {
- // 经过该计件工序
- // 先找出此工序的所有条码.用于筛选条码前的数据
- //dsPieceProcedure_1.Tables[0].Merge(dsPieceProcedure_2.Tables[0]);
- string ProcedureIDS = "";
- //for (int a1 = 0; a1 < dsPieceProcedure_1.Tables[0].Rows.Count; a1++)
- //{
- // ProcedureIDS += dsPieceProcedure_1.Tables[0].Rows[a1]["ProcedureID"].ToString() + ",";
- //}
- ProcedureIDS = ProcedureIDS_New.Trim(',');
- //DataRow[] drBarCode = dsTMPProductionData.Tables[0].Select("(ProcedureID=" + PieceProcedureID + " or ProcedureID=" + QualityBaseProcedureID + ") and UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString());
- DataRow[] drBarCode = dsTMPProductionData.Tables[0].Select("ProcedureID in (" + ProcedureIDS + " )" + " and UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString());
- DataTable dtTemp = new DataTable();
- dtTemp.Columns.Add("ProcedureID"); //工序ID,用于有哪些分类
- dtTemp.Columns.Add("BarCode"); //产品条码
- dtTemp.Columns.Add("WagesTypeID"); // 工价分类
- dtTemp.Columns.Add("GoodsFlag"); //产品标识
- //DataRow[] drMonth = dsPayPlanSetting.Tables[0].Select("SettingCode='01001'");
- //int newGoodsMonth = Convert.ToInt32(drMonth[0]["SettingValue"]); //新产品适应周期(月)
- if (drBarCode.Length > 0)
- {
- DataTable dtTemp_TMPProductionData = drBarCode.CopyToDataTable();
- foreach (DataRow r in drBarCode)
- {
- DataRow[] drFirst = dtTemp_TMPProductionData.Select("barcode='" + r["barcode"] + "' and ProductionDataID<" + r["ProductionDataID"] + " and UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString());
- if (drFirst.Length > 0)
- {
- foreach (DataRow rr in drFirst)//可能会多行,
- {
- DataRow drNew = dtTemp.NewRow();
- drNew["ProcedureID"] = rr["ProcedureID"];
- drNew["BarCode"] = rr["BarCode"];
- drNew["WagesTypeID"] = rr["WagesTypeID"];
- if (Convert.ToDateTime(rr["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- {
- drNew["GoodsFlag"] = 3; //正常
- }
- else
- {
- drNew["GoodsFlag"] = 1; //新品
- }
- dtTemp.Rows.Add(drNew);
- }
- }
- }
- }
- if (dtTemp.Rows.Count > 0)
- {
- //-----------------------------------
- // 1.算出是否有新品,还是老品
- //3 报损责任工序
- //if (!dsTMPResponProcedure.Tables[0].Columns.Contains("GoodsFlag"))
- //{
- // dsTMPResponProcedure.Tables[0].Columns.Add("GoodsFlag");
- // for (int bb = 0; bb < dsTMPResponProcedure.Tables[0].Rows.Count; bb++)
- // {
- // if (dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"].ToString() != "")
- // {
- // if (Convert.ToDateTime(dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- // else
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 1; //新品
- // }
- // }
- // else
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- // }
- //}
- //for (int bb = 0; bb < dsTMPResponProcedure.Tables[0].Rows.Count; bb++)
- //{
- // if (dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"].ToString() != "")
- // {
- // if (Convert.ToDateTime(dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- // else
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 1; //新品
- // }
- // }
- // else
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- //}
- //-----------------------------------
- // 重新排序,把生产数据ID大的排在上面,便于下面进行筛选
- DataView dv = dtTemp.DefaultView;
- dv.Sort = "ProductionDataID desc";
- dtTemp = dv.ToTable();
- // 此时dtTemp有产品分类,同时也可能有多个工序
- // 1看有多少个分类
- dtWagesType = dtTemp.DefaultView.ToTable(true, "WagesTypeID");
- // 2看有多少个工序
- DataTable dtProcedure = dtTemp.DefaultView.ToTable(true, "ProcedureID");
- // 有多少产品标识
- dtGoodsFlag = dtTemp.DefaultView.ToTable(true, "GoodsFlag");
- int PieceProcedureCount2 = 0;
- int UnqualifiedCount2 = 0;
- int QualifiedCount2 = 0;
- int QualityBaseProcedureCount2 = 0;
- FinishedProduct_BarCode = "";
- for (int ii = 0; ii < dtWagesType.Rows.Count; ii++)
- {
- for (int vv = 0; vv < dtGoodsFlag.Rows.Count; vv++)
- {
- decimal? temp_Piecegiework = 0;
- #region 1.求出各分类计件工序数量
- PieceProcedureCount2 = 0;
- QualityBaseProcedureCount2 = 0;
- decimal PieceProcedureTotal = 0; //系数*数量
- //for (int jj = 0; jj < dtProcedure.Rows.Count; jj++)
- //{
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- DataRow[] datarow = dtTemp.Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"] + " and ProcedureID=" + dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"]);
- if (datarow.Length > 0)
- {
- foreach (DataRow r in datarow)
- {
- if (!FinishedProduct_BarCode.Contains(r["barcode"].ToString()))
- FinishedProduct_BarCode = FinishedProduct_BarCode + r["barcode"].ToString() + ",";
- }
- PieceProcedureCount2 += datarow.Length;
- break;
- }
- else
- {
- continue;
- }
- }
- //}
- PieceProcedureTotal = PieceProcedureCount2 * PieceCoefficient;
- #endregion 1.求出各分类计件工序数量
- #region 2.求出各工价分类损坯数量
- int ScrapCount = 0; //损坯数量
- decimal? Scrap = 0; //每个类别损坯的值
- if (DamageFlag == "1") //计算损坯数量
- {
- // 查出此人在计件工序的条码,完事关联报损表存在多少报损条码
- string ProcedureIDS2 = "0"; //默认给个0,怕没有些去进行筛选出现错误
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- if(p1==0)
- {
- ProcedureIDS2 = "";
- }
- ProcedureIDS2 = ProcedureIDS2 + dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"].ToString() + ",";
- }
- ProcedureIDS2 = ProcedureIDS2.Trim(',');
- // 筛选出生产数据这几个工序所用的条码
- // DataRow[] dr_BarCode = dsTMPProductionData.Tables[0].Select(string.Format("UserID={0} and ProcedureID in ({1}) and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), ProcedureIDS2, dtWagesType.Rows[ii]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- DataRow[] dr_BarCode = dsTMPProductionData.Tables[0].Select(string.Format("UserID={0} and ProcedureID in ({1}) and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), ProcedureIDS, dtWagesType.Rows[ii]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- if (dr_BarCode.Length > 0)
- {
- string temp_barcode = "";
- foreach (DataRow r3 in dr_BarCode) //有可能出现重复barcode
- {
- dr2 = dsTMPResponProcedure.Tables[0].Select("barcode='" + r3["barcode"] + "' and AuditStatus=1 and UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString());
- if (dr2.Length > 0)
- {
- if (!temp_barcode.Contains(r3["barcode"].ToString()))
- {
- // 有损坯数据
- ScrapCount = ScrapCount + 1;
- }
- temp_barcode += r3["barcode"].ToString() + ",";
- }
- }
- }
- // end
- Scrap = ScrapCount * DamageCoefficient; //DamageCoefficient为损坯系数
- }
- #endregion 2.求出损坯数量 end
- #region 3.求出各工价分类次品数
- // 筛出产品分级为次品的生产数据,完事一个一个去查对应责任工号的,进行累加
- drUnqualifiedCount = dsTMPProductionData.Tables[0]
- .Select(string.Format("WagesTypeID={0} and GoodsLevelTypeID=7 and GoodsFlag={1} ", dtWagesType.Rows[ii]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- UnqualifiedCount2 = 0; //次品数量
- decimal? UnqualifiedTotal = 0;//系数*数量
- if (drUnqualifiedCount.Length > 0)
- {
- // 表示有次品,但是得对应责任工号,进行累加
- foreach (DataRow row in drUnqualifiedCount)
- {
- //string sqlView = "select 1 from TMP_PAM_Defect where DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"];
- //DataSet ds = oracleTrConn.GetSqlResultToDs(sqlView);
- //if (ds != null && ds.Tables[0].Rows.Count > 0)
- //{
- // // 多个缺陷也算一个数,所以直接+1
- // UnqualifiedCount2 = UnqualifiedCount2 + 1;
- //}
- rt = dsDefect.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"]);
- if (rt.Length > 0)
- {
- // 多个缺陷也算一个数,所以直接+1
- UnqualifiedCount2 = UnqualifiedCount2 + 1;
- }
- }
- UnqualifiedTotal = UnqualifiedCount2 * UnqualifiedCoefficient;
- }
- #endregion
- #region 4.求出各工价分类副品数
- // 筛出产品分级为副品的生产数据,完事一个一个去查对应责任工号的,进行累加
- drQualified = dsTMPProductionData.Tables[0]
- .Select(string.Format("WagesTypeID={0} and GoodsLevelTypeID=5 and GoodsFlag={1}", dtWagesType.Rows[ii]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- QualifiedCount2 = 0; //副品数量
- decimal? QualifiedTotal = 0;//系数*数量
- if (drQualified.Length > 0)
- {
- // 表示有副品,但是得对应责任工号,进行累加
- foreach (DataRow row in drQualified)
- {
- //string sqlView = "select 1 from TMP_PAM_Defect where DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"];
- //DataSet ds = oracleTrConn.GetSqlResultToDs(sqlView);
- //if (ds != null && ds.Tables[0].Rows.Count > 0)
- //{
- // // 多个缺陷也算一个数,所以直接+1
- // QualifiedCount2 = QualifiedCount2 + 1;
- //}
- rt = dsDefect.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"]);
- if (rt.Length > 0)
- {
- // 多个缺陷也算一个数,所以直接+1
- QualifiedCount2 = QualifiedCount2 + 1;
- }
- }
- QualifiedTotal = QualifiedCount2 * QualifiedCoefficient;
- }
- #endregion 求出各工价分类副品数
- #region 5.求出质量工价
- string barcodes_Procedure = "";
- QualityBaseProcedureCount2 = 0;
- for (int p1 = 0; p1 < dsPieceProcedure_2.Tables[0].Rows.Count; p1++)
- {
- //DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- // .Select(string.Format("UserID={0} and ProcedureID={1} and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- //QualityBaseProcedureCount += drQualityBaseProcedure.Length; // 质量工序数量
- //DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- // .Select(string.Format("ProcedureID={0} and WagesTypeID={1} and GoodsFlag={2}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- .Select(string.Format("ProcedureID={0} and WagesTypeID={1}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[ii]["WagesTypeID"]));
- if (drQualityBaseProcedure.Length > 0)
- {
- foreach (DataRow r4 in drQualityBaseProcedure)
- {
- if (!barcodes_Procedure.Contains(r4["barcode"].ToString()))
- {
- QualityBaseProcedureCount2 += 1; // 质量工序数量
- }
- barcodes_Procedure = barcodes_Procedure + r4["barcode"].ToString() + ",";
- }
- }
- }
- QualityBaseProcedureTotal = 0;//只是算出优等品率,还有和产品质量区间进行匹配
- QualityWages = 0; //质量工价 ,用于最后计算相乘
- Quality = 0; //质量
- if (QualityBaseProcedureCount2 != 0)
- {
- QualityBaseProcedureTotal = Convert.ToDecimal((QualityBaseProcedureCount2 - UnqualifiedCount2)) / Convert.ToDecimal(QualityBaseProcedureCount2);
- }
- //查看此员工是否为正式员工还是试用员工,如果试用取工价类别的标准工价
- // 1取出此工类下的产品工价区间
- DataRow[] drWages = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- decimal StandardWages = 0;
- if (drWages.Length > 0)
- {
- StandardWages = Convert.ToDecimal(drWages[0]["StandardWages"]); //标准工价
- }
- if (dsJobsPayPlan.Tables[0].Rows[j]["ExProbationEndDate"].ToString() == "") //表示正式员工
- {
- // 2取出此工类下的质量区间
- drQualityWages = dsQualityWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"] + " and QualityRate>=" + QualityBaseProcedureTotal, "QualityRate desc");
- if (drQualityWages.Length > 0)
- {
- //表示质量区间设置没有比优品率大的
- QualityWages = Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- Quality = Convert.ToDecimal(drQualityWages[0]["QualityRate"]);
- }
- else
- {
- QualityWages = 0;// Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- }
- }
- else
- {
- if (Convert.ToDateTime(dsJobsPayPlan.Tables[0].Rows[j]["ExProbationEndDate"]) < DateTime.Now)
- {
- // 试用结束结束
- // 2取出此工类下的质量区间
- drQualityWages = dsQualityWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"] + " and QualityRate>=" + QualityBaseProcedureTotal);
- if (drQualityWages.Length > 0)
- {
- //表示质量区间设置没有比优品率大的
- QualityWages = Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- Quality = Convert.ToDecimal(drQualityWages[0]["QualityRate"]);
- }
- else
- {
- QualityWages = 0;// Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- }
- }
- }
- #endregion
- //#region 查出这个工号下有多少员工,计件工资进行平分
- //sqlString = "select 1 from tp_mst_userstaff where userid=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString();
- //userstaffcount = 1;
- //dsUserStaffCount = oracleTrConn.GetSqlResultToDs(sqlString);
- //if (dsUserStaffCount != null && dsUserStaffCount.Tables[0].Rows.Count > 0)
- //{
- // userstaffcount = dsUserStaffCount.Tables[0].Rows.Count;
- //}
- //#endregion
- totalcount_Piecegiework += ((PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages) < 0 ? 0 : ((PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages) / userstaffcount;
- temp_Piecegiework = ((PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages) < 0 ? 0 : ((PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages);// userstaffcount;
- #region 插入计件工资
- sqlString = "select 1 from TP_PAR_Piecework where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- };
- dsExistPiecework = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- //// 读取计件工资策略
- //int PieceTacticsID_Insert = 0;
- //sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- //parmeters1 = new OracleParameter[]
- //{
- // new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- //};
- //DataSet dss = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- //if (dss != null && dss.Tables[0].Rows.Count > 0)
- //{
- // PieceTacticsID_Insert = Convert.ToInt32(dss.Tables[0].Rows[0]["PieceTacticsID"]);
- //}
- ////-------------------------------------
- if (dsExistPiecework != null && dsExistPiecework.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_Piecework
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- StaffFlag,
-
- GoodsFlag,
- WagesTypeID,
-
- PieceworkNum,
- PieceCoefficient,
- DamageNum,
- DamageCoefficient,
- UnqualifiedNum,
- UnqualifiedCoefficient,
- QualifiedNum,
- QualifiedCoefficient,
- QualityBaseNum,
- QualityRate,
- QualityWages,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :StaffFlag,
-
- :GoodsFlag,
- :WagesTypeID,
-
- :PieceworkNum,
- :PieceCoefficient,
- :DamageNum,
- :DamageCoefficient,
- :UnqualifiedNum,
- :UnqualifiedCoefficient,
- :QualifiedNum,
- :QualifiedCoefficient,
- :QualityBaseNum,
- :QualityRate,
- :QualityWages,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_Piecework
- set
- YYYYMM=:YYYYMM,
- StaffID=:StaffID,
- PayPlanID=:PayPlanID,
- StaffFlag=:StaffFlag,
- PieceTacticsID=:PieceTacticsID,
- GoodsFlag=:GoodsFlag,
- WagesTypeID=:WagesTypeID,
-
- PieceworkNum=PieceworkNum+:PieceworkNum,
- PieceCoefficient=PieceCoefficient+:PieceCoefficient,
- DamageNum=DamageNum+:DamageNum,
- DamageCoefficient=DamageCoefficient+:DamageCoefficient,
- UnqualifiedNum=UnqualifiedNum+:UnqualifiedNum,
- UnqualifiedCoefficient=UnqualifiedCoefficient+:UnqualifiedCoefficient,
- QualifiedNum=QualifiedNum+:QualifiedNum,
- QualifiedCoefficient=QualifiedCoefficient+:QualifiedCoefficient,
- QualityBaseNum=QualityBaseNum+:QualityBaseNum,
- QualityRate=QualityRate+:QualityRate,
- QualityWages=QualityWages+:QualityWages,
- Amount=Amount+:Amount
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":StaffFlag",dsJobsPayPlan.Tables[0].Rows[j]["StaffStatus"]),
- //new OracleParameter(":BeginDate",dateStartTime),
- //new OracleParameter(":EndDate",dateEndTime),
- new OracleParameter(":GoodsFlag", dtGoodsFlag.Rows[vv]["GoodsFlag"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- //new OracleParameter(":GoodsID",null),
- new OracleParameter(":PieceworkNum",PieceProcedureCount2),
- new OracleParameter(":PieceCoefficient",PieceCoefficient),
- new OracleParameter(":DamageNum",ScrapCount),
- new OracleParameter(":DamageCoefficient",DamageCoefficient),
- new OracleParameter(":UnqualifiedNum",UnqualifiedCount2),
- new OracleParameter(":UnqualifiedCoefficient",UnqualifiedCoefficient),
- new OracleParameter(":QualifiedNum",QualifiedCount2),
- new OracleParameter(":QualifiedCoefficient",QualifiedCoefficient),
- new OracleParameter(":QualityBaseNum",QualityBaseProcedureCount2),
- new OracleParameter(":QualifiedCoefficient",QualifiedCoefficient),
- new OracleParameter(":QualityRate",QualityBaseProcedureTotal),
- new OracleParameter(":QualityWages",QualityWages),
- new OracleParameter(":Amount",temp_Piecegiework),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- FinishedProduct_BarCode = FinishedProduct_BarCode.Trim(',');
- #region 损坯补贴
- scrapcount_1 = 0; //损坯数量
- scrap_StandardWages = 0; //损坯标准工价
- scrap_DamageSubsidyRate = 0; //损坯补贴系数
- scrap_DamageSubsidy = 0; //损坯补贴
- temp_Scrap = 0;// //最后损坯补贴钱
- //1.查出此员工工号下所生产数据,即做过哪此产品条码
- DataRow[] drScrapProduction = dsTMPProductionData.Tables[0].Select("UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- if (drScrapProduction.Length > 0)
- {
- //算出此工号,此工价分类存在条码,拼出条码,进而去报损查出非自身损坯的数量,进而计算
- //string barcodes = "";
- //foreach (DataRow rbarcode in drScrapProduction)
- //{
- // barcodes += rbarcode["barcode"].ToString() + ",";
- //}
- //barcodes = barcodes.Trim(',');
- // string sql = @"select TMP_PAM_ScrapProduct.barcode,TMP_PAM_ResponProcedure.UserID from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- // on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID ";
- // sql = sql + " where instr(','||:barcodes||',',','||TMP_PAM_ScrapProduct.BarCode||',')>0 ";
- // sql = sql + " and TMP_PAM_ResponProcedure.UserID<>:UserID";
- // sql = @"select distinct TMP_PAM_ScrapProduct.barcode,TMP_PAM_ResponProcedure.UserID from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- // on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID ";
- // sql = sql + " where TMP_PAM_ScrapProduct.barcode in (select barcode from TMP_PAM_ProductionData where UserID=:UserID and ProcedureID in (select TP_PAT_PieceProcedure.ProcedureID from TP_PAT_Piecework left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1 where TP_PAT_Piecework.PayPlanID=:PayPlanID)) ";
- // sql = sql + " and TMP_PAM_ResponProcedure.UserID<>:UserID";
- // parmeters1 = new OracleParameter[]
- // {
- // //new OracleParameter(":barcodes",barcodes),
- // new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- // new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- // };
- // DataSet dsTemp = oracleTrConn.GetSqlResultToDs(sql, parmeters1);
- string inPro = "";
- if (dsPieceProcedure_1 != null && dsPieceProcedure_1.Tables[0].Rows.Count > 0)
- {
- for (int zz = 0; zz < dsPieceProcedure_1.Tables[0].Rows.Count; zz++)
- {
- inPro = inPro + dsPieceProcedure_1.Tables[0].Rows[zz]["ProcedureID"].ToString() + ",";
- }
- inPro = inPro.Trim(',');
- }
- if (inPro == "")
- inPro = "0";
- // 1. 查出此人计工序的条码
- DataRow[] r5 = dsTMPProductionData.Tables[0].Select("UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProcedureID in (" + inPro + ")");
- string a1 = "";
- int scrapcount = 0;
- string sqlInsertDamageSubsidy = "insert into TP_PAD_DamageSubsidy(Barcode,userID) values(:Barcode,:UserID)";
- string sqladd = "select 1 from TP_PAD_DamageSubsidy where barcode=:barcode and userid=:userid";
- if (r5.Length > 0)
- {
- // 有条码
- foreach (DataRow rr in r5)
- {
- r7 = dsScrap_New.Tables[0].Select("barcode='" + rr["barcode"] + "'");
- if (r7.Length > 0 && !a1.Contains(rr["barcode"].ToString()))
- {
- scrapcount = scrapcount + 1;
- a1 = a1 + rr["barcode"].ToString();
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",rr["Barcode"]),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- ds3 = oracleTrConn.GetSqlResultToDs(sqladd, parmeters1);
- if (ds3 != null && ds3.Tables[0].Rows.Count == 0)
- oracleTrConn.ExecuteNonQuery(sqlInsertDamageSubsidy, parmeters1);
- }
- }
- }
- //if (dsTemp.Tables[0].Rows.Count > 0)
- if (scrapcount > 0)
- {
- //// 大于零遍历此表,插入损坯补贴记录表中,过滤给报损补贴后就不能给干补补贴
- //string sqlInsertDamageSubsidy = "insert into TP_PAD_DamageSubsidy(Barcode,userID) values(:Barcode,:UserID)";
- //for (int insert = 0; insert < dsTemp.Tables[0].Rows.Count; insert++)
- //{
- // string sqladd = "select 1 from TP_PAD_DamageSubsidy where barcode=:barcode and userid=:userid";
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":Barcode",dsTemp.Tables[0].Rows[insert]["Barcode"]),
- // new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- // };
- // DataSet ds3 = oracleTrConn.GetSqlResultToDs(sqladd, parmeters1);
- // if (ds3 != null && ds3.Tables[0].Rows.Count == 0)
- // oracleTrConn.ExecuteNonQuery(sqlInsertDamageSubsidy, parmeters1);
- //}
- scrapcount_1 = scrapcount;// dsTemp.Tables[0].Rows.Count; //非自身损坯数量
- // 求出损坯对应系数
- DataRow[] drScrapWages = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- //decimal? scrapDamageSubsidy = 0; //损坯补贴
- if (drScrapWages.Length > 0)
- {
- //scrapDamageSubsidy += Convert.ToDecimal(drScrapWages[0]["DamageSubsidy"]);
- scrap_StandardWages = Convert.ToDecimal(drScrapWages[0]["StandardWages"]); //标准工价
- scrap_DamageSubsidyRate = Convert.ToDecimal(drScrapWages[0]["DamageSubsidyRate"]);//损坯补贴系数
- //scrap_DamageSubsidy = Convert.ToDecimal(drScrapWages[0]["DamageSubsidy"]); //损坯补贴
- scrap_DamageSubsidy = Convert.ToDecimal(scrap_StandardWages) * scrap_DamageSubsidyRate; //损坯补贴
- }
- //totalcount_Scrap += scrapDamageSubsidy;
- temp_Scrap = Convert.ToDecimal(scrapcount_1 * scrap_StandardWages * scrap_DamageSubsidyRate);
- totalcount_Scrap += temp_Scrap / userstaffcount;
- }
- }
- #endregion
- #region 插入损坯补贴
- //// 读取计件工资策略
- //int PieceTacticsID_Insert2 = 0;
- //sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- //parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- // };
- //DataSet dss2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- //if (dss2 != null && dss2.Tables[0].Rows.Count > 0)
- //{
- // PieceTacticsID_Insert2 = Convert.ToInt32(dss2.Tables[0].Rows[0]["PieceTacticsID"]);
- //}
- ////-------------------------------------
- sqlString = "select 1 from TP_PAR_DamageSubsidy where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- };
- DataSet dsExistDamageSubsidy = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistDamageSubsidy != null && dsExistDamageSubsidy.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_DamageSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DamageNum,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :DamageNum,
- :StandardWages,
- :DamageSubsidyRate,
- :DamageSubsidy,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_DamageSubsidy
-
- set YYYYMM=:YYYYMM,
- StaffID=StaffID,
- PayPlanID=:PayPlanID,
- WagesTypeID=:WagesTypeID,
- DamageNum=DamageNum+:DamageNum,
- StandardWages=StandardWages+:StandardWages,
- DamageSubsidyRate=DamageSubsidyRate+:DamageSubsidyRate,
- DamageSubsidy=DamageSubsidy+:DamageSubsidy,
- Amount=Amount+:Amount,
- PieceTacticsID=:PieceTacticsID
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- new OracleParameter(":DamageNum",scrapcount_1),
- new OracleParameter(":StandardWages",scrap_StandardWages),
- new OracleParameter(":DamageSubsidyRate",scrap_DamageSubsidyRate),
- new OracleParameter(":DamageSubsidy",scrap_DamageSubsidy),
- new OracleParameter(":Amount",temp_Scrap),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert2),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- #region 干补补贴,从成品表时读取数据来计算干补数量
- // 1 查出这个工号的,这个分类的,下一面在去过滤正品,还是副品
- int RepairSubsidy_RSuperioNum = 0;//干补正品数
- // 干补正品数
- if (!string.IsNullOrEmpty(FinishedProduct_BarCode))
- {
- DataRow[] drRepairSubsidy_RSuperioNum = dsFinishedProduct.Tables[0].Select("SpecialRepairFlag=1 and GoodsLevelTypeID=4 and WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"] + " and barcode in(" + FinishedProduct_BarCode + ")");
- if (drRepairSubsidy_RSuperioNum.Length > 0)
- {
- RepairSubsidy_RSuperioNum = drRepairSubsidy_RSuperioNum.Length;
- // 尽管有干补,但是有可能在损坯补贴给了,此处得查询一下干补补贴表,如果存在就不给此补贴
- sqlString = "select 1 from TP_PAD_DamageSubsidy where Barcode=:Barcode and UserID=:UserID";
- foreach (DataRow mm in drRepairSubsidy_RSuperioNum)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",mm["barcode"].ToString()),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- dsTemp = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- RepairSubsidy_RSuperioNum = RepairSubsidy_RSuperioNum - 1;
- }
- }
- }
- }
- int RepairSubsidy_RQualifiedNum = 0;//干补副品数
- // 干补正品数
- if (!string.IsNullOrEmpty(FinishedProduct_BarCode))
- {
- DataRow[] drRepairSubsidy_RQualifiedNum = dsFinishedProduct.Tables[0].Select("SpecialRepairFlag=1 and GoodsLevelTypeID=5 and WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"] + " and barcode in(" + FinishedProduct_BarCode + ")");
- if (drRepairSubsidy_RQualifiedNum.Length > 0)
- {
- RepairSubsidy_RQualifiedNum = drRepairSubsidy_RQualifiedNum.Length;
- // 尽管有干补,但是有可能在损坯补贴给了,此处得查询一下干补补贴表,如果存在就不给此补贴
- sqlString = "select 1 from TP_PAD_DamageSubsidy where Barcode=:Barcode and UserID=:UserID";
- foreach (DataRow mm in drRepairSubsidy_RQualifiedNum)
- {
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",mm["barcode"].ToString()),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- dsTemp = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- RepairSubsidy_RQualifiedNum = RepairSubsidy_RQualifiedNum - 1;
- }
- }
- }
- }
- // 查出此分类干补正负品补贴
- // 求出损坯对应系数
- DataRow[] drRepairSubsidy = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- decimal RSuperiorCoefficient = 0;//干补正品系数
- decimal RQualifiedCoefficient = 0;//干补副品系数
- decimal RepairSubsidyRate = 0;//干补补贴系数
- decimal RepairStandardWages = 0;//标准工价
- decimal RepairTotalCount = 0; //
- decimal RepairSubsidy = 0;
- temp_Repair = 0;
- if (drRepairSubsidy.Length > 0)
- {
- RSuperiorCoefficient = Convert.ToDecimal(drRepairSubsidy[0]["RSuperiorCoefficient"]);
- RQualifiedCoefficient = Convert.ToDecimal(drRepairSubsidy[0]["RQualifiedCoefficient"]);
- RepairSubsidyRate = Convert.ToDecimal(drRepairSubsidy[0]["RepairSubsidyRate"]);
- RepairStandardWages = Convert.ToDecimal(drRepairSubsidy[0]["RepairStandardWages"]);
- RepairTotalCount = (RepairSubsidy_RQualifiedNum * RSuperiorCoefficient + RepairSubsidy_RQualifiedNum * RQualifiedCoefficient) * RepairStandardWages * RepairSubsidyRate;
- totalcount_RepairSubsidy += RepairTotalCount / userstaffcount;
- temp_Repair += RepairTotalCount;
- }
- #endregion
- #region 插入干补补贴
- sqlString = "select 1 from TP_PAR_RepairSubsidy where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- };
- DataSet dsExistRepairSubsidy = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistRepairSubsidy != null && dsExistRepairSubsidy.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_RepairSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- RSuperioNum,
- RSuperiorCoefficient,
- RQualifiedNum,
- RQualifiedCoefficient,
- StandardWages,
- RepairSubsidyRate,
- RepairSubsidy,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :RSuperioNum,
- :RSuperiorCoefficient,
- :RQualifiedNum,
- :RQualifiedCoefficient,
- :StandardWages,
- :RepairSubsidyRate,
- :RepairSubsidy,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_RepairSubsidy
- set
- YYYYMM=:YYYYMM,
- StaffID=:StaffID,
- PayPlanID=:PayPlanID,
- WagesTypeID=:WagesTypeID,
- RSuperioNum=RSuperioNum+:RSuperioNum,
- RSuperiorCoefficient=RSuperiorCoefficient+:RSuperiorCoefficient,
- RQualifiedNum=RQualifiedNum+:RQualifiedNum,
- RQualifiedCoefficient=RQualifiedCoefficient+:RQualifiedCoefficient,
- StandardWages=StandardWages+:StandardWages,
- RepairSubsidyRate=RepairSubsidyRate+:RepairSubsidyRate,
- RepairSubsidy=RepairSubsidy+:RepairSubsidy,
- Amount=Amount+:Amount,
- PieceTacticsID=:PieceTacticsID
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- new OracleParameter(":RSuperioNum",RepairSubsidy_RSuperioNum),
- new OracleParameter(":RSuperiorCoefficient",RSuperiorCoefficient),
- new OracleParameter(":RQualifiedNum",RepairSubsidy_RQualifiedNum),
- new OracleParameter(":RQualifiedCoefficient",RQualifiedCoefficient),
- new OracleParameter(":StandardWages",RepairStandardWages),
- new OracleParameter(":RepairSubsidyRate",RepairSubsidyRate),
- new OracleParameter(":RepairSubsidy",RepairSubsidy),
- new OracleParameter(":Amount",temp_Repair),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert3),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- }
- }
- #endregion
- decimal? totalcount_QualityASS = 0;// 品质工资
- #region 品质考核策略
- decimal min_TotalCount = 0; //dsQualityASS 已经是此工资策略的解决方案
- for (int h = 0; h < dsQualityASS.Tables[0].Rows.Count; h++)
- {
- min_TotalCount = 0;
- ////// // 求出缺陷数
- ////// sqlString = @"select distinct TMP_PAM_ProductionData.barcode,TP_PAM_GoodsWagesType.WagesTypeID,TMP_PAM_Defect.goodsid,TMP_PAM_Defect.DefectFine,TMP_PAM_ProductionData.UserID from TMP_PAM_Defect
- ////// inner join TP_PAM_GoodsWagesType
- ////// on TMP_PAM_Defect.goodsID=TP_PAM_GoodsWagesType.goodsID
- //////
- ////// left join TMP_PAM_ProductionData on TMP_PAM_Defect.ProductionDataID=TMP_PAM_ProductionData.ProductionDataID
- ////// and TMP_PAM_ProductionData.barcode in
- ////// (
- ////// select barcode from TP_PAT_QualityASS left join TP_PAT_Piecework on TP_PAT_QualityASS.PayPlanID=TP_PAT_Piecework.PayPlanID
- ////// left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1
- ////// left join TMP_PAM_ProductionData on TMP_PAM_ProductionData.ProcedureID=TP_PAT_PieceProcedure.ProcedureID
- ////// where TP_PAT_QualityASS.QualityASSTacticsID=:QualityASSTacticsID
- ////// )
- ////// where TMP_PAM_Defect.DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]
- ////// + " and TMP_PAM_Defect.DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"]
- ////// + " and TMP_PAM_ProductionData.barcode in "
- ////// + "("
- ////// + " select barcode from TP_PAT_QualityASS left join TP_PAT_Piecework on TP_PAT_QualityASS.PayPlanID=TP_PAT_Piecework.PayPlanID"
- ////// + " left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1"
- ////// + " left join TMP_PAM_ProductionData on TMP_PAM_ProductionData.ProcedureID=TP_PAT_PieceProcedure.ProcedureID"
- ////// + " where TMP_PAM_ProductionData.UserID=:UserID and TP_PAT_QualityASS.QualityASSTacticsID=:QualityASSTacticsID"
- ////// + ")";
- ////// parmeters1 = new OracleParameter[]
- ////// {
- ////// new OracleParameter(":QualityASSTacticsID",dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"]),
- ////// new OracleParameter(":UserID", dsJobsPayPlan.Tables[0].Rows[j]["userID"] ),
- ////// //new OracleParameter(":QualityASSTacticsID", dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"] ),
- ////// };
- ////// DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);//查询出有多少分类,进行计算
- // modify wangx
- // 求出缺陷数
- //// sqlString = @"select distinct TMP_PAM_ProductionData.barcode,TP_PAM_GoodsWagesType.WagesTypeID,TMP_PAM_Defect.goodsid,TMP_PAM_Defect.DefectFine,TMP_PAM_ProductionData.UserID from TMP_PAM_Defect
- //// inner join TP_PAM_GoodsWagesType
- //// on TMP_PAM_Defect.goodsID=TP_PAM_GoodsWagesType.goodsID
- ////
- //// left join TMP_PAM_ProductionData on TMP_PAM_Defect.ProductionDataID=TMP_PAM_ProductionData.ProductionDataID
- //// and TMP_PAM_ProductionData.barcode in
- //// (
- //// select barcode from TP_PAT_QualityASS left join TP_PAT_Piecework on TP_PAT_QualityASS.PayPlanID=TP_PAT_Piecework.PayPlanID
- //// left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1
- //// left join TMP_PAM_ProductionData on TMP_PAM_ProductionData.ProcedureID=TP_PAT_PieceProcedure.ProcedureID
- //// where TP_PAT_QualityASS.QualityASSTacticsID=:QualityASSTacticsID
- //// )
- //// where TMP_PAM_Defect.DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]
- //// + " and TMP_PAM_Defect.DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"]
- //// + " and TMP_PAM_ProductionData.barcode in "
- //// + "("
- //// + " select barcode from TP_PAT_QualityASS left join TP_PAT_Piecework on TP_PAT_QualityASS.PayPlanID=TP_PAT_Piecework.PayPlanID"
- //// + " left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1"
- //// + " left join TMP_PAM_ProductionData on TMP_PAM_ProductionData.ProcedureID=TP_PAT_PieceProcedure.ProcedureID"
- //// + " where TMP_PAM_ProductionData.UserID=:UserID and TP_PAT_QualityASS.QualityASSTacticsID=:QualityASSTacticsID"
- //// + ")";
- //// parmeters1 = new OracleParameter[]
- //// {
- //// new OracleParameter(":QualityASSTacticsID",dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"]),
- //// new OracleParameter(":UserID", dsJobsPayPlan.Tables[0].Rows[j]["userID"] ),
- //// //new OracleParameter(":QualityASSTacticsID", dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"] ),
- //// };
- //// DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);//查询出有多少分类,进行计算
- // 1查出此品质工资方案对应的计件工序与品质工序集
- sqlString = @"select distinct TP_PAT_PieceProcedure.ProcedureID,TP_PAT_PieceProcedure.Procedureflag
- from TP_PAT_QualityASS
- inner join TP_PAT_Piecework on TP_PAT_QualityASS.PayPlanID =
- TP_PAT_Piecework.PayPlanID
- inner join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID =
- TP_PAT_PieceProcedure.PieceTacticsID
- where TP_PAT_QualityASS.QualityASSTacticsID=:QualityASSTacticsID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityASSTacticsID",dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"]),
-
- };
- string jisian_ids = "";
- string pinzhi_ids = "";
- DataSet dsjieguo = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsjieguo != null && dsjieguo.Tables[0].Rows.Count > 0)
- {
- foreach (DataRow r10 in dsjieguo.Tables[0].Rows)
- {
- if (r10["Procedureflag"].ToString() == "1")
- {
- jisian_ids = jisian_ids + r10["ProcedureID"].ToString() + ",";
- }
- else if (r10["Procedureflag"].ToString() == "2")
- {
- pinzhi_ids = pinzhi_ids + r10["ProcedureID"].ToString() + ",";
- }
- }
- jisian_ids = jisian_ids.Trim(',');
- pinzhi_ids = pinzhi_ids.Trim(',');
- }
- DataRow[] r12 = ds_w.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] + " and DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"]);
- ds = new DataSet();
- if (r12.Length > 0)
- {
- string deletebarcode = "";
- foreach (DataRow r15 in r12)
- {
- r17 = dsTMPProductionData.Tables[0].Select("barcode =" + r15["barcode"] + " " + " and ( ProcedureID in(" + pinzhi_ids + "))");
- r18 = dsTMPProductionData.Tables[0].Select("barcode =" + r15["barcode"] + " " + " and ( ProcedureID in(" + jisian_ids + ")) and userID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]);
- if (r17.Length == 0 || r18.Length == 0)
- {
- deletebarcode = deletebarcode + r15["barcode"].ToString() + ",";
- }
- }
- deletebarcode = deletebarcode.Trim(',');
- if (deletebarcode == "")
- {
- deletebarcode = "0";
- }
- r12 = ds_w.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] + " and DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"] + " and barcode not in(" + deletebarcode + ")");
- if (r12.Length > 0)
- ds.Tables.Add(r12.CopyToDataTable().Copy());
- }
- // DataRow[] r12 = ds_w.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] + " and DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"] + " and ProcedureID in(" + pinzhi_ids + ") and ( ProcedureID in(" + jisian_ids + ")" + " and userID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] + ")");
- //DataSet ds = new DataSet();
- //if (r12.Length > 0)
- //{
- // ds.Tables.Add(r12.CopyToDataTable().Copy());
- //}
- string barcodes_Procedure = "";
- int drCount_Total = 0;
- for (int p1 = 0; p1 < dsPieceProcedure_2.Tables[0].Rows.Count; p1++)
- {
- drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- .Select(string.Format("ProcedureID={0}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"]));
- if (drQualityBaseProcedure.Length > 0)
- {
- foreach (DataRow r4 in drQualityBaseProcedure)
- {
- rr6 = dsTMPProductionData.Tables[0].Select("barcode='" + r4["barcode"] + "' and userid=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]);
- if (rr6.Length > 0)
- {
- if (!barcodes_Procedure.Contains(r4["barcode"].ToString()))
- {
- drCount_Total += 1; // 质量工序数量
- }
- barcodes_Procedure = barcodes_Procedure + r4["barcode"].ToString() + ",";
- }
- }
- }
- }
- //if (ds != null && ds.Tables[0].Rows.Count > 0)
- if (ds != null && ds.Tables.Count > 0)
- {
- // 此工号有对应的缺陷扣罚
- DataTable dt2 = ds.Tables[0].DefaultView.ToTable(true, "WagesTypeID");//有多少行,就有多少分类
- for (int p = 0; p < dt2.Rows.Count; p++)
- {
- decimal temp_QualityReward = 0;
- // 读取质量基数工序
- // 缺陷数量
- drDefect = ds.Tables[0].Select("DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"] + " and WagesTypeID=" + dt2.Rows[p]["WagesTypeID"]);
- // temp 为品质率,真正的价格在区间取
- decimal temp = 0;
- if (drCount_Total != 0)
- {
- //temp = Convert.ToDecimal(dsQualityASS.Tables[0].Rows[h]["DictionaryValue"]) * drDefect.Length / drCount_Total;
- temp = Convert.ToDecimal(drDefect.Length) / Convert.ToDecimal(drCount_Total);
- }
- // 查出对应分类品质奖励
- sqlString = "select QualityReward,QualityRate from TP_PAT_QualityReward where WagesTypeID=" + dt2.Rows[p]["WagesTypeID"] + " and QualityRate<=" + temp + " and QualityASSTacticsID=" + dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"] + " order by QualityRate desc";
- DataSet dsQualityReward_Temp = oracleTrConn.GetSqlResultToDs(sqlString);
- decimal QualityRate = 0;
- if (dsQualityReward_Temp != null && dsQualityReward_Temp.Tables[0].Rows.Count > 0)
- {
- //表示有对应的品质价格,结果集如有多个,取第一个对应的金额即可
- min_TotalCount = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityReward"]);
- temp_QualityReward = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityReward"]);//品质奖励金额
- QualityRate = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityRate"]);
- }
- #region 插入品质考核
- sqlString = @"select 1 from TP_PAR_QualityASS where YYYYMM=:YYYYMM and StaffID=:StaffID
- and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID and DefectFine=:DefectFine";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dt2.Rows[p]["WagesTypeID"]),
- new OracleParameter(":DefectFine",dsQualityASS.Tables[0].Rows[h]["DefectFine"]),
- };
- DataSet dsExistDefectFine = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistDefectFine != null && dsExistDefectFine.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_QualityASS
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DefectFine,
- DefectNum,
- QualityBaseNum,
- QualityRate,
- Amount,
- QualityASSTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :DefectFine,
- :DefectNum,
- :QualityBaseNum,
- :QualityRate,
- :Amount,
- :QualityASSTacticsID
- )";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dt2.Rows[p]["WagesTypeID"]),
- new OracleParameter(":DefectFine",dsQualityASS.Tables[0].Rows[h]["DefectFine"]),
- new OracleParameter(":DefectNum",drDefect.Length),
- new OracleParameter(":QualityBaseNum",drCount_Total),
- new OracleParameter(":QualityRate",temp),
- new OracleParameter(":Amount",min_TotalCount),
- new OracleParameter(":QualityASSTacticsID",PieceTacticsID_Insert4),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- #endregion
- }
- }
- else
- {
- //此工号没有缺陷扣罚
- decimal temp_QualityReward = 0;
- //int drCount_Total = 0;
- //string QualityProcedureIDS = "";
- //DataRow[] drCount = null;
- //////// sqlString = @"select distinct TMP_PAM_ProductionData.barcode,TP_PAM_GoodsWagesType.WagesTypeID,TMP_PAM_Defect.goodsid,TMP_PAM_Defect.DefectFine,TMP_PAM_ProductionData.UserID from TMP_PAM_Defect
- //////// inner join TP_PAM_GoodsWagesType
- //////// on TMP_PAM_Defect.goodsID=TP_PAM_GoodsWagesType.goodsID
- ////////
- //////// left join TMP_PAM_ProductionData on TMP_PAM_Defect.ProductionDataID=TMP_PAM_ProductionData.ProductionDataID
- //////// and TMP_PAM_ProductionData.barcode in
- //////// (
- //////// select barcode from TP_PAT_QualityASS left join TP_PAT_Piecework on TP_PAT_QualityASS.PayPlanID=TP_PAT_Piecework.PayPlanID
- //////// left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1
- //////// left join TMP_PAM_ProductionData on TMP_PAM_ProductionData.ProcedureID=TP_PAT_PieceProcedure.ProcedureID
- //////// where TP_PAT_QualityASS.QualityASSTacticsID=:QualityASSTacticsID
- //////// )
- //////// where TMP_PAM_Defect.DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]
- //////// // + " and TMP_PAM_Defect.DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"]
- //////// + " and TMP_PAM_ProductionData.barcode in "
- //////// + "("
- //////// + " select barcode from TP_PAT_QualityASS left join TP_PAT_Piecework on TP_PAT_QualityASS.PayPlanID=TP_PAT_Piecework.PayPlanID"
- //////// + " left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1"
- //////// + " left join TMP_PAM_ProductionData on TMP_PAM_ProductionData.ProcedureID=TP_PAT_PieceProcedure.ProcedureID"
- //////// + " where TMP_PAM_ProductionData.UserID=:UserID and TP_PAT_QualityASS.QualityASSTacticsID=:QualityASSTacticsID"
- //////// + ")";
- //////// parmeters1 = new OracleParameter[]
- //////// {
- //////// new OracleParameter(":QualityASSTacticsID",dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"]),
- //////// new OracleParameter(":UserID", dsJobsPayPlan.Tables[0].Rows[j]["userID"] ),
- //////// //new OracleParameter(":QualityASSTacticsID", dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"] ),
- //////// };
- //////// DataSet ds7 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- // 1查出此品质工资方案对应的计件工序与品质工序集
- sqlString = @"select distinct TP_PAT_PieceProcedure.ProcedureID,TP_PAT_PieceProcedure.Procedureflag
- from TP_PAT_QualityASS
- inner join TP_PAT_Piecework on TP_PAT_QualityASS.PayPlanID =
- TP_PAT_Piecework.PayPlanID
- inner join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID =
- TP_PAT_PieceProcedure.PieceTacticsID
- where TP_PAT_QualityASS.QualityASSTacticsID=:QualityASSTacticsID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":QualityASSTacticsID",dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"]),
-
- };
- string jisian_ids_1 = "";
- string pinzhi_ids_1 = "";
- DataSet dsjieguo_1 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsjieguo_1 != null && dsjieguo_1.Tables[0].Rows.Count > 0)
- {
- foreach (DataRow r10 in dsjieguo_1.Tables[0].Rows)
- {
- if (r10["Procedureflag"].ToString() == "1")
- {
- jisian_ids_1 = jisian_ids_1 + r10["ProcedureID"].ToString() + ",";
- }
- else if (r10["Procedureflag"].ToString() == "2")
- {
- pinzhi_ids_1 = pinzhi_ids_1 + r10["ProcedureID"].ToString() + ",";
- }
- }
- jisian_ids_1 = jisian_ids_1.Trim(',');
- pinzhi_ids_1 = pinzhi_ids_1.Trim(',');
- }
- //DataRow[] r13 = ds_w.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] + " and ProcedureID in(" + pinzhi_ids_1 + ") and ( ProcedureID in(" + jisian_ids_1 + ")" + ")");//nd userID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] +
- DataRow[] r13 = ds_w.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]);
- DataSet ds7 = new DataSet();
- if (r13.Length > 0)
- {
- string deletebarcode = "";
- foreach (DataRow r15 in r13)
- {
- r17 = dsTMPProductionData.Tables[0].Select("barcode =" + r15["barcode"] + " " + " and ( ProcedureID in(" + pinzhi_ids_1 + "))");
- r18 = dsTMPProductionData.Tables[0].Select("barcode =" + r15["barcode"] + " " + " and ( ProcedureID in(" + jisian_ids_1 + ")) and userID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]);
- if (r17.Length == 0 || r18.Length == 0)
- {
- deletebarcode = deletebarcode + r15["barcode"].ToString() + ",";
- //ds_w.Tables[0].AcceptChanges();
- }
- }
- deletebarcode = deletebarcode.Trim(',');
- if (deletebarcode == "")
- {
- deletebarcode = "0";
- }
- r13 = ds_w.Tables[0].Select("DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] + " and barcode not in(" + deletebarcode + ")");
- if (r13.Length > 0)
- ds7.Tables.Add(r13.CopyToDataTable().Copy());
- }
- //drCount_Total = ds7.Tables[0].Rows.Count;
- //
- //for (int yy = 0; yy < dsQualityProcedure.Tables[0].Rows.Count; yy++)
- //{
- // //drCount = dsTMPProductionData.Tables[0].Select("ProcedureID=" + dsQualityProcedure.Tables[0].Rows[yy]["ProcedureID"] + " and userID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]);
- // //QualityProcedureIDS += dsQualityProcedure.Tables[0].Rows[yy]["ProcedureID"].ToString() + ",";
- // drCount_Total += drCount.Length;
- //}
- //QualityProcedureIDS = QualityProcedureIDS.Trim(',');
- //drCount = dsTMPProductionData.Tables[0].Select("ProcedureID in (" + QualityProcedureIDS + ") and userID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"]);//有多少行,就有多少分类
- //if (drCount.Length > 0)
- //{
- if (ds7 != null && ds7.Tables.Count > 0)
- {
- DataTable dt2 = ds7.Tables[0].DefaultView.ToTable(true, "WagesTypeID");//有多少行,就有多少分类
- for (int p = 0; p < dt2.Rows.Count; p++)
- {
- // 读取质量基数工序
- // 缺陷数量
- drDefect = ds7.Tables[0].Select("DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"] + " and WagesTypeID=" + dt2.Rows[p]["WagesTypeID"]);
- // temp 为品质率,真正的价格在区间取
- decimal temp = 0 / drCount_Total;
- // 查出对应分类品质奖励
- sqlString = "select QualityReward,QualityRate from TP_PAT_QualityReward where WagesTypeID=" + dt2.Rows[p]["WagesTypeID"] + " and QualityRate<=" + temp + " and QualityASSTacticsID=" + dsQualityASS.Tables[0].Rows[h]["QualityASSTacticsID"] + " order by QualityRate";
- DataSet dsQualityReward_Temp = oracleTrConn.GetSqlResultToDs(sqlString);
- decimal QualityRate = 0;
- if (dsQualityReward_Temp != null && dsQualityReward_Temp.Tables[0].Rows.Count > 0)
- {
- //表示有对应的品质价格,结果集如有多个,取第一个对应的金额即可
- min_TotalCount = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityReward"]);
- temp_QualityReward = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityReward"]);//品质奖励金额
- QualityRate = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityRate"]);
- }
- //// 读取计件工资策略
- //int PieceTacticsID_Insert4 = 0;
- //sqlString = "select QualityASSTacticsID from TP_PAT_QualityASS where PayPlanID=:PayPlanID";
- //parmeters1 = new OracleParameter[]
- //{
- // new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- //};
- //DataSet dss3 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- //if (dss3 != null && dss3.Tables[0].Rows.Count > 0)
- //{
- // PieceTacticsID_Insert4 = Convert.ToInt32(dss3.Tables[0].Rows[0]["QualityASSTacticsID"]);
- //}
- #region 插入品质考核
- sqlString = @"select 1 from TP_PAR_QualityASS where YYYYMM=:YYYYMM and StaffID=:StaffID
- and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID and DefectFine=:DefectFine";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dt2.Rows[p]["WagesTypeID"]),
- new OracleParameter(":DefectFine",dsQualityASS.Tables[0].Rows[h]["DefectFine"]),
- };
- DataSet dsExistDefectFine = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistDefectFine != null && dsExistDefectFine.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_QualityASS
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DefectFine,
- DefectNum,
- QualityBaseNum,
- QualityRate,
- Amount,
- QualityASSTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :DefectFine,
- :DefectNum,
- :QualityBaseNum,
- :QualityRate,
- :Amount,
- :QualityASSTacticsID
- )";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dt2.Rows[p]["WagesTypeID"]),
- new OracleParameter(":DefectFine",dsQualityASS.Tables[0].Rows[h]["DefectFine"]),
- new OracleParameter(":DefectNum",drDefect.Length),
- new OracleParameter(":QualityBaseNum",drCount_Total),
- new OracleParameter(":QualityRate",temp),
- new OracleParameter(":Amount",min_TotalCount),
- new OracleParameter(":QualityASSTacticsID",PieceTacticsID_Insert4),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- #endregion
- }// for 外层循环
- }
- // }
- }
- // modify wangx end
- totalcount_QualityASS += min_TotalCount;
- }
- #endregion
- decimal? totalcount_AdminEXA = 0;// 行政工资
- #region 行政考核
- //sqlString = "select Amount from TP_PAD_AdminEXA where SettlementFlag=0 and StaffID=:StaffID and AuditStatus=1 and AuditlDate >=:dateStartTime and AuditlDate<=:dateEndTime";//
- sqlString = "select Amount from TP_PAD_AdminEXA where StaffID=:StaffID and AuditStatus=1 and AuditlDate >=:dateStartTime and AuditlDate<=:dateEndTime";//
- parmeters1 = new OracleParameter[]
- {
- //new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[i]["UserID"]),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":dateStartTime",dateStartTime),
- new OracleParameter(":dateEndTime",dateEndTime),
- };
- DataSet dsAdminEXA = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsAdminEXA != null && dsAdminEXA.Tables[0].Rows.Count > 0)
- {
- for (int y = 0; y < dsAdminEXA.Tables[0].Rows.Count; y++)
- {
- totalcount_AdminEXA += Convert.ToDecimal(dsAdminEXA.Tables[0].Rows[y]["Amount"]);
- }
- sqlString = "update TP_PAD_AdminEXA set SettlementFlag=1 where SettlementFlag=0 and StaffID=:StaffID and AuditStatus=1 and AuditlDate >=:dateStartTime and AuditlDate<=:dateEndTime";
- parmeters1 = new OracleParameter[]
- {
-
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":dateStartTime",dateStartTime),
- new OracleParameter(":dateEndTime",dateEndTime),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- #endregion
- #region 插入工资单
- // 防止一个员工在多个工号下面
- sqlString = "select 1 from TP_PAR_Payroll where YYYYMM=:YYYYMM and StaffID=:StaffID ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2,(Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),ParameterDirection.Input),
- new OracleParameter(":StaffID",OracleDbType.Int32,dsJobsPayPlan.Tables[0].Rows[j]["StaffID"],ParameterDirection.Input),
-
-
- };
- DataSet ds4 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds4 != null && ds4.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_Payroll
- (
- YYYYMM,
- StaffID,
-
- Piecework,
- DamageSubsidy,
- RepairSubsidy,
- QualityEXA,
- AdminEXA,
- ADAmount,
- TotalAmount,
- AuditStatus,
- AccountID,
- CreateUserID,
- UpdateUserID
- ) values
- (
- :YYYYMM,
- :StaffID,
-
- :Piecework,
- :DamageSubsidy,
- :RepairSubsidy,
- :QualityEXA,
- :AdminEXA,
- :ADAmount,
- :TotalAmount,
- :AuditStatus,
- :AccountID,
- :CreateUserID,
- :UpdateUserID
- )";
- decimal? a = (totalcount_Piecegiework + totalcount_Scrap + totalcount_RepairSubsidy + totalcount_QualityASS / userstaffcount + totalcount_AdminEXA);
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2,(Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),ParameterDirection.Input),
- new OracleParameter(":StaffID",OracleDbType.Int32,dsJobsPayPlan.Tables[0].Rows[j]["StaffID"],ParameterDirection.Input),
- //new OracleParameter(":PayPlanID",OracleDbType.Int32,dsPayPlan.Tables[0].Rows[i]["PayPlanID"],ParameterDirection.Input),
- new OracleParameter(":Piecework",OracleDbType.Decimal,totalcount_Piecegiework,ParameterDirection.Input),
- new OracleParameter(":DamageSubsidy",OracleDbType.Decimal,totalcount_Scrap,ParameterDirection.Input),
- new OracleParameter(":RepairSubsidy",OracleDbType.Decimal,totalcount_RepairSubsidy,ParameterDirection.Input),
- new OracleParameter(":QualityEXA",OracleDbType.Decimal,totalcount_QualityASS/userstaffcount,ParameterDirection.Input),
- new OracleParameter(":AdminEXA",OracleDbType.Decimal,totalcount_AdminEXA,ParameterDirection.Input),
- new OracleParameter(":ADAmount",OracleDbType.Decimal,0,ParameterDirection.Input),
-
- new OracleParameter(":TotalAmount",OracleDbType.Decimal,a,ParameterDirection.Input),
- new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
- new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
- new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
- new OracleParameter(":AuditStatus",OracleDbType.Int32,0,ParameterDirection.Input),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- else
- {
- sqlString = @"update TP_PAR_Payroll
- set Piecework=Piecework+:Piecework,
- DamageSubsidy=DamageSubsidy+:DamageSubsidy,
- RepairSubsidy=RepairSubsidy+:RepairSubsidy,
- QualityEXA=QualityEXA+:QualityEXA,
- AdminEXA=AdminEXA+:AdminEXA,
- ADAmount=AdminEXA+:ADAmount,
- TotalAmount=TotalAmount+:TotalAmount
- where YYYYMM=:YYYYMM and StaffID=:StaffID
-
- ";
- decimal? a = (totalcount_Piecegiework + totalcount_Scrap + totalcount_RepairSubsidy + totalcount_QualityASS + totalcount_AdminEXA);
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2,(Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),ParameterDirection.Input),
- new OracleParameter(":StaffID",OracleDbType.Int32,dsJobsPayPlan.Tables[0].Rows[j]["StaffID"],ParameterDirection.Input),
- //new OracleParameter(":PayPlanID",OracleDbType.Int32,dsPayPlan.Tables[0].Rows[i]["PayPlanID"],ParameterDirection.Input),
- new OracleParameter(":Piecework",OracleDbType.Decimal,totalcount_Piecegiework,ParameterDirection.Input),
- new OracleParameter(":DamageSubsidy",OracleDbType.Decimal,totalcount_Scrap,ParameterDirection.Input),
- new OracleParameter(":RepairSubsidy",OracleDbType.Decimal,totalcount_RepairSubsidy,ParameterDirection.Input),
- new OracleParameter(":QualityEXA",OracleDbType.Decimal,totalcount_QualityASS,ParameterDirection.Input),
- new OracleParameter(":AdminEXA",OracleDbType.Decimal,totalcount_AdminEXA,ParameterDirection.Input),
- new OracleParameter(":ADAmount",OracleDbType.Decimal,0,ParameterDirection.Input),
-
- new OracleParameter(":TotalAmount",OracleDbType.Decimal,a,ParameterDirection.Input),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- #endregion
- #region 删除临时数据表(工号)
- DataRow[] drDeleteUserID = dsTMPProductionData.Tables[0]
- .Select(string.Format("UserID={0} and ProcedureID in({1})", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), ProcedureIDS_Delete));
- //int aaaa = dsTMPProductionData.Tables[0].Rows.Count;
- foreach (DataRow r in drDeleteUserID)
- {
- r.Delete();
- //dsTMPProductionData.Tables[0].Rows.Remove(r);
- }
- dsTMPProductionData.Tables[0].AcceptChanges();
- //int aaaaaa = dsTMPProductionData.Tables[0].Rows.Count;
- #endregion
- }
- if (intResult > 0)
- {
- sqlString = @"insert into TP_PAR_PayrollAccount
- (
- YYYYMM,
- BeginDate,
- EndDate,
- AccountID,
- CreateUserID
- ) values
- (
- :YYYYMM,
- :BeginDate,
- :EndDate,
- :AccountID,
- :CreateUserID
- )";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":BeginDate",dateStartTime),
- new OracleParameter(":EndDate",dateEndTime),
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":CreateUserID",sUserInfo.UserID),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // 更新系统结算月
- sqlString = "update TP_MST_SystemDate set datevalue=sysdate where systemdatetype=2";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString);
- sqlString = "update TP_MST_SystemDate set datevalue=:datevalue where systemdatetype=5";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":datevalue",dateEndTime),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- }
- else
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- #endregion
- #region 工资结算历史记录查询
- /// <summary>
- /// 获取工资结算历史记录
- /// </summary>
- /// <param name="YYYYMM"></param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static DataSet GetPayroll(string YYYYMM, SUserInfo sUserInfo)
- {
- IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- con.Open();
- string sqlString = @"select
- 0 as Sel,
-
- TP_PAR_Payroll.Yyyymm,
- TP_HR_Staff.StaffName,
- TP_HR_Staff.StaffCode,
- TP_PAR_Payroll.StaffID,
- TP_PAR_Payroll.Piecework,
- TP_PAR_Payroll.DamageSubsidy,
- TP_PAR_Payroll.RepairSubsidy,
- TP_PAR_Payroll.QualityEXA,
- TP_PAR_Payroll.AdminEXA,
- TP_PAR_Payroll.ADAmount,
- TP_PAR_Payroll.TotalAmount,
- TP_PAR_Payroll.Remarks,
- TP_PAR_Payroll.AuditStatus,
- decode(TP_PAR_Payroll.AuditStatus,0,'待审核','1','审核通过','审核未通过') as AuditStatusName,
- TP_PAR_Payroll.AuditlDate,
- TP_PAR_Payroll.Auditor,
- (
- select
- wmsys.wm_concat(to_char(tp_mst_user.usercode)) as usercode
- from tp_mst_userstaff
- left join tp_mst_user
- on tp_mst_userstaff.userid=tp_mst_user.userid
- where tp_mst_userstaff.staffid=TP_PAR_Payroll.Staffid
- ) as usercode
- from TP_PAR_Payroll left join TP_HR_Staff
- on TP_PAR_Payroll.StaffID=TP_HR_Staff.StaffID
- where TP_PAR_Payroll.YYYYMM=:YYYYMM";
- OracleParameter[] paras = new OracleParameter[]{
- new OracleParameter("YYYYMM",OracleDbType.Varchar2, YYYYMM,ParameterDirection.Input),
- };
- DataSet ds = con.GetSqlResultToDs(sqlString, paras);
- return ds;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- finally
- {
- if (con.ConnState == ConnectionState.Open)
- {
- con.Close();
- }
- }
- }
- /// <summary>
- /// 获取工资结算历史记录详情
- /// </summary>
- /// <param name="YYYYMM"></param>
- /// <param name="staffid"></param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static DataSet GetPayrollInfo(string YYYYMM, int staffid, SUserInfo sUserInfo)
- {
- IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- con.Open();
- DataSet dsReturn = new DataSet();
- string sqlString = @"select
- TP_HR_Staff.StaffName,
- TP_HR_Staff.StaffCode,
- decode(StaffFlag,'1','试用','正式') as StaffFlag,
- YYYYMM,
- decode(GoodsFlag,'1','新品','2','变产','正常') as GoodsFlag ,
- PieceworkNum,
- PieceCoefficient,
- DamageNum,
- DamageCoefficient,
- UnqualifiedNum,
- UnqualifiedCoefficient,
- QualifiedNum,
- QualifiedCoefficient,
- QualityBaseNum,
- QualityRate*100 as QualityRate,
- QualityWages,
- Amount,
- TP_PAS_PayPlan.PayPlanName,
- TP_PAT_Piecework.PieceTacticsName,
- TP_PAM_WagesType.WagesTypeName
- from TP_PAR_Piecework left join TP_HR_Staff
- on TP_PAR_Piecework.StaffID=TP_HR_Staff.StaffID
- left join TP_PAS_PayPlan on TP_PAS_PayPlan.PayPlanID=TP_PAR_Piecework.PayPlanID
- left join TP_PAM_WagesType on TP_PAM_WagesType.WagesTypeID=TP_PAR_Piecework.WagesTypeID
- left join TP_PAT_Piecework on TP_PAR_Piecework.PieceTacticsID=TP_PAT_Piecework.PieceTacticsID
- where TP_PAR_Piecework.YYYYMM=:YYYYMM and TP_PAR_Piecework.staffid=:staffid";
- OracleParameter[] paras = new OracleParameter[]{
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2, YYYYMM,ParameterDirection.Input),
- new OracleParameter(":staffid",OracleDbType.Int32, staffid,ParameterDirection.Input),
- };
- DataSet ds = con.GetSqlResultToDs(sqlString, paras);
- ds.Tables[0].TableName = "TP_PAR_Piecework";
- string sqlString2 = @"select
- TP_HR_Staff.StaffName,
- TP_HR_Staff.StaffCode,
- DamageNum,
- YYYYMM,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- Amount,
- TP_PAS_PayPlan.PayPlanName,
- TP_PAT_Piecework.PieceTacticsName,
- TP_PAM_WagesType.WagesTypeName
- from TP_PAR_DamageSubsidy left join TP_HR_Staff
- on TP_PAR_DamageSubsidy.StaffID=TP_HR_Staff.StaffID
- left join TP_PAS_PayPlan on TP_PAS_PayPlan.PayPlanID=TP_PAR_DamageSubsidy.PayPlanID
- left join TP_PAM_WagesType on TP_PAM_WagesType.WagesTypeID=TP_PAR_DamageSubsidy.WagesTypeID
- left join TP_PAT_Piecework on TP_PAR_DamageSubsidy.PieceTacticsID=TP_PAT_Piecework.PieceTacticsID
- where TP_PAR_DamageSubsidy.YYYYMM=:YYYYMM and TP_PAR_DamageSubsidy.staffid=:staffid";
- DataSet ds2 = con.GetSqlResultToDs(sqlString2, paras);
- ds2.Tables[0].TableName = "TP_PAR_DamageSubsidy";
- string sqlString3 = @"select
- TP_HR_Staff.StaffName,
- TP_HR_Staff.StaffCode,
- RSuperioNum,
- YYYYMM,
- RSuperiorCoefficient,
- RQualifiedNum,
- RQualifiedCoefficient,
- StandardWages,
- RepairSubsidyRate,
- RepairSubsidy,
- Amount,
- TP_PAS_PayPlan.PayPlanName,
- TP_PAT_Piecework.PieceTacticsName,
- TP_PAM_WagesType.WagesTypeName
- from TP_PAR_RepairSubsidy left join TP_HR_Staff
- on TP_PAR_RepairSubsidy.StaffID=TP_HR_Staff.StaffID
-
- left join TP_PAS_PayPlan on TP_PAS_PayPlan.PayPlanID=TP_PAR_RepairSubsidy.PayPlanID
- left join TP_PAM_WagesType on TP_PAM_WagesType.WagesTypeID=TP_PAR_RepairSubsidy.WagesTypeID
- left join TP_PAT_Piecework on TP_PAR_RepairSubsidy.PieceTacticsID=TP_PAT_Piecework.PieceTacticsID
- where TP_PAR_RepairSubsidy.YYYYMM=:YYYYMM and TP_PAR_RepairSubsidy.staffid=:staffid";
- DataSet ds3 = con.GetSqlResultToDs(sqlString3, paras);
- ds3.Tables[0].TableName = "TP_PAR_RepairSubsidy";
- string sqlString4 = @"select
- TP_HR_Staff.StaffName,
- TP_HR_Staff.StaffCode,
-
- TP_MST_DataDictionary.DictionaryValue as DefectFine,
- DefectNum,
- YYYYMM,
- QualityBaseNum,
- QualityRate*100 as QualityRate,
- Amount,
- TP_PAS_PayPlan.PayPlanName,
- TP_PAT_QualityASS.QualityTacticsName,
- TP_PAM_WagesType.WagesTypeName
- from TP_PAR_QualityASS left join TP_HR_Staff
- on TP_PAR_QualityASS.StaffID=TP_HR_Staff.StaffID
- left join TP_MST_DataDictionary
- on TP_MST_DataDictionary.DictionaryID=TP_PAR_QualityASS.DefectFine and TP_MST_DataDictionary.DictionaryType='ASE002'
- left join TP_PAS_PayPlan on TP_PAS_PayPlan.PayPlanID=TP_PAR_QualityASS.PayPlanID
- left join TP_PAM_WagesType on TP_PAM_WagesType.WagesTypeID=TP_PAR_QualityASS.WagesTypeID
- left join TP_PAT_QualityASS on TP_PAR_QualityASS.QualityASSTacticsID=TP_PAT_QualityASS.QualityASSTacticsID
- where TP_PAR_QualityASS.YYYYMM=:YYYYMM and TP_PAR_QualityASS.staffid=:staffid";
- DataSet ds4 = con.GetSqlResultToDs(sqlString4, paras);
- ds4.Tables[0].TableName = "TP_PAR_QualityASS";
- dsReturn.Tables.Add(ds.Tables[0].Copy());
- dsReturn.Tables.Add(ds2.Tables[0].Copy());
- dsReturn.Tables.Add(ds3.Tables[0].Copy());
- dsReturn.Tables.Add(ds4.Tables[0].Copy());
- return dsReturn;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- finally
- {
- if (con.ConnState == ConnectionState.Open)
- {
- con.Close();
- }
- }
- }
- /// <summary>
- /// 工资单调整
- /// </summary>
- /// <param name="dataPayroll">工资单数据</param>
- /// <param name="sUserInfo">用户基本信息</param>
- /// <returns>int</returns>
- /// <remarks>
- /// 2014.09.11 冯雪 新建
- /// </remarks>
- public static int SavePayrollChange(DataTable dataPayroll, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- // 检验参数的有效性
- if (dataPayroll == null && dataPayroll.Rows.Count == 0)
- {
- return -1;
- }
- int intResult = 0;
- oracleTrConn.Connect();
- foreach (DataRow dataRow in dataPayroll.Rows)
- {
- if (dataRow.RowState == DataRowState.Modified)
- {
- #region 工资单对应金额
- string sqlString = "UPDATE TP_PAR_Payroll SET "
- + " ADAmount = :ADAmount, "
- + " TotalAmount =TotalAmount+:ADAmount, "
- + " Remarks = :Remarks "
- + " WHERE YYYYMM = :YYYYMM"
- + " and StaffID = :StaffID"
- + " and AuditStatus=0";
- OracleParameter[] parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":ADAmount",dataRow["ADAmount"].ToString()),
- new OracleParameter(":YYYYMM",dataRow["YYYYMM"].ToString()),
- new OracleParameter(":StaffID",dataRow["StaffID"].ToString()),
- new OracleParameter(":Remarks",dataRow["Remarks"].ToString())
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- }
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- /// <summary>
- /// 工资单审批
- /// </summary>
- /// <param name="dataPayroll">工资单数据</param>
- /// <param name="sUserInfo">用户基本信息</param>
- /// <returns>int</returns>
- /// <remarks>
- /// 2014.09.11 冯雪 新建
- /// </remarks>
- public static int SavePayrollAuditStatus(DataTable dataPayrollAuditStatus, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- int intResult = 0;
- oracleTrConn.Connect();
- foreach (DataRow dataRow in dataPayrollAuditStatus.Rows)
- {
- #region 工资单对应审核
- string sqlString = "UPDATE TP_PAR_Payroll SET "
- + " AuditStatus = :AuditStatus, "
- + " Auditor =:Auditor, "
- + " AuditlDate =sysdate "
- + " WHERE YYYYMM = :YYYYMM"
- + " and StaffID = :StaffID";
- OracleParameter[] parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":AuditStatus",dataRow["sel"].ToString()=="1"?"1":"0"),
- new OracleParameter(":Auditor",sUserInfo.UserID),
- new OracleParameter(":YYYYMM",dataRow["YYYYMM"].ToString()),
- new OracleParameter(":StaffID",dataRow["StaffID"].ToString()),
-
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- #endregion
- /// <summary>
- /// 结算工资
- /// </summary>
- /// <param name="IsEdit">false 新建 true 编辑</param>
- /// <param name="dtJobsPayPlan">数据源</param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static int SavePayPiecework2(int Month, int Year, DateTime start, DateTime end, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- int intResult = 0;
- oracleTrConn.Connect();
- oracleTrConn.IsCommandTimeout = false;
- #region 判断是否已经结算此月
- string sqlExist = "select 1 from TP_PAR_PayrollAccount where YYYYMM=:YYYYMM";
- OracleParameter[] parmetersExist = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- };
- DataSet dsExist = oracleTrConn.GetSqlResultToDs(sqlExist, parmetersExist);
- if (dsExist != null && dsExist.Tables[0].Rows.Count > 0)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- return -99;
- }
- #endregion
- #region 查询系统参数设定值,用来结算工资范围取值
- DateTime? dateStartTime = null;
- DateTime? dateEndTime = null;
- string sqlString = "select SettingValue from TP_MST_SystemSetting where accountid=:accountid and SettingCode='S_CMN_0003'";
- OracleParameter[] parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- };
- DataSet dsSystemSettings = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsSystemSettings != null && dsSystemSettings.Tables[0].Rows.Count > 0)
- {
- // 算出此月一共多少天,防止设置的值,大于当月的天数
- int daysCount = DateTime.DaysInMonth(Year, Month);
- if (dsSystemSettings.Tables[0].Rows[0]["SettingValue"].ToString() == "月末")
- {
- dateStartTime = new DateTime(Year, Month, 1);
- dateEndTime = new DateTime(Year, Month, daysCount, 23, 59, 59);
- }
- else
- {
- // 选择的值,大于当月的天数
- if (Convert.ToInt32(dsSystemSettings.Tables[0].Rows[0]["SettingValue"]) > daysCount)
- {
- dateEndTime = new DateTime(Year, Month, daysCount, 23, 59, 59);
- dateStartTime = dateEndTime.Value.AddMonths(-1).AddDays(1);
- }
- else
- {
- dateEndTime = new DateTime(Year, Month, Convert.ToInt32(dsSystemSettings.Tables[0].Rows[0]["SettingValue"]), 23, 59, 59);
- dateStartTime = dateEndTime.Value.AddMonths(-1).AddDays(1);
- }
- }
- }
- dateStartTime = start;
- //dateEndTime = new DateTime(DateTime.Now.Year, DateTime.Now.AddMonths(-2).Month, 27, 23, 59, 59);
- dateEndTime = end;
- #endregion
- #region 根据筛选日期往临时表里插入数据
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":dateStartTime",OracleDbType.Date,dateStartTime,ParameterDirection.Input),
- new OracleParameter(":dateEndTime",OracleDbType.Date,dateEndTime,ParameterDirection.Input),
- new OracleParameter(":accountid",sUserInfo.AccountID),
- };
- // 生产数据临时表
- sqlString = @"insert into TMP_PAM_ProductionData
- select
- ProductionDataID,
- BarCode,
- CentralizedBatchNo,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- ProcedureID,
- ProcedureCode,
- ProcedureName,
- ProcedureModel,
- ModelType,
- PieceType,
- IsReworked,
- NodeType,
- IsPublicBody,
- IsReFire,
- GoodsLevelID,
- GoodsLevelTypeID,
- SpecialRepairFlag,
- OrganizationID,
- GoodsID,
- GoodsCode,
- GoodsName,
- UserID,
- UserCode,
- UserName,
- ClassesSettingID,
- KilnID,
- KilnCode,
- KilnName,
- KilnCarID,
- KilnCarCode,
- KilnCarName,
- KilnCarBatchNo,
- KilnCarPosition,
- ReworkProcedureID,
- ReworkProcedureCode,
- ReworkProcedureName,
- GroutingDailyID,
- GroutingDailyDetailID,
- GroutingLineID,
- GroutingLineCode,
- GroutingLineName,
- GMouldTypeID,
- CanManyTimes,
- GroutingLineDetailID,
- GroutingDate,
- GroutingMouldCode,
- MouldCode,
- GroutingUserID,
- GroutingUserCode,
- GroutingNum,
- Remarks,
- AccountDate,
- SettlementFlag,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_ProductionData where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // 生产缺陷
- sqlString = @"insert into TMP_PAM_Defect
- select
- ProductionDefectID,
- ProductionDataID,
- BarCode,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- ProcedureID,
- ProcedureCode,
- ProcedureName,
- UserID,
- UserCode,
- UserName,
- GoodsID,
- GoodsCode,
- GoodsName,
- DefectID,
- DefectCode,
- DefectName,
- DefectPositionID,
- DefectPositionCode,
- DefectPositionName,
- ScrapResponFlag,
- DefectProductionDataID,
- DefectProcedureID,
- DefectProcedureCode,
- DefectProcedureName,
- DefectUserID,
- DefectUserCode,
- DefectUserName,
- DefectJobs,
- DefectFine,
- MissedUserID,
- MissedUserCode,
- MissedUserName,
- Remarks,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_Defect where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //生产缺陷责任者
- sqlString = @"insert into TMP_PAM_DefectResponsible
- select
- ProductionDefectID,
- StaffID,
- StaffStatus,
- UserID,
- UserCode,
- UJobsID,
- SJobsID,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_DefectResponsible where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // //缺陷漏检责任者
- // sqlString = @"insert into TP_PAM_DefectMissedResponsible
- // select * from TP_PM_DefectMissedResponsible where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- // intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //废弃产品
- sqlString = @"insert into TMP_PAM_ScrapProduct
- select
- ScrapProductID,
- BarCode,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- ProcedureID,
- ProcedureCode,
- ProcedureName,
- GoodsID,
- GoodsCode,
- GoodsName,
- GroutingDailyID,
- GroutingDailyDetailID,
- GroutingDate,
- GroutingLineID,
- GroutingLineCode,
- GroutingLineName,
- GMouldTypeID,
- GroutingLineDetailID,
- GroutingMouldCode,
- MouldCode,
- GroutingUserID,
- GroutingUserCode,
- GroutingNum,
- IsPublicBody,
- IsReFire,
- SpecialRepairFlag,
- GoodsLevelID,
- GoodsLevelTypeID,
- ResponType,
- ScrapFine,
- ScrapDate,
- Rreason,
- Remarks,
- AuditStatus,
- Auditor,
- AuditDate,
- AuditOpinion,
- AccountDate,
- KilnID,
- KilnCode,
- KilnName,
- KilnCarID,
- KilnCarCode,
- KilnCarName,
- KilnCarBatchNo,
- KilnCarPosition,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
-
- from TP_PM_ScrapProduct where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1 and AuditStatus=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //产品废弃责任工序
- sqlString = @"insert into TMP_PAM_ResponProcedure
- select
- ResponProcedureID,
- ScrapProductID,
- BarCode,
- ProductionDataID,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- ProcedureID,
- ProcedureCode,
- ProcedureName,
- UserID,
- UserCode,
- UserName,
- Remarks,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_ResponProcedure
- where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1 ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //产品废弃责任者
- sqlString = @"insert into TMP_PAM_ScrapResponsible
- select
- ResponsibleID,
- ScrapProductID,
- BarCode,
- ResponType,
- ResponProcedureID,
- ScrapFine,
- StaffID,
- StaffStatus,
- UserID,
- UserCode,
- UJobsID,
- SJobsID,
- AccountID,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_ScrapResponsible where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- //成品 (干补补贴用)
- sqlString = @"insert into TMP_PAM_FinishedProduct
- select
- BarCode,
- ProductionLineID,
- ProductionLineCode,
- ProductionLineName,
- IsPublicBody,
- IsReFire,
- SpecialRepairFlag,
- GoodsLevelID,
- GoodsLevelTypeID,
- GoodsID,
- GoodsCode,
- GoodsName,
- GroutingDailyID,
- GroutingDailyDetailID,
- GroutingDate,
- GroutingLineID,
- GroutingLineCode,
- GroutingLineName,
- GMouldTypeID,
- GroutingLineDetailID,
- GroutingMouldCode,
- MouldCode,
- GroutingUserID,
- GroutingUserCode,
- GroutingNum,
- Remarks,
- AccountDate,
- SettlementFlag,
- KilnID,
- KilnCode,
- KilnName,
- KilnCarID,
- KilnCarCode,
- KilnCarName,
- KilnCarBatchNo,
- KilnCarPosition,
- AccountID,
- ValueFlag,
- CreateTime,
- CreateUserID,
- UpdateTime,
- UpdateUserID,
- OPTimeStamp
- from TP_PM_FinishedProduct where CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- #region 读取工资方案,用来最外层循环,以后可以是多个方法,目前只有一个工资方案
- sqlString = "select PayPlanID from TP_PAS_PayPlan where AccountID=:AccountID and ValueFlag=1";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- };
- DataSet dsPayPlan = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- // dsPayPlan为工资方案数据集
- if (dsPayPlan != null && dsPayPlan.Tables[0].Rows.Count > 0)
- {
- // 进入循环,
- for (int i = 0; i < dsPayPlan.Tables[0].Rows.Count; i++)
- {
- #region 查出工资临时生产数据表数据,用于计算工资
- //查出在产品工介分类中的生产数据,用于计算每个人的工资
- sqlString = @"select
- TMP_PAM_ProductionData.ProductionDataID,
- TMP_PAM_ProductionData.BarCode,
- TMP_PAM_ProductionData.ProcedureID,
- TMP_PAM_ProductionData.GoodsID,
- TMP_PAM_ProductionData.GoodsCode,
- TMP_PAM_ProductionData.GoodsName,
- TMP_PAM_ProductionData.UserID,
- TMP_PAM_ProductionData.UserCode,
- TMP_PAM_ProductionData.UserName,
- TP_MST_Goods.StartingDate,
- TP_PAM_GoodsWagesType.WagesTypeID,
- TMP_PAM_ProductionData.GoodsLevelTypeID
- from
- TMP_PAM_ProductionData
- inner join TP_PAM_GoodsWagesType
- on TMP_PAM_ProductionData.GoodsID=TP_PAM_GoodsWagesType.GoodsID
- left join TP_MST_Goods
- on TP_PAM_GoodsWagesType.GoodsID=TP_MST_Goods.GoodsID
- where TMP_PAM_ProductionData.CreateTime >=:dateStartTime and TMP_PAM_ProductionData.CreateTime<=:dateEndTime and accountid=:accountid
- order by TMP_PAM_ProductionData.ProductionDataID desc";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- new OracleParameter(":dateStartTime",dateStartTime),
- new OracleParameter(":dateEndTime",dateEndTime),
- };
- DataSet dsTMPProductionData = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 查出工资方案对应工种的员工,用于给每个员工结算工资
- sqlString = @"select TP_HR_Staff.StaffID,TP_HR_Staff.StaffCode,TP_HR_Staff.StaffName,TP_HR_Staff.Jobs,TP_HR_Staff.StaffStatus
- ,TP_HR_Staff.EntryDate,TP_HR_Staff.TurnoverDate,TP_HR_Staff.ExProbationEndDate, TP_MST_UserStaff.UserID
- from TP_HR_Staff
- inner join TP_MST_UserStaff on TP_HR_Staff.StaffID=TP_MST_UserStaff.StaffID
- where TP_HR_Staff.Jobs in
- (
- select JobsID from TP_PAM_JobsPayPlan where PayPlanID=:PayPlanID
- )
- and TP_HR_Staff.accountid=:accountid and TP_HR_Staff.valueflag=1
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsJobsPayPlan = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 查出计件工资策略
- sqlString = @"select * from TP_PAT_Piecework where accountid=:accountid and valueflag=1 and PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsPiecework = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- int PieceTacticsID = 0; //计件工资策略ID
- //int PieceworkValue = 0; //计件工资策略,如果未配置工资方案计件策略,计件工资为0
- string PieceType = ""; // 工序类型
- //int? PieceProcedureID = null; //计件工序
- decimal PieceCoefficient = 1; // 计件系数
- string DamageFlag = ""; //损坯计算标识
- decimal? DamageCoefficient = null; //损坯系数
- string UnqualifiedFlag = ""; //次品计算标识
- decimal? UnqualifiedCoefficient = null; //次品系数
- string QualifiedFlag = ""; //副品计算标识
- decimal? QualifiedCoefficient = null; //副品系数
- //int? QualityBaseProcedureID = null; //质量基数工序
- if (dsPiecework != null && dsPiecework.Tables[0].Rows.Count > 0)
- {
- // 有且只能一个对应的工资方案,直接取table0行,如果取出多行,此数据不对,因为有且只能一行
- // 赋值代码
- PieceTacticsID = Convert.ToInt32(dsPiecework.Tables[0].Rows[0]["PieceTacticsID"].ToString());
- PieceType = dsPiecework.Tables[0].Rows[0]["PieceType"].ToString();
- //PieceProcedureID = Convert.ToInt32(dsPiecework.Tables[0].Rows[0]["PieceProcedureID"]);
- PieceCoefficient = Convert.ToDecimal(dsPiecework.Tables[0].Rows[0]["PieceCoefficient"]);
- DamageFlag = dsPiecework.Tables[0].Rows[0]["DamageFlag"].ToString();
- DamageCoefficient = Convert.ToDecimal(dsPiecework.Tables[0].Rows[0]["DamageCoefficient"]);
- UnqualifiedFlag = dsPiecework.Tables[0].Rows[0]["UnqualifiedFlag"].ToString();
- UnqualifiedCoefficient = Convert.ToDecimal(dsPiecework.Tables[0].Rows[0]["UnqualifiedCoefficient"]);
- QualifiedFlag = dsPiecework.Tables[0].Rows[0]["QualifiedFlag"].ToString();
- QualifiedCoefficient = Convert.ToDecimal(dsPiecework.Tables[0].Rows[0]["QualifiedCoefficient"]);
- //QualityBaseProcedureID = Convert.ToInt32(dsPiecework.Tables[0].Rows[0]["QualityBaseProcedureID"]);
- }
- #endregion
- #region 查出计件工资策略(计件工序)
- sqlString = "select * from TP_PAT_PieceProcedure where PieceTacticsID=:PieceTacticsID and ProcedureFlag=1";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",PieceTacticsID),
- };
- DataSet dsPieceProcedure_1 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- sqlString = "select * from TP_PAT_PieceProcedure where PieceTacticsID=:PieceTacticsID and ProcedureFlag=2";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PieceTacticsID",PieceTacticsID),
- };
- DataSet dsPieceProcedure_2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 查出全部废弃产品表数据,用于计算工资
- sqlString = @"select TMP_PAM_ResponProcedure.UserID,TP_PAM_GoodsWagesType.WagesTypeID,TP_MST_Goods.StartingDate,TMP_PAM_ScrapProduct.barcode, from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID
- left join TP_PAM_GoodsWagesType on TMP_PAM_ScrapProduct.GoodsID=TP_PAM_GoodsWagesType.GoodsID
- left join TP_MST_Goods
- on TP_PAM_GoodsWagesType.GoodsID=TP_MST_Goods.GoodsID
- where TMP_PAM_ScrapProduct.CreateTime >=:dateStartTime and TMP_PAM_ScrapProduct.CreateTime<=:dateEndTime
- and TMP_PAM_ScrapProduct.accountid=:accountid and TMP_PAM_ScrapProduct.AuditStatus=1
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- new OracleParameter(":dateStartTime",dateStartTime),
- new OracleParameter(":dateEndTime",dateEndTime),
- };
- DataSet dsTMPResponProcedure = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 查出产品工价分类
- sqlString = @"select * from TP_PAM_GoodsWagesType ";
- DataSet dsGoodsWagesType = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 查出产品工价
- sqlString = @"select * from TP_PAT_Wages ";
- DataSet dsWages = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 查出质量工价
- sqlString = @"select * from TP_PAT_QualityWages order by WagesTypeID,QualityRate ";
- DataSet dsQualityWages = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 查出工资方案参数设定
- sqlString = "select * from TP_PAS_PayPlanSetting where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsPayPlanSetting = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 查出临时成品表,用于计算干补补贴,这些数据肯定配置了产品工价
- sqlString = @"select * from TMP_PAM_FinishedProduct inner join TP_PAM_GoodsWagesType
- on TMP_PAM_FinishedProduct.GoodsID=TP_PAM_GoodsWagesType.GoodsID
- where TMP_PAM_FinishedProduct.CreateTime >=:dateStartTime and TMP_PAM_FinishedProduct.CreateTime<=:dateEndTime
- and TMP_PAM_FinishedProduct.accountid=:accountid
- ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- new OracleParameter(":dateStartTime",dateStartTime),
- new OracleParameter(":dateEndTime",dateEndTime),
- };
- DataSet dsFinishedProduct = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 读出对应解决方案品质考核策略,可以存在多个
- sqlString = "select * from TP_PAT_QualityASS where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsQualityASS = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- #region 读出对应解决方案品质考核策略工序
- //sqlString = "select * from TP_PAT_QualityProcedure";
- //DataSet dsQualityProcedure = oracleTrConn.GetSqlResultToDs(sqlString);
- #endregion
- #region 查出生产缺陷数据表(暂时未用)
- // sqlString = @"select * from TMP_PAM_Defect inner join TP_PAM_GoodsWagesType
- // on TMP_PAM_Defect.GoodsID=TP_PAM_GoodsWagesType.GoodsID
- // where TMP_PAM_Defect.CreateTime >=:dateStartTime and TMP_PAM_Defect.CreateTime<=:dateEndTime
- // and TMP_PAM_Defect.accountid=:accountid
- // ";
- // parmeters1 = new OracleParameter[]
- // {
- // new OracleParameter(":accountid",sUserInfo.AccountID),
- // new OracleParameter(":dateStartTime",dateStartTime),
- // new OracleParameter(":dateEndTime",dateEndTime),
- // };
- // DataSet dsDefect = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- #endregion
- // 遍历工种数据集,统计每个员工的工资
- //dsJobsPayPlan.Tables[0].Rows.Count
- for (int j = 0; j < dsJobsPayPlan.Tables[0].Rows.Count; j++)
- {
- // 用于插入工资单各类数值
- decimal? totalcount_Piecegiework = 0; //计件工资
- decimal? totalcount_Scrap = 0; //损坯补贴
- decimal? totalcount_RepairSubsidy = 0; //干补补贴
- #region 计件工资整体累计
- if (PieceType == "0") // 工序计件
- {
- // 查出这个工号,在此计件工序,有多少产品
- DataRow[] drGoodsCount = dsTMPProductionData.Tables[0]
- .Select(string.Format("UserID={0}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()));
- if (drGoodsCount.Length > 0) // 此工号下代表有产品
- {
- //-----------------------------------
- // 1.算出是否有新品,还是老品
- DataRow[] drMonth = dsPayPlanSetting.Tables[0].Select("SettingCode='01001'");
- int newGoodsMonth = Convert.ToInt32(drMonth[0]["SettingValue"]); //新产品适应周期(月)
- // 2.添加一列,产品标识,是否新品,还是旧品,遍历数据集,并一个一个更改
- if (!dsTMPProductionData.Tables[0].Columns.Contains("GoodsFlag"))
- {
- dsTMPProductionData.Tables[0].Columns.Add("GoodsFlag");
- for (int bb = 0; bb < dsTMPProductionData.Tables[0].Rows.Count; bb++)
- {
- if (Convert.ToDateTime(dsTMPProductionData.Tables[0].Rows[bb]["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- {
- dsTMPProductionData.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- }
- else
- {
- dsTMPProductionData.Tables[0].Rows[bb]["GoodsFlag"] = 1; //新品
- }
- }
- }
- //for (int bb = 0; bb < dsTMPProductionData.Tables[0].Rows.Count; bb++)
- //{
- // if (Convert.ToDateTime(dsTMPProductionData.Tables[0].Rows[bb]["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- // {
- // dsTMPProductionData.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- // else
- // {
- // dsTMPProductionData.Tables[0].Rows[bb]["GoodsFlag"] = 1; //新品
- // }
- //}
- //3 报损责任工序
- if (!dsTMPResponProcedure.Tables[0].Columns.Contains("GoodsFlag"))
- {
- dsTMPResponProcedure.Tables[0].Columns.Add("GoodsFlag");
- for (int bb = 0; bb < dsTMPResponProcedure.Tables[0].Rows.Count; bb++)
- {
- if (dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"].ToString() != "")
- {
- if (Convert.ToDateTime(dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- {
- dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- }
- else
- {
- dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 1; //新品
- }
- }
- else
- {
- dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- }
- }
- }
- //for (int bb = 0; bb < dsTMPResponProcedure.Tables[0].Rows.Count; bb++)
- //{
- // if (dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"].ToString() != "")
- // {
- // if (Convert.ToDateTime(dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- // else
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 1; //新品
- // }
- // }
- // else
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- //}
- //-----------------------------------
- // 接下来在过滤产品分类有多少种,用来分别计算各分类的工资
- // 以下表有多少行,去掉重复算出有多少个分类
- DataTable dtWagesType = drGoodsCount.CopyToDataTable().DefaultView.ToTable(true, "WagesTypeID");
- // 有多少产品标识
- DataTable dtGoodsFlag = drGoodsCount.CopyToDataTable().DefaultView.ToTable(true, "GoodsFlag");
- int PieceProcedureCount = 0; //计件数量
- int UnqualifiedCount = 0; //次品数量
- int QualifiedCount = 0; //副品数量
- int QualityBaseProcedureCount = 0; //出窑数量
- for (int wagestype = 0; wagestype < dtWagesType.Rows.Count; wagestype++)
- {
- for (int vv = 0; vv < dtGoodsFlag.Rows.Count; vv++)
- {
- decimal? temp_Piecegiework = 0;
- #region 1.求出各分类计件工序数量
- PieceProcedureCount = 0; //每个分类之前置空
- decimal PieceProcedureTotal = 0;//系数*数量
- //下面开始计算每个分类的计件工资
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- DataRow[] drPieceProcedureCount = dsTMPProductionData.Tables[0]
- .Select(string.Format("UserID={0} and ProcedureID={1} and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- PieceProcedureCount += drPieceProcedureCount.Length; //工序数量
- }
- PieceProcedureTotal = PieceProcedureCount * PieceCoefficient; //工序数量*系数
- #endregion 1.求出计件工序数量
- #region 2.求出各工价分类损坯数量
- int ScrapCount = 0; //损坯数量
- decimal? Scrap = 0; //每个类别损坯的值
- if (DamageFlag == "1") //计算损坯数量
- {
- // 查出此人在计件工序的条码,完事关联报损表存在多少报损条码
- string ProcedureIDS = "0"; //默认给个0,怕没有些去进行筛选出现错误
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- ProcedureIDS = ProcedureIDS + dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"].ToString() + ",";
- }
- ProcedureIDS = ProcedureIDS.Trim(',');
- // 筛选出生产数据这几个工序所用的条码
- DataRow[] dr_BarCode = dsTMPProductionData.Tables[0].Select(string.Format("UserID={0} and ProcedureID in ({1}) and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), ProcedureIDS, dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- if (dr_BarCode.Length > 0)
- {
- string temp_barcode = "";
- foreach (DataRow r3 in dr_BarCode)
- {
- DataRow[] dr2 = dsTMPResponProcedure.Tables[0].Select("barcode='" + r3["barcode"] + "'");
- if (dr2.Length > 0)
- {
- if (!temp_barcode.Contains(r3["barcode"].ToString()))
- {
- // 有损坯数据
- ScrapCount = ScrapCount + 1;
- }
- temp_barcode += r3["barcode"].ToString() + ",";
- }
- }
- }
- // end
- Scrap = ScrapCount * DamageCoefficient; //DamageCoefficient为损坯系数
- }
- #endregion 2.求出损坯数量 end
- #region 3.求出各工价分类次品数
- // 筛出产品分级为次品的生产数据,完事一个一个去查对应责任工号的,进行累加
- DataRow[] drUnqualifiedCount = dsTMPProductionData.Tables[0]
- .Select(string.Format("WagesTypeID={0} and GoodsLevelTypeID=7 and GoodsFlag={1} ", dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- UnqualifiedCount = 0; //次品数量
- decimal? UnqualifiedTotal = 0;//系数*数量
- if (drUnqualifiedCount.Length > 0)
- {
- // 表示有次品,但是得对应责任工号,进行累加
- foreach (DataRow row in drUnqualifiedCount)
- {
- string sqlView = "select 1 from TMP_PAM_Defect where DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"];
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlView);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- // 多个缺陷也算一个数,所以直接+1
- UnqualifiedCount = UnqualifiedCount + 1;
- }
- }
- UnqualifiedTotal = UnqualifiedCount * UnqualifiedCoefficient;
- }
- #endregion
- #region 4.求出各工价分类副品数
- // 筛出产品分级为副品的生产数据,完事一个一个去查对应责任工号的,进行累加
- DataRow[] drQualified = dsTMPProductionData.Tables[0]
- .Select(string.Format("WagesTypeID={0} and GoodsLevelTypeID=5 and GoodsFlag={1}", dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- QualifiedCount = 0; //副品数量
- decimal? QualifiedTotal = 0;//系数*数量
- if (drQualified.Length > 0)
- {
- // 表示有副品,但是得对应责任工号,进行累加
- foreach (DataRow row in drQualified)
- {
- string sqlView = "select 1 from TMP_PAM_Defect where DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"];
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlView);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- // 多个缺陷也算一个数,所以直接+1
- QualifiedCount = QualifiedCount + 1;
- }
- }
- QualifiedTotal = QualifiedCount * QualifiedCoefficient;
- }
- #endregion 求出各工价分类副品数
- #region 5.求出质量工价
- string barcodes_Procedure = "";
- QualityBaseProcedureCount = 0;
- for (int p1 = 0; p1 < dsPieceProcedure_2.Tables[0].Rows.Count; p1++)
- {
- //DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- // .Select(string.Format("UserID={0} and ProcedureID={1} and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- //QualityBaseProcedureCount += drQualityBaseProcedure.Length; // 质量工序数量
- //DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- // .Select(string.Format("ProcedureID={0} and WagesTypeID={1} and GoodsFlag={2}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- .Select(string.Format("ProcedureID={0} and WagesTypeID={1}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"]));
- if (drQualityBaseProcedure.Length > 0)
- {
- foreach (DataRow r4 in drQualityBaseProcedure)
- {
- if (!barcodes_Procedure.Contains(r4["barcode"].ToString()))
- {
- QualityBaseProcedureCount += 1; // 质量工序数量
- }
- barcodes_Procedure = barcodes_Procedure + r4["barcode"].ToString() + ",";
- }
- }
- }
- decimal QualityBaseProcedureTotal = 0;//只是算出优等品率,还有和产品质量区间进行匹配
- decimal QualityWages = 0; //质量工价 ,用于最后计算相乘
- decimal Quality = 0; //质量
- if (QualityBaseProcedureCount != 0)
- {
- QualityBaseProcedureTotal = (QualityBaseProcedureCount - UnqualifiedCount) / QualityBaseProcedureCount;
- }
- //查看此员工是否为正式员工还是试用员工,如果试用取工价类别的标准工价
- // 1取出此工类下的产品工价区间
- DataRow[] drWages = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- decimal StandardWages = 0;
- if (drWages.Length > 0)
- {
- StandardWages = Convert.ToDecimal(drWages[0]["StandardWages"]); //标准工价
- }
- if (dsJobsPayPlan.Tables[0].Rows[j]["ExProbationEndDate"].ToString() == "") //表示正式员工
- {
- // 2取出此工类下的质量区间
- DataRow[] drQualityWages = dsQualityWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"] + " and QualityRate>=" + QualityBaseProcedureTotal);
- if (drQualityWages.Length > 0)
- {
- //表示质量区间设置没有比优品率大的
- QualityWages = StandardWages;
- Quality = Convert.ToDecimal(drQualityWages[0]["QualityRate"]);
- }
- else
- {
- QualityWages = 0;// Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- }
- }
- else
- {
- if (Convert.ToDateTime(dsJobsPayPlan.Tables[0].Rows[j]["ExProbationEndDate"]) < DateTime.Now)
- {
- // 试用结束结束
- // 2取出此工类下的质量区间
- DataRow[] drQualityWages = dsQualityWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"] + " and QualityRate>=" + QualityBaseProcedureTotal);
- if (drQualityWages.Length > 0)
- {
- //表示质量区间设置没有比优品率大的
- QualityWages = StandardWages;
- Quality = Convert.ToDecimal(drQualityWages[0]["QualityRate"]);
- }
- else
- {
- QualityWages = 0;// Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- }
- }
- }
- #endregion
- totalcount_Piecegiework += (PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages;
- temp_Piecegiework += (PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages;
- // }
- #region 插入计件工资
- sqlString = "select 1 from TP_PAR_Piecework where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- };
- DataSet dsExistPiecework = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- // 读取计件工资策略
- int PieceTacticsID_Insert = 0;
- sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss != null && dss.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert = Convert.ToInt32(dss.Tables[0].Rows[0]["PieceTacticsID"]);
- }
- //-------------------------------------
- if (dsExistPiecework != null && dsExistPiecework.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_Piecework
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- StaffFlag,
-
- GoodsFlag,
- WagesTypeID,
-
- PieceworkNum,
- PieceCoefficient,
- DamageNum,
- DamageCoefficient,
- UnqualifiedNum,
- UnqualifiedCoefficient,
- QualifiedNum,
- QualifiedCoefficient,
- QualityBaseNum,
- QualityRate,
- QualityWages,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :StaffFlag,
-
- :GoodsFlag,
- :WagesTypeID,
-
- :PieceworkNum,
- :PieceCoefficient,
- :DamageNum,
- :DamageCoefficient,
- :UnqualifiedNum,
- :UnqualifiedCoefficient,
- :QualifiedNum,
- :QualifiedCoefficient,
- :QualityBaseNum,
- :QualityRate,
- :QualityWages,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_Piecework
- set
- YYYYMM=:YYYYMM,
- StaffID=:StaffID,
- PayPlanID=:PayPlanID,
- StaffFlag=:StaffFlag,
- PieceTacticsID=:PieceTacticsID,
- GoodsFlag=:GoodsFlag,
- WagesTypeID=:WagesTypeID,
-
- PieceworkNum=PieceworkNum+:PieceworkNum,
- PieceCoefficient=PieceCoefficient+:PieceCoefficient,
- DamageNum=DamageNum+:DamageNum,
- DamageCoefficient=DamageCoefficient+:DamageCoefficient,
- UnqualifiedNum=UnqualifiedNum+:UnqualifiedNum,
- UnqualifiedCoefficient=UnqualifiedCoefficient+:UnqualifiedCoefficient,
- QualifiedNum=QualifiedNum+:QualifiedNum,
- QualifiedCoefficient=QualifiedCoefficient+:QualifiedCoefficient,
- QualityBaseNum=QualityBaseNum+:QualityBaseNum,
- QualityRate=QualityRate+:QualityRate,
- QualityWages=QualityWages+:QualityWages,
- Amount=Amount+:Amount
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":StaffFlag",dsJobsPayPlan.Tables[0].Rows[j]["StaffStatus"]),
- //new OracleParameter(":BeginDate",dateStartTime),
- //new OracleParameter(":EndDate",dateEndTime),
- new OracleParameter(":GoodsFlag", dtGoodsFlag.Rows[vv]["GoodsFlag"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- //new OracleParameter(":GoodsID",null),
- new OracleParameter(":PieceworkNum",PieceProcedureCount),
- new OracleParameter(":PieceCoefficient",PieceCoefficient),
- new OracleParameter(":DamageNum",ScrapCount),
- new OracleParameter(":DamageCoefficient",DamageCoefficient),
- new OracleParameter(":UnqualifiedNum",UnqualifiedCount),
- new OracleParameter(":UnqualifiedCoefficient",UnqualifiedCoefficient),
- new OracleParameter(":QualifiedNum",QualifiedCount),
- new OracleParameter(":QualifiedCoefficient",QualifiedCoefficient),
- new OracleParameter(":QualityBaseNum",QualityBaseProcedureCount),
- new OracleParameter(":QualifiedCoefficient",QualifiedCoefficient),
- new OracleParameter(":QualityRate",QualityBaseProcedureTotal),
- new OracleParameter(":QualityWages",QualityWages),
- new OracleParameter(":Amount",temp_Piecegiework),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- #region 损坯补贴
- int scrapcount_1 = 0; //损坯数量
- decimal scrap_StandardWages = 0; //损坯标准工价
- decimal scrap_DamageSubsidyRate = 0; //损坯补贴系数
- decimal scrap_DamageSubsidy = 0; //损坯补贴
- decimal temp_Scrap = 0;// //最后损坯补贴钱
- //1.查出此员工工号下所生产数据,即做过哪此产品条码
- DataRow[] drScrapProduction = dsTMPProductionData.Tables[0].Select("UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- if (drScrapProduction.Length > 0)
- {
- //算出此工号,此工价分类存在条码,拼出条码,进而去报损查出非自身损坯的数量,进而计算
- //string barcodes = "";
- //foreach (DataRow rbarcode in drScrapProduction)
- //{
- // barcodes += rbarcode["barcode"].ToString() + ",";
- //}
- //barcodes = barcodes.Trim(',');
- // string sql = @"select TMP_PAM_ScrapProduct.barcode,TMP_PAM_ResponProcedure.UserID from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- // on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID ";
- // sql = sql + " where instr(','||:barcodes||',',','||TMP_PAM_ScrapProduct.BarCode||',')>0 ";
- // sql = sql + " and TMP_PAM_ResponProcedure.UserID<>:UserID";
- string sql = @"select distinct TMP_PAM_ScrapProduct.barcode,TMP_PAM_ResponProcedure.UserID from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID ";
- sql = sql + " where TMP_PAM_ScrapProduct.barcode in (select barcode from TMP_PAM_ProductionData where UserID=:UserID and ProcedureID in (select TP_PAT_PieceProcedure.ProcedureID from TP_PAT_Piecework left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1 where TP_PAT_Piecework.PayPlanID=:PayPlanID)) ";
- sql = sql + " and TMP_PAM_ResponProcedure.UserID<>:UserID";
- parmeters1 = new OracleParameter[]
- {
- //new OracleParameter(":barcodes",barcodes),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsTemp = oracleTrConn.GetSqlResultToDs(sql, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- // 大于零遍历此表,插入损坯补贴记录表中,过滤给报损补贴后就不能给干补补贴
- string sqlInsertDamageSubsidy = "insert into TP_PAD_DamageSubsidy(Barcode,userID) values(:Barcode,:UserID)";
- for (int insert = 0; insert < dsTemp.Tables[0].Rows.Count; insert++)
- {
- string sqladd = "select 1 from TP_PAD_DamageSubsidy where barcode=:barcode and userid=:userid";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",dsTemp.Tables[0].Rows[insert]["Barcode"]),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- DataSet ds3 = oracleTrConn.GetSqlResultToDs(sqladd, parmeters1);
- if (ds3 != null && ds3.Tables[0].Rows.Count == 0)
- oracleTrConn.ExecuteNonQuery(sqlInsertDamageSubsidy, parmeters1);
- }
- scrapcount_1 = dsTemp.Tables[0].Rows.Count; //非自身损坯数量
- // 求出损坯对应系数
- DataRow[] drScrapWages = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- //decimal? scrapDamageSubsidy = 0; //损坯补贴
- if (drScrapWages.Length > 0)
- {
- //scrapDamageSubsidy += Convert.ToDecimal(drScrapWages[0]["DamageSubsidy"]);
- scrap_StandardWages = Convert.ToDecimal(drScrapWages[0]["StandardWages"]); //标准工价
- scrap_DamageSubsidyRate = Convert.ToDecimal(drScrapWages[0]["DamageSubsidyRate"]);//损坯补贴系数
- // scrap_DamageSubsidy = Convert.ToDecimal(drScrapWages[0]["DamageSubsidy"]); //损坯补贴
- scrap_DamageSubsidy = Convert.ToDecimal(scrap_StandardWages) * scrap_DamageSubsidyRate; //损坯补贴
- }
- //totalcount_Scrap += scrapDamageSubsidy;
- temp_Scrap = Convert.ToDecimal(scrapcount_1 * scrap_StandardWages * scrap_DamageSubsidyRate);
- totalcount_Scrap += temp_Scrap;
- }
- }
- #endregion
- #region 插入损坯补贴
- sqlString = "select 1 from TP_PAR_DamageSubsidy where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- };
- // 读取计件工资策略
- int PieceTacticsID_Insert2 = 0;
- sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss2 != null && dss2.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert2 = Convert.ToInt32(dss2.Tables[0].Rows[0]["PieceTacticsID"]);
- }
- //-------------------------------------
- DataSet dsExistDamageSubsidy = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistDamageSubsidy != null && dsExistDamageSubsidy.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_DamageSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DamageNum,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :DamageNum,
- :StandardWages,
- :DamageSubsidyRate,
- :DamageSubsidy,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_DamageSubsidy
-
- set YYYYMM=:YYYYMM,
- StaffID=StaffID,
- PayPlanID=:PayPlanID,
- WagesTypeID=:WagesTypeID,
- DamageNum=DamageNum+:DamageNum,
- StandardWages=StandardWages+:StandardWages,
- DamageSubsidyRate=DamageSubsidyRate+:DamageSubsidyRate,
- DamageSubsidy=DamageSubsidy+:DamageSubsidy,
- Amount=Amount+:Amount,
- PieceTacticsID=:PieceTacticsID
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- new OracleParameter(":DamageNum",scrapcount_1),
- new OracleParameter(":StandardWages",scrap_StandardWages),
- new OracleParameter(":DamageSubsidyRate",scrap_DamageSubsidyRate),
- new OracleParameter(":DamageSubsidy",scrap_DamageSubsidy),
- new OracleParameter(":Amount",temp_Scrap),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert2),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- #region 干补补贴,从成品表时读取数据来计算干补数量
- // 1 查出这个工号的,这个分类的,下一面在去过滤正品,还是副品
- int RepairSubsidy_RSuperioNum = 0;//干补正品数
- // 干补正品数
- DataRow[] drRepairSubsidy_RSuperioNum = dsFinishedProduct.Tables[0].Select("SpecialRepairFlag=1 and GoodsLevelTypeID=4 and WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- if (drRepairSubsidy_RSuperioNum.Length > 0)
- {
- RepairSubsidy_RSuperioNum = drRepairSubsidy_RSuperioNum.Length;
- // 尽管有干补,但是有可能在损坯补贴给了,此处得查询一下干补补贴表,如果存在就不给此补贴
- foreach (DataRow mm in drRepairSubsidy_RSuperioNum)
- {
- sqlString = "select 1 from TP_PAD_DamageSubsidy where Barcode=:Barcode and UserID=:UserID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",mm["barcode"].ToString()),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- DataSet dsTemp = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- RepairSubsidy_RSuperioNum = RepairSubsidy_RSuperioNum - 1;
- }
- }
- }
- int RepairSubsidy_RQualifiedNum = 0;//干补副品数
- // 干补正品数
- DataRow[] drRepairSubsidy_RQualifiedNum = dsFinishedProduct.Tables[0].Select("SpecialRepairFlag=1 and GoodsLevelTypeID=5 and WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- if (drRepairSubsidy_RQualifiedNum.Length > 0)
- {
- RepairSubsidy_RQualifiedNum = drRepairSubsidy_RQualifiedNum.Length;
- // 尽管有干补,但是有可能在损坯补贴给了,此处得查询一下干补补贴表,如果存在就不给此补贴
- foreach (DataRow mm in drRepairSubsidy_RQualifiedNum)
- {
- sqlString = "select 1 from TP_PAD_DamageSubsidy where Barcode=:Barcode and UserID=:UserID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",mm["barcode"].ToString()),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- DataSet dsTemp = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- RepairSubsidy_RQualifiedNum = RepairSubsidy_RQualifiedNum - 1;
- }
- }
- }
- // 查出此分类干补正负品补贴
- // 求出损坯对应系数
- DataRow[] drRepairSubsidy = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[wagestype]["WagesTypeID"]);
- decimal RSuperiorCoefficient = 0;//干补正品系数
- decimal RQualifiedCoefficient = 0;//干补副品系数
- decimal RepairSubsidyRate = 0;//干补补贴系数
- decimal RepairStandardWages = 0;//标准工价
- decimal RepairTotalCount = 0; //
- decimal RepairSubsidy = 0;
- decimal temp_Repair = 0;
- if (drRepairSubsidy.Length > 0)
- {
- RSuperiorCoefficient = Convert.ToDecimal(drRepairSubsidy[0]["RSuperiorCoefficient"]);
- RQualifiedCoefficient = Convert.ToDecimal(drRepairSubsidy[0]["RQualifiedCoefficient"]);
- RepairSubsidyRate = Convert.ToDecimal(drRepairSubsidy[0]["RepairSubsidyRate"]);
- RepairStandardWages = Convert.ToDecimal(drRepairSubsidy[0]["StandardWages"]);
- RepairSubsidy = Convert.ToDecimal(drRepairSubsidy[0]["RepairSubsidy"]);
- RepairTotalCount = (RepairSubsidy_RSuperioNum * RSuperiorCoefficient - RepairSubsidy_RQualifiedNum * RQualifiedCoefficient) * RepairStandardWages * RepairSubsidyRate;
- totalcount_RepairSubsidy += RepairTotalCount;
- temp_Repair = RepairTotalCount;
- }
- #endregion
- #region 插入干补补贴
- sqlString = "select 1 from TP_PAR_RepairSubsidy where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- };
- // 读取计件工资策略
- int PieceTacticsID_Insert3 = 0;
- sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss3 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss3 != null && dss3.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert3 = Convert.ToInt32(dss3.Tables[0].Rows[0]["PieceTacticsID"]);
- }
- //-------------------------------------
- DataSet dsExistRepairSubsidy = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistRepairSubsidy != null && dsExistRepairSubsidy.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_RepairSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- RSuperioNum,
- RSuperiorCoefficient,
- RQualifiedNum,
- RQualifiedCoefficient,
- StandardWages,
- RepairSubsidyRate,
- RepairSubsidy,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :RSuperioNum,
- :RSuperiorCoefficient,
- :RQualifiedNum,
- :RQualifiedCoefficient,
- :StandardWages,
- :RepairSubsidyRate,
- :RepairSubsidy,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_RepairSubsidy
- set
- YYYYMM=:YYYYMM,
- StaffID=:StaffID,
- PayPlanID=:PayPlanID,
- WagesTypeID=:WagesTypeID,
- RSuperioNum=RSuperioNum+:RSuperioNum,
- RSuperiorCoefficient=RSuperiorCoefficient+:RSuperiorCoefficient,
- RQualifiedNum=RQualifiedNum+:RQualifiedNum,
- RQualifiedCoefficient=RQualifiedCoefficient+:RQualifiedCoefficient,
- StandardWages=StandardWages+:StandardWages,
- RepairSubsidyRate=RepairSubsidyRate+:RepairSubsidyRate,
- RepairSubsidy=RepairSubsidy+:RepairSubsidy,
- Amount=Amount+:Amount,
- PieceTacticsID=:PieceTacticsID
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[wagestype]["WagesTypeID"]),
- new OracleParameter(":RSuperioNum",RepairSubsidy_RSuperioNum),
- new OracleParameter(":RSuperiorCoefficient",RSuperiorCoefficient),
- new OracleParameter(":RQualifiedNum",RepairSubsidy_RQualifiedNum),
- new OracleParameter(":RQualifiedCoefficient",RQualifiedCoefficient),
- new OracleParameter(":StandardWages",RepairStandardWages),
- new OracleParameter(":RepairSubsidyRate",RepairSubsidyRate),
- new OracleParameter(":RepairSubsidy",RepairSubsidy),
- new OracleParameter(":Amount",temp_Repair),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert3),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- }
- }
- else
- {
- // 经过该计件工序
- // 先找出此工序的所有条码.用于筛选条码前的数据
- dsPieceProcedure_1.Tables[0].Merge(dsPieceProcedure_2.Tables[0]);
- string ProcedureIDS = "";
- for (int a1 = 0; a1 < dsPieceProcedure_1.Tables[0].Rows.Count; a1++)
- {
- ProcedureIDS += dsPieceProcedure_1.Tables[0].Rows[a1]["ProcedureID"].ToString() + ",";
- }
- ProcedureIDS = ProcedureIDS.Trim(',');
- //DataRow[] drBarCode = dsTMPProductionData.Tables[0].Select("(ProcedureID=" + PieceProcedureID + " or ProcedureID=" + QualityBaseProcedureID + ") and UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString());
- DataRow[] drBarCode = dsTMPProductionData.Tables[0].Select("ProcedureID in (" + ProcedureIDS + " )" + " and UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString());
- DataTable dtTemp = new DataTable();
- dtTemp.Columns.Add("ProcedureID"); //工序ID,用于有哪些分类
- dtTemp.Columns.Add("BarCode"); //产品条码
- dtTemp.Columns.Add("WagesTypeID"); // 工价分类
- dtTemp.Columns.Add("GoodsFlag"); //产品标识
- DataRow[] drMonth = dsPayPlanSetting.Tables[0].Select("SettingCode='01001'");
- int newGoodsMonth = Convert.ToInt32(drMonth[0]["SettingValue"]); //新产品适应周期(月)
- if (drBarCode.Length > 0)
- {
- DataTable dtTemp_TMPProductionData = drBarCode.CopyToDataTable();
- foreach (DataRow r in drBarCode)
- {
- DataRow[] drFirst = dtTemp_TMPProductionData.Select("barcode='" + r["barcode"] + "' and ProductionDataID<" + r["ProductionDataID"] + " and UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString());
- if (drFirst.Length > 0)
- {
- foreach (DataRow rr in drFirst)//可能会多行,
- {
- DataRow drNew = dtTemp.NewRow();
- drNew["ProcedureID"] = rr["ProcedureID"];
- drNew["BarCode"] = rr["BarCode"];
- drNew["WagesTypeID"] = rr["WagesTypeID"];
- if (Convert.ToDateTime(rr["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- {
- drNew["GoodsFlag"] = 3; //正常
- }
- else
- {
- drNew["GoodsFlag"] = 1; //新品
- }
- dtTemp.Rows.Add(drNew);
- }
- }
- }
- }
- if (dtTemp.Rows.Count > 0)
- {
- //-----------------------------------
- // 1.算出是否有新品,还是老品
- //3 报损责任工序
- if (!dsTMPResponProcedure.Tables[0].Columns.Contains("GoodsFlag"))
- {
- dsTMPResponProcedure.Tables[0].Columns.Add("GoodsFlag");
- for (int bb = 0; bb < dsTMPResponProcedure.Tables[0].Rows.Count; bb++)
- {
- if (dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"].ToString() != "")
- {
- if (Convert.ToDateTime(dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- {
- dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- }
- else
- {
- dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 1; //新品
- }
- }
- else
- {
- dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- }
- }
- }
- //for (int bb = 0; bb < dsTMPResponProcedure.Tables[0].Rows.Count; bb++)
- //{
- // if (dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"].ToString() != "")
- // {
- // if (Convert.ToDateTime(dsTMPResponProcedure.Tables[0].Rows[bb]["StartingDate"]).AddMonths(newGoodsMonth) > DateTime.Now)
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- // else
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 1; //新品
- // }
- // }
- // else
- // {
- // dsTMPResponProcedure.Tables[0].Rows[bb]["GoodsFlag"] = 3; //正常
- // }
- //}
- //-----------------------------------
- // 重新排序,把生产数据ID大的排在上面,便于下面进行筛选
- DataView dv = dtTemp.DefaultView;
- dv.Sort = "ProductionDataID desc";
- dtTemp = dv.ToTable();
- // 此时dtTemp有产品分类,同时也可能有多个工序
- // 1看有多少个分类
- DataTable dtWagesType = dtTemp.DefaultView.ToTable(true, "WagesTypeID");
- // 2看有多少个工序
- DataTable dtProcedure = dtTemp.DefaultView.ToTable(true, "ProcedureID");
- // 有多少产品标识
- DataTable dtGoodsFlag = dtTemp.DefaultView.ToTable(true, "GoodsFlag");
- int PieceProcedureCount2 = 0;
- int UnqualifiedCount2 = 0;
- int QualifiedCount2 = 0;
- int QualityBaseProcedureCount2 = 0;
- for (int ii = 0; ii < dtWagesType.Rows.Count; ii++)
- {
- for (int vv = 0; vv < dtGoodsFlag.Rows.Count; vv++)
- {
- decimal? temp_Piecegiework = 0;
- #region 1.求出各分类计件工序数量
- PieceProcedureCount2 = 0;
- QualityBaseProcedureCount2 = 0;
- decimal PieceProcedureTotal = 0; //系数*数量
- //for (int jj = 0; jj < dtProcedure.Rows.Count; jj++)
- //{
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- DataRow[] datarow = dtTemp.Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"] + " and ProcedureID=" + dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"]);
- if (datarow.Length > 0)
- {
- PieceProcedureCount2 += datarow.Length;
- break;
- }
- else
- {
- continue;
- }
- }
- //}
- PieceProcedureTotal = PieceProcedureCount2 * PieceCoefficient;
- #endregion 1.求出各分类计件工序数量
- #region 2.求出各工价分类损坯数量
- int ScrapCount = 0; //损坯数量
- decimal? Scrap = 0; //每个类别损坯的值
- if (DamageFlag == "1") //计算损坯数量
- {
- // 查出此人在计件工序的条码,完事关联报损表存在多少报损条码
- string ProcedureIDS2 = "0"; //默认给个0,怕没有些去进行筛选出现错误
- for (int p1 = 0; p1 < dsPieceProcedure_1.Tables[0].Rows.Count; p1++)
- {
- ProcedureIDS2 = ProcedureIDS2 + dsPieceProcedure_1.Tables[0].Rows[p1]["ProcedureID"].ToString() + ",";
- }
- ProcedureIDS2 = ProcedureIDS2.Trim(',');
- // 筛选出生产数据这几个工序所用的条码
- DataRow[] dr_BarCode = dsTMPProductionData.Tables[0].Select(string.Format("UserID={0} and ProcedureID in ({1}) and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), ProcedureIDS2, dtWagesType.Rows[ii]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- if (dr_BarCode.Length > 0)
- {
- string temp_barcode = "";
- foreach (DataRow r3 in dr_BarCode)
- {
- DataRow[] dr2 = dsTMPResponProcedure.Tables[0].Select("barcode='" + r3["barcode"] + "'");
- if (dr2.Length > 0)
- {
- if (!temp_barcode.Contains(r3["barcode"].ToString()))
- {
- // 有损坯数据
- ScrapCount = ScrapCount + 1;
- }
- temp_barcode += r3["barcode"].ToString() + ",";
- }
- }
- }
- // end
- Scrap = ScrapCount * DamageCoefficient; //DamageCoefficient为损坯系数
- }
- #endregion 2.求出损坯数量 end
- #region 3.求出各工价分类次品数
- // 筛出产品分级为次品的生产数据,完事一个一个去查对应责任工号的,进行累加
- DataRow[] drUnqualifiedCount = dsTMPProductionData.Tables[0]
- .Select(string.Format("WagesTypeID={0} and GoodsLevelTypeID=7 and GoodsFlag={1} ", dtWagesType.Rows[ii]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- UnqualifiedCount2 = 0; //次品数量
- decimal? UnqualifiedTotal = 0;//系数*数量
- if (drUnqualifiedCount.Length > 0)
- {
- // 表示有次品,但是得对应责任工号,进行累加
- foreach (DataRow row in drUnqualifiedCount)
- {
- string sqlView = "select 1 from TMP_PAM_Defect where DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"];
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlView);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- // 多个缺陷也算一个数,所以直接+1
- UnqualifiedCount2 = UnqualifiedCount2 + 1;
- }
- }
- UnqualifiedTotal = UnqualifiedCount2 * UnqualifiedCoefficient;
- }
- #endregion
- #region 4.求出各工价分类副品数
- // 筛出产品分级为副品的生产数据,完事一个一个去查对应责任工号的,进行累加
- DataRow[] drQualified = dsTMPProductionData.Tables[0]
- .Select(string.Format("WagesTypeID={0} and GoodsLevelTypeID=5 and GoodsFlag={1}", dtWagesType.Rows[ii]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- QualifiedCount2 = 0; //副品数量
- decimal? QualifiedTotal = 0;//系数*数量
- if (drQualified.Length > 0)
- {
- // 表示有副品,但是得对应责任工号,进行累加
- foreach (DataRow row in drQualified)
- {
- string sqlView = "select 1 from TMP_PAM_Defect where DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and ProductionDataID=" + row["ProductionDataID"];
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlView);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- // 多个缺陷也算一个数,所以直接+1
- QualifiedCount2 = QualifiedCount2 + 1;
- }
- }
- QualifiedTotal = QualifiedCount2 * QualifiedCoefficient;
- }
- #endregion 求出各工价分类副品数
- #region 5.求出质量工价
- string barcodes_Procedure = "";
- QualityBaseProcedureCount2 = 0;
- for (int p1 = 0; p1 < dsPieceProcedure_2.Tables[0].Rows.Count; p1++)
- {
- //DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- // .Select(string.Format("UserID={0} and ProcedureID={1} and WagesTypeID={2} and GoodsFlag={3}", dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString(), dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- //QualityBaseProcedureCount += drQualityBaseProcedure.Length; // 质量工序数量
- //DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- // .Select(string.Format("ProcedureID={0} and WagesTypeID={1} and GoodsFlag={2}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[wagestype]["WagesTypeID"], dtGoodsFlag.Rows[vv]["GoodsFlag"]));
- DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- .Select(string.Format("ProcedureID={0} and WagesTypeID={1}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dtWagesType.Rows[ii]["WagesTypeID"]));
- if (drQualityBaseProcedure.Length > 0)
- {
- foreach (DataRow r4 in drQualityBaseProcedure)
- {
- if (!barcodes_Procedure.Contains(r4["barcode"].ToString()))
- {
- QualityBaseProcedureCount2 += 1; // 质量工序数量
- }
- barcodes_Procedure = barcodes_Procedure + r4["barcode"].ToString() + ",";
- }
- }
- }
- decimal QualityBaseProcedureTotal = 0;//只是算出优等品率,还有和产品质量区间进行匹配
- decimal QualityWages = 0; //质量工价 ,用于最后计算相乘
- decimal Quality = 0; //质量
- if (QualityBaseProcedureCount2 != 0)
- {
- QualityBaseProcedureTotal = (QualityBaseProcedureCount2 - UnqualifiedCount2) / QualityBaseProcedureCount2;
- }
- //查看此员工是否为正式员工还是试用员工,如果试用取工价类别的标准工价
- // 1取出此工类下的产品工价区间
- DataRow[] drWages = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- decimal StandardWages = 0;
- if (drWages.Length > 0)
- {
- StandardWages = Convert.ToDecimal(drWages[0]["StandardWages"]); //标准工价
- }
- if (dsJobsPayPlan.Tables[0].Rows[j]["ExProbationEndDate"].ToString() == "") //表示正式员工
- {
- // 2取出此工类下的质量区间
- DataRow[] drQualityWages = dsQualityWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"] + " and QualityRate>=" + QualityBaseProcedureTotal);
- if (drQualityWages.Length > 0)
- {
- //表示质量区间设置没有比优品率大的
- QualityWages = StandardWages;
- Quality = Convert.ToDecimal(drQualityWages[0]["QualityRate"]);
- }
- else
- {
- QualityWages = 0;// Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- }
- }
- else
- {
- if (Convert.ToDateTime(dsJobsPayPlan.Tables[0].Rows[j]["ExProbationEndDate"]) < DateTime.Now)
- {
- // 试用结束结束
- // 2取出此工类下的质量区间
- DataRow[] drQualityWages = dsQualityWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"] + " and QualityRate>=" + QualityBaseProcedureTotal);
- if (drQualityWages.Length > 0)
- {
- //表示质量区间设置没有比优品率大的
- QualityWages = StandardWages;
- Quality = Convert.ToDecimal(drQualityWages[0]["QualityRate"]);
- }
- else
- {
- QualityWages = 0;// Convert.ToDecimal(drQualityWages[0]["QualityWages"]);
- }
- }
- }
- #endregion
- totalcount_Piecegiework += (PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages;
- temp_Piecegiework = (PieceProcedureTotal - Scrap - UnqualifiedTotal - QualifiedTotal) * QualityWages;
- #region 插入计件工资
- sqlString = "select 1 from TP_PAR_Piecework where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- };
- DataSet dsExistPiecework = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- // 读取计件工资策略
- int PieceTacticsID_Insert = 0;
- sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss != null && dss.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert = Convert.ToInt32(dss.Tables[0].Rows[0]["PieceTacticsID"]);
- }
- //-------------------------------------
- if (dsExistPiecework != null && dsExistPiecework.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_Piecework
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- StaffFlag,
-
- GoodsFlag,
- WagesTypeID,
-
- PieceworkNum,
- PieceCoefficient,
- DamageNum,
- DamageCoefficient,
- UnqualifiedNum,
- UnqualifiedCoefficient,
- QualifiedNum,
- QualifiedCoefficient,
- QualityBaseNum,
- QualityRate,
- QualityWages,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :StaffFlag,
-
- :GoodsFlag,
- :WagesTypeID,
-
- :PieceworkNum,
- :PieceCoefficient,
- :DamageNum,
- :DamageCoefficient,
- :UnqualifiedNum,
- :UnqualifiedCoefficient,
- :QualifiedNum,
- :QualifiedCoefficient,
- :QualityBaseNum,
- :QualityRate,
- :QualityWages,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_Piecework
- set
- YYYYMM=:YYYYMM,
- StaffID=:StaffID,
- PayPlanID=:PayPlanID,
- StaffFlag=:StaffFlag,
- PieceTacticsID=:PieceTacticsID,
- GoodsFlag=:GoodsFlag,
- WagesTypeID=:WagesTypeID,
-
- PieceworkNum=PieceworkNum+:PieceworkNum,
- PieceCoefficient=PieceCoefficient+:PieceCoefficient,
- DamageNum=DamageNum+:DamageNum,
- DamageCoefficient=DamageCoefficient+:DamageCoefficient,
- UnqualifiedNum=UnqualifiedNum+:UnqualifiedNum,
- UnqualifiedCoefficient=UnqualifiedCoefficient+:UnqualifiedCoefficient,
- QualifiedNum=QualifiedNum+:QualifiedNum,
- QualifiedCoefficient=QualifiedCoefficient+:QualifiedCoefficient,
- QualityBaseNum=QualityBaseNum+:QualityBaseNum,
- QualityRate=QualityRate+:QualityRate,
- QualityWages=QualityWages+:QualityWages,
- Amount=Amount+:Amount
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":StaffFlag",dsJobsPayPlan.Tables[0].Rows[j]["StaffStatus"]),
- //new OracleParameter(":BeginDate",dateStartTime),
- //new OracleParameter(":EndDate",dateEndTime),
- new OracleParameter(":GoodsFlag", dtGoodsFlag.Rows[vv]["GoodsFlag"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- //new OracleParameter(":GoodsID",null),
- new OracleParameter(":PieceworkNum",PieceProcedureCount2),
- new OracleParameter(":PieceCoefficient",PieceCoefficient),
- new OracleParameter(":DamageNum",ScrapCount),
- new OracleParameter(":DamageCoefficient",DamageCoefficient),
- new OracleParameter(":UnqualifiedNum",UnqualifiedCount2),
- new OracleParameter(":UnqualifiedCoefficient",UnqualifiedCoefficient),
- new OracleParameter(":QualifiedNum",QualifiedCount2),
- new OracleParameter(":QualifiedCoefficient",QualifiedCoefficient),
- new OracleParameter(":QualityBaseNum",QualityBaseProcedureCount2),
- new OracleParameter(":QualifiedCoefficient",QualifiedCoefficient),
- new OracleParameter(":QualityRate",QualityBaseProcedureTotal),
- new OracleParameter(":QualityWages",QualityWages),
- new OracleParameter(":Amount",temp_Piecegiework),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- #region 损坯补贴
- int scrapcount_1 = 0; //损坯数量
- decimal scrap_StandardWages = 0; //损坯标准工价
- decimal scrap_DamageSubsidyRate = 0; //损坯补贴系数
- decimal scrap_DamageSubsidy = 0; //损坯补贴
- decimal temp_Scrap = 0;// //最后损坯补贴钱
- //1.查出此员工工号下所生产数据,即做过哪此产品条码
- DataRow[] drScrapProduction = dsTMPProductionData.Tables[0].Select("UserID=" + dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString() + " and WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- if (drScrapProduction.Length > 0)
- {
- //算出此工号,此工价分类存在条码,拼出条码,进而去报损查出非自身损坯的数量,进而计算
- string barcodes = "";
- foreach (DataRow rbarcode in drScrapProduction)
- {
- barcodes += rbarcode["barcode"].ToString() + ",";
- }
- barcodes = barcodes.Trim(',');
- // string sql = @"select TMP_PAM_ScrapProduct.barcode,TMP_PAM_ResponProcedure.UserID from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- // on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID ";
- // sql = sql + " where instr(','||:barcodes||',',','||TMP_PAM_ScrapProduct.BarCode||',')>0 ";
- // sql = sql + " and TMP_PAM_ResponProcedure.UserID<>:UserID";
- string sql = @"select distinct TMP_PAM_ScrapProduct.barcode,TMP_PAM_ResponProcedure.UserID from TMP_PAM_ScrapProduct left join TMP_PAM_ResponProcedure
- on TMP_PAM_ScrapProduct.ScrapProductID=TMP_PAM_ResponProcedure.ScrapProductID ";
- sql = sql + " where TMP_PAM_ScrapProduct.barcode in (select barcode from TMP_PAM_ProductionData where UserID=:UserID and ProcedureID in (select TP_PAT_PieceProcedure.ProcedureID from TP_PAT_Piecework left join TP_PAT_PieceProcedure on TP_PAT_Piecework.PieceTacticsID=TP_PAT_PieceProcedure.PieceTacticsID and TP_PAT_PieceProcedure.ProcedureFlag=1 where TP_PAT_Piecework.PayPlanID=:PayPlanID)) ";
- sql = sql + " and TMP_PAM_ResponProcedure.UserID<>:UserID";
- parmeters1 = new OracleParameter[]
- {
- //new OracleParameter(":barcodes",barcodes),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dsTemp = oracleTrConn.GetSqlResultToDs(sql, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- // 大于零遍历此表,插入损坯补贴记录表中,过滤给报损补贴后就不能给干补补贴
- string sqlInsertDamageSubsidy = "insert into TP_PAD_DamageSubsidy(Barcode,userID) values(:Barcode,:UserID)";
- for (int insert = 0; insert < dsTemp.Tables[0].Rows.Count; insert++)
- {
- string sqladd = "select 1 from TP_PAD_DamageSubsidy where barcode=:barcode and userid=:userid";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",dsTemp.Tables[0].Rows[insert]["Barcode"]),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- DataSet ds3 = oracleTrConn.GetSqlResultToDs(sqladd, parmeters1);
- if (ds3 != null && ds3.Tables[0].Rows.Count == 0)
- oracleTrConn.ExecuteNonQuery(sqlInsertDamageSubsidy, parmeters1);
- }
- scrapcount_1 = dsTemp.Tables[0].Rows.Count; //非自身损坯数量
- // 求出损坯对应系数
- DataRow[] drScrapWages = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- //decimal? scrapDamageSubsidy = 0; //损坯补贴
- if (drScrapWages.Length > 0)
- {
- //scrapDamageSubsidy += Convert.ToDecimal(drScrapWages[0]["DamageSubsidy"]);
- scrap_StandardWages = Convert.ToDecimal(drScrapWages[0]["StandardWages"]); //标准工价
- scrap_DamageSubsidyRate = Convert.ToDecimal(drScrapWages[0]["DamageSubsidyRate"]);//损坯补贴系数
- //scrap_DamageSubsidy = Convert.ToDecimal(drScrapWages[0]["DamageSubsidy"]); //损坯补贴
- scrap_DamageSubsidy = Convert.ToDecimal(scrap_StandardWages) * scrap_DamageSubsidyRate; //损坯补贴
- }
- //totalcount_Scrap += scrapDamageSubsidy;
- temp_Scrap = Convert.ToDecimal(scrapcount_1 * scrap_StandardWages * scrap_DamageSubsidyRate);
- totalcount_Scrap += temp_Scrap;
- }
- }
- #endregion
- #region 插入损坯补贴
- sqlString = "select 1 from TP_PAR_DamageSubsidy where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- };
- // 读取计件工资策略
- int PieceTacticsID_Insert2 = 0;
- sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss2 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss2 != null && dss2.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert2 = Convert.ToInt32(dss2.Tables[0].Rows[0]["PieceTacticsID"]);
- }
- //-------------------------------------
- DataSet dsExistDamageSubsidy = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistDamageSubsidy != null && dsExistDamageSubsidy.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_DamageSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DamageNum,
- StandardWages,
- DamageSubsidyRate,
- DamageSubsidy,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :DamageNum,
- :StandardWages,
- :DamageSubsidyRate,
- :DamageSubsidy,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_DamageSubsidy
-
- set YYYYMM=:YYYYMM,
- StaffID=StaffID,
- PayPlanID=:PayPlanID,
- WagesTypeID=:WagesTypeID,
- DamageNum=DamageNum+:DamageNum,
- StandardWages=StandardWages+:StandardWages,
- DamageSubsidyRate=DamageSubsidyRate+:DamageSubsidyRate,
- DamageSubsidy=DamageSubsidy+:DamageSubsidy,
- Amount=Amount+:Amount,
- PieceTacticsID=:PieceTacticsID
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- new OracleParameter(":DamageNum",scrapcount_1),
- new OracleParameter(":StandardWages",scrap_StandardWages),
- new OracleParameter(":DamageSubsidyRate",scrap_DamageSubsidyRate),
- new OracleParameter(":DamageSubsidy",scrap_DamageSubsidy),
- new OracleParameter(":Amount",temp_Scrap),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert2),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- #region 干补补贴,从成品表时读取数据来计算干补数量
- // 1 查出这个工号的,这个分类的,下一面在去过滤正品,还是副品
- int RepairSubsidy_RSuperioNum = 0;//干补正品数
- // 干补正品数
- DataRow[] drRepairSubsidy_RSuperioNum = dsFinishedProduct.Tables[0].Select("SpecialRepairFlag=1 and GoodsLevelTypeID=4 and WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- if (drRepairSubsidy_RSuperioNum.Length > 0)
- {
- RepairSubsidy_RSuperioNum = drRepairSubsidy_RSuperioNum.Length;
- // 尽管有干补,但是有可能在损坯补贴给了,此处得查询一下干补补贴表,如果存在就不给此补贴
- foreach (DataRow mm in drRepairSubsidy_RSuperioNum)
- {
- sqlString = "select 1 from TP_PAD_DamageSubsidy where Barcode=:Barcode and UserID=:UserID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",mm["barcode"].ToString()),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- DataSet dsTemp = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- RepairSubsidy_RSuperioNum = RepairSubsidy_RSuperioNum - 1;
- }
- }
- }
- int RepairSubsidy_RQualifiedNum = 0;//干补副品数
- // 干补正品数
- DataRow[] drRepairSubsidy_RQualifiedNum = dsFinishedProduct.Tables[0].Select("SpecialRepairFlag=1 and GoodsLevelTypeID=5 and WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- if (drRepairSubsidy_RQualifiedNum.Length > 0)
- {
- RepairSubsidy_RQualifiedNum = drRepairSubsidy_RQualifiedNum.Length;
- // 尽管有干补,但是有可能在损坯补贴给了,此处得查询一下干补补贴表,如果存在就不给此补贴
- foreach (DataRow mm in drRepairSubsidy_RQualifiedNum)
- {
- sqlString = "select 1 from TP_PAD_DamageSubsidy where Barcode=:Barcode and UserID=:UserID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":Barcode",mm["barcode"].ToString()),
- new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[j]["UserID"].ToString()),
- };
- DataSet dsTemp = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsTemp.Tables[0].Rows.Count > 0)
- {
- RepairSubsidy_RQualifiedNum = RepairSubsidy_RQualifiedNum - 1;
- }
- }
- }
- // 查出此分类干补正负品补贴
- // 求出损坯对应系数
- DataRow[] drRepairSubsidy = dsWages.Tables[0].Select("WagesTypeID=" + dtWagesType.Rows[ii]["WagesTypeID"]);
- decimal RSuperiorCoefficient = 0;//干补正品系数
- decimal RQualifiedCoefficient = 0;//干补副品系数
- decimal RepairSubsidyRate = 0;//干补补贴系数
- decimal RepairStandardWages = 0;//标准工价
- decimal RepairTotalCount = 0; //
- decimal RepairSubsidy = 0;
- decimal temp_Repair = 0;
- if (drRepairSubsidy.Length > 0)
- {
- RSuperiorCoefficient = Convert.ToDecimal(drRepairSubsidy[0]["RSuperiorCoefficient"]);
- RQualifiedCoefficient = Convert.ToDecimal(drRepairSubsidy[0]["RQualifiedCoefficient"]);
- RepairSubsidyRate = Convert.ToDecimal(drRepairSubsidy[0]["RepairSubsidyRate"]);
- RepairStandardWages = Convert.ToDecimal(drRepairSubsidy[0]["RepairStandardWages"]);
- RepairTotalCount = (RepairSubsidy_RQualifiedNum * RSuperiorCoefficient - RepairSubsidy_RQualifiedNum * RQualifiedCoefficient) * RepairStandardWages * RepairSubsidyRate;
- totalcount_RepairSubsidy += RepairTotalCount;
- }
- #endregion
- #region 插入干补补贴
- sqlString = "select 1 from TP_PAR_RepairSubsidy where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- };
- // 读取计件工资策略
- int PieceTacticsID_Insert3 = 0;
- sqlString = "select PieceTacticsID from TP_PAT_Piecework where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss3 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss3 != null && dss3.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert3 = Convert.ToInt32(dss3.Tables[0].Rows[0]["PieceTacticsID"]);
- }
- //-------------------------------------
- DataSet dsExistRepairSubsidy = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsExistRepairSubsidy != null && dsExistRepairSubsidy.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_RepairSubsidy
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- RSuperioNum,
- RSuperiorCoefficient,
- RQualifiedNum,
- RQualifiedCoefficient,
- StandardWages,
- RepairSubsidyRate,
- RepairSubsidy,
- Amount,
- PieceTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :RSuperioNum,
- :RSuperiorCoefficient,
- :RQualifiedNum,
- :RQualifiedCoefficient,
- :StandardWages,
- :RepairSubsidyRate,
- :RepairSubsidy,
- :Amount,
- :PieceTacticsID
- )";
- }
- else
- {
- sqlString = @"update TP_PAR_RepairSubsidy
- set
- YYYYMM=:YYYYMM,
- StaffID=:StaffID,
- PayPlanID=:PayPlanID,
- WagesTypeID=:WagesTypeID,
- RSuperioNum=RSuperioNum+:RSuperioNum,
- RSuperiorCoefficient=RSuperiorCoefficient+:RSuperiorCoefficient,
- RQualifiedNum=RQualifiedNum+:RQualifiedNum,
- RQualifiedCoefficient=RQualifiedCoefficient+:RQualifiedCoefficient,
- StandardWages=StandardWages+:StandardWages,
- RepairSubsidyRate=RepairSubsidyRate+:RepairSubsidyRate,
- RepairSubsidy=RepairSubsidy+:RepairSubsidy,
- Amount=Amount+:Amount,
- PieceTacticsID=:PieceTacticsID
- where YYYYMM=:YYYYMM and StaffID=:StaffID and PayPlanID=:PayPlanID and WagesTypeID=:WagesTypeID
- ";
- }
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dtWagesType.Rows[ii]["WagesTypeID"]),
- new OracleParameter(":RSuperioNum",RepairSubsidy_RSuperioNum),
- new OracleParameter(":RSuperiorCoefficient",RSuperiorCoefficient),
- new OracleParameter(":RQualifiedNum",RepairSubsidy_RQualifiedNum),
- new OracleParameter(":RQualifiedCoefficient",RQualifiedCoefficient),
- new OracleParameter(":StandardWages",RepairStandardWages),
- new OracleParameter(":RepairSubsidyRate",RepairSubsidyRate),
- new OracleParameter(":RepairSubsidy",RepairSubsidy),
- new OracleParameter(":Amount",temp_Repair),
- new OracleParameter(":PieceTacticsID",PieceTacticsID_Insert3),
- };
- intResult = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- }
- }
- #endregion
- decimal? totalcount_QualityASS = 0;// 品质工资
- #region 品质考核策略
- decimal min_TotalCount = 0;
- for (int h = 0; h < dsQualityASS.Tables[0].Rows.Count; h++)
- {
- min_TotalCount = 0;
- // 求出缺陷数
- sqlString = @"select TP_PAM_GoodsWagesType.WagesTypeID,TMP_PAM_Defect.goodsid,TMP_PAM_Defect.DefectFine from TMP_PAM_Defect
- inner join TP_PAM_GoodsWagesType
- on TMP_PAM_Defect.goodsID=TP_PAM_GoodsWagesType.goodsID
- where TMP_PAM_Defect.DefectUserID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] + " and TMP_PAM_Defect.DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"];
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString);//查询出有多少分类,进行计算
- DataTable dt2 = ds.Tables[0].DefaultView.ToTable(true, "WagesTypeID");//有多少行,就有多少分类
- for (int p = 0; p < dt2.Rows.Count; p++)
- {
- decimal temp_QualityReward = 0;
- int drCount_Total = 0;
- // modify
- string barcodes_Procedure = "";
- drCount_Total = 0;
- for (int p1 = 0; p1 < dsPieceProcedure_2.Tables[0].Rows.Count; p1++)
- {
- DataRow[] drQualityBaseProcedure = dsTMPProductionData.Tables[0]
- .Select(string.Format("ProcedureID={0} and WagesTypeID={1}", dsPieceProcedure_2.Tables[0].Rows[p1]["ProcedureID"], dt2.Rows[p]["WagesTypeID"]));
- if (drQualityBaseProcedure.Length > 0)
- {
- foreach (DataRow r4 in drQualityBaseProcedure)
- {
- if (!barcodes_Procedure.Contains(r4["barcode"].ToString()))
- {
- drCount_Total += 1; // 质量工序数量
- }
- barcodes_Procedure = barcodes_Procedure + r4["barcode"].ToString() + ",";
- }
- }
- }
- //// modify en
- //for (int yy = 0; yy < dsQualityProcedure.Tables[0].Rows.Count; yy++)
- //{
- // DataRow[] drCount = dsTMPProductionData.Tables[0].Select("ProcedureID=" + dsQualityProcedure.Tables[0].Rows[yy]["ProcedureID"] + " and userID=" + dsJobsPayPlan.Tables[0].Rows[j]["userID"] + " and WagesTypeID=" + dt2.Rows[p]["WagesTypeID"]);
- // drCount_Total += drCount.Length;
- //}
- // 读取质量基数工序
- // 缺陷数量
- DataRow[] drDefect = ds.Tables[0].Select("DefectFine=" + dsQualityASS.Tables[0].Rows[h]["DefectFine"] + " and WagesTypeID=" + dt2.Rows[p]["WagesTypeID"]);
- // temp 为品质率,真正的价格在区间取
- decimal temp = 0;
- if (drCount_Total != 0)
- {
- temp = Convert.ToDecimal(dsQualityASS.Tables[0].Rows[h]["DefectFine"]) * drDefect.Length / drCount_Total;
- }
- // 查出对应分类品质奖励
- sqlString = "select * from TP_PAT_QualityReward where WagesTypeID=" + dt2.Rows[p]["WagesTypeID"] + " and QualityRate>=" + temp + " order by QualityRate";
- DataSet dsQualityReward_Temp = oracleTrConn.GetSqlResultToDs(sqlString);
- decimal QualityRate = 0;
- if (dsQualityReward_Temp != null && dsQualityReward_Temp.Tables[0].Rows.Count > 0)
- {
- //表示有对应的品质价格,结果集如有多个,取第一个对应的金额即可
- min_TotalCount = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityReward"]);
- temp_QualityReward = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityReward"]);//品质奖励金额
- QualityRate = Convert.ToDecimal(dsQualityReward_Temp.Tables[0].Rows[0]["QualityRate"]);
- }
- // 读取品质考核策略
- int PieceTacticsID_Insert3 = 0;
- sqlString = "select QualityASSTacticsID from TP_PAT_QualityASS where PayPlanID=:PayPlanID";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- };
- DataSet dss3 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dss3 != null && dss3.Tables[0].Rows.Count > 0)
- {
- PieceTacticsID_Insert3 = Convert.ToInt32(dss3.Tables[0].Rows[0]["QualityASSTacticsID"]);
- }
- #region 插入品质考核
- sqlString = @"insert into TP_PAR_QualityASS
- (
- YYYYMM,
- StaffID,
- PayPlanID,
- WagesTypeID,
- DefectFine,
- DefectNum,
- QualityBaseNum,
- QualityRate,
- Amount,
- QualityASSTacticsID
- ) values
- (
- :YYYYMM,
- :StaffID,
- :PayPlanID,
- :WagesTypeID,
- :DefectFine,
- :DefectNum,
- :QualityBaseNum,
- :QualityRate,
- :Amount,
- :QualityASSTacticsID
- )";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[j]["StaffID"]),
- new OracleParameter(":PayPlanID",dsPayPlan.Tables[0].Rows[i]["PayPlanID"]),
- new OracleParameter(":WagesTypeID",dt2.Rows[p]["WagesTypeID"]),
- new OracleParameter(":DefectFine",dsQualityASS.Tables[0].Rows[h]["DefectFine"]),
- new OracleParameter(":DefectNum",drDefect.Length),
- new OracleParameter(":QualityBaseNum",drCount_Total),
- new OracleParameter(":QualityRate",QualityRate),
- new OracleParameter(":Amount",min_TotalCount),
- new OracleParameter(":QualityASSTacticsID",PieceTacticsID_Insert3),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- }
- totalcount_QualityASS += min_TotalCount;
- }
- #endregion
- decimal? totalcount_AdminEXA = 0;// 行政工资
- #region 行政考核
- sqlString = "select Amount from TP_PAD_AdminEXA where SettlementFlag=0 and StaffID=:StaffID";
- parmeters1 = new OracleParameter[]
- {
- //new OracleParameter(":UserID",dsJobsPayPlan.Tables[0].Rows[i]["UserID"]),
- new OracleParameter(":StaffID",dsJobsPayPlan.Tables[0].Rows[i]["StaffID"]),
- };
- DataSet dsAdminEXA = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsAdminEXA != null && dsAdminEXA.Tables[0].Rows.Count > 0)
- {
- for (int y = 0; y < dsAdminEXA.Tables[0].Rows.Count; y++)
- {
- totalcount_AdminEXA += Convert.ToDecimal(dsAdminEXA.Tables[0].Rows[y]["Amount"]);
- }
- }
- #endregion
- #region 插入工资单
- // 防止一个员工在多个工号下面
- sqlString = "select 1 from TP_PAR_Payroll where YYYYMM=:YYYYMM and StaffID=:StaffID ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2,(Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),ParameterDirection.Input),
- new OracleParameter(":StaffID",OracleDbType.Int32,dsJobsPayPlan.Tables[0].Rows[j]["StaffID"],ParameterDirection.Input),
-
-
- };
- DataSet ds4 = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds4 != null && ds4.Tables[0].Rows.Count == 0)
- {
- sqlString = @"insert into TP_PAR_Payroll
- (
- YYYYMM,
- StaffID,
-
- Piecework,
- DamageSubsidy,
- RepairSubsidy,
- QualityEXA,
- AdminEXA,
- ADAmount,
- TotalAmount,
- AuditStatus,
- AccountID,
- CreateUserID,
- UpdateUserID
- ) values
- (
- :YYYYMM,
- :StaffID,
-
- :Piecework,
- :DamageSubsidy,
- :RepairSubsidy,
- :QualityEXA,
- :AdminEXA,
- :ADAmount,
- :TotalAmount,
- :AuditStatus,
- :AccountID,
- :CreateUserID,
- :UpdateUserID
- )";
- decimal? a = (totalcount_Piecegiework + totalcount_Scrap + totalcount_RepairSubsidy + totalcount_QualityASS + totalcount_AdminEXA);
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2,(Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),ParameterDirection.Input),
- new OracleParameter(":StaffID",OracleDbType.Int32,dsJobsPayPlan.Tables[0].Rows[j]["StaffID"],ParameterDirection.Input),
- //new OracleParameter(":PayPlanID",OracleDbType.Int32,dsPayPlan.Tables[0].Rows[i]["PayPlanID"],ParameterDirection.Input),
- new OracleParameter(":Piecework",OracleDbType.Decimal,totalcount_Piecegiework,ParameterDirection.Input),
- new OracleParameter(":DamageSubsidy",OracleDbType.Decimal,totalcount_Scrap,ParameterDirection.Input),
- new OracleParameter(":RepairSubsidy",OracleDbType.Decimal,totalcount_RepairSubsidy,ParameterDirection.Input),
- new OracleParameter(":QualityEXA",OracleDbType.Decimal,totalcount_QualityASS,ParameterDirection.Input),
- new OracleParameter(":AdminEXA",OracleDbType.Decimal,totalcount_AdminEXA,ParameterDirection.Input),
- new OracleParameter(":ADAmount",OracleDbType.Decimal,0,ParameterDirection.Input),
-
- new OracleParameter(":TotalAmount",OracleDbType.Decimal,a,ParameterDirection.Input),
- new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
- new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
- new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
- new OracleParameter(":AuditStatus",OracleDbType.Int32,0,ParameterDirection.Input),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- else
- {
- sqlString = @"update TP_PAR_Payroll
- set Piecework=Piecework+:Piecework,
- DamageSubsidy=DamageSubsidy+:DamageSubsidy,
- RepairSubsidy=RepairSubsidy+:RepairSubsidy,
- QualityEXA=QualityEXA+:QualityEXA,
- AdminEXA=AdminEXA+:AdminEXA,
- ADAmount=AdminEXA+:ADAmount,
- TotalAmount=TotalAmount+:TotalAmount
- where YYYYMM=:YYYYMM and StaffID=:StaffID
-
- ";
- decimal? a = (totalcount_Piecegiework + totalcount_Scrap + totalcount_RepairSubsidy + totalcount_QualityASS + totalcount_AdminEXA);
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",OracleDbType.Varchar2,(Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),ParameterDirection.Input),
- new OracleParameter(":StaffID",OracleDbType.Int32,dsJobsPayPlan.Tables[0].Rows[j]["StaffID"],ParameterDirection.Input),
- //new OracleParameter(":PayPlanID",OracleDbType.Int32,dsPayPlan.Tables[0].Rows[i]["PayPlanID"],ParameterDirection.Input),
- new OracleParameter(":Piecework",OracleDbType.Decimal,totalcount_Piecegiework,ParameterDirection.Input),
- new OracleParameter(":DamageSubsidy",OracleDbType.Decimal,totalcount_Scrap,ParameterDirection.Input),
- new OracleParameter(":RepairSubsidy",OracleDbType.Decimal,totalcount_RepairSubsidy,ParameterDirection.Input),
- new OracleParameter(":QualityEXA",OracleDbType.Decimal,totalcount_QualityASS,ParameterDirection.Input),
- new OracleParameter(":AdminEXA",OracleDbType.Decimal,totalcount_AdminEXA,ParameterDirection.Input),
- new OracleParameter(":ADAmount",OracleDbType.Decimal,0,ParameterDirection.Input),
-
- new OracleParameter(":TotalAmount",OracleDbType.Decimal,a,ParameterDirection.Input),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- #endregion
- }
- if (intResult > 0)
- {
- sqlString = @"insert into TP_PAR_PayrollAccount
- (
- YYYYMM,
- BeginDate,
- EndDate,
- AccountID,
- CreateUserID
- ) values
- (
- :YYYYMM,
- :BeginDate,
- :EndDate,
- :AccountID,
- :CreateUserID
- )";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",Year.ToString()+(Month.ToString().Length<2?"0"+Month.ToString():Month.ToString())),
- new OracleParameter(":BeginDate",dateStartTime),
- new OracleParameter(":EndDate",dateEndTime),
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- new OracleParameter(":CreateUserID",sUserInfo.UserID),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- // 更新系统结算月
- sqlString = "update TP_MST_SystemDate set datevalue=sysdate where systemdatetype=2";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString);
- sqlString = "update TP_MST_SystemDate set datevalue=:datevalue where systemdatetype=5";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":datevalue",dateEndTime),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- }
- else
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- finally
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- }
- }
- /// <summary>
- /// 保存产品工价分类
- /// </summary>
- /// <param name="IsEdit">false 新建 true 编辑</param>
- /// <param name="dtJobsPayPlan">数据源</param>
- /// <param name="sUserInfo"></param>
- /// <returns></returns>
- public static int ChangePayPiecework(string YYYYMM, SUserInfo sUserInfo)
- {
- IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
- try
- {
- int intResult = 0;
- oracleTrConn.Connect();
- OracleParameter[] parmeters1 = null;
- string sqlString = "";
- sqlString = "delete from TP_PAR_PayrollAccount where YYYYMM=:YYYYMM ";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":YYYYMM",YYYYMM),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "delete from TP_PAR_Payroll where YYYYMM=:YYYYMM ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "delete from TP_PAR_Piecework where YYYYMM=:YYYYMM ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "delete from TP_PAR_DamageSubsidy where YYYYMM=:YYYYMM ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "delete from TP_PAR_RepairSubsidy where YYYYMM=:YYYYMM ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "delete from TP_PAR_QualityASS where YYYYMM=:YYYYMM ";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "select * from TP_PAR_PayrollAccount where AccountID=:AccountID order by CreateTime desc";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":AccountID",sUserInfo.AccountID),
- };
- DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (ds != null && ds.Tables[0].Rows.Count > 0)
- {
- //反结算,更新生产数据与行政考核数据标识
- int Year = Convert.ToInt32(YYYYMM.Substring(0, 4));
- int Month = Convert.ToInt32(YYYYMM.Substring(5));
- #region 查询系统参数设定值,用来结算工资范围取值
- DateTime? dateStartTime = null;
- DateTime? dateEndTime = null;
- sqlString = "select SettingValue from TP_MST_SystemSetting where accountid=:accountid and SettingCode='S_CMN_0003'";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":accountid",sUserInfo.AccountID),
- };
- DataSet dsSystemSettings = oracleTrConn.GetSqlResultToDs(sqlString, parmeters1);
- if (dsSystemSettings != null && dsSystemSettings.Tables[0].Rows.Count > 0)
- {
- // 算出此月一共多少天,防止设置的值,大于当月的天数
- int daysCount = DateTime.DaysInMonth(Year, Month);
- if (dsSystemSettings.Tables[0].Rows[0]["SettingValue"].ToString() == "月末")
- {
- dateStartTime = new DateTime(Year, Month, 1);
- dateEndTime = new DateTime(Year, Month, daysCount, 23, 59, 59);
- }
- else
- {
- // 选择的值,大于当月的天数
- if (Convert.ToInt32(dsSystemSettings.Tables[0].Rows[0]["SettingValue"]) > daysCount)
- {
- dateEndTime = new DateTime(Year, Month, daysCount, 23, 59, 59);
- dateStartTime = dateEndTime.Value.AddMonths(-1).AddDays(1);
- }
- else
- {
- dateEndTime = new DateTime(Year, Month, Convert.ToInt32(dsSystemSettings.Tables[0].Rows[0]["SettingValue"]), 23, 59, 59);
- dateStartTime = dateEndTime.Value.AddMonths(-1).AddDays(1);
- }
- }
- }
- #endregion
- #region 根据筛选日期更新生产数据结算标识
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":dateStartTime",OracleDbType.Date,dateStartTime,ParameterDirection.Input),
- new OracleParameter(":dateEndTime",OracleDbType.Date,dateEndTime,ParameterDirection.Input),
- new OracleParameter(":accountid",sUserInfo.AccountID),
- };
- // 更新生产数据结算标识
- sqlString = @"update TP_PM_ProductionData set SettlementFlag=0 where SettlementFlag=1 and CreateTime >=:dateStartTime and CreateTime<=:dateEndTime and accountid=:accountid and valueflag=1";
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- #endregion
- //
- sqlString = "update TP_PAD_AdminEXA set SettlementFlag=0 where SettlementFlag=1 and AuditStatus=1 and AuditlDate >=:dateStartTime and AuditlDate<=:dateEndTime and accountid=:accountid";
- parmeters1 = new OracleParameter[]
- {
-
- new OracleParameter(":dateStartTime",dateStartTime),
- new OracleParameter(":dateEndTime",dateEndTime),
- new OracleParameter(":accountid",sUserInfo.AccountID),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "update TP_MST_SystemDate set datevalue=:datevalue where systemdatetype=2";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":datevalue",ds.Tables[0].Rows[0]["CreateTime"]),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "update TP_MST_SystemDate set datevalue=:datevalue where systemdatetype=5";
- string yyyy_mm = ds.Tables[0].Rows[0]["YYYYMM"].ToString();
- int year = Convert.ToInt32(yyyy_mm.Substring(0, 4));
- int month = Convert.ToInt32(yyyy_mm.Substring(4));
- DateTime updatetime = new DateTime(year, month, 1, 23, 59, 59);
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":datevalue",updatetime),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- else
- {
- sqlString = "update TP_MST_SystemDate set datevalue=:datevalue where systemdatetype=2";
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":datevalue",new DateTime(2000,1,1)),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- sqlString = "update TP_MST_SystemDate set datevalue=:datevalue where systemdatetype=5";
- DateTime updatetime = new DateTime(2000, 1, 1, 23, 59, 59);
- parmeters1 = new OracleParameter[]
- {
- new OracleParameter(":datevalue",updatetime),
- };
- intResult += oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
- }
- if (intResult == 0)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- else
- {
- oracleTrConn.Commit();
- oracleTrConn.Disconnect();
- }
- return intResult;
- }
- catch (Exception ex)
- {
- if (oracleTrConn.ConnState == ConnectionState.Open)
- {
- oracleTrConn.Rollback();
- oracleTrConn.Disconnect();
- }
- throw ex;
- }
- }
- }
- }
|